tag:blogger.com,1999:blog-71252947304226227182024-02-20T10:12:02.190+00:00Boxes Of TatRandom thoughts on information management, information services and anything else that takes my fancyHamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.comBlogger49125tag:blogger.com,1999:blog-7125294730422622718.post-78960216333305109842022-06-06T14:47:00.002+01:002022-06-06T14:47:44.078+01:00CentOS 4 on PCem Pentium 75 - System Information<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy4GKRCb8TK-d5thRYC_SW4rHuER06h7lOmafai0ATDLukCjIb7UVDl-uLbtg_U3ZZeumbRvNnx51TZhfodX8U6L51V_HH5ZShj9pw0EOBiKzr8e_kUYLdEcYp9uTeJB5LMq2-zpdOUx4v1rIl5E7GXDYcD-ygWylamep6xEZC7suP0BZ33EMq9pHZ/s1026/PCem-CentOS4-desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="CentOS 4.0 GNOME desktop on a PCem Pentium 133" border="0" data-original-height="815" data-original-width="1026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy4GKRCb8TK-d5thRYC_SW4rHuER06h7lOmafai0ATDLukCjIb7UVDl-uLbtg_U3ZZeumbRvNnx51TZhfodX8U6L51V_HH5ZShj9pw0EOBiKzr8e_kUYLdEcYp9uTeJB5LMq2-zpdOUx4v1rIl5E7GXDYcD-ygWylamep6xEZC7suP0BZ33EMq9pHZ/s320/PCem-CentOS4-desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">CentOS</h3>
<p>CentOS was a freely available version of Red Hat Enterprise Linux (RHEL), which followed the upstream RHEL updates and removed any non-free IP from the packages.</p>
<p>Red Hat developed a commercial Linux in the form of Red Hat Linux (also known as Red Hat Commercial Linux), which developed a stable long term support distribution in the form of Red Hat Enterprise Linux (RHEL), which includes components not covered by free licenses. To provide a community Linux which wasn't constrained by enterprise concerns, the Red Hat Linux line was replaced with Fedora Linux. Fedora Linux provides a Red Hat style distribution nearer the bleeding edge than RHEL and isn't encumbered by non-free licenses. This change meant that many users were faced with a decision... to switch to Fedora and cope with the more dynamic nature of the project, or pay for RHEL to get long term stability.</p>
<p>Since RHEL was based on opensource, a number of projects sprung up that took the free parts of RHEL, removed any branding or other encumbered property, and repackaged them into new distributions (see <a href="https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux_derivatives">Red Hat Enterprise Linux derivatives - Wikipedia</a>). CentOS was one of these projects and provided an RHEL compatible distribution that lagged a little bit behind RHEL release and updates, and was freely available. While CentOS has since been acquired by Red Hat, and its role (as <a href="https://www.centos.org/centos-stream/">CentOS Stream</a>) has changed to being upstream of RHEL, we're going to be looking at a version from not long after Red Hat Linux was discontinued.</p>
<h4 style="text-align: left;">CentOS 4</h4>
<p>RHEL 4 was released on 15-Feb-2005 and was based on Fedora Core 3 (8-Nov-2004). With the corresponding CentOS 4 being released a little later on 9-Mar-2005. Based on the Linux 2.6 kernel (see <a href="https://www.linuxjournal.com/article/6530">Introducing the 2.6 Kernel | Linux Journal</a>), this was a jump from previous RHEL and CentOS releases which had used the Linux 2.4 kernel.</p>
<p>Older CentOS releases are available for download from: <a href="https://wiki.centos.org/Download">https://wiki.centos.org/Download</a>.</p>
<span><a name='more'></a></span>
<h3 style="test-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC system, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our reference physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>).</p>
<p>So our target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA</td></tr>
</tbody>
</table>
<p>In principle installing CentOS 4 on our sample configuration, should be similar to the process we've used for previous Linux releases:</p>
<ul>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/redhat-linux-73-valhalla-on-pcem.html">RedHat Linux 7.3 (Valhalla) on PCem Pentium 75</a></li>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/mandrake-linux-72-odyssey-on-pcem.html">Mandrake Linux 7.2 (Odyssey) on PCem Pentium 75</a></li>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/redhat-linux-62-zoot-on-pcem-pentium-75.html">RedHat Linux 6.2 (Zoot) on PCem Pentium 75</a></li>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/redhat-linux-52-on-pcem-pentium-75.html">RedHat Linux 5.2 (Apollo) on PCem Pentium 75</a></li>
<li><a href="https://boxes-of-tat.blogspot.com/2022/04/slackware-linux-30-on-pentium-75-with.html">Slackware Linux 3.0 on a PCem Pentium 75</a></li>
</ul>
<p>But there are a couple of problems...</p>
<ol>
<li>The BIOS for the Intel Advanced/ZP (Zappa) mainboard has limited support for booting from CDs. The BIOS implementation of the El Torito extension (<a href="https://en.wikipedia.org/wiki/ISO_9660#El_Torito">Wikipedia</a>) is limited to floppy emulation, but by CentOS 4 the boot disk image was larger than the 2.88MB available in the largest supported floppy size. So our machine cannot boot directly from the CD, and the CentOS distribution doesn't provide means to create boot floppies.</li>
<li>For the CentOS 4.8 release PCem doesn't like the install kernel. Playing around with other socket 5 and socket 7 mainboards finds that, while they can boot from the CD, a kernel panic occurs when the kernel loads. Trying with the original CentOS 4.0 release ISOs works. So it appears that support for older platforms got broken somewhere in the CentOS updates between 4.0 (2005) and 4.8 (2009), support changes are also evidenced by a specific 'i586' installation kernel in 4.8 (this is probably intended to target the VIA C3 'Samuel 2' and VIA C3 'Ezra' processors which are i586 class with additional features).</li>
</ol>
<p>So to install we are going to have to use an alternative PCem machine and the CentOS 4.0 release CDs.</p>
<p>Looking at the available PCem systems (see <a href="https://github.com/sarah-walker-pcem/pcem/">sarah-walker-pcem/pcem: PCem</a>), it looks like the ASUS P/I-P55T2P4 socket 7 board is going to be the best choice (support for 512MB RAM means more disk cache to speed up installation). For installation I used a faster Pentium 133 processor rather than the Pentium 75, and the Realtek RTL8092AS based NE2000 PCI Ethernet card.</p>
<p>A workstation CentOS 4 installation is quite a bit bigger than the old Red Hat Linux releases, so the hard drive is 8,192MB rather than 2,048MB.</p>
<p>With the installation in place, I downgraded the emulated hardware to better match our reference system: swapping the mainboard back to the Intel Advanced/ZP, the processor back to the Intel Pentium 75, and reduced the memory to 72 MiB. To avoid dealing in IRQs and I/O addresses I kept the PCI Ethernet card, which would be more in keeping with systems running CentOS anyway.</p>
<h3 style="text-align: left;"><a name="sysinfo_centos4">System Information - CentOS 4.0</a></h3>
<p>So what does CentOS 4.0 for x86 say about this system...</p>
<h4 style="text-align: left;">uname & lsb_release</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-centos4 2.6.9-5.0.3.EL #1 Sat Feb 19 15:32:50 CST 2005 i586 i586 i386 GNU/Linux</pre>
<p>A "Linux" kernel, on a node named "p-centos4", kernel release "2.6.9-5.0.3.EL", version "#1 Sat Feb 19 15:32:50 CST 2005", on a "i586" machine, processor "i586", "i386" platform, for operating system "GNU/Linux"</p>
<p>Distribution information from Linux Standard Base (LSB):</p>
<pre class="capturedOutput">$ lsb_release -a
LSB Version: 1.3
Distributor ID: CentOS
Description: CentOS release 4.0 (Final)
Release: 4.0
Codename: Final</pre>
<p>And from the distribution release files:</p>
<pre class="capturedOutput">$ cat /etc/redhat-release
CentOS release 4.0 (Final)</pre>
<p>So CentOS 4.0 (Final) as expected.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200
stepping : 4
cpu MHz : 75.121
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 146.94</pre>
<p>The CPUID information is consistent with this being a second generation Intel Pentium processor (P54C), which is expected. The BogoMips result is consistent with the approximately double clock speed rating expected with this kernel and processor (75.0 * 1.99 = 149.25). See <a href="https://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean">linux - What do the flags in /proc/cpuinfo mean? - Unix & Linux Stack Exchange</a> for details of the CPU flags.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 69484 kB
MemFree: 12668 kB
Buffers: 7108 kB
Cached: 29024 kB
SwapCached: 0 kB
Active: 27316 kB
Inactive: 16784 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 69484 kB
LowFree: 12668 kB
SwapTotal: 524280 kB
SwapFree: 524280 kB
Dirty: 40 kB
Writeback: 0 kB
Mapped: 14212 kB
Slab: 10252 kB
Committed_AS: 48332 kB
PageTables: 880 kB
VmallocTotal: 950264 kB
VmallocUsed: 1260 kB
VmallocChunk: 948476 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB</pre>
<p>So 72 MiB RAM, with about 524 MB of swap.</p>
<h4>lspci, /proc/bus/pci/devices & /proc/pci</h4>
<p>PCI device report:</p>
<pre class="capturedOutput">$ /sbin/lspci
00:00.0 Host bridge: Intel Corp. 430FX - 82437FX TSC [Triton I]
00:07.0 ISA bridge: Intel Corp. 82371FB PIIX ISA [Triton I]
00:07.1 IDE interface: Intel Corp. 82371FB PIIX IDE [Triton I]
00:0d.0 VGA compatible controller: S3 Inc. 86c764/765 [Trio32/64/64V+]
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)</pre>
<p>The machine readable <tt>/proc/bus/pci/devices</tt>:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0000 8086122d 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 PIIX_IDE
0039 80861230 0 00000000 00000000 00000000 00000000 0000ffa1 00000000 00000000 00000000 00000000 00000000 00000000 00000010 00000000 00000000 PIIX_IDE
0068 53338811 b ff000000 00000000 00000000 00000000 00000000 00000000 00000000 00800000 00000000 00000000 00000000 00000000 00000000 00010000
0070 10ec8029 a 0000ff81 00000000 00000000 00000000 00000000 00000000 00000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 ne2k-pci</pre>
<p>And the obsolete <tt>/proc/pci</tt>, which was how to get PCI in older kernels:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Class 0600: PCI device 8086:122d (rev 0).
Master Capable. Latency=66.
Bus 0, device 7, function 0:
Class 0601: PCI device 8086:122e (rev 0).
Bus 0, device 7, function 1:
Class 0101: PCI device 8086:1230 (rev 0).
Master Capable. Latency=66.
I/O at 0xffa0 [0xffaf].
Bus 0, device 13, function 0:
Class 0300: PCI device 5333:8811 (rev 0).
IRQ 11.
Non-prefetchable 32 bit memory at 0xff000000 [0xff7fffff].
Bus 0, device 14, function 0:
Class 0200: PCI device 10ec:8029 (rev 0).
IRQ 10.
I/O at 0xff80 [0xff9f].</pre>
<p>In each case we get details of the same devices, but presented differently. Showing the PCI network card, the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Linux version 2.6.9-5.0.3.EL (buildcentos@build4-1386) (gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)) #1 Sat Feb 19 15:32:50 CST 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 0000000000100000 - 0000000004800000 (usable)
BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
72MB LOWMEM available.
zapping low mappings.
On node 0 totalpages: 18432
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 14336 pages, LIFO batch:3
HighMem zone: 0 pages, LIFO batch:1
DMI not present.
ACPI: Unable to locate RSDP
Built 1 zonelists
Kernel command line: ro root=/dev/VolGroup00/LogVol00 rhgb quiet
Initializing CPU#0
CPU 0 irqstacks, hard=c03d2000 soft=c03d1000
PID hash table entries: 1024 (order: 10, 16384 bytes)
Detected 75.121 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 68292k/73728k available (2050k kernel code, 4952k reserved, 656k data, 140k init, 0k highmem)
Calibrating delay loop... 146.94 BogoMIPS (lpj=73472)
Security Scaffold v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
There is already a security framework initialized, register_security failed.
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: 0000013b 00000000 00000000 00000000
CPU: After vendor identify, caps: 0000013b 00000000 00000000 00000000
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After all inits, caps: 0000013b 00000000 00000000 00000000
CPU: Intel Pentium 75 - 200 stepping 04
Checking 'hlt' instruction... OK.
checking if image is initramfs... it is
Freeing initrd memory: 952k freed
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfca21, last bus=0
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20040816
ACPI: Interpreter disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
apm: BIOS version 1.1 Flags 0x03 (Driver version 1.16ac)
audit: initializing netlink socket (disabled)
audit(1653852375.509:0): initialized
Total HugeTLB memory allocated, 0
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
SELinux: Registering netfilter hooks
Initializing Cryptographic API
ksign: Installing public key data
Loading keyring
- Added public key 63D7AF8AA6573983
- User ID: CentOS-4 (Kernel Module GPG key)
Limiting direct PCI/PCI transfers.
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
vesafb: probe of vesafb0 failed with error -6
Real Time Clock Driver v1.12
Linux agpgart interface v0.100 (c) Dave Jones
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
divert: not allocating divert_blk for non-ethernet device lo
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIXa: IDE controller at PCI slot 0000:00:07.0
PIIXa: chipset revision 0
PIIXa: bad irq (0): will probe later
PIIXa: neither IDE port enabled (BIOS)
PIIXb: IDE controller at PCI slot 0000:00:07.1
PIIXb: chipset revision 0
PIIXb: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: PCemHD, ATA DISK drive
Using cfq io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: PCemCD, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
hda: max request size: 128KiB
hda: 16777152 sectors (8589 MB) w/256KiB Cache, CHS=16644/16/63
hda: cache flushes not supported
hda: hda1 hda2
hdc: ATAPI 24X CD-ROM drive, 0kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
ide-floppy driver 0.99.newide
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 128 buckets, 4Kbytes
TCP: Hash tables configured (established 8192 bind 2340)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
Freeing unused kernel memory: 140k freed
device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@uk.sistina.com
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
SELinux: Disabled at runtime.
SELinux: Unregistering netfilter hooks
inserting floppy driver for 2.6.9-5.0.3.EL
Floppy drive(s): fd0 is 2.88M
FDC 0 is a post-1991 82077
ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker
http://www.scyld.com/network/ne2k-pci.html
divert: allocating divert_blk for eth0
eth0: RealTek RTL-8029 found at 0xff80, IRQ 10, AC:DE:48:88:BB:AA.
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
EXT3 FS on dm-0, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 524280k swap on /dev/VolGroup00/LogVol01. Priority:-1 extents:1
parport0: PC-style at 0x3bc [PCSPP]
ip_tables: (C) 2000-2002 Netfilter core team
ip_tables: (C) 2000-2002 Netfilter core team
parport0: PC-style at 0x3bc [PCSPP]
lp0: using parport0 (polling).
lp0: console ready
NET: Registered protocol family 10
Disabled Privacy Extensions on device c03660a0(lo)
IPv6 over IPv4 tunneling driver
divert: not allocating divert_blk for non-ethernet device sit0
eth0: no IPv6 routers present</pre>
<p>Here we see the results of hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="benchmarks">Benchmark</a></h3>
<p>Since we have some information from an equivalent physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>), let's see how well the emulated system matches up let's run some benchmarks...</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a> and our <a href="https://boxes-of-tat.blogspot.com/p/bogomips-results.html">BogoMips Results</a>).</p>
<p>PCem system: Linux 2.6.9, CentOS 4.0 for x86:</p>
<pre class="capturedOutput">Calibrating delay loop... 146.94 BogoMIPS (lpj=73472)</pre>
<p>Referring to the results of the physical system and the PCem emulated system:</p>
<table border="1">
<thead>
<tr><th colspan="2">Linux</th><th><a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a></th><th>PCem</th></tr>
</thead>
<tbody>
<tr><th>Distribution</th><th>Kernel</th><th>BogoMips</th><th>BogoMips</th></tr>
<tr><th>Slackware Linux 3.0</th><td>Linux 1.2.13</td><td align="right" style="white-space: nowrap;"><span style="white-space: normal;">29.80</span></td><td align="right" style="white-space: nowrap;">74.98</td></tr>
<tr><th>RedHat Linux 5.2 (Apollo)</th><td>Linux 2.0.36</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>RedHat Linux 6.2 (Zoot)</th><td>Linux 2.2.14</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>Mandrake Linux 7.2 (Odyssey)</th><td>Linux 2.2.17</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">149.50</td></tr>
<tr><th>RedHat Linux 7.3 (Valhalla)</th><td>Linux 2.4.18</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">149.50</td></tr>
</tbody>
</table>
<p>The result for our CentOS 4.0 installation, using a Linux 2.6.9 kernel, is around the expected value for the Intel Pentium 75 processor of approx. 150.0 (75.12 * 1.99 = 149.49). And is in rough agreement with the results from Mandrake Linux 7.2 and RedHat Linux 7.3, although it is a little lower than those results. The BogoMips line in the <tt>dmesg</tt> output now reports the "loops_per_jiffy" (lpj) value, which may indicate calibration against a timer rather than the system clock.</p>
<h4 style="text-align: left;"><a name="openssl">OpenSSL</a></h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Note: old versions of OpenSSL <em>are not recommended</em> for actual use. If you want to run comparisons like this, and thus need to use an old release, see the OpenSSL site for back to 0.9.6, for even older releases back to 0.9.1 see <a href="http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/">http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/</a>.</p>
<p><a name="openssl_rh73"><b>CentOS 4.0 for x86</b></a>, with packaged OpenSSL 0.9.7a</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 0.9.7a Feb 19 2003</pre>
<p>Let's seen how MD5 and RSA do:</p>
<pre class="capturedOutput">$ openssl speed md5 rsa
Doing md5 for 3s on 16 size blocks: 65690 md5's in 2.99s
Doing md5 for 3s on 64 size blocks: 55470 md5's in 2.99s
Doing md5 for 3s on 256 size blocks: 37108 md5's in 2.99s
Doing md5 for 3s on 1024 size blocks: 15940 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 2520 md5's in 2.99s
Doing 512 bit private rsa's for 10s: 227 512 bit private RSA's in 10.00s
Doing 512 bit public rsa's for 10s: 2297 512 bit public RSA's in 9.98s
Doing 1024 bit private rsa's for 10s: 39 1024 bit private RSA's in 10.07s
Doing 1024 bit public rsa's for 10s: 698 1024 bit public RSA's in 10.00s
Doing 2048 bit private rsa's for 10s: 6 2048 bit private RSA's in 10.18s
Doing 2048 bit public rsa's for 10s: 198 2048 bit public RSA's in 10.02s
Doing 4096 bit private rsa's for 10s: 1 4096 bit private RSA's in 11.80s
Doing 4096 bit public rsa's for 10s: 55 4096 bit public RSA's in 10.14s
OpenSSL 0.9.7a Feb 19 2003
built on: Tue Feb 22 18:03:53 GMT 2005
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -DOPENSSL_NO_ASM -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_EC -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -O2 -pipe -m32 -march=i586 -Wa,--noexecstack
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 351.52k 1187.32k 3177.14k 5440.85k 6904.29k
sign verify sign/s verify/s
rsa 512 bits 0.0441s 0.0043s 22.7 230.2
rsa 1024 bits 0.2582s 0.0143s 3.9 69.8
rsa 2048 bits 1.6967s 0.0506s 0.6 19.8
rsa 4096 bits 11.8000s 0.1844s 0.1 5.4</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 6,904.29k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.1</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 5.4</li>
</ul>
<p>So how does this compare to our results from the reference hardware: <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>?</p>
<p><b>OpenSSL results</b> from tilia:</p>
<table border="1">
<tbody>
<tr><th>OS</th><th>OpenSSL<br /> Version</th><th>MD5<br /> 8,192 bytes</th><th>RSA<br /> 4,096 bytes<br /> sign/s</th><th>RSA<br /> 4,096 bytes<br /> verify/s</th></tr>
<tr><td>Linux 2.0.36 <br />RedHat Linux 5.2 <br />x86</td><td>0.9.2b <br />22 Mar 1999</td><td align="right" style="white-space: nowrap;">12,391.77k</td><td align="right">0.2</td><td align="right">11.2</td></tr>
<tr><td>Linux 2.2.14 <br />RedHat Linux 6.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,454.57k</td><td align="right">0.2</td><td align="right">11.1</td></tr>
<tr><td>Linux 2.2.17 <br />Mandrake Linux 7.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,208.81k</td><td align="right">0.2</td><td align="right">10.8</td></tr>
<tr><td>Linux 2.4.18 <br />RedHat Linux 7.3 <br />x86</td><td>0.9.6b [engine] <br />9 Jul 2001</td><td align="right" style="white-space: nowrap;">6,075.73k</td><td align="right">0.1</td><td align="right">4.5</td></tr>
</tbody>
</table>
<p>Note that the OpenSSL binaries used for RedHat Linux 5.2 and 6.2 have been compiled from source and used i486 optimizations. The Mandrake Linux 7.2 supplied OpenSSL is targeted at i586 (Pentium class) processors. The RedHat Linux 7.3 OpenSSL binaries are from the distribution supplied package which was built with the assembler implementations disabled and targeting i386 systems with i686 tuned code. The CentOS 4.0 OpenSSL binaries are from the distribution supplied package which was built with the assembler implementations disabled and targeting i586 systems (<tt>-march=i586</tt>).</p>
<p>CentOS 4.0 supplied OpenSSL gives results similar to those seen with the RedHat Linux 7.3 OpenSSL, showing the effect of having the assembler implementations disabled, and the difference between the i586 and i686 optimizations.</p>
<p>For reference, a full run of all the methods provided by the system OpenSSL 0.9.7a on this PCem system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 0.9.7a Feb 19 2003
built on: Tue Feb 22 18:03:53 GMT 2005
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -DOPENSSL_NO_ASM -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_EC -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -O2 -pipe -m32 -march=i586 -Wa,--noexecstack
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 57.61k 123.91k 175.00k 194.22k 201.40k
mdc2 0.00 0.00 0.00 0.00 0.00
md4 437.40k 1560.51k 4548.67k 8677.38k 11812.86k
md5 351.64k 1186.37k 3169.26k 5453.57k 6884.01k
hmac(md5) 202.17k 729.92k 2234.62k 4634.03k 6695.59k
sha1 329.79k 944.41k 2022.40k 2837.40k 3211.26k
rmd160 284.59k 808.43k 1693.18k 2340.86k 2649.39k
rc4 2864.26k 3075.25k 3141.27k 3143.34k 3153.92k
des cbc 639.06k 664.77k 673.13k 673.45k 674.47k
des ede3 240.31k 244.10k 245.73k 245.42k 245.76k
idea cbc 0.00 0.00 0.00 0.00 0.00
rc2 cbc 592.30k 616.24k 620.37k 621.23k 624.67k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 1259.54k 1364.69k 1393.15k 1405.86k 1406.29k
cast cbc 934.22k 993.95k 1006.68k 1013.73k 1013.08k
aes-128 cbc 940.44k 976.17k 987.53k 987.48k 991.81k
aes-192 cbc 819.97k 844.86k 854.90k 853.33k 857.43k
aes-256 cbc 726.62k 745.37k 750.17k 754.81k 753.66k
sign verify sign/s verify/s
rsa 512 bits 0.0441s 0.0043s 22.7 229.9
rsa 1024 bits 0.2579s 0.0143s 3.9 69.8
rsa 2048 bits 1.6967s 0.0506s 0.6 19.8
rsa 4096 bits 11.8000s 0.1842s 0.1 5.4
sign verify sign/s verify/s
dsa 512 bits 0.0412s 0.0500s 24.3 20.0
dsa 1024 bits 0.1381s 0.1680s 7.2 6.0
dsa 2048 bits 0.4886s 0.6118s 2.0 1.6</pre>
<p>Checking against the performance of a locally compiled OpenSSL 0.9.7a using the default options, which uses the assembler code and targets i386 with i586 tuning (<tt>-mcpu=pentium</tt>), on the PCem system gives:</p>
<pre class="capturedOutput">OpenSSL 0.9.7a Feb 19 2003
built on: Sun May 29 20:53:12 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -mcpu=pentium -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 63.11k 137.65k 195.98k 218.45k 226.65k
mdc2 155.51k 175.74k 181.98k 183.64k 184.46k
md4 469.10k 1668.67k 4919.30k 9586.22k 13228.16k
md5 409.50k 1469.87k 4413.78k 8853.16k 12559.24k
hmac(md5) 232.31k 875.67k 2919.42k 7051.56k 11993.09k
sha1 384.65k 1206.76k 2901.76k 4479.32k 5339.87k
rmd160 346.78k 1043.09k 2345.39k 3412.65k 3943.08k
rc4 7219.54k 8454.81k 8861.45k 8940.89k 8959.32k
des cbc 1236.12k 1276.05k 1289.39k 1295.93k 1294.34k
des ede3 445.05k 451.80k 454.55k 454.31k 454.51k
idea cbc 550.69k 563.58k 568.25k 567.98k 567.98k
rc2 cbc 665.17k 684.18k 687.79k 690.77k 690.86k
rc5-32/12 cbc 4390.95k 4985.15k 5172.48k 5204.65k 5215.57k
blowfish cbc 2888.71k 3135.74k 3199.66k 3219.95k 3222.19k
cast cbc 2479.71k 2668.69k 2706.01k 2721.11k 2734.32k
aes-128 cbc 1113.14k 1141.00k 1144.92k 1149.35k 1145.79k
aes-192 cbc 967.50k 983.74k 991.12k 990.21k 991.23k
aes-256 cbc 851.59k 868.20k 869.97k 870.06k 873.81k
sign verify sign/s verify/s
rsa 512 bits 0.0266s 0.0026s 37.6 389.4
rsa 1024 bits 0.1384s 0.0076s 7.2 131.6
rsa 2048 bits 0.8592s 0.0257s 1.2 38.9
rsa 4096 bits 5.8500s 0.0924s 0.2 10.8
sign verify sign/s verify/s
dsa 512 bits 0.0232s 0.0270s 43.1 37.0
dsa 1024 bits 0.0715s 0.0881s 14.0 11.4
dsa 2048 bits 0.2441s 0.2959s 4.1 3.4</pre>
<p>Showing the difference the assembler makes. Presumably Red Hat had found compatibility or security issues that led to them disabling this option.</p>
<h4 style="text-align: left;"><a name="thoughts">Thoughts</a></h4>
<p>PCem works well for getting a reasonably close match to old hardware, the slight differences in performance are not going to be an issue in most cases.</p>
<p>For Linux kernels from 2.4, virtual machines are generally a better option, since you get the compute performance of the host processor. However earlier kernels can have compatibility problems, so emulation options like PCem have the advantage when dealing with older Linux software.</p>
<h4 style="text-align: left;"><a name="further_references">Further Sources</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<hr />
<h3 style="text-align: left;"><a name="supplement_A">PCem Pentium 133, CentOS 4.0 - System Information</a></h3>
<p>Since we had to use an alternative specification system to install CentOS 4.0, we had a look at what CentOS had to say about that system too.</p>
<p>So our target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="https://www.asus.com/">ASUS</a> P/I-P55T2P4 (<a href="https://www.asus.com/supportonly/PI-P55T2P4/HelpDesk_Manual/">manual</a>), socket 7, <a href="http://www.intel.com/">Intel</a> 430HX PCIset "Triton II"</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 133</td></tr>
<tr><th>RAM</th><td>256 MiB (256 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s [should be a PIIX3]</td></tr>
<tr><td>IDE hard disk 8192 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10/100 Mb/s Ethernet PCI NE2000 compatible, Realtek RTL8092AS</td></tr>
</tbody>
</table>
<h4 style="text-align: left;">uname & lsb_release</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-centos4 2.6.9-5.0.3.EL #1 Sat Feb 19 15:32:50 CST 2005 i586 i586 i386 GNU/Linux</pre>
<p>A "Linux" kernel, on a node named "p-centos4", kernel release "2.6.9-5.0.3.EL", version "#1 Sat Feb 19 15:32:50 CST 2005", on a "i586" machine, processor "i586", "i386" platform, for operating system "GNU/Linux"</p>
<p>Distribution information from Linux Standard Base (LSB):</p>
<pre class="capturedOutput">$ lsb_release -a
LSB Version: 1.3
Distributor ID: CentOS
Description: CentOS release 4.0 (Final)
Release: 4.0
Codename: Final</pre>
<p>And from the distribution release files:</p>
<pre class="capturedOutput">$ cat /etc/redhat-release
CentOS release 4.0 (Final)</pre>
<p>So CentOS 4.0 (Final) as expected.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200
stepping : 12
cpu MHz : 133.365
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 263.16</pre>
<p>So an Intel Pentium running at 133 MHz. The BogoMips result is consistent with the approximately double clock speed rating expected with this kernel and processor (133.365 * 1.99 = 265.40). See <a href="https://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean">linux - What do the flags in /proc/cpuinfo mean? - Unix & Linux Stack Exchange</a> for details of the CPU flags.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 256112 kB
MemFree: 196912 kB
Buffers: 7208 kB
Cached: 29324 kB
SwapCached: 0 kB
Active: 27604 kB
Inactive: 16900 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 256112 kB
LowFree: 196912 kB
SwapTotal: 524280 kB
SwapFree: 524280 kB
Dirty: 4 kB
Writeback: 0 kB
Mapped: 14216 kB
Slab: 11860 kB
Committed_AS: 44988 kB
PageTables: 848 kB
VmallocTotal: 761848 kB
VmallocUsed: 1260 kB
VmallocChunk: 760060 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB</pre>
<p>So 256 MiB RAM, with about 524 MB of swap.</p>
<h4>lspci, /proc/bus/pci/devices & /proc/pci</h4>
<p>PCI device report:</p>
<pre class="capturedOutput">$ /sbin/lspci
00:00.0 Host bridge: Intel Corp. 430HX - 82439HX TXC [Triton II]
00:07.0 ISA bridge: Intel Corp. 82371FB PIIX ISA [Triton I]
00:07.1 IDE interface: Intel Corp. 82371FB PIIX IDE [Triton I]
00:09.0 VGA compatible controller: S3 Inc. 86c764/765 [Trio32/64/64V+]
00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)</pre>
<p>The machine readable <tt>/proc/bus/pci/devices</tt>:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0000 80861250 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 PIIX_IDE
0039 80861230 0 00000000 00000000 00000000 00000000 0000e801 00000000 00000000 00000000 00000000 00000000 00000000 00000010 00000000 00000000 PIIX_IDE
0048 53338811 a 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00800000 00000000 00000000 00000000 00000000 00000000 00010000
0050 10ec8029 b 0000e401 00000000 00000000 00000000 00000000 00000000 00000000 00000020 00000000 00000000 00000000 00000000 00000000 00000000 ne2k-pci</pre>
<p>And the obsolete <tt>/proc/pci</tt>, which was how to get PCI in older kernels:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Class 0600: PCI device 8086:1250 (rev 0).
Master Capable. Latency=32.
Bus 0, device 7, function 0:
Class 0601: PCI device 8086:122e (rev 0).
Master Capable. Latency=32.
Bus 0, device 7, function 1:
Class 0101: PCI device 8086:1230 (rev 0).
Master Capable. Latency=32.
I/O at 0xe800 [0xe80f].
Bus 0, device 9, function 0:
Class 0300: PCI device 5333:8811 (rev 0).
IRQ 10.
Non-prefetchable 32 bit memory at 0x10000000 [0x107fffff].
Bus 0, device 10, function 0:
Class 0200: PCI device 10ec:8029 (rev 0).
IRQ 11.
I/O at 0xe400 [0xe41f].</pre>
<p>In each case we get details of the same devices, but presented differently. Showing the PCI network card, the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Linux version 2.6.9-5.0.3.EL (buildcentos@build4-1386) (gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)) #1 Sat Feb 19 15:32:50 CST 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000010000000 (usable)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
256MB LOWMEM available.
zapping low mappings.
On node 0 totalpages: 65536
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 61440 pages, LIFO batch:15
HighMem zone: 0 pages, LIFO batch:1
DMI 2.0 present.
ACPI: Unable to locate RSDP
Built 1 zonelists
Kernel command line: ro root=/dev/VolGroup00/LogVol00 rhgb quiet
Initializing CPU#0
CPU 0 irqstacks, hard=c03d2000 soft=c03d1000
PID hash table entries: 2048 (order: 11, 32768 bytes)
Detected 133.365 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 254856k/262144k available (2050k kernel code, 6740k reserved, 656k data, 140k init, 0k highmem)
Calibrating delay loop... 263.16 BogoMIPS (lpj=131584)
Security Scaffold v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
There is already a security framework initialized, register_security failed.
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: 0000013b 00000000 00000000 00000000
CPU: After vendor identify, caps: 0000013b 00000000 00000000 00000000
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After all inits, caps: 0000013b 00000000 00000000 00000000
CPU: Intel Pentium 75 - 200 stepping 0c
Checking 'hlt' instruction... OK.
checking if image is initramfs... it is
Freeing initrd memory: 952k freed
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xf0430, last bus=0
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20040816
ACPI: Interpreter disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI: Using IRQ router PIIX/ICH [8086/122e] at 0000:00:07.0
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
audit: initializing netlink socket (disabled)
audit(1653833497.913:0): initialized
Total HugeTLB memory allocated, 0
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
SELinux: Registering netfilter hooks
Initializing Cryptographic API
ksign: Installing public key data
Loading keyring
- Added public key 63D7AF8AA6573983
- User ID: CentOS-4 (Kernel Module GPG key)
Limiting direct PCI/PCI transfers.
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
vesafb: probe of vesafb0 failed with error -6
Real Time Clock Driver v1.12
Linux agpgart interface v0.100 (c) Dave Jones
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
divert: not allocating divert_blk for non-ethernet device lo
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIXa: IDE controller at PCI slot 0000:00:07.0
PIIXa: chipset revision 0
PIIXa: bad irq (0): will probe later
PIIXa: neither IDE port enabled (BIOS)
PIIXb: IDE controller at PCI slot 0000:00:07.1
PIIXb: chipset revision 0
PIIXb: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xe800-0xe807, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xe808-0xe80f, BIOS settings: hdc:DMA, hdd:pio
Probing IDE interface ide0...
hda: PCemHD, ATA DISK drive
Using cfq io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: PCemCD, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
hda: max request size: 128KiB
hda: 16777152 sectors (8589 MB) w/256KiB Cache, CHS=16644/16/63
hda: cache flushes not supported
hda: hda1 hda2
hdc: ATAPI 24X CD-ROM drive, 0kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
ide-floppy driver 0.99.newide
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
psmouse.c: Failed to reset mouse on isa0060/serio1
input: ImPS/2 Generic Wheel Mouse on isa0060/serio1
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 16Kbytes
TCP: Hash tables configured (established 16384 bind 4681)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
Freeing unused kernel memory: 140k freed
device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@uk.sistina.com
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
SELinux: Disabled at runtime.
SELinux: Unregistering netfilter hooks
inserting floppy driver for 2.6.9-5.0.3.EL
Floppy drive(s): fd0 is 2.88M AMI BIOS
FDC 0 is a post-1991 82077
ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker
http://www.scyld.com/network/ne2k-pci.html
PCI: Found IRQ 11 for device 0000:00:0a.0
divert: allocating divert_blk for eth0
eth0: RealTek RTL-8029 found at 0xe400, IRQ 11, AC:DE:48:88:BB:AA.
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
EXT3 FS on dm-0, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 524280k swap on /dev/VolGroup00/LogVol01. Priority:-1 extents:1
parport0: PC-style at 0x378 [PCSPP,EPP]
ip_tables: (C) 2000-2002 Netfilter core team
ip_tables: (C) 2000-2002 Netfilter core team
parport0: PC-style at 0x378 [PCSPP,EPP]
lp0: using parport0 (polling).
lp0: console ready
NET: Registered protocol family 10
Disabled Privacy Extensions on device c03660a0(lo)
IPv6 over IPv4 tunneling driver
divert: not allocating divert_blk for non-ethernet device sit0
eth0: no IPv6 routers present</pre>
<p>Here we see the results of hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="supplement_B">PCem Pentium 133, BogoMips</a></h3>
<p>Checking for changes in the BogoMips method/scaling across Linux kernels used in Debian Linux releases. The last release of Debian to support Pentium (i586) was Debian GNU/Linux 5 (lenny), more recent releases for x86 require a i686 class processor.</p>
<p>Recording the BogoMips result reported by the kernel used for Debian Linux 'netinst' CD images on a PCem Pentium 133 system:</p>
<table border="1">
<tbody>
<tr><th>Debian Release</th><th>Linux Kernel</th><th>BogoMips Source</th><th>BogoMips Result</th></tr>
<tr><td>1.3 <br />(bo)</td><td>2.0.29</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 133.12 BogoMIPS</pre></td></tr>
<tr><td>2.0 <br />(hamm)</td><td>2.0.34</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 133.12 BogoMIPS</pre></td></tr>
<tr><td>2.1 <br />(slink)</td><td>2.0.36</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 133.12 BogoMIPS</pre></td></tr>
<tr><td>2.2 <br />(potato)</td><td>2.2.17</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 266.24 BogoMIPS</pre></td></tr>
<tr><td>3.0r6 <br />(woody)</td><td>2.2.20</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 266.24 BogoMIPS</pre></td></tr>
<tr><td>3.0r6 <br />(woody)</td><td>2.4.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 266.24 BogoMIPS</pre></td></tr>
<tr><td>3.1r8 <br />(sarge)</td><td>2.4.27</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 266.24 BogoMIPS</pre></td></tr>
<tr><td>3.1r8 <br />(sarge)</td><td>2.6.8</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 264.19 BogoMIPS</pre></td></tr>
<tr><td>4.0r9 <br />(etch)</td><td>2.6.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay using timer specific routine.. 266.98 BogoMIPS (lpj=533966)</pre></td></tr>
<tr><td>5.0.10 <br />(lenny)</td><td>2.6.26</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay using timer specific routine.. 267.44 BogoMIPS (lpj=534880)</pre></td></tr>
</tbody>
</table>
<p>For PowerPC (see <a href="https://boxes-of-tat.blogspot.com/2022/05/linux-for-powerpc-on-qemu-mac99-system.html#benchmark_bogomips">QEMU mac99 BogoMips</a>) we saw two changes in 2.6: one to switch to a timer based calibration, and another to derived the BogoMips score directly from the timer frequency. For x86 it also looks like the 2.6 kernel introduces changes, with late kernels explicitly using a timer instead of the system clock, and the early 2.6 kernel showing a slightly lower BogoMips result than seen with 2.4 kernels.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-23298983397009040042022-05-27T16:02:00.000+01:002022-05-27T16:02:36.513+01:00Linux for ARM on QEMU (virt) - System Information<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jx1UKQTjzDuuJbVFgRpF2FpG1L7CnfcjFoHu6QKe5EIzjz8KQiVhjxjDNbWD4gVHpij_V3TG4ej6rYj18kDQPpd9SngKCedndFR27taOvhxyEq69RxL5hDGtIRAKTz7CIY3QZGAqqzGvJwtdBQk_qD4zRxsDHCyqbX6piogbfGIXwobauNm5f7VI/s672/QEMU_virt_Debian10_console.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="489" data-original-width="672" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jx1UKQTjzDuuJbVFgRpF2FpG1L7CnfcjFoHu6QKe5EIzjz8KQiVhjxjDNbWD4gVHpij_V3TG4ej6rYj18kDQPpd9SngKCedndFR27taOvhxyEq69RxL5hDGtIRAKTz7CIY3QZGAqqzGvJwtdBQk_qD4zRxsDHCyqbX6piogbfGIXwobauNm5f7VI/s320/QEMU_virt_Debian10_console.png" width="320" /></a></div>
<h3 style="text-align: left;">Linux for ARM</h3>
<p>Processor designs from <a href="https://www.arm.com/">Arm Ltd.</a> are used in a plethora of microprocessors and SoC (System on a Chip) components. Which power a wide range of devices including: smartphones, tablets, PDAs, network routers, NAS systems, set-top boxes, etc. Some (non-exhaustive) lists of devices using the ARM architecture can be found in:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/List_of_products_using_ARM_processors">List of products using ARM processors - Wikipedia</a></li>
<li><a href="https://openwrt.org/docs/techref/targets/start">[OpenWrt Wiki] Targets</a></li>
<li><a href="https://www.arm.linux.org.uk/developer/machines/">ARM Linux - Developer - Machines</a></li>
</ul>
<p>The initial port of the Linux kernel to ARM began back in 1994, then targeting an Acorn A5000 running RISCOS, and grew from there through to being part of the mainline Linux kernel.</p>
<p>The use of ARM cores in microprocessors, microcontrollers and SoC devices, for many different vendors, meant that supporting Linux on a device would often require a specific kernel built for that specific device. This limited the availability of general purpose Linux distributions, while making vendor specific embedded Linux kernels common. Fortunately since most user-space applications use the kernel abstractions to access devices, the same user-space can be used with any kernel built for the same flavor of the architecture (see <a href="https://wiki.debian.org/ArmPorts">ArmPorts - Debian Wiki</a>).</p>
<p>Support for a selection of ARM based systems ('arm') appeared in the Debian GNU/Linux 2.2 (`potato') release in 2000. The current Debian Linux 11 (bullseye) supports ARM through the 'armel', 'armhf' and 'arm64' (<i>aka</i>. 'aarch64') ports.</p>
<h3 style="text-align: left;">QEMU</h3>
<p>The diversity of devices using the ARM processor means the QEMU system emulators for ARM provide a large number of emulated systems, with the QEMU 5.2.0 build I'm using listing 90 systems for the 64-bit system emulator (<tt>qemu-system-aarch64</tt>), and 84 for the 32-bit system emulator (<tt>qemu-system-arm</tt>). While most systems appear in the lists for both emulators (suggesting they could be implemented with 32-bit or 64-bit processor cores) a small set of systems are 64-bit only.</p>
<p>While most of the available systems correspond to physical hardware, the "QEMU ARM Virtual Machine" system ('virt') is a virtual system based on the use of paravirtualized devices. This provides performance improvements, particularly for I/O, and is useful for software development and testing, for cases where specific hardware features are not required.</p>
<span><a name='more'></a></span>
<h4 style="text-align: left;">Emulation Command</h4>
<p>Our 'virt' system was run with the QEMU command:</p>
<pre class="capturedOutput">$ qemu-system-arm \
-machine virt \
-m 1024M \
-drive if=none,file=hda_debian10_virt.qcow2,format=qcow2,id=hd \
-device virtio-blk-device,drive=hd \
-netdev 'user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22,id=mynet' \
-device virtio-net-device,netdev=mynet \
-kernel live-vmlinuz \
-initrd live-initrd.img \
-append 'root=/dev/vda2' \
-no-reboot \
-name 'Debian Linux 10 (buster) for armhf on QEMU (virt)'</pre>
<p>By default the console is on the serial port (use ctrl-alt-2 to switch to the serial port, or the "View" menu if using the GUI). The storage and networking are specified as 'virtio' devices. The '-kernel' and '-initrd' parameters are used to boot the Linux kernel directly without having to worry about system firmware. The network forwarding rules provide host/guest ssh access.</p>
<h3 style="text-align: left;">System Information</h3>
<p>So let's see what Linux has to say about the system...</p>
<h4 style="text-align: left;">uname & lsb_release</h4>
<p>Operating system release and version information:</p>
<pre class="capturedOutput">$ uname -a
Linux deb-virt 4.19.0-17-armmp-lpae #1 SMP Debian 4.19.194-1 (2021-06-10) armv7l GNU/Linux</pre>
<p>So a "Linux" kernel, on a node named "deb-virt", kernel release "4.19.0-17-armmp-lpae" (a patched 4.19.0 kernel), version "#1 SMP Debian 4.19.194-1 (2021-06-10)", machine type "armv7l" for operating system "GNU/Linux".</p>
<p>Distribution information from Linux Standard Base (LSB):</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster</pre>
<p>Looking at the Debian release information files:</p>
<pre class="capturedOutput">cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/debian_version
10.10</pre>
<p>Confirmed as a Debian Linux 10 (buster) distribution.</p>
<h4 style="text-align: left;">/proc/cpuinfo & lscpu</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: ARM
Model: 1
Model name: Cortex-A15
Stepping: r2p1
BogoMIPS: 125.00
Flags: half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
$ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 125.00
Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc0f
CPU revision : 1
Hardware : Generic DT based system
Revision : 0000
Serial : 0000000000000000</pre>
<p>While the processor is a Cortex-A15 (<a href="https://en.wikipedia.org/wiki/ARM_Cortex-A15">Wikipedia</a>) it shows only a single core rather than the more usual 2 or 4 cores. This is due to the QEMU default for the number of CPUs being one, and can be overridden with the '-smp' option.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 1021640 kB
MemFree: 841148 kB
MemAvailable: 900876 kB
Buffers: 13044 kB
Cached: 110268 kB
SwapCached: 0 kB
Active: 81756 kB
Inactive: 54012 kB
Active(anon): 12524 kB
Inactive(anon): 1352 kB
Active(file): 69232 kB
Inactive(file): 52660 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 262144 kB
HighFree: 134604 kB
LowTotal: 759496 kB
LowFree: 706544 kB
SwapTotal: 997372 kB
SwapFree: 997372 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 12428 kB
Mapped: 13288 kB
Shmem: 1444 kB
Slab: 23380 kB
SReclaimable: 14820 kB
SUnreclaim: 8560 kB
KernelStack: 504 kB
PageTables: 712 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1508192 kB
Committed_AS: 80592 kB
VmallocTotal: 245760 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 128 kB
AnonHugePages: 2048 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 16384 kB
CmaFree: 12260 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB</pre>
<p>So 1.0 GiB RAM, with about 997 MB of swap.</p>
<h4 style="text-align: left;">lspci and lsusb</h4>
<p>Details of installed PCI and USB devices:</p>
<pre class="capturedOutput"># lspci -v
# lsusb</pre>
<p>In this particular case there are no installed PCI or USB devices (the system uses virtio devices instead) so these commands don't report anything. However the 'virt' machine can have these installed if desired.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>Report hardware information using commands:</p>
<pre class="capturedOutput">$ report-hw
uname -a: Linux deb-virt 4.19.0-17-armmp-lpae #1 SMP Debian 4.19.194-1 (2021-06-10) armv7l GNU/Linux
lsmod: Module Size Used by
lsmod: evdev 24576 1
lsmod: ip_tables 24576 0
lsmod: x_tables 24576 1 ip_tables
lsmod: autofs4 40960 2
lsmod: ext4 618496 2
lsmod: crc16 16384 1 ext4
lsmod: mbcache 16384 1 ext4
lsmod: jbd2 102400 1 ext4
lsmod: crc32c_generic 16384 3
lsmod: fscrypto 28672 1 ext4
lsmod: ecb 16384 0
lsmod: virtio_net 45056 0
lsmod: net_failover 20480 1 virtio_net
lsmod: virtio_blk 20480 4
lsmod: failover 16384 1 net_failover
lsmod: virtio_mmio 20480 0
lsmod: virtio_ring 24576 3 virtio_blk,virtio_net,virtio_mmio
lsmod: virtio 16384 3 virtio_blk,virtio_net,virtio_mmio
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: udev 491544 0 491544 0% /dev
df: tmpfs 102164 1440 100724 2% /run
df: /dev/vda2 6715744 978756 5376132 16% /
df: tmpfs 510820 0 510820 0% /dev/shm
df: tmpfs 5120 0 5120 0% /run/lock
df: tmpfs 510820 0 510820 0% /sys/fs/cgroup
df: /dev/vda1 482922 30205 427783 7% /boot
df: tmpfs 102164 0 102164 0% /run/user/1000
free: total used free shared buff/cache available
free: Mem: 1021640 44976 676632 1440 300032 894452
free: Swap: 997372 0 997372
/proc/cmdline: root=/dev/vda2
/proc/cpuinfo: processor : 0
/proc/cpuinfo: model name : ARMv7 Processor rev 1 (v7l)
/proc/cpuinfo: BogoMIPS : 125.00
/proc/cpuinfo: Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
/proc/cpuinfo: CPU implementer : 0x41
/proc/cpuinfo: CPU architecture: 7
/proc/cpuinfo: CPU variant : 0x2
/proc/cpuinfo: CPU part : 0xc0f
/proc/cpuinfo: CPU revision : 1
/proc/cpuinfo:
/proc/cpuinfo: Hardware : Generic DT based system
/proc/cpuinfo: Revision : 0000
/proc/cpuinfo: Serial : 0000000000000000
/proc/iomem: 00000000-00000000 : pl011@9000000
/proc/iomem: 00000000-00000000 : pl011@9000000
/proc/iomem: 00000000-00000000 : pl031@9010000
/proc/iomem: 00000000-00000000 : rtc-pl031
/proc/iomem: 00000000-00000000 : pl061@9030000
/proc/iomem: 00000000-00000000 : pl061@9030000
/proc/iomem: 00000000-00000000 : a003c00.virtio_mmio
/proc/iomem: 00000000-00000000 : a003e00.virtio_mmio
/proc/iomem: 00000000-00000000 : System RAM
/proc/iomem: 00000000-00000000 : Kernel code
/proc/iomem: 00000000-00000000 : Kernel data
/proc/interrupts: CPU0
/proc/interrupts: 18: 114697 GIC-0 27 Level arch_timer
/proc/interrupts: 50: 3127 GIC-0 78 Edge virtio0
/proc/interrupts: 51: 18988 GIC-0 79 Edge virtio1
/proc/interrupts: 53: 0 GIC-0 34 Level rtc-pl031
/proc/interrupts: 54: 0 GIC-0 33 Level uart-pl011
/proc/interrupts: 55: 0 9030000.pl061 3 Edge GPIO Key Poweroff
/proc/interrupts: IPI0: 0 CPU wakeup interrupts
/proc/interrupts: IPI1: 0 Timer broadcast interrupts
/proc/interrupts: IPI2: 0 Rescheduling interrupts
/proc/interrupts: IPI3: 0 Function call interrupts
/proc/interrupts: IPI4: 0 CPU stop interrupts
/proc/interrupts: IPI5: 0 IRQ work interrupts
/proc/interrupts: IPI6: 0 completion interrupts
/proc/interrupts: Err: 0
/proc/meminfo: MemTotal: 1021640 kB
/proc/meminfo: MemFree: 676764 kB
/proc/meminfo: MemAvailable: 894604 kB
/proc/meminfo: Buffers: 23384 kB
/proc/meminfo: Cached: 254244 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 107632 kB
/proc/meminfo: Inactive: 182748 kB
/proc/meminfo: Active(anon): 12840 kB
/proc/meminfo: Inactive(anon): 1348 kB
/proc/meminfo: Active(file): 94792 kB
/proc/meminfo: Inactive(file): 181400 kB
/proc/meminfo: Unevictable: 0 kB
/proc/meminfo: Mlocked: 0 kB
/proc/meminfo: HighTotal: 262144 kB
/proc/meminfo: HighFree: 90984 kB
/proc/meminfo: LowTotal: 759496 kB
/proc/meminfo: LowFree: 585780 kB
/proc/meminfo: SwapTotal: 997372 kB
/proc/meminfo: SwapFree: 997372 kB
/proc/meminfo: Dirty: 4 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 12756 kB
/proc/meminfo: Mapped: 13164 kB
/proc/meminfo: Shmem: 1440 kB
/proc/meminfo: Slab: 32760 kB
/proc/meminfo: SReclaimable: 22416 kB
/proc/meminfo: SUnreclaim: 10344 kB
/proc/meminfo: KernelStack: 504 kB
/proc/meminfo: PageTables: 736 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 1508192 kB
/proc/meminfo: Committed_AS: 45448 kB
/proc/meminfo: VmallocTotal: 245760 kB
/proc/meminfo: VmallocUsed: 0 kB
/proc/meminfo: VmallocChunk: 0 kB
/proc/meminfo: Percpu: 152 kB
/proc/meminfo: AnonHugePages: 2048 kB
/proc/meminfo: ShmemHugePages: 0 kB
/proc/meminfo: ShmemPmdMapped: 0 kB
/proc/meminfo: CmaTotal: 16384 kB
/proc/meminfo: CmaFree: 7032 kB
/proc/meminfo: HugePages_Total: 0
/proc/meminfo: HugePages_Free: 0
/proc/meminfo: HugePages_Rsvd: 0
/proc/meminfo: HugePages_Surp: 0
/proc/meminfo: Hugepagesize: 2048 kB
/proc/meminfo: Hugetlb: 0 kB
/proc/bus/input/devices: I: Bus=0019 Vendor=0001 Product=0001 Version=0100
/proc/bus/input/devices: N: Name="gpio-keys"
/proc/bus/input/devices: P: Phys=gpio-keys/input0
/proc/bus/input/devices: S: Sysfs=/devices/platform/gpio-keys/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=kbd event0
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=3
/proc/bus/input/devices: B: KEY=100000 0 0 0
/proc/bus/input/devices: </pre>
<p>Since this machine is mostly based on virtio devices, the main hints about the devices are from the loaded kernel modules.</p>
<h4 style="text-align: left;">lshw</h4>
<p>Report on system hardware:</p>
<pre class="capturedOutput"># lshw
deb-virt
description: ARMv7 Processor rev 1 (v7l)
width: 32 bits
*-core
description: Motherboard
physical id: 0
*-cpu
description: CPU
product: cpu
physical id: 0
bus info: cpu@0
capabilities: half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
*-memory
description: System memory
physical id: 1
size: 997MiB
*-virtio0
description: Ethernet interface
physical id: 2
bus info: virtio@0
logical name: eth0
serial: 52:54:00:12:34:56
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=10.0.2.15 link=yes multicast=yes
*-virtio1
description: Virtual I/O device
physical id: 3
bus info: virtio@1
logical name: /dev/vda
size: 8GiB (8589MB)
capabilities: partitioned partitioned:dos
configuration: driver=virtio_blk logicalsectorsize=512 sectorsize=512 signature=baa19ca7
*-volume:0
description: Linux filesystem partition
vendor: Linux
physical id: 1
bus info: virtio@1,1
logical name: /dev/vda1
logical name: /boot
version: 1.0
serial: e8a52b96-9cbb-473a-8e57-ca46f5beb36e
size: 487MiB
capacity: 487MiB
capabilities: primary bootable extended_attributes large_files ext2 initialized
configuration: filesystem=ext2 lastmountpoint=/ modified=2021-06-21 15:37:12 mount.fstype=ext2 mount.options=rw,relatime mounted=2021-06-21 15:37:10 state=mounted
*-volume:1
description: EXT4 volume
vendor: Linux
physical id: 2
bus info: virtio@1,2
logical name: /dev/vda2
logical name: /
version: 1.0
serial: c431a7b7-8678-4326-9c99-9208aa9d221b
size: 6728MiB
capacity: 6728MiB
capabilities: primary journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
configuration: created=2021-06-21 12:43:37 filesystem=ext4 lastmountpoint=/ modified=2021-06-21 15:37:43 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro mounted=2021-06-21 15:37:54 state=mounted
*-volume:2
description: Extended partition
physical id: 3
bus info: virtio@1,3
logical name: /dev/vda3
size: 974MiB
capacity: 974MiB
capabilities: primary extended partitioned partitioned:extended
*-logicalvolume
description: Linux swap volume
physical id: 5
logical name: /dev/vda5
version: 1
serial: ea76383f-0df9-4da0-86a0-c454504fa5c5
size: 974MiB
capacity: 974MiB
capabilities: nofs swap initialized
configuration: filesystem=swap pagesize=4096</pre>
<p>The approach taken by 'lshw' does a good job of picking up the virtio devices and providing a bit of information about them.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System messages:</p>
<pre class="capturedOutput"># dmesg
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.0-17-armmp-lpae (debian-kernel@lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.194-1 (2021-06-10)
[ 0.000000] CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=30c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[ 0.000000] OF: fdt: Machine model: linux,dummy-virt
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 16 MiB at 0x000000007f000000
[ 0.000000] On node 0 totalpages: 262144
[ 0.000000] DMA zone: 1728 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 196608 pages, LIFO batch:63
[ 0.000000] HighMem zone: 65536 pages, LIFO batch:15
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv0.2 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: Trusted OS migration not required
[ 0.000000] random: get_random_bytes called from start_kernel+0x9c/0x52c with crng_init=0
[ 0.000000] percpu: Embedded 17 pages/cpu s40460 r8192 d20980 u69632
[ 0.000000] pcpu-alloc: s40460 r8192 d20980 u69632 alloc=17*4096
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 260416
[ 0.000000] Kernel command line: root=/dev/vda2
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Memory: 983088K/1048576K available (10240K kernel code, 1136K rwdata, 2640K rodata, 2048K init, 319K bss, 49104K reserved, 16384K cma-reserved, 245760K highmem)
[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xf0800000 - 0xff800000 ( 240 MB)
lowmem : 0xc0000000 - 0xf0000000 ( 768 MB)
pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
.text : 0x(ptrval) - 0x(ptrval) (12256 kB)
.init : 0x(ptrval) - 0x(ptrval) (2048 kB)
.data : 0x(ptrval) - 0x(ptrval) (1137 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 320 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] ftrace: allocating 33878 entries in 100 pages
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] GICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143]
[ 0.000000] arch_timer: cp15 timer(s) running at 62.50MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns
[ 0.000310] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns
[ 0.000610] Switching to timer-based delay loop, resolution 16ns
[ 0.013952] Console: colour dummy device 80x30
[ 0.017228] console [tty0] enabled
[ 0.020224] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)
[ 0.020617] pid_max: default: 32768 minimum: 301
[ 0.023237] Security Framework initialized
[ 0.023513] Yama: disabled by default; enable with sysctl kernel.yama.*
[ 0.029414] AppArmor: AppArmor initialized
[ 0.031051] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.031226] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.063210] CPU: Testing write buffer coherency: ok
[ 0.066335] CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.091535] /cpus/cpu@0 missing clock-frequency property
[ 0.092076] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.105087] Setting up static identity map for 0x40400000 - 0x404000a0
[ 0.109599] rcu: Hierarchical SRCU implementation.
[ 0.123175] EFI services will not be available.
[ 0.127936] smp: Bringing up secondary CPUs ...
[ 0.128125] smp: Brought up 1 node, 1 CPU
[ 0.128280] SMP: Total of 1 processors activated (125.00 BogoMIPS).
[ 0.128447] CPU: All CPU(s) started in SVC mode.
[ 0.150130] devtmpfs: initialized
[ 0.172709] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
[ 0.215612] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.217325] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.242761] pinctrl core: initialized pinctrl subsystem
[ 0.264268] DMI not present or invalid.
[ 0.282301] NET: Registered protocol family 16
[ 0.308507] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.311179] audit: initializing netlink subsys (disabled)
[ 0.326825] audit: type=2000 audit(0.256:1): state=initialized audit_enabled=0 res=1
[ 0.333292] No ATAGs?
[ 0.347263] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.347783] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.354175] Serial: AMBA PL011 UART driver
[ 0.402540] 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 54, base_baud = 0) is a PL011 rev1
[ 0.409453] console [ttyAMA0] enabled
[ 0.466939] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.487892] vgaarb: loaded
[ 0.492973] media: Linux media interface: v0.10
[ 0.493361] videodev: Linux video capture interface: v2.00
[ 0.493998] pps_core: LinuxPPS API ver. 1 registered
[ 0.494137] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.494436] PTP clock support registered
[ 0.524612] clocksource: Switched to clocksource arch_sys_counter
[ 0.820729] VFS: Disk quotas dquot_6.6.0
[ 0.821736] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.831274] AppArmor: AppArmor Filesystem Enabled
[ 0.872644] NET: Registered protocol family 2
[ 0.887376] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[ 0.888210] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.888637] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.889268] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.891389] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.891850] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.895884] NET: Registered protocol family 1
[ 0.896943] NET: Registered protocol family 44
[ 0.897298] PCI: CLS 0 bytes, default 64
[ 0.907466] Unpacking initramfs...
[ 4.169145] Freeing initrd memory: 20120K
[ 4.169876] kvm [1]: HYP mode not available
[ 4.180099] Initialise system trusted keyrings
[ 4.184120] Key type blacklist registered
[ 4.185554] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[ 4.212610] zbud: loaded
[ 12.669135] Key type asymmetric registered
[ 12.669512] Asymmetric key parser 'x509' registered
[ 12.669969] bounce: pool size: 64 pages
[ 12.670435] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 12.672725] io scheduler noop registered
[ 12.672931] io scheduler deadline registered
[ 12.673869] io scheduler cfq registered (default)
[ 12.674025] io scheduler mq-deadline registered
[ 12.697603] pl061_gpio 9030000.pl061: PL061 GPIO chip @0x0000000009030000 registered
[ 12.705054] pci-host-generic 4010000000.pcie: host bridge /pcie@10000000 ranges:
[ 12.706226] pci-host-generic 4010000000.pcie: IO 0x3eff0000..0x3effffff -> 0x00000000
[ 12.707245] pci-host-generic 4010000000.pcie: MEM 0x10000000..0x3efeffff -> 0x10000000
[ 12.707451] pci-host-generic 4010000000.pcie: MEM 0x8000000000..0xffffffffff -> 0x8000000000
[ 12.715777] vmap allocation for size 1052672 failed: use vmalloc=<size> to increase size
[ 12.716368] pci-host-generic 4010000000.pcie: ECAM ioremap failed
[ 12.801081] pci-host-generic: probe of 4010000000.pcie failed with error -12
[ 12.821734] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 12.829543] Serial: AMBA driver
[ 12.848173] libphy: Fixed MDIO Bus: probed
[ 12.869160] mousedev: PS/2 mouse device common for all mice
[ 12.879635] rtc-pl031 9010000.pl031: rtc core: registered pl031 as rtc0
[ 12.891945] ledtrig-cpu: registered to indicate activity on CPUs
[ 12.898750] NET: Registered protocol family 10
[ 13.493137] Segment Routing with IPv6
[ 13.494253] mip6: Mobile IPv6
[ 13.494558] NET: Registered protocol family 17
[ 13.495705] mpls_gso: MPLS GSO support
[ 13.496845] ThumbEE CPU extension supported.
[ 13.497077] Registering SWP/SWPB emulation handler
[ 13.500863] registered taskstats version 1
[ 13.501062] Loading compiled-in X.509 certificates
[ 14.257325] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
[ 14.258391] Loaded X.509 cert 'Debian Secure Boot Signer 2021 - linux: 4b6ef5abca669825178e052c84667ccbc0531f8c'
[ 14.260934] zswap: loaded using pool lzo/zbud
[ 14.263395] AppArmor: AppArmor sha1 policy hashing enabled
[ 14.276770] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[ 14.280592] rtc-pl031 9010000.pl031: setting system clock to 2021-06-21 14:37:34 UTC (1624286254)
[ 14.280826] sr_init: No PMIC hook to init smartreflex
[ 14.293803] uart-pl011 9000000.pl011: no DMA platform data
[ 14.467052] Freeing unused kernel memory: 2048K
[ 14.478748] Run /init as init process
[ 21.290454] virtio_blk virtio1: [vda] 16777216 512-byte logical blocks (8.59 GB/8.00 GiB)
[ 21.326099] vda: vda1 vda2 vda3 < vda5 >
[ 22.452198] PM: Image not found (code -22)
[ 24.154099] random: fast init done
[ 24.184340] EXT4-fs (vda2): mounted filesystem with ordered data mode. Opts: (null)
[ 26.220623] systemd[1]: Inserted module 'autofs4'
[ 26.356649] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 26.360218] systemd[1]: Detected virtualization qemu.
[ 26.363874] systemd[1]: Detected architecture arm.
[ 26.441264] systemd[1]: Set hostname to <deb-virt>.
[ 30.925919] random: systemd: uninitialized urandom read (16 bytes read)
[ 30.978126] random: systemd: uninitialized urandom read (16 bytes read)
[ 30.983044] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 31.000374] random: systemd: uninitialized urandom read (16 bytes read)
[ 31.013527] systemd[1]: Listening on Journal Socket (/dev/log).
[ 31.024261] systemd[1]: Listening on Journal Socket.
[ 31.121713] systemd[1]: Starting Load Kernel Modules...
[ 31.203157] systemd[1]: Starting Set the console keyboard layout...
[ 31.330925] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[ 31.369992] systemd[1]: Listening on Journal Audit Socket.
[ 31.394703] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 31.409528] systemd[1]: Reached target Paths.
[ 31.474747] systemd[1]: Created slice User and Session Slice.
[ 31.494176] systemd[1]: Reached target Slices.
[ 31.522608] systemd[1]: Listening on fsck to fsckd communication Socket.
[ 31.581500] systemd[1]: Created slice system-getty.slice.
[ 31.620261] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 31.661822] systemd[1]: Listening on udev Kernel Socket.
[ 31.714700] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 34.141708] EXT4-fs (vda2): re-mounted. Opts: errors=remount-ro
[ 36.957671] systemd[1]: Started Journal Service.
[ 38.783574] systemd-journald[157]: Received request to flush runtime journal from PID 1
[ 50.157370] Adding 997372k swap on /dev/vda5. Priority:-2 extents:1 across:997372k FS
[ 51.882176] EXT4-fs (vda1): mounting ext2 file system using the ext4 subsystem
[ 51.919406] EXT4-fs (vda1): mounted filesystem without journal. Opts: (null)
[ 54.565974] audit: type=1400 audit(1624286294.780:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=216 comm="apparmor_parser"
[ 54.568052] audit: type=1400 audit(1624286294.784:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=216 comm="apparmor_parser"
[ 54.568337] audit: type=1400 audit(1624286294.784:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=216 comm="apparmor_parser"
[ 54.752918] audit: type=1400 audit(1624286294.968:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=217 comm="apparmor_parser"
[ 54.753422] audit: type=1400 audit(1624286294.972:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=217 comm="apparmor_parser"
[ 63.633226] random: crng init done
[ 63.633552] random: 7 urandom warning(s) missed due to ratelimiting</pre>
<p>Lots of stuff in here...</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>Since this is a machine targeted at providing 32-bit ARM based virtual machines, how well does it perform?</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips pseudo-benchmark is used by the Linux kernel to calibrate a wait loop. The value obtained at boot is reported by '/proc/cpuinfo', 'lscpu' and 'dmesg' (see above).</p>
<pre class="capturedOutput">Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)</pre>
<p>This BogoMips result is derived from a timer rather than using the delay loop calibration, and doesn't tell us anything about the processor performance. So an alternative benchmark is required to gauge performance.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://www.openssl.org/">OpenSSL</a> cryptographic library provides a tool providing a command-line interface to the library methods and one aspect of this provides a speed test. Since I'm mostly interested in older systems I'm going to focus on the common RSA and MD5 methods.</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 1353924 md5's in 2.99s
Doing md5 for 3s on 64 size blocks: 1168093 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 794642 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 356521 md5's in 2.99s
Doing md5 for 3s on 8192 size blocks: 59039 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 29876 md5's in 3.00s
OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 7245.08k 24919.32k 67809.45k 122099.50k 161215.83k 163162.79k
$ openssl speed rsa
Doing 512 bits private rsa's for 10s: 7005 512 bits private RSA's in 10.00s
Doing 512 bits public rsa's for 10s: 64954 512 bits public RSA's in 9.99s
Doing 1024 bits private rsa's for 10s: 1443 1024 bits private RSA's in 10.00s
Doing 1024 bits public rsa's for 10s: 31001 1024 bits public RSA's in 9.99s
Doing 2048 bits private rsa's for 10s: 289 2048 bits private RSA's in 10.02s
Doing 2048 bits public rsa's for 10s: 11082 2048 bits public RSA's in 10.00s
Doing 3072 bits private rsa's for 10s: 103 3072 bits private RSA's in 10.02s
Doing 3072 bits public rsa's for 10s: 5493 3072 bits public RSA's in 10.00s
Doing 4096 bits private rsa's for 10s: 49 4096 bits private RSA's in 10.04s
Doing 4096 bits public rsa's for 10s: 3232 4096 bits public RSA's in 9.99s
Doing 7680 bits private rsa's for 10s: 9 7680 bits private RSA's in 10.64s
Doing 7680 bits public rsa's for 10s: 980 7680 bits public RSA's in 10.01s
Doing 15360 bits private rsa's for 10s: 2 15360 bits private RSA's in 17.50s
Doing 15360 bits public rsa's for 10s: 254 15360 bits public RSA's in 10.03s
OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
sign verify sign/s verify/s
rsa 512 bits 0.001428s 0.000154s 700.5 6501.9
rsa 1024 bits 0.006930s 0.000322s 144.3 3103.2
rsa 2048 bits 0.034671s 0.000902s 28.8 1108.2
rsa 3072 bits 0.097282s 0.001820s 10.3 549.3
rsa 4096 bits 0.204898s 0.003091s 4.9 323.5
rsa 7680 bits 1.182222s 0.010214s 0.8 97.9
rsa 15360 bits 8.750000s 0.039488s 0.1 25.3</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 161,215.83k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 4.9</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 323.5</li>
</ul>
<p>What does these results tell us about the performance of the emulated system?</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>The use of paravirtualized devices mostly shows performance improvement for I/O, which makes a significant difference when building software. That makes the use of the 'virt' machine attractive for handing software compiles or other I/O intensive operations. There is also additional flexibility since the emulated machine is not constrained by the limitations of the physical hardware, making the use of large memory and SMP machines an option for development and testing.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/ARM_architecture">ARM architecture - Wikipedia</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/ARM">Documentation/Platforms/ARM - QEMU</a></li>
<li><a href="https://translatedcode.wordpress.com/2016/11/03/installing-debian-on-qemus-32-bit-arm-virt-board/">Installing Debian on QEMU’s 32-bit ARM “virt” board | translatedcode</a></li>
<li><a href="https://www.debian.org/ports/arm/">Debian -- ARM Ports</a></li>
<li><a href="https://www.armlinux.org.uk/docs/whatis.php">ARM Linux - What is it?</a></li>
</ul>
<hr />
<h3 style="text-align: left;"><a name="supplement_A">Supplemental: OpenSSL 1.1.1d Results</a></h3>
<p>Debian Linux 10 (buster) for PowerPC provides a build of OpenSSL 1.1.1d:</p>
<pre class="capturedOutput">$ openssl version -a
OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
platform: debian-armhf
options: bn(64,32) rc4(char) des(long) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/arm-linux-gnueabihf/engines-1.1"
Seeding source: os-specific</pre>
<p>From the compile flags this build has been compiled with assembler implementations for various methods (the '-D*_ASM' flags).</p>
<h4 style="text-align: left;"><a name="supA_OpenSSL_speed">OpenSSL 1.1.1d speed</a></h4>
<p>For reference a full run of the methods provided by OpenSSL on this QEMU system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 0.00 0.00 0.00 0.00 0.00 0.00
md4 2022.36k 7899.95k 26851.93k 69816.32k 130902.70k 139597.14k
md5 7200.52k 25794.99k 68818.52k 123324.76k 163203.75k 163561.47k
hmac(md5) 2046.50k 7701.38k 26572.20k 72404.99k 144195.64k 153032.02k
sha1 5815.29k 16865.98k 38440.36k 62111.74k 74887.40k 74825.73k
rmd160 1582.09k 5660.25k 15072.04k 25933.85k 33785.03k 34295.70k
rc4 27083.19k 33698.10k 38254.99k 39255.50k 39921.62k 40099.70k
des cbc 6977.67k 7657.51k 7798.67k 7900.84k 7912.54k 7946.24k
des ede3 2524.98k 2712.38k 2740.74k 2755.21k 2766.17k 2681.51k
idea cbc 0.00 0.00 0.00 0.00 0.00 0.00
seed cbc 11746.65k 13988.74k 14682.45k 14954.15k 14647.30k 14734.68k
rc2 cbc 11376.46k 13449.37k 14163.31k 14397.78k 14327.81k 14394.91k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 13669.49k 16554.71k 17353.05k 17363.29k 17679.93k 18219.67k
cast cbc 11018.32k 13716.52k 14944.85k 15305.39k 15305.39k 15400.96k
aes-128 cbc 14755.46k 18263.47k 19698.39k 20151.30k 20335.27k 20310.70k
aes-192 cbc 13592.21k 16617.82k 17430.35k 17790.29k 17866.23k 17934.73k
aes-256 cbc 12605.05k 14901.25k 15636.82k 15807.83k 15941.63k 15521.11k
camellia-128 cbc 12887.26k 15468.54k 16288.68k 16565.25k 16652.50k 16685.38k
camellia-192 cbc 10960.87k 12776.04k 13388.71k 13552.07k 13567.49k 13576.87k
camellia-256 cbc 10920.62k 12753.73k 13370.99k 13537.69k 13592.14k 13578.45k
sha256 4642.14k 13129.05k 28556.97k 40522.41k 46093.65k 46383.10k
sha512 3119.22k 12307.09k 23328.09k 37438.81k 45405.53k 46333.95k
whirlpool 486.99k 1011.37k 1632.77k 1944.58k 2069.85k 2068.41k
aes-128 ige 13847.30k 17011.39k 18064.95k 18294.44k 18330.97k 18317.31k
aes-192 ige 12449.25k 15320.59k 15992.66k 16213.33k 16121.86k 16231.08k
aes-256 ige 11396.25k 13600.58k 14330.20k 14554.11k 14472.53k 14543.53k
ghash 14472.61k 16817.75k 17603.13k 18055.85k 17853.10k 18093.40k
rand 249.23k 899.76k 2912.81k 6291.71k 9618.63k 9731.44k
sign verify sign/s verify/s
rsa 512 bits 0.001416s 0.000144s 706.1 6924.6
rsa 1024 bits 0.006638s 0.000318s 150.7 3146.5
rsa 2048 bits 0.034792s 0.000909s 28.7 1100.3
rsa 3072 bits 0.096990s 0.001887s 10.3 529.9
rsa 4096 bits 0.216170s 0.003241s 4.6 308.5
rsa 7680 bits 1.236667s 0.010707s 0.8 93.4
rsa 15360 bits 9.095000s 0.041577s 0.1 24.1
sign verify sign/s verify/s
dsa 512 bits 0.003025s 0.002209s 330.6 452.8
dsa 1024 bits 0.005071s 0.004170s 197.2 239.8
dsa 2048 bits 0.012364s 0.011050s 80.9 90.5
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0112s 0.0100s 89.1 100.0
192 bits ecdsa (nistp192) 0.0149s 0.0124s 67.1 80.6
224 bits ecdsa (nistp224) 0.0194s 0.0162s 51.6 61.8
256 bits ecdsa (nistp256) 0.0015s 0.0041s 675.1 244.0
384 bits ecdsa (nistp384) 0.0567s 0.0426s 17.6 23.5
521 bits ecdsa (nistp521) 0.1235s 0.0878s 8.1 11.4
163 bits ecdsa (nistk163) 0.0101s 0.0200s 98.8 50.1
233 bits ecdsa (nistk233) 0.0175s 0.0352s 57.3 28.4
283 bits ecdsa (nistk283) 0.0304s 0.0600s 32.9 16.7
409 bits ecdsa (nistk409) 0.0651s 0.1283s 15.4 7.8
571 bits ecdsa (nistk571) 0.1434s 0.2844s 7.0 3.5
163 bits ecdsa (nistb163) 0.0107s 0.0210s 93.5 47.5
233 bits ecdsa (nistb233) 0.0189s 0.0378s 52.9 26.4
283 bits ecdsa (nistb283) 0.0329s 0.0649s 30.4 15.4
409 bits ecdsa (nistb409) 0.0730s 0.1446s 13.7 6.9
571 bits ecdsa (nistb571) 0.1627s 0.3219s 6.1 3.1
256 bits ecdsa (brainpoolP256r1) 0.0184s 0.0175s 54.3 57.1
256 bits ecdsa (brainpoolP256t1) 0.0184s 0.0164s 54.2 61.0
384 bits ecdsa (brainpoolP384r1) 0.0574s 0.0455s 17.4 22.0
384 bits ecdsa (brainpoolP384t1) 0.0567s 0.0429s 17.6 23.3
512 bits ecdsa (brainpoolP512r1) 0.0805s 0.0649s 12.4 15.4
512 bits ecdsa (brainpoolP512t1) 0.0806s 0.0585s 12.4 17.1
op op/s
160 bits ecdh (secp160r1) 0.0110s 91.0
192 bits ecdh (nistp192) 0.0143s 69.9
224 bits ecdh (nistp224) 0.0185s 54.0
256 bits ecdh (nistp256) 0.0029s 342.5
384 bits ecdh (nistp384) 0.0542s 18.4
521 bits ecdh (nistp521) 0.1187s 8.4
163 bits ecdh (nistk163) 0.0094s 106.0
233 bits ecdh (nistk233) 0.0170s 58.8
283 bits ecdh (nistk283) 0.0294s 34.0
409 bits ecdh (nistk409) 0.0635s 15.8
571 bits ecdh (nistk571) 0.1387s 7.2
163 bits ecdh (nistb163) 0.0101s 99.3
233 bits ecdh (nistb233) 0.0184s 54.5
283 bits ecdh (nistb283) 0.0315s 31.8
409 bits ecdh (nistb409) 0.0709s 14.1
571 bits ecdh (nistb571) 0.1608s 6.2
256 bits ecdh (brainpoolP256r1) 0.0180s 55.5
256 bits ecdh (brainpoolP256t1) 0.0180s 55.4
384 bits ecdh (brainpoolP384r1) 0.0558s 17.9
384 bits ecdh (brainpoolP384t1) 0.0548s 18.2
512 bits ecdh (brainpoolP512r1) 0.0776s 12.9
512 bits ecdh (brainpoolP512t1) 0.0769s 13.0
253 bits ecdh (X25519) 0.0049s 204.1
448 bits ecdh (X448) 0.0171s 58.4
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0018s 0.0056s 545.5 177.1
456 bits EdDSA (Ed448) 0.0079s 0.0183s 126.8 54.5</pre>
<p>This version of OpenSSL supports accessing the Linux kernel cryptography implementations (see <a href="https://www.kernel.org/doc/html/v4.11/crypto/index.html">Linux Kernel Crypto API</a>) via the 'afalg' engine:</p>
<pre class="capturedOutput">$ openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC, AES-192-CBC, AES-256-CBC]</pre>
<p>The engine only supports AES methods. So getting a baseline with engine invocation:</p>
<pre class="capturedOutput">$ openssl speed -engine afalg aes-256-cbc
engine "afalg" set.
Doing aes-256 cbc for 3s on 16 size blocks: 2231421 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 64 size blocks: 640874 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 256 size blocks: 176351 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 1024 size blocks: 45237 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 8192 size blocks: 5053 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 16384 size blocks: 2670 aes-256 cbc's in 3.00s
OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256 cbc 11900.91k 13717.70k 15048.62k 15440.90k 13798.06k 14581.76k</pre>
<p>In this version of OpenSSL the engine specific method is only called when the '-evp' option is used:</p>
<pre class="capturedOutput">$ openssl speed -engine afalg -evp aes-256-cbc
engine "afalg" set.
Doing aes-256-cbc for 3s on 16 size blocks: 8234 aes-256-cbc's in 0.34s
Doing aes-256-cbc for 3s on 64 size blocks: 9833 aes-256-cbc's in 0.34s
Doing aes-256-cbc for 3s on 256 size blocks: 9103 aes-256-cbc's in 0.36s
Doing aes-256-cbc for 3s on 1024 size blocks: 7141 aes-256-cbc's in 0.26s
Doing aes-256-cbc for 3s on 8192 size blocks: 2147 aes-256-cbc's in 0.08s
Doing aes-256-cbc for 3s on 16384 size blocks: 1171 aes-256-cbc's in 0.04s
OpenSSL 1.1.1d 10 Sep 2019
built on: Mon Mar 22 23:08:47 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-pp1hfQ/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 387.48k 1850.92k 6473.24k 28124.55k 219852.80k 479641.60k</pre>
<p>Here we see a throughput improvement from 13.8 MB/s to 219.8 MB/s for 8 KB blocks.</p>
<p>The kernel method implementation can use hardware acceleration (if available) and processor specific features, which often significantly improves performance. Typically this manifests at larger block sizes, with the smaller block sizes seeing poor performance when the kernel methods are used.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-41427586008251299002022-05-25T06:43:00.001+01:002022-05-27T16:22:33.255+01:00RedHat Linux 7.3 (Valhalla) on PCem Pentium 75<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4KaLuRwxbO-QAM6H6XRbOwYyxjozaLZ40bfsAhHmNjYU8SHghPROlSaZfmGgT6nG8y_Yb1w2Y2UyetiOCFs3F_YjO31DlZYrz0T1ih-Wu4GX_-iy7sBDaYFHv5C-6JK467Thzo4MLrd8UP0IEsA6HrQWhtBbKgcPtAK8Eaxquckrud2O6RQbKSwuA/s1026/PCem-RedHat%207-desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="Red Hat Linux 7.3 GNOME desktop" border="0" data-original-height="815" data-original-width="1026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4KaLuRwxbO-QAM6H6XRbOwYyxjozaLZ40bfsAhHmNjYU8SHghPROlSaZfmGgT6nG8y_Yb1w2Y2UyetiOCFs3F_YjO31DlZYrz0T1ih-Wu4GX_-iy7sBDaYFHv5C-6JK467Thzo4MLrd8UP0IEsA6HrQWhtBbKgcPtAK8Eaxquckrud2O6RQbKSwuA/s320/PCem-RedHat%207-desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">RedHat Linux</h3>
<p>Initially established back in 1994, <a href="http://www.redhat.com/">Red Hat</a> (<a href="https://en.wikipedia.org/wiki/Red_Hat">Wikipedia</a>) is a commercial Linux vendor known for the RedHat Linux, Red Hat Enterprise Linux (RHEL) and Fedora Linux distributions.</p>
<p>RedHat Linux 7.3 (Valhalla) was released in 2002, and supported i386 through early Pentium 4 systems (the Intel Core based processors didn't ship until 2006). So it is suitable for comparing our physical Intel Pentium system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>) and the <a href="https://pcem-emulator.co.uk/">PCem</a> emulated equivalent.</p>
<h4 style="text-align: left;">Earlier Releases</h4>
<p>A couple of earlier Red Hat Linux releases are described on the same PCem system in:</p>
<ul>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/redhat-linux-52-on-pcem-pentium-75.html">RedHat Linux 5.2 (Apollo) on PCem Pentium 75</a></li>
<li><a href="https://boxes-of-tat.blogspot.com/2022/05/redhat-linux-62-zoot-on-pcem-pentium-75.html">RedHat Linux 6.2 (Zoot) on PCem Pentium 75</a></li>
</ul>
<p>It is interesting to see the evolution of the Red Hat Linux distribution over these releases.</p>
<h3 style="text-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC system, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our physical system.</p>
<p>So the target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA</td></tr>
</tbody>
</table>
<span><a name='more'></a></span>
<h3 style="text-align: left;">PCem Installation & Configuration</h3>
<p>Since we have the <a href="https://pcem-emulator.co.uk/">PCem</a> installation from the <a href="https://boxes-of-tat.blogspot.com/2022/04/slackware-linux-30-on-pentium-75-with.html">Slackware 3.0 on PCem Pentium 75</a>, where we looked at how an early Slackware behaved on similar configuration, refer to that post of details of the installation of PCem and the configuration of the emulated machine.</p>
<p>For this emulation the only differences are the name given to the configuration ("RedHat Linux 7 i430fx Pentium 75") and the file name used for the hard disk image (<tt>RedHat73-i430fx-P5.img</tt>).</p>
<h3 style="text-align: left;">RedHat Linux 7.3 Installation</h3>
<ol style="text-align: left;">
<li>Fetch the RedHat Linux 7.3 CD-ROM images from the Red Hat archive site (<a href="http://archive.download.redhat.com/pub/redhat/linux/7.3/emea/iso/i386/">http://archive.download.redhat.com/pub/redhat/linux/7.3/emea/iso/i386/</a>), for installation we only need the three binary CDs.</li>
<li>RedHat Linux 7.3 CD 1 is bootable and will boot our machine if the option is enabled in the BIOS.</li>
<li>So back to PCem...
<ol>
<li>Start/load the machine we created</li>
<li>Use the "CD-ROM">"Image..." menu to insert the CD-ROM ISO</li>
<li>When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB and that we want the CD-ROM to be a boot device.</li>
</ol>
</li>
<li>The RedHat Linux installer is pretty good, so just follow the prompts.</li>
<ol>
<li>The mouse is a "Mouse Systems (serial)"</li>
<li>For "Monitor Selection" I chose "Generic Monitor, 1280x1024 @ 76 Hz"</li>
<li>Due to the performance overheads of running X Windows, for "login type" select "Text"</li>
<li>Remember to "Empty" the CD-ROM drive when the installer reboots the system.</li>
</ol>
<li>Once logged in:</li>
<ol>
<li>To get the NE2000 ISA network card to work:
<ul>
<li>as 'root' test that the 'ne' module finds the card with: <tt># modprobe ne io=0x300 irq=10</tt></li>
<li>if that worked (<tt>eth0: NE2000 found at 0x300, using IRQ 10</tt>), remove the loaded module with <tt># rmmod ne</tt></li>
<li>to set up automatic loading of the 'ne' module we need to configure <tt>/etc/modules.conf</tt>:
<ul>
<li>if <tt>/etc/modules.conf</tt> does not exist, but <tt>/etc/conf.modules</tt> does, rename the modules file: <tt># mv /etc/conf.modules /etc/modules.conf</tt></li>
<li>add the following to <tt>/etc/modules.conf</tt>:
<pre class="capturedOutput"># NE2000 ISA ethernet adapter
alias eth0 ne
options eth0 io=0x300 irq=10</pre>
</li>
</ul>
</li>
<li>manually load the module with <tt># modprobe eth0</tt></li>
<li>now run the network configuration: <tt># netconfig</tt></li>
<li>for SLiRP networking select "Use dynamic IP configuration (BOOTP/DHCP)"</li>
<li>check the network configuration got an IP address with <tt># /sbin/ifconfig -a</tt></li>
</ul>
</li>
<li>the X server was configured during installation, if you need to reconfigure use <tt>Xconfigurator</tt></li>
<li>if the configured name server doesn't work. Try adding the your network DNS address to <tt>/etc/resolv.conf</tt> as another <tt>nameserver</tt></li>
</ol>
</ol>
<h3 style="text-align: left;"><a name="sysinfo_rh73">System Information - RedHat Linux 7.3 (Valhalla)</a></h3>
<p>So what does RedHat Linux 7.3 (Valhalla) for x86 say about this system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-rh73 2.4.18-3 #1 Thu Apr 18 07:31:07 EDT 2002 i586 unknown</pre>
<p>A "Linux" kernel, on a node named "p-rh73", kernel release "2.4.18-3", version "#1 Thu Apr 18 07:31:07 EDT 2002", on a "i586" machine, processor "unknown"</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200
stepping : 4
cpu MHz : 75.005
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 149.50</pre>
<p>The CPUID information is consistent with this being a second generation Intel Pentium processor (P54C), which is expected. The BogoMips result is consistent with the approximately double clock speed rating expected with this kernel and processor (75.0 * 1.99 = 149.25).</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 71876608 58888192 12988416 0 4722688 42819584
Swap: 263200768 0 263200768
MemTotal: 70192 kB
MemFree: 12684 kB
MemShared: 0 kB
Buffers: 4612 kB
Cached: 41816 kB
SwapCached: 0 kB
Active: 36308 kB
Inact_dirty: 488 kB
Inact_clean: 14840 kB
Inact_target: 10324 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 70192 kB
LowFree: 12684 kB
SwapTotal: 257032 kB
SwapFree: 257032 kB
Committed_AS: 6352 kB</pre>
<p>So 72 MiB RAM, with about 36 MB of swap.</p>
<h4>lspci, /proc/bus/pci/devices & /proc/pci</h4>
<p>PCI device report:</p>
<pre class="capturedOutput">$ /sbin/lspci
00:00.0 Host bridge: Intel Corp. 430FX - 82437FX TSC [Triton I]
00:07.0 ISA bridge: Intel Corp. 82371FB PIIX ISA [Triton I]
00:07.1 IDE interface: Intel Corp. 82371FB PIIX IDE [Triton I]
00:0d.0 VGA compatible controller: S3 Inc. 86c764/765 [Trio32/64/64V+]</pre>
<p>The machine readable <tt>/proc/bus/pci/devices</tt>:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0000 8086122d 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0039 80861230 0 00000000 00000000 00000000 00000000 0000ffa1 00000000 00000000 00000000 00000000 00000000 00000000 00000010 00000000 00000000
0068 53338811 b ff000000 00000000 00000000 00000000 00000000 00000000 00000000 00800000 00000000 00000000 00000000 00000000 00000000 00010000 </pre>
<p>And the obsolete <tt>/proc/pci</tt>, which was how to get PCI in older kernels:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel Corp. 430FX - 82437FX TSC [Triton I] (rev 0).
Master Capable. Latency=66.
Bus 0, device 7, function 0:
ISA bridge: Intel Corp. 82371FB PIIX ISA [Triton I] (rev 0).
Bus 0, device 7, function 1:
IDE interface: Intel Corp. 82371FB PIIX IDE [Triton I] (rev 0).
Master Capable. Latency=66.
I/O at 0xffa0 [0xffaf].
Bus 0, device 13, function 0:
VGA compatible controller: S3 Inc. 86c764/765 [Trio32/64/64V+] (rev 0).
IRQ 11.
Non-prefetchable 32 bit memory at 0xff000000 [0xff7fffff].</pre>
<p>In each case we get details of the same devices, but presented differently. Since the network card is on the ISA bus, we only see the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Linux version 2.4.18-3 (bhcompile@stripples.devel.redhat.com) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 Thu Apr 18 07:31:07 EDT 2002
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 0000000000100000 - 0000000004800000 (usable)
BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
On node 0 totalpages: 18432
zone(0): 4096 pages.
zone(1): 14336 pages.
zone(2): 0 pages.
Kernel command line: ro root=/dev/hda2
Initializing CPU#0
Detected 75.005 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 149.50 BogoMIPS
Memory: 69796k/73728k available (1129k kernel code, 3544k reserved, 791k data, 272k init, 0k highmem)
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
CPU: Before vendor init, caps: 0000013b 00000000 00000000, vendor = 0
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After vendor init, caps: 0000013b 00000000 00000000 00000000
CPU: After generic, caps: 0000013b 00000000 00000000 00000000
CPU: Common caps: 0000013b 00000000 00000000 00000000
CPU: Intel Pentium 75 - 200 stepping 04
Checking 'hlt' instruction... OK.
Checking for popad bug... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
mtrr: detected mtrr type: none
PCI: PCI BIOS revision 2.10 entry at 0xfca21, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
Limiting direct PCI/PCI transfers.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
apm: BIOS version 1.1 Flags 0x03 (Driver version 1.16)
Starting kswapd
VFS: Diskquotas version dquot_6.5.0 initialized
pty: 512 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
Real Time Clock Driver v1.10e
block: 128 slots per queue, batch=32
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX: IDE controller on PCI bus 00 dev 38
PIIX: chipset revision 0
PIIX: not 100% native mode: will probe irqs later
PIIX: neither IDE port enabled (BIOS)
PIIX: IDE controller on PCI bus 00 dev 39
PIIX: chipset revision 0
PIIX: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
hda: PCemHD, ATA DISK drive
hdc: PCemCD, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
blk: queue c0353d44, I/O limit 4095Mb (mask 0xffffffff)
hda: 8388576 sectors (4295 MB) w/256KiB Cache, CHS=522/255/63
ide-floppy driver 0.99.newide
Partition check:
hda: hda1 hda2 hda3
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
ide-floppy driver 0.99.newide
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 120k freed
VFS: Mounted root (ext2 filesystem).
Journalled Block Device driver loaded
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Freeing unused kernel memory: 272k freed
Adding Swap: 257032k swap-space (priority -1)
EXT3 FS 2.4-0.9.17, 10 Jan 2002 on ide0(3,2), internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.17, 10 Jan 2002 on ide0(3,1), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
ide-floppy driver 0.99.newide
hdc: ATAPI 24X CD-ROM drive, 0kB Cache, DMA
Uniform CD-ROM driver Revision: 3.12
hdc: DMA disabled
parport0: PC-style at 0x3bc [PCSPP]
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
Last modified Nov 1, 2000 by Paul Gortmaker
NE*000 ethercard probe at 0x300: ac de 48 88 bb aa
eth0: NE2000 found at 0x300, using IRQ 10.</pre>
<p>Here we see the results of hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="benchmarks">Benchmark</a></h3>
<p>Since we have some information from an equivalent physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>), let's see how well the emulated system matches up let's run some benchmarks...</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a> and our <a href="https://boxes-of-tat.blogspot.com/p/bogomips-results.html">BogoMips Results</a>).</p>
<p>PCem system: Linux 2.4.18, RedHat Linux 7.3 (Valhalla) for x86:</p>
<pre class="capturedOutput">Calibrating delay loop... 149.50 BogoMIPS</pre>
<p>Comparing our physical system and the emulated system:</p>
<table border="1">
<thead>
<tr><th colspan="2">Linux</th><th><a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a></th><th>PCem</th></tr>
</thead>
<tbody>
<tr><th>Distribution</th><th>Kernel</th><th>BogoMips</th><th>BogoMips</th></tr>
<tr><th>Slackware Linux 3.0</th><td>Linux 1.2.13</td><td align="right" style="white-space: nowrap;"><span style="white-space: normal;">29.80</span></td><td align="right" style="white-space: nowrap;">74.98</td></tr>
<tr><th>RedHat Linux 5.2 (Apollo)</th><td>Linux 2.0.36</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>RedHat Linux 6.2 (Zoot)</th><td>Linux 2.2.14</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>Mandrake Linux 7.2 (Odyssey)</th><td>Linux 2.2.17</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">149.50</td></tr>
<tr><th>RedHat Linux 7.3 (Valhalla)</th><td>Linux 2.4.18</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">149.50</td></tr>
</tbody>
</table>
<p>For the Linux 2.4 kernel used in RedHat Linux 7.3, the BogoMips results for the PCem system and our physical system are both around double CPU clock. This is in line with the expected value for the Intel Pentium 75 processor of around 150.0 (75 * 1.99 = 149.25).</p>
<h4 style="text-align: left;"><a name="openssl">OpenSSL</a></h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Note: old versions of OpenSSL <em>are not recommended</em> for actual use. If you want to run comparisons like this, and thus need to use an old release, see the OpenSSL site for back to 0.9.6, for even older releases back to 0.9.1 see <a href="http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/">http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/</a>.</p>
<p><a name="openssl_rh73"><b>RedHat Linux 7.3 (Valhalla) for x86</b></a>, with packaged OpenSSL 0.9.6b [engine]</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 0.9.6b [engine] 9 Jul 2001</pre>
<p>Let's seen how MD5 and RSA do:</p>
<pre class="capturedOutput">$ openssl speed md5 rsa
Doing md5 for 3s on 8 size blocks: 174967 md5's in 2.98s
Doing md5 for 3s on 64 size blocks: 114068 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 52933 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 16832 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 2286 md5's in 3.00s
Doing 512 bit private rsa's for 10s: 206 512 bit private RSA's in 10.01s
Doing 512 bit public rsa's for 10s: 2276 512 bit public RSA's in 9.97s
Doing 1024 bit private rsa's for 10s: 37 1024 bit private RSA's in 10.13s
Doing 1024 bit public rsa's for 10s: 663 1024 bit public RSA's in 10.00s
Doing 2048 bit private rsa's for 10s: 6 2048 bit private RSA's in 10.94s
Doing 2048 bit public rsa's for 10s: 178 2048 bit public RSA's in 10.04s
Doing 4096 bit private rsa's for 10s: 1 4096 bit private RSA's in 13.27s
Doing 4096 bit public rsa's for 10s: 46 4096 bit public RSA's in 10.05s
OpenSSL 0.9.6b [engine] 9 Jul 2001
built on: Thu Apr 4 12:18:55 EST 2002
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) blowfish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_MDC2 -DNO_RC5 -DL_ENDIAN -DTERMIO -O2 -march=i386 -mcpu=i686 -Wall
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 469.71k 2433.45k 4516.95k 5745.32k 6242.30k
sign verify sign/s verify/s
rsa 512 bits 0.0486s 0.0044s 20.6 228.3
rsa 1024 bits 0.2738s 0.0151s 3.7 66.3
rsa 2048 bits 1.8233s 0.0564s 0.5 17.7
rsa 4096 bits 13.2700s 0.2185s 0.1 4.6</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 6,242.30k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.1</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 4.6</li>
</ul>
<p>So how does this compare to <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>?</p>
<p><b>OpenSSL results</b> from tilia:</p>
<table border="1">
<tbody>
<tr><th>OS</th><th>OpenSSL<br /> Version</th><th>MD5<br /> 8,192 bytes</th><th>RSA<br /> 4,096 bytes<br /> sign/s</th><th>RSA<br /> 4,096 bytes<br /> verify/s</th></tr>
<tr><td>Linux 2.0.36 <br />RedHat Linux 5.2 <br />x86</td><td>0.9.2b <br />22 Mar 1999</td><td align="right" style="white-space: nowrap;">12,391.77k</td><td align="right">0.2</td><td align="right">11.2</td></tr>
<tr><td>Linux 2.2.14 <br />RedHat Linux 6.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,454.57k</td><td align="right">0.2</td><td align="right">11.1</td></tr>
<tr><td>Linux 2.2.17 <br />Mandrake Linux 7.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,208.81k</td><td align="right">0.2</td><td align="right">10.8</td></tr>
<tr><td>Linux 2.4.18 <br />RedHat Linux 7.3 <br />x86</td><td>0.9.6b [engine] <br />9 Jul 2001</td><td align="right" style="white-space: nowrap;">6,075.73k</td><td align="right">0.1</td><td align="right">4.5</td></tr>
</tbody>
</table>
<p>Note that the OpenSSL binaries used for RedHat Linux 5.2 and 6.2 have been compiled from source and used i486 optimizations. The Mandrake Linux 7.2 supplied OpenSSL is targeted at i586 (Pentium class) processors. The RedHat Linux 7.3 OpenSSL binaries are from the distribution supplied package which was built with the assembler implementations disabled and targeting i386 systems with i686 optimized code.</p>
<p>Comparing the Red Hat Linux 7.3 supplied OpenSLL results it seems that the PCem system has slightly better performance (approx. +3% for MD5), than the physical hardware in tilia.</p>
<p>For reference, a full run of all the methods provided by the system OpenSSL 0.9.6b [engine] on this PCem system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 0.9.6b [engine] 9 Jul 2001
built on: Thu Apr 4 12:18:55 EST 2002
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) blowfish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_MDC2 -DNO_RC5 -DL_ENDIAN -DTERMIO -O2 -march=i386 -mcpu=i686 -Wall
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 64.81k 185.51k 254.21k 279.89k 288.49k
mdc2 0.00 0.00 0.00 0.00 0.00
md4 649.10k 3788.82k 7757.48k 10505.90k 11717.29k
md5 471.47k 2429.99k 4517.12k 5745.32k 6242.30k
hmac(md5) 196.89k 1281.13k 3186.94k 5071.87k 6130.35k
sha1 281.73k 1137.60k 1808.04k 2120.36k 2233.69k
rmd160 232.70k 1051.84k 1787.56k 2166.10k 2310.14k
rc4 2310.19k 2662.12k 2706.94k 2717.70k 2722.47k
des cbc 496.10k 552.04k 558.85k 559.45k 562.52k
des ede3 199.53k 208.68k 209.75k 209.92k 210.26k
idea cbc 0.00 0.00 0.00 0.00 0.00
rc2 cbc 400.89k 443.69k 448.94k 449.54k 450.56k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 970.00k 1232.38k 1269.50k 1278.98k 1283.41k
cast cbc 667.15k 781.91k 796.67k 800.43k 802.82k
sign verify sign/s verify/s
rsa 512 bits 0.0485s 0.0044s 20.6 227.9
rsa 1024 bits 0.2738s 0.0151s 3.7 66.2
rsa 2048 bits 1.8233s 0.0564s 0.5 17.7
rsa 4096 bits 13.2800s 0.2185s 0.1 4.6
sign verify sign/s verify/s
dsa 512 bits 0.0447s 0.0557s 22.4 18.0
dsa 1024 bits 0.1501s 0.1933s 6.7 5.2
dsa 2048 bits 0.5583s 0.7013s 1.8 1.4</pre>
<p>Checking the performance with a locally compiled OpenSSL 0.9.6b using default options, which uses the assembler code and i486 optimizations, on the PCem system gives:</p>
<pre class="capturedOutput">OpenSSL 0.9.6b 9 Jul 2001
built on: Sat Apr 16 21:12:50 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 58.55k 165.55k 225.02k 246.86k 254.98k
mdc2 135.05k 140.05k 140.63k 140.63k 141.05k
md4 715.63k 3994.58k 8067.33k 10824.70k 12025.86k
md5 759.70k 4322.71k 8890.97k 12080.13k 13497.69k
hmac(md5) 291.26k 2016.51k 5598.81k 10068.99k 13129.05k
sha1 462.23k 2256.85k 4095.49k 5141.85k 5559.64k
rmd160 373.73k 1760.83k 3097.51k 3822.93k 4104.19k
rc4 5811.18k 8583.64k 9046.61k 9167.87k 9207.81k
des cbc 1392.04k 1560.66k 1581.31k 1586.52k 1589.25k
des ede3 531.14k 559.08k 562.26k 563.20k 563.37k
idea cbc 478.94k 516.69k 520.96k 522.24k 522.55k
rc2 cbc 388.72k 415.23k 418.30k 419.16k 419.13k
rc5-32/12 cbc 3413.06k 5011.03k 5220.78k 5275.31k 5292.03k
blowfish cbc 2580.45k 3195.22k 3279.19k 3300.35k 3309.57k
cast cbc 2254.75k 2716.74k 2777.26k 2792.45k 2798.93k
sign verify sign/s verify/s
rsa 512 bits 0.0263s 0.0023s 38.0 434.3
rsa 1024 bits 0.1388s 0.0072s 7.2 138.3
rsa 2048 bits 0.8550s 0.0250s 1.2 40.1
rsa 4096 bits 5.7950s 0.0904s 0.2 11.1
sign verify sign/s verify/s
dsa 512 bits 0.0237s 0.0284s 42.1 35.3
dsa 1024 bits 0.0713s 0.0871s 14.0 11.5
dsa 2048 bits 0.2433s 0.2953s 4.1 3.4</pre>
<p>Showing the difference the assembler makes. Presumably Red Hat had found compatibility or security issues that led to them disabling this option.</p>
<h4 style="text-align: left;"><a name="thoughts">Thoughts</a></h4>
<p>PCem works well for getting a reasonably close match to old hardware, the slight difference in performance is not going to be an issue in most cases.</p>
<h4 style="text-align: left;"><a name="further_references">Further Sources</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-43068009800675851102022-05-23T13:42:00.002+01:002022-05-27T16:36:23.632+01:00Linux for PowerPC on QEMU (g3beige) - System Information<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4ATrr2e5R6PAzjx9us40lAAF66HqFeeE7OtBo_ZZI2XSvMfBquKvhY0-kkeZuZohk_aZXmdUOLmk27sjYPWzgEU4gsWRHafXSm8n7srGqMiw633Tw3NVgMc1c0Za4_Q9y5pVsXv9QjvmjiSQZ_NHCBv_IBSXBCYl75kVavAAkdYOszdIkLtE3d74a/s1036/QEMU_DebianLinux8_g3beige_desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="QEMU g3beige running Debian Linux 8 with XFCE desktop" border="0" data-original-height="829" data-original-width="1036" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4ATrr2e5R6PAzjx9us40lAAF66HqFeeE7OtBo_ZZI2XSvMfBquKvhY0-kkeZuZohk_aZXmdUOLmk27sjYPWzgEU4gsWRHafXSm8n7srGqMiw633Tw3NVgMc1c0Za4_Q9y5pVsXv9QjvmjiSQZ_NHCBv_IBSXBCYl75kVavAAkdYOszdIkLtE3d74a/s320/QEMU_DebianLinux8_g3beige_desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">QEMU & Linux for PowerPC</h3>
<p>A recent post (see <a href="https://boxes-of-tat.blogspot.com/2022/05/linux-for-powerpc-on-qemu-mac99-system.html">Linux for PowerPC on QEMU (mac99) - System Information</a>) looked at Linux on QEMU's 'mac99' machine, an emulation of an Apple PowerMac G4 (AGP Graphics). But what about QEMU's other Power Macintosh system?</p>
<h3 style="text-align: left;">QEMU</h3>
<p>QEMU provides an emulation of the older, Apple Power Macintosh G3 ("beige").</p>
<p>Checking <a href="https://support.apple.com/kb/sp406">Apple Support</a>, <a href="https://everymac.com/systems/apple/powermac_g3/index-powermac-g3.html">EveryMac.com</a>, <a href="https://en.wikipedia.org/wiki/Power_Macintosh_G3">Wikipedia</a> the hardware specification for the 'g3beige' would be:</p>
<table border="1">
<tbody>
<tr><th>System</th><td>Apple Power Macintosh G3 ("beige")</td></tr>
<tr><th>Mac Firmware</th><td>OldWorld</td></tr>
<tr><th>CPU</th><td>PowerPC 750 @ 233, 266, 300, or 333 MHz; upgrade to G4 @ 350 or 400 MHz</td></tr>
<tr><th>RAM</th><td>32, 64 or 128 MiB (768 MiB max.)</td></tr>
<tr><th>Bus</th><td>PCI</td></tr>
<tr><th rowspan="4">Storage</th><td><i>built-in</i> IDE controller; 128GB max. HD</td></tr>
<tr><td><i>built-in</i> SCSI controller</td></tr>
<tr><td>4GB SCSI, 2x 4GB SCSI or 8GB IDE hard disk(s)</td></tr>
<tr><td>24x ATAPI/IDE CD-ROM</td></tr>
<tr><th>Floppy</th><td>3.5" 1.44MB</td></tr>
<tr><th>Video</th><td>ATI 3D Rage II+, ATI 3D Rage Pro, or ATI 3D Rage Pro Turbo, 6 MiB VRAM</td></tr>
<tr><th>Audio</th><td>Whisper or Wings personality card</td></tr>
<tr><th>Network</th><td><i>built-in</i> RTL-8029(AS) 10 Mb/s 10baseT ethernet</td></tr>
<tr><th>Keyboard & Mouse</th><td>ADB</td></tr>
</tbody>
</table>
<p>Third-party processor upgrades offered higher spec. G3 and G4 options. Since the emulation will determine the processor speed, we'll go with the default processor.</p>
<h4 style="text-align: left;">Emulation Command</h4>
<p>For reference the QEMU command used:</p>
<pre class="capturedOutput">qemu-system-ppc \
--machine g3beige \
-hda hda_DebianLinux_g3beige.qcow2 \
-cdrom debian-8.11.0-powerpc-DVD-1.iso \
-g 1024x768x8 \
-net nic \
-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \
-kernel vmlinux-3.16.0-6-powerpc \
-initrd initrd.img-3.16.0-6-powerpc \
-append 'root=/dev/sda3' \
-name 'Debian Linux 8 (jessie) on Power Macintosh G3 (Beige)'</pre>
<p>Note that due to issues with the boot loader, a kernel and ramdisk extracted from the installed system are used to start the system.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;"><a name="sysinfo_debian8">System Information - Debian Linux 8 (jessie)</a></h3>
<p>With Debian Linux 8 (jessie) for PowerPC installed, lets see what it has to say about the system.</p>
<p>For details of real hardware systems, if you want to compare, see:</p>
<ul>
<li><a href="https://gist.github.com/tomari/3186021">Beige PowerMac G3</a>: a early revision board with an ATI 3D Rage II+</li>
<li><a href="https://linux.debian.ports.powerpc.narkive.com/iInVLX0W/got-quik-working-with-oldworld-g3-beige-233mhz">got quik working with OldWorld G3 Beige 233MHz</a>: a middle revision board with an ATI 3D Rage Pro</li>
<li><a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=555651">#555651 - installation-reports: Installation Report on oldworld Mac PPC beige G3 233 MHz - Debian Bug report logs</a>: a late revision system</li>
</ul>
<h4 style="text-align: left;">uname & lsb_release</h4>
<p>Operating system release and version information:</p>
<pre class="capturedOutput">$ uname -a
Linux deb8-g3b 3.16.0-6-powerpc #1 Debian 3.16.56-1+deb8u1 (2018-05-08) ppc GNU/Linux</pre>
<p>So a "Linux" kernel, on a node named "deb8-g3b", kernel release "3.16.0-6-powerpc" (a patched 3.16.0 kernel), version "#1 Debian 3.16.56-1+deb8u1 (2018-05-08)", machine type "ppc" for operating system "GNU/Linux".</p>
<p>Distribution information from Linux Standard Base (LSB):</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.11 (jessie)
Release: 8.11
Codename: jessie</pre>
<p>Looking at the Debian release information files:</p>
<pre class="capturedOutput">$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/debian_version
8.11</pre>
<p>Confirmed as a Debian Linux 8 (jessie) distribution.</p>
<h4 style="text-align: left;">/proc/cpuinfo & lscpu</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: ppc
CPU op-mode(s): 32-bit
Byte Order: Big Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Model: Power Macintosh
BogoMIPS: 33.19
L1d cache: 32K
L1i cache: 32K
$ cat /proc/cpuinfo
processor : 0
cpu : 740/750
temperature : 50-126 C (uncalibrated)
clock : 266.000000MHz
revision : 3.1 (pvr 0008 0301)
bogomips : 33.19
timebase : 16596533
platform : PowerMac
model : Power Macintosh
machine : Power Macintosh
motherboard : AAPL,PowerMac G3 MacRISC
detected as : 49 (PowerMac G3 (Silk))
pmac flags : 00000000
pmac-generation : OldWorld
Memory : 128 MB</pre>
<p>As well as the processor there is a bit of information about the system here. Interestingly it identifies as a "PowerMac G3 (Silk)" which suggests the firmware is based on the later revisions of the mainboard, which had OpenFirmware 2.4 and an ATI 3D Rage Pro (Turbo) for the built-in graphics. The earlier revisions of the board firmware identify as:</p>
<pre class="capturedOutput">motherboard : AAPL,Gossamer MacRISC
detected as : 48 (PowerMac G3 (Gossamer))</pre>
<p>With an older firmware revision, and ATI 3D Rage II+ or ATI 3D Rage Pro graphics.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>System memory report:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 122148 kB
MemFree: 44404 kB
MemAvailable: 91832 kB
Buffers: 8844 kB
Cached: 45012 kB
SwapCached: 0 kB
Active: 43824 kB
Inactive: 22800 kB
Active(anon): 12880 kB
Inactive(anon): 4284 kB
Active(file): 30944 kB
Inactive(file): 18516 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 122148 kB
LowFree: 44404 kB
SwapTotal: 358200 kB
SwapFree: 358200 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 12780 kB
Mapped: 14588 kB
Shmem: 4400 kB
Slab: 7120 kB
SReclaimable: 3408 kB
SUnreclaim: 3712 kB
KernelStack: 512 kB
PageTables: 612 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 419272 kB
Committed_AS: 51884 kB
VmallocTotal: 883308 kB
VmallocUsed: 21868 kB
VmallocChunk: 850784 kB</pre>
<p>So we have 128 MiB RAM and about 358 MB of swap.</p>
<h4 style="text-align: left;">lspci</h4>
<p>Report PCI devices:</p>
<pre class="capturedOutput">$ lspci -v
00:00.0 Host bridge: Motorola MPC106 [Grackle] (prog-if 01)
Subsystem: Red Hat, Inc Device 1100
Flags: fast devsel
00:01.0 VGA compatible controller: Device 1234:1111 (rev 02) (prog-if 00 [VGA controller])
Subsystem: Red Hat, Inc Device 1100
Flags: fast devsel
Memory at 80000000 (32-bit, prefetchable) [size=16M]
Memory at 81000000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 81010000 [disabled] [size=64K]
Kernel driver in use: bochs-drm
00:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS)
Subsystem: Red Hat, Inc QEMU Virtual Machine
Flags: fast devsel, IRQ 23
I/O ports at 1000 [size=256]
Expansion ROM at 81040000 [disabled] [size=256K]
Kernel driver in use: ne2k-pci
00:10.0 Unassigned class [ff00]: Apple Inc. Heathrow Mac I/O
Subsystem: Red Hat, Inc Device 1100
Flags: bus master, fast devsel, latency 0
Memory at 81080000 (32-bit, non-prefetchable) [size=512K]
Kernel driver in use: macio</pre>
<p>Leaving aside the generic VGA device in place of the ATI 3D Rage II+/Pro, this looks okay when compared to a real system.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>Report hardware information using commands:</p>
<pre class="capturedOutput">$ report-hw
uname -a: Linux deb8-g3b 3.16.0-6-powerpc #1 Debian 3.16.56-1+deb8u1 (2018-05-08) ppc GNU/Linux
lspci -knn: 00:00.0 Host bridge [0600]: Motorola MPC106 [Grackle] [1057:0002]
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: 00:01.0 VGA compatible controller [0300]: Device [1234:1111] (rev 02)
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: Kernel driver in use: bochs-drm
lspci -knn: 00:02.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8029(AS) [10ec:8029]
lspci -knn: Subsystem: Red Hat, Inc QEMU Virtual Machine [1af4:1100]
lspci -knn: Kernel driver in use: ne2k-pci
lspci -knn: 00:10.0 Unassigned class [ff00]: Apple Inc. Heathrow Mac I/O [106b:0010]
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: Kernel driver in use: macio
usb: No USB information available
lsmod: Module Size Used by
lsmod: uinput 7802 2
lsmod: nfsd 264823 2
lsmod: auth_rpcgss 49048 1 nfsd
lsmod: oid_registry 2255 1 auth_rpcgss
lsmod: nfs_acl 2919 1 nfsd
lsmod: nfs 185328 0
lsmod: lockd 76158 2 nfs,nfsd
lsmod: fscache 42624 1 nfs
lsmod: sunrpc 237002 6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl
lsmod: evdev 11401 2
lsmod: bochs_drm 16809 1
lsmod: ttm 58895 1 bochs_drm
lsmod: drm_kms_helper 43002 1 bochs_drm
lsmod: drm 230603 4 ttm,bochs_drm,drm_kms_helper
lsmod: syscopyarea 2930 1 bochs_drm
lsmod: sysfillrect 3514 1 bochs_drm
lsmod: sysimgblt 1851 1 bochs_drm
lsmod: autofs4 27653 2
lsmod: ext4 474308 2
lsmod: crc16 1143 1 ext4
lsmod: mbcache 6076 1 ext4
lsmod: jbd2 73772 1 ext4
lsmod: sg 22219 0
lsmod: sr_mod 15552 0
lsmod: cdrom 43116 1 sr_mod
lsmod: sd_mod 38704 4
lsmod: crc_t10dif 963 1 sd_mod
lsmod: crct10dif_generic 1401 1
lsmod: crct10dif_common 1220 2 crct10dif_generic,crc_t10dif
lsmod: ne2k_pci 9547 0
lsmod: 8390 12688 1 ne2k_pci
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: /dev/sda3 19912588 710868 18167172 4% /
df: udev 10240 0 10240 0% /dev
df: tmpfs 24432 4396 20036 18% /run
df: tmpfs 61072 0 61072 0% /dev/shm
df: tmpfs 5120 0 5120 0% /run/lock
df: tmpfs 61072 0 61072 0% /sys/fs/cgroup
df: /dev/sda2 242078 27821 201757 13% /boot
free: total used free shared buffers cached
free: Mem: 122148 76184 45964 4400 8436 43776
free: -/+ buffers/cache: 23972 98176
free: Swap: 358200 0 358200
/proc/cmdline: root=/dev/sda3
/proc/cpuinfo: processor : 0
/proc/cpuinfo: cpu : 740/750
/proc/cpuinfo: temperature : 50-126 C (uncalibrated)
/proc/cpuinfo: clock : 266.000000MHz
/proc/cpuinfo: revision : 3.1 (pvr 0008 0301)
/proc/cpuinfo: bogomips : 33.19
/proc/cpuinfo: timebase : 16596533
/proc/cpuinfo: platform : PowerMac
/proc/cpuinfo: model : Power Macintosh
/proc/cpuinfo: machine : Power Macintosh
/proc/cpuinfo: motherboard : AAPL,PowerMac G3 MacRISC
/proc/cpuinfo: detected as : 49 (PowerMac G3 (Silk))
/proc/cpuinfo: pmac flags : 00000000
/proc/cpuinfo: pmac-generation : OldWorld
/proc/cpuinfo: Memory : 128 MB
/proc/ioports: 00000000-007fffff : /pci@80000000
/proc/ioports: 00000000-00000fff : Legacy IO
/proc/ioports: 00001000-000010ff : 0000:00:02.0
/proc/ioports: 00001000-0000101f : ne2k-pci
/proc/iomem: 00000000-07ffffff : System RAM
/proc/iomem: 80000000-8fffffff : /pci@80000000
/proc/iomem: 80000000-80ffffff : 0000:00:01.0
/proc/iomem: 80000000-80ffffff : bochs-drm
/proc/iomem: 81000000-81000fff : 0000:00:01.0
/proc/iomem: 81000000-81000fff : bochs-drm
/proc/iomem: 81010000-8101ffff : 0000:00:01.0
/proc/iomem: 81040000-8107ffff : 0000:00:02.0
/proc/iomem: 81080000-810fffff : 0000:00:10.0
/proc/iomem: 81080000-810fffff : 0.81080000:mac-io
/proc/iomem: 81088b00-81088bff : 0.00020000:ata-3
/proc/iomem: 81088b00-81088bff : pata-macio-dma
/proc/iomem: 81088d00-81088dff : 0.00021000:ata-3
/proc/iomem: 81088d00-81088dff : pata-macio-dma
/proc/iomem: 81093000-81093000 : 0.00013000:ch-b
/proc/iomem: 81093000-81093000 : pmac_zilog
/proc/iomem: 81093010-81093010 : 0.00013000:ch-b
/proc/iomem: 81093010-81093010 : pmac_zilog
/proc/iomem: 81093020-81093020 : 0.00013020:ch-a
/proc/iomem: 81093020-81093020 : pmac_zilog
/proc/iomem: 81093030-81093030 : 0.00013020:ch-a
/proc/iomem: 81093030-81093030 : pmac_zilog
/proc/iomem: 81093040-81093040 : 0.00013000:ch-b
/proc/iomem: 81093040-81093040 : pmac_zilog
/proc/iomem: 81093050-81093050 : 0.00013020:ch-a
/proc/iomem: 81093050-81093050 : pmac_zilog
/proc/iomem: 81096000-81097fff : 0.00016000:via-cuda
/proc/iomem: 810a0000-810a0fff : 0.00020000:ata-3
/proc/iomem: 810a0000-810a0fff : pata-macio
/proc/iomem: 810a1000-810a1fff : 0.00021000:ata-3
/proc/iomem: 810a1000-810a1fff : pata-macio
/proc/iomem: 810e0000-810fffff : 0.00060000:nvram
/proc/iomem: fd000000-fdffffff : /pci@80000000
/proc/iomem: fd0a0000-fd0bffff : Legacy VGA memory
/proc/interrupts: CPU0
/proc/interrupts: 18: 1162 PMAC-PIC 18 Level ADB
/proc/interrupts: 19: 3149 PMAC-PIC 13 Level pata-macio
/proc/interrupts: 20: 0 PMAC-PIC 20 Level NMI - XMON
/proc/interrupts: 22: 907 PMAC-PIC 14 Level pata-macio
/proc/interrupts: 23: 679 PMAC-PIC 23 Level eth0
/proc/interrupts: LOC: 19647 Local timer interrupts for timer event device
/proc/interrupts: LOC: 649 Local timer interrupts for others
/proc/interrupts: SPU: 0 Spurious interrupts
/proc/interrupts: PMI: 0 Performance monitoring interrupts
/proc/interrupts: MCE: 0 Machine check exceptions
/proc/meminfo: MemTotal: 122148 kB
/proc/meminfo: MemFree: 46020 kB
/proc/meminfo: MemAvailable: 91800 kB
/proc/meminfo: Buffers: 8436 kB
/proc/meminfo: Cached: 43776 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 43288 kB
/proc/meminfo: Inactive: 21700 kB
/proc/meminfo: Active(anon): 12892 kB
/proc/meminfo: Inactive(anon): 4280 kB
/proc/meminfo: Active(file): 30396 kB
/proc/meminfo: Inactive(file): 17420 kB
/proc/meminfo: Unevictable: 0 kB
/proc/meminfo: Mlocked: 0 kB
/proc/meminfo: HighTotal: 0 kB
/proc/meminfo: HighFree: 0 kB
/proc/meminfo: LowTotal: 122148 kB
/proc/meminfo: LowFree: 46020 kB
/proc/meminfo: SwapTotal: 358200 kB
/proc/meminfo: SwapFree: 358200 kB
/proc/meminfo: Dirty: 0 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 12800 kB
/proc/meminfo: Mapped: 14660 kB
/proc/meminfo: Shmem: 4400 kB
/proc/meminfo: Slab: 7124 kB
/proc/meminfo: SReclaimable: 3400 kB
/proc/meminfo: SUnreclaim: 3724 kB
/proc/meminfo: KernelStack: 520 kB
/proc/meminfo: PageTables: 640 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 419272 kB
/proc/meminfo: Committed_AS: 51996 kB
/proc/meminfo: VmallocTotal: 883308 kB
/proc/meminfo: VmallocUsed: 21852 kB
/proc/meminfo: VmallocChunk: 850500 kB
/proc/bus/input/devices: I: Bus=0017 Vendor=0001 Product=2202 Version=0100
/proc/bus/input/devices: N: Name="ADB keyboard"
/proc/bus/input/devices: P: Phys=adb2:2.02/input
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=sysrq kbd event0
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=120003
/proc/bus/input/devices: B: KEY=10000 0 0 0 0 0 0 0 0 0 0 feb0ffdf 3cfffff ffffffff fffffffe
/proc/bus/input/devices: B: LED=7
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0017 Vendor=0001 Product=3303 Version=0100
/proc/bus/input/devices: N: Name="ADB mouse"
/proc/bus/input/devices: P: Phys=adb3:3.03/input
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input1
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=mouse0 event1
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=7
/proc/bus/input/devices: B: KEY=70000 0 0 0 0 0 0 0 0
/proc/bus/input/devices: B: REL=3
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0006 Vendor=001f Product=001f Version=0000
/proc/bus/input/devices: N: Name="Mouseemu virtual keyboard"
/proc/bus/input/devices: P: Phys=
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input2
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=sysrq kbd event2
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=100003
/proc/bus/input/devices: B: KEY=1ffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0006 Vendor=001f Product=001e Version=0000
/proc/bus/input/devices: N: Name="Mouseemu virtual mouse"
/proc/bus/input/devices: P: Phys=
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input3
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=mouse1 event3
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=7
/proc/bus/input/devices: B: KEY=70000 0 0 0 0 0 0 0 0
/proc/bus/input/devices: B: REL=103
/proc/bus/input/devices: </pre>
<p>Lots of information about the emulated hardware and the operating system here.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System messages:</p>
<pre class="capturedOutput">$ dmesg
[ 0.000000] Using PowerMac machine description
[ 0.000000] Total memory = 128MB; using 256kB for hash table (at c7fc0000)
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.16.0-6-powerpc (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 Debian 3.16.56-1+deb8u1 (2018-05-08)
[ 0.000000] Found initrd at 0xc19a2000:0xc272964b
[ 0.000000] Found a Heathrow mac-io controller, rev: 0, mapped at 0xff780000
[ 0.000000] PowerMac motherboard: PowerMac G3 (Silk)
[ 0.000000] bootconsole [udbg0] enabled
[ 0.000000] Found Grackle (MPC106) PCI host bridge at 0x0000000080000000. Firmware bus number: 0->0
[ 0.000000] PCI host bridge /pci@80000000 (primary) ranges:
[ 0.000000] IO 0x00000000fe000000..0x00000000fe7fffff -> 0x0000000000000000
[ 0.000000] MEM 0x00000000fd000000..0x00000000fdffffff -> 0x0000000000000000
[ 0.000000] MEM 0x0000000080000000..0x000000008fffffff -> 0x0000000080000000
[ 0.000000] nvram: OF partition at 0x1800
[ 0.000000] nvram: XP partition at 0x1300
[ 0.000000] nvram: NR partition at 0x1400
[ 0.000000] Top of RAM: 0x8000000, Total RAM: 0x8000000
[ 0.000000] Memory hole size: 0MB
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x00000000-0x07ffffff]
[ 0.000000] Normal empty
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00000000-0x07ffffff]
[ 0.000000] On node 0 totalpages: 32768
[ 0.000000] free_area_init_node: node 0, pgdat c07269c8, node_mem_map c08a7000
[ 0.000000] DMA zone: 256 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 32768 pages, LIFO batch:7
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: root=/dev/sda3
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 106872K/131072K available (5164K kernel code, 424K rwdata, 1428K rodata, 404K init, 1403K bss, 24200K reserved, 0K highmem)
[ 0.000000] Kernel virtual memory layout:
[ 0.000000] * 0xfffcf000..0xfffff000 : fixmap
[ 0.000000] * 0xff800000..0xffc00000 : highmem PTEs
[ 0.000000] * 0xfee9b000..0xff800000 : early ioremap
[ 0.000000] * 0xc9000000..0xfee9b000 : vmalloc & ioremap
[ 0.000000] NR_IRQS:512 nr_irqs:512 16
[ 0.000000] irq: Found primary Apple PIC /pci@80000000/mac-io@10 for 64 irqs
[ 0.000000] irq: System has 64 possible interrupts
[ 0.000000] GMT Delta read from XPRAM: 0 minutes, DST: off
[ 0.000000] time_init: decrementer frequency = 16.596533 MHz
[ 0.000000] time_init: processor frequency = 266.000000 MHz
[ 0.000961] clocksource: timebase mult[3c40e888] shift[24] registered
[ 0.001513] clockevent: decrementer mult[43fab9e] shift[32] cpu[0]
[ 0.010809] Console: colour dummy device 80x25
[ 0.011204] console [tty0] enabled
[ 0.011787] bootconsole [udbg0] disabled
[ 0.014943] pid_max: default: 32768 minimum: 301
[ 0.015718] Security Framework initialized
[ 0.020179] AppArmor: AppArmor disabled by boot time parameter
[ 0.020268] Yama: disabled by default; enable with sysctl kernel.yama.*
[ 0.021896] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.021968] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.035171] Initializing cgroup subsys memory
[ 0.035581] Initializing cgroup subsys devices
[ 0.035776] Initializing cgroup subsys freezer
[ 0.035917] Initializing cgroup subsys net_cls
[ 0.036065] Initializing cgroup subsys blkio
[ 0.036180] Initializing cgroup subsys perf_event
[ 0.036340] Initializing cgroup subsys net_prio
[ 0.036923] ftrace: allocating 17989 entries in 53 pages
[ 0.121240] devtmpfs: initialized
[ 0.129501] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.140082] NET: Registered protocol family 16
[ 0.157227] PCI: Probing PCI hardware
[ 0.159278] PCI host bridge to bus 0000:00
[ 0.160068] pci_bus 0000:00: root bus resource [io 0x0000-0x7fffff]
[ 0.160254] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfdffffff] (bus address [0x00000000-0x00ffffff])
[ 0.160397] pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff]
[ 0.161193] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.161526] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
[ 0.163259] pci 0000:00:00.0: [1057:0002] type 00 class 0x060001
[ 0.166524] pci 0000:00:01.0: [1234:1111] type 00 class 0x030000
[ 0.168094] pci 0000:00:01.0: reg 0x10: [mem 0x80000000-0x80ffffff pref]
[ 0.170240] pci 0000:00:01.0: reg 0x18: [mem 0x81000000-0x81000fff]
[ 0.175131] pci 0000:00:01.0: reg 0x30: [mem 0x81010000-0x8101ffff pref]
[ 0.175837] pci 0000:00:02.0: [10ec:8029] type 00 class 0x020000
[ 0.176566] pci 0000:00:02.0: reg 0x10: [io 0x1000-0x10ff]
[ 0.181390] pci 0000:00:02.0: reg 0x30: [mem 0x81040000-0x8107ffff pref]
[ 0.181947] pci 0000:00:10.0: [106b:0010] type 00 class 0xff0000
[ 0.182187] pci 0000:00:10.0: reg 0x10: [mem 0x81080000-0x810fffff]
[ 0.185795] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[ 0.189010] pci_bus 0000:00: resource 4 [io 0x0000-0x7fffff]
[ 0.189056] pci_bus 0000:00: resource 5 [mem 0xfd000000-0xfdffffff]
[ 0.189180] pci_bus 0000:00: resource 6 [mem 0x80000000-0x8fffffff]
[ 0.211371] vgaarb: setting as boot device: PCI:0000:00:01.0
[ 0.211660] vgaarb: device added: PCI:0000:00:01.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.211976] vgaarb: loaded
[ 0.212050] vgaarb: bridge control possible 0000:00:01.0
[ 0.214177] SCSI subsystem initialized
[ 0.215143] libata version 3.00 loaded.
[ 0.225509] Switched to clocksource timebase
[ 0.294449] NET: Registered protocol family 2
[ 0.303201] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.303327] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.303579] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.304620] TCP: reno registered
[ 0.304723] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.304900] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.307088] NET: Registered protocol family 1
[ 0.307802] PCI: CLS 0 bytes, default 32
[ 0.315674] Unpacking initramfs...
[ 1.554190] Freeing initrd memory: 13852K (c19a2000 - c2729000)
[ 1.555534] Thermal assist unit using timers, shrink_timer: 500 jiffies
[ 1.560612] audit: initializing netlink subsys (disabled)
[ 1.562243] audit: type=2000 audit(1624135833.503:1): initialized
[ 1.568405] zbud: loaded
[ 1.569970] VFS: Disk quotas dquot_6.5.2
[ 1.570150] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 1.571749] msgmni has been set to 237
[ 1.593935] alg: No test for stdrng (krng)
[ 1.594330] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 1.595280] io scheduler noop registered
[ 1.595373] io scheduler deadline registered
[ 1.595932] io scheduler cfq registered (default)
[ 1.600923] Using unsupported 1024x768 QEMU,VGA at 80000000, depth=8, pitch=1024
[ 1.614930] Console: switching to colour frame buffer device 128x48
[ 1.619808] fb0: Open Firmware frame buffer device on /pci@80000000/QEMU,VGA@1
[ 1.621158] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 1.625143] pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@kernel.crashing.org>)
[ 1.625585] Serial: MPC52xx PSC UART driver
[ 1.628901] Generic non-volatile memory driver v1.1
[ 1.629564] Linux agpgart interface v0.103
[ 1.631321] MacIO PCI driver attached to Heathrow chipset
[ 1.636621] 0.00013020:ch-a: ttyPZ0 at MMIO 0x81093020 (irq = 16, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.638191] 0.00013000:ch-b: ttyPZ1 at MMIO 0x81093000 (irq = 17, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.644593] Macintosh CUDA driver v0.5 for Unified ADB.
[ 1.651824] adb: starting probe task...
[ 1.683256] adb devices: [2]: 2 2 [3]: 3 3
[ 1.689745] ADB keyboard at 2, handler 1
[ 1.690181] Detected ADB keyboard, type ANSI.
[ 1.692220] input: ADB keyboard as /devices/virtual/input/input0
[ 1.703426] ADB mouse at 3, handler set to 3 (Mouse Systems A3 Mouse, or compatible)
[ 1.707131] input: ADB mouse as /devices/virtual/input/input1
[ 1.707363] adb: finished probe task...
[ 2.670842] pata-macio 0.00020000:ata-3: Activating pata-macio chipset Heathrow ATA, Apple bus ID 0
[ 2.686799] scsi0 : pata_macio
[ 2.691557] ata1: PATA max MWDMA2 irq 19
[ 2.951114] ata1.01: NODEV after polling detection
[ 2.955454] ata1.00: ATA-7: QEMU HARDDISK, 2.5+, max UDMA/100
[ 2.955674] ata1.00: 41943040 sectors, multi 16: LBA48
[ 2.959421] ata1.00: configured for MWDMA2
[ 2.988551] scsi 0:0:0:0: Direct-Access ATA QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[ 3.946353] pata-macio 0.00021000:ata-3: Activating pata-macio chipset Heathrow ATA, Apple bus ID 1
[ 3.967535] scsi1 : pata_macio
[ 3.972663] ata2: PATA max MWDMA2 irq 22
[ 3.986249] mousedev: PS/2 mouse device common for all mice
[ 4.000633] rtc-generic rtc-generic: rtc core: registered rtc-generic as rtc0
[ 4.005099] ledtrig-cpu: registered to indicate activity on CPUs
[ 4.009705] TCP: cubic registered
[ 4.013578] NET: Registered protocol family 10
[ 4.026306] mip6: Mobile IPv6
[ 4.029267] NET: Registered protocol family 17
[ 4.032707] mpls_gso: MPLS GSO support
[ 4.038023] registered taskstats version 1
[ 4.052026] rtc-generic rtc-generic: setting system clock to 2021-06-19 20:50:36 UTC (1624135836)
[ 4.056580] PM: Hibernation image not present or could not be loaded.
[ 4.161240] ata2.01: NODEV after polling detection
[ 4.163126] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 4.172459] ata2.00: configured for MWDMA2
[ 4.201228] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
[ 4.292531] Freeing unused kernel memory: 404K (c0674000 - c06d9000)
[ 4.880467] systemd-udevd[56]: starting version 215
[ 4.945234] random: systemd-udevd: uninitialized urandom read (16 bytes read, 6 bits of entropy available)
[ 5.224244] ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker
[ 5.285099] ne2k-pci 0000:00:02.0 eth0: RealTek RTL-8029 found at 0x1000, IRQ 23, 52:54:00:12:34:56.
[ 5.349073] sd 0:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
[ 5.375886] sd 0:0:0:0: [sda] Write Protect is off
[ 5.378975] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 5.386254] sr0: scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[ 5.389987] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 5.396924] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 5.430839] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 5.475868] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 5.491743] sr 1:0:0:0: Attached scsi generic sg1 type 5
[ 5.509096] sda: [mac] sda1 sda2 sda3 sda4 sda5
[ 5.568858] sd 0:0:0:0: [sda] Attached SCSI disk
[ 6.803525] PM: Starting manual resume from disk
[ 6.806506] PM: Hibernation image partition 8:4 present
[ 6.806558] PM: Looking for hibernation image.
[ 6.813317] PM: Image not found (code -22)
[ 6.813387] PM: Hibernation image not present or could not be loaded.
[ 7.782707] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)
[ 8.708596] random: nonblocking pool is initialized
[ 8.771201] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[ 8.781150] systemd[1]: Detected architecture 'ppc'.
[ 8.916497] systemd[1]: Inserted module 'autofs4'
[ 8.930955] systemd[1]: Set hostname to <deb8-g3b>.
[ 8.976160] systemd[1]: /etc/mtab is not a symlink or not pointing to /proc/self/mounts. This is not supported anymore. Please make sure to replace this file by a symlink to avoid incorrect or misleading mount(8) output.
[ 10.346644] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
[ 10.378259] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[ 10.384402] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 10.394152] systemd[1]: Starting Remote File Systems (Pre).
[ 10.407937] systemd[1]: Reached target Remote File Systems (Pre).
[ 10.412870] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[ 10.416739] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 10.426232] systemd[1]: Starting Paths.
[ 10.434311] systemd[1]: Reached target Paths.
[ 10.443020] systemd[1]: Starting Encrypted Volumes.
[ 10.450577] systemd[1]: Reached target Encrypted Volumes.
[ 10.458411] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
[ 10.475434] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 10.480375] systemd[1]: Expecting device dev-disk-by\x2duuid-b4bbba30\x2d4b99\x2d4139\x2dbb3f\x2d03213722c8ca.device...
[ 10.492270] systemd[1]: Expecting device dev-disk-by\x2duuid-ae4edcd7\x2d6ef8\x2d4ced\x2da812\x2dc6ab8ec4d54f.device...
[ 10.500950] systemd[1]: Starting Root Slice.
[ 10.516686] systemd[1]: Created slice Root Slice.
[ 10.520115] systemd[1]: Starting User and Session Slice.
[ 10.532420] systemd[1]: Created slice User and Session Slice.
[ 10.535682] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ 10.553033] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 10.561127] systemd[1]: Starting Delayed Shutdown Socket.
[ 10.570280] systemd[1]: Listening on Delayed Shutdown Socket.
[ 10.579938] systemd[1]: Starting Journal Socket (/dev/log).
[ 10.588555] systemd[1]: Listening on Journal Socket (/dev/log).
[ 10.596990] systemd[1]: Starting udev Control Socket.
[ 10.605490] systemd[1]: Listening on udev Control Socket.
[ 10.616776] systemd[1]: Starting udev Kernel Socket.
[ 10.624534] systemd[1]: Listening on udev Kernel Socket.
[ 10.633905] systemd[1]: Starting Journal Socket.
[ 10.642351] systemd[1]: Listening on Journal Socket.
[ 10.650199] systemd[1]: Starting System Slice.
[ 10.657748] systemd[1]: Created slice System Slice.
[ 10.665136] systemd[1]: Started File System Check on Root Device.
[ 10.668424] systemd[1]: Starting system-systemd\x2dfsck.slice.
[ 10.681340] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 10.684552] systemd[1]: Starting system-getty.slice.
[ 10.692386] systemd[1]: Created slice system-getty.slice.
[ 10.699453] systemd[1]: Starting Increase datagram queue length...
[ 10.749195] systemd[1]: Mounting POSIX Message Queue File System...
[ 10.819339] systemd[1]: Starting udev Coldplug all Devices...
[ 10.913667] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[ 11.042552] systemd[1]: Started Set Up Additional Binary Formats.
[ 11.090417] systemd[1]: Starting Load Kernel Modules...
[ 11.194695] systemd[1]: Mounted Huge Pages File System.
[ 11.227165] systemd[1]: Mounting Debug File System...
[ 11.337252] systemd[1]: Starting Slices.
[ 11.437379] systemd[1]: Reached target Slices.
[ 11.550394] systemd[1]: Mounted POSIX Message Queue File System.
[ 11.697973] systemd[1]: Started Increase datagram queue length.
[ 11.886474] systemd[1]: Started Create list of required static device nodes for the current kernel.
[ 11.978177] systemd[1]: Started Load Kernel Modules.
[ 12.053488] systemd[1]: Mounted Debug File System.
[ 12.516729] systemd[1]: Started udev Coldplug all Devices.
[ 12.650223] systemd[1]: Mounted FUSE Control File System.
[ 12.654096] systemd[1]: Mounted Configuration File System.
[ 12.656719] systemd[1]: Starting Apply Kernel Variables...
[ 12.686542] systemd[1]: Starting Create Static Device Nodes in /dev...
[ 12.733851] systemd[1]: Starting Syslog Socket.
[ 12.759818] systemd[1]: Listening on Syslog Socket.
[ 12.774010] systemd[1]: Starting Journal Service...
[ 12.905593] systemd[1]: Started Journal Service.
[ 13.618591] systemd-udevd[137]: starting version 215
[ 15.036664] [drm] Initialized drm 1.1.0 20060810
[ 15.366234] checking generic (80000000 c0000) vs hw (80000000 1000000)
[ 15.366297] fb: switching to bochsdrmfb from OFfb QEMU,VGA
[ 15.369610] Console: switching to colour dummy device 80x25
[ 15.467283] [drm] Found bochs VGA, ID 0xb0c5.
[ 15.467377] [drm] Framebuffer size 16384 kB @ 0x80000000, mmio @ 0x81000000.
[ 15.489870] [TTM] Zone kernel: Available graphics memory: 61074 kiB
[ 15.489980] [TTM] Initializing pool allocator
[ 15.757899] Console: switching to colour frame buffer device 128x48
[ 16.017987] bochs-drm 0000:00:01.0: fb0: bochsdrmfb frame buffer device
[ 16.018270] bochs-drm 0000:00:01.0: registered panic notifier
[ 16.018786] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:01.0 on minor 0
[ 17.647076] Adding 358200k swap on /dev/sda4. Priority:-1 extents:1 across:358200k FS
[ 20.107964] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro
[ 20.526336] EXT4-fs (sda2): mounting ext2 file system using the ext4 subsystem
[ 20.544621] EXT4-fs (sda2): mounted filesystem without journal. Opts: (null)
[ 21.552031] systemd-journald[133]: Received request to flush runtime journal from PID 1
[ 32.379695] RPC: Registered named UNIX socket transport module.
[ 32.396658] RPC: Registered udp transport module.
[ 32.407123] RPC: Registered tcp transport module.
[ 32.414957] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 32.811843] FS-Cache: Loaded
[ 32.942085] FS-Cache: Netfs 'nfs' registered for caching
[ 33.182179] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 38.496548] input: Mouseemu virtual keyboard as /devices/virtual/input/input2
[ 38.535855] input: Mouseemu virtual mouse as /devices/virtual/input/input3</pre>
<p>Lots of information about hardware detection and initalization.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing?</p>
<h4 style="text-align: left;"><a name="benchmark_bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). BogoMips is used by the Linux kernel to calibrate a wait loop. The value is obtained at boot, and is reported by '/proc/cpuinfo' and 'lscpu' (see above). Depending on the platform the BogoMips result may also be reported in 'dmesg' along with an indication of the method used to derive the score.</p>
<p>On our emulated 'g3beige' system we get (from <tt>/proc/cpuinfo</tt>):</p>
<pre class="capturedOutput">BogoMIPS: 33.19</pre>
<p>Since the BogoMips score for PowerPC is about twice the processor clock speed, this would suggest that the emulated processor is roughly equivalent to a G3 running at 16 MHz. Which seems way too low for the observed performance.</p>
<p>From the investigation of this issue for the 'mac99' system, we know that during the Linux 2.6 kernels there was a change to the BogoMips calculation on PowerPC that meant is was derived by doubling the timer fequency. Checking some figures for Power Macintosh G3 hardware found online confirms this behaviour:
</p><table border="1">
<tbody>
<tr><th>CPU</th><th>Kernel</th><th>BogoMips</th><th>Source</th></tr>
<tr><td>740/750 @ 233 MHz</td><td>2.6.8</td><td align="right">465.92</td><td><a href="https://linux.debian.ports.powerpc.narkive.com/iInVLX0W/got-quik-working-with-oldworld-g3-beige-233mhz">got quik working with OldWorld G3 Beige 233MHz</a></td></tr>
<tr><td>740/750 @ 300 MHz</td><td>2.6.15</td><td align="right">600.06</td><td><a href="https://www.mail-archive.com/debian-bugs-closed@lists.debian.org/msg296084.html">Bug#379365: marked as done (Semi-successful install with miBoot floppy set and Netinst CD on OldWorld Mac...)</a></td></tr>
<tr><td>740/750 @ 266 MHz</td><td>2.6.26</td><td align="right">33.28</td><td><a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=555651">#555651 - installation-reports: Installation Report on oldworld Mac PPC beige G3 233 MHz - Debian Bug report logs</a></td></tr>
<tr><td>740/750 @ 266 MHz</td><td>2.6.32</td><td align="right">33.41</td><td><a href="https://gist.github.com/tomari/3186021">Beige PowerMac G3</a></td></tr>
</tbody>
</table>
<p>Verifying with install disks for various Debian Linux releases on our QEMU 'mac99' system, so we can get some calculated BogoMips figures:</p>
<table border="1">
<tbody>
<tr><th>Debian Release</th><th>Linux Kernel</th><th>BogoMips Source</th><th>BogoMips Result</th></tr>
<tr><td>3.0r6 <br />(woody)</td><td>2.4.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 1022.36 BogoMIPS</pre></td></tr>
<tr><td>3.1r8 <br />(sarge)</td><td>2.6.8</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 1044.48 BogoMIPS</pre></td></tr>
<tr><td>4.0r9 <br />(etch)</td><td>2.6.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 36.86 BogoMIPS (lpj=73728)</pre></td></tr>
<tr><td>5.0.10 <br />(lenny)</td><td>2.6.26</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 38.65 BogoMIPS (lpj=77312)</pre></td></tr>
<tr><td>6.0.10 <br />(squeeze)</td><td>2.6.32</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 33.20</pre></td></tr>
<tr><td>7.11.0 <br />(wheezy)</td><td>3.2.0</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 33.21</pre></td></tr>
<tr><td>8.11.0 <br />(jessie)</td><td>3.16.0</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 33.19</pre></td></tr>
</tbody>
</table>
<p>Since the older kernels give processor based Bogomips results, we can estimate the equivalent processor clock for these numbers. The PowerPC Bogomips is normally about twice the processor clock, so the little over 1000 results suggest a processor clock of a little over 500 MHz. Which would place this emulated system around the performance of the higher end models of the original Blue&White PowerMac G3 hardware, which is quite a bit beyond the Power Macintosh G3 ("beige") for which the high end model only had a 333 MHz processor.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://www.openssl.org/">OpenSSL</a> cryptographic library provides a tool providing a command-line interface to the library methods and one aspect of this provides a speed test. Since I'm mostly interested in older systems I'm going to focus on the common RSA and MD5 methods.</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 336528 md5's in 2.99s
Doing md5 for 3s on 64 size blocks: 332707 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 277699 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 180009 md5's in 2.99s
Doing md5 for 3s on 8192 size blocks: 39722 md5's in 3.00s
OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 1800.82k 7097.75k 23696.98k 61648.57k 108467.54k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 5458 512 bit private RSA's in 10.00s
Doing 512 bit public rsa's for 10s: 53427 512 bit public RSA's in 9.99s
Doing 1024 bit private rsa's for 10s: 1066 1024 bit private RSA's in 9.98s
Doing 1024 bit public rsa's for 10s: 15852 1024 bit public RSA's in 9.99s
Doing 2048 bit private rsa's for 10s: 132 2048 bit private RSA's in 10.01s
Doing 2048 bit public rsa's for 10s: 5278 2048 bit public RSA's in 9.99s
Doing 4096 bit private rsa's for 10s: 22 4096 bit private RSA's in 10.07s
Doing 4096 bit public rsa's for 10s: 1575 4096 bit public RSA's in 10.00s
OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
sign verify sign/s verify/s
rsa 512 bits 0.001832s 0.000187s 545.8 5348.0
rsa 1024 bits 0.009362s 0.000630s 106.8 1586.8
rsa 2048 bits 0.075833s 0.001893s 13.2 528.3
rsa 4096 bits 0.457727s 0.006349s 2.2 157.5</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 108,467.54k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 2.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 157.5</li>
</ul>
<p>Looking at various compilations of RSA results, this looks to be around the ballpark of the Power Mac G4 (QuickSilver 2002; <a href="https://everymac.com/systems/apple/mac_server_g4/specs/macserver_g4_1ghz_dp_qs.html">EveryMac</a>), which featured two 7455 @ 1.0 GHz processors. Quite a step up from the single 750 @ 333 MHz in the high end model "beige".</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Power_Macintosh_G3">Power Macintosh G3 - Wikipedia</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/PowerPC">Documentation/Platforms/PowerPC - QEMU</a></li>
<li><a href="https://www.emaculation.com/doku.php/ppc-osx-on-qemu-for-osx">Running Qemu-system-ppc with Mac OS/OSX guests in macOS [E-Maculation wiki]</a></li>
</ul>
<hr />
<h3 style="text-align: left;"><a name="supplement_A">Supplemental: OpenSSL 1.0.1t Results</a></h3>
<p>Debian Linux 8 (jessie) for PowerPC provides a build of OpenSSL 1.0.1t:</p>
<pre class="capturedOutput">$ openssl version -a
OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
platform: debian-powerpc
options: bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
OPENSSLDIR: "/usr/lib/ssl"</pre>
<p>From the compile flags this build has been compiled with assembler implementations for SHA-1, SHA-256 and AES.</p>
<h4 style="text-align: left;"><a name="supA_OpenSSL_speed">OpenSSL 1.0.1t speed</a></h4>
<p>For reference a full run of the methods provided by OpenSSL 1.0.1t on this QEMU g3beige system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
mdc2 0.00 0.00 0.00 0.00 0.00
md4 2460.99k 8962.94k 28310.70k 77181.27k 151603.88k
md5 1914.97k 7614.70k 24962.47k 63073.62k 113792.34k
hmac(md5) 2455.40k 9179.09k 29748.06k 70251.52k 119548.40k
sha1 2192.07k 8903.87k 30378.58k 80008.99k 148974.25k
rmd160 1002.20k 3150.38k 6795.26k 9956.01k 11001.86k
rc4 29979.70k 38114.56k 40100.95k 40981.50k 41306.79k
des cbc 9819.27k 11017.57k 11180.03k 11487.57k 11485.13k
des ede3 3377.58k 3648.32k 3725.06k 3740.33k 3771.05k
idea cbc 0.00 0.00 0.00 0.00 0.00
seed cbc 12395.55k 14511.99k 15028.14k 15397.21k 15512.92k
rc2 cbc 12242.20k 14146.53k 14773.08k 14632.62k 14868.48k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 13890.79k 17466.20k 18404.27k 18428.25k 18604.03k
cast cbc 13211.80k 15909.59k 16715.94k 16821.93k 16916.48k
aes-128 cbc 13542.91k 15671.45k 16324.95k 16470.02k 16520.53k
aes-192 cbc 12183.65k 13817.11k 14189.91k 14467.75k 14473.44k
aes-256 cbc 11065.88k 12392.73k 12673.45k 12823.21k 12823.21k
camellia-128 cbc 14438.42k 17089.46k 17712.12k 17744.21k 18057.90k
camellia-192 cbc 12223.59k 14189.63k 14606.59k 14742.19k 14849.37k
camellia-256 cbc 12536.33k 13811.75k 14524.07k 14794.75k 14866.15k
sha256 5721.34k 18142.04k 44209.92k 68814.17k 83004.96k
sha512 645.95k 2626.56k 3808.17k 5329.94k 5950.12k
whirlpool 462.38k 971.71k 1626.62k 1847.28k 2067.11k
aes-128 ige 13003.01k 15025.69k 15797.93k 15961.09k 15925.25k
aes-192 ige 11710.29k 13254.83k 13818.28k 13929.47k 14008.32k
aes-256 ige 10694.71k 12084.86k 12344.58k 12513.28k 12556.50k
ghash 18781.61k 24101.37k 25815.33k 26272.09k 26468.35k
sign verify sign/s verify/s
rsa 512 bits 0.001815s 0.000188s 551.1 5328.7
rsa 1024 bits 0.009016s 0.000648s 110.9 1542.6
rsa 2048 bits 0.075833s 0.001930s 13.2 518.0
rsa 4096 bits 0.462727s 0.006489s 2.2 154.1
sign verify sign/s verify/s
dsa 512 bits 0.002027s 0.001891s 493.3 528.7
dsa 1024 bits 0.007015s 0.007553s 142.5 132.4
dsa 2048 bits 0.020877s 0.022831s 47.9 43.8
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0020s 0.0071s 492.1 141.1
192 bit ecdsa (nistp192) 0.0024s 0.0091s 411.6 109.4
224 bit ecdsa (nistp224) 0.0029s 0.0115s 344.9 86.9
256 bit ecdsa (nistp256) 0.0036s 0.0150s 279.6 66.7
384 bit ecdsa (nistp384) 0.0067s 0.0299s 149.8 33.4
521 bit ecdsa (nistp521) 0.0115s 0.0596s 86.6 16.8
163 bit ecdsa (nistk163) 0.0043s 0.0209s 232.1 47.8
233 bit ecdsa (nistk233) 0.0083s 0.0406s 121.1 24.7
283 bit ecdsa (nistk283) 0.0124s 0.0725s 80.8 13.8
409 bit ecdsa (nistk409) 0.0311s 0.1756s 32.1 5.7
571 bit ecdsa (nistk571) 0.0727s 0.4012s 13.8 2.5
163 bit ecdsa (nistb163) 0.0044s 0.0229s 228.8 43.6
233 bit ecdsa (nistb233) 0.0084s 0.0455s 119.0 22.0
283 bit ecdsa (nistb283) 0.0123s 0.0820s 81.2 12.2
409 bit ecdsa (nistb409) 0.0303s 0.1994s 33.0 5.0
571 bit ecdsa (nistb571) 0.0752s 0.4805s 13.3 2.1
op op/s
160 bit ecdh (secp160r1) 0.0061s 163.7
192 bit ecdh (nistp192) 0.0078s 127.5
224 bit ecdh (nistp224) 0.0101s 99.4
256 bit ecdh (nistp256) 0.0122s 81.7
384 bit ecdh (nistp384) 0.0264s 37.9
521 bit ecdh (nistp521) 0.0515s 19.4
163 bit ecdh (nistk163) 0.0105s 95.0
233 bit ecdh (nistk233) 0.0199s 50.3
283 bit ecdh (nistk283) 0.0352s 28.4
409 bit ecdh (nistk409) 0.0838s 11.9
571 bit ecdh (nistk571) 0.1911s 5.2
163 bit ecdh (nistb163) 0.0113s 88.7
233 bit ecdh (nistb233) 0.0224s 44.7
283 bit ecdh (nistb283) 0.0400s 25.0
409 bit ecdh (nistb409) 0.0957s 10.4
571 bit ecdh (nistb571) 0.2227s 4.5</pre>
<h4 style="text-align: left;"><a name="supA_OpenSSL_speed">OpenSSL 1.0.1t speed</a></h4>
<p>A local build of OpenSSL 1.0.1t with assembler disabled (no-asm), on this QEMU g3beige system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.0.1t 3 May 2016
built on: Sun May 22 07:02:28 2022
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -O3 -Wall
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
mdc2 983.04k 1748.95k 2126.51k 2280.11k 2367.49k
md4 1397.41k 5685.94k 20507.48k 63429.97k 167166.12k
md5 1252.27k 4979.95k 17107.46k 50945.20k 113169.75k
hmac(md5) 2681.57k 9281.97k 31822.34k 74520.58k 128334.94k
sha1 1147.38k 4114.97k 11658.75k 22049.45k 30058.34k
rmd160 726.32k 2457.39k 5938.18k 9412.24k 11296.77k
rc4 30971.24k 36955.70k 38356.02k 39296.26k 39941.46k
des cbc 10059.76k 11219.31k 11430.53k 11536.73k 11520.68k
des ede3 3661.52k 3869.50k 3969.79k 3999.08k 3913.05k
idea cbc 15656.40k 18417.09k 18891.26k 18893.66k 18972.67k
seed cbc 12541.56k 13982.24k 14653.56k 14680.06k 14761.98k
rc2 cbc 12335.89k 14116.26k 14508.03k 14575.62k 14468.88k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 15295.01k 18544.65k 19569.15k 20208.42k 20037.63k
cast cbc 13765.97k 16531.03k 17346.99k 17523.07k 17388.89k
aes-128 cbc 15739.06k 17546.69k 18062.25k 18280.79k 18260.76k
aes-192 cbc 14146.45k 15416.06k 16232.11k 16435.20k 16108.20k
aes-256 cbc 12964.90k 14238.35k 14308.78k 14615.55k 14718.20k
camellia-128 cbc 15989.08k 18386.99k 19166.46k 19275.09k 18427.89k
camellia-192 cbc 13405.85k 15271.83k 15519.66k 15787.01k 15701.79k
camellia-256 cbc 13703.61k 15234.16k 15700.05k 15884.33k 15611.22k
sha256 2959.73k 8276.44k 17104.64k 23297.20k 26113.37k
sha512 647.57k 2555.95k 3970.05k 5676.37k 6438.91k
whirlpool 471.47k 977.94k 1646.79k 1907.37k 2039.81k
aes-128 ige 11964.54k 13741.31k 14642.26k 14737.04k 14236.00k
aes-192 ige 10854.74k 13734.42k 14810.45k 13392.90k 13724.33k
aes-256 ige 10346.65k 12073.98k 13741.63k 12023.47k 12389.03k
ghash 20123.26k 23664.51k 26434.22k 27709.65k 28041.22k
sign verify sign/s verify/s
rsa 512 bits 0.004739s 0.000400s 211.0 2496.9
rsa 1024 bits 0.022545s 0.001006s 44.4 993.8
rsa 2048 bits 0.121325s 0.002961s 8.2 337.7
rsa 4096 bits 0.715000s 0.009441s 1.4 105.9
sign verify sign/s verify/s
dsa 512 bits 0.004017s 0.004448s 248.9 224.8
dsa 1024 bits 0.010010s 0.011753s 99.9 85.1
dsa 2048 bits 0.029296s 0.034757s 34.1 28.8
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0031s 0.0138s 325.6 72.5
192 bit ecdsa (nistp192) 0.0033s 0.0160s 299.5 62.3
224 bit ecdsa (nistp224) 0.0041s 0.0204s 246.8 48.9
256 bit ecdsa (nistp256) 0.0051s 0.0261s 196.3 38.3
384 bit ecdsa (nistp384) 0.0094s 0.0493s 106.8 20.3
521 bit ecdsa (nistp521) 0.0253s 0.1386s 39.6 7.2
163 bit ecdsa (nistk163) 0.0041s 0.0176s 244.3 56.9
233 bit ecdsa (nistk233) 0.0079s 0.0317s 126.1 31.5
283 bit ecdsa (nistk283) 0.0118s 0.0553s 84.4 18.1
409 bit ecdsa (nistk409) 0.0292s 0.1218s 34.3 8.2
571 bit ecdsa (nistk571) 0.0696s 0.2692s 14.4 3.7
163 bit ecdsa (nistb163) 0.0040s 0.0187s 248.3 53.5
233 bit ecdsa (nistb233) 0.0085s 0.0407s 117.4 24.6
283 bit ecdsa (nistb283) 0.0121s 0.0648s 82.9 15.4
409 bit ecdsa (nistb409) 0.0291s 0.1394s 34.3 7.2
571 bit ecdsa (nistb571) 0.0694s 0.3073s 14.4 3.3
op op/s
160 bit ecdh (secp160r1) 0.0117s 85.3
192 bit ecdh (nistp192) 0.0133s 74.9
224 bit ecdh (nistp224) 0.0171s 58.4
256 bit ecdh (nistp256) 0.0212s 47.2
384 bit ecdh (nistp384) 0.0415s 24.1
521 bit ecdh (nistp521) 0.1163s 8.6
163 bit ecdh (nistk163) 0.0087s 114.8
233 bit ecdh (nistk233) 0.0159s 62.9
283 bit ecdh (nistk283) 0.0273s 36.6
409 bit ecdh (nistk409) 0.0602s 16.6
571 bit ecdh (nistk571) 0.1349s 7.4
163 bit ecdh (nistb163) 0.0092s 108.5
233 bit ecdh (nistb233) 0.0172s 58.2
283 bit ecdh (nistb283) 0.0305s 32.8
409 bit ecdh (nistb409) 0.0673s 14.9
571 bit ecdh (nistb571) 0.1526s 6.6</pre>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-14608813327712713782022-05-21T11:26:00.003+01:002022-05-22T05:29:53.673+01:00Mandrake Linux 7.2 (Odyssey) on PCem Pentium 75<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAfQl77UM1uRwttbQ9ApEZl4FmYgzcuTDayQwSUPqNwqXCJ_CTZuz6OQFA3AFghWmBMH8WO-Sesw1UZjcbXBvBhwCNRhpO4QQ1TXuJyj6qrAHZONo-UellJ_0ha_s8q8m9Ob5fkJx7oVzljZjEhLndh-KBL1SkebSwnibkOOBKStU67RXf0FGoTsM_/s802/PCem-Mandrake%207-KDE%20desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="Mandrake Linux 7.2 KDE desktop" border="0" data-original-height="647" data-original-width="802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAfQl77UM1uRwttbQ9ApEZl4FmYgzcuTDayQwSUPqNwqXCJ_CTZuz6OQFA3AFghWmBMH8WO-Sesw1UZjcbXBvBhwCNRhpO4QQ1TXuJyj6qrAHZONo-UellJ_0ha_s8q8m9Ob5fkJx7oVzljZjEhLndh-KBL1SkebSwnibkOOBKStU67RXf0FGoTsM_/s320/PCem-Mandrake%207-KDE%20desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">Mandrake Linux</h3>
<p>Initially established back in 1998, MandrakeSoft (<a href="https://en.wikipedia.org/wiki/Mandriva">Wikipedia</a>) was a commercial Linux vendor known for the Mandrake Linux distribution (<a href="https://en.wikipedia.org/wiki/Mandriva_Linux">Wikipedia</a>), after a merger with the Brazilian Linux distribution Conectiva and a dispute over rights to the "Mandrake" name, the company and their Linux distribution changed name from Mandrake to Mandriva.</p>
<p>Mandrake Linux is notable for many improvements to desktop Linux distributions, including improvements to hardware detection and handing, and the use of a graphical installation process. Mandrake was also a pioneer in optimizing their Intel x86 distribution for Pentium or higher processors.</p>
<p>Mandrake Linux 7.2 was released in 2000, and so was a competitor with Red Hat Linux 6.2, and supported Pentium through early Pentium III systems (the Intel Pentium 4 didn't ship until November that year). So it is suitable for comparing our physical Intel Pentium system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>) and the <a href="https://pcem-emulator.co.uk/">PCem</a> emulated equivalent.</p>
<h3 style="text-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC systems, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our physical system.</p>
<p>Basing our desired system on <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a> and the <a href="https://pcem-emulator.co.uk/">PCem</a> devices, the target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA PCI</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA or 100Mb/s ethernet PCI</td></tr>
</tbody>
</table>
<span><a name='more'></a></span>
<h3 style="text-align: left;">PCem Installation & Configuration</h3>
<p>Since we have the <a href="https://pcem-emulator.co.uk/">PCem</a> installation from the <a href="https://boxes-of-tat.blogspot.com/2022/04/slackware-linux-30-on-pentium-75-with.html">Slackware 3.0 on PCem Pentium 75</a>, where we looked at how an early Slackware behaved on similar configuration, refer to that post of details of the installation of PCem and the configuration of the emulated machine.</p>
<p>For this emulation the only differences are:</p>
<ul>
<li>the name given to the configuration ("Mandrake Linux 7 i430fx Pentium 75")</li>
<li>the file name used for the hard disk image (<tt>Mandrake72-i430fx-P5.img</tt>)</li>
<li>the NE2000 ISA Ethernet card has been swapped for a Realtek RTL8092AS based NE2000 PCI Ethernet card</li>
<li>addition of a Sound Blaster PCI 128 card</li>
</ul>
<h3 style="text-align: left;">Mandrake Linux 7.2 Installation</h3>
<ol>
<li>Fetch the Mandrake Linux 7.2 CD-ROM image from Archive.org (e.g. <a href="https://archive.org/details/mandrake-7.2-i386">https://archive.org/details/mandrake-7.2-i386</a>)</li>
<li>The Mandrake Linux 7.2 CD is bootable and will boot our machine if the option is enabled in the BIOS</li>
<li>So back to PCem...
<ol>
<li>Start/load the machine we created</li>
<li>Use the "CD-ROM">"Image..." menu to insert the CD-ROM ISO</li>
<li>When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB and that we want the CD-ROM to be a boot device.</li>
</ol>
</li>
<li>The Mandrake Linux installer is pretty good, so just follow the prompts.</li>
<ol>
<li>The mouse is a "Mouse Systems - Mouse (serial)"</li>
<li>For the monitor I used "Generic Monitor, 1280x1024 @ 76 Hz"</li>
<li>Remember to "Empty" the CD-ROM drive when the installer reboots the system.</li>
</ol>
<li>Once logged in:</li>
<ol>
<li>To always boot to console rather than into X Windows, edit <tt>/etc/inittab</tt> and set the default 'runlevel' to '3'</li>
</ol>
</ol>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH49b4NwTm-C9Pc_rQ-Bq7Y0RI2PKbDd9R1tRp8I0Or-oJIPw2vTGydcKcW6doFYZqDbZzRZ1k9TfP6BgUmf1-75mkC75wCrnaMTW5hGUqx4zafG2LhZsbEpD5fQn2QAHqKZ75LZvERnduRNinuLZ-1a16MiHUHGDB1ajZteIax59LK6Fd9hnxCt8u/s720/PCem-Mandrake%207-console%20login%20%282%29.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="Mandrake Linux 7.2 console login" border="0" data-original-height="444" data-original-width="720" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH49b4NwTm-C9Pc_rQ-Bq7Y0RI2PKbDd9R1tRp8I0Or-oJIPw2vTGydcKcW6doFYZqDbZzRZ1k9TfP6BgUmf1-75mkC75wCrnaMTW5hGUqx4zafG2LhZsbEpD5fQn2QAHqKZ75LZvERnduRNinuLZ-1a16MiHUHGDB1ajZteIax59LK6Fd9hnxCt8u/s320/PCem-Mandrake%207-console%20login%20%282%29.png" width="320" /></a></div>
<p>With the installation complete and configured we can have a play... to start the desktop we can use the <tt>startx</tt> command.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhScALVqqYRLKnlsTuZ8eiDFlFwrw7muocyYWmn-MiEvVxwtlNZPrrxCvipcHcPHCYm5EEoKYuDHRZcD_IaKV5jIamdMjDJY6rVPVGlPU3j4s156gnpuC8YInJFvXdtXbWLOZJGj1w8jwxxEKgJVpPwLixp_ktLxnAD-zmL95eKYhzRajoD8tFN4qmz/s802/PCem-Mandrake%207-KDE%20startup.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="Mandrake Linux 7.2 KDE startup" border="0" data-original-height="647" data-original-width="802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhScALVqqYRLKnlsTuZ8eiDFlFwrw7muocyYWmn-MiEvVxwtlNZPrrxCvipcHcPHCYm5EEoKYuDHRZcD_IaKV5jIamdMjDJY6rVPVGlPU3j4s156gnpuC8YInJFvXdtXbWLOZJGj1w8jwxxEKgJVpPwLixp_ktLxnAD-zmL95eKYhzRajoD8tFN4qmz/s320/PCem-Mandrake%207-KDE%20startup.png" width="320" /></a></div>
<h3 style="text-align: left;"><a name="sysinfo_rh52">System Information - Mandrake Linux 7.2 (Odyssey)</a></h3>
<p>So what does Mandrake Linux 7.2 (Odyssey) for x86 have to say about this system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-mdk7.home 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i586 unknown</pre>
<p>A "Linux" kernel, on a node named "p-mdk7.home", kernel release "2.2.17-21mdk", version "#1 Thu Oct 5 13:16:08 CEST 2000", on a "i586" machine, processor "unknown"</p>
<p>For details of the Linux distribution, there are the distribution release files:</p>
<pre class="capturedOutput">$ cat /etc/redhat-release
Linux Mandrake release 7.2 (Odyssey) for i586
$ cat /etc/mandrake-release
Linux Mandrake release 7.2 (Odyssey) for i586</pre>
<p>So the Mandrake Linux 7.2 (Odyssey) for i586 (i.e. Pentium class systems). Mandrake Linux was initially based on Red Hat, and so has the Red Hat release file.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200
stepping : 4
cpu MHz : 75.005
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : no
cpuid level : 1
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 149.50</pre>
<p>The CPUID information is consistent with this being a second generation Intel Pentium processor (P54C), which is expected. The BogoMips result is at roughly twice clock, as expected for Linux 2.2.14 and later.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 75071488 47771648 27299840 0 3031040 31739904
Swap: 227041280 0 227041280
MemTotal: 73312 kB
MemFree: 26660 kB
MemShared: 0 kB
Buffers: 2960 kB
Cached: 30996 kB
BigTotal: 0 kB
BigFree: 0 kB
SwapTotal: 221720 kB
SwapFree: 221720 kB</pre>
<p>So 72 MiB RAM, with about 221 MB of swap.</p>
<h4>/proc/bus/pci/devices & /proc/pci</h4>
<p>The machine readable <tt>/proc/bus/pci/devices</tt>:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0000 8086122d 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0039 80861230 0 00000000 00000000 00000000 00000000 0000ffa1 00000000 00000000
0068 53338811 b 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0070 10ec8029 9 0000ff81 00000000 00000000 00000000 00000000 00000000 00000000
0078 12741371 a 0000ff01 00000000 00000000 00000000 00000000 00000000 00000000</pre>
<p>And the obsolete <tt>/proc/pci</tt>, which was how to get PCI in older kernels:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel 82437 (rev 0).
Medium devsel. Master Capable. Latency=66.
Bus 0, device 7, function 0:
ISA bridge: Intel 82371FB PIIX ISA (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. No bursts.
Bus 0, device 7, function 1:
IDE interface: Intel 82371FB PIIX IDE (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=66.
I/O at 0xffa0 [0xffa1].
Bus 0, device 13, function 0:
VGA compatible controller: S3 Inc. Trio32/Trio64 (rev 0).
Medium devsel. IRQ 11.
Bus 0, device 14, function 0:
Ethernet controller: Realtek 8029 (rev 0).
Medium devsel. IRQ 9.
I/O at 0xff80 [0xff81].
Bus 0, device 15, function 0:
Multimedia audio controller: Ensoniq ES1371 (rev 2).
Fast devsel. IRQ 10. Master Capable. No bursts. Min Gnt=12.Max Lat=128.
I/O at 0xff00 [0xff01].</pre>
<p>In each case we get details of the same devices, but presented differently.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Linux version 2.2.17-21mdk (chmou@no.mandrakesoft.com) (gcc version 2.95.3 19991030 (prerelease)) #1 Thu Oct 5 13:16:08 CEST 2000
Detected 75005 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 149.50 BogoMIPS
Memory: 70896k/73728k available (1136k kernel code, 416k reserved, 1152k data, 128k init, 0k bigmem)
Dentry hash table entries: 16384 (order 5, 128k)
Buffer cache hash table entries: 131072 (order 7, 512k)
Page cache hash table entries: 32768 (order 5, 128k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Pentium 75 - 200 stepping 04
Checking 386/387 coupling... OK, FPU using old IRQ 13 error reporting
Checking 'hlt' instruction... OK.
Intel Pentium with F0 0F bug - workaround enabled.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xfca21, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 131072 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
apm: BIOS version 1.1 Flags 0x03 (Driver version 1.13)
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
Uniform Multi-Platform E-IDE driver Revision: 6.30
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX: IDE controller on PCI bus 00 dev 38
PIIX: chipset revision 0
PIIX: not 100% native mode: will probe irqs later
PIIX: neither IDE port enabled (BIOS)
PIIX: IDE controller on PCI bus 00 dev 39
PIIX: chipset revision 0
PIIX: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
hda: PCemHD, ATA DISK drive
hdc: PCemCD, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: PCemHD, 2047MB w/256kB Cache, CHS=520/128/63
hdc: ATAPI 52X CD-ROM drive, 0kB Cache
Uniform CD-ROM driver Revision: 3.11
Floppy drive(s): fd0 is 2.88M
FDC 0 is a post-1991 82077
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
8regs : 82.296 MB/sec
32regs : 64.389 MB/sec
using fastest function: 8regs (82.296 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
hda:hda: lost interrupt
hda1 hda2 < hda5 hda6 >
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 128k freed
Adding Swap: 221720k swap-space (priority -1)
ne2k-pci.c:vpre-1.00e 5/27/99 D. Becker/P. Gortmaker http://cesdis.gsfc.nasa.gov/linux/drivers/ne2k-pci.html
ne2k-pci.c: PCI NE2000 clone 'RealTek RTL-8029' at I/O 0xff80, IRQ 9.
eth0: RealTek RTL-8029 found at 0xff80, IRQ 9, AC:DE:48:88:BB:AA.
parport0: PC-style at 0x3bc [SPP]
parport_probe: failed
parport0: no IEEE-1284 device present.
lp0: using parport0 (polling).
isapnp: No Plug & Play device found
es1371: version v0.22 time 13:20:20 Oct 5 2000
es1371: found chip, vendor id 0x1274 device id 0x1371 revision 0x02
es1371: found es1371 rev 2 at io 0xff00 irq 10
es1371: features: joystick 0x0
PCI: Increasing latency timer of device 00:78 to 64
es1371: codec vendor (0x000000) revision 0 (0x00)
es1371: codec features none
es1371: stereo enhancement: no 3D stereo enhancement
cat uses obsolete /proc/pci interface</pre>
<p>Here we see the results of hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="benchmarks">Benchmark</a></h3>
<p>Since we have some information from an equivalent physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>), let's see how well the emulated system matches up let's run some benchmarks...</p>
<p>Note: the X Windows desktop has a fair amount of overhead, so benchmarking commands have been run from a text console.</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a> and our <a href="https://boxes-of-tat.blogspot.com/p/bogomips-results.html">BogoMips Results</a>).</p>
<p>PCem system: Linux 2.2.17, Mandrake Linux 7.2 (Odyssey) for x86:</p>
<pre class="capturedOutput">Calibrating delay loop... 149.50 BogoMIPS</pre>
<p>Comparing our physical system and the emulated system:</p>
<table border="1">
<thead>
<tr><th colspan="2">Linux</th><th><a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a></th><th>PCem</th></tr>
</thead>
<tbody>
<tr><th>Distribution</th><th>Kernel</th><th>BogoMips</th><th>BogoMips</th></tr>
<tr><th>Slackware Linux 3.0</th><td>Linux 1.2.13</td><td align="right" style="white-space: nowrap;"><span style="white-space: normal;">29.80</span></td><td align="right" style="white-space: nowrap;">74.98</td></tr>
<tr><th>RedHat Linux 5.2 (Apollo)</th><td>Linux 2.0.36</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>RedHat Linux 6.2 (Zoot)</th><td>Linux 2.2.14</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>Mandrake Linux 7.2 (Odyssey)</th><td>Linux 2.2.17</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">149.50</td></tr>
<tr><th>RedHat Linux 7.3 (Valhalla)</th><td>Linux 2.4.18</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">?</td></tr>
</tbody>
</table>
<p>With the Linux 2.2.17 kernel used in Mandrake Linux 7.2 we see the change to BogoMips result scaling, due to a change in CPU cache states before the BogoMips calculation, that gives an approximately double the processor clock result for Pentium and later processors.</p>
<h4 style="text-align: left;"><a name="openssl">OpenSSL</a></h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Note: old versions of OpenSSL <em>are not recommended</em> for actual use. If you want to run comparisons like this, and thus need to use an old release, see the <a href="https://www.openssl.org/">OpenSSL site</a> for back to 0.9.6, for even older releases back to 0.91 see <a href="http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/">http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/</a>.</p>
<p><a name="openssl_rh62"><b>Mandrake Linux 7.2 (Odyssey) for x86</b></a>, , with packaged OpenSSL 0.9.5a</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 0.9.5a 1 Apr 2000</pre>
<p>Let's seen how MD5 and RSA do:</p>
<pre class="capturedOutput">$ openssl speed md5 rsa
Doing md5 for 3s on 8 size blocks: 283971 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 200865 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 103511 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 35330 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 4942 md5's in 3.00s
Doing 512 bit private rsa's for 10s: 423 512 bit private RSA's in 10.00s
Doing 512 bit public rsa's for 10s: 4131 512 bit public RSA's in 10.00s
Doing 1024 bit private rsa's for 10s: 76 1024 bit private RSA's in 10.40s
Doing 1024 bit public rsa's for 10s: 1311 1024 bit public RSA's in 10.00s
Doing 2048 bit private rsa's for 10s: 12 2048 bit private RSA's in 10.80s
Doing 2048 bit public rsa's for 10s: 383 2048 bit public RSA's in 10.20s
Doing 4096 bit private rsa's for 10s: 2 4096 bit private RSA's in 11.60s
Doing 4096 bit public rsa's for 10s: 106 4096 bit public RSA's in 10.30s
OpenSSL 0.9.5a 1 Apr 2000
built on: Sun Oct 1 01:53:22 CEST 2000
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -fPIC -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -pipe -s -march=pentium -ffast-math -fexpensive-optimizations -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 757.26k 4285.12k 8832.94k 12059.31k 13494.95k
sign verify sign/s verify/s
rsa 512 bits 0.0236s 0.0024s 42.3 413.1
rsa 1024 bits 0.1321s 0.0076s 7.6 131.1
rsa 2048 bits 0.8400s 0.0262s 1.2 38.2
rsa 4096 bits 5.8000s 0.0946s 0.2 10.6</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 13,494.95k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 10.6</li>
</ul>
<p>So how does this compare to <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>?</p>
<p><b>OpenSSL results</b> from tilia:</p>
<table border="1">
<tbody>
<tr><th>OS</th><th>OpenSSL<br /> Version</th><th>MD5<br /> 8,192 bytes</th><th>RSA<br /> 4,096 bytes<br /> sign/s</th><th>RSA<br /> 4,096 bytes<br /> verify/s</th></tr>
<tr><td>Linux 2.0.36 <br />RedHat Linux 5.2 <br />x86</td><td>0.9.2b <br />22 Mar 1999</td><td align="right" style="white-space: nowrap;">12,391.77k</td><td align="right">0.2</td><td align="right">11.2</td></tr>
<tr><td>Linux 2.2.14 <br />RedHat Linux 6.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,454.57k</td><td align="right">0.2</td><td align="right">11.1</td></tr>
<tr><td>Linux 2.2.17 <br />Mandrake Linux 7.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,208.81k</td><td align="right">0.2</td><td align="right">10.8</td></tr>
<tr><td>Linux 2.4.18 <br />RedHat Linux 7.3 <br />x86</td><td>0.9.6b [engine] <br />9 Jul 2001</td><td align="right" style="white-space: nowrap;">6,075.73k</td><td align="right">0.1</td><td align="right">4.5</td></tr>
</tbody>
</table>
<p>From these results it seems the PCem system has slightly better performance for MD5 (approx. +10.5%), and slightly worse for RSA (approx. -1.8%), with OpenSSL 0.9.5a on Linux 2.2.17, compared to the physical hardware in tilia.</p>
<h4 style="text-align: left;"><a name="thoughts">Thoughts</a></h4>
<p>PCem works well for getting a reasonably close match to old hardware, the slight difference in performance is not going to be an issue in most cases.</p>
<h4 style="text-align: left;"><a name="further_references">Further Sources</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<hr />
<h3 style="text-align: left;"><a name="supplement_A">Supplemental: OpenSSL 0.9.5a speed</a></h3>
<p>For reference a full run of all the methods provided by OpenSSL 0.9.5a on this PCem system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 0.9.5a 1 Apr 2000
built on: Sun Oct 1 01:53:22 CEST 2000
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -fPIC -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -pipe -s -march=pentium -ffast-math -fexpensive-optimizations -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 61.36k 171.67k 232.36k 255.66k 263.12k
mdc2 139.34k 145.17k 145.92k 146.09k 146.00k
md5 756.72k 4280.92k 8847.62k 12062.38k 13494.95k
hmac(md5) 289.67k 1999.17k 5565.61k 10043.39k 13126.31k
sha1 463.42k 2250.84k 4090.97k 5140.82k 5559.64k
rmd160 373.86k 1754.03k 3093.08k 3821.91k 4101.46k
rc4 5871.13k 8600.02k 9052.59k 9171.63k 9202.35k
des cbc 1409.06k 1570.65k 1590.44k 1595.39k 1597.44k
des ede3 535.73k 559.77k 562.35k 563.20k 563.37k
idea cbc 537.38k 584.92k 590.59k 591.19k 592.55k
rc2 cbc 523.79k 570.30k 575.74k 577.19k 578.90k
rc5-32/12 cbc 3471.27k 5019.82k 5218.05k 5268.82k 5286.57k
blowfish cbc 2614.39k 3202.22k 3281.66k 3301.38k 3309.57k
cast cbc 2284.33k 2720.90k 2779.05k 2793.47k 2796.20k
sign verify sign/s verify/s
rsa 512 bits 0.0237s 0.0024s 42.2 411.6
rsa 1024 bits 0.1322s 0.0076s 7.6 131.7
rsa 2048 bits 0.8400s 0.0261s 1.2 38.3
rsa 4096 bits 5.8000s 0.0944s 0.2 10.6
sign verify sign/s verify/s
dsa 512 bits 0.0240s 0.0290s 41.7 34.5
dsa 1024 bits 0.0716s 0.0877s 14.0 11.4
dsa 2048 bits 0.2433s 0.2947s 4.1 3.4</pre>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-36936781434303467412022-05-20T11:12:00.011+01:002022-05-24T13:52:43.352+01:00Linux for PowerPC on QEMU (mac99) - System Information<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVKFscAXaP69fxjUO7NbZ-JB2YWVPp_VDt9a6ExyglrmYTa12SkxUB5uBLRxeWqbZUHyG4IqeinglyQLk-wAN2KYDNEWp_vtCYdJ3RWMLDD6ZcrFbLaVy2NzQCwH5nnerROasdTJBti29GILzllMTm_n00PK-gsWFDD9I8-MJD4dwHTMYvZ_L1VPWe/s1036/QEMU_DebianLinux8_mac99_desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="QEMU mac99 running Debian Linux 8 - XFCE desktop" border="0" data-original-height="829" data-original-width="1036" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVKFscAXaP69fxjUO7NbZ-JB2YWVPp_VDt9a6ExyglrmYTa12SkxUB5uBLRxeWqbZUHyG4IqeinglyQLk-wAN2KYDNEWp_vtCYdJ3RWMLDD6ZcrFbLaVy2NzQCwH5nnerROasdTJBti29GILzllMTm_n00PK-gsWFDD9I8-MJD4dwHTMYvZ_L1VPWe/s320/QEMU_DebianLinux8_mac99_desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">Linux for PowerPC</h3>
<p>Back in the 1990s <a href="https://www.apple.com/">Apple</a>, <a href="http://www.ibm.com/">IBM</a> and Motorola (<a href="https://en.wikipedia.org/wiki/Motorola">Wikipedia</a>) got together and created the PowerPC architecture (<a href="https://en.wikipedia.org/wiki/PowerPC">Wikipedia</a>), which would be used in IBM's RS/6000 series systems, Apple's Power Macintosh systems and many Motorola products, including desktop computers and embedded processors. Apple's short lived licensing of <a href="https://en.wikipedia.org/wiki/Macintosh_clone">Macintosh clones</a> during the mid-1990s, Microsoft Windows NT supporting PowerPC (alongside Alpha, MIPS, and x86), and Apple supporting <a href="https://www.mklinux.org/">MkLinux</a> development, drove additional interest in the platform and saw production of affordable PowerPC desktop computers.</p>
<p>While IBM would continue development of PowerPC into their 64-bit POWER architecture, Apple had cut-off the Macintosh clone business in 1997, and then Apple switched away from PowerPC in 2006. Leaving a lot of PowerPC based hardware in circulation, with few operating system options remaining.</p>
<p>Linux on PowerPC has a long, and somewhat complex history, with initial work beginning in 1994, the first Linux distributions appearing in 1996, and PowerPC support being integrated in the mainline Linux kernels with Linux 2.2 in 1999. While the PowerPC architecture has been sunset by many distributions, a few remain.</p>
<h4 style="test-align: left;">Debian Linux</h4>
<p><a href="http://www.debian.org/">Debian</a> added support for PowerPC to its Linux distribution in 2000 with the release of Debian GNU/Linux 2.2 (potato), and while official support for 'powerpc' (32-bit PowerPC and 64-bit big-endian PowerPC) ended in 2020 with Debian 8 (jessie), Debian ports continues to make unstable/testing builds for the 'powerpc' architecture, and has official releases for the 64-bit POWER based systems ('ppc64le').</p>
<p>In the interests of simplicity, reproducibility and ease of comparison, I'm going to use Debian Linux 8 (jessie) for PowerPC, since it has a DVD image available, which means the lack of online repositories won't be a problem and we don't have to consider package version variation.</p>
<h3 align="left">QEMU</h3>
<p>The widespread use of PowerPC processors in computers and embedded systems has driven a need for emulators capable of supporting development and testing for those platforms. The <a href="https://www.qemu.org/">QEMU</a> emulator includes a wide range of processor and system emulations for PowerPC processors, making it a excellent options for these roles at minimal cost.</p>
<span><a name='more'></a></span>
<p>The 32-bit PowerPC processors were used in a wide range of systems, so QEMU has a variety of system emulations to choose from:</p>
<pre class="capturedOutput">$ qemu-system-ppc --machine ?
Supported machines are:
40p IBM RS/6000 7020 (40p)
bamboo bamboo
g3beige Heathrow based PowerMAC (default)
mac99 Mac99 based PowerMAC
mpc8544ds mpc8544ds
none empty machine
ppce500 generic paravirt e500 platform
ref405ep ref405ep
sam460ex aCube Sam460ex
taihu taihu
virtex-ml507 Xilinx Virtex ML507 reference design</pre>
<p>For a bit more detail see <a href="#qemu_powerpc_systems">QEMU PowerPC Systems</a>.</p>
<p>The QEMU wiki has a description of how to install various operating systems on the available emulated systems (<a href="https://wiki.qemu.org/Documentation/Platforms/PowerPC">Documentation/Platforms/PowerPC - QEMU</a>), and the 'mac99' system is suggested for Linux, so let's give it a go...</p>
<p>Checking <a href="https://support.apple.com/kb/sp123">Apple Support</a>, <a href="https://everymac.com/systems/apple/powermac_g4/specs/powermac_g4_500.html">EveryMac.com</a>, <a href="https://en.wikipedia.org/wiki/Power_Mac_G4">Wikipedia</a> the hardware specification for the 'mac99' would be:</p>
<table border="1">
<tbody>
<tr><th>System</th><td>Apple Power Mac G4 (AGP Graphics) ("graphite")</td></tr>
<tr><th>Model</th><td>PowerMac3,1</td></tr>
<tr><th>Mac Firmware</th><td>NewWorld</td></tr>
<tr><th>CPU</th><td>PowerPC 7400 @ 350, 400, 450, or 500 MHz, G4</td></tr>
<tr><th>RAM</th><td>64, 128 or 256 MiB (2 GiB max.)</td></tr>
<tr><th>Bus</th><td>PCI (3 slots) with a 2x AGP slot</td></tr>
<tr><th rowspan="3">Storage</th><td><i>built-in</i> IDE controller Ultra ATA/66, max. 128 GB drives</td></tr>
<tr><td>10 to 27 GB IDE hard disk</td></tr>
<tr><td>5x DVD-ROM ATAPI</td></tr>
<tr><th>Video</th><td>ATI Rage 128, ATI Rage 128 Pro, 2x AGP, 16 MiB VRAM</td></tr>
<tr><th>Audio</th><td><i>built-in</i> Screamer</td></tr>
<tr><th>Network</th><td><i>built-in</i> 10 Mb/s 10/100baseT Ethernet</td></tr>
<tr><th>Firewire controller</th><td>400 Mb/s</td></tr>
<tr><th>USB controller</th><td>USB 1.1 (12 Mb/s)</td></tr>
<tr><th>Keyboard & Mouse</th><td>USB</td></tr>
</tbody>
</table>
<p>SCSI was a order option which used a PCI SCSI controller and swapped the IDE hard drive for up to three SCSI drives.</p>
<p>Third-party upgrades were available (see <a href="https://lowendmac.com/ppc/power-mac-g4-upgrade-guide.html">Guide to CPU Upgrades for AGP G4 Power Macs</a>) that used later versions of the forth generation (G4) PowerPC processors and gave higher clocks (e.g. 7455 @ 1.3 GHz and 7447A @ 1.6 GHz). Some processor cards featured dual processors (e.g. <a href="https://everymac.com/upgrade_cards/gigadesigns/g_celerator/g_celerator_g4_1.2_agp_100.html">Giga Designs G-Celerator G4/1.2 Dual AGP/100 (5D-1212G) Specs: EveryMac.com</a>) providing a significant performance boot in operating systems supporting SMP.</p>
<p>While the Power Mac G4 (AGP Graphics) supports dual processors, trying to run the 'mac99' emulation in SMP mode gives:</p>
<pre class="capturedOutput">$ qemu-system-ppc -M mac99 -smp cpus=2
qemu-system-ppc: Invalid SMP CPUs 2. The max CPUs supported by machine 'mac99' is 1</pre>
<p>So the 'mac99' emulated system is uniprocessor only.</p>
<h4 style="text-align: left;">Emulation Command</h4>
<p>blah</p>
<pre class="capturedOutput">qemu-system-ppc \
--machine mac99,via=pmu \
-m 2048M \
-hda hda_DebianLinux_mac99.qcow2 \
-cdrom debian-8.11.0-powerpc-DVD-1.iso \
-net nic \
-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \
-prom-env 'boot-device=hd:,\yaboot' \
-prom-env 'boot-args=conf=hd:,\yaboot.conf' \
-g 1024x768x32 \
-boot c \
-name 'Debian Linux 8 (jessie) on Power Macintosh G4 (AGP)'</pre>
<p>blah</p>
<h3 style="text-align: left;"><a name="sysinfo_debian8">Debian Linux 8 (jessie) - System Information</a></h3>
<p>With Debian Linux 8 (jessie) for PowerPC installed, lets see what it has to say about the system.</p>
<p>For comparison details of real hardware systems running Linux can be found with <a href="https://www.google.com/search?q=%2265+(PowerMac+G4+AGP+Graphics)%22">"65 (PowerMac G4 AGP Graphics)" - Google Search</a>.</p>
<h4 style="text-align: left;">uname & lsb_release</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">$ uname -a
Linux deb8-mac99 3.16.0-6-powerpc #1 Debian 3.16.56-1+deb8u1 (2018-05-08) ppc GNU/Linux</pre>
<p>So a "Linux" kernel, running on a node named "deb8-mac99", kernel release "3.16.0-6-powerpc" (a patched 3.16.0 kernel), kernel version "#1 Debian 3.16.56-1+deb8u1 (2018-05-08))", platform architecture "ppc", for operating system "GNU/Linux".</p>
<p>Distribution information from Linux Standard Base (LSB):</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.11 (jessie)
Release: 8.11
Codename: jessie</pre>
<p>Looking at the Debian release information files:</p>
<pre class="capturedOutput">$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/debian_version
8.11</pre>
<p>Confirmed as a Debian Linux 8 (jessie) distribution.</p>
<h4 style="text-align: left;">lscpu & /proc/cpuinfo</h4>
<p>System processor(s) information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: ppc
CPU op-mode(s): 32-bit
Byte Order: Big Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Model: PowerMac3,1
BogoMIPS: 200.00
L1d cache: 32K
L1i cache: 32K
$ cat /proc/cpuinfo
processor : 0
cpu : 7400, altivec supported
temperature : 50-126 C (uncalibrated)
clock : 900.000000MHz
revision : 2.9 (pvr 000c 0209)
bogomips : 200.00
timebase : 100000000
platform : PowerMac
model : PowerMac3,1
machine : PowerMac3,1
motherboard : PowerMac3,1 MacRISC MacRISC2 Power Macintosh
detected as : 65 (PowerMac G4 AGP Graphics)
pmac flags : 00000004
pmac-generation : NewWorld
Memory : 2048 MB</pre>
<p>As well as the processor there is a bit of information about the system here, confirming this as a Power Mac G4 (AGP Graphics). The claimed processor clock and the BogoMips result look a bit odd (see <a href="#benchmark_bogomips">Benchmark - BogoMips</a>).</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>System memory report:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 2068052 kB
MemFree: 1985756 kB
MemAvailable: 2024860 kB
Buffers: 8092 kB
Cached: 47764 kB
SwapCached: 0 kB
Active: 40252 kB
Inactive: 28240 kB
Active(anon): 12780 kB
Inactive(anon): 5368 kB
Active(file): 27472 kB
Inactive(file): 22872 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 1310720 kB
HighFree: 1265088 kB
LowTotal: 757332 kB
LowFree: 720668 kB
SwapTotal: 358200 kB
SwapFree: 358200 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 12648 kB
Mapped: 16060 kB
Shmem: 5516 kB
Slab: 7824 kB
SReclaimable: 3488 kB
SUnreclaim: 4336 kB
KernelStack: 520 kB
PageTables: 624 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1392224 kB
Committed_AS: 49320 kB
VmallocTotal: 225496 kB
VmallocUsed: 24420 kB
VmallocChunk: 186428 kB</pre>
<p>So we have 2.0 GiB RAM and about 358 MB of swap.</p>
<h4 style="text-align: left;">lspci</h4>
<p>Report PCI devices:</p>
<pre class="capturedOutput">$ lspci -v
00:0b.0 Host bridge: Apple Inc. UniNorth PCI
Subsystem: Red Hat, Inc Device 1100
Flags: fast devsel
00:0c.0 Unassigned class [ff00]: Apple Inc. KeyLargo Mac I/O
Subsystem: Red Hat, Inc Device 1100
Flags: bus master, fast devsel, latency 0
Memory at 80000000 (32-bit, non-prefetchable) [size=512K]
Kernel driver in use: macio
00:0d.0 USB controller: Apple Inc. KeyLargo/Intrepid USB (prog-if 10 [OHCI])
Subsystem: Red Hat, Inc QEMU Virtual Machine
Flags: bus master, fast devsel, latency 0, IRQ 28
Memory at 80080000 (32-bit, non-prefetchable) [size=256]
Kernel driver in use: ohci-pci
00:0e.0 VGA compatible controller: Device 1234:1111 (rev 02) (prog-if 00 [VGA controller])
Subsystem: Red Hat, Inc Device 1100
Flags: fast devsel
Memory at 81000000 (32-bit, prefetchable) [size=16M]
Memory at 82000000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at 82010000 [disabled] [size=64K]
Kernel driver in use: bochs-drm
00:0f.0 Ethernet controller: Apple Inc. UniNorth GMAC (Sun GEM) (rev 01)
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 30
Memory at 82200000 (32-bit, non-prefetchable) [size=2M]
Kernel driver in use: gem</pre>
<p>Leaving aside the generic VGA device in place of the ATI Rage 128 or ATI Rage 128 Pro, this looks okay when compared to a real system (from <a href="https://www.vogons.org/viewtopic.php?p=788226">PowerPC Dynamic Recompiler (patch) - Page 2 \ VOGONS</a>):</p>
<pre class="capturedOutput">0000:10:0b.0 Host bridge: Apple Inc. UniNorth PCI
0000:10:0d.0 PCI bridge: Digital Equipment Corporation DECchip 21154 (rev 05)
0000:11:07.0 Unassigned class [ff00]: Apple Inc. KeyLargo Mac I/O (rev 02)
0000:11:08.0 USB controller: Apple Inc. KeyLargo USB
0000:11:09.0 USB controller: Apple Inc. KeyLargo USB
0000:11:0a.0 FireWire (IEEE 1394): Texas Instruments TSB12LV23 IEEE-1394 Controller
0001:21:0b.0 Host bridge: Apple Inc. UniNorth Internal PCI
0001:21:0f.0 Ethernet controller: Apple Inc. UniNorth GMAC (Sun GEM) (rev 01)
5f08:00:0b.0 Host bridge: Apple Inc. UniNorth AGP
5f08:00:10.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Rage 4 [Rage 128 PRO AGP 4X TMDS]</pre>
<p>The Firewire controller and second USB controller would be nice, but it's understandable that the emulation omits these.</p>
<h4 style="text-align: left;">lsusb</h4>
<p>Report USB devices:</p>
<pre class="capturedOutput">$ lsusb
Bus 001 Device 005: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
$ lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M</pre>
<p>So the root hub and the emulated USB keyboard and mouse.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>Report hardware information using commands:</p>
<pre class="capturedOutput">$ report-hw
uname -a: Linux deb8-mac99 3.16.0-6-powerpc #1 Debian 3.16.56-1+deb8u1 (2018-05-08) ppc GNU/Linux
lspci -knn: 00:0b.0 Host bridge [0600]: Apple Inc. UniNorth PCI [106b:001f]
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: 00:0c.0 Unassigned class [ff00]: Apple Inc. KeyLargo Mac I/O [106b:0022]
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: Kernel driver in use: macio
lspci -knn: 00:0d.0 USB controller [0c03]: Apple Inc. KeyLargo/Intrepid USB [106b:003f]
lspci -knn: Subsystem: Red Hat, Inc QEMU Virtual Machine [1af4:1100]
lspci -knn: Kernel driver in use: ohci-pci
lspci -knn: 00:0e.0 VGA compatible controller [0300]: Device [1234:1111] (rev 02)
lspci -knn: Subsystem: Red Hat, Inc Device [1af4:1100]
lspci -knn: Kernel driver in use: bochs-drm
lspci -knn: 00:0f.0 Ethernet controller [0200]: Apple Inc. UniNorth GMAC (Sun GEM) [106b:0021] (rev 01)
lspci -knn: Kernel driver in use: gem
usb-devices:
usb-devices: T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3
usb-devices: D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
usb-devices: P: Vendor=1d6b ProdID=0001 Rev=03.16
usb-devices: S: Manufacturer=Linux 3.16.0-6-powerpc ohci_hcd
usb-devices: S: Product=OHCI PCI host controller
usb-devices: S: SerialNumber=0000:00:0d.0
usb-devices: C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
usb-devices: I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
usb-devices:
usb-devices: T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
usb-devices: D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
usb-devices: P: Vendor=0627 ProdID=0001 Rev=00.00
usb-devices: S: Manufacturer=QEMU
usb-devices: S: Product=QEMU USB Keyboard
usb-devices: S: SerialNumber=68284-pci.2:0d.0-1
usb-devices: C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
usb-devices: I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
usb-devices:
usb-devices: T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 4 Spd=12 MxCh= 0
usb-devices: D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
usb-devices: P: Vendor=0627 ProdID=0001 Rev=00.00
usb-devices: S: Manufacturer=QEMU
usb-devices: S: Product=QEMU USB Mouse
usb-devices: S: SerialNumber=89126-pci.2:0d.0-2
usb-devices: C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
usb-devices: I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
lsmod: Module Size Used by
lsmod: nls_utf8 1220 0
lsmod: isofs 33608 0
lsmod: udf 87257 0
lsmod: crc_itu_t 1163 1 udf
lsmod: uinput 7802 2
lsmod: nfsd 264823 2
lsmod: auth_rpcgss 49048 1 nfsd
lsmod: oid_registry 2255 1 auth_rpcgss
lsmod: nfs_acl 2919 1 nfsd
lsmod: nfs 185328 0
lsmod: lockd 76158 2 nfs,nfsd
lsmod: fscache 42624 1 nfs
lsmod: sunrpc 237002 6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl
lsmod: bochs_drm 16809 1
lsmod: ttm 58895 1 bochs_drm
lsmod: drm_kms_helper 43002 1 bochs_drm
lsmod: evdev 11401 7
lsmod: drm 230603 4 ttm,bochs_drm,drm_kms_helper
lsmod: syscopyarea 2930 1 bochs_drm
lsmod: sysfillrect 3514 1 bochs_drm
lsmod: sysimgblt 1851 1 bochs_drm
lsmod: autofs4 27653 2
lsmod: ext4 474308 1
lsmod: crc16 1143 1 ext4
lsmod: mbcache 6076 1 ext4
lsmod: jbd2 73772 1 ext4
lsmod: hid_generic 789 0
lsmod: usbhid 43497 0
lsmod: hid 89472 2 hid_generic,usbhid
lsmod: ohci_pci 3908 0
lsmod: ehci_pci 3796 0
lsmod: ohci_hcd 47541 1 ohci_pci
lsmod: ehci_hcd 65950 1 ehci_pci
lsmod: sg 22219 0
lsmod: usbcore 186804 5 ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,usbhid
lsmod: sd_mod 38704 3
lsmod: crc_t10dif 963 1 sd_mod
lsmod: crct10dif_generic 1401 1
lsmod: sungem 28515 0
lsmod: sungem_phy 10726 1 sungem
lsmod: sr_mod 15552 0
lsmod: cdrom 43116 1 sr_mod
lsmod: usb_common 2048 1 usbcore
lsmod: crct10dif_common 1220 2 crct10dif_generic,crc_t10dif
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: /dev/sda3 20157516 821188 18289332 5% /
df: udev 10240 0 10240 0% /dev
df: tmpfs 413612 5516 408096 2% /run
df: tmpfs 1034024 0 1034024 0% /dev/shm
df: tmpfs 5120 0 5120 0% /run/lock
df: tmpfs 1034024 0 1034024 0% /sys/fs/cgroup
free: total used free shared buffers cached
free: Mem: 2068052 209800 1858252 5520 16824 157912
free: -/+ buffers/cache: 35064 2032988
free: Swap: 358200 0 358200
/proc/cmdline: root=UUID=a6bc5a9f-a6bf-484c-87b7-752884dc0b76 ro
/proc/cpuinfo: processor : 0
/proc/cpuinfo: cpu : 7400, altivec supported
/proc/cpuinfo: temperature : 50-126 C (uncalibrated)
/proc/cpuinfo: clock : 900.000000MHz
/proc/cpuinfo: revision : 2.9 (pvr 000c 0209)
/proc/cpuinfo: bogomips : 200.00
/proc/cpuinfo: timebase : 100000000
/proc/cpuinfo: platform : PowerMac
/proc/cpuinfo: model : PowerMac3,1
/proc/cpuinfo: machine : PowerMac3,1
/proc/cpuinfo: motherboard : PowerMac3,1 MacRISC MacRISC2 Power Macintosh
/proc/cpuinfo: detected as : 65 (PowerMac G4 AGP Graphics)
/proc/cpuinfo: pmac flags : 00000004
/proc/cpuinfo: pmac-generation : NewWorld
/proc/cpuinfo: Memory : 2048 MB
/proc/ioports: 00000000-007fffff : /pci@f2000000
/proc/ioports: 00000000-00000fff : Legacy IO
/proc/iomem: 00000000-7fffffff : System RAM
/proc/iomem: 80000000-8fffffff : /pci@f2000000
/proc/iomem: 80000000-8007ffff : 0000:00:0c.0
/proc/iomem: 80000000-8007ffff : 0.80000000:mac-io
/proc/iomem: 80000050-8000007f : 0.00000050:gpio
/proc/iomem: 80008b00-80008bff : 0.00020000:ata-3
/proc/iomem: 80008b00-80008bff : pata-macio-dma
/proc/iomem: 80008d00-80008dff : 0.00021000:ata-3
/proc/iomem: 80008d00-80008dff : pata-macio-dma
/proc/iomem: 80013000-80013000 : 0.00013000:ch-b
/proc/iomem: 80013000-80013000 : pmac_zilog
/proc/iomem: 80013010-80013010 : 0.00013000:ch-b
/proc/iomem: 80013010-80013010 : pmac_zilog
/proc/iomem: 80013020-80013020 : 0.00013020:ch-a
/proc/iomem: 80013020-80013020 : pmac_zilog
/proc/iomem: 80013030-80013030 : 0.00013020:ch-a
/proc/iomem: 80013030-80013030 : pmac_zilog
/proc/iomem: 80013040-80013040 : 0.00013000:ch-b
/proc/iomem: 80013040-80013040 : pmac_zilog
/proc/iomem: 80013050-80013050 : 0.00013020:ch-a
/proc/iomem: 80013050-80013050 : pmac_zilog
/proc/iomem: 80016000-80017fff : 0.00016000:via-pmu
/proc/iomem: 80020000-80020fff : 0.00020000:ata-3
/proc/iomem: 80020000-80020fff : pata-macio
/proc/iomem: 80021000-80021fff : 0.00021000:ata-3
/proc/iomem: 80021000-80021fff : pata-macio
/proc/iomem: 80040000-8007ffff : 0.00040000:interrup
/proc/iomem: 80080000-800800ff : 0000:00:0d.0
/proc/iomem: 80080000-800800ff : ohci_hcd
/proc/iomem: 81000000-81ffffff : 0000:00:0e.0
/proc/iomem: 81000000-81ffffff : bochs-drm
/proc/iomem: 82000000-82000fff : 0000:00:0e.0
/proc/iomem: 82000000-82000fff : bochs-drm
/proc/iomem: 82010000-8201ffff : 0000:00:0e.0
/proc/iomem: 82200000-823fffff : 0000:00:0f.0
/proc/iomem: 82200000-823fffff : sungem
/proc/interrupts: CPU0
/proc/interrupts: 16: 14979 MPIC 1 13 Level pata-macio
/proc/interrupts: 18: 3131 MPIC 1 14 Level pata-macio
/proc/interrupts: 25: 5568 MPIC 1 25 Level VIA-PMU
/proc/interrupts: 28: 102 MPIC 1 28 Level ohci_hcd:usb1
/proc/interrupts: 30: 3387 MPIC 1 30 Level eth0
/proc/interrupts: 47: 2825 MPIC 1 47 Level GPIO1 ADB
/proc/interrupts: 55: 0 MPIC 1 55 Edge NMI - XMON
/proc/interrupts: LOC: 275102 Local timer interrupts for timer event device
/proc/interrupts: LOC: 256 Local timer interrupts for others
/proc/interrupts: SPU: 0 Spurious interrupts
/proc/interrupts: PMI: 0 Performance monitoring interrupts
/proc/interrupts: MCE: 0 Machine check exceptions
/proc/meminfo: MemTotal: 2068052 kB
/proc/meminfo: MemFree: 1858252 kB
/proc/meminfo: MemAvailable: 2020272 kB
/proc/meminfo: Buffers: 16824 kB
/proc/meminfo: Cached: 157912 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 88276 kB
/proc/meminfo: Inactive: 99472 kB
/proc/meminfo: Active(anon): 13160 kB
/proc/meminfo: Inactive(anon): 5368 kB
/proc/meminfo: Active(file): 75116 kB
/proc/meminfo: Inactive(file): 94104 kB
/proc/meminfo: Unevictable: 0 kB
/proc/meminfo: Mlocked: 0 kB
/proc/meminfo: HighTotal: 1310720 kB
/proc/meminfo: HighFree: 1192052 kB
/proc/meminfo: LowTotal: 757332 kB
/proc/meminfo: LowFree: 666200 kB
/proc/meminfo: SwapTotal: 358200 kB
/proc/meminfo: SwapFree: 358200 kB
/proc/meminfo: Dirty: 0 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 13028 kB
/proc/meminfo: Mapped: 16308 kB
/proc/meminfo: Shmem: 5520 kB
/proc/meminfo: Slab: 16048 kB
/proc/meminfo: SReclaimable: 11564 kB
/proc/meminfo: SUnreclaim: 4484 kB
/proc/meminfo: KernelStack: 520 kB
/proc/meminfo: PageTables: 652 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 1392224 kB
/proc/meminfo: Committed_AS: 53236 kB
/proc/meminfo: VmallocTotal: 225496 kB
/proc/meminfo: VmallocUsed: 24616 kB
/proc/meminfo: VmallocChunk: 186044 kB
/proc/bus/input/devices: I: Bus=0019 Vendor=0001 Product=0001 Version=0100
/proc/bus/input/devices: N: Name="PMU"
/proc/bus/input/devices: P: Phys=
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=kbd event0
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=23
/proc/bus/input/devices: B: KEY=100000 0 0 0
/proc/bus/input/devices: B: SW=1
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0003 Vendor=0627 Product=0001 Version=0111
/proc/bus/input/devices: N: Name="QEMU QEMU USB Keyboard"
/proc/bus/input/devices: P: Phys=usb-0000:00:0d.0-1/input0
/proc/bus/input/devices: S: Sysfs=/devices/pci0000:00/0000:00:0d.0/usb1/1-1/1-1:1.0/0003:0627:0001.0001/input/input1
/proc/bus/input/devices: U: Uniq=68284-pci.2:0d.0-1
/proc/bus/input/devices: H: Handlers=sysrq kbd event1
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=120013
/proc/bus/input/devices: B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
/proc/bus/input/devices: B: MSC=10
/proc/bus/input/devices: B: LED=1f
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0003 Vendor=0627 Product=0001 Version=0001
/proc/bus/input/devices: N: Name="QEMU QEMU USB Mouse"
/proc/bus/input/devices: P: Phys=usb-0000:00:0d.0-2/input0
/proc/bus/input/devices: S: Sysfs=/devices/pci0000:00/0000:00:0d.0/usb1/1-2/1-2:1.0/0003:0627:0001.0003/input/input3
/proc/bus/input/devices: U: Uniq=89126-pci.2:0d.0-2
/proc/bus/input/devices: H: Handlers=mouse0 event2
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=17
/proc/bus/input/devices: B: KEY=70000 0 0 0 0 0 0 0 0
/proc/bus/input/devices: B: REL=103
/proc/bus/input/devices: B: MSC=10
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0006 Vendor=001f Product=001f Version=0000
/proc/bus/input/devices: N: Name="Mouseemu virtual keyboard"
/proc/bus/input/devices: P: Phys=
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input4
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=sysrq kbd event3
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=100003
/proc/bus/input/devices: B: KEY=1ffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0006 Vendor=001f Product=001e Version=0000
/proc/bus/input/devices: N: Name="Mouseemu virtual mouse"
/proc/bus/input/devices: P: Phys=
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input5
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=mouse1 event4
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=7
/proc/bus/input/devices: B: KEY=70000 0 0 0 0 0 0 0 0
/proc/bus/input/devices: B: REL=103
/proc/bus/input/devices: </pre>
<p>Lots of information about the emulated hardware and the operating system here.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System messages:</p>
<pre class="capturedOutput">$ dmesg
[ 0.000000] Using PowerMac machine description
[ 0.000000] Total memory = 2048MB; using 4096kB for hash table (at cfc00000)
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.16.0-6-powerpc (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 Debian 3.16.56-1+deb8u1 (2018-05-08)
[ 0.000000] Found initrd at 0xc1600000:0xc2389000
[ 0.000000] Found UniNorth memory controller & host bridge @ 0xf8000000 revision: 0x07
[ 0.000000] Mapped at 0xff7c0000
[ 0.000000] Found a Keylargo mac-io controller, rev: 0, mapped at 0xff740000
[ 0.000000] Processor NAP mode on idle enabled.
[ 0.000000] PowerMac motherboard: PowerMac G4 AGP Graphics
[ 0.000000] bootconsole [udbg0] enabled
[ 0.000000] Found UniNorth PCI host bridge at 0x00000000f2000000. Firmware bus number: 0->0
[ 0.000000] PCI host bridge /pci@f2000000 (primary) ranges:
[ 0.000000] IO 0x00000000f2000000..0x00000000f27fffff -> 0x0000000000000000
[ 0.000000] MEM 0x0000000080000000..0x000000008fffffff -> 0x0000000080000000
[ 0.000000] via-pmu: Server Mode is disabled
[ 0.000000] PMU driver v2 initialized for Core99, firmware: 01
[ 0.000000] nvram: Checking bank 0...
[ 0.000000] Invalid signature
[ 0.000000] Invalid checksum
[ 0.000000] nvram: gen0=0, gen1=0
[ 0.000000] nvram: Active bank is: 0
[ 0.000000] nvram: OF partition at 0xffffffff
[ 0.000000] nvram: XP partition at 0xffffffff
[ 0.000000] nvram: NR partition at 0xffffffff
[ 0.000000] Top of RAM: 0x80000000, Total RAM: 0x80000000
[ 0.000000] Memory hole size: 0MB
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x00000000-0x2fffffff]
[ 0.000000] Normal empty
[ 0.000000] HighMem [mem 0x30000000-0x7fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00000000-0x7fffffff]
[ 0.000000] On node 0 totalpages: 524288
[ 0.000000] free_area_init_node: node 0, pgdat c07269c8, node_mem_map c248e000
[ 0.000000] DMA zone: 1536 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 196608 pages, LIFO batch:31
[ 0.000000] HighMem zone: 2560 pages used for memmap
[ 0.000000] HighMem zone: 327680 pages, LIFO batch:31
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 522752
[ 0.000000] Kernel command line: root=UUID=a6bc5a9f-a6bf-484c-87b7-752884dc0b76 ro
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 2052768K/2097152K available (5164K kernel code, 424K rwdata, 1428K rodata, 404K init, 1403K bss, 44384K reserved, 1310720K highmem)
[ 0.000000] Kernel virtual memory layout:
[ 0.000000] * 0xfffcf000..0xfffff000 : fixmap
[ 0.000000] * 0xff800000..0xffc00000 : highmem PTEs
[ 0.000000] * 0xfec36000..0xff800000 : early ioremap
[ 0.000000] * 0xf1000000..0xfec36000 : vmalloc & ioremap
[ 0.000000] NR_IRQS:512 nr_irqs:512 16
[ 0.000000] mpic: Resetting
[ 0.000000] mpic: Setting up MPIC " MPIC 1 " version 1.2 at 80040000, max 1 CPUs
[ 0.000000] mpic: ISU size: 64, shift: 6, mask: 3f
[ 0.000000] mpic: Initializing for 64 sources
[ 0.000000] GMT Delta read from XPRAM: 0 minutes, DST: on
[ 0.000000] time_init: decrementer frequency = 100.000000 MHz
[ 0.000000] time_init: processor frequency = 900.000000 MHz
[ 0.000832] clocksource: timebase mult[a000000] shift[24] registered
[ 0.001810] clockevent: decrementer mult[1999999a] shift[32] cpu[0]
[ 0.011687] Console: colour dummy device 80x25
[ 0.012101] console [tty0] enabled
[ 0.012854] bootconsole [udbg0] disabled
[ 0.015823] pid_max: default: 32768 minimum: 301
[ 0.016801] Security Framework initialized
[ 0.020970] AppArmor: AppArmor disabled by boot time parameter
[ 0.021052] Yama: disabled by default; enable with sysctl kernel.yama.*
[ 0.022540] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.022604] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.036381] Initializing cgroup subsys memory
[ 0.036906] Initializing cgroup subsys devices
[ 0.037312] Initializing cgroup subsys freezer
[ 0.037457] Initializing cgroup subsys net_cls
[ 0.037664] Initializing cgroup subsys blkio
[ 0.037784] Initializing cgroup subsys perf_event
[ 0.037890] Initializing cgroup subsys net_prio
[ 0.038459] ftrace: allocating 17989 entries in 53 pages
[ 0.127059] devtmpfs: initialized
[ 0.134829] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.145851] NET: Registered protocol family 16
[ 0.154753] PMU i2c /pci@f2000000/mac-io@c/via-pmu@16000
[ 0.154854] channel 1 bus <multibus>
[ 0.154898] channel 2 bus <multibus>
[ 0.161958] PCI: Probing PCI hardware
[ 0.163553] PCI host bridge to bus 0000:00
[ 0.164048] pci_bus 0000:00: root bus resource [io 0x0000-0x7fffff]
[ 0.164316] pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff]
[ 0.164679] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.164949] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to ff
[ 0.166144] pci 0000:00:0b.0: [106b:001f] type 00 class 0x060000
[ 0.168986] pci 0000:00:0c.0: [106b:0022] type 00 class 0xff0000
[ 0.170029] pci 0000:00:0c.0: reg 0x10: [mem 0x80000000-0x8007ffff]
[ 0.174194] pci 0000:00:0d.0: [106b:003f] type 00 class 0x0c0310
[ 0.174733] pci 0000:00:0d.0: reg 0x10: [mem 0x80080000-0x800800ff]
[ 0.177995] pci 0000:00:0e.0: [1234:1111] type 00 class 0x030000
[ 0.179585] pci 0000:00:0e.0: reg 0x10: [mem 0x81000000-0x81ffffff pref]
[ 0.181811] pci 0000:00:0e.0: reg 0x18: [mem 0x82000000-0x82000fff]
[ 0.186015] pci 0000:00:0e.0: reg 0x30: [mem 0x82010000-0x8201ffff pref]
[ 0.186614] pci 0000:00:0f.0: [106b:0021] type 00 class 0x020000
[ 0.187200] pci 0000:00:0f.0: reg 0x10: [mem 0x82200000-0x823fffff]
[ 0.191756] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[ 0.196897] pci_bus 0000:00: resource 4 [io 0x0000-0x7fffff]
[ 0.196941] pci_bus 0000:00: resource 5 [mem 0x80000000-0x8fffffff]
[ 0.218773] vgaarb: setting as boot device: PCI:0000:00:0e.0
[ 0.218952] vgaarb: device added: PCI:0000:00:0e.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.219071] vgaarb: loaded
[ 0.219136] vgaarb: bridge control possible 0000:00:0e.0
[ 0.221072] SCSI subsystem initialized
[ 0.222042] libata version 3.00 loaded.
[ 0.232487] Switched to clocksource timebase
[ 0.299347] NET: Registered protocol family 2
[ 0.307715] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.307974] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.308730] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.311055] TCP: reno registered
[ 0.311159] UDP hash table entries: 512 (order: 1, 8192 bytes)
[ 0.311375] UDP-Lite hash table entries: 512 (order: 1, 8192 bytes)
[ 0.313663] NET: Registered protocol family 1
[ 0.316492] PCI: CLS 0 bytes, default 32
[ 0.322648] Unpacking initramfs...
[ 1.980255] Freeing initrd memory: 13860K (c1600000 - c2389000)
[ 1.981580] Thermal assist unit using timers, shrink_timer: 500 jiffies
[ 1.986508] audit: initializing netlink subsys (disabled)
[ 1.987795] audit: type=2000 audit(1624123104.916:1): initialized
[ 1.993956] zbud: loaded
[ 1.995727] VFS: Disk quotas dquot_6.5.2
[ 1.995931] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 1.997581] msgmni has been set to 1478
[ 2.018335] alg: No test for stdrng (krng)
[ 2.018631] bounce: pool size: 64 pages
[ 2.018943] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 2.019803] io scheduler noop registered
[ 2.020079] io scheduler deadline registered
[ 2.020533] io scheduler cfq registered (default)
[ 2.025557] Using unsupported 1024x768 QEMU,VGA at 81000000, depth=32, pitch=4096
[ 2.053333] Console: switching to colour frame buffer device 128x48
[ 2.070423] fb0: Open Firmware frame buffer device on /pci@f2000000/QEMU,VGA@e
[ 2.072030] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 2.076377] pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@kernel.crashing.org>)
[ 2.082520] Serial: MPC52xx PSC UART driver
[ 2.083016] Generic non-volatile memory driver v1.1
[ 2.083826] Linux agpgart interface v0.103
[ 2.086134] MacIO PCI driver attached to Keylargo chipset
[ 2.091711] 0.00013020:ch-a: ttyPZ0 at MMIO 0x80013020 (irq = 37, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 2.097890] 0.00013000:ch-b: ttyPZ1 at MMIO 0x80013000 (irq = 36, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 2.105394] adb: starting probe task...
[ 2.105886] adb: finished probe task...
[ 3.640557] pata-macio 0.00020000:ata-3: Activating pata-macio chipset KeyLargo ATA-3, Apple bus ID 0
[ 3.652430] scsi0 : pata_macio
[ 3.656416] ata1: PATA max MWDMA2 irq 16
[ 4.195413] ata1.01: NODEV after polling detection
[ 4.202151] ata1.00: ATA-7: QEMU HARDDISK, 2.5+, max UDMA/100
[ 4.202820] ata1.00: 41943040 sectors, multi 16: LBA48
[ 4.207812] ata1.00: configured for MWDMA2
[ 4.224659] scsi 0:0:0:0: Direct-Access ATA QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[ 4.684270] pata-macio 0.00021000:ata-3: Activating pata-macio chipset KeyLargo ATA-3, Apple bus ID 1
[ 4.688949] scsi1 : pata_macio
[ 4.690647] ata2: PATA max MWDMA2 irq 18
[ 4.699661] mousedev: PS/2 mouse device common for all mice
[ 4.706026] rtc-generic rtc-generic: rtc core: registered rtc-generic as rtc0
[ 4.733423] PowerMac i2c bus pmu 2 registered
[ 4.742247] PowerMac i2c bus pmu 1 registered
[ 4.755384] ledtrig-cpu: registered to indicate activity on CPUs
[ 4.769488] TCP: cubic registered
[ 4.777595] NET: Registered protocol family 10
[ 4.803124] mip6: Mobile IPv6
[ 4.810586] NET: Registered protocol family 17
[ 4.823545] mpls_gso: MPLS GSO support
[ 4.833736] registered taskstats version 1
[ 4.846936] ata2.01: NODEV after polling detection
[ 4.847478] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 4.868181] input: PMU as /devices/virtual/input/input0
[ 4.880247] ata2.00: configured for MWDMA2
[ 4.898364] rtc-generic rtc-generic: setting system clock to 2021-06-19 17:18:27 UTC (1624123107)
[ 4.917284] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
[ 4.931960] PM: Hibernation image not present or could not be loaded.
[ 5.017320] Freeing unused kernel memory: 404K (c0674000 - c06d9000)
[ 5.671613] systemd-udevd[56]: starting version 215
[ 5.747811] random: systemd-udevd: uninitialized urandom read (16 bytes read, 0 bits of entropy available)
[ 6.194680] sungem.c:v1.0 David S. Miller <davem@redhat.com>
[ 6.254087] sd 0:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
[ 6.269509] sr0: scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[ 6.285752] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 6.309558] gem 0000:00:0f.0 eth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet 52:54:00:12:34:56
[ 6.350246] sd 0:0:0:0: [sda] Write Protect is off
[ 6.357850] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 6.406580] usbcore: registered new interface driver usbfs
[ 6.420842] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 6.431856] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 6.454017] usbcore: registered new interface driver hub
[ 6.489538] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 6.518901] usbcore: registered new device driver usb
[ 6.534735] sr 1:0:0:0: Attached scsi generic sg1 type 5
[ 6.547072] sda: [mac] sda1 sda2 sda3 sda4 sda5
[ 6.591800] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 6.657422] sd 0:0:0:0: [sda] Attached SCSI disk
[ 6.677769] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 6.714770] ehci-pci: EHCI PCI platform driver
[ 6.787220] ohci-pci: OHCI PCI platform driver
[ 6.845485] ohci-pci 0000:00:0d.0: OHCI PCI host controller
[ 6.877128] ohci-pci 0000:00:0d.0: new USB bus registered, assigned bus number 1
[ 6.921677] ohci-pci 0000:00:0d.0: irq 28, io mem 0x80080000
[ 7.002043] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
[ 7.009902] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 7.017070] usb usb1: Product: OHCI PCI host controller
[ 7.027448] usb usb1: Manufacturer: Linux 3.16.0-6-powerpc ohci_hcd
[ 7.035535] usb usb1: SerialNumber: 0000:00:0d.0
[ 7.157630] hub 1-0:1.0: USB hub found
[ 7.198973] hub 1-0:1.0: 3 ports detected
[ 7.650267] usb 1-1: new full-speed USB device number 2 using ohci-pci
[ 7.931730] usb 1-1: New USB device found, idVendor=0627, idProduct=0001
[ 7.939364] usb 1-1: New USB device strings: Mfr=1, Product=4, SerialNumber=11
[ 7.945939] usb 1-1: Product: QEMU USB Keyboard
[ 7.958739] usb 1-1: Manufacturer: QEMU
[ 7.965913] usb 1-1: SerialNumber: 68284-pci.2:0d.0-1
[ 8.067460] hidraw: raw HID events driver (C) Jiri Kosina
[ 8.102830] usbcore: registered new interface driver usbhid
[ 8.110179] usbhid: USB HID core driver
[ 8.137237] input: QEMU QEMU USB Keyboard as /devices/pci0000:00/0000:00:0d.0/usb1/1-1/1-1:1.0/0003:0627:0001.0001/input/input1
[ 8.157111] hid-generic 0003:0627:0001.0001: input,hidraw0: USB HID v1.11 Keyboard [QEMU QEMU USB Keyboard] on usb-0000:00:0d.0-1/input0
[ 8.209817] usb 1-2: new full-speed USB device number 3 using ohci-pci
[ 8.424994] PM: Starting manual resume from disk
[ 8.432827] PM: Hibernation image partition 8:4 present
[ 8.432874] PM: Looking for hibernation image.
[ 8.434942] PM: Image not found (code -22)
[ 8.434985] PM: Hibernation image not present or could not be loaded.
[ 8.473829] usb 1-2: New USB device found, idVendor=0627, idProduct=0001
[ 8.481807] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=9
[ 8.494398] usb 1-2: Product: QEMU USB Mouse
[ 8.502261] usb 1-2: Manufacturer: QEMU
[ 8.512518] usb 1-2: SerialNumber: 89126-pci.2:0d.0-2
[ 8.581884] input: QEMU QEMU USB Mouse as /devices/pci0000:00/0000:00:0d.0/usb1/1-2/1-2:1.0/0003:0627:0001.0002/input/input2
[ 8.591478] hid-generic 0003:0627:0001.0002: input,hidraw1: USB HID v0.01 Mouse [QEMU QEMU USB Mouse] on usb-0000:00:0d.0-2/input0
[ 9.556691] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)
[ 10.529616] random: systemd: uninitialized urandom read (16 bytes read, 128 bits of entropy available)
[ 10.548374] random: nonblocking pool is initialized
[ 10.575081] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[ 10.599828] systemd[1]: Detected architecture 'ppc'.
[ 10.746089] systemd[1]: Inserted module 'autofs4'
[ 10.767221] systemd[1]: Set hostname to <deb8-mac99>.
[ 12.164273] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
[ 12.206927] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[ 12.225188] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 12.240597] systemd[1]: Starting Remote File Systems (Pre).
[ 12.269153] systemd[1]: Reached target Remote File Systems (Pre).
[ 12.285320] systemd[1]: Starting Encrypted Volumes.
[ 12.314825] systemd[1]: Reached target Encrypted Volumes.
[ 12.326519] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
[ 12.362151] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 12.372785] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[ 12.383321] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 12.396218] systemd[1]: Starting Paths.
[ 12.418810] systemd[1]: Reached target Paths.
[ 12.431878] systemd[1]: Expecting device dev-disk-by\x2duuid-99d2fb27\x2dec78\x2d46f1\x2d918d\x2df6d2cebfdd26.device...
[ 12.454349] systemd[1]: Starting Root Slice.
[ 12.483560] systemd[1]: Created slice Root Slice.
[ 12.498010] systemd[1]: Starting User and Session Slice.
[ 12.525955] systemd[1]: Created slice User and Session Slice.
[ 12.535941] systemd[1]: Starting Delayed Shutdown Socket.
[ 12.562005] systemd[1]: Listening on Delayed Shutdown Socket.
[ 12.572605] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ 12.598851] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 12.610864] systemd[1]: Starting Journal Socket (/dev/log).
[ 12.637574] systemd[1]: Listening on Journal Socket (/dev/log).
[ 12.648981] systemd[1]: Starting udev Control Socket.
[ 12.670188] systemd[1]: Listening on udev Control Socket.
[ 12.685523] systemd[1]: Starting udev Kernel Socket.
[ 12.720868] systemd[1]: Listening on udev Kernel Socket.
[ 12.730747] systemd[1]: Starting Journal Socket.
[ 12.758010] systemd[1]: Listening on Journal Socket.
[ 12.766313] systemd[1]: Starting System Slice.
[ 12.787268] systemd[1]: Created slice System Slice.
[ 12.802094] systemd[1]: Started File System Check on Root Device.
[ 12.811769] systemd[1]: Starting system-getty.slice.
[ 12.832305] systemd[1]: Created slice system-getty.slice.
[ 12.840022] systemd[1]: Starting Increase datagram queue length...
[ 12.926484] systemd[1]: Starting Load Kernel Modules...
[ 13.006882] systemd[1]: Mounting POSIX Message Queue File System...
[ 13.135803] systemd[1]: Starting udev Coldplug all Devices...
[ 13.285401] systemd[1]: Mounting Debug File System...
[ 13.446946] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[ 13.634560] systemd[1]: Mounted Huge Pages File System.
[ 13.732791] systemd[1]: Started Set Up Additional Binary Formats.
[ 13.780376] systemd[1]: Starting Slices.
[ 13.884706] systemd[1]: Reached target Slices.
[ 14.031417] systemd[1]: Mounted Debug File System.
[ 14.113765] systemd[1]: Mounted POSIX Message Queue File System.
[ 14.228912] systemd[1]: Started Increase datagram queue length.
[ 14.298206] systemd[1]: systemd-modules-load.service: main process exited, code=exited, status=1/FAILURE
[ 14.373489] systemd[1]: Failed to start Load Kernel Modules.
[ 14.389422] systemd[1]: Unit systemd-modules-load.service entered failed state.
[ 14.464251] systemd[1]: Started Create list of required static device nodes for the current kernel.
[ 14.847029] systemd[1]: Started udev Coldplug all Devices.
[ 14.963385] systemd[1]: Starting Create Static Device Nodes in /dev...
[ 15.008397] systemd[1]: Mounted Configuration File System.
[ 15.030450] systemd[1]: Starting Apply Kernel Variables...
[ 15.101475] systemd[1]: Mounted FUSE Control File System.
[ 15.125342] systemd[1]: Starting Syslog Socket.
[ 15.194735] systemd[1]: Listening on Syslog Socket.
[ 15.220980] systemd[1]: Starting Journal Service...
[ 15.377350] systemd[1]: Started Journal Service.
[ 16.134454] systemd-udevd[140]: starting version 215
[ 18.745870] [drm] Initialized drm 1.1.0 20060810
[ 19.136980] checking generic (81000000 300000) vs hw (81000000 1000000)
[ 19.137035] fb: switching to bochsdrmfb from OFfb QEMU,VGA
[ 19.233902] Console: switching to colour dummy device 80x25
[ 19.318956] [drm] Found bochs VGA, ID 0xb0c5.
[ 19.319051] [drm] Framebuffer size 16384 kB @ 0x81000000, mmio @ 0x82000000.
[ 19.357473] [TTM] Zone kernel: Available graphics memory: 378666 kiB
[ 19.357569] [TTM] Zone highmem: Available graphics memory: 1034026 kiB
[ 19.357670] [TTM] Initializing pool allocator
[ 19.643636] Console: switching to colour frame buffer device 128x48
[ 19.801994] bochs-drm 0000:00:0e.0: fb0: bochsdrmfb frame buffer device
[ 19.802274] bochs-drm 0000:00:0e.0: registered panic notifier
[ 19.802757] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:0e.0 on minor 0
[ 25.417634] Adding 358200k swap on /dev/sda4. Priority:-1 extents:1 across:358200k FS
[ 26.311189] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro
[ 27.127373] systemd-journald[137]: Received request to flush runtime journal from PID 1
[ 31.921007] sungem_phy: PHY ID: 406210, addr: 0
[ 31.921317] gem 0000:00:0f.0 eth0: Found BCM5201 PHY
[ 31.949208] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 33.156670] gem 0000:00:0f.0 eth0: Link is up at 100 Mbps, full-duplex
[ 33.235179] gem 0000:00:0f.0 eth0: Pause is disabled
[ 33.251113] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 39.022897] RPC: Registered named UNIX socket transport module.
[ 39.032679] RPC: Registered udp transport module.
[ 39.038849] RPC: Registered tcp transport module.
[ 39.051804] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 39.272740] FS-Cache: Loaded
[ 39.442227] FS-Cache: Netfs 'nfs' registered for caching
[ 39.593423] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 42.945131] usb 1-2: USB disconnect, device number 3
[ 43.260776] usb 1-2: new full-speed USB device number 4 using ohci-pci
[ 43.538071] usb 1-2: New USB device found, idVendor=0627, idProduct=0001
[ 43.538118] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=9
[ 43.538144] usb 1-2: Product: QEMU USB Mouse
[ 43.538169] usb 1-2: Manufacturer: QEMU
[ 43.538193] usb 1-2: SerialNumber: 89126-pci.2:0d.0-2
[ 43.760685] input: QEMU QEMU USB Mouse as /devices/pci0000:00/0000:00:0d.0/usb1/1-2/1-2:1.0/0003:0627:0001.0003/input/input3
[ 43.792976] hid-generic 0003:0627:0001.0003: input,hidraw1: USB HID v0.01 Mouse [QEMU QEMU USB Mouse] on usb-0000:00:0d.0-2/input0
[ 45.644327] input: Mouseemu virtual keyboard as /devices/virtual/input/input4
[ 45.672895] input: Mouseemu virtual mouse as /devices/virtual/input/input5
[ 2023.649748] UDF-fs: warning (device sr0): udf_fill_super: No partition found (2)
[ 2023.675215] ISO 9660 Extensions: Microsoft Joliet Level 3
[ 2023.766527] ISO 9660 Extensions: RRIP_1991A</pre>
<p>Lots of information about hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="benchmark">Benchmark</a></h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing?</p>
<h4 style="text-align: left;"><a name="benchmark_bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). BogoMips is used by the Linux kernel to calibrate a wait loop. The value is obtained at boot, and is reported by '/proc/cpuinfo' and 'lscpu' (see above). Depending on the platform the BogoMips result may also be reported in 'dmesg' along with an indication of the method used to derive the score.</p>
<p>On our emulated 'mac99' system we get (from <tt>/proc/cpuinfo</tt>):</p>
<pre class="capturedOutput">BogoMIPS: 200.00</pre>
<p>Since the BogoMips score for PowerPC is about twice the processor clock speed, this would suggest that the emulated processor is roughly equivalent to a G4 running at 100 MHz, but...</p>
<p>Comparing with some results from physical hardware found online:</p>
<table border="1">
<tbody>
<tr><th>CPU</th><th>Kernel</th><th>BogoMips</th><th>Source</th></tr>
<tr><td>7400 @ 500 MHz</td><td>2.4</td><td align="right">992.87</td><td><a href="https://mono.github.io/mail-archives/mono-bugs/2004-July/018573.html">[Mono-bugs] [Bug 61435][Blo] Changed - mono (JIT) crashes on kernel 2.4</a></td></tr>
<tr><td>7400 @ 500 MHz dual SMP</td><td>2.4</td><td align="right">1985.74</td><td><a href="https://mono.github.io/mail-archives/mono-bugs/2004-July/018573.html">[Mono-bugs] [Bug 61435][Blo] Changed - mono (JIT) crashes on kernel 2.4</a></td></tr>
<tr><td>7400 @ 450 MHz</td><td>2.6</td><td align="right">894.97</td><td><a href="https://other.debian.org/debian-powerpc/2004/06/msg00076.html">kernel 2.6 difference between g4 and powerpc kernel</a></td></tr>
<tr><td>7400 @ 450 MHz dual SMP</td><td>2.6</td><td align="right">1789.95</td><td><a href="https://other.debian.org/debian-powerpc/2004/06/msg00076.html">kernel 2.6 difference between g4 and powerpc kernel</a></td></tr>
<tr><td>7400 @ 400 MHz</td><td>2.6.8</td><td align="right">794.62</td><td><a href="https://debianforum.de/forum/viewtopic.php?t=69087">APM/ ACPI im Kernel aktivieren? PowerMac - debianforum.de</a></td></tr>
<tr><td>7400 @ 350 MHz</td><td>2.6.22</td><td align="right">49.66</td><td><a href="https://foro.seguridadwireless.net/otros-sistemas-y-plataformas/se-puede-cargar-linux-en-una-computadora-mac/msg46604/#msg46604">Se puede Cargar linux en UNA COM****DORA MAC</a></td></tr>
<tr><td>7400 @ 500 MHz</td><td>3.0.20</td><td align="right">49.81</td><td><a href="https://ubuntuforums.org/archive/index.php/t-1947450.html">[PPC] Possible solution to gem RX MAC fifo overflow smac errors in dmesg [Archive] - Ubuntu Forums</a></td></tr>
<tr><td>7400 @ 500 MHz dual SMP</td><td>3.0.20</td><td align="right">99.63</td><td><a href="https://ubuntuforums.org/archive/index.php/t-1947450.html">[PPC] Possible solution to gem RX MAC fifo overflow smac errors in dmesg [Archive] - Ubuntu Forums</a></td></tr>
<tr><td>7400 @ 400 MHz</td><td>4.4.0</td><td align="right">49.81</td><td><a href="https://www.vogons.org/viewtopic.php?p=789941#p789941">PowerPC Dynamic Recompiler (patch) - Page 2 \ VOGONS</a></td></tr>
</tbody>
</table>
<p>Hmmm... that looks like there might be a change in the Linux 2.6 series of kernels that changed the results for these systems. Around this point the Linux kernel for some platforms switched from using a BogoMips calculation to calibrate the kernel busy-wait loop, to deriving the BogoMips value from an available system timer. From our <tt>dmesg</tt> output it appears the BogoMips are calculated from doubling <tt>time_init: decrementer frequency = 100.000000 MHz</tt>. This looks to correspond to the presence of <tt>timebase</tt> in the <tt>/proc/cpuinfo</tt> output: <tt>timebase : 100000000</tt>.</p>
<p>Verifying with install disks for various Debian Linux releases on our QEMU 'mac99' system:</p>
<table border="1">
<tbody>
<tr><th>Debian Release</th><th>Linux Kernel</th><th>BogoMips Source</th><th>BogoMips Result</th></tr>
<tr><td>3.0r6 <br />(woody)</td><td>2.4.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 1058.40 BogoMIPS</pre></td></tr>
<tr><td>3.1r8 <br />(sarge)</td><td>2.6.8</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 1048.57 BogoMIPS</pre></td></tr>
<tr><td>4.0r9 <br />(etch)</td><td>2.6.18</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 197.63 BogoMIPS (lpj=395264)</pre></td></tr>
<tr><td>5.0.10 <br />(lenny)</td><td>2.6.26</td><td><tt>dmesg</tt></td><td><pre>Calibrating delay loop... 232.96 BogoMIPS (lpj=465920)</pre></td></tr>
<tr><td>6.0.10 <br />(squeeze)</td><td>2.6.32</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 200.00</pre></td></tr>
<tr><td>7.11.0 <br />(wheezy)</td><td>3.2.0</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 200.00</pre></td></tr>
<tr><td>8.11.0 <br />(jessie)</td><td>3.16.0</td><td><tt>cpuinfo</tt></td><td><pre>bogomips : 200.00</pre></td></tr>
</tbody>
</table>
<p>That looks like there were two changes in the Linux 2.6 series, one to switch to a timer based calibration (results around 200.0 with an lpj value) and later, a second change to use the timer frequency directly (the 200.00 exact results). Since the older kernels give processor based Bogomips results, we can estimate the equivalent processor clock for these numbers. The PowerPC Bogomips is normally about twice the processor clock, so the little over 1000 results suggest a processor clock of a little over 500 MHz. Which would place this emulated system around the performance of the higher end models of the original hardware.</p>
<h4 style="text-align: left;"><a name="benchmark_openssl">OpenSSL</a></h4>
<p>The <a href="https://www.openssl.org/">OpenSSL</a> cryptographic library provides a tool providing a command-line interface to the library methods and one aspect of this provides a speed test. Since I'm mostly interested in older systems I'm going to focus on the common RSA and MD5 methods.</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 382529 md5's in 2.98s
Doing md5 for 3s on 64 size blocks: 375153 md5's in 2.97s
Doing md5 for 3s on 256 size blocks: 314587 md5's in 2.98s
Doing md5 for 3s on 1024 size blocks: 193543 md5's in 2.98s
Doing md5 for 3s on 8192 size blocks: 41341 md5's in 2.98s
OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 2053.85k 8084.11k 27024.92k 66506.05k 113646.13k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 5422 512 bit private RSA's in 9.93s
Doing 512 bit public rsa's for 10s: 54095 512 bit public RSA's in 9.92s
Doing 1024 bit private rsa's for 10s: 1073 1024 bit private RSA's in 9.92s
Doing 1024 bit public rsa's for 10s: 15633 1024 bit public RSA's in 9.92s
Doing 2048 bit private rsa's for 10s: 130 2048 bit private RSA's in 9.96s
Doing 2048 bit public rsa's for 10s: 4890 2048 bit public RSA's in 9.92s
Doing 4096 bit private rsa's for 10s: 23 4096 bit private RSA's in 10.34s
Doing 4096 bit public rsa's for 10s: 1482 4096 bit public RSA's in 9.93s
OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
sign verify sign/s verify/s
rsa 512 bits 0.001831s 0.000183s 546.0 5453.1
rsa 1024 bits 0.009245s 0.000635s 108.2 1575.9
rsa 2048 bits 0.076615s 0.002029s 13.1 492.9
rsa 4096 bits 0.449565s 0.006700s 2.2 149.2</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 113,646.13k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 2.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 149.2</li>
</ul>
<p>Looking at various compilations of RSA results, this looks to be around the ballpark of the PowerMac G4 1.0 DP (MDD) (<a href="https://everymac.com/systems/apple/powermac_g4/specs/powermac_g4_1.0_dp_mdd.html">EveryMac</a>), which featured two 7455 @ 1.0 GHz processors. Quite a step up from the single 7400 @ 500 MHz in the "graphite".</p>
<p>For reference a complete run of the speed test gave:</p>
<pre class="capturedOutput">OpenSSL 1.0.1t 3 May 2016
built on: Thu Mar 29 12:14:07 2018
options:bn(64,32) rc4(ptr,char) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 0.00 0.00 0.00 0.00 0.00
mdc2 0.00 0.00 0.00 0.00 0.00
md4 2214.63k 9754.70k 32222.15k 80124.91k 147574.60k
md5 1983.44k 7711.42k 25725.41k 62708.11k 110622.34k
hmac(md5) 2076.18k 7745.01k 24848.24k 63068.40k 112175.42k
sha1 2103.25k 7034.12k 25993.95k 72138.74k 138919.22k
rmd160 1058.40k 3224.05k 6854.68k 9811.84k 11221.39k
rc4 29387.58k 36751.47k 38678.59k 39426.07k 38084.55k
des cbc 9349.28k 10581.86k 10918.79k 10994.94k 11112.99k
des ede3 3288.78k 3471.24k 3551.33k 3515.28k 3513.21k
idea cbc 0.00 0.00 0.00 0.00 0.00
seed cbc 12109.40k 14074.37k 14670.70k 14744.69k 14883.05k
rc2 cbc 11849.52k 13769.23k 14297.56k 14471.73k 14355.24k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00
blowfish cbc 14396.41k 17447.89k 18190.14k 18204.10k 18432.00k
cast cbc 12367.67k 14920.04k 15657.55k 16052.75k 16326.27k
aes-128 cbc 13027.26k 15174.94k 15626.43k 15656.51k 15719.26k
aes-192 cbc 11724.97k 13175.85k 13696.26k 13739.18k 13882.42k
aes-256 cbc 10625.36k 11853.86k 12270.90k 12210.00k 12362.22k
camellia-128 cbc 13984.52k 16153.45k 17010.86k 17153.55k 17170.21k
camellia-192 cbc 12008.40k 13497.64k 14133.78k 13663.68k 14264.53k
camellia-256 cbc 11914.37k 13400.69k 14009.47k 13956.98k 13873.99k
sha256 5211.07k 16740.53k 41245.72k 65138.12k 78409.54k
sha512 608.28k 2482.06k 3589.60k 5044.93k 5668.42k
whirlpool 447.84k 952.13k 1554.99k 1858.32k 1968.28k
aes-128 ige 12548.53k 14529.85k 15034.16k 15311.55k 15287.15k
aes-192 ige 11233.12k 12825.99k 13060.81k 13464.74k 13465.77k
aes-256 ige 10173.50k 11563.70k 11973.56k 12063.61k 12007.60k
ghash 18364.74k 23390.64k 24970.65k 25328.19k 25364.86k
sign verify sign/s verify/s
rsa 512 bits 0.001938s 0.000188s 516.0 5313.8
rsa 1024 bits 0.009413s 0.000675s 106.2 1482.1
rsa 2048 bits 0.079520s 0.001942s 12.6 514.9
rsa 4096 bits 0.473810s 0.006792s 2.1 147.2
sign verify sign/s verify/s
dsa 512 bits 0.002142s 0.001939s 466.8 515.6
dsa 1024 bits 0.007206s 0.007862s 138.8 127.2
dsa 2048 bits 0.021802s 0.023093s 45.9 43.3
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0021s 0.0070s 476.4 143.3
192 bit ecdsa (nistp192) 0.0025s 0.0091s 398.1 110.4
224 bit ecdsa (nistp224) 0.0030s 0.0114s 328.9 87.4
256 bit ecdsa (nistp256) 0.0036s 0.0144s 281.2 69.3
384 bit ecdsa (nistp384) 0.0068s 0.0306s 147.1 32.7
521 bit ecdsa (nistp521) 0.0124s 0.0625s 80.7 16.0
163 bit ecdsa (nistk163) 0.0046s 0.0213s 219.6 46.9
233 bit ecdsa (nistk233) 0.0087s 0.0415s 115.4 24.1
283 bit ecdsa (nistk283) 0.0129s 0.0754s 77.2 13.3
409 bit ecdsa (nistk409) 0.0330s 0.1894s 30.3 5.3
571 bit ecdsa (nistk571) 0.0757s 0.3850s 13.2 2.6
163 bit ecdsa (nistb163) 0.0043s 0.0223s 230.1 44.8
233 bit ecdsa (nistb233) 0.0084s 0.0447s 119.3 22.4
283 bit ecdsa (nistb283) 0.0126s 0.0809s 79.2 12.4
409 bit ecdsa (nistb409) 0.0314s 0.1951s 31.9 5.1
571 bit ecdsa (nistb571) 0.0743s 0.4473s 13.5 2.2
op op/s
160 bit ecdh (secp160r1) 0.0057s 175.9
192 bit ecdh (nistp192) 0.0075s 132.9
224 bit ecdh (nistp224) 0.0094s 106.2
256 bit ecdh (nistp256) 0.0117s 85.6
384 bit ecdh (nistp384) 0.0244s 41.0
521 bit ecdh (nistp521) 0.0504s 19.9
163 bit ecdh (nistk163) 0.0102s 98.4
233 bit ecdh (nistk233) 0.0198s 50.6
283 bit ecdh (nistk283) 0.0354s 28.2
409 bit ecdh (nistk409) 0.0846s 11.8
571 bit ecdh (nistk571) 0.1917s 5.2
163 bit ecdh (nistb163) 0.0110s 90.8
233 bit ecdh (nistb233) 0.0218s 45.8
283 bit ecdh (nistb283) 0.0400s 25.0
409 bit ecdh (nistb409) 0.0981s 10.2
571 bit ecdh (nistb571) 0.2244s 4.5</pre>
<p>Note: this build has been compiled with assembler implementations for SHA-1, SHA-256 and AES.</p>
<h3 style="text-align: left;"><a name="further_sources">Further Sources</a></h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/PowerPC">PowerPC - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Power_Macintosh">Power Macintosh - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Macintosh_clone">Macintosh clone - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Classic_Mac_OS">Classic Mac OS - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/Power_Mac_G4">Power Mac G4 - Wikipedia</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/PowerPC">Documentation/Platforms/PowerPC - QEMU</a></li>
<li><a href="https://www.emaculation.com/doku.php/ppc-osx-on-qemu-for-osx">Running Qemu-system-ppc with Mac OS/OSX guests in macOS [E-Maculation wiki]</a></li>
<li><a href="https://wiki.debian.org/PowerPC/SoundCards">PowerPC/SoundCards - Debian Wiki</a></li>
<li><a href="https://web.archive.org/web/20160401171517/http://gate.crashing.org/doc/ppc/doc000.htm">PPC Developers Reference Release 1.0 - The PowerPC Linux Installation Guide - An Addendum to The Official Red Hat Linux Installation Guide</a> [Internet Archive]</li>
<li><a href="https://web.archive.org/web/20170610223243/https://www.penguinppc.org/">penguinppc.org</a> [Internet Archive]</li>
<li><a href="https://web.archive.org/web/19961220224458/http://www.linuxppc.org/">linuxppc.org</a> [Internet Archive]</li>
<li><a href="https://web.archive.org/web/19990117003203/http://www.linuxppc.com:80/">LinuxPPC - Linux for PowerPC Computers.</a> [Internet Archive]</li>
<li><a href="https://en.wikipedia.org/wiki/IBM_RS/6000">IBM RS/6000 - Wikipedia</a></li>
<li><a href="https://en.wikipedia.org/wiki/AIM_alliance">AIM alliance - Wikipedia</a></li>
</ul>
<hr />
<h3 style="test-align: left;"><a name="qemu_powerpc_systems">QEMU PowerPC Systems</a></h3>
<p>The PowerPC processor has been used in a wide range of systems, so QEMU has a variety of system emulations to choose from:</p>
<table border="1">
<thead>
<tr><td align="center" colspan="3">QEMU 32-bit PowerPC desktop/server systems (<tt>qemu-system-ppc</tt>)</td></tr>
</thead>
<tbody>
<tr><th>QEMU Name</th><th>QEMU description</th><th>System</th></tr>
<tr><td>40p</td><td>IBM RS/6000 7020 (40p)</td><td>IBM RS/6000 Type 7020 Model 40P; PReP; PowerPC 601</td></tr>
<tr><td>g3beige</td><td>Heathrow based PowerMAC (default)</td><td>Apple Power Macintosh G3 ("beige") series; "Heathrow" I/O contoller (see <a href="https://everymac.com/systems/apple/powermac_g3/index-powermac-g3.html">EveryMac</a>); PowerPC 750 (G3)</td></tr>
<tr><td>mac99</td><td>Mac99 based PowerMAC</td><td>Apple Power Mac G4 (AGP) ("graphite") series, PowerMac3,1 (see <a href="https://everymac.com/systems/apple/powermac_g4/index-powermac-g4.html">EveryMac</a>); PowerPC 7400 (G4)</td></tr>
</tbody>
<thead>
<tr><td align="center" colspan="3">QEMU 32-bit PowerPC evaluation/reference boards (<tt>qemu-system-ppc</tt>)</td></tr>
</thead>
<tbody>
<tr><th>QEMU Name</th><th>QEMU description</th><th>System</th></tr>
<tr><td>bamboo</td><td>bamboo</td><td>IBM/AMCC 440ep (Bamboo) reference board; PowerPC 440EP with PowerPC 440 core</td></tr>
<tr><td>mpc8544ds</td><td>mpc8544ds</td><td>Freescale <a href="https://www.nxp.com/docs/en/fact-sheet/MPC8544DSFS.pdf">MPC8544DS</a> evaluation board; MPC8544E PowerQUICC III with PowerPC e500 core</td></tr>
<tr><td>none</td><td>empty machine</td><td>An empty system for building up from component parts</td></tr>
<tr><td>ppce500</td><td>generic paravirt e500 platform</td><td>virtual system for PowerPC e500</td></tr>
<tr><td>ref405ep</td><td>ref405ep</td><td>Reference board for PowerPC 405EP</td></tr>
<tr><td>sam460ex</td><td>aCube Sam460ex</td><td><a href="https://www.acube-systems.biz/index.php?page=hardware&pid=5">ACube Systems Sam460ex</a>; PowerPC 460EX with PowerPC 440 core</td></tr>
<tr><td>taihu</td><td>taihu</td><td>AMCC PPC 405EP (TAIHU); PowerPC 405EP with PowerPC 405 core</td></tr>
<tr><td>virtex-ml507</td><td>Xilinx Virtex ML507 reference design</td><td><a href="https://www.xilinx.com/support/documentation-navigation/boards-and-kits/virtex-5/ml507.html">AMD Xilinx ML507, Virtex-5 FXT FPGA evaluation board</a>; PowerPC 440 core</td></tr>
</tbody>
</table>
<p>QEMU provides emulation of a wider range of PowerPC processors than the system specifications above might indicate. So system processors can be switched for alternative models if required.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-51885838752210677872022-05-16T17:31:00.001+01:002022-05-21T16:01:59.331+01:00RedHat Linux 6.2 (Zoot) on PCem Pentium 75<h3>RedHat Linux 6.2 on PCem</h3>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhas3Ob6r7dnRyOBWBbIFiy2ASRqVuBWpCObKd_KEyWRi-31c_hjhs9PGpIWJtyRyVcoDs7CMdtLj93f3Mdlt3F3XM7KqiJJ3Sdqhh389QrMvRK6815QWK4xWLQ1pgSId3rim7Evq5TIJul9PtZz2z7CAm1SbIA76tgSGmWGTS4Zcz7BBNWkvIpc0r-/s1026/PCem-RedHat%206-desktop-2.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="X Windows desktop for Red Hat 6.2 (zoot) running on PCem" border="0" data-original-height="815" data-original-width="1026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhas3Ob6r7dnRyOBWBbIFiy2ASRqVuBWpCObKd_KEyWRi-31c_hjhs9PGpIWJtyRyVcoDs7CMdtLj93f3Mdlt3F3XM7KqiJJ3Sdqhh389QrMvRK6815QWK4xWLQ1pgSId3rim7Evq5TIJul9PtZz2z7CAm1SbIA76tgSGmWGTS4Zcz7BBNWkvIpc0r-/s320/PCem-RedHat%206-desktop-2.png" width="320" /></a></div>
<h3 style="text-align: left;">RedHat Linux</h3>
<p>Initially established back in 1994, <a href="http://www.redhat.com/">Red Hat</a> (<a href="https://en.wikipedia.org/wiki/Red_Hat">Wikipedia</a>) is a commercial Linux vendor known for the RedHat Linux, Red Hat Enterprise Linux (RHEL) and Fedora Linux distributions.</p>
<p>RedHat Linux 6.2 was released in 2000, and supported i386 through early Pentium III systems (the Intel Pentium 4 didn't ship until November that year). So it is suitable for comparing our physical Intel Pentium system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>) and the <a href="https://pcem-emulator.co.uk/">PCem</a> emulated equivalent.</p>
<h3 style="text-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC systems, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our physical system.</p>
<p>Basing our desired system on <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a> and the <a href="https://pcem-emulator.co.uk/">PCem</a> devices, the target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA</td></tr>
</tbody>
</table>
<span><a name='more'></a></span>
<h3 style="text-align: left;">PCem Installation & Configuration</h3>
<p>Since we have the <a href="https://pcem-emulator.co.uk/">PCem</a> installation from the <a href="https://boxes-of-tat.blogspot.com/2022/04/slackware-linux-30-on-pentium-75-with.html">Slackware 3.0 on PCem Pentium 75</a>, where we looked at how an early Slackware behaved on similar configuration, refer to that post of details of the installation of PCem and the configuration of the emulated machine.</p>
<p>For this emulation the only differences are the name given to the configuration ("RedHat Linux 6 i430fx Pentium 75") and the file name used for the hard disk image (<tt>RedHat62-i430fx-P5.img</tt>).</p>
<h3 style="text-align: left;">RedHat Linux 6.2 Installation</h3>
<ol>
<li>Fetch the RedHat Linux 6.2 CD-ROM image from the Red Hat Archive (<a href="https://archive.download.redhat.com/pub/redhat/linux/6.2/en/iso/i386/">https://archive.download.redhat.com/pub/redhat/linux/6.2/en/iso/i386/</a>) or from Archive.org (e.g. <a href="https://archive.org/details/redhat-6.2_release">https://archive.org/details/redhat-6.2_release</a>), for installation we only need CD 1 ('zoot-i386.iso' or 'redhat-6.2-i386.iso'), the other CDs contains documentaion, sources and supplementary packages.</li>
<li>Like the previous RedHat Linux 5.2 CD, the RedHat Linux 6.2 CD is bootable and will boot our machine if the option is enabled in the BIOS.</li>
<li>So back to PCem...
<ol>
<li>Start/load the machine we created</li>
<li>Use the "CD-ROM">"Image..." menu to insert the CD-ROM ISO</li>
<li>When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB and that we want the CD-ROM to be a boot device.</li>
</ol>
</li>
<li>The RedHat Linux installer is pretty good, so just follow the prompts.</li>
<ol>
<li>The mouse is a "Mouse Systems - Mouse (serial)"</li>
<li>For the monitor I used "Generic Multisync" and set X Windows not to start on boot</li>
<li>Remember to "Empty" the CD-ROM drive when the installer reboots the system.</li>
</ol>
<li>Once logged in:</li>
<ol>
<li>To get the NE2000 ISA network card to work:
<ul>
<li>as 'root' test that the 'ne' module finds the card with: <tt># modprobe ne io=0x300 irq=10</tt></li>
<li>if that worked (<tt>eth0: NE2000 found at 0x300, using IRQ 10</tt>), remove the loaded module with <tt># rmmod ne</tt></li>
<li>to set up automatic loading of the 'ne' module we need to configure <tt>/etc/modules.conf</tt>:
<ul>
<li>if <tt>/etc/modules.conf</tt> does not exist, but <tt>/etc/conf.modules</tt> does, rename the modules file: <tt># mv /etc/conf.modules /etc/modules.conf</tt></li>
<li>add the following to <tt>/etc/modules.conf</tt>:
<pre class="capturedOutput"># NE2000 ISA ethernet adapter
alias eth0 ne
options eth0 io=0x300 irq=10</pre>
</li>
</ul>
</li>
<li>manually load the module with <tt># modprobe eth0</tt></li>
<li>now run the network configuration: <tt># netconfig</tt></li>
<li>for SLiRP networking select "Use dynamic IP configuration (BOOTP/DHCP)"</li>
<li>check the network configuration got an IP address with <tt># /sbin/ifconfig -a</tt></li>
</ul>
</li>
<li>if DNS lookups are not working, add your network DNS to <tt>/etc/resolv.conf</tt> as a <tt>nameserver</tt></li>
<li>the X server was configured during installation, if you need to reconfigure use <tt>Xconfigurator</tt></li>
</ol>
</ol>
<p>With the installation complete and configured we can have a play... to start the desktop we can use the <tt>startx</tt> command.</p>
<h3 style="text-align: left;"><a name="sysinfo_rh52">System Information - RedHat Linux 6.2 (Zoot)</a></h3>
<p>So what does RedHat Linux 6.2 (Zoot) for x86 have to say about this system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-rh62 2.2.14-5.0 #1 Tue Mar 7 20:53:41 EST 2000 i586 unknown</pre>
<p>A "Linux" kernel, on a node named "p-rh62", kernel release "2.2.14-5.0", version "#1 Tue Mar 7 20:53:41 EST 2000", on a "i586" machine, processor "unknown"</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200
stepping : 4
cpu MHz : 75.005420
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : no
cpuid level : 1
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 74.75</pre>
<p>The CPUID information is consistent with this being a second generation Intel Pentium processor (P54C), which is expected. But the BogoMips result looks too high. The configuration has the CPU at 75MHz, which normally gives a BogoMips result of around 30...</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 72888320 63299584 9588736 4435968 21774336 32739328
Swap: 70148096 2387968 67760128
MemTotal: 71180 kB
MemFree: 9364 kB
MemShared: 4332 kB
Buffers: 21264 kB
Cached: 31972 kB
BigTotal: 0 kB
BigFree: 0 kB
SwapTotal: 68504 kB
SwapFree: 66172 kB</pre>
<p>So 72 MiB RAM, with about 36 MB of swap.</p>
<h4>lspci, /proc/bus/pci/devices & /proc/pci</h4>
<p>PCI device report:</p>
<pre class="capturedOutput">$ /sbin/lspci
00:00.0 Host bridge: Intel Corporation 430FX - 82437FX TSC [Triton I]
00:07.0 ISA bridge: Intel Corporation 82371FB PIIX ISA [Triton I]
00:07.1 IDE interface: Intel Corporation 82371FB PIIX IDE [Triton I]
00:0d.0 VGA compatible controller: S3 Inc. 86c764/765 [Trio32/64/64V+]</pre>
<p>The machine readable <tt>/proc/bus/pci/devices</tt>:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0000 8086122d 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0038 8086122e 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0039 80861230 0 00000000 00000000 00000000 00000000 0000ffa1 00000000 00000000
0068 53338811 b ff000000 00000000 00000000 00000000 00000000 00000000 00000000</pre>
<p>And the obsolete <tt>/proc/pci</tt>, which was how to get PCI in older kernels:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel 82437 (rev 0).
Medium devsel. Master Capable. Latency=66.
Bus 0, device 7, function 0:
ISA bridge: Intel 82371FB PIIX ISA (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. No bursts.
Bus 0, device 7, function 1:
IDE interface: Intel 82371FB PIIX IDE (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=66.
I/O at 0xffa0 [0xffa1].
Bus 0, device 13, function 0:
VGA compatible controller: S3 Inc. Trio32/Trio64 (rev 0).
Medium devsel. IRQ 11.
Non-prefetchable 32 bit memory at 0xff000000 [0xff000000].</pre>
<p>In each case we get details of the same devices, but presented differently. Since the network card is on the ISA bus, we only see the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Linux version 2.2.14-5.0 (root@porky.devel.redhat.com) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Tue Mar 7 20:53:41 EST 2000
Detected 75005420 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 74.75 BogoMIPS
Memory: 71116k/73728k available (1084k kernel code, 416k reserved, 1048k data, 64k init, 0k bigmem)
Dentry hash table entries: 262144 (order 9, 2048k)
Buffer cache hash table entries: 131072 (order 7, 512k)
Page cache hash table entries: 32768 (order 5, 128k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Pentium 75 - 200 stepping 04
Checking 386/387 coupling... OK, FPU using old IRQ 13 error reporting
Checking 'hlt' instruction... OK.
Intel Pentium with F0 0F bug - workaround enabled.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xfca21
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 131072 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
apm: BIOS version 1.1 Flags 0x03 (Driver version 1.9)
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
PIIX: IDE controller on PCI bus 00 dev 38
PIIX: not 100% native mode: will probe irqs later
PIIX: neither IDE port enabled (BIOS)
PIIX: IDE controller on PCI bus 00 dev 39
PIIX: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
hda: PCemHD, ATA DISK drive
hdc: PCemCD, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: PCemHD, 2047MB w/256kB Cache, CHS=520/128/63
hdc: ATAPI 24X CD-ROM drive, 0kB Cache
Uniform CDROM driver Revision: 2.56
Floppy drive(s): fd0 is 2.88M
FDC 0 is a post-1991 82077
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
8regs : 82.296 MB/sec
32regs : 60.960 MB/sec
using fastest function: 8regs (82.296 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
hda: hda1 hda2 < hda5 hda6 >
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 64k freed
Adding Swap: 68504k swap-space (priority -1)
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x300: ac de 48 88 bb aa
eth0: NE2000 found at 0x300, using IRQ 10.
cat uses obsolete /proc/pci interface</pre>
<p>Here we see the results of hardware detection and initialization.</p>
<h3 style="text-align: left;"><a name="benchmarks">Benchmark</a></h3>
<p>Since we have some information from an equivalent physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>), let's see how well the emulated system matches up let's run some benchmarks...</p>
<p>Note: the X Windows desktop has a fair amount of overhead, so benchmarking commands have been run from a text console.</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a> and our <a href="https://boxes-of-tat.blogspot.com/p/bogomips-results.html">BogoMips Results</a>).</p>
<p>PCem system: Linux 2.2.14, RedHat Linux 6.2 (Zoot) for x86:</p>
<pre class="capturedOutput">Calibrating delay loop... 74.75 BogoMIPS</pre>
<p>Comparing our physical system and the emulated system:</p>
<table border="1">
<thead>
<tr><th colspan="2">Linux</th><th><a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a></th><th>PCem</th></tr>
</thead>
<tbody>
<tr><th>Distribution</th><th>Kernel</th><th>BogoMips</th><th>BogoMips</th></tr>
<tr><th>Slackware Linux 3.0</th><td>Linux 1.2.13</td><td align="right" style="white-space: nowrap;"><span style="white-space: normal;">29.80</span></td><td align="right" style="white-space: nowrap;">74.98</td></tr>
<tr><th>RedHat Linux 5.2 (Apollo)</th><td>Linux 2.0.36</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>RedHat Linux 6.2 (Zoot)</th><td>Linux 2.2.14</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>Mandrake Linux 7.2 (Odyssey)</th><td>Linux 2.2.17</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">?</td></tr>
<tr><th>RedHat Linux 7.3 (Valhalla)</th><td>Linux 2.4.18</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">?</td></tr>
</tbody>
</table>
<p>The PCem result looks to be close to the clock for the emulated processor, but for this kernel the BogoMips for an Intel Pentium should be about <tt>clock * 0.4</tt>. That is around 30.0, which matches the 29.80 results for tilia. The BogoMips result scale change in Linux 2.2.14 (which seems to have been patched out in the RedHat Linux 6.2 kernel), due to a change in CPU cache states before the BogoMips calculation, suggests a possible source of the difference. The close to clock result in PCem could be a side effect of how PCem implements processor caches.</p>
<h4 style="text-align: left;"><a name="openssl">OpenSSL</a></h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Note: old versions of OpenSSL <em>are not recommended</em> for actual use. If you want to run comparisons like this, and thus need to use an old release, see the <a href="https://www.openssl.org/">OpenSSL site</a> for back to 0.9.6, for even older releases back to 0.91 see <a href="http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/">http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/</a>.</p>
<p><a name="openssl_rh62"><b>RedHat Linux 6.2 (Zoot) for x86</b></a>, with default compile OpenSSL 0.9.5a</p>
<p>An OpenSSL release from early 2000 has been chosen as being contemporary with RedHat Linux 6.2, and would be representative of the time.</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 0.9.5a 1 Apr 2000</pre>
<p>Let's seen how MD5 and RSA do:</p>
<pre class="capturedOutput">$ /usr/local/ssl/bin/openssl speed md5 rsa
Doing md5 for 3s on 8 size blocks: 304053 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 213247 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 106086 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 35725 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 4950 md5's in 3.00s
Doing 512 bit private rsa's for 10s: 393 512 bit private RSA's in 10.10s
Doing 512 bit public rsa's for 10s: 3936 512 bit public RSA's in 10.00s
Doing 1024 bit private rsa's for 10s: 73 1024 bit private RSA's in 10.50s
Doing 1024 bit public rsa's for 10s: 1285 1024 bit public RSA's in 10.00s
Doing 2048 bit private rsa's for 10s: 12 2048 bit private RSA's in 10.31s
Doing 2048 bit public rsa's for 10s: 378 2048 bit public RSA's in 10.00s
Doing 4096 bit private rsa's for 10s: 2 4096 bit private RSA's in 11.72s
Doing 4096 bit public rsa's for 10s: 106 4096 bit public RSA's in 10.70s
OpenSSL 0.9.5a 1 Apr 2000
built on: Sat Apr 16 09:39:48 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -DTHREADS -D_REENTRANT -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 810.81k 4549.27k 9052.67k 12194.13k 13516.80k
sign verify sign/s verify/s
rsa 512 bits 0.0255s 0.0025s 39.3 393.6
rsa 1024 bits 0.1377s 0.0078s 7.3 128.5
rsa 2048 bits 0.8592s 0.0265s 1.2 37.8
rsa 4096 bits 5.8600s 0.0950s 0.2 10.5</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 13,516.80k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 10.5</li>
</ul>
<p>So how does this compare to <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>?</p>
<p><b>OpenSSL results</b> from tilia:</p>
<table border="1">
<tbody>
<tr><th>OS</th><th>OpenSSL<br /> Version</th><th>MD5<br /> 8,192 bytes</th><th>RSA<br /> 4,096 bytes<br /> sign/s</th><th>RSA<br /> 4,096 bytes<br /> verify/s</th></tr>
<tr><td>Linux 2.0.36 <br />RedHat Linux 5.2 <br />x86</td><td>0.9.2b <br />22 Mar 1999</td><td align="right" style="white-space: nowrap;">12,391.77k</td><td align="right">0.2</td><td align="right">11.2</td></tr>
<tr><td>Linux 2.2.14 <br />RedHat Linux 6.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,454.57k</td><td align="right">0.2</td><td align="right">11.1</td></tr>
<tr><td>Linux 2.4.18 <br />RedHat Linux 7.3 <br />x86</td><td>0.9.6b [engine] <br />9 Jul 2001</td><td align="right" style="white-space: nowrap;">6,075.73k</td><td align="right">0.1</td><td align="right">4.5</td></tr>
</tbody>
</table>
<p>From these results it seems the PCem system has slightly better performance for MD5 (approx. +8%), and slightly worse for RSA (approx. -5.5%), with OpenSSL 0.9.5a on Linux 2.2.14, compared to the physical hardware in tilia.</p>
<p>For reference a full run of all the methods provided by OpenSSL 0.9.5a on this PCem system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 0.9.5a 1 Apr 2000
built on: Sat Apr 16 09:39:48 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx)
compiler: gcc -DTHREADS -D_REENTRANT -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 31.84k 87.10k 117.42k 128.34k 132.04k
mdc2 150.17k 155.03k 155.65k 155.65k 155.65k
md5 808.99k 4541.44k 9118.04k 12187.31k 13516.80k
hmac(md5) 307.84k 2122.67k 5800.62k 10231.81k 13167.27k
sha1 478.69k 2313.22k 4137.98k 5161.98k 5562.37k
rmd160 386.27k 1798.44k 3126.70k 3830.78k 4106.92k
rc4 6048.31k 8648.28k 9066.41k 9176.41k 9202.35k
des cbc 1405.45k 1570.33k 1590.36k 1595.39k 1597.44k
des ede3 532.08k 559.38k 562.43k 563.20k 563.37k
idea cbc 514.02k 555.69k 560.21k 561.83k 562.52k
rc2 cbc 488.25k 528.47k 533.25k 533.85k 535.21k
rc5-32/12 cbc 3457.66k 5018.30k 5220.44k 5273.26k 5286.57k
blowfish cbc 2602.71k 3200.49k 3281.32k 3302.06k 3309.57k
cast cbc 2273.69k 2720.64k 2778.79k 2793.13k 2798.93k
sign verify sign/s verify/s
rsa 512 bits 0.0255s 0.0025s 39.2 393.6
rsa 1024 bits 0.1377s 0.0078s 7.3 127.7
rsa 2048 bits 0.8600s 0.0264s 1.2 37.8
rsa 4096 bits 5.8600s 0.0951s 0.2 10.5
sign verify sign/s verify/s
dsa 512 bits 0.0248s 0.0302s 40.3 33.2
dsa 1024 bits 0.0734s 0.0896s 13.6 11.2
dsa 2048 bits 0.2454s 0.3015s 4.1 3.3</pre>
<h4 style="text-align: left;"><a name="thoughts">Thoughts</a></h4>
<p>PCem works well for getting a reasonably close match to old hardware, the slight difference in performance is not going to be an issue in most cases.</p>
<p>The large difference in the BogoMips result (tilia: 29.80; PCem: 74.75) could be due to differences in processor state. In particular the effects of cache states are not handled in most emulators, and the BogoMips busy-doing-nothing method could have interactions with the dynamic recompiler used in PCem and the host CPU's instruction processing. The result coming out close to the emulated processor clock looks connected.</p>
<h4 style="text-align: left;"><a name="further_references">Further Sources</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-8739870951143418162022-05-14T08:40:00.005+01:002022-05-21T16:03:53.784+01:00Notes on OpenSSL Performance<h3 align="left">OpenSSL</h3>
<p><a href="https://www.openssl.org/">OpenSSL</a> can use three different implementations of the cryptographic methods, providing different performance tiers:</p>
<ol type="a">
<li>Portable C-based methods: most portable but typically the slowest.</li>
<li>Processor family assembler based methods: faster but less portable, and may have problems on some processor compatible implementations</li>
<li>Methods utilizing hardware acceleration: typically the fastest option, but has specific hardware requirements</li>
</ol>
<p>A simple compile time option ('no-asm') disables the assembler implementations used by default, so a. & b. are simple to test. For c. appropriate hardware is required. Fortunately three of the options supported by OpenSSL are available to us:</p>
<ol type="1">
<li>VIA PadLock (<a href="https://en.wikipedia.org/wiki/VIA_PadLock">Wikipedia</a>): as implemented in the VIA C3 Nehemiah processors (<a href="https://en.wikipedia.org/wiki/VIA_C3">Wikipedia</a>)</li>
<li><a href="https://www.intel.co.uk/content/www/uk/en/architecture-and-technology/advanced-encryption-standard-aes/data-protection-aes-general-technology.html">Intel Advanced Encryption Standard New Instructions</a> (AES-NI; <a href="https://en.wikipedia.org/wiki/AES_instruction_set#x86_architecture_processors">Wikipedia</a>): implemented on Intel x86_64 since 2010 and AMD x86_64 processors since 2011</li>
<li><a href="https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sha-extensions.html">Intel SHA extensions</a> (SHA Ext.; <a href="https://en.wikipedia.org/wiki/Intel_SHA_extensions">Wikipedia</a>): implemented on Intel x86_64 processors from 2016 and AMD Ryzen from 2017</li>
</ol>
<p>To illustrate the effect on performance a set of methods have been selected which show the effects of each type of implementation.</p>
<p>Using the results for 8,192 byte blocks:</p>
<table border="1">
<thead>
<tr><th colspan="7"><em>VIA Luke @ 1.0 GHz</em></th></tr>
<tr><th colspan="7">OpenSSL 1.1.0l on Debian Linux 11 for x86</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">6,916.78k</td><td align="right">9,684.21k</td><td align="right">80,191.49k</td><td align="right">36,410.71k</td><td align="right">12,064.09k</td><td align="right">1,832.28k</td></tr>
<tr><th align="left">asm</th><td align="right">11,122.01k</td><td align="right">9,661.10k</td><td align="right">106,332.16k</td><td align="right">45,978.97k</td><td align="right">21,534.04k</td><td align="right">9,393.49k</td></tr>
<tr><th align="left">Kernel<sup>d,e</sup></th><td align="right">11,127.92k</td><td align="right">9,655.64k</td><td align="right">104,336.04k</td><td align="right">45,566.63k</td><td align="right">21,515.64k</td><td align="right">9,374.38k</td></tr>
<tr><th align="left">Padlock<sup>b</sup></th><td align="right">520,596.10k</td><td align="right">9,662.71k</td><td align="right">104,357.28k</td><td align="right">45,472.50k</td><td align="right">21,460.31k</td><td align="right">9,376.82k</td></tr>
</tbody>
<thead>
<tr><th colspan="7">OpenSSL 3.0.2 on Debian Linux 11 for x86</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA<sup>a</sup> CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">6,916.47k</td><td align="right">9,662.71k</td><td align="right">78,665.19k</td><td align="right">36,050.26k</td><td align="right">12,125.81k</td><td align="right">1,829.55k</td></tr>
<tr><th align="left">asm</th><td align="right">11,127.47k</td><td align="right">9,655.64k</td><td align="right">103,931.19k</td><td align="right">45,509.29k</td><td align="right">21,493.73k</td><td align="right">9,368.92k</td></tr>
<tr><th align="left">Kernel<sup>d</sup></th><td align="right">2,033,909.76k</td><td align="right">9,627.65k</td><td align="right">104,328.02k</td><td align="right">45,512.02k</td><td align="right">21,442.15k</td><td align="right">9,366.19k</td></tr>
<tr><th align="left">Padlock<sup>b</sup></th><td align="right">515,844.78k</td><td align="right">9,658.37k</td><td align="right">103,765.33k</td><td align="right">45,520.21k</td><td align="right">21,435.73k</td><td align="right">9,368.92k</td></tr>
</tbody>
<thead>
<tr><th colspan="7"><em>AMD Ryzen 5 3600</em></th></tr>
<tr><th colspan="7">OpenSSL 1.1.0l with Debian Linux 11 for x86_64</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">212,366.68k</td><td align="right">119,010.65k</td><td align="right">749,469.70k</td><td align="right">845,922.30k</td><td align="right">307,301.03k</td><td align="right">553,937.58k</td></tr>
<tr><th align="left">asm</th><td align="right">232,721.07k</td><td align="right">119,545.86k</td><td align="right">793,971.37k</td><td align="right">1,050,842.45k</td><td align="right">470,701.40k</td><td align="right">604,972.40k</td></tr>
<tr><th align="left">AES-NI & SHA Ext.</th><td align="right">1,086,559.57k</td><td align="right">119,250.94k</td><td align="right">790,495.23k</td><td align="right">1,027,295.91k</td><td align="right">470,671.36k</td><td align="right">605,863.94k</td></tr>
<tr><th align="left">Kernel<sup>d,e</sup></th><td align="right">1,092,332.20k</td><td align="right">120,416.94k</td><td align="right">787,464.19k</td><td align="right">1,029,693.44k</td><td align="right">475,791.36k</td><td align="right">601,159.00k</td></tr>
</tbody>
<thead>
<tr><th colspan="7">OpenSSL 3.0.2 with Debian Linux 11 for x86_64</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA<sup>a</sup> CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">210,668.20k</td><td align="right">117,587.97k</td><td align="right">740,698.79k</td><td align="right">832,288.09k</td><td align="right">310,059.01k</td><td align="right">559,205.03k</td></tr>
<tr><th align="left">asm<sup>c</sup></th><td align="right">1,097,910.95k</td><td align="right">119,048.87k</td><td align="right">789,848.06k</td><td align="right">1,036,997.97k</td><td align="right">473,503.06k</td><td align="right">599,274.84k</td></tr>
<tr><th align="left">Kernel<sup>d</sup></th><td align="right">37,086,822.40k</td><td align="right">120,220.33k</td><td align="right">793,990.49k</td><td align="right">1,041,334.27k</td><td align="right">474,685.44k</td><td align="right">598,278.14k</td></tr>
</tbody>
</table>
<p>Notes:</p>
<ol type="a">
<li>In OpenSSL 3.0.2 access to the IDEA method requires use of the <tt>legacy</tt> provider (to use without installing <tt>$ LD_LIBRARY_PATH=`pwd` apps/openssl speed -provider-path ./providers/ -provider legacy -provider default idea</tt>)</li>
<li>The OpenSSL PadLock engine only supports AES on our VIA Luke (C3 Nehemiah) based system, more recent versions of the VIA PadLock hardware provide additional methods, including SHA</li>
<li>On systems that support AES-NI and/or SHA Ext. the standard assembler implementations in OpenSSL 3.0.2, detect and use the instruction set extensions to accelerate the methods</li>
<li>The OpenSSL 'afalg' engine (used for "Kernel") uses the <a href="https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html">Linux Kernel Crypto API (AF_ALG)</a> to access the methods in the Linux kernel, which make use of hardware acceleration and processor features beyond those used by the standard assembler implementations in OpenSSL</li>
<li>The OpenSSL 1.1.0 implementation of the 'afalg' engine only supports use of the kernel methods for AES-128-CBC</li>
</ol>
<span><a name='more'></a></span>
<hr />
<h3 align="left">Additional Notes & Raw Results</h3>
<ul>
<li><a href="A.">A. VIA Luke running Debian Linux 11, OpenSSL 1.1.0l</a></li>
<li><a href="A.1.">A.1. VIA Luke, OpenSSL 1.1.0l, C methods only (no-asm)</a></li>
<li><a href="A.2.">A.2. VIA Luke, OpenSSL 1.1.0l, assembler methods</a></li>
<li><a href="A.3.">A.3. VIA Luke, OpenSSL 1.1.0l, use kernel methods (AF_ALG)</a></li>
<li><a href="A.4.">A.4. VIA Luke, OpenSSL 1.1.0l, use VIA Padlock</a></li>
<li><a href="B.">B. VIA Luke running Debian Linux 11, OpenSSL 3.0.2</a></li>
<li><a href="B.1.">B.1. VIA Luke, OpenSSL 3.0.2, C methods only (no-asm)</a></li>
<li><a href="B.2.">B.2. VIA Luke, OpenSSL 3.0.2, assembler methods</a></li>
<li><a href="B.3.">B.3. VIA Luke, OpenSSL 3.0.2, use kernel methods (AF_ALG)</a></li>
<li><a href="B.4.">B.4. VIA Luke, OpenSSL 3.0.2, use VIA Padlock</a></li>
<li><a href="C.">C. AMD Ryzen running Debian Linux 11, OpenSSL 1.1.0l</a></li>
<li><a href="C.1.">C.1. AMD Ryzen, OpenSSL 1.1.0l, C methods only (no-asm)</a></li>
<li><a href="C.2.">C.2. AMD Ryzen, OpenSSL 1.1.0l, assembler methods</a></li>
<li><a href="C.3.">C.3. AMD Ryzen, OpenSSL 1.1.0l, use VIA Padlock</a></li>
<li><a href="C.4.">C.4. AMD Ryzen, OpenSSL 1.1.0l, use kernel methods (AF_ALG)</a></li>
<li><a href="D.">D. AMD Ryzen running Debian Linux 11, OpenSSL 3.0.2</a></li>
<li><a href="D.1.">D.1. AMD Ryzen, OpenSSL 3.0.2, C methods only (no-asm)</a></li>
<li><a href="D.2.">D.2. AMD Ryzen, OpenSSL 3.0.2, assembler methods</a></li>
<li><a href="D.3.">D.3. AMD Ryzen, OpenSSL 3.0.2, use VIA Padlock</a></li>
<li><a href="D.4.">D.4 AMD Ryzen, OpenSSL 3.0.2, use kernel methods (AF_ALG)</a></li>
<li><a href="Z.">Z. VIA C3 Nehemiah running NetBSD 9.2 and OpenSSL 1.1.0l</a></li>
<li><a href="Z.1.">Z.1. NetBSD 9.2, OpenSSL 1.1.0l, no assembler compile</a></li>
<li><a href="Z.2.">Z.2. NetBSD 9.2, OpenSSL 1.1.0l, default compile</a></li>
<li><a href="Z.3.">Z.3. NetBSD 9.2, OpenSSL 1.1.0l, default compile VIA Padlock</a></li>
</ul>
<!--Section A. VIA Luke @ 1.0 Ghz, Debian Linux 11, OpenSSL 1.1.0l-->
<h3 align="left"><a name="A.">A. VIA Luke running Debian Linux 11, OpenSSL 1.1.0l</a></h3>
<p>The second generation of VIA's Corefusion (<a href="https://en.wikipedia.org/wiki/VIA_CoreFusion">Wikipedia</a>) x86 processor, VIA Luke, features a VIA C3 Nehemiah core with the VIA PadLock (<a href="https://en.wikipedia.org/wiki/VIA_PadLock">Wikipedia</a>) cryptographic accelerator. The PadLock implementation in Luke provides a hardware Random Number Generator (RNG) and the Advanced Cryptography Engine (ACE) supporting AES (Advanced Encryption Standard; <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">Wikipedia</a>).</p>
<p>OpenSSL implemented a 'padlock' engine to access the ACE acceleration of AES back in 2005 with the release of OpenSSL 0.9.8. The VIA C7 enhanced ACE, adding SHA (Secure Hash Algorithms) and PMM (PadLock Montgomery Multiplier), and support was added in OpenSSL in 2006. Some Zhaoxin processors feature PadLock with SM3 (<a href="https://en.wikipedia.org/wiki/SM3_(hash_function)">Wikipedia</a>) and SM4 (<a href="https://en.wikipedia.org/wiki/SM4_(cipher)">SM4</a>) added.</p>
<table border="1">
<thead>
<tr><th colspan="7">VIA Luke @ 1.0 GHz</th></tr>
<tr><th colspan="7">OpenSSL 1.1.0l on Debian Linux 11 for x86</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">6,916.78k</td><td align="right">9,684.21k</td><td align="right">80,191.49k</td><td align="right">36,410.71k</td><td align="right">12,064.09k</td><td align="right">1,832.28k</td></tr>
<tr><th align="left">asm</th><td align="right">11,122.01k</td><td align="right">9,661.10k</td><td align="right">106,332.16k</td><td align="right">45,978.97k</td><td align="right">21,534.04k</td><td align="right">9,393.49k</td></tr>
<tr><th align="left">Kernel</th><td align="right">11,127.92k</td><td align="right">9,655.64k</td><td align="right">104,336.04k</td><td align="right">45,566.63k</td><td align="right">21,515.64k</td><td align="right">9,374.38k</td></tr>
<tr><th align="left">Padlock</th><td align="right">520,596.10k</td><td align="right">9,662.71k</td><td align="right">104,357.28k</td><td align="right">45,472.50k</td><td align="right">21,460.31k</td><td align="right">9,376.82k</td></tr>
</tbody>
</table>
<p>Notes:</p>
<ul>
<li>During the build tests (<tt>make test</tt>) the 'fuzz' test fails due to a missing update (see <a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c20225928fed2fb4c7512f4655207478ada6caf">repo/gentoo.git - Official Gentoo ebuild repository</a> for a patch that fixes the issue).</li>
<li>A runtime issue with the Elliptic Curve methods means some ECDH methods fail to give meaningful results, so the benchmark builds disable these methods (<tt>no-ec</tt>).</li>
<li>The 'afalg' engine in OpenSSL 1.1.0l only supports AES-128 CBC, so no improvement is seen in our selected comparison methods. From a test run 'afalg' increases throughput for AES-128 CBC from ~15 MB/s to ~2.7 GB/s on this system</li>
</ul>
<h3 align="left"><a name="A.1.">A.1. VIA Luke, OpenSSL 1.1.0l, C methods only (no-asm)</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the no assembler option (<tt>$ ./config no-asm no-ec</tt>), gives a build using the portable C implementations for the methods.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 1216.39k 1349.70k 1389.96k 1400.27k 1403.56k 1403.56k
md4 6043.15k 19801.11k 51304.53k 85481.47k 106300.82k 108276.39k
md5 11623.79k 29433.43k 56385.29k 73045.33k 80191.49k 80820.40k
hmac(md5) 4272.43k 13891.37k 36658.69k 61732.47k 77897.97k 79107.41k
sha1 6812.00k 15794.66k 27587.24k 33936.04k 36410.71k 36616.59k
rmd160 3816.28k 10080.21k 20185.69k 26923.35k 29886.96k 30086.49k
rc4 30881.65k 34105.09k 34865.40k 35200.68k 35291.14k 35039.91k
des cbc 8691.31k 9165.61k 9332.22k 9374.04k 9390.56k 9360.73k
des ede3 3266.32k 3333.37k 3353.60k 3359.40k 3361.45k 3354.03k
idea cbc 8881.84k 9454.71k 9608.36k 9648.13k 9684.21k 9628.33k
seed cbc 12766.92k 13690.90k 13939.80k 14007.30k 14032.90k 13959.39k
rc2 cbc 6628.12k 6978.54k 7073.79k 7098.37k 7085.12k 7094.27k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 14833.34k 16211.05k 16626.90k 16685.40k 16722.60k 16635.22k
cast cbc 11473.94k 12236.09k 12494.85k 12571.15k 12520.11k 12539.22k
aes-128 cbc 8837.10k 9250.20k 9391.10k 9461.14k 9437.18k 9404.42k
aes-192 cbc 7549.75k 7851.81k 7950.34k 7975.59k 7984.47k 7934.46k
aes-256 cbc 6590.26k 6816.68k 6893.06k 6919.26k 6916.78k 6897.66k
camellia-128 cbc 13046.99k 14029.55k 14296.15k 14382.05k 14398.81k 14314.15k
camellia-192 cbc 10317.05k 10891.34k 11078.14k 11128.83k 11143.85k 11097.95k
camellia-256 cbc 10315.41k 10888.94k 11080.02k 11129.30k 11130.20k 11091.97k
sha256 2720.35k 5750.36k 9502.46k 11372.93k 12064.09k 12118.70k
sha512 228.66k 914.00k 1232.04k 1649.66k 1832.28k 1841.15k
whirlpool 1152.68k 2356.39k 3841.72k 4559.87k 4825.09k 4849.66k
aes-128 ige 8656.05k 9140.01k 9289.98k 9328.98k 9338.33k 9273.34k
aes-192 ige 7420.33k 7761.34k 7877.67k 7905.96k 7910.74k 7864.32k
aes-256 ige 6492.42k 6749.46k 6838.70k 6855.25k 6853.24k 6834.00k
ghash 4417.29k 4504.66k 4537.30k 4544.51k 4549.29k 4546.83k
sign verify sign/s verify/s
rsa 512 bits 0.003229s 0.000257s 309.7 3888.2
rsa 1024 bits 0.018160s 0.000814s 55.1 1228.5
rsa 2048 bits 0.113258s 0.002835s 8.8 352.7
rsa 3072 bits 0.339667s 0.006174s 2.9 162.0
rsa 4096 bits 0.744286s 0.010050s 1.3 99.5
rsa 7680 bits 4.436667s 0.035426s 0.2 28.2
rsa 15360 bits 33.060000s 0.137260s 0.0 7.3
sign verify sign/s verify/s
dsa 512 bits 0.004530s 0.003398s 220.7 294.3
dsa 1024 bits 0.011801s 0.010539s 84.7 94.9
dsa 2048 bits 0.037955s 0.034567s 26.3 28.9</pre>
<p>These results give a performance baseline for this platform.</p>
<h3 align="left"><a name="A.2.">A.2. VIA Luke, OpenSSL 1.1.0l, assembler methods</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the default options (<tt>$ ./config no-ec</tt>), gives a build with the assembler methods enabled.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 1231.24k 1376.94k 1418.75k 1429.82k 1433.60k 1435.65k
md4 5709.55k 19328.21k 51612.33k 88431.27k 112065.46k 114300.25k
md5 11881.41k 34809.17k 70811.75k 95242.24k 106332.16k 107266.05k
hmac(md5) 4605.06k 15539.84k 43113.64k 78534.31k 103164.22k 105600.34k
sha1 7529.77k 18275.74k 33563.32k 42401.79k 45978.97k 46293.05k
rmd160 3527.73k 9388.31k 18618.20k 24743.59k 27368.98k 27574.27k
rc4 35951.06k 42033.39k 45003.94k 45754.31k 45828.78k 45760.51k
des cbc 10149.31k 10655.74k 10806.87k 10843.14k 10858.52k 10857.13k
des ede3 3651.79k 3706.65k 3735.02k 3739.65k 3741.01k 3741.01k
idea cbc 8881.83k 9455.85k 9599.91k 9648.13k 9661.10k 9659.96k
seed cbc 12766.79k 13693.85k 13935.27k 13996.84k 14036.36k 14030.17k
rc2 cbc 6625.95k 6977.98k 7073.71k 7122.11k 7085.12k 7105.19k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 19068.84k 20448.28k 20788.66k 20916.06k 20930.56k 20938.75k
cast cbc 11475.89k 12226.88k 12492.97k 12563.46k 12587.64k 12582.91k
aes-128 cbc 6850.50k 7110.91k 7285.13k 15298.01k 15447.38k 15444.65k
aes-192 cbc 5687.63k 5958.40k 6061.99k 13012.99k 13093.55k 13090.71k
aes-256 cbc 4919.92k 5087.45k 5143.11k 11076.38k 11122.01k 11130.20k
camellia-128 cbc 11987.41k 15300.51k 16387.67k 16721.92k 16823.84k 16849.77k
camellia-192 cbc 9761.94k 11774.58k 12487.17k 12682.92k 12741.29k 12744.33k
camellia-256 cbc 9733.36k 11775.45k 12530.90k 12686.60k 12738.56k 12741.29k
sha256 3757.12k 8365.14k 15961.51k 19976.93k 21534.04k 21681.49k
sha512 1121.85k 4511.76k 6224.90k 8425.81k 9393.49k 9473.03k
whirlpool 2548.74k 5454.61k 9206.70k 11109.37k 11818.33k 11872.94k
aes-128 ige 6576.01k 6873.34k 6970.37k 6994.94k 6995.97k 7011.47k
aes-192 ige 5494.31k 5741.35k 5845.39k 5869.23k 5876.39k 5857.69k
aes-256 ige 4778.57k 4928.83k 4981.33k 4994.73k 4994.92k 5013.83k
ghash 14667.08k 20156.33k 22210.15k 22831.45k 23035.90k 23046.83k
sign verify sign/s verify/s
rsa 512 bits 0.002296s 0.000200s 435.6 5011.3
rsa 1024 bits 0.014245s 0.000698s 70.2 1432.7
rsa 2048 bits 0.098431s 0.002584s 10.2 386.9
rsa 3072 bits 0.303030s 0.005677s 3.3 176.2
rsa 4096 bits 0.685333s 0.009980s 1.5 100.2
rsa 7680 bits 4.226667s 0.034567s 0.2 28.9
rsa 15360 bits 32.490000s 0.141408s 0.0 7.1
sign verify sign/s verify/s
dsa 512 bits 0.003438s 0.002715s 290.9 368.3
dsa 1024 bits 0.009980s 0.008943s 100.2 111.8
dsa 2048 bits 0.034704s 0.032226s 28.8 31.0</pre>
<p>The performance gains from the assembler implementations are evident, and demonstrate which methods have assembler implementations.</p>
<h3 align="left"><a name="A.3.">A.3. VIA Luke, OpenSSL 1.1.0l, use kernel methods (AF_ALG)</a></h3>
<p>The default compile (see A.2.) includes the 'afalg' engine, which provides access to the <a href="https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html">Linux Kernel Crypto API (AF_ALG)</a> method implementations. Details of the available kernel crypto methods can be found in <tt>/proc/crypto</tt>:</p>
<pre class="capturedOutput">$ cat /proc/crypto | grep '^name'
name : cbc(aes)
name : ecb(aes)
name : aes
name : crc32c
name : crct10dif
name : pkcs1pad(rsa,sha256)
name : hmac(sha256)
name : hmac(sha1)
name : lzo-rle
name : lzo-rle
name : lzo
name : lzo
name : zlib-deflate
name : deflate
name : deflate
name : sha224
name : sha256
name : sha1
name : md5
name : ecb(cipher_null)
name : digest_null
name : compress_null
name : cipher_null
name : rsa
name : dh</pre>
<p>However the 'afalg' engine only supports a subset:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC]</pre>
<p>So this implementation only supports the kernel methods for AES-128 CBC:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp aes-128-cbc
engine "afalg" set.
Doing aes-128-cbc for 3s on 16 size blocks: 89213 aes-128-cbc's in 0.25s
Doing aes-128-cbc for 3s on 64 size blocks: 89304 aes-128-cbc's in 0.27s
Doing aes-128-cbc for 3s on 256 size blocks: 84505 aes-128-cbc's in 0.23s
Doing aes-128-cbc for 3s on 1024 size blocks: 83619 aes-128-cbc's in 0.24s
Doing aes-128-cbc for 3s on 8192 size blocks: 53771 aes-128-cbc's in 0.16s
Doing aes-128-cbc for 3s on 16384 size blocks: 33297 aes-128-cbc's in 0.11s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 5709.63k 21168.36k 94057.74k 356774.40k 2753075.20k 4959436.80k</pre>
<p>In this version of OpenSSL the <tt>-evp</tt> is required to use the accelerated implementation, without it the option the normal version of the method is used:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg aes-128-cbc
engine "afalg" set.
Doing aes-128 cbc for 3s on 16 size blocks: 1276875 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 64 size blocks: 333337 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 84598 aes-128 cbc's in 2.98s
Doing aes-128 cbc for 3s on 1024 size blocks: 44947 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 5658 aes-128 cbc's in 2.99s
Doing aes-128 cbc for 3s on 16384 size blocks: 2828 aes-128 cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128 cbc 6832.78k 7111.19k 7267.48k 15341.91k 15501.78k 15444.65k</pre>
<p>So the difference for AES-128 CBC is very significant: ~15 MB/s normally and ~2.7 GB/s with the kernel method.</p>
<p>Sadly this isn't one of our comparison methods, and they aren't accelerated. Still let's collect figures for them:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp aes-256-cbc
engine "afalg" set.
Doing aes-256-cbc for 3s on 16 size blocks: 855812 aes-256-cbc's in 2.96s
Doing aes-256-cbc for 3s on 64 size blocks: 234527 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 59972 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 32368 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 4048 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 16384 size blocks: 2038 aes-256-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 4626.01k 5003.24k 5117.61k 11048.28k 11127.92k 11130.20k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp idea
engine "afalg" set.
Doing idea-cbc for 3s on 16 size blocks: 1513297 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 64 size blocks: 431592 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 256 size blocks: 111836 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 1024 size blocks: 28037 idea-cbc's in 2.98s
Doing idea-cbc for 3s on 8192 size blocks: 3536 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 16384 size blocks: 1769 idea-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
idea-cbc 8070.92k 9207.30k 9543.34k 9634.19k 9655.64k 9661.10k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp md5
engine "afalg" set.
Doing md5 for 3s on 16 size blocks: 1085845 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 895226 md5's in 2.98s
Doing md5 for 3s on 256 size blocks: 587697 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 243445 md5's in 2.99s
Doing md5 for 3s on 8192 size blocks: 38209 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 19331 md5's in 2.98s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 5791.17k 19226.33k 50150.14k 83373.81k 104336.04k 106281.58k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha1
engine "afalg" set.
Doing sha1 for 3s on 16 size blocks: 806595 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 580960 sha1's in 2.98s
Doing sha1 for 3s on 256 size blocks: 323753 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 115538 sha1's in 2.98s
Doing sha1 for 3s on 8192 size blocks: 16687 sha1's in 3.00s
Doing sha1 for 3s on 16384 size blocks: 8434 sha1's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha1 4301.84k 12476.99k 27626.92k 39701.65k 45566.63k 46060.89k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha256
engine "afalg" set.
Doing sha256 for 3s on 16 size blocks: 510554 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 322074 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 168798 sha256's in 2.98s
Doing sha256 for 3s on 1024 size blocks: 56691 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 7853 sha256's in 2.99s
Doing sha256 for 3s on 16384 size blocks: 3957 sha256's in 2.99s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha256 2722.95k 6870.91k 14500.77k 19350.53k 21515.64k 21682.77k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha512
engine "afalg" set.
Doing sha512 for 3s on 16 size blocks: 187900 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 187783 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 69529 sha512's in 2.98s
Doing sha512 for 3s on 1024 size blocks: 24333 sha512's in 3.00s
Doing sha512 for 3s on 8192 size blocks: 3433 sha512's in 3.00s
Doing sha512 for 3s on 16384 size blocks: 1732 sha512's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha512 1002.13k 4006.04k 5972.96k 8305.66k 9374.38k 9459.03k</pre>
<p>Sadly no improvement here.</p>
<h3 align="left"><a name="A.4.">A.4. VIA Luke, OpenSSL 1.1.0l, use VIA Padlock</a></h3>
<p>The default compile (see A.2.) includes the 'padlock' engine, which provides access to the VIA PadLock (<a href="https://en.wikipedia.org/wiki/VIA_PadLock">Wikipedia</a>) method implementations utilizing the hardware acceleration in this processor:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine padlock -c
(padlock) VIA PadLock (no-RNG, ACE)
[AES-128-ECB, AES-128-CBC, AES-128-CFB, AES-128-OFB, AES-128-CTR, AES-192-ECB, AES-192-CBC, AES-192-CFB, AES-192-OFB, AES-192-CTR, AES-256-ECB, AES-256-CBC, AES-256-CFB, AES-256-OFB, AES-256-CTR]</pre>
<p>The VIA C3 Nehemiah core in the VIA Luke processor, only supports AES in its ACE version. But unlike the 'afalg' engine more of the AES methods are supported, including our selected comparison method:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp aes-256-cbc
engine "padlock" set.
Doing aes-256-cbc for 3s on 16 size blocks: 7997043 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 64 size blocks: 6521328 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 3643683 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1325294 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 189377 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 16384 size blocks: 96281 aes-256-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 42937.14k 139121.66k 310927.62k 452367.02k 520596.10k 525822.63k</pre>
<p>Note the <tt>-evp</tt> is required to use the accelerated implementation, without the option the normal version of the method is used:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock aes-256-cbc
engine "padlock" set.
Doing aes-256 cbc for 3s on 16 size blocks: 922597 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 64 size blocks: 238365 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 256 size blocks: 58655 aes-256 cbc's in 2.93s
Doing aes-256 cbc for 3s on 1024 size blocks: 32214 aes-256 cbc's in 2.98s
Doing aes-256 cbc for 3s on 8192 size blocks: 4076 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 16384 size blocks: 2039 aes-256 cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256 cbc 4936.97k 5102.13k 5124.81k 11069.51k 11130.20k 11135.66k</pre>
<p>Which shows the difference the hardware makes: 520.5 MB/s with hardware and 11.1 MB/s without.</p>
<p>Doing this for each of the other methods in the comparison:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp idea
engine "padlock" set.
Doing idea-cbc for 3s on 16 size blocks: 1513517 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 64 size blocks: 428713 idea-cbc's in 2.98s
Doing idea-cbc for 3s on 256 size blocks: 111843 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 1024 size blocks: 28216 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 8192 size blocks: 3515 idea-cbc's in 2.98s
Doing idea-cbc for 3s on 16384 size blocks: 1758 idea-cbc's in 2.99s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
idea-cbc 8072.09k 9207.26k 9543.94k 9631.06k 9662.71k 9633.13k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp md5
engine "padlock" set.
Doing md5 for 3s on 16 size blocks: 1078848 md5's in 2.98s
Doing md5 for 3s on 64 size blocks: 900872 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 587686 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 244869 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 37962 md5's in 2.98s
Doing md5 for 3s on 16384 size blocks: 19446 md5's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 5792.47k 19218.60k 50149.21k 83581.95k 104357.28k 106201.09k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp sha1
engine "padlock" set.
Doing sha1 for 3s on 16 size blocks: 801140 sha1's in 2.98s
Doing sha1 for 3s on 64 size blocks: 586278 sha1's in 3.00s
Doing sha1 for 3s on 256 size blocks: 324677 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 116434 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 16486 sha1's in 2.97s
Doing sha1 for 3s on 16384 size blocks: 8384 sha1's in 2.98s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha1 4301.42k 12507.26k 27705.77k 39742.81k 45472.50k 46095.12k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp sha256
engine "padlock" set.
Doing sha256 for 3s on 16 size blocks: 510056 sha256's in 2.99s
Doing sha256 for 3s on 64 size blocks: 321581 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 169890 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 55999 sha256's in 2.97s
Doing sha256 for 3s on 8192 size blocks: 7859 sha256's in 3.00s
Doing sha256 for 3s on 16384 size blocks: 3960 sha256's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha256 2729.40k 6860.39k 14497.28k 19307.40k 21460.31k 21626.88k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine padlock -evp sha512
engine "padlock" set.
Doing sha512 for 3s on 16 size blocks: 186202 sha512's in 2.98s
Doing sha512 for 3s on 64 size blocks: 187168 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 69920 sha512's in 3.00s
Doing sha512 for 3s on 1024 size blocks: 24184 sha512's in 2.98s
Doing sha512 for 3s on 8192 size blocks: 3411 sha512's in 2.98s
Doing sha512 for 3s on 16384 size blocks: 1732 sha512's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha512 999.74k 3992.92k 5966.51k 8310.21k 9376.82k 9459.03k</pre>
<p>As expected the other methods for comparison don't show any acceleration.</p>
<!--Section B. VIA Luke @ 1.0 Ghz, Debian Linux 11, OpenSSL 3.0.2-->
<h3 align="left"><a name="B.">B. VIA Luke running Debian Linux 11, OpenSSL 3.0.2</a></h3>
<p>The second generation of VIA's Corefusion (<a href="https://en.wikipedia.org/wiki/VIA_CoreFusion">Wikipedia</a>) x86 processor, VIA Luke, features a VIA C3 Nehemiah core with the VIA PadLock (<a href="https://en.wikipedia.org/wiki/VIA_PadLock">Wikipedia</a>) cryptographic accelerator. The PadLock implementation in Luke provides a hardware Random Number Generator (RNG) and the Advanced Cryptography Engine (ACE) supporting AES (Advanced Encryption Standard; <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">Wikipedia</a>).</p>
<p>OpenSSL implemented a 'padlock' engine to access the ACE acceleration of AES back in 2005 with the release of OpenSSL 0.9.8. The VIA C7 enhanced ACE, adding SHA (Secure Hash Algorithms) and PMM (PadLock Montgomery Multiplier), and support was added in OpenSSL in 2006. Some Zhaoxin processors feature PadLock with SM3 (<a href="https://en.wikipedia.org/wiki/SM3_(hash_function)">Wikipedia</a>) and SM4 (<a href="https://en.wikipedia.org/wiki/SM4_(cipher)">SM4</a>) added.</p>
<table border="1">
<thead>
<tr><th colspan="7">VIA Luke @ 1.0 GHz</th></tr>
<tr><th colspan="7">OpenSSL 3.0.2 on Debian Linux 11 for x86</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">6,916.47k</td><td align="right">9,662.71k</td><td align="right">78,665.19k</td><td align="right">36,050.26k</td><td align="right">12,125.81k</td><td align="right">1,829.55k</td></tr>
<tr><th align="left">asm</th><td align="right">11,127.47k</td><td align="right">9,655.64k</td><td align="right">103,931.19k</td><td align="right">45,509.29k</td><td align="right">21,493.73k</td><td align="right">9,368.92k</td></tr>
<tr><th align="left">Kernel</th><td align="right">2,033,909.76k</td><td align="right">9,627.65k</td><td align="right">104,328.02k</td><td align="right">45,512.02k</td><td align="right">21,442.15k</td><td align="right">9,366.19k</td></tr>
<tr><th align="left">Padlock</th><td align="right">515,844.78k</td><td align="right">9,658.37k</td><td align="right">103,765.33k</td><td align="right">45,520.21k</td><td align="right">21,435.73k</td><td align="right">9,368.92k</td></tr>
</tbody>
</table>
<p>Notes:</p>
<ul>
<li>While OpenSSL 3.0.2 changes the APIs the command-line interface remains the same</li>
<li>OpenSSL 3.x considers IDEA a "legacy" method. To include "legacy" methods in "speed" runs use the <tt>-provider legacy -provider default</tt> options.</li>
<li>The 'afalg' engine in OpenSSL 3.0.2 only supports AES-128 CBC, so no improvement is seen in our selected comparison methods. From a test run 'afalg' increases throughput for AES-128 CBC from ~15 MB/s to ~2.7 GB/s on this system</li>
</ul>
<h3 align="left"><a name="B.1.">B.1. VIA Luke, OpenSSL 3.0.2, C methods only (no-asm)</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the no assembler option (<tt>$ ./config no-asm</tt>), gives a build using the portable C implementations for the methods.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Sun May 1 13:04:48 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: N/A
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 1170.95k 1337.15k 1385.13k 1398.10k 1403.56k 1401.99k
md4 5395.54k 18021.31k 48302.34k 83558.74k 105521.15k 106501.46k
md5 5088.44k 16306.17k 40686.59k 64930.47k 78665.19k 79335.95k
sha1 3698.00k 10608.15k 22751.79k 31770.38k 36050.26k 36301.48k
rmd160 3510.66k 9560.31k 19649.45k 26672.81k 29721.34k 29975.02k
sha256 2098.78k 4985.83k 8995.70k 11200.98k 12125.81k 12173.31k
sha512 222.62k 891.72k 1221.41k 1643.86k 1829.55k 1839.80k
whirlpool 1011.46k 2198.19k 3729.83k 4519.94k 4818.99k 4838.74k
hmac(md5) 3755.22k 12565.82k 34336.85k 60485.41k 77701.12k 78888.96k
des-cbc 7854.77k 8906.50k 9268.14k 9356.97k 9390.56k 9374.07k
des-ede3 3146.78k 3299.69k 3345.83k 3358.24k 3361.45k 3358.72k
rc4 23275.45k 31302.89k 34076.84k 34981.28k 35233.79k 35187.37k
idea-cbc 8044.02k 9173.76k 9541.03k 9630.72k 9662.71k 9648.97k
seed-cbc 11114.26k 13166.34k 13754.22k 14015.44k 14024.70k 13991.94k
rc2-cbc 6113.20k 6845.26k 7035.31k 7088.13k 7082.38k 7118.00k
blowfish 12537.10k 15413.68k 16277.32k 16642.41k 16708.95k 16684.37k
cast-cbc 9889.85k 11743.85k 12360.45k 12531.71k 12579.39k 12561.07k
aes-128-cbc 8048.27k 9040.85k 9332.57k 9411.24k 9437.29k 9420.80k
aes-192-cbc 6972.55k 7686.14k 7889.63k 7961.94k 7981.74k 7968.09k
aes-256-cbc 6146.59k 6692.78k 6861.23k 6903.13k 6916.47k 6908.59k
camellia-128-cbc 11408.51k 13525.30k 14158.86k 14340.44k 14396.07k 14363.31k
camellia-192-cbc 9265.28k 10571.78k 10997.08k 11112.81k 11138.39k 11119.27k
camellia-256-cbc 9264.07k 10574.88k 10995.11k 11116.93k 11138.39k 11122.43k
ghash 4173.53k 4440.10k 4518.40k 4540.07k 4546.56k 4546.83k
rand 728.00k 2201.17k 4438.57k 5941.95k 6594.56k 6640.98k
sign verify sign/s verify/s
rsa 512 bits 0.003164s 0.000250s 316.0 3996.5
rsa 1024 bits 0.018032s 0.000807s 55.5 1239.1
rsa 2048 bits 0.112921s 0.002828s 8.9 353.6
rsa 3072 bits 0.339333s 0.006157s 2.9 162.4
rsa 4096 bits 0.743571s 0.010040s 1.3 99.6
rsa 7680 bits 4.446667s 0.035406s 0.2 28.2
sign verify sign/s verify/s
dsa 512 bits 0.004443s 0.003235s 225.1 309.1
dsa 1024 bits 0.011718s 0.010071s 85.3 99.3
dsa 2048 bits 0.037879s 0.034687s 26.4 28.8
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0118s 0.0095s 84.5 105.7
192 bits ecdsa (nistp192) 0.0121s 0.0092s 82.4 108.8
224 bits ecdsa (nistp224) 0.0159s 0.0121s 62.9 82.8
256 bits ecdsa (nistp256) 0.0178s 0.0134s 56.3 74.4
384 bits ecdsa (nistp384) 0.0469s 0.0330s 21.3 30.3
521 bits ecdsa (nistp521) 0.1487s 0.0953s 6.7 10.5
163 bits ecdsa (nistk163) 0.0099s 0.0188s 101.4 53.3
233 bits ecdsa (nistk233) 0.0185s 0.0357s 54.0 28.0
283 bits ecdsa (nistk283) 0.0332s 0.0642s 30.1 15.6
409 bits ecdsa (nistk409) 0.0753s 0.1463s 13.3 6.8
571 bits ecdsa (nistk571) 0.1728s 0.3353s 5.8 3.0
163 bits ecdsa (nistb163) 0.0106s 0.0203s 94.3 49.3
233 bits ecdsa (nistb233) 0.0203s 0.0392s 49.3 25.5
283 bits ecdsa (nistb283) 0.0368s 0.0714s 27.2 14.0
409 bits ecdsa (nistb409) 0.0849s 0.1656s 11.8 6.0
571 bits ecdsa (nistb571) 0.1971s 0.3830s 5.1 2.6
256 bits ecdsa (brainpoolP256r1) 0.0266s 0.0227s 37.6 44.1
256 bits ecdsa (brainpoolP256t1) 0.0266s 0.0207s 37.6 48.3
384 bits ecdsa (brainpoolP384r1) 0.0763s 0.0619s 13.1 16.2
384 bits ecdsa (brainpoolP384t1) 0.0759s 0.0561s 13.2 17.8
512 bits ecdsa (brainpoolP512r1) 0.1557s 0.1235s 6.4 8.1
512 bits ecdsa (brainpoolP512t1) 0.1552s 0.1116s 6.4 9.0
op op/s
160 bits ecdh (secp160r1) 0.0109s 91.4
192 bits ecdh (nistp192) 0.0111s 90.4
224 bits ecdh (nistp224) 0.0145s 69.1
256 bits ecdh (nistp256) 0.0163s 61.4
384 bits ecdh (nistp384) 0.0429s 23.3
521 bits ecdh (nistp521) 0.1386s 7.2
163 bits ecdh (nistk163) 0.0090s 111.4
233 bits ecdh (nistk233) 0.0172s 58.2
283 bits ecdh (nistk283) 0.0310s 32.3
409 bits ecdh (nistk409) 0.0706s 14.2
571 bits ecdh (nistk571) 0.1621s 6.2
163 bits ecdh (nistb163) 0.0097s 102.9
233 bits ecdh (nistb233) 0.0189s 52.8
283 bits ecdh (nistb283) 0.0346s 28.9
409 bits ecdh (nistb409) 0.0805s 12.4
571 bits ecdh (nistb571) 0.1854s 5.4
256 bits ecdh (brainpoolP256r1) 0.0251s 39.8
256 bits ecdh (brainpoolP256t1) 0.0251s 39.8
384 bits ecdh (brainpoolP384r1) 0.0722s 13.8
384 bits ecdh (brainpoolP384t1) 0.0720s 13.9
512 bits ecdh (brainpoolP512r1) 0.1476s 6.8
512 bits ecdh (brainpoolP512t1) 0.1474s 6.8
253 bits ecdh (X25519) 0.0045s 223.7
448 bits ecdh (X448) 0.0198s 50.4
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0017s 0.0052s 601.0 193.2
456 bits EdDSA (Ed448) 0.0084s 0.0221s 119.5 45.3
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0266s 0.0196s 37.6 51.0
op op/s
2048 bits ffdh 0.3654s 2.7
3072 bits ffdh 1.1711s 0.9
4096 bits ffdh 2.5200s 0.4
6144 bits ffdh 8.6400s 0.1</pre>
<p>These results form a baseline for the performance of the methods.</p>
<h3 align="left"><a name="B.2.">B.2. VIA Luke, OpenSSL 3.0.2, assembler methods</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the default options (target linux-x86), should give a build with assembler methods enabled. But there is a problem with the default build on our i686 compatible x86 processor:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` apps/openssl version
Illegal instruction</pre>
<p>Doing a little debugging, this appears to be due to the use of 'ENDBR32' instructions (see <a href="https://stackoverflow.com/questions/56120231/how-do-old-cpus-execute-the-new-endbr64-and-endbr32-instructions">assembly - How do old CPUs execute the new ENDBR64 and ENDBR32 instructions? - Stack Overflow</a>) which are not supported by the VIA C3. These instructions are present in the OpenSSL generated assembler. Since these instructions are not supported by i386, i486, i586 and some i686 processors, it seems odd that OpenSSL is generating them by default for both the regular x86 assembler and the explicit 386 assembler. Commenting out the line generating the EDNBR32 opcodes in 'crypto/perlasm/x86asm.pl' (method <tt>sub ::endbranch</tt>, line 117 <tt># &::data_byte(0xf3,0x0f,0x1e,0xfb);</tt>) is sufficient as a workaround to get a build that does not show this issue.</p>
<p>With a workaround in place we can see the performance...</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Sat Apr 30 10:20:30 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wa,--noexecstack -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x381bf3f:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 1200.92k 1371.68k 1416.45k 1428.82k 1432.23k 1430.87k
md4 5257.54k 17644.57k 47449.86k 82751.49k 105796.95k 107249.66k
md5 5257.45k 17681.34k 47454.98k 81704.28k 103931.19k 105414.66k
sha1 4053.67k 12019.24k 27080.28k 39416.15k 45509.29k 45880.70k
rmd160 3324.45k 9072.49k 18345.05k 24597.16k 27355.23k 27508.74k
sha256 2652.97k 6705.41k 14340.10k 19297.56k 21493.73k 21550.42k
sha512 993.46k 3970.23k 5952.60k 8320.77k 9368.92k 9445.54k
whirlpool 1824.34k 4539.10k 8518.27k 10928.97k 11922.09k 11987.63k
hmac(md5) 4105.93k 14171.82k 40664.40k 76169.90k 102596.61k 104666.45k
des-cbc 8860.91k 10261.33k 10702.08k 10818.56k 10853.03k 10835.29k
des-ede3 3463.89k 3677.75k 3723.00k 3748.39k 3731.61k 3751.22k
rc4 24488.32k 36922.26k 43253.43k 45180.59k 45774.17k 45765.97k
idea-cbc 8000.61k 9179.52k 9568.92k 9634.19k 9655.64k 9627.65k
seed-cbc 11136.58k 13181.47k 13790.29k 14020.24k 14027.43k 14025.36k
rc2-cbc 6005.72k 6670.74k 6861.74k 6912.00k 6922.24k 6924.97k
blowfish 15662.13k 19262.18k 20483.18k 20859.80k 20930.56k 20914.34k
cast-cbc 10123.87k 11847.43k 12347.25k 12572.94k 12622.26k 12571.99k
aes-128-cbc 6036.35k 6679.00k 6935.13k 15294.02k 15444.65k 15433.73k
aes-192-cbc 5087.79k 5637.65k 5821.82k 13020.90k 13088.09k 13035.97k
aes-256-cbc 4452.21k 4830.24k 4928.51k 11047.17k 11127.47k 11119.27k
camellia-128-cbc 10217.49k 14540.18k 16149.50k 16660.82k 16810.09k 16744.45k
camellia-192-cbc 8600.76k 11301.48k 12345.30k 12644.01k 12735.83k 12697.60k
camellia-256-cbc 8573.67k 11309.98k 12352.60k 12636.16k 12738.83k 12697.60k
ghash 11669.10k 18477.14k 21751.61k 22697.30k 23022.82k 23003.58k
rand 624.36k 1801.88k 3367.44k 4291.24k 4685.06k 4686.59k
sign verify sign/s verify/s
rsa 512 bits 0.002285s 0.000195s 437.7 5128.6
rsa 1024 bits 0.014217s 0.000694s 70.3 1441.6
rsa 2048 bits 0.098333s 0.002579s 10.2 387.7
rsa 3072 bits 0.302727s 0.005672s 3.3 176.3
rsa 4096 bits 0.685333s 0.009980s 1.5 100.2
rsa 7680 bits 4.220000s 0.034567s 0.2 28.9
sign verify sign/s verify/s
dsa 512 bits 0.003380s 0.002566s 295.9 389.7
dsa 1024 bits 0.009930s 0.008754s 100.7 114.2
dsa 2048 bits 0.034653s 0.032745s 28.9 30.5
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0072s 0.0061s 138.8 165.2
192 bits ecdsa (nistp192) 0.0101s 0.0083s 98.9 120.0
224 bits ecdsa (nistp224) 0.0147s 0.0117s 68.2 85.5
256 bits ecdsa (nistp256) 0.0019s 0.0052s 528.9 193.8
384 bits ecdsa (nistp384) 0.0542s 0.0402s 18.5 24.9
521 bits ecdsa (nistp521) 0.1497s 0.1081s 6.7 9.3
163 bits ecdsa (nistk163) 0.0088s 0.0172s 113.9 58.2
233 bits ecdsa (nistk233) 0.0170s 0.0333s 58.8 30.0
283 bits ecdsa (nistk283) 0.0309s 0.0605s 32.4 16.5
409 bits ecdsa (nistk409) 0.0706s 0.1381s 14.2 7.2
571 bits ecdsa (nistk571) 0.1626s 0.3184s 6.2 3.1
163 bits ecdsa (nistb163) 0.0095s 0.0185s 105.6 54.0
233 bits ecdsa (nistb233) 0.0187s 0.0366s 53.4 27.3
283 bits ecdsa (nistb283) 0.0343s 0.0673s 29.2 14.9
409 bits ecdsa (nistb409) 0.0798s 0.1567s 12.5 6.4
571 bits ecdsa (nistb571) 0.1856s 0.3636s 5.4 2.8
256 bits ecdsa (brainpoolP256r1) 0.0194s 0.0165s 51.5 60.7
256 bits ecdsa (brainpoolP256t1) 0.0194s 0.0154s 51.6 65.1
384 bits ecdsa (brainpoolP384r1) 0.0542s 0.0439s 18.5 22.8
384 bits ecdsa (brainpoolP384t1) 0.0539s 0.0396s 18.6 25.2
512 bits ecdsa (brainpoolP512r1) 0.1250s 0.0979s 8.0 10.2
512 bits ecdsa (brainpoolP512t1) 0.1244s 0.0888s 8.0 11.3
op op/s
160 bits ecdh (secp160r1) 0.0067s 148.2
192 bits ecdh (nistp192) 0.0096s 104.3
224 bits ecdh (nistp224) 0.0139s 71.9
256 bits ecdh (nistp256) 0.0037s 268.4
384 bits ecdh (nistp384) 0.0515s 19.4
521 bits ecdh (nistp521) 0.1420s 7.0
163 bits ecdh (nistk163) 0.0083s 120.0
233 bits ecdh (nistk233) 0.0162s 61.9
283 bits ecdh (nistk283) 0.0294s 34.0
409 bits ecdh (nistk409) 0.0670s 14.9
571 bits ecdh (nistk571) 0.1549s 6.5
163 bits ecdh (nistb163) 0.0090s 110.9
233 bits ecdh (nistb233) 0.0178s 56.1
283 bits ecdh (nistb283) 0.0329s 30.4
409 bits ecdh (nistb409) 0.0766s 13.1
571 bits ecdh (nistb571) 0.1772s 5.6
256 bits ecdh (brainpoolP256r1) 0.0184s 54.4
256 bits ecdh (brainpoolP256t1) 0.0184s 54.4
384 bits ecdh (brainpoolP384r1) 0.0515s 19.4
384 bits ecdh (brainpoolP384t1) 0.0512s 19.5
512 bits ecdh (brainpoolP512r1) 0.1189s 8.4
512 bits ecdh (brainpoolP512t1) 0.1185s 8.4
253 bits ecdh (X25519) 0.0045s 223.8
448 bits ecdh (X448) 0.0199s 50.3
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0015s 0.0051s 669.9 197.6
456 bits EdDSA (Ed448) 0.0075s 0.0220s 132.8 45.5
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0195s 0.0146s 51.4 68.3
op op/s
2048 bits ffdh 0.3360s 3.0
3072 bits ffdh 1.0860s 0.9
4096 bits ffdh 2.5250s 0.4
6144 bits ffdh 8.3400s 0.1</pre>
<p>With the assembler in place many methods have improved performance.</p>
<h3 align="left"><a name="B.3.">B.3. VIA Luke, OpenSSL 3.0.2, use kernel methods (AF_ALG)</a></h3>
<p>The default compile (see B.2.) includes the 'afalg' engine, which provides access to the <a href="https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html">Linux Kernel Crypto API (AF_ALG)</a> method implementations. Details of the available kernel crypto methods can be found in <tt>/proc/crypto</tt>:</p>
<pre class="capturedOutput">$ cat /proc/crypto | grep '^name'
name : cbc(aes)
name : ecb(aes)
name : aes
name : crc32c
name : crct10dif
name : pkcs1pad(rsa,sha256)
name : hmac(sha256)
name : hmac(sha1)
name : lzo-rle
name : lzo-rle
name : lzo
name : lzo
name : zlib-deflate
name : deflate
name : deflate
name : sha224
name : sha256
name : sha1
name : md5
name : ecb(cipher_null)
name : digest_null
name : compress_null
name : cipher_null
name : rsa
name : dh</pre>
<p>Note that on this system the kernel has loaded a module with support for VIA PadLock ACE, so the hardware acceleration may be being used:</p>
<pre class="capturedOutput">$ lsmod | grep padlock
padlock_aes 16384 0
libaes 16384 1 padlock_aes</pre>
<p>The 'afalg' engine in OpenSSL supports a subset of the available methods:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC, AES-192-CBC, AES-256-CBC]
00877BB7:error:1280006A:DSO support routines:dlfcn_bind_func:could not bind to the requested symbol name:crypto/dso/dso_dlfcn.c:188:symname(EVP_PKEY_base_id): /home/hamish/src/openssl-3.0.2-asm_no_endbr32/engines/afalg.so: undefined symbol: EVP_PKEY_base_id
00877BB7:error:1280006A:DSO support routines:DSO_bind_func:could not bind to the requested symbol name:crypto/dso/dso_lib.c:176:</pre>
<p>Unlike our test with OpenSSL 1.1.0l, this version of the 'afalg' engine supports the AES-256 CBC method used in the comparisons. Also OpenSSL 3.0.2 uses the EVP methods by default in the <tt>openssl</tt> program, so a single run can give results for all the methods (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default -engine afalg</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Sat Apr 30 10:20:30 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wa,--noexecstack -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x381bf3f:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 1203.49k 1368.03k 1416.28k 1429.16k 1433.60k 1430.18k
md4 5224.81k 17555.18k 47432.85k 82940.92k 105802.41k 107071.36k
md5 5256.77k 17709.38k 47522.56k 81770.15k 104328.02k 105551.19k
sha1 4050.69k 12006.21k 27084.11k 39410.35k 45512.02k 45880.66k
rmd160 3313.78k 9059.78k 18292.99k 24585.22k 27314.86k 27511.92k
sha256 2643.44k 6703.43k 14320.90k 19273.73k 21442.15k 21588.65k
sha512 992.24k 3964.20k 5947.99k 8280.06k 9366.19k 9445.54k
whirlpool 1825.70k 4532.37k 8526.69k 10942.02k 11922.09k 11976.70k
hmac(md5) 4127.19k 14260.58k 40742.23k 76256.04k 102768.64k 104748.37k
des-cbc 8853.75k 10257.81k 10701.65k 10816.51k 10855.77k 10846.21k
des-ede3 3462.86k 3664.04k 3734.67k 3735.21k 3728.58k 3741.01k
rc4 24405.02k 36925.59k 43289.77k 45176.15k 45757.78k 45744.13k
idea-cbc 8050.62k 9199.81k 9542.23k 9656.08k 9627.65k 9650.18k
seed-cbc 11173.68k 13136.48k 13794.22k 14021.61k 14071.61k 13972.98k
rc2-cbc 6004.93k 6675.95k 6861.48k 6912.34k 6924.97k 6924.97k
blowfish 15661.21k 19324.82k 20470.53k 20824.41k 20925.10k 20897.85k
cast-cbc 10140.27k 11779.85k 12382.72k 12537.47k 12580.18k 12571.99k
aes-128-cbc 7395.12k 26822.40k 93369.60k 251783.53k 2702028.80k 6126523.73k
aes-192-cbc 4927.35k 22058.67k 71679.12k 277274.48k 2596556.80k 3803194.51k
aes-256-cbc 7853.33k 20938.19k 82461.39k 289389.46k 2033909.76k 5132615.68k
camellia-128-cbc 10163.22k 14395.93k 16187.85k 16708.67k 16807.25k 16790.85k
camellia-192-cbc 8520.49k 11297.22k 12348.05k 12608.56k 12730.37k 12761.99k
camellia-256-cbc 8494.83k 11262.12k 12342.19k 12641.62k 12733.34k 12719.45k
ghash 11647.89k 18520.58k 21678.25k 22770.47k 22921.16k 22948.52k
rand 628.16k 1800.77k 3364.98k 4306.62k 4674.90k 4702.21k
sign verify sign/s verify/s
rsa 512 bits 0.002285s 0.000195s 437.6 5135.9
rsa 1024 bits 0.014217s 0.000694s 70.3 1441.8
rsa 2048 bits 0.098333s 0.002579s 10.2 387.8
rsa 3072 bits 0.303030s 0.005672s 3.3 176.3
rsa 4096 bits 0.684667s 0.009980s 1.5 100.2
rsa 7680 bits 4.226667s 0.034567s 0.2 28.9
sign verify sign/s verify/s
dsa 512 bits 0.003380s 0.002556s 295.9 391.3
dsa 1024 bits 0.009930s 0.008754s 100.7 114.2
dsa 2048 bits 0.034653s 0.032395s 28.9 30.9
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0072s 0.0060s 138.6 167.3
192 bits ecdsa (nistp192) 0.0101s 0.0083s 98.8 120.6
224 bits ecdsa (nistp224) 0.0147s 0.0119s 68.1 84.3
256 bits ecdsa (nistp256) 0.0019s 0.0052s 530.3 193.7
384 bits ecdsa (nistp384) 0.0542s 0.0400s 18.4 25.0
521 bits ecdsa (nistp521) 0.1497s 0.1078s 6.7 9.3
163 bits ecdsa (nistk163) 0.0088s 0.0172s 114.0 58.3
233 bits ecdsa (nistk233) 0.0170s 0.0333s 58.8 30.0
283 bits ecdsa (nistk283) 0.0308s 0.0604s 32.4 16.5
409 bits ecdsa (nistk409) 0.0707s 0.1381s 14.1 7.2
571 bits ecdsa (nistk571) 0.1626s 0.3184s 6.2 3.1
163 bits ecdsa (nistb163) 0.0095s 0.0185s 105.7 53.9
233 bits ecdsa (nistb233) 0.0187s 0.0366s 53.6 27.3
283 bits ecdsa (nistb283) 0.0343s 0.0674s 29.2 14.8
409 bits ecdsa (nistb409) 0.0798s 0.1567s 12.5 6.4
571 bits ecdsa (nistb571) 0.1854s 0.3636s 5.4 2.8
256 bits ecdsa (brainpoolP256r1) 0.0194s 0.0164s 51.6 61.1
256 bits ecdsa (brainpoolP256t1) 0.0194s 0.0154s 51.6 65.0
384 bits ecdsa (brainpoolP384r1) 0.0542s 0.0435s 18.5 23.0
384 bits ecdsa (brainpoolP384t1) 0.0539s 0.0395s 18.5 25.3
512 bits ecdsa (brainpoolP512r1) 0.1250s 0.0980s 8.0 10.2
512 bits ecdsa (brainpoolP512t1) 0.1247s 0.0882s 8.0 11.3
op op/s
160 bits ecdh (secp160r1) 0.0067s 148.2
192 bits ecdh (nistp192) 0.0096s 104.2
224 bits ecdh (nistp224) 0.0139s 71.9
256 bits ecdh (nistp256) 0.0037s 268.4
384 bits ecdh (nistp384) 0.0515s 19.4
521 bits ecdh (nistp521) 0.1420s 7.0
163 bits ecdh (nistk163) 0.0083s 120.2
233 bits ecdh (nistk233) 0.0162s 61.9
283 bits ecdh (nistk283) 0.0294s 34.0
409 bits ecdh (nistk409) 0.0671s 14.9
571 bits ecdh (nistk571) 0.1551s 6.4
163 bits ecdh (nistb163) 0.0090s 111.0
233 bits ecdh (nistb233) 0.0178s 56.1
283 bits ecdh (nistb283) 0.0329s 30.4
409 bits ecdh (nistb409) 0.0765s 13.1
571 bits ecdh (nistb571) 0.1774s 5.6
256 bits ecdh (brainpoolP256r1) 0.0184s 54.3
256 bits ecdh (brainpoolP256t1) 0.0184s 54.2
384 bits ecdh (brainpoolP384r1) 0.0515s 19.4
384 bits ecdh (brainpoolP384t1) 0.0513s 19.5
512 bits ecdh (brainpoolP512r1) 0.1190s 8.4
512 bits ecdh (brainpoolP512t1) 0.1185s 8.4
253 bits ecdh (X25519) 0.0045s 223.6
448 bits ecdh (X448) 0.0199s 50.4
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0015s 0.0051s 670.5 196.1
456 bits EdDSA (Ed448) 0.0075s 0.0220s 133.0 45.5
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0195s 0.0148s 51.4 67.6
op op/s
2048 bits ffdh 0.3360s 3.0
3072 bits ffdh 1.0870s 0.9
4096 bits ffdh 2.5225s 0.4
6144 bits ffdh 8.3400s 0.1</pre>
<p>Here the use PadLock acceleration by the kernel is evident in how much more throughput the AES methods have.</p>
<h3 align="left"><a name="B.4.">B.4. VIA Luke, OpenSSL 3.0.2, use VIA Padlock</a></h3>
<p>The default compile (see B.2.) also supports the 'padlock' engine, which gives access to the VIA Padlock acceleration for AES:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine padlock -c
(padlock) VIA PadLock (no-RNG, ACE)
[AES-128-ECB, AES-128-CBC, AES-128-CFB, AES-128-OFB, AES-128-CTR, AES-192-ECB, AES-192-CBC, AES-192-CFB, AES-192-OFB, AES-192-CTR, AES-256-ECB, AES-256-CBC, AES-256-CFB, AES-256-OFB, AES-256-CTR]
008785B7:error:1280006A:DSO support routines:dlfcn_bind_func:could not bind to the requested symbol name:crypto/dso/dso_dlfcn.c:188:symname(EVP_PKEY_base_id): /home/hamish/src/openssl-3.0.2-asm_no_endbr32/engines/padlock.so: undefined symbol: EVP_PKEY_base_id
008785B7:error:1280006A:DSO support routines:DSO_bind_func:could not bind to the requested symbol name:crypto/dso/dso_lib.c:176:</pre>
<p>The errors here look like those seen when the default provider is not being loaded, not sure why they happen in this case.</p>
<p>In previous versions of OpenSSL the '-evp' options and the Padlock engine had to be specified to use the accelerated method, this still works (with providers specified):</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default -engine padlock -evp aes-256-cbc
Engine "padlock" set.
Doing AES-256-CBC for 3s on 16 size blocks: 4665275 AES-256-CBC's in 2.98s
Doing AES-256-CBC for 3s on 64 size blocks: 4121198 AES-256-CBC's in 3.00s
Doing AES-256-CBC for 3s on 256 size blocks: 2758722 AES-256-CBC's in 3.00s
Doing AES-256-CBC for 3s on 1024 size blocks: 1183837 AES-256-CBC's in 3.00s
Doing AES-256-CBC for 3s on 8192 size blocks: 186153 AES-256-CBC's in 2.98s
Doing AES-256-CBC for 3s on 16384 size blocks: 95474 AES-256-CBC's in 3.00s
version: 3.0.2
built on: Sat Apr 30 10:20:30 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wa,--noexecstack -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x381bf3f:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
AES-256-CBC 25048.46k 87918.89k 235410.94k 404083.03k 511733.35k 521415.34k
Segmentation fault</pre>
<p>That segfault doesn't look good... but the method ran okay, and the figures show acceleration, so I'm guessing the fault comes from clean-up code when returning from the Padlock engine (see <a href="https://github.com/openssl/openssl/pull/18024">[WIP] Add a test case for the engine crash with AES-256-CTR by bernd-edlinger · Pull Request #18024 · openssl/openssl</a>).</p>
<p>In OpenSSL 3.0 the <tt>-evp</tt> option is now optional, since the EVP methods are used by default:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default -engine padlock aes-256-cbc
Engine "padlock" set.
Doing aes-256-cbc for 3s on 16 size blocks: 5783292 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 64 size blocks: 4927575 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 256 size blocks: 3110981 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1245940 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 187401 aes-256-cbc's in 2.98s
Doing aes-256-cbc for 3s on 16384 size blocks: 95841 aes-256-cbc's in 3.00s
version: 3.0.2
built on: Sat Apr 30 10:20:30 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wa,--noexecstack -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x381bf3f:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 31051.23k 105827.11k 265470.38k 425280.85k 515164.09k 523419.65k
Segmentation fault</pre>
<p>While a full 'speed' run should work, there are issues with the public-key methods when using the 'padlock' engine that mean a full run doesn't complete. So we'll just run the comparison methods this time (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default -engine padlock aes-256-cbc idea md5 sha1 sha256 sha512</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Sat Apr 30 10:20:30 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -m32 -Wa,--noexecstack -Wall -O3 -fomit-frame-pointer -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0x381bf3f:0x0
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 5226.37k 17711.27k 47580.84k 81752.41k 103765.33k 105966.25k
sha1 4069.17k 12035.98k 26991.73k 39550.03k 45520.21k 46011.73k
sha256 2642.86k 6697.94k 14379.07k 19284.76k 21435.73k 21610.50k
sha512 992.36k 3967.08k 5949.53k 8293.38k 9368.92k 9456.54k
idea-cbc 8059.19k 9200.92k 9572.09k 9631.06k 9658.37k 9654.46k
aes-256-cbc 31047.67k 105690.01k 265461.16k 425332.83k 515844.78k 523709.10k
Segmentation fault</pre>
<p>As expected the Padlock engine only accelerates the AES methods on this hardware, the other methods show the same performance as without the engine. Interestingly the 'padlock' engine shows better performance for AES with small block sizes, than the 'afalg' engine using the kernel implementation, which also utilizes the PadLock hardware.</p>
<!--Section C. AMD Ryzen 5 3600, Debian Linux 11, OpenSSL 1.1.0l-->
<h3 align="left"><a name="C.">C. Notes for Debian Linux 11 and OpenSSL 1.1.0l on AMD Ryzen</a></h3>
<p>AMD's Ryzen processors implement Intel's <a href="https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-encryption-standard-instructions-aes-ni.html">Advanced Encryption Standard (AES) New Instructions (AES-NI)</a> and <a href="https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sha-extensions.html">SHA Extensions</a> (SHA Ext.) instruction set extensions for the acceleration of AES and SHA cryptographic methods.</p>
<p>Due to issues with the selection of AES assembler modes in the OpenSSL 1.1.1 series, OpenSSL 1.1.0l is being used instead of the current OpenSSL 1.1.1 series. This serves to better illustrate the differences in AES performance for the C method implementations (i.e. no assembler) and processor family assembler comparisons.</p>
<table border="1">
<thead>
<tr><th colspan="7">AMD Ryzen 5 3600</th></tr>
<tr><th colspan="7">OpenSSL 1.1.0l on Debian Linux 11 for x86_64</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">212,366.68k</td><td align="right">119,010.65k</td><td align="right">749,469.70k</td><td align="right">845,922.30k</td><td align="right">307,301.03k</td><td align="right">553,937.58k</td></tr>
<tr><th align="left">asm</th><td align="right">232,721.07k</td><td align="right">119,545.86k</td><td align="right">793,971.37k</td><td align="right">1,050,842.45k</td><td align="right">470,701.40k</td><td align="right">604,972.40k</td></tr>
<tr><th align="left">AES-NI & SHA Ext.</th><td align="right">1,086,559.57k</td><td align="right">119,250.94k</td><td align="right">790,495.23k</td><td align="right">1,027,295.91k</td><td align="right">470,671.36k</td><td align="right">605,863.94k</td></tr>
<tr><th align="left">Kernel</th><td align="right">1,092,332.20k</td><td align="right">120,416.94k</td><td align="right">787,464.19k</td><td align="right">1,029,693.44k</td><td align="right">475,791.36k</td><td align="right">601,159.00k</td></tr>
</tbody>
</table>
<p>Notes:</p>
<ul>
<li>During the build tests (<tt>make test</tt>) the 'fuzz' test fails due to a missing update (see <a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c20225928fed2fb4c7512f4655207478ada6caf">repo/gentoo.git - Official Gentoo ebuild repository</a> for a patch that fixes the issue).</li>
<li>A runtime issue with the Elliptic Curve methods means some ECDH methods fail to give meaningful results, so the benchmark builds disable these methods (<tt>no-ec</tt>).</li>
<li>The OpenSSL 1.1.0l assembler SHA method implementations automatically utilize the SHA extensions, if they are available, making the 'asm' and SHA Ext. results are similar for those methods</li>
<li>The 'afalg' engine in OpenSSL 1.1.0l only supports AES-128 CBC, so no improvement is seen in our selected comparison methods. From a test run 'afalg' increases throughput for AES-128 CBC from ~15 MB/s to ~2.7 GB/s on this system. Since the 'afalg' method use requires use of the '-evp' option, methods show performance that includes acceleration from AES-NI and SHA Ext.</li>
</ul>
<h3 align="left"><a name="C.1.">C.1. Debian Linux 11, OpenSSL 1.1.0l, no assembler compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the no assembler option (<tt>$ ./config no-asm no-ec</tt>), gives a build using the portable C implementations for the methods.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 20730.02k 22381.89k 22966.87k 23125.67k 23177.90k 23101.44k
md4 116766.41k 351480.79k 790411.01k 1157575.68k 1333168.81k 1353602.39k
md5 156742.81k 342366.40k 581831.32k 701704.19k 749469.70k 753330.86k
hmac(md5) 69585.79k 204529.32k 447552.26k 638072.83k 739137.58k 739519.15k
sha1 173182.02k 377457.00k 646010.28k 789712.55k 845922.30k 851148.80k
rmd160 55190.68k 131163.46k 236064.09k 296644.27k 319621.80k 321574.23k
rc4 385952.59k 392689.51k 392603.82k 398494.04k 396479.15k 401604.61k
des cbc 93933.23k 97041.13k 98196.31k 98509.82k 98492.42k 98435.07k
des ede3 36440.89k 36739.35k 36494.93k 37111.13k 37102.36k 37295.45k
idea cbc 114402.18k 117464.04k 118522.45k 119008.60k 119010.65k 119007.91k
seed cbc 106145.94k 109854.22k 109158.91k 110865.07k 110428.16k 109690.88k
rc2 cbc 56211.93k 57472.96k 58497.19k 58632.53k 58684.76k 58621.95k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 152106.21k 161719.22k 163615.91k 164193.96k 163667.97k 164080.30k
cast cbc 134783.27k 137901.70k 138407.34k 137374.72k 137805.82k 137620.14k
aes-128 cbc 268837.55k 279241.41k 283237.21k 284580.86k 286363.83k 285250.90k
aes-192 cbc 233378.87k 241100.22k 239992.66k 240700.76k 245841.92k 244094.29k
aes-256 cbc 203023.76k 210830.19k 210040.41k 209316.86k 212366.68k 213166.76k
camellia-128 cbc 192874.25k 196834.09k 198303.66k 198697.98k 197648.38k 195930.79k
camellia-192 cbc 148299.39k 152704.83k 150698.15k 152804.01k 152867.10k 152895.49k
camellia-256 cbc 148925.98k 152378.58k 153129.98k 153295.53k 152136.36k 151202.47k
sha256 69916.46k 147095.52k 240012.71k 287934.81k 307301.03k 305905.66k
sha512 62274.78k 254578.13k 347497.91k 490810.03k 553937.58k 570299.73k
whirlpool 38258.02k 78932.71k 129490.35k 153168.21k 162155.02k 162409.13k
aes-128 ige 240440.92k 262720.19k 270912.39k 272708.61k 272829.10k 273110.36k
aes-192 ige 214961.81k 231054.78k 235207.59k 233662.81k 231488.39k 234067.29k
aes-256 ige 188522.23k 201385.24k 206791.34k 206300.16k 205572.78k 208071.32k
ghash 335113.40k 341217.81k 343153.24k 346411.01k 348973.74k 350332.66k
sign verify sign/s verify/s
rsa 512 bits 0.000112s 0.000006s 8900.5 175828.4
rsa 1024 bits 0.000546s 0.000017s 1830.4 60009.2
rsa 2048 bits 0.003192s 0.000055s 313.3 18201.4
rsa 3072 bits 0.007916s 0.000122s 126.3 8207.5
rsa 4096 bits 0.019550s 0.000196s 51.2 5092.3
rsa 7680 bits 0.098922s 0.000749s 10.1 1335.7
rsa 15360 bits 0.716429s 0.002938s 1.4 340.3
sign verify sign/s verify/s
dsa 512 bits 0.000143s 0.000087s 6983.6 11526.8
dsa 1024 bits 0.000337s 0.000247s 2967.9 4051.4
dsa 2048 bits 0.000975s 0.000900s 1026.0 1110.8</pre>
<p>These results give a performance baseline for this platform.</p>
<h3 align="left"><a name="C.2.">C.2. Debian Linux 11, OpenSSL 1.1.0l, default compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the default options (<tt>$ ./config no-ec</tt>), gives a build with the assembler methods enabled.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 20798.84k 22593.45k 23178.67k 23328.09k 23166.98k 23358.12k
md4 95277.68k 297859.71k 719539.71k 1120059.05k 1334834.52k 1350079.83k
md5 97994.57k 340445.14k 597550.93k 741420.03k 793971.37k 789266.43k
hmac(md5) 61321.42k 186359.87k 430417.17k 649776.47k 782076.59k 791876.95k
sha1 103850.11k 409047.21k 757470.63k 967015.77k 1050842.45k 1058881.54k
rmd160 48997.42k 119448.55k 221065.56k 283963.73k 309026.82k 310028.97k
rc4 544631.54k 601012.33k 546238.46k 511943.34k 499725.65k 500438.36k
des cbc 87352.36k 89708.48k 91152.30k 91687.94k 91854.17k 91805.01k
des ede3 33937.44k 34380.59k 33691.82k 34263.38k 34463.74k 33878.41k
idea cbc 114699.64k 117182.55k 118750.38k 118914.73k 119545.86k 119444.82k
seed cbc 106397.13k 109433.28k 110279.17k 110304.60k 110235.47k 110269.78k
rc2 cbc 56623.22k 57481.81k 57929.39k 57963.52k 58387.11k 58507.26k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 150240.14k 160040.47k 163246.08k 163654.66k 163779.93k 163616.09k
cast cbc 134531.68k 137505.19k 137351.00k 137942.36k 138179.93k 136642.56k
aes-128 cbc 143370.76k 181033.49k 190430.63k 301337.17k 303351.67k 304562.18k
aes-192 cbc 127582.04k 154253.95k 161869.06k 257087.15k 265120.43k 265540.95k
aes-256 cbc 113777.54k 133252.31k 138981.80k 232166.74k 232721.07k 235678.38k
camellia-128 cbc 183278.21k 218869.42k 225665.79k 228573.87k 232745.64k 233619.46k
camellia-192 cbc 145994.45k 163625.87k 169293.82k 173766.66k 174830.93k 175484.15k
camellia-256 cbc 144564.23k 166374.21k 170964.03k 174196.74k 175087.62k 175155.88k
sha256 69818.45k 206040.64k 359991.13k 441089.02k 470701.40k 472733.01k
sha512 59340.73k 234639.83k 370854.91k 528685.04k 604972.40k 615967.17k
whirlpool 39840.33k 99675.18k 165740.89k 195083.95k 205299.71k 209704.28k
aes-128 ige 169776.44k 181493.42k 184641.88k 184963.75k 184407.38k 183833.94k
aes-192 ige 140920.70k 147661.03k 153481.90k 155284.14k 156060.33k 155178.33k
aes-256 ige 126160.81k 131790.38k 132928.38k 134006.33k 133819.05k 133283.84k
ghash 1829075.23k 4999172.03k 7964922.39k 8924905.47k 9241427.97k 9231335.42k
sign verify sign/s verify/s
rsa 512 bits 0.000034s 0.000003s 29238.3 397281.6
rsa 1024 bits 0.000098s 0.000006s 10256.2 154937.1
rsa 2048 bits 0.000505s 0.000021s 1979.2 46636.7
rsa 3072 bits 0.002279s 0.000046s 438.7 21625.7
rsa 4096 bits 0.005269s 0.000079s 189.8 12586.5
rsa 7680 bits 0.045917s 0.000274s 21.8 3654.4
rsa 15360 bits 0.255750s 0.001085s 3.9 922.0
sign verify sign/s verify/s
dsa 512 bits 0.000063s 0.000040s 15846.7 24996.5
dsa 1024 bits 0.000114s 0.000091s 8753.2 10981.2
dsa 2048 bits 0.000313s 0.000288s 3194.5 3472.4</pre>
<p>The performance gains from the assembler implementations are somewhat evident, although not as distinct as for the 32-bit tests, and demonstrate which methods have assembler implementations.</p>
<h3 align="left"><a name="C.3.">C.3. Debian Linux 11, OpenSSL 1.1.0l, default compile: AES-NI & SHA-NI</a></h3>
<p>The default compile (see C.2.) also supports the hardware acceleration of AES and SHA using the AES-NI and SHA-NI instruction set extensions. To invoke the accelerated methods the required method has to be accessed with the EVP option:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp aes-256-cbc
Doing aes-256-cbc for 3s on 16 size blocks: 177455009 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 49476779 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 12693951 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 3195267 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 397910 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 200785 aes-256-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 946426.71k 1055504.62k 1083217.15k 1090651.14k 1086559.57k 1096553.81k</pre>
<p>Note the <tt>-evp</tt> is required to use the accelerated implementation, without the option the normal version of the method is used:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed aes-256-cbc
Doing aes-256 cbc for 3s on 16 size blocks: 21434583 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 64 size blocks: 6237975 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 256 size blocks: 1633547 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 1024 size blocks: 690046 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 8192 size blocks: 86806 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 16384 size blocks: 43459 aes-256 cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256 cbc 114317.78k 133076.80k 139396.01k 235535.70k 237038.25k 237344.09k</pre>
<p>Showing the difference between the normal assembler implementation (~237 MB/s) and the AES-NI accelerated version (1.09 GB/s).</p>
<p>Doing this for each of the other methods in the comparison:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp idea
Doing idea-cbc for 3s on 16 size blocks: 20963668 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 64 size blocks: 5496543 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 256 size blocks: 1388950 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 1024 size blocks: 345461 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 8192 size blocks: 43671 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 16384 size blocks: 21834 idea-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
idea-cbc 111806.23k 117259.58k 118523.73k 117917.35k 119250.94k 119242.75k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp md5
Doing md5 for 3s on 16 size blocks: 15666020 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 10908270 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 5874182 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 2048347 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 289488 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 146239 md5's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 83552.11k 232709.76k 501263.53k 699169.11k 790495.23k 798659.93k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp sha1
Doing sha1 for 3s on 16 size blocks: 15591881 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 11524163 sha1's in 3.00s
Doing sha1 for 3s on 256 size blocks: 6873254 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 2584282 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 376207 sha1's in 3.00s
Doing sha1 for 3s on 16384 size blocks: 191879 sha1's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha1 83156.70k 245848.81k 586517.67k 882101.59k 1027295.91k 1047915.18k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp sha256
Doing sha256 for 3s on 16 size blocks: 11599385 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 7423843 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 3742404 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 1249273 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 172365 sha256's in 3.00s
Doing sha256 for 3s on 16384 size blocks: 87592 sha256's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha256 61863.39k 158375.32k 319351.81k 426418.52k 470671.36k 478369.11k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -evp sha512
Doing sha512 for 3s on 16 size blocks: 8468652 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 8380446 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 3874261 sha512's in 3.00s
Doing sha512 for 3s on 1024 size blocks: 1491164 sha512's in 3.00s
Doing sha512 for 3s on 8192 size blocks: 221874 sha512's in 3.00s
Doing sha512 for 3s on 16384 size blocks: 112352 sha512's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha512 45166.14k 178782.85k 330603.61k 508983.98k 605863.94k 613591.72k</pre>
<p>The IDEA and MD5 methods show the standard assembler performance. The SHA methods show the same performance as before, which suggests the regular assembler can use the SHA instructions if they are available.</p>
<h3 align="left"><a name="C.4.">C.4. Debian Linux 11, OpenSSL 1.1.0l, use kernel methods (AF_ALG)</a></h3>
<p>The default compile (see C.2.) includes the 'afalg' engine, which provides access to the <a href="https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html">Linux Kernel Crypto API (AF_ALG)</a> method implementations. Details of the available kernel crypto methods can be found in <tt>/proc/crypto</tt>:</p>
<pre class="capturedOutput">$ cat /proc/crypto | grep '^name'
name : __ghash
name : ghash
name : __ghash
name : __gcm(aes)
name : gcm(aes)
name : __rfc4106(gcm(aes))
name : rfc4106(gcm(aes))
name : __gcm(aes)
name : __rfc4106(gcm(aes))
name : __xts(aes)
name : xts(aes)
name : __ctr(aes)
name : ctr(aes)
name : __cbc(aes)
name : cbc(aes)
name : __ecb(aes)
name : ecb(aes)
name : __xts(aes)
name : __ctr(aes)
name : __cbc(aes)
name : __ecb(aes)
name : aes
name : crc32c
name : crct10dif
name : crct10dif
name : crc32
name : crc32c
name : pkcs1pad(rsa,sha256)
name : hmac(sha256)
name : hmac(sha1)
name : lzo-rle
name : lzo-rle
name : lzo
name : lzo
name : zlib-deflate
name : deflate
name : deflate
name : sha224
name : sha256
name : sha1
name : md5
name : ecb(cipher_null)
name : digest_null
name : compress_null
name : cipher_null
name : rsa
name : dh</pre>
<p>However the 'afalg' engine in this version only supports a subset:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC]</pre>
<p>So this implementation only supports the kernel methods for AES-128 CBC:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp aes-128-cbc
engine "afalg" set.
Doing aes-128-cbc for 3s on 16 size blocks: 1643546 aes-128-cbc's in 0.42s
Doing aes-128-cbc for 3s on 64 size blocks: 1632116 aes-128-cbc's in 0.41s
Doing aes-128-cbc for 3s on 256 size blocks: 1508914 aes-128-cbc's in 0.46s
Doing aes-128-cbc for 3s on 1024 size blocks: 1199547 aes-128-cbc's in 0.42s
Doing aes-128-cbc for 3s on 8192 size blocks: 398876 aes-128-cbc's in 0.14s
Doing aes-128-cbc for 3s on 16384 size blocks: 223060 aes-128-cbc's in 0.12s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 62611.28k 254769.33k 839743.44k 2924609.83k 23339944.23k 30455125.33k</pre>
<p>In this version of OpenSSL the <tt>-evp</tt> is required to use the accelerated implementation, without it the option the normal version of the method is used:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg aes-128-cbc
engine "afalg" set.
Doing aes-128 cbc for 3s on 16 size blocks: 27509274 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 8428142 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 2272506 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 1024 size blocks: 876181 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 111665 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 16384 size blocks: 56092 aes-128 cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128 cbc 146716.13k 179800.36k 193920.51k 299069.78k 304919.89k 306337.11k</pre>
<p>So the difference for AES-128 CBC is very significant: ~305 MB/s normally and ~23.3 GB/s with the kernel method.</p>
<p>Sadly this isn't one of our comparison methods, and those are not in the list of 'afalg' supported methods. Still let's collect figures for them:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp aes-256-cbc
engine "afalg" set.
Doing aes-256-cbc for 3s on 16 size blocks: 177999118 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 49697601 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 12686659 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 3192273 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 400024 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 200009 aes-256-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 949328.63k 1060215.49k 1082594.90k 1089629.18k 1092332.20k 1092315.82k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp idea
engine "afalg" set.
Doing idea-cbc for 3s on 16 size blocks: 21078310 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 64 size blocks: 5561659 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 256 size blocks: 1405715 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 1024 size blocks: 352417 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 8192 size blocks: 44098 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 16384 size blocks: 22062 idea-cbc's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
idea-cbc 112417.65k 118648.73k 119954.35k 120291.67k 120416.94k 120487.94k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp md5
engine "afalg" set.
Doing md5 for 3s on 16 size blocks: 15277496 md5's in 2.99s
Doing md5 for 3s on 64 size blocks: 10886163 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 5820065 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 2034742 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 288378 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 145376 md5's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 81752.49k 232238.14k 496645.55k 694525.27k 787464.19k 793946.79k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha1
engine "afalg" set.
Doing sha1 for 3s on 16 size blocks: 15013924 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 11614002 sha1's in 3.00s
Doing sha1 for 3s on 256 size blocks: 6838376 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 2583074 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 377085 sha1's in 3.00s
Doing sha1 for 3s on 16384 size blocks: 190971 sha1's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha1 80074.26k 247765.38k 583541.42k 881689.26k 1029693.44k 1042956.29k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha256
engine "afalg" set.
Doing sha256 for 3s on 16 size blocks: 11335573 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 7378903 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 3674405 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 1245088 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 174240 sha256's in 3.00s
Doing sha256 for 3s on 16384 size blocks: 87867 sha256's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha256 60456.39k 157416.60k 313549.23k 424990.04k 475791.36k 479870.98k
$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -engine afalg -evp sha512
engine "afalg" set.
Doing sha512 for 3s on 16 size blocks: 8480500 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 8412202 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 3837396 sha512's in 3.00s
Doing sha512 for 3s on 1024 size blocks: 1487457 sha512's in 3.00s
Doing sha512 for 3s on 8192 size blocks: 220151 sha512's in 3.00s
Doing sha512 for 3s on 16384 size blocks: 110360 sha512's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(int) aes(partial) idea(int) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha512 45229.33k 179460.31k 327457.79k 507718.66k 601159.00k 602712.75k</pre>
<p>So, as expected, no change here.</p>
<!--Section D. AMD Ryzen 5 3600, Debian Linux 11, OpenSSL 3.0.2-->
<h3 align="left"><a name="D.">D. Notes for Debian Linux 11 and OpenSSL 3.0.2 on AMD Ryzen</a></h3>
<p>The AMD Ryzen family of processors support the AES-NI and SHA-NI instruction set extensions first proposed by Intel. Support for AES-NI was added in OpenSSL 1.0.1 (2012), and for SHA-NI in OpenSSL 1.0.2 (2015).</p>
<p>The latest release version of OpenSSL, 3.0.2 contains a lot of changes, but retains the command-line interface used for testing.</p>
<table border="1">
<thead>
<tr><th colspan="7">OpenSSL 3.0.2 with Debian Linux 11 for x86_64 on AMD Ryzen 5 3600</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">210,668.20k</td><td align="right">117,587.97k</td><td align="right">740,698.79k</td><td align="right">832,288.09k</td><td align="right">310,059.01k</td><td align="right">559,205.03k</td></tr>
<tr><th align="left">asm</th><td align="right">1,097,910.95k</td><td align="right">119,048.87k</td><td align="right">789,848.06k</td><td align="right">1,036,997.97k</td><td align="right">473,503.06k</td><td align="right">599,274.84k</td></tr>
<tr><th align="left">Kernel</th><td align="right">37,086,822.40k</td><td align="right">120,220.33k</td><td align="right">793,990.49k</td><td align="right">1,041,334.27k</td><td align="right">474,685.44k</td><td align="right">598,278.14k</td></tr>
</tbody>
</table>
<p>Notes:</p>
<ul>
<li>OpenSSL 3.x considers IDEA a "legacy" method. To include "legacy" methods in "speed" runs use the <tt>-provider legacy -provider default</tt> options.</li>
<li>For the purposes of these tests I am sacrificing some performance by using a VirtualBox VM running Debian Linux 11 on a MS Windows 10 host. While this introduces some overhead, and means the virtual system isn't as capable as the host, it does give access to the instructions, and since the "speed" benchmarks are single threaded the performance should be indicative.</li>
<li>Running from the source/build directories used a command-line like: <tt>LD_LIBRARY_PATH=`pwd` apps/openssl speed -provider-path ./providers/ -provider legacy -provider default</tt></li>
<li>OpenSSL 3.0.2 assembler implementations of AES and SHA methods use the AES-NI and SHA Ext. instruction set extensions if they are available</li>
</ul>
<h3 align="left"><a name="D.1.">D.1. Debian Linux 11, OpenSSL 3.0.2, no assembler compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the no assembler option (<tt>$ ./config no-asm</tt>), gives a build using the portable C implementations for the methods.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Tue May 3 10:21:48 2022 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: N/A
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 20562.45k 23065.00k 24045.06k 24235.01k 24171.86k 24053.45k
md4 93440.70k 292054.72k 713656.32k 1107414.36k 1316017.49k 1335416.15k
md5 75762.36k 220376.19k 474277.03k 658416.35k 740698.79k 746968.41k
sha1 74135.27k 207818.20k 484524.97k 713803.09k 832288.09k 838565.89k
rmd160 48934.47k 123549.25k 228486.49k 294425.26k 320845.14k 322808.49k
sha256 44194.68k 109362.69k 215166.29k 281563.14k 310059.01k 311987.29k
sha512 39869.37k 156745.30k 285906.52k 459415.21k 559205.03k 565084.16k
whirlpool 28946.23k 66454.40k 117860.44k 150848.17k 162491.05k 162441.10k
hmac(md5) 57372.63k 178631.87k 415191.55k 626126.85k 741441.54k 748607.28k
des-cbc 89745.45k 94976.34k 96349.27k 96561.15k 98486.95k 98407.77k
des-ede3 35742.68k 36740.82k 36624.04k 36697.43k 37090.65k 37300.91k
rc4 404351.10k 399215.17k 401447.08k 403255.98k 399493.80k 395624.45k
idea-cbc 111618.99k 117232.90k 117311.49k 114899.29k 117587.97k 117522.43k
seed-cbc 104352.96k 109517.72k 110598.91k 111045.63k 110875.99k 109679.96k
rc2-cbc 55675.72k 57482.73k 58371.50k 57400.66k 57888.32k 58212.35k
blowfish 146209.32k 157064.23k 162900.39k 163886.08k 163973.80k 163998.38k
cast-cbc 129929.11k 133614.19k 137071.70k 136841.56k 136303.96k 137059.51k
aes-128-cbc 259058.78k 277107.73k 277100.80k 281938.60k 281853.95k 283421.43k
aes-192-cbc 225402.85k 239174.83k 239161.77k 238028.12k 243007.49k 242679.81k
aes-256-cbc 197046.28k 211595.69k 210573.14k 211770.03k 210668.20k 212779.72k
camellia-128-cbc 189300.94k 196735.68k 195763.88k 195276.46k 194786.65k 197225.13k
camellia-192-cbc 148085.38k 151104.77k 152280.66k 151895.38k 151928.83k 150574.42k
camellia-256-cbc 146215.45k 149354.67k 152370.18k 152790.36k 152002.56k 151333.55k
ghash 289559.97k 327118.70k 335364.52k 347649.37k 349069.31k 347755.86k
rand 15451.66k 50478.65k 117848.60k 175663.51k 202408.16k 207183.63k
sign verify sign/s verify/s
rsa 512 bits 0.000106s 0.000006s 9438.1 180236.3
rsa 1024 bits 0.000547s 0.000016s 1827.7 60764.7
rsa 2048 bits 0.003244s 0.000055s 308.3 18215.1
rsa 3072 bits 0.008071s 0.000121s 123.9 8230.5
rsa 4096 bits 0.019841s 0.000200s 50.4 4998.0
rsa 7680 bits 0.101000s 0.000784s 9.9 1275.7
rsa 15360 bits 0.732143s 0.003008s 1.4 332.5
sign verify sign/s verify/s
dsa 512 bits 0.000134s 0.000076s 7467.2 13183.0
dsa 1024 bits 0.000332s 0.000239s 3013.1 4185.7
dsa 2048 bits 0.000970s 0.000904s 1031.3 1106.6
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0004s 0.0004s 2317.2 2732.4
192 bits ecdsa (nistp192) 0.0004s 0.0003s 2315.7 2866.1
224 bits ecdsa (nistp224) 0.0006s 0.0005s 1539.4 1933.3
256 bits ecdsa (nistp256) 0.0007s 0.0006s 1338.4 1685.6
384 bits ecdsa (nistp384) 0.0015s 0.0011s 650.5 873.3
521 bits ecdsa (nistp521) 0.0030s 0.0020s 331.5 490.3
163 bits ecdsa (nistk163) 0.0004s 0.0007s 2770.9 1426.6
233 bits ecdsa (nistk233) 0.0005s 0.0010s 1874.8 969.2
283 bits ecdsa (nistk283) 0.0011s 0.0022s 885.9 454.2
409 bits ecdsa (nistk409) 0.0024s 0.0046s 413.6 215.4
571 bits ecdsa (nistk571) 0.0049s 0.0096s 202.4 104.6
163 bits ecdsa (nistb163) 0.0004s 0.0007s 2657.6 1353.5
233 bits ecdsa (nistb233) 0.0006s 0.0011s 1802.5 937.5
283 bits ecdsa (nistb283) 0.0012s 0.0024s 818.3 419.7
409 bits ecdsa (nistb409) 0.0026s 0.0052s 378.6 191.1
571 bits ecdsa (nistb571) 0.0056s 0.0107s 178.2 93.2
256 bits ecdsa (brainpoolP256r1) 0.0008s 0.0008s 1180.4 1314.4
256 bits ecdsa (brainpoolP256t1) 0.0008s 0.0007s 1182.8 1447.8
384 bits ecdsa (brainpoolP384r1) 0.0019s 0.0016s 516.2 623.5
384 bits ecdsa (brainpoolP384t1) 0.0019s 0.0015s 532.5 683.6
512 bits ecdsa (brainpoolP512r1) 0.0046s 0.0039s 216.9 259.7
512 bits ecdsa (brainpoolP512t1) 0.0046s 0.0034s 217.0 290.2
op op/s
160 bits ecdh (secp160r1) 0.0004s 2433.5
192 bits ecdh (nistp192) 0.0004s 2505.3
224 bits ecdh (nistp224) 0.0006s 1650.3
256 bits ecdh (nistp256) 0.0007s 1424.5
384 bits ecdh (nistp384) 0.0014s 702.2
521 bits ecdh (nistp521) 0.0028s 362.3
163 bits ecdh (nistk163) 0.0003s 2945.9
233 bits ecdh (nistk233) 0.0005s 2022.0
283 bits ecdh (nistk283) 0.0011s 933.7
409 bits ecdh (nistk409) 0.0023s 443.2
571 bits ecdh (nistk571) 0.0047s 211.7
163 bits ecdh (nistb163) 0.0004s 2817.3
233 bits ecdh (nistb233) 0.0005s 1938.5
283 bits ecdh (nistb283) 0.0012s 863.2
409 bits ecdh (nistb409) 0.0025s 394.7
571 bits ecdh (nistb571) 0.0052s 191.7
256 bits ecdh (brainpoolP256r1) 0.0008s 1248.1
256 bits ecdh (brainpoolP256t1) 0.0008s 1252.6
384 bits ecdh (brainpoolP384r1) 0.0019s 538.5
384 bits ecdh (brainpoolP384t1) 0.0018s 558.9
512 bits ecdh (brainpoolP512r1) 0.0044s 226.8
512 bits ecdh (brainpoolP512t1) 0.0043s 231.4
253 bits ecdh (X25519) 0.0000s 24870.5
448 bits ecdh (X448) 0.0002s 6318.3
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0000s 0.0001s 33423.2 9964.8
456 bits EdDSA (Ed448) 0.0004s 0.0002s 2382.6 4835.4
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0009s 0.0007s 1075.4 1425.0
op op/s
2048 bits ffdh 0.0098s 101.7
3072 bits ffdh 0.0268s 37.4
4096 bits ffdh 0.0633s 15.8
6144 bits ffdh 0.1965s 5.1
8192 bits ffdh 0.4333s 2.3</pre>
<p>Okay so this establishes a baseline for performance of the methods on this platform.</p>
<h3 align="left"><a name="D.2.">D.2. Debian Linux 11, OpenSSL 3.0.2, default compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the default options, gives a build with assembler methods enabled.</p>
<p>Running the OpenSSL speed test gives (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Tue May 3 11:08:16 2022 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0xdef82203078bffff:0x840021
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 19088.32k 21383.15k 22120.11k 22114.65k 22066.52k 22336.85k
md4 86959.79k 274045.21k 686398.72k 1086177.28k 1302282.24k 1318507.86k
md5 74624.08k 221166.83k 481884.16k 689194.67k 789848.06k 795716.27k
sha1 68835.40k 211919.64k 530604.20k 850401.62k 1036997.97k 1052246.02k
rmd160 45938.43k 118583.77k 225689.86k 292971.52k 320547.50k 320629.42k
sha256 56456.28k 151513.83k 312126.29k 423563.26k 473503.06k 468751.70k
sha512 42409.53k 173236.01k 326201.60k 500586.84k 599274.84k 607879.17k
whirlpool 34184.97k 83005.12k 152824.75k 192139.95k 207866.54k 209338.37k
hmac(md5) 54607.51k 175414.14k 427773.27k 652594.86k 774367.91k 792139.09k
des-cbc 86150.46k 90269.29k 90673.16k 91110.06k 87848.28k 90357.76k
des-ede3 33675.40k 34008.00k 32592.38k 34458.28k 34021.38k 34155.18k
rc4 461580.29k 545079.64k 521484.71k 501519.02k 496358.74k 499171.33k
idea-cbc 110334.51k 115313.34k 117287.51k 117309.44k 119048.87k 119138.99k
seed-cbc 104858.23k 108716.29k 110551.72k 111048.02k 109797.38k 110302.55k
rc2-cbc 55981.69k 56614.93k 56955.99k 57540.61k 57696.26k 57333.08k
blowfish 146308.27k 159094.66k 161397.33k 163182.59k 163012.61k 164080.30k
cast-cbc 131535.55k 136160.68k 137896.70k 138655.06k 138483.03k 138199.04k
aes-128-cbc 1232361.96k 1423773.50k 1448355.75k 1462991.53k 1474143.60k 1484817.81k
aes-192-cbc 1055904.59k 1199071.38k 1250383.96k 1261934.25k 1267545.43k 1262824.11k
aes-256-cbc 956115.02k 1054160.70k 1081789.53k 1089324.03k 1097910.95k 1084456.96k
camellia-128-cbc 164696.63k 210310.44k 226814.21k 227034.79k 230888.79k 231669.76k
camellia-192-cbc 132917.51k 162760.79k 170745.51k 174113.45k 175030.27k 171911.85k
camellia-256-cbc 130447.28k 162488.66k 169590.44k 169819.14k 168951.81k 174331.22k
ghash 1015241.07k 3052006.70k 6412202.58k 8288329.39k 8981708.80k 9173494.44k
rand 23134.64k 90360.31k 348861.17k 1238087.79k 4722876.39k 5988869.69k
sign verify sign/s verify/s
rsa 512 bits 0.000033s 0.000002s 30318.4 440171.6
rsa 1024 bits 0.000098s 0.000006s 10207.1 160257.8
rsa 2048 bits 0.000510s 0.000022s 1962.1 45548.0
rsa 3072 bits 0.002315s 0.000047s 432.0 21473.4
rsa 4096 bits 0.005269s 0.000083s 189.8 12105.3
rsa 7680 bits 0.046055s 0.000278s 21.7 3603.5
rsa 15360 bits 0.253500s 0.001109s 3.9 902.0
sign verify sign/s verify/s
dsa 512 bits 0.000051s 0.000032s 19656.4 30843.9
dsa 1024 bits 0.000103s 0.000085s 9723.2 11707.9
dsa 2048 bits 0.000301s 0.000278s 3325.2 3591.6
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0002s 0.0002s 6005.0 6014.6
192 bits ecdsa (nistp192) 0.0002s 0.0002s 4834.5 5073.3
224 bits ecdsa (nistp224) 0.0003s 0.0003s 3353.4 3639.4
256 bits ecdsa (nistp256) 0.0000s 0.0001s 50187.2 16141.0
384 bits ecdsa (nistp384) 0.0008s 0.0007s 1300.1 1522.5
521 bits ecdsa (nistp521) 0.0018s 0.0015s 541.4 684.8
163 bits ecdsa (nistk163) 0.0002s 0.0003s 5822.0 2960.9
233 bits ecdsa (nistk233) 0.0002s 0.0004s 4482.1 2309.0
283 bits ecdsa (nistk283) 0.0004s 0.0008s 2608.5 1329.3
409 bits ecdsa (nistk409) 0.0006s 0.0013s 1545.2 772.5
571 bits ecdsa (nistk571) 0.0014s 0.0028s 694.7 360.9
163 bits ecdsa (nistb163) 0.0002s 0.0003s 5628.4 2857.7
233 bits ecdsa (nistb233) 0.0002s 0.0005s 4322.1 2218.3
283 bits ecdsa (nistb283) 0.0004s 0.0008s 2497.4 1250.1
409 bits ecdsa (nistb409) 0.0007s 0.0013s 1461.3 757.9
571 bits ecdsa (nistb571) 0.0015s 0.0029s 656.3 344.4
256 bits ecdsa (brainpoolP256r1) 0.0003s 0.0003s 3025.4 3109.1
256 bits ecdsa (brainpoolP256t1) 0.0003s 0.0003s 3001.6 3316.0
384 bits ecdsa (brainpoolP384r1) 0.0008s 0.0007s 1288.8 1469.8
384 bits ecdsa (brainpoolP384t1) 0.0008s 0.0006s 1296.9 1590.2
512 bits ecdsa (brainpoolP512r1) 0.0013s 0.0011s 755.6 890.6
512 bits ecdsa (brainpoolP512t1) 0.0013s 0.0011s 760.4 951.9
op op/s
160 bits ecdh (secp160r1) 0.0002s 6464.6
192 bits ecdh (nistp192) 0.0002s 5105.8
224 bits ecdh (nistp224) 0.0003s 3564.4
256 bits ecdh (nistp256) 0.0000s 21233.2
384 bits ecdh (nistp384) 0.0007s 1372.1
521 bits ecdh (nistp521) 0.0017s 576.3
163 bits ecdh (nistk163) 0.0002s 6098.0
233 bits ecdh (nistk233) 0.0002s 4869.1
283 bits ecdh (nistk283) 0.0004s 2794.8
409 bits ecdh (nistk409) 0.0006s 1673.1
571 bits ecdh (nistk571) 0.0013s 756.7
163 bits ecdh (nistb163) 0.0002s 5946.4
233 bits ecdh (nistb233) 0.0002s 4702.5
283 bits ecdh (nistb283) 0.0004s 2652.9
409 bits ecdh (nistb409) 0.0006s 1588.7
571 bits ecdh (nistb571) 0.0014s 713.5
256 bits ecdh (brainpoolP256r1) 0.0003s 3166.2
256 bits ecdh (brainpoolP256t1) 0.0003s 3147.1
384 bits ecdh (brainpoolP384r1) 0.0007s 1338.4
384 bits ecdh (brainpoolP384t1) 0.0007s 1375.6
512 bits ecdh (brainpoolP512r1) 0.0013s 790.6
512 bits ecdh (brainpoolP512t1) 0.0013s 792.7
253 bits ecdh (X25519) 0.0000s 29235.1
448 bits ecdh (X448) 0.0002s 6306.2
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0000s 0.0001s 31993.6 10019.0
456 bits EdDSA (Ed448) 0.0002s 0.0002s 5386.3 4842.7
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0003s 0.0003s 3003.2 3320.2
op op/s
2048 bits ffdh 0.0025s 394.7
3072 bits ffdh 0.0084s 119.4
4096 bits ffdh 0.0194s 51.5
6144 bits ffdh 0.0646s 15.5
8192 bits ffdh 0.1529s 6.5</pre>
<p>With the assembler in place the methods with assembler implementations show improved performance.</p>
<h3 align="left"><a name="D.3.">D.3. Debian Linux 11, OpenSSL 3.0.2, default compile, kernel methods</a></h3>
<p>The default compile (see B.2.) includes the 'afalg' engine, which provides access to the <a href="https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html">Linux Kernel Crypto API (AF_ALG)</a> method implementations. Details of the available kernel crypto methods can be found in <tt>/proc/crypto</tt>:</p>
<pre class="capturedOutput">$ cat /proc/crypto | grep '^name'
name : __ghash
name : ghash
name : __ghash
name : __gcm(aes)
name : gcm(aes)
name : __rfc4106(gcm(aes))
name : rfc4106(gcm(aes))
name : __gcm(aes)
name : __rfc4106(gcm(aes))
name : __xts(aes)
name : xts(aes)
name : __ctr(aes)
name : ctr(aes)
name : __cbc(aes)
name : cbc(aes)
name : __ecb(aes)
name : ecb(aes)
name : __xts(aes)
name : __ctr(aes)
name : __cbc(aes)
name : __ecb(aes)
name : aes
name : crc32c
name : crct10dif
name : crct10dif
name : crc32
name : crc32c
name : pkcs1pad(rsa,sha256)
name : hmac(sha256)
name : hmac(sha1)
name : lzo-rle
name : lzo-rle
name : lzo
name : lzo
name : zlib-deflate
name : deflate
name : deflate
name : sha224
name : sha256
name : sha1
name : md5
name : ecb(cipher_null)
name : digest_null
name : compress_null
name : cipher_null
name : rsa
name : dh</pre>
<p>Note that on this system the kernel has loaded modules with various crypto functions:</p>
<pre class="capturedOutput">$ lsmod | grep -E '(alg)|(aes)|(sha)|(crypt)'
algif_skcipher 16384 0
af_alg 32768 1 algif_skcipher
aesni_intel 368640 0
libaes 16384 1 aesni_intel
crypto_simd 16384 1 aesni_intel
cryptd 24576 2 crypto_simd,ghash_clmulni_intel
glue_helper 16384 1 aesni_intel</pre>
<p>The 'afalg' engine in OpenSSL supports a subset of the available methods:</p>
<pre class="capturedOutput">$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC, AES-192-CBC, AES-256-CBC]
80327193287F0000:error:1280006A:DSO support routines:dlfcn_bind_func:could not bind to the requested symbol name:crypto/dso/dso_dlfcn.c:188:symname(EVP_PKEY_base_id): /home/hamish/src/openssl-3.0.2-asm/engines/afalg.so: undefined symbol: EVP_PKEY_base_id
80327193287F0000:error:1280006A:DSO support routines:DSO_bind_func:could not bind to the requested symbol name:crypto/dso/dso_lib.c:176:</pre>
<p>The errors here are likely related to the move to EVP methods and the deprecation of the OpenSSL engine APIs.</p>
<p>Unlike our test with OpenSSL 1.1.0l, this version of the 'afalg' engine supports the AES-256 CBC method used in the comparisons. Also OpenSSL 3.0.2 uses the EVP methods by default in the <tt>openssl</tt> program, so a single run can give results for all the methods (<tt>$ LD_LIBRARY_PATH=`pwd` OPENSSL_ENGINES=`pwd`/engines/ apps/openssl speed -provider-path ./providers/ -provider legacy -provider default -engine afalg</tt>):</p>
<pre class="capturedOutput">version: 3.0.2
built on: Tue May 3 11:08:16 2022 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
CPUINFO: OPENSSL_ia32cap=0xdef82203078bffff:0x840021
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
mdc2 19213.87k 21249.32k 22246.57k 22619.14k 22702.76k 22620.84k
md4 87693.94k 279738.60k 692753.07k 1097476.78k 1334378.50k 1349844.99k
md5 74869.91k 220405.33k 484849.15k 693844.31k 793990.49k 801641.81k
sha1 68785.21k 211651.69k 531813.89k 856263.68k 1041334.27k 1056615.08k
rmd160 46334.88k 119616.47k 229049.86k 295681.37k 323463.85k 325659.31k
sha256 55986.87k 150935.30k 311471.53k 424374.61k 474685.44k 475125.08k
sha512 42818.01k 171608.66k 322486.86k 500541.10k 598278.14k 611521.88k
whirlpool 34328.44k 83261.67k 153432.32k 194215.59k 211009.54k 211763.20k
hmac(md5) 55910.06k 181670.91k 434200.75k 666086.74k 788709.38k 799091.37k
des-cbc 86662.59k 91052.35k 91887.19k 91826.18k 91171.50k 92558.68k
des-ede3 33983.00k 34592.13k 34692.34k 34864.81k 34843.31k 34242.56k
rc4 463650.38k 572220.84k 533739.09k 514668.54k 503463.94k 500553.05k
idea-cbc 111304.33k 116668.42k 119646.46k 120101.21k 120220.33k 120351.40k
seed-cbc 106637.95k 109966.85k 110053.55k 111550.81k 112091.14k 112039.25k
rc2-cbc 57108.33k 58368.49k 59152.90k 59224.75k 59299.16k 59271.85k
blowfish 150639.86k 162052.50k 165114.37k 165712.90k 165997.23k 165199.87k
cast-cbc 132735.63k 137822.12k 139187.20k 140039.85k 139911.17k 139973.97k
aes-128-cbc 58259.80k 241961.82k 996687.43k 5113851.73k 27540343.47k 46165811.20k
aes-192-cbc 63910.40k 210796.15k 1092007.50k 3762384.10k 41412081.37k 45620311.77k
aes-256-cbc 59532.76k 257748.16k 1073952.18k 4130459.50k 37086822.40k 56257085.44k
camellia-128-cbc 169613.70k 214561.05k 230152.19k 233813.33k 234029.06k 233411.93k
camellia-192-cbc 137169.80k 164018.60k 171968.77k 175241.56k 176095.23k 176237.23k
camellia-256-cbc 138009.25k 164407.06k 172199.42k 175273.30k 176316.42k 174609.75k
ghash 1024894.92k 3138248.59k 6438084.44k 8391383.38k 9201382.74k 9217447.25k
rand 22825.32k 89219.80k 341466.76k 1244163.94k 4706436.84k 5927709.06k
sign verify sign/s verify/s
rsa 512 bits 0.000032s 0.000002s 31006.3 453078.5
rsa 1024 bits 0.000096s 0.000006s 10417.9 161517.6
rsa 2048 bits 0.000498s 0.000021s 2009.9 47395.1
rsa 3072 bits 0.002284s 0.000046s 437.8 21741.9
rsa 4096 bits 0.005227s 0.000079s 191.3 12703.3
rsa 7680 bits 0.045500s 0.000272s 22.0 3679.6
rsa 15360 bits 0.251750s 0.001074s 4.0 930.9
sign verify sign/s verify/s
dsa 512 bits 0.000051s 0.000032s 19621.3 30836.6
dsa 1024 bits 0.000103s 0.000082s 9733.5 12182.3
dsa 2048 bits 0.000301s 0.000275s 3325.7 3634.2
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0002s 0.0002s 6099.3 6111.0
192 bits ecdsa (nistp192) 0.0002s 0.0002s 4927.0 5071.7
224 bits ecdsa (nistp224) 0.0003s 0.0003s 3380.9 3694.4
256 bits ecdsa (nistp256) 0.0000s 0.0001s 49883.8 16261.6
384 bits ecdsa (nistp384) 0.0008s 0.0006s 1307.9 1570.4
521 bits ecdsa (nistp521) 0.0018s 0.0014s 543.0 703.4
163 bits ecdsa (nistk163) 0.0002s 0.0003s 5835.4 2960.4
233 bits ecdsa (nistk233) 0.0002s 0.0004s 4479.9 2301.3
283 bits ecdsa (nistk283) 0.0004s 0.0008s 2612.7 1324.9
409 bits ecdsa (nistk409) 0.0007s 0.0013s 1534.9 798.4
571 bits ecdsa (nistk571) 0.0014s 0.0027s 718.1 368.4
163 bits ecdsa (nistb163) 0.0002s 0.0003s 5626.4 2866.1
233 bits ecdsa (nistb233) 0.0002s 0.0004s 4399.1 2245.8
283 bits ecdsa (nistb283) 0.0004s 0.0008s 2478.7 1269.1
409 bits ecdsa (nistb409) 0.0007s 0.0013s 1480.2 758.4
571 bits ecdsa (nistb571) 0.0015s 0.0029s 666.0 343.7
256 bits ecdsa (brainpoolP256r1) 0.0003s 0.0003s 3039.1 3138.8
256 bits ecdsa (brainpoolP256t1) 0.0003s 0.0003s 2996.7 3245.1
384 bits ecdsa (brainpoolP384r1) 0.0008s 0.0007s 1303.4 1485.5
384 bits ecdsa (brainpoolP384t1) 0.0008s 0.0006s 1322.8 1577.9
512 bits ecdsa (brainpoolP512r1) 0.0013s 0.0011s 756.6 891.3
512 bits ecdsa (brainpoolP512t1) 0.0013s 0.0011s 766.0 950.8
op op/s
160 bits ecdh (secp160r1) 0.0002s 6369.8
192 bits ecdh (nistp192) 0.0002s 5122.3
224 bits ecdh (nistp224) 0.0003s 3562.5
256 bits ecdh (nistp256) 0.0000s 21288.6
384 bits ecdh (nistp384) 0.0007s 1377.7
521 bits ecdh (nistp521) 0.0017s 578.9
163 bits ecdh (nistk163) 0.0002s 6127.8
233 bits ecdh (nistk233) 0.0002s 4843.5
283 bits ecdh (nistk283) 0.0004s 2792.3
409 bits ecdh (nistk409) 0.0006s 1673.8
571 bits ecdh (nistk571) 0.0013s 767.4
163 bits ecdh (nistb163) 0.0002s 5935.1
233 bits ecdh (nistb233) 0.0002s 4694.9
283 bits ecdh (nistb283) 0.0004s 2656.3
409 bits ecdh (nistb409) 0.0006s 1564.5
571 bits ecdh (nistb571) 0.0014s 713.8
256 bits ecdh (brainpoolP256r1) 0.0003s 3217.3
256 bits ecdh (brainpoolP256t1) 0.0003s 3215.5
384 bits ecdh (brainpoolP384r1) 0.0007s 1372.4
384 bits ecdh (brainpoolP384t1) 0.0007s 1394.3
512 bits ecdh (brainpoolP512r1) 0.0013s 791.7
512 bits ecdh (brainpoolP512t1) 0.0013s 797.6
253 bits ecdh (X25519) 0.0000s 29052.1
448 bits ecdh (X448) 0.0002s 6299.4
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0000s 0.0001s 32158.7 10184.2
456 bits EdDSA (Ed448) 0.0002s 0.0002s 5142.2 4923.4
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0003s 0.0003s 2981.1 3336.0
op op/s
2048 bits ffdh 0.0026s 392.1
3072 bits ffdh 0.0082s 121.4
4096 bits ffdh 0.0193s 51.9
6144 bits ffdh 0.0641s 15.6
8192 bits ffdh 0.1520s 6.6</pre>
<p>Here the kernel's use of acceleration is evident in how much more throughput the AES methods have.</p>
<!--Section Z. VIA C3 Nehemiah @ 1.33 GHz, NetBSD 9.2, OpenSSL 1.1.0l-->
<h3 align="left"><a name="Z.">Z. Notes for NetBSD 9.2 and OpenSSL 1.1.0l</a></h3>
<p>Issues with the selection of AES assembler modes in the OpenSSL 1.1.1 series, mean that the OpenSSL 1.1.0 series serve as better illustration for the differences in AES performance for the C method no assembler and processor family assembler comparisons.</p>
<p>The OpenSSL available in a base install of NetBSD, is a patched OpenSSL 1.1.1k. The patch forces the use of an assembler implementation for AES from the 1.1.0 series, which appears to be related to a retaining an API for AES, from a look at the history in the git repository for NetBSD.</p>
<p>An issue with the 'fuzz' test required a patch from Gentoo (see <a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c20225928fed2fb4c7512f4655207478ada6caf">repo/gentoo.git - Official Gentoo ebuild repository</a>). A runtime issue with the Elliptic Curve methods means some ECDH methods fail to give meaningful results.</p>
<table border="1">
<thead>
<tr><th colspan="7">OpenSSL 1.1.0l with NetBSD 9.2 i386 on VIA C3 Nehemiah @ 1.33 GHz</th></tr>
</thead>
<tbody>
<tr><th>Method</th><th>AES-256 CBC</th><th>IDEA CBC</th><th>MD5</th><th>SHA-1</th><th>SHA-256</th><th>SHA-512</th></tr>
<tr><th align="left">no-asm</th><td align="right">7,892.62k</td><td align="right">13,011.94k</td><td align="right">85,639.17k</td><td align="right">48,430.78k</td><td align="right">14,884.40k</td><td align="right">2,275.25k</td></tr>
<tr><th align="left">asm</th><td align="right">14,802.94k</td><td align="right">13,011.94k</td><td align="right">141,019.43k</td><td align="right">60,963.72k</td><td align="right">28,576.74k</td><td align="right">12,443.13k</td></tr>
<tr><th align="left">Padlock</th><td align="right">690,180.08k</td><td align="right">13,040.78k</td><td align="right">138,036.56k</td><td align="right">60,386.74k</td><td align="right">28,448.83k</td><td align="right">12,415.91k</td></tr>
</tbody>
</table>
<h3 align="left"><a name="Z.1.">Z.1. NetBSD 9.2, OpenSSL 1.1.0l, no assembler compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the no assembler options, gives a build using the C method implementations.</p>
<p>Running the OpenSSL speed test gives:</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\""
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 1541.42k 1720.60k 1775.70k 1788.66k 1788.09k 1784.88k
md4 7361.29k 23712.28k 60744.29k 99464.99k 122539.80k 124578.28k
md5 13428.07k 32972.76k 61493.84k 78324.09k 85639.17k 85915.30k
hmac(md5) 5100.78k 16146.10k 41441.04k 67855.48k 83574.73k 85289.64k
sha1 9030.46k 20720.69k 36506.13k 45023.00k 48430.78k 48735.55k
rmd160 4542.97k 11893.45k 23608.98k 31373.86k 34807.81k 34972.49k
rc4 31293.06k 34036.09k 34675.07k 34927.52k 35026.92k 35063.95k
des cbc 11425.19k 12086.47k 12309.26k 12368.63k 12388.70k 12388.70k
des ede3 4235.64k 4307.92k 4337.12k 4349.43k 4346.39k 4349.11k
idea cbc 11784.23k 12685.65k 12925.87k 12994.25k 13011.94k 13058.05k
seed cbc 14215.47k 15110.97k 15342.14k 15461.70k 15439.61k 15442.33k
rc2 cbc 7590.42k 7962.56k 8062.81k 8087.56k 8077.31k 8131.72k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 19871.74k 22029.69k 22586.68k 22856.02k 22913.02k 22875.88k
cast cbc 12686.39k 13533.68k 13805.91k 13954.05k 13937.29k 13940.01k
aes-128 cbc 10089.55k 10507.69k 10686.11k 10686.00k 10701.31k 10701.31k
aes-192 cbc 8644.86k 8953.49k 9049.64k 9076.52k 9081.96k 9084.68k
aes-256 cbc 7556.37k 7785.93k 7865.75k 7912.45k 7892.62k 7875.24k
camellia-128 cbc 16805.35k 18147.19k 18487.71k 18603.80k 18663.51k 18637.48k
camellia-192 cbc 13414.01k 14169.91k 14437.80k 14567.42k 14541.48k 14538.76k
camellia-256 cbc 13417.33k 14173.21k 14465.03k 14518.69k 14541.48k 14538.76k
sha256 3346.99k 7060.69k 11702.26k 14020.98k 14884.40k 15002.28k
sha512 283.34k 1133.54k 1530.81k 2052.79k 2275.25k 2289.42k
whirlpool 1506.65k 3072.92k 5011.39k 5958.59k 6305.93k 6330.43k
aes-128 ige 9972.33k 10428.88k 10583.21k 10588.36k 10595.17k 10581.56k
aes-192 ige 8552.80k 8865.68k 8974.97k 9012.22k 9011.20k 8997.59k
aes-256 ige 7484.17k 7726.03k 7809.11k 7849.64k 7835.47k 7821.68k
ghash 5237.51k 5369.79k 5385.95k 5396.24k 5399.64k 5399.64k
sign verify sign/s verify/s
rsa 512 bits 0.003018s 0.000249s 331.4 4013.7
rsa 1024 bits 0.017744s 0.000825s 56.4 1212.3
rsa 2048 bits 0.114091s 0.002937s 8.8 340.5
rsa 3072 bits 0.363929s 0.006782s 2.7 147.4
rsa 4096 bits 0.767143s 0.010638s 1.3 94.0
rsa 7680 bits 4.896667s 0.039683s 0.2 25.2
rsa 15360 bits 36.930000s 0.154923s 0.0 6.5
sign verify sign/s verify/s
dsa 512 bits 0.004313s 0.003315s 231.8 301.7
dsa 1024 bits 0.011826s 0.010695s 84.6 93.5
dsa 2048 bits 0.039141s 0.036410s 25.5 27.5
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0131s 0.0079s 76.3 127.1
192 bit ecdsa (nistp192) 0.0123s 0.0072s 81.0 138.6
224 bit ecdsa (nistp224) 0.0164s 0.0094s 60.9 106.8
256 bit ecdsa (nistp256) 0.0186s 0.0108s 53.7 93.0
384 bit ecdsa (nistp384) 0.0532s 0.0278s 18.8 36.0
521 bit ecdsa (nistp521) 0.1733s 0.0809s 5.8 12.4
163 bit ecdsa (nistk163) 0.0312s 0.0147s 32.1 68.1
233 bit ecdsa (nistk233) 0.0711s 0.0292s 14.1 34.2
283 bit ecdsa (nistk283) 0.1168s 0.0521s 8.6 19.2
409 bit ecdsa (nistk409) 0.3088s 0.1229s 3.2 8.1
571 bit ecdsa (nistk571) 0.8000s 0.2792s 1.2 3.6
163 bit ecdsa (nistb163) 0.0312s 0.0157s 32.1 63.5
233 bit ecdsa (nistb233) 0.0710s 0.0320s 14.1 31.2
283 bit ecdsa (nistb283) 0.1167s 0.0584s 8.6 17.1
409 bit ecdsa (nistb409) 0.3097s 0.1392s 3.2 7.2
571 bit ecdsa (nistb571) 0.7992s 0.3206s 1.3 3.1
op op/s
160 bit ecdh (secp160r1) 0.0121s 82.5
192 bit ecdh (nistp192) 0.0113s 88.2
224 bit ecdh (nistp224) 0.0151s 66.2
256 bit ecdh (nistp256) 0.0171s 58.3
384 bit ecdh (nistp384) 0.0487s 20.5
521 bit ecdh (nistp521) 0.1618s 6.2
163 bit ecdh (nistk163) 0.0071s 140.4
233 bit ecdh (nistk233) 0.0143s 69.8
283 bit ecdh (nistk283) 0.0258s 38.8
409 bit ecdh (nistk409) 0.0608s 16.5
571 bit ecdh (nistk571) 0.1389s 7.2
163 bit ecdh (nistb163) 0.0077s 129.3
233 bit ecdh (nistb233) 0.0157s 63.6
283 bit ecdh (nistb283) 0.0288s 34.7
409 bit ecdh (nistb409) 0.0692s 14.5
571 bit ecdh (nistb571) 0.1597s 6.3
253 bit ecdh (X25519) 0.0000s inf</pre>
<h3 align="left"><a name="Z.2.">Z.2. NetBSD 9.2, OpenSSL 1.1.0l, default compile</a></h3>
<p>Downloading the source distribution from the OpenSSL site and building with the default options, gives a build with assembler methods enabled.</p>
<p>Running the OpenSSL speed test gives:</p>
<pre class="capturedOutput">OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md2 0.00 0.00 0.00 0.00 0.00 0.00
mdc2 1592.23k 1790.83k 1854.81k 1863.27k 1869.74k 1867.01k
md4 7049.91k 23028.14k 59961.41k 100087.13k 124314.28k 126537.82k
md5 16389.98k 45268.69k 93029.04k 126255.68k 141019.43k 142159.78k
hmac(md5) 6002.41k 20050.12k 56516.72k 103284.86k 136639.83k 140026.05k
sha1 9861.10k 23650.08k 44021.62k 56210.43k 60963.72k 61350.19k
rmd160 4569.69k 12237.65k 24478.02k 32722.07k 36279.64k 36578.23k
rc4 47127.60k 55720.09k 59427.33k 60404.09k 60762.32k 60986.71k
des cbc 13358.21k 14007.62k 14168.49k 14225.78k 14239.38k 14233.94k
des ede3 4790.65k 4874.25k 4914.18k 4919.98k 4907.04k 4904.28k
idea cbc 11787.40k 12681.63k 12929.53k 13031.77k 13011.94k 13017.42k
seed cbc 14236.65k 15112.89k 15342.90k 15410.18k 15442.33k 15442.33k
rc2 cbc 7615.33k 7961.03k 8063.06k 8088.58k 8093.81k 8099.47k
rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 0.00
blowfish cbc 25389.32k 27125.91k 27561.42k 27719.44k 27765.71k 27852.80k
cast cbc 12761.46k 13561.98k 13844.84k 13916.53k 13891.14k 13945.58k
aes-128 cbc 9093.77k 9420.40k 9632.15k 20335.08k 20480.00k 20488.16k
aes-192 cbc 7528.09k 7919.27k 8037.80k 17244.84k 17355.61k 17369.22k
aes-256 cbc 6517.73k 6741.56k 6814.28k 14680.62k 14802.94k 14712.05k
camellia-128 cbc 15823.70k 20227.86k 21718.75k 22229.33k 22298.03k 22311.63k
camellia-192 cbc 12898.81k 15586.43k 16552.14k 16812.99k 16890.22k 16890.22k
camellia-256 cbc 12930.67k 15644.59k 16554.01k 16811.29k 16890.22k 16880.98k
sha256 5000.94k 10959.15k 21098.41k 26459.68k 28576.74k 28745.48k
sha512 1406.32k 5639.51k 8080.58k 11090.84k 12443.13k 12542.43k
whirlpool 3430.66k 7301.38k 12303.90k 14892.23k 15925.25k 15948.54k
aes-128 ige 8749.00k 9079.59k 9207.24k 9241.86k 9253.42k 9247.98k
aes-192 ige 7313.20k 7619.67k 7726.95k 7760.63k 7772.87k 7766.02k
aes-256 ige 6333.32k 6525.36k 6592.61k 6600.55k 6610.75k 6613.48k
ghash 19307.14k 26654.55k 29423.33k 30269.44k 30544.46k 30563.51k
sign verify sign/s verify/s
rsa 512 bits 0.001787s 0.000151s 559.5 6607.0
rsa 1024 bits 0.010917s 0.000528s 91.6 1895.6
rsa 2048 bits 0.075149s 0.001950s 13.3 512.7
rsa 3072 bits 0.230227s 0.004287s 4.3 233.3
rsa 4096 bits 0.520000s 0.007532s 1.9 132.8
rsa 7680 bits 3.192500s 0.026070s 0.3 38.4
rsa 15360 bits 24.550000s 0.103402s 0.0 9.7
sign verify sign/s verify/s
dsa 512 bits 0.002641s 0.002100s 378.6 476.3
dsa 1024 bits 0.007581s 0.006748s 131.9 148.2
dsa 2048 bits 0.026273s 0.024595s 38.1 40.7
sign verify sign/s verify/s
160 bit ecdsa (secp160r1) 0.0071s 0.0045s 141.2 221.2
192 bit ecdsa (nistp192) 0.0098s 0.0063s 102.3 159.5
224 bit ecdsa (nistp224) 0.0139s 0.0088s 71.7 113.0
256 bit ecdsa (nistp256) 0.0015s 0.0037s 651.4 271.7
384 bit ecdsa (nistp384) 0.0500s 0.0288s 20.0 34.7
521 bit ecdsa (nistp521) 0.1358s 0.0774s 7.4 12.9
163 bit ecdsa (nistk163) 0.0291s 0.0126s 34.4 79.1
233 bit ecdsa (nistk233) 0.0670s 0.0248s 14.9 40.3
283 bit ecdsa (nistk283) 0.1096s 0.0449s 9.1 22.3
409 bit ecdsa (nistk409) 0.2911s 0.1045s 3.4 9.6
571 bit ecdsa (nistk571) 0.7600s 0.2379s 1.3 4.2
163 bit ecdsa (nistb163) 0.0291s 0.0136s 34.4 73.6
233 bit ecdsa (nistb233) 0.0669s 0.0275s 14.9 36.3
283 bit ecdsa (nistb283) 0.1098s 0.0502s 9.1 19.9
409 bit ecdsa (nistb409) 0.2917s 0.1182s 3.4 8.5
571 bit ecdsa (nistb571) 0.7586s 0.2732s 1.3 3.7
op op/s
160 bit ecdh (secp160r1) 0.0066s 151.0
192 bit ecdh (nistp192) 0.0093s 107.1
224 bit ecdh (nistp224) 0.0133s 75.3
256 bit ecdh (nistp256) 0.0028s 355.1
384 bit ecdh (nistp384) 0.0477s 21.0
521 bit ecdh (nistp521) 0.1290s 7.8
163 bit ecdh (nistk163) 0.0061s 164.0
233 bit ecdh (nistk233) 0.0120s 83.4
283 bit ecdh (nistk283) 0.0218s 45.9
409 bit ecdh (nistk409) 0.0507s 19.7
571 bit ecdh (nistk571) 0.1161s 8.6
163 bit ecdh (nistb163) 0.0066s 151.3
233 bit ecdh (nistb233) 0.0132s 75.5
283 bit ecdh (nistb283) 0.0244s 40.9
409 bit ecdh (nistb409) 0.0577s 17.3
571 bit ecdh (nistb571) 0.1332s 7.5
253 bit ecdh (X25519) 0.0000s inf</pre>
<p>With the assembler implementations included, various methods show performance gain.</p>
<h3 align="left"><a name="Z.3.">Z.3. NetBSD 9.2, OpenSSL 1.1.0l, default compile: VIA Padlock</a></h3>
<p>The default compile (see Z.2.) also supports the Padlock engine, which gives access to the VIA Padlock acceleration for AES:</p>
<pre class="capturedOutput">$ /usr/local/bin/openssl engine padlock -c
(padlock) VIA PadLock (no-RNG, ACE)
[AES-128-ECB, AES-128-CBC, AES-128-CFB, AES-128-OFB, AES-128-CTR, AES-192-ECB, AES-192-CBC, AES-192-CFB, AES-192-OFB, AES-192-CTR, AES-256-ECB, AES-256-CBC, AES-256-CFB, AES-256-OFB, AES-256-CTR]</pre>
<p>To invoke the Padlock accelerated method the engine has to be specified and the required method accessed with the EVP option:</p>
<pre class="capturedOutput">$ /usr/local/bin/openssl speed -engine padlock -evp aes-256-cbc
engine "padlock" set.
Doing aes-256-cbc for 3s on 16 size blocks: 10662518 aes-256-cbc's in 3.01s
Doing aes-256-cbc for 3s on 64 size blocks: 8597677 aes-256-cbc's in 3.01s
Doing aes-256-cbc for 3s on 256 size blocks: 4848074 aes-256-cbc's in 3.01s
Doing aes-256-cbc for 3s on 1024 size blocks: 1706932 aes-256-cbc's in 2.91s
Doing aes-256-cbc for 3s on 8192 size blocks: 253594 aes-256-cbc's in 3.01s
Doing aes-256-cbc for 3s on 16384 size blocks: 127179 aes-256-cbc's in 2.98s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256-cbc 56677.84k 182807.75k 412327.89k 600652.36k 690180.08k 699228.43k</pre>
<p>Note the <tt>-evp</tt> is required to use the accelerated implementation, without the option the normal version of the method is used:</p>
<pre class="capturedOutput">$ /usr/local/bin/openssl speed -engine padlock aes-256-cbc
engine "padlock" set.
Doing aes-256 cbc for 3s on 16 size blocks: 1224119 aes-256 cbc's in 3.01s
Doing aes-256 cbc for 3s on 64 size blocks: 317144 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 256 size blocks: 80115 aes-256 cbc's in 3.01s
Doing aes-256 cbc for 3s on 1024 size blocks: 43153 aes-256 cbc's in 3.01s
Doing aes-256 cbc for 3s on 8192 size blocks: 5421 aes-256 cbc's in 3.01s
Doing aes-256 cbc for 3s on 16384 size blocks: 2710 aes-256 cbc's in 3.01s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-256 cbc 6506.94k 6765.74k 6813.77k 14680.62k 14753.76k 14751.04k</pre>
<p>For methods without a specific engine implementation the regular implementations are used. So using an command that will invoke the engine for each of the other methods in our comparison:</p>
<pre class="capturedOutput">$ /usr/local/bin/openssl speed -engine padlock -evp idea
engine "padlock" set.
Doing idea-cbc for 3s on 16 size blocks: 2005747 idea-cbc's in 3.00s
Doing idea-cbc for 3s on 64 size blocks: 580638 idea-cbc's in 3.01s
Doing idea-cbc for 3s on 256 size blocks: 150989 idea-cbc's in 3.01s
Doing idea-cbc for 3s on 1024 size blocks: 38130 idea-cbc's in 3.01s
Doing idea-cbc for 3s on 8192 size blocks: 4712 idea-cbc's in 2.96s
Doing idea-cbc for 3s on 16384 size blocks: 2350 idea-cbc's in 2.96s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
idea-cbc 10697.32k 12345.79k 12841.59k 12971.80k 13040.78k 13007.57k
$ /usr/local/bin/openssl speed -engine padlock -evp md5
engine "padlock" set.
Doing md5 for 3s on 16 size blocks: 1370335 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 1095540 md5's in 2.90s
Doing md5 for 3s on 256 size blocks: 755228 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 321409 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 50719 md5's in 3.01s
Doing md5 for 3s on 16384 size blocks: 25852 md5's in 3.01s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 7308.45k 24177.43k 64446.12k 109707.61k 138036.56k 140717.33k
$ /usr/local/bin/openssl speed -engine padlock -evp sha1
engine "padlock" set.
Doing sha1 for 3s on 16 size blocks: 1036264 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 755219 sha1's in 3.01s
Doing sha1 for 3s on 256 size blocks: 424166 sha1's in 3.01s
Doing sha1 for 3s on 1024 size blocks: 153876 sha1's in 3.01s
Doing sha1 for 3s on 8192 size blocks: 22188 sha1's in 3.01s
Doing sha1 for 3s on 16384 size blocks: 11202 sha1's in 3.00s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha1 5526.74k 16057.81k 36075.25k 52348.51k 60386.74k 61177.86k
$ /usr/local/bin/openssl speed -engine padlock -evp sha256
engine "padlock" set.
Doing sha256 for 3s on 16 size blocks: 663483 sha256's in 3.01s
Doing sha256 for 3s on 64 size blocks: 420057 sha256's in 3.01s
Doing sha256 for 3s on 256 size blocks: 217137 sha256's in 2.92s
Doing sha256 for 3s on 1024 size blocks: 74607 sha256's in 2.98s
Doing sha256 for 3s on 8192 size blocks: 10453 sha256's in 3.01s
Doing sha256 for 3s on 16384 size blocks: 5268 sha256's in 3.01s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha256 3526.82k 8931.44k 19036.67k 25636.77k 28448.83k 28674.72k
$ /usr/local/bin/openssl speed -engine padlock -evp sha512
engine "padlock" set.
Doing sha512 for 3s on 16 size blocks: 234871 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 235262 sha512's in 3.01s
Doing sha512 for 3s on 256 size blocks: 90985 sha512's in 3.01s
Doing sha512 for 3s on 1024 size blocks: 32115 sha512's in 3.01s
Doing sha512 for 3s on 8192 size blocks: 4562 sha512's in 3.01s
Doing sha512 for 3s on 16384 size blocks: 2286 sha512's in 2.98s
OpenSSL 1.1.0l 10 Sep 2019
built on: reproducible build, date unspecified
options:bn(64,32) rc4(4x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
sha512 1252.65k 5002.25k 7738.26k 10925.50k 12415.91k 12568.40k</pre>
<p>Unsurprisingly these show the same performance as the regular methods, since the Padlock engine can only accelerate AES on this platform.</p>
<h3 align="left">Further Sources</h3>
<ul>
<li><a href="https://www.xmodulo.com/check-aes-ni-enabled-openssl.html">How to check if AES-NI is enabled for OpenSSL on Linux</a></li>
<li><a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c20225928fed2fb4c7512f4655207478ada6caf">repo/gentoo.git - Official Gentoo ebuild repository</a>: a patch for <tt>test/recipes/90-test_fuzz.t</tt> which addresses a test failure</li>
<li><a href="https://blog.sys4.de/openssl-performance-eden-padlock-en.html">OpenSSL Performance with a VIA Eden (padlock)</a></li>
<li><a href="https://www.kernel.org/doc/html/v4.11/crypto/index.html">Linux Kernel Crypto API — The Linux Kernel documentation</a></li>
<li><a href="https://logix.cz/michal/devel/padlock/index.xp">VIA PadLock support for Linux</a></li>
<li><a href="https://www.cryptopp.com/wiki/VIA_Padlock">VIA Padlock - Crypto++ Wiki</a></li>
<li><a href="https://netbsd.name/?p=323">Enable padlock and viadrm on NetBSD | NetBSD</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-91815425882928732462022-05-12T17:25:00.008+01:002022-05-27T16:21:47.368+01:00RedHat Linux 5.2 (Apollo) on PCem Pentium 75<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi03DKYebcdEGlwwcWw7kJ0Xfv1l3D6m3GoVl7_XOgGyBV_8qqDQQ75I78iOrP_Z1AF1QQgIjyiqMYDaoERKHuhUxJNsQFxhzDL2TtKxL60Bj_RNO_nLYugT7whXNHmTeb6DRAGc8O5hkcnh_eT5wOViGGww6PXeG-cW6-24ZC7oM4cmDa7i6MrJVFC/s1026/PCem-RedHat%205-desktop.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="815" data-original-width="1026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi03DKYebcdEGlwwcWw7kJ0Xfv1l3D6m3GoVl7_XOgGyBV_8qqDQQ75I78iOrP_Z1AF1QQgIjyiqMYDaoERKHuhUxJNsQFxhzDL2TtKxL60Bj_RNO_nLYugT7whXNHmTeb6DRAGc8O5hkcnh_eT5wOViGGww6PXeG-cW6-24ZC7oM4cmDa7i6MrJVFC/s320/PCem-RedHat%205-desktop.png" width="320" /></a></div>
<h3 style="text-align: left;">RedHat Linux</h3>
<p>Initially established back in 1994, <a href="http://www.redhat.com/">Red Hat</a> (<a href="https://en.wikipedia.org/wiki/Red_Hat">Wikipedia</a>) is a commercial Linux vendor known for the RedHat Linux, Red Hat Enterprise Linux and Fedora Linux distributions.</p>
<p>RedHat Linux 5.2 was released in 1998, and supported i386 through early Pentium II systems. So it is suitable for comparing our physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>) and the <a href="https://pcem-emulator.co.uk/">PCem</a> emulated equivalent.</p>
<h3 style="text-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC system, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. Including a couple of systems featuring the Intel 430fx chipset, making them equivalent to our reference physical system.</p>
<p>The target hardware for emulation is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA</td></tr>
</tbody>
</table>
<span><a name='more'></a></span>
<h3 style="text-align: left;">PCem Installation & Configuration</h3>
<p>Since we have the <a href="https://pcem-emulator.co.uk/">PCem</a> installation from the <a href="https://boxes-of-tat.blogspot.com/2022/04/slackware-linux-30-on-pentium-75-with.html">Slackware 3.0 on PCem Pentium 75</a> refer to that post of details of the installation of PCem and the configuration of the emulated machine.</p>
<p>For this emulation the only differences are the name given to the configuration ("RedHat Linux 5 i430fx Pentium 75") and the file name used for the hard disk image (<tt>RedHat52-i430fx-P5.img</tt>).</p>
<h3 style="text-align: left;">RedHat Linux 5.2 Installation</h3>
<ol style="text-align: left;">
<li>Fetch the RedHat Linux 5.2 CD-ROM image from Archive.org (<a href="https://archive.org/details/red-hat-linux-5.2">https://archive.org/details/red-hat-linux-5.2</a>), for installation we only need CD 1, the second CD contains sources for the packages on CD 1.</li>
<li>Unlike the previous Slackware 3.0 CD, the RedHat Linux 5.2 CD is bootable and will boot our machine once the option is enabled in the BIOS.</li>
<li>So back to PCem...
<ol>
<li>Start/load the machine we created</li>
<li>Use the "CD-ROM">"Image..." menu to insert the CD-ROM ISO</li>
<li>When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB and that we want the CD-ROM to be a boot device.</li>
</ol>
</li>
<li>The RedHat Linux installer is pretty good, so just follow the prompts.</li>
<ol>
<li>The mouse is a "Mouse Systems (serial)"</li>
<li>For the LAN configuration use "NE2000 and compatible", specifcy the module parameters <tt>io=0x300</tt> and <tt>irq=10</tt>. For SLiRP networking set the TCP/IP configuration to DHCP.</li>
<li>Remember to "Empty" the CD-ROM drive when the installer reboots the system.</li>
</ol>
<li>Once logged in:</li>
<ol>
<li>add a regular user account (<tt>adduser <userName> ; passwd <userName></tt>)</li>
<li>if DNS is not working, add your network DNS to <tt>/etc/resolv.conf</tt> as a <tt>nameserver</tt></li>
<li>the X server was configured during installation, if you need to reconfigure use <tt>Xconfigurator</tt></li>
<li>If the configured name server doesn't work. Try adding the your network DNS address to <tt>/etc/resolv.conf</tt> as another <tt>nameserver</tt></li>
</ol>
</ol>
<h3 style="text-align: left;"><a name="sysinfo_rh52">System Information - RedHat Linux 5.2 (Apollo)</a></h3>
<p>So what does RedHat Linux 5.2 (Apollo) for x86 say about this system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-rh52.home 2.0.36 #1 Tue Oct 13 22:17:11 EDT 1998 i586 unknown</pre>
<p>A "Linux" kernel, on a node named "p-rh52.home", kernel release "2.0.36", version "#1 Tue Oct 13 22:17:11 EDT 1998", on a "i586" machine, processor "unknown"</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
cpu : 586
model : Pentium 75+
vendor_id : GenuineIntel
stepping : 4
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
fpu : yes
fpu_exception : no
cpuid : yes
wp : yes
flags : fpu vme pse tsc msr cx8
bogomips : 74.75</pre>
<p>That would be a second generation Intel Pentium processor (P54C), but the BogoMips looks too high. The configuration has the CPU at 75MHz, which normally gives a BogoMips result of around 30...</p>
<p>The CPUID (<a href="https://en.wikipedia.org/wiki/CPUID">Wikipedia</a>) for this processor should be: family 5, model 2, with any stepping. This output has the stepping as 4.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 72929280 66031616 6897664 8155136 47054848 9732096
Swap: 37122048 0 37122048
MemTotal: 71220 kB
MemFree: 6736 kB
MemShared: 7964 kB
Buffers: 45952 kB
Cached: 9504 kB
SwapTotal: 36252 kB
SwapFree: 36252 kB</pre>
<p>So 72 MiB RAM, with about 36 MB of swap.</p>
<h4>/proc/pci</h4>
<p>Report PCI devices:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found:
Bus 0, device 13, function 0:
VGA compatible controller: S3 Inc. Trio32/Trio64 (rev 0).
Medium devsel. IRQ 11.
Non-prefetchable 32 bit memory at 0xff000000.
Bus 0, device 7, function 1:
IDE interface: Intel 82371 Triton PIIX (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=66.
I/O at 0xffa0.
Bus 0, device 7, function 0:
ISA bridge: Intel 82371 Triton PIIX (rev 0).
Medium devsel. Fast back-to-back capable. Master Capable. No bursts.
Bus 0, device 0, function 0:
Host bridge: Intel 82437 (rev 0).
Medium devsel. Master Capable. Latency=66. </pre>
<p>The Linux 2.0 kernel used in RedHat Linux 5.2 pre-dates the availability of the <tt>lspci</tt> command or the <tt>/proc/bus/pci/devices</tt> file. So we're left with <tt>/proc/pci</tt>. Since the network card is on the ISA bus, we only see the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Memory: sized by int13 0e801h
Console: 16 point font, 400 scans
Console: colour VGA+ 80x25, 1 virtual console (max 63)
pcibios_init : BIOS32 Service Directory structure at 0x000fc9f0
pcibios_init : BIOS32 Service Directory entry at 0xfca00
pcibios_init : PCI BIOS revision 2.10 entry at 0xfca21
Probing PCI hardware.
Calibrating delay loop.. ok - 74.75 BogoMIPS
Memory: 71220k/73728k available (748k kernel code, 384k reserved, 1376k data)
Swansea University Computer Society NET3.035 for Linux 2.0
NET3: Unix domain sockets 0.13 for Linux NET3.035.
Swansea University Computer Society TCP/IP for NET3.034
IP Protocols: IGMP, ICMP, UDP, TCP
Linux IP multicast router 0.07.
VFS: Diskquotas version dquot_5.6.0 initialized
Checking 386/387 coupling... Ok, fpu using old IRQ13 error reporting
Checking 'hlt' instruction... Ok.
Intel Pentium with F0 0F bug - workaround enabled.
alias mapping IDT readonly ... ... done
Linux version 2.0.36 (root@porky.redhat.com) (gcc version 2.7.2.3) #1 Tue Oct 13 22:17:11 EDT 1998
Starting kswapd v 1.4.2.2
Serial driver version 4.13 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A
Real Time Clock Driver v1.09
Ramdisk driver initialized : 16 ramdisks of 4096K size
ide: i82371 PIIX (Triton) on PCI bus 0 function 57
ide0: BM-DMA at 0xffa0-0xffa7
ide1: BM-DMA at 0xffa8-0xffaf
hda: PCemHD, 2047MB w/256kB Cache, CHS=520/128/63
hdc: PCemCD, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
Floppy drive(s): fd0 is 2.88M
FDC 0 is a post-1991 82077
md driver 0.36.3 MAX_MD_DEV=4, MAX_REAL=8
scsi : 0 hosts.
scsi : detected total.
Partition check:
hda: hda1 hda2 < hda5 hda6 >
VFS: Mounted root (ext2 filesystem) readonly.
Adding Swap: 36252k swap-space (priority -1)
sysctl: ip forwarding off
Swansea University Computer Society IPX 0.34 for NET3.035
IPX Portions Copyright (c) 1995 Caldera, Inc.
Appletalk 0.17 for Linux NET3.035
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x300: ac de 48 88 bb aa
eth0: NE2000 found at 0x300, using IRQ 10.</pre>
<p>Here we see the results of hardware detection and initalization.</p>
<h3 style="text-align: left;"><a name="benchmarks">Benchmark</a></h3>
<p>Since we have some information from an equivalent physical system (<a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>), let's see how well the emulated system matches up let's run some benchmarks...</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>).</p>
<p>PCem system: Linux 2.0.36, RedHat Linux 5.2 (Apollo) for x86:</p>
<pre class="capturedOutput">Calibrating delay loop.. ok - 74.75 BogoMIPS</pre>
<p>Comparing our physical system and the emulated system:</p>
<table border="1">
<thead>
<tr><th colspan="2">Linux</th><th><a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a></th><th>PCem</th></tr>
</thead>
<tbody>
<tr><th>Distribution</th><th>Kernel</th><th>BogoMips</th><th>BogoMips</th></tr>
<tr><th>Slackware Linux 3.0</th><td>Linux 1.2.13</td><td align="right" style="white-space: nowrap;"><span style="white-space: normal;">29.80</span></td><td align="right" style="white-space: nowrap;">74.98</td></tr>
<tr><th>RedHat Linux 5.2 (Apollo)</th><td>Linux 2.0.36</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">74.75</td></tr>
<tr><th>RedHat Linux 6.2 (Zoot)</th><td>Linux 2.2.14</td><td align="right" style="white-space: nowrap;">29.80</td><td align="right" style="white-space: nowrap;">?</td></tr>
<tr><th>Mandrake Linux 7.2 (Odyssey)</th><td>Linux 2.2.17</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">?</td></tr>
<tr><th>RedHat Linux 7.3 (Valhalla)</th><td>Linux 2.4.18</td><td align="right" style="white-space: nowrap;">148.68</td><td align="right" style="white-space: nowrap;">?</td></tr>
</tbody>
</table>
<p>The PCem result looks to be close to the clock for the emulated processor, but for this kernel the BogoMips for an Intel Pentium should be about <tt>clock * 0.4</tt>. That is around 30.0, which matches the 29.80 results for tilia. The BogoMips result scale change in Linux 2.2.14 (which seems to have been patched out in the RedHat Linux 6.2 kernel), due to a change in CPU cache states before the BogoMips calculation, suggests a possible source of the difference. The close to clock result in PCem could be a side effect of how PCem implements processor caches.</p>
<h4 style="text-align: left;"><a name="openssl">OpenSSL</a></h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Note: old versions of OpenSSL <em>are not recommended</em> for actual use. If you want to run comparisons like this, and thus need to use an old release, see the <a href="https://www.openssl.org/">OpenSSL site</a> for back to 0.9.6, for even older releases back to 0.91 see <a href="http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/">http://ftp.mirrorservice.org/sites/ftp.wiretapped.net/pub/security/cryptography/libraries/ssl/openssl/</a>.</p>
<p><a name="openssl_rh52"><b>RedHat Linux 5.2 (Apollo) for x86</b></a>, with default compile OpenSSL 0.9.2b</p>
<p>An OpenSSL release from early 1999 has been chosen as being contemporary with RedHat Linux 5.2, and would be representative of the time.</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 0.9.2b 22 Mar 1999</pre>
<p>Let's seen how MD5 and RSA do:</p>
<pre class="capturedOutput">$ /usr/local/ssl/bin/openssl speed md5 rsa
Doing md5 for 3s on 8 size blocks: 297286 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 211698 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 106666 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 35705 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 4949 md5's in 3.00s
Doing 512 bit private rsa's for 10s: 459 512 bit private RSA's in 10.02s
Doing 512 bit public rsa's for 10s: 4275 512 bit public RSA's in 10.00s
Doing 1024 bit private rsa's for 10s: 79 1024 bit private RSA's in 10.07s
Doing 1024 bit public rsa's for 10s: 1337 1024 bit public RSA's in 10.00s
Doing 2048 bit private rsa's for 10s: 13 2048 bit private RSA's in 10.77s
Doing 2048 bit public rsa's for 10s: 385 2048 bit public RSA's in 10.02s
Doing 4096 bit private rsa's for 10s: 2 4096 bit private RSA's in 11.54s
Doing 4096 bit public rsa's for 10s: 106 4096 bit public RSA's in 10.02s
OpenSSL 0.9.2b 22 Mar 1999
built on: Fri Apr 15 12:52:03 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(ptr2)
compiler: gcc -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 792.76k 4516.22k 9102.17k 12187.31k 13514.07k
sign verify sign/s verify/s
rsa 512 bits 0.0218s 0.0023s 45.8 427.5
rsa 1024 bits 0.1275s 0.0075s 7.8 133.7
rsa 2048 bits 0.8285s 0.0260s 1.2 38.4
rsa 4096 bits 5.7700s 0.0945s 0.2 10.6</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p><ul>
<li>OpenSSL speed MD5 8,192 bytes: 13,514.07k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 10.6</li>
</ul>
<p>So how does this compare to <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>?</p>
<p><b>OpenSSL results</b> from tilia:</p>
<table border="1">
<tbody>
<tr><th>OS</th><th>OpenSSL<br /> Version</th><th>MD5<br /> 8,192 bytes</th><th>RSA<br /> 4,096 bytes<br /> sign/s</th><th>RSA<br /> 4,096 bytes<br /> verify/s</th></tr>
<tr><td>Linux 2.0.36 <br />RedHat Linux 5.2 <br />x86</td><td>0.9.2b <br />22 Mar 1999</td><td align="right" style="white-space: nowrap;">12,391.77k</td><td align="right">0.2</td><td align="right">11.2</td></tr>
<tr><td>Linux 2.2.14 <br />RedHat Linux 6.2 <br />x86</td><td>0.9.5a <br />1 Apr 2000</td><td align="right" style="white-space: nowrap;">12,454.57k</td><td align="right">0.2</td><td align="right">11.1</td></tr>
<tr><td>Linux 2.4.18 <br />RedHat Linux 7.3 <br />x86</td><td>0.9.6b [engine] <br />9 Jul 2001</td><td align="right" style="white-space: nowrap;">6,075.73k</td><td align="right">0.1</td><td align="right">4.5</td></tr>
</tbody>
</table>
<p>From these results it seems the PCem system has similar performance in to the physical hardware.</p>
<p>For reference a full run of all the methods provided by OpenSSL 0.9.2b on this PCem system gives results (<tt>openssl speed</tt>):</p>
<pre class="capturedOutput">OpenSSL 0.9.2b 22 Mar 1999
built on: Fri Apr 15 12:52:03 BST 2022
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(ptr2)
compiler: gcc -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md2 41.58k 114.39k 154.20k 168.96k 173.61k
mdc2 148.97k 157.53k 158.55k 158.72k 158.99k
md5 793.08k 4536.64k 9110.70k 12100.27k 13516.80k
hmac(md5) 321.11k 2211.63k 5965.14k 10356.39k 13194.58k
sha1 479.29k 2306.54k 4135.85k 5159.25k 5562.37k
rmd160 385.22k 1798.87k 3127.47k 3834.88k 4106.92k
rc4 6048.08k 8647.72k 9065.98k 9175.72k 9210.54k
des cbc 1412.19k 1567.59k 1586.69k 1591.30k 1594.71k
des ede3 531.94k 558.98k 562.35k 563.20k 563.37k
idea cbc 462.00k 500.01k 504.83k 505.86k 506.22k
rc2 cbc 449.87k 487.42k 491.86k 493.23k 494.25k
rc5-32/12 cbc 3513.77k 5044.07k 5234.69k 5283.16k 5300.22k
blowfish cbc 2637.06k 3206.59k 3282.52k 3302.06k 3309.57k
cast cbc 2302.11k 2724.99k 2780.25k 2793.81k 2798.93k
sign verify sign/s verify/s
rsa 512 bits 0.0218s 0.0023s 45.9 427.9
rsa 1024 bits 0.1275s 0.0075s 7.8 133.6
rsa 2048 bits 0.8285s 0.0260s 1.2 38.4
rsa 4096 bits 5.7750s 0.0945s 0.2 10.6
sign verify sign/s verify/s
dsa 512 bits 0.0230s 0.0274s 43.6 36.5
dsa 1024 bits 0.0706s 0.0888s 14.2 11.3
dsa 2048 bits 0.2421s 0.2965s 4.1 3.4</pre>
<h3 style="text-align: left;"><a name="thoughts">Thoughts</a></h3>
<p>PCem works well for getting a reasonably close match to old hardware, the slight difference in performance is not going to be an issue in most cases.</p>
<p>The large difference in the BogoMips result (tilia: 29.80; PCem: 74.75) could be due to differences in processor state. In particular the effects of cache states are not handled in most emulators, and the BogoMips busy-doing-nothing method could have interactions with the dynamic recompiler used in PCem and the host CPU's instruction processing. The result coming out close to the emulated processor clock looks connected.</p>
<h3 style="text-align: left;"><a name="further_references">Further References</a></h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-15305514263759360532022-05-10T21:05:00.004+01:002022-05-21T16:06:19.410+01:00Linux for m68k on QEMU (q800) - System Information<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAiT1aJ3pCS88EE8emPQSoMcREBrIocSVnmHwINHARiEtoVtwRLcI0fXqxr8q8DiHZlslnQwUUwCQaz-clj5OaEcKayICYZwl5JenxsFdtI_K5m-IfAxxymCUVC49brNEQOMTitQTZ-erYXWkezbu-vXGmSCkQo7S9s1fOUyBHvrV5viisB1umBB_P/s812/QEMU_DebianLinux-m68k.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="QEMU running Debian Linux unstable (bookworm/sid) for m86k" border="0" data-original-height="661" data-original-width="812" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAiT1aJ3pCS88EE8emPQSoMcREBrIocSVnmHwINHARiEtoVtwRLcI0fXqxr8q8DiHZlslnQwUUwCQaz-clj5OaEcKayICYZwl5JenxsFdtI_K5m-IfAxxymCUVC49brNEQOMTitQTZ-erYXWkezbu-vXGmSCkQo7S9s1fOUyBHvrV5viisB1umBB_P/s320/QEMU_DebianLinux-m68k.png" width="320" /></a></div>
<h3 style="text-align: left;">Motorola 68000 series</h3>
<p>Introduced in 1979 the Motorola 68000 series was used in a wide range of computers through the 1980s and 1990s. Initially using a 32-bit instruction set and 32-bit registers combined with a 16-bit data bus, which Motorola dubbed a 16/32-bit processor, later iterations would implement fully 32-bit architectures, while remaining instruction compatible. The initial models provided 8-bit (68008) and 16-bit (68000, 68010) options for the external data bus allowing the use of cheaper support chips in markets that were typically 8-bit and 16-bit dominated in the early 1980s. The first fully 32-bit model, the 68020 introduced in 1984 (a year before Intel launched the 80386), initially appeared in UNIX workstations and its successors would be at the core of home computers in the 1990s. While 68000 series processors no longer appear in desktop systems, they can still be found in embedded applications.</p>
<h3 style="text-align: left;">Linux and Motorola 68000 series</h3>
<p>Unsurprisingly the Motorola 68000 series was one of the first systems to have a Linux port (see <a href="https://www.linuxjournal.com/article/2090">Linux/m68k: Linux on Motorola's 68000 Processor | Linux Journal</a>). Arguably <a href="http://www.linux-m68k.org/">Linux/m68k</a> was the first port of Linux to a non-x86 architecture, initially starting off as a parallel fork of the Linux kernel, and later being incorporated into the mainline kernel, once work to support multiple platforms was in place (see Linus Torvalds 1997 M.Sc. thesis "<a href="https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf">Linux: a Portable Operating System</a>").</p>
<p>A wide range of Motorola 68000 series systems are supported. Although a memory management unit (MMU) is required for support, which excludes some system variants using processors which didn't include the MMU or where the MMU is non-functional (systems without an MMU may be supported by μClinux (<a href="https://en.wikipedia.org/wiki/%CE%9CClinux">Wikipedia</a>)). Looking around for a Linux distribution with Motorola 68000 series support and which doesn't require too much setup, it looks like Debian is the best bet.</p>
<p><a href="https://www.debian.org/">Debian</a> Linux had official release support in Debian 2.0 (Hamm) through Debian 3.1 (Sarge), and has continued to support the architecture through <a href="https://www.debian.org/ports/">Debian - Ports</a>. Currently a unofficial Linux/m68k network installation image is available for Debian 10 (buster) (<a href="https://cdimage.debian.org/cdimage/ports/10.0/m68k/iso-cd/">https://cdimage.debian.org/cdimage/ports/10.0/m68k/iso-cd/</a>). That sounds good, so let's give it a go...</p>
<h3 style="text-align: left;">QEMU</h3>
<p>The wide range of systems that used the Motorola 68000 series means there are a lot of emulation options... Since we've looked at QEMU in previous emulation posts, let's see what QEMU offers for these systems...</p>
<p>QEMU has a relatively limited selection of system emulations for the Motorola 68000 series:</p>
<table border="1">
<tbody>
<tr><th><a href="http://www.arnewsh.com/flyers.old/sbc5206.htold">Arnewsh Inc. SBC5206</a></th><td><tt>an5206</tt></td><td>evaluation board</td></tr>
<tr><th><a href="https://www.nxp.com/products/no-longer-manufactured/mcf5208-evaluation-board:M5208EVB">NXP MCF5208 Evaluation Board</a></th><td><tt>mcf5208evb</tt></td><td>evaluation board</td></tr>
<tr><th>NeXT NeXTcube (<a href="https://en.wikipedia.org/wiki/NeXTcube">Wikipedia</a>)</th><td><tt>next-cube</tt></td><td>UNIX workstation</td></tr>
<tr><th>Apple Macintosh Quadra 800 (<a href="https://en.wikipedia.org/wiki/Macintosh_Quadra_800">Wikipedia</a>)</th><td><tt>q800</tt></td><td>desktop system</td></tr>
</tbody>
</table>
<p>Note: with QEMU 6.0 support has been added for a <tt>virt</tt> machine that is more flexible than systems considered here (see <a href="https://m68k.info/assets/qemu-m68k-talk.pdf">QEMU M680x0 support</a> [PDF]).</p>
<p>The QEMU wiki has a description of how to install Linux on the <tt>q800</tt> system (<a href="https://wiki.qemu.org/Documentation/Platforms/m68k">Documentation/Platforms/m68k - QEMU</a>), so that sounds like a good place to begin...</p>
<p>Checking <a href="https://support.apple.com/kb/sp236">Apple Support</a>, <a href="https://everymac.com/systems/apple/mac_quadra/specs/mac_quadra_800.html">EveryMac.com</a>, <a href="https://en.wikipedia.org/wiki/Macintosh_Quadra_800">Wikipedia</a> the hardware specification for the 'q800' would be:</p>
<table border="1">
<tbody>
<tr><th>System</th><td>Apple Macintosh Quadra 800</td></tr>
<tr><th>CPU</th><td>68040 @ 33 MHz, includes PMMU & FPU</td></tr>
<tr><th>RAM</th><td>8 MiB (136 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 1.44MB</td></tr>
<tr><th rowspan="3">Storage</th><td>Emulex SCSI Processor (ESP236) controller</td></tr>
<tr><td>SCSI internal hard disk 230 MB or 500 MB</td></tr>
<tr><td>SCSI 2x CD-ROM drive</td></tr>
<tr><th>Video</th><td><i>framebuffer</i>, 512 KiB or 1.0 MiB</td></tr>
<tr><th>Network</th><td>SONIC (DP83932) 10Mb/s ethernet AAUI-15</td></tr>
<tr><th>Keyboard & Mouse</th><td>ADB</td></tr>
</tbody>
</table>
<p>Third-party processor clock upgrades could get the 68040 to 40 MHz or 50 MHz, and there was a PowerPC 601 @ 100 MHz upgrade processor option.</p>
<p>Since QEMU is not limited by the physical hardware, there is the option of having more memory than the system could support. For 'q800' it turns out that the maximum RAM is around 1,000 MiB (with 1.0 GiB problems appear).</p>
<span><a name='more'></a></span>
<h4 style="text-align: left;">Emulation Command</h4>
<p>For running the emulated machine the command-line used is:</p>
<pre class="capturedOutput">$ qemu-system-m68k \
--machine q800 \
--cpu m68040 \
-m 1000M \
-drive file="hda_DebianLinux10_q800.qcow2",format=qcow2 \
-drive file="debian-10.0-m68k-NETINST-1.iso",format=raw,media=cdrom \
-net nic,model=dp83932 \
-net 'user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22' \
-serial mon:stdio \
-k en-gb \
-kernel live-debian10/vmlinux-4.16.0-1-m68k \
-initrd live-debian10/initrd.img-4.16.0-1-m68k \
-append 'root=/dev/sda2 rw console=ttyS0 console=tty' \
-name 'Debian Linux 10 (buster) for m68k on QEMU'</pre>
<p>The network 'guestfwd' and 'hostfwd' configurations provide ssh access from the guest to the host using IP address 10.0.2.1 (<tt>ssh -l hostUser 10.0.2.1</tt>) and provide ssh access from the host to the guest via host port 2222 (<tt>ssh -l guestUser -p 2222 localhost</tt>).</p>
<p>For some reason the keyboard mappings seem to be screwed up in this version, so the graphics console is not usable. Mapping the system console to the serial port and connecting the serial port to the terminal, provides a workaround to interact with the system.</p>
<p>The Linux kernel and 'initrd' were extracted from the installed system with:</p>
<pre class="capturedOutput">$ mkdir -p tmp_mnt
$ guestmount -a hda_DebianLinux10_q800.qcow2 -m /dev/sda2 tmp_mnt
$ ls tmp_mnt/boot
$ ls -1 tmp_mnt/boot/
config-4.16.0-1-m68k
initrd.img-4.16.0-1-m68k
System.map-4.16.0-1-m68k
vmlinux-4.16.0-1-m68k
$ cp tmp_mnt/boot/initrd.img-4.16.0-1-m68k live-debian10/
$ cp tmp_mnt/boot/vmlinux-4.16.0-1-m68k live-debian10/
$ guestunmount tmp_mnt</pre>
<p>Note: this needs to be done for every kernel and/or initrd update.</p>
<p>For installation a similar process was used to extract the installation kernel and initrd from the ISO:</p>
<pre class="capturedOutput">$ mkdir -p tmp_mnt
$ fuseiso debian-10.0-m68k-NETINST-1.iso tmp_mnt
$ cp tmp_mnt/boot/vmlinuz ./
$ cp tmp_mnt/boot/initrd.gz ./
$ fusermount -u tmp_mnt</pre>
<p>Which were then passed to QEMU for installing the system.</p>
<h3 style="text-align: left;"><a name="sysinfo_debianSidBuster">System Information - Debian Linux unstable (buster/sid)</a></h3>
<p>Some information about this system collected in Debian Linux unstable (buster/sid) for m86k...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">$ uname -a
Linux deb-m68k 4.16.0-1-m68k #1 Debian 4.16.5-1 (2018-04-29) m68k GNU/Linux</pre>
<p>So a "Linux" kernel, running on a node named "deb-m68k", kernel release "4.16.0-1-m68k" (a patched 4.16.0 kernel), kernel version "#1 Debian 4.16.5-1 (2018-04-29)", platform architecture "m68k", for operating system "GNU/Linux".</p>
<p>Looking at the Debian release information files:</p>
<pre class="capturedOutput">$ cat /etc/debian_version
buster/sid
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"</pre>
<p>So a Debian unstable (sid) for Debian Linux 10 (buster).</p>
<h4 style="text-align: left;">/proc/cpuinfo & lscpu</h4>
<p>System processor(s) information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: m68k
Byte Order: Big Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
$ cat /proc/cpuinfo
CPU: 68040
MMU: 68040
FPU: 68040
Clocking: 895.7MHz
BogoMips: 597.19
Calibration: 2985984 loops</pre>
<p>Wow those 'BogoMips' and 'Clocking' figures are pretty spectacular. The Motorola 68040 (<a href="https://en.wikipedia.org/wiki/Motorola_68040">Wikipedia</a>) had a maximum clock of 40 MHz (although some parts could overclock to 50 MHz with suitable cooling), but here we see a claim of the clock nearing 900 MHz.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>Report on hardware by running various commands:</p>
<pre class="capturedOutput">$ report-hw
uname -a: Linux deb-m68k 4.16.0-1-m68k #1 Debian 4.16.5-1 (2018-04-29) m68k GNU/Linux
lspci -knn: pcilib: Cannot open /proc/bus/pci
lspci -knn: lspci: Cannot find any working access method.
usb: No USB information available
lsmod: Module Size Used by
lsmod: evdev 8025 0
lsmod: mac_hid 2213 0
lsmod: sg 15600 0
lsmod: ip_tables 7980 0
lsmod: x_tables 12952 1 ip_tables
lsmod: sha1_generic 1835 1
lsmod: hmac 2281 2
lsmod: ipv6 303321 12
lsmod: autofs4 21492 2
lsmod: ext4 316529 1
lsmod: crc16 1015 1 ext4
lsmod: mbcache 2928 1 ext4
lsmod: jbd2 41408 1 ext4
lsmod: crc32c_generic 1318 2
lsmod: fscrypto 13227 1 ext4
lsmod: ecb 1513 0
lsmod: sd_mod 25666 3
lsmod: sr_mod 10852 0
lsmod: cdrom 33248 1 sr_mod
lsmod: mac_esp 3870 0
lsmod: esp_scsi 17646 3 mac_esp
lsmod: macsonic 11127 0
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: udev 500728 0 500728 0% /dev
df: tmpfs 100800 11500 89300 12% /run
df: /dev/sda2 1866572 277420 1476284 16% /
df: tmpfs 503984 0 503984 0% /dev/shm
df: tmpfs 5120 0 5120 0% /run/lock
df: tmpfs 503984 0 503984 0% /sys/fs/cgroup
free: total used free shared buff/cache available
free: Mem: 1007968 14820 946836 11500 46312 969408
free: Swap: 167424 0 167424
/proc/cmdline: root=/dev/sda2 rw console=ttyS0 console=tty
/proc/cpuinfo: CPU: 68040
/proc/cpuinfo: MMU: 68040
/proc/cpuinfo: FPU: 68040
/proc/cpuinfo: Clocking: 895.7MHz
/proc/cpuinfo: BogoMips: 597.19
/proc/cpuinfo: Calibration: 2985984 loops
/proc/iomem: 00000000-00000000 : ST-RAM Pool
/proc/iomem: 00000000-00000000 : scc.1
/proc/iomem: 00000000-00000000 : scc.0
/proc/iomem: 00000000-00000000 : swim
/proc/interrupts: CPU0
/proc/interrupts: 3: 325 auto sonic
/proc/interrupts: 4: 65 auto ttyS0
/proc/interrupts: 7: 0 auto NMI
/proc/interrupts: 10: 228 mac ADB
/proc/interrupts: 14: 41175 mac timer
/proc/interrupts: 19: 2428 mac ESP
/proc/interrupts: 56: 0 mac sonic
/proc/interrupts: ERR: 0
/proc/meminfo: MemTotal: 1007968 kB
/proc/meminfo: MemFree: 946868 kB
/proc/meminfo: MemAvailable: 969440 kB
/proc/meminfo: Buffers: 6184 kB
/proc/meminfo: Cached: 37636 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 26664 kB
/proc/meminfo: Inactive: 24656 kB
/proc/meminfo: Active(anon): 7572 kB
/proc/meminfo: Inactive(anon): 11424 kB
/proc/meminfo: Active(file): 19092 kB
/proc/meminfo: Inactive(file): 13232 kB
/proc/meminfo: Unevictable: 0 kB
/proc/meminfo: Mlocked: 0 kB
/proc/meminfo: SwapTotal: 167424 kB
/proc/meminfo: SwapFree: 167424 kB
/proc/meminfo: Dirty: 4 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 7512 kB
/proc/meminfo: Mapped: 13224 kB
/proc/meminfo: Shmem: 11500 kB
/proc/meminfo: Slab: 7220 kB
/proc/meminfo: SReclaimable: 2492 kB
/proc/meminfo: SUnreclaim: 4728 kB
/proc/meminfo: KernelStack: 408 kB
/proc/meminfo: PageTables: 340 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 671408 kB
/proc/meminfo: Committed_AS: 84132 kB
/proc/meminfo: VmallocTotal: 2375680 kB
/proc/meminfo: VmallocUsed: 0 kB
/proc/meminfo: VmallocChunk: 0 kB
/proc/bus/input/devices: I: Bus=0017 Vendor=0001 Product=2201 Version=0100
/proc/bus/input/devices: N: Name="ADB keyboard"
/proc/bus/input/devices: P: Phys=adb2:2.01/input
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=sysrq kbd leds event0
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=120003
/proc/bus/input/devices: B: KEY=10000 0 0 0 0 0 0 0 0 0 0 feb0ffdf 3cfffff ffffffff fffffffe
/proc/bus/input/devices: B: LED=7
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0017 Vendor=0001 Product=3302 Version=0100
/proc/bus/input/devices: N: Name="ADB mouse"
/proc/bus/input/devices: P: Phys=adb3:3.02/input
/proc/bus/input/devices: S: Sysfs=/devices/virtual/input/input1
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=mouse0 event1
/proc/bus/input/devices: B: PROP=0
/proc/bus/input/devices: B: EV=7
/proc/bus/input/devices: B: KEY=70000 0 0 0 0 0 0 0 0
/proc/bus/input/devices: B: REL=3
/proc/bus/input/devices: </pre>
<p>Lots of information about the hardware, although since this system is Nubus based rather than PCI there are some gaps.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log messages:</p>
<pre class="capturedOutput">$ sudo dmesg
[ 0.000000] Linux version 4.16.0-1-m68k (debian-kernel@lists.debian.org) (gcc version 7.3.0 (Debian 7.3.0-16)) #1 Debian 4.16.5-1 (2018-04-29)
[ 0.000000] Detected Macintosh model: 35
[ 0.000000] Penguin bootinfo data:
[ 0.000000] Video: addr 0xf9001000 row 0x320 depth 8 dimensions 800 x 600
[ 0.000000] Videological 0x0 phys. 0x0, SCC at 0x5000c020
[ 0.000000] Boottime: 0x0 GMTBias: 0x0
[ 0.000000] Machine ID: 35 CPUid: 0x2 memory size: 0x3e8
[ 0.000000] Apple Macintosh Quadra 800
[ 0.000000] On node 0 totalpages: 256000
[ 0.000000] DMA zone: 2500 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 256000 pages, LIFO batch:31
[ 0.000000] initrd: 3e1c7000 - 3e7fff9c
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 253500
[ 0.000000] Kernel command line: root=/dev/sda2 rw console=ttyS0 console=tty
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 1001456K/1024000K available (2741K kernel code, 391K rwdata, 964K rodata, 144K init, 204K bss, 22544K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
vector : 0x003d0bd8 - 0x003d0fd8 ( 1 KiB)
kmap : 0xd0000000 - 0xf0000000 ( 512 MiB)
vmalloc : 0x3f000000 - 0xd0000000 (2320 MiB)
lowmem : 0x00000000 - 0x3e800000 (1000 MiB)
.init : 0x(ptrval) - 0x(ptrval) ( 144 KiB)
.text : 0x(ptrval) - 0x(ptrval) (2742 KiB)
.data : 0x(ptrval) - 0x(ptrval) (1356 KiB)
.bss : 0x(ptrval) - 0x(ptrval) ( 205 KiB)
[ 0.000000] random: get_random_u32 called from __kmem_cache_create+0x34/0x492 with crng_init=0
[ 0.000000] SLUB: HWalign=16, Order=0-3, MinObjects=0, CPUs=1, Nodes=8
[ 0.000000] NR_IRQS: 200
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] console [ttyS0] enabled
[ 0.150000] Calibrating delay loop... 597.19 BogoMIPS (lpj=2985984)
[ 0.150000] pid_max: default: 32768 minimum: 301
[ 0.160000] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.160000] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.190000] devtmpfs: initialized
[ 0.210000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.210000] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.220000] NET: Registered protocol family 16
[ 0.230000] NuBus: Scanning NuBus slots.
[ 0.230000] Slot 9: Board resource not found!
[ 0.230000] SCSI subsystem initialized
[ 0.250000] VFS: Disk quotas dquot_6.6.0
[ 0.250000] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.280000] NET: Registered protocol family 2
[ 0.280000] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
[ 0.290000] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.290000] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.290000] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.290000] UDP hash table entries: 512 (order: 1, 8192 bytes)
[ 0.290000] UDP-Lite hash table entries: 512 (order: 1, 8192 bytes)
[ 0.290000] NET: Registered protocol family 1
[ 0.300000] Unpacking initramfs...
[ 1.490000] Freeing initrd memory: 6368K
[ 1.490000] workingset: timestamp_bits=11 max_order=18 bucket_order=7
[ 1.510000] zbud: loaded
[ 1.550000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 1.550000] io scheduler noop registered
[ 1.550000] io scheduler cfq registered (default)
[ 1.550000] io scheduler mq-deadline registered
[ 1.560000] atafb_init: start
[ 1.560000] macfb: framebuffer at 0xf9001000, mapped to 0x(ptrval), size 468k
[ 1.560000] macfb: mode is 800x600x8, linelength=800
[ 1.570000] Console: switching to colour frame buffer device 100x37
[ 1.580000] fb0: DAFB frame buffer device
[ 1.580000] pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@kernel.crashing.org>)
[ 1.580000] scc.0: ttyS0 at MMIO 0x5000c022 (irq = 4, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.580000] scc.1: ttyS1 at MMIO 0x5000c020 (irq = 4, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.590000] adb: Mac II ADB Driver v1.0 for Unified ADB
[ 1.590000] mousedev: PS/2 mouse device common for all mice
[ 1.590000] rtc-generic rtc-generic: rtc core: registered rtc-generic as rtc0
[ 1.590000] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.590000] NET: Registered protocol family 17
[ 1.590000] mpls_gso: MPLS GSO support
[ 1.600000] random: fast init done
[ 1.610000] ADB keyboard at 2, handler set to 3
[ 1.620000] Detected ADB keyboard, type ANSI.
[ 1.630000] input: ADB keyboard as /devices/virtual/input/input0
[ 1.640000] ADB mouse at 3, handler set to 2
[ 1.650000] input: ADB mouse as /devices/virtual/input/input1
[ 1.650000] registered taskstats version 1
[ 1.660000] zswap: loaded using pool lzo/zbud
[ 1.670000] rtc-generic rtc-generic: setting system clock to 2021-06-20 15:39:26 UTC (1624203566)
[ 1.680000] Freeing unused kernel memory: 144K
[ 1.680000] This architecture does not have kernel memory protection.
[ 2.730000] Checking for internal Macintosh ethernet (SONIC)..
[ 2.730000] yes
[ 2.740000] sonic.c:v0.92 20.9.98 tsbogend@alpha.franken.de
[ 2.740000] macsonic: onboard / comm-slot SONIC at 0x50f0a000
[ 2.750000] macsonic: revision 0x0004, using 32 bit DMA and register offset 2
[ 2.980000] eth0: MAC 08:00:07:12:34:56 IRQ 3
[ 3.040000] mac_esp: using PDMA for controller 0
[ 3.050000] mac_esp mac_esp.0: esp0: regs[(ptrval):(null)] irq[19]
[ 3.050000] mac_esp mac_esp.0: esp0: is a ESP236, 16 MHz (ccf=4), SCSI ID 7
[ 6.080000] scsi host0: esp
[ 6.140000] scsi 0:0:0:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[ 6.150000] scsi target0:0:0: Beginning Domain Validation
[ 6.150000] scsi target0:0:0: Domain Validation skipping write tests
[ 6.160000] scsi target0:0:0: Ending Domain Validation
[ 6.170000] scsi 0:0:1:0: CD-ROM QEMU QEMU CD-ROM 2.5+ PQ: 0 ANSI: 5
[ 6.170000] scsi target0:0:1: Beginning Domain Validation
[ 6.180000] scsi target0:0:1: Domain Validation skipping write tests
[ 6.180000] scsi target0:0:1: Ending Domain Validation
[ 6.190000] scsi 0:0:2:0: CD-ROM QEMU QEMU CD-ROM 2.5+ PQ: 0 ANSI: 5
[ 6.190000] scsi target0:0:2: Beginning Domain Validation
[ 6.190000] scsi target0:0:2: Domain Validation skipping write tests
[ 6.200000] scsi target0:0:2: Ending Domain Validation
[ 6.270000] sr 0:0:1:0: Power-on or device reset occurred
[ 6.310000] sd 0:0:0:0: Power-on or device reset occurred
[ 6.310000] sd 0:0:0:0: [sda] 4194304 512-byte logical blocks: (2.15 GB/2.00 GiB)
[ 6.320000] sd 0:0:0:0: [sda] Write Protect is off
[ 6.320000] sd 0:0:0:0: [sda] Mode Sense: 63 00 00 08
[ 6.320000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 6.350000] sr 0:0:1:0: [sr0] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[ 6.350000] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 6.360000] sr 0:0:1:0: Attached scsi CD-ROM sr0
[ 6.360000] sr 0:0:2:0: Power-on or device reset occurred
[ 6.390000] sda: [mac] sda1 sda2 sda3 sda4
[ 6.400000] sr 0:0:2:0: [sr1] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[ 6.410000] sr 0:0:2:0: Attached scsi CD-ROM sr1
[ 6.450000] sd 0:0:0:0: [sda] Attached SCSI disk
[ 7.830000] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[ 9.290000] NET: Registered protocol family 10
[ 9.480000] Segment Routing with IPv6
[ 9.570000] systemd[1]: systemd 238 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 9.580000] systemd[1]: Detected architecture m68k.
[ 9.670000] systemd[1]: Set hostname to <deb-m68k>.
[ 11.050000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.060000] systemd[1]: Listening on udev Kernel Socket.
[ 11.080000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.090000] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 11.110000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.120000] systemd[1]: Listening on Journal Socket (/dev/log).
[ 11.140000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.150000] systemd[1]: Reached target Remote File Systems.
[ 11.170000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.170000] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 11.190000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.190000] systemd[1]: Listening on Journal Socket.
[ 11.210000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.260000] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[ 11.280000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.320000] random: systemd: uninitialized urandom read (16 bytes read)
[ 11.360000] random: systemd: uninitialized urandom read (16 bytes read)
[ 12.560000] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro
[ 13.340000] random: crng init done
[ 14.230000] systemd-journald[152]: Received request to flush runtime journal from PID 1
[ 15.900000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 15.930000] sr 0:0:1:0: Attached scsi generic sg1 type 5
[ 16.030000] sr 0:0:2:0: Attached scsi generic sg2 type 5
[ 19.500000] Adding 167424k swap on /dev/sda3. Priority:-2 extents:1 across:167424k FS</pre>
<p>Lots of information about the detection of hardware and initialization of devices.</p>
<h3 style="text-align: left;"><a name="sysinfo_debianSidBookworm">System Information - Debian Linux unstable (bookworm/sid)</a></h3>
<p>Taking a basic "netinst" install of Debian Linux unstable (buster/sid), pointing it at the repository for the unoffical ports (http://ftp.ports.debian.org/debian-ports/) and updating. After forcing a minor conflict through, we get a Debian Linux unstable (bookworm/sid) system. So let's see what it says about the system...</p>
<h4 style="text-align: left;">uname, lsb_release & /etc/os-release</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">$ uname -a
Linux deb-m68k 5.17.0-1-m68k #1 Debian 5.17.3-1 (2022-04-18) m68k GNU/Linux</pre>
<p>So a "Linux" kernel, running on a node named "deb-m68k", kernel release "5.17.0-1-m68k" (a patched 5.17.0 kernel), kernel version "#1 Debian 5.17.3-1 (2022-04-18)", platform architecture "m68k", for operating system "GNU/Linux".</p>
<p>Linux Standard Base (LSB) release information:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux bookworm/sid
Release: unstable
Codename: sid</pre>
<p>Confirming with the Debian release information files:</p>
<pre class="capturedOutput">$ cat /etc/debian_version
bookworm/sid
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux bookworm/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"</pre>
<p>So a Debian unstable (sid) for Debian Linux 12 (bookworm).</p>
<h4 style="text-align: left;">lscpu & /proc/cpuinfo</h4>
<p>Report system processor(s) information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: m68k
Byte Order: Big Endian
CPU(s): 1
On-line CPU(s) list: 0</pre>
<p>That is a bit bare bones, fortunately <tt>/proc/cpuinfo</tt> has a bit more to say:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
CPU: 68040
MMU: 68040
FPU: 68040
Clocking: 1193.1MHz
BogoMips: 795.44
Calibration: 3977216 loops</pre>
<p>Wow those 'BogoMips' and 'Clocking' figures are pretty spectacular. The Motorola 68040 (<a href="https://en.wikipedia.org/wiki/Motorola_68040">Wikipedia</a>) had a maximum clock of 40 MHz (although some parts could overclock to 50 MHz with suitable cooling), but here we see a claim of the CPU clock in excess of 1 GHz.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
MemTotal: 1006888 kB
MemFree: 521860 kB
MemAvailable: 968732 kB
Buffers: 27560 kB
Cached: 418092 kB
SwapCached: 0 kB
Active: 130368 kB
Inactive: 326100 kB
Active(anon): 180 kB
Inactive(anon): 10872 kB
Active(file): 130188 kB
Inactive(file): 315228 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 167424 kB
SwapFree: 167424 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 10824 kB
Mapped: 20648 kB
Shmem: 236 kB
KReclaimable: 17428 kB
Slab: 22452 kB
SReclaimable: 17428 kB
SUnreclaim: 5024 kB
KernelStack: 424 kB
PageTables: 152 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 670868 kB
Committed_AS: 116260 kB
VmallocTotal: 2375680 kB
VmallocUsed: 1588 kB
VmallocChunk: 0 kB
Percpu: 128 kB</pre>
<p>Showing the 1,000 MiB of RAM and 167 MB of swap.</p>
<h4 style="text-align: left;">lshw</h4>
<p>A hardware report:</p>
<pre class="capturedOutput">$ sudo lshw -disable scsi
deb-m68k
description: Computer
width: 32 bits
*-core
description: Motherboard
physical id: 0
*-memory
description: System memory
physical id: 0
size: 983MiB
*-cpu
physical id: 1
bus info: cpu@0
width: 32 bits
*-graphics
product: DAFB
physical id: 1
logical name: /dev/fb0
capabilities: fb
configuration: depth=8 resolution=800,600
*-input:0
product: ADB keyboard
physical id: 2
logical name: input0
logical name: /dev/input/event0
logical name: input0::capslock
logical name: input0::numlock
logical name: input0::scrolllock
capabilities: adb
*-input:1
product: ADB mouse
physical id: 3
logical name: input1
logical name: /dev/input/event1
logical name: /dev/input/mouse0
capabilities: adb
*-network
description: Ethernet interface
physical id: 4
logical name: eth0
serial: 08:00:07:12:34:56
capabilities: ethernet physical
configuration: broadcast=yes driver=macsonic driverversion=5.17.0-1-m68k ip=10.0.2.15 multicast=yes</pre>
<p>The QEMU system has some issues with the SCSI emulation that <tt>lshw</tt> triggers, so the SCSI tests have been disabled.</p>
<p>Lots of information about the hardware, although since this system is Nubus based rather than PCI there is lots of stuff missing.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log messages:</p>
<pre class="capturedOutput">$ sudo dmesg
[ 0.000000] Linux version 5.17.0-1-m68k (debian-kernel@lists.debian.org) (gcc-11 (Debian 11.2.0-20) 11.2.0, GNU ld (GNU Binutils for Debian) 2.38) #1 Debian 5.17.3-1 (2022-04-18)
[ 0.000000] Detected Macintosh model: 35
[ 0.000000] Penguin bootinfo data:
[ 0.000000] Video: addr 0xf9001000 row 0x320 depth 8 dimensions 800 x 600
[ 0.000000] Videological 0x0 phys. 0x0, SCC at 0x5000c020
[ 0.000000] Boottime: 0x0 GMTBias: 0x0
[ 0.000000] Machine ID: 35 CPUid: 0x2 memory size: 0x3e8
[ 0.000000] Apple Macintosh Quadra 800
[ 0.000000] initrd: 3e02b000 - 3e7fff09
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000000000-0x000003e7ffffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000003e7fffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003e7fffff]
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 253500
[ 0.000000] Kernel command line: root=/dev/sda2 rw console=ttyS0 console=tty
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] Sorting __ex_table...
[ 0.000000] mem auto-init: stack:off, heap alloc:on, heap free:off
[ 0.000000] Memory: 998704K/1024000K available (3438K kernel code, 610K rwdata, 1132K rodata, 168K init, 211K bss, 25296K reserved, 0K cma-reserved)
[ 0.000000] random: get_random_u32 called from __kmem_cache_create+0x24/0x26e with crng_init=0
[ 0.000000] SLUB: HWalign=16, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 200
[ 0.000000] clocksource: via1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 2439823894983 ns
[ 0.010000] Console: colour dummy device 80x25
[ 0.010000] printk: console [tty0] enabled
[ 0.030000] printk: console [ttyS0] enabled
[ 0.030000] Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
[ 0.070000] pid_max: default: 32768 minimum: 301
[ 0.070000] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.080000] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.120000] cblist_init_generic: Setting adjustable number of callback queues.
[ 0.120000] cblist_init_generic: Setting shift to 0 and lim to 1.
[ 0.140000] devtmpfs: initialized
[ 0.150000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.160000] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.170000] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.180000] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[ 0.180000] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[ 0.220000] NuBus: Scanning NuBus slots.
[ 0.220000] Slot 9: Board resource not found!
[ 0.220000] SCSI subsystem initialized
[ 0.240000] clocksource: Switched to clocksource via1
[ 0.250000] VFS: Disk quotas dquot_6.6.0
[ 0.250000] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 0.290000] NET: Registered PF_INET protocol family
[ 0.290000] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.300000] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.310000] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.310000] TCP bind hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.310000] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.310000] MPTCP token hash table entries: 1024 (order: 1, 12288 bytes, linear)
[ 0.320000] UDP hash table entries: 512 (order: 1, 8192 bytes, linear)
[ 0.320000] UDP-Lite hash table entries: 512 (order: 1, 8192 bytes, linear)
[ 0.320000] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.320000] NET: Registered PF_XDP protocol family
[ 0.330000] Initialise system trusted keyrings
[ 0.330000] Key type blacklist registered
[ 0.340000] Trying to unpack rootfs image as initramfs...
[ 0.380000] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[ 0.410000] zbud: loaded
[ 0.420000] Key type asymmetric registered
[ 0.420000] Asymmetric key parser 'x509' registered
[ 1.380000] Freeing initrd memory: 8016K
[ 1.530000] alg: self-tests for CTR-KDF (hmac(sha256)) passed
[ 1.530000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 1.530000] io scheduler mq-deadline registered
[ 1.530000] macfb: framebuffer at 0xf9001000, mapped to 0x(ptrval), size 468k
[ 1.540000] macfb: mode is 800x600x8, linelength=800
[ 1.550000] Console: switching to colour frame buffer device 100x37
[ 1.560000] fb0: DAFB frame buffer device
[ 1.560000] pmac_zilog: 0.6 (Benjamin Herrenschmidt <benh@kernel.crashing.org>)
[ 1.560000] scc.0: ttyS0 at MMIO 0x5000c022 (irq = 4, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.570000] scc.1: ttyS1 at MMIO 0x5000c020 (irq = 4, base_baud = 230400) is a Z85c30 ESCC - Serial port
[ 1.580000] Non-volatile memory driver v1.3
[ 1.580000] adb: Mac II ADB Driver v1.0 for Unified ADB
[ 1.580000] mousedev: PS/2 mouse device common for all mice
[ 1.600000] random: fast init done
[ 1.600000] adb device [2]: 2 0x1
[ 1.600000] adb device [3]: 3 0x2
[ 1.610000] ADB keyboard at 2 has handler 0x3
[ 1.610000] Detected ADB keyboard, type ANSI.
[ 1.610000] input: ADB keyboard as /devices/virtual/input/input0
[ 1.620000] ADB mouse (standard) at 3 has handler 0x2
[ 1.620000] input: ADB mouse as /devices/virtual/input/input1
[ 1.630000] rtc-generic rtc-generic: registered as rtc0
[ 1.640000] rtc-generic rtc-generic: setting system clock to 2022-05-10T19:26:14 UTC (1652210774)
[ 1.650000] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.660000] NET: Registered PF_PACKET protocol family
[ 1.670000] mpls_gso: MPLS GSO support
[ 1.670000] registered taskstats version 1
[ 1.680000] Loading compiled-in X.509 certificates
[ 1.780000] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
[ 1.780000] Loaded X.509 cert 'Debian Secure Boot Signer 2021 - linux: 4b6ef5abca669825178e052c84667ccbc0531f8c'
[ 1.790000] zswap: loaded using pool lzo/zbud
[ 1.800000] Key type ._fscrypt registered
[ 1.800000] Key type .fscrypt registered
[ 1.810000] Key type fscrypt-provisioning registered
[ 1.880000] Key type encrypted registered
[ 1.900000] Freeing unused kernel image (initmem) memory: 168K
[ 1.900000] This architecture does not have kernel memory protection.
[ 1.900000] Run /init as init process
[ 1.910000] with arguments:
[ 1.910000] /init
[ 1.910000] with environment:
[ 1.910000] HOME=/
[ 1.910000] TERM=linux
[ 3.320000] Onboard/comm-slot SONIC, revision 0x0004, 32 bit DMA, register offset 2
[ 3.330000] SONIC ethernet @50f0a000, MAC 08:00:07:12:34:56, IRQ 3
[ 3.370000] mac_esp: using PDMA for controller 0
[ 3.380000] mac_esp mac_esp.0: esp0: regs[(ptrval):0] irq[19]
[ 3.380000] mac_esp mac_esp.0: esp0: is a ESP236, 16 MHz (ccf=4), SCSI ID 7
[ 6.480000] scsi host0: esp
[ 6.550000] scsi 0:0:0:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[ 6.550000] scsi target0:0:0: Beginning Domain Validation
[ 6.560000] scsi target0:0:0: Domain Validation skipping write tests
[ 6.570000] scsi target0:0:0: Ending Domain Validation
[ 6.570000] scsi 0:0:1:0: CD-ROM QEMU QEMU CD-ROM 2.5+ PQ: 0 ANSI: 5
[ 6.580000] scsi target0:0:1: Beginning Domain Validation
[ 6.590000] scsi target0:0:1: Domain Validation skipping write tests
[ 6.590000] scsi target0:0:1: Ending Domain Validation
[ 6.600000] scsi 0:0:2:0: CD-ROM QEMU QEMU CD-ROM 2.5+ PQ: 0 ANSI: 5
[ 6.600000] scsi target0:0:2: Beginning Domain Validation
[ 6.610000] scsi target0:0:2: Domain Validation skipping write tests
[ 6.620000] scsi target0:0:2: Ending Domain Validation
[ 6.740000] sr 0:0:1:0: Power-on or device reset occurred
[ 6.750000] sr 0:0:1:0: [sr0] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[ 6.750000] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 6.810000] sr 0:0:1:0: Attached scsi CD-ROM sr0
[ 6.810000] sr 0:0:2:0: Power-on or device reset occurred
[ 6.820000] sr 0:0:2:0: [sr1] scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[ 6.850000] sd 0:0:0:0: Power-on or device reset occurred
[ 6.870000] sr 0:0:2:0: Attached scsi CD-ROM sr1
[ 6.890000] sd 0:0:0:0: [sda] 4194304 512-byte logical blocks: (2.15 GB/2.00 GiB)
[ 6.910000] sd 0:0:0:0: [sda] Write Protect is off
[ 6.910000] sd 0:0:0:0: [sda] Mode Sense: 63 00 00 08
[ 6.910000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 6.970000] sda: [mac] sda1 sda2 sda3 sda4
[ 7.010000] sd 0:0:0:0: [sda] Attached SCSI disk
[ 8.440000] process '/usr/bin/fstype' started with executable stack
[ 9.170000] EXT4-fs (sda2): mounted filesystem with ordered data mode. Quota mode: none.
[ 11.180000] systemd[1]: Inserted module 'autofs4'
[ 11.310000] NET: Registered PF_INET6 protocol family
[ 11.520000] Segment Routing with IPv6
[ 11.530000] In-situ OAM (IOAM) with IPv6
[ 11.740000] systemd[1]: systemd 250.4-1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK -SECCOMP +GCRYPT +GNUTLS -OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[ 11.750000] systemd[1]: Detected architecture m68k.
[ 11.790000] systemd[1]: Hostname set to <deb-m68k>.
[ 15.300000] systemd[1]: Queued start job for default target Graphical Interface.
[ 15.320000] random: systemd: uninitialized urandom read (16 bytes read)
[ 15.380000] systemd[1]: Created slice Slice /system/getty.
[ 15.390000] random: systemd: uninitialized urandom read (16 bytes read)
[ 15.410000] systemd[1]: Created slice Slice /system/modprobe.
[ 15.420000] random: systemd: uninitialized urandom read (16 bytes read)
[ 15.450000] systemd[1]: Created slice Slice /system/serial-getty.
[ 15.480000] systemd[1]: Created slice User and Session Slice.
[ 15.490000] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 15.510000] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 15.540000] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 15.560000] systemd[1]: Reached target Local Encrypted Volumes.
[ 15.570000] systemd[1]: Reached target Local Integrity Protected Volumes.
[ 15.590000] systemd[1]: Reached target Path Units.
[ 15.610000] systemd[1]: Reached target Remote File Systems.
[ 15.620000] systemd[1]: Reached target Slice Units.
[ 15.640000] systemd[1]: Reached target Local Verity Protected Volumes.
[ 15.660000] systemd[1]: Listening on Syslog Socket.
[ 15.680000] systemd[1]: Listening on fsck to fsckd communication Socket.
[ 15.690000] systemd[1]: Listening on initctl Compatibility Named Pipe.
[ 15.760000] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
[ 15.770000] systemd[1]: Listening on Journal Socket (/dev/log).
[ 15.790000] systemd[1]: Listening on Journal Socket.
[ 15.810000] systemd[1]: Listening on udev Control Socket.
[ 15.830000] systemd[1]: Listening on udev Kernel Socket.
[ 15.860000] systemd[1]: Huge Pages File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
[ 15.910000] systemd[1]: Mounting POSIX Message Queue File System...
[ 16.010000] systemd[1]: Mounting Kernel Debug File System...
[ 16.050000] systemd[1]: Kernel Trace File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/tracing).
[ 16.200000] systemd[1]: Starting Set the console keyboard layout...
[ 16.340000] systemd[1]: Starting Create List of Static Device Nodes...
[ 16.460000] systemd[1]: Starting Load Kernel Module configfs...
[ 16.560000] systemd[1]: Starting Load Kernel Module drm...
[ 16.720000] systemd[1]: Starting Load Kernel Module fuse...
[ 16.750000] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathExists=!/run/initramfs/fsck-root).
[ 16.900000] fuse: init (API version 7.36)
[ 16.920000] systemd[1]: Starting Journal Service...
[ 17.080000] systemd[1]: Starting Load Kernel Modules...
[ 17.190000] systemd[1]: Starting Remount Root and Kernel File Systems...
[ 17.290000] systemd[1]: Repartition Root Disk was skipped because all trigger condition checks failed.
[ 17.460000] systemd[1]: Starting Coldplug All udev Devices...
[ 17.510000] random: crng init done
[ 17.510000] random: 7 urandom warning(s) missed due to ratelimiting
[ 17.880000] systemd[1]: Mounted POSIX Message Queue File System.
[ 17.940000] systemd[1]: Mounted Kernel Debug File System.
[ 17.980000] EXT4-fs (sda2): re-mounted. Quota mode: none.
[ 18.160000] systemd[1]: Finished Create List of Static Device Nodes.
[ 18.360000] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 18.400000] systemd[1]: Finished Load Kernel Module configfs.
[ 18.520000] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 18.560000] systemd[1]: Finished Load Kernel Module drm.
[ 18.640000] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[ 18.680000] systemd[1]: Finished Load Kernel Module fuse.
[ 18.760000] systemd[1]: Finished Load Kernel Modules.
[ 18.800000] systemd[1]: Finished Remount Root and Kernel File Systems.
[ 18.990000] systemd[1]: Mounting FUSE Control File System...
[ 19.190000] systemd[1]: Mounting Kernel Configuration File System...
[ 19.190000] systemd[1]: Platform Persistent Storage Archival was skipped because of a failed condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[ 19.340000] systemd[1]: Starting Load/Save Random Seed...
[ 19.440000] systemd[1]: Starting Apply Kernel Variables...
[ 19.620000] systemd[1]: Starting Create System Users...
[ 20.060000] systemd[1]: Started Journal Service.
[ 20.940000] systemd-journald[176]: Received client request to flush runtime journal.
[ 25.730000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 25.730000] sr 0:0:1:0: Attached scsi generic sg1 type 5
[ 25.730000] sr 0:0:2:0: Attached scsi generic sg2 type 5
[ 30.870000] Adding 167424k swap on /dev/sda3. Priority:-2 extents:1 across:167424k FS</pre>
<p>Lots of information about the detection of hardware and initialization of devices.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>To see how well this compares to real hardware, we need some benchmarks for comparison...</p>
<h4 style="text-align: left;"><a name="bogomips">BogoMips</a></h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>).</p>
<p>Linux 4.16.0, Debian Linux unstable (buster/sid) for m68k:</p>
<pre class="capturedOutput">Calibrating delay loop... 597.19 BogoMIPS (lpj=2985984)</pre>
<p>Linux 5.17.0, Debian Linux unstable (bookworm/sid) for m68k:</p>
<pre class="capturedOutput">Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)</pre>
<p>These lines from the <tt>dmesg</tt> output for BogoMips, indicate that the result is from calibration using the basic algorithm, rather than using an alternative based on system timers. This shows fluctuation between boots, demonstrating that the value is calculated and likely reflects the performance for the instruction mix used in this busy-wait-loop.</p>
<p>In this case the BogoMips results are approximately inline with the claimed CPU clock: (estimated as: 0.67 * clock MHz = BogoMips)</p>
<ul>
<li>Linux 4.16.0: 0.67 * 895.7 MHz = 600.12 BogoMips <i>vs</i>. <tt>597.19 BogoMIPS</tt></li>
<li>Linux 5.17.0: 0.67 * 1193.1 MHz = 799.38 BogoMips <i>vs</i>. <tt>795.44 BogoMIPS</tt></li>
</ul>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://www.openssl.org/">OpenSSL</a> cryptographic library provides a tool providing a command-line interface to the library methods and one aspect of this provides a speed test. Since I'm mostly interested in older systems I'm going to use the common RSA and MD5 methods.</p>
<p>After a bit of mucking about to get APT (Advanced Package Tool) working for the installation (including an update to 'sid' for 'bookworm'), and installing OpenSSL we have:</p>
<pre class="capturedOutput">$ openssl version
OpenSSL 1.1.1n 15 Mar 2022</pre>
<p>So lets see what the speed test says:</p>
<pre class="capturedOutput">$ openssl speed md5 rsa
Doing md5 for 3s on 16 size blocks: 1169120 md5's in 3.02s
Doing md5 for 3s on 64 size blocks: 37700 md5's in 3.02s
Doing md5 for 3s on 256 size blocks: 24462 md5's in 3.02s
Doing md5 for 3s on 1024 size blocks: 11084 md5's in 3.02s
Doing md5 for 3s on 8192 size blocks: 1766 md5's in 3.02s
Doing md5 for 3s on 16384 size blocks: 900 md5's in 3.02s
Doing 512 bits private rsa's for 10s: 1504 512 bits private RSA's in 9.74s
Doing 512 bits public rsa's for 10s: 16337 512 bits public RSA's in 8.24s
Doing 1024 bits private rsa's for 10s: 286 1024 bits private RSA's in 10.06s
Doing 1024 bits public rsa's for 10s: 5905 1024 bits public RSA's in 9.46s
Doing 2048 bits private rsa's for 10s: 47 2048 bits private RSA's in 11.01s
Doing 2048 bits public rsa's for 10s: 1841 2048 bits public RSA's in 9.76s
Doing 3072 bits private rsa's for 10s: 15 3072 bits private RSA's in 10.09s
Doing 3072 bits public rsa's for 10s: 790 3072 bits public RSA's in 9.98s
Doing 4096 bits private rsa's for 10s: 8 4096 bits private RSA's in 30.61s
Doing 4096 bits public rsa's for 10s: 521 4096 bits public RSA's in 10.28s
Doing 7680 bits private rsa's for 10s: 2 7680 bits private RSA's in 18.34s
Doing 7680 bits public rsa's for 10s: 138 7680 bits public RSA's in 11.27s
Doing 15360 bits private rsa's for 10s: 1 15360 bits private RSA's in 66.88s
Doing 15360 bits public rsa's for 10s: 36 15360 bits public RSA's in 10.50s
OpenSSL 1.1.1n 15 Mar 2022
built on: Tue Mar 15 18:46:18 2022 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-K45oLO/openssl-1.1.1n=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 6194.01k 798.94k 2073.60k 3758.28k 4790.42k 4882.65k
sign verify sign/s verify/s
rsa 512 bits 0.006476s 0.000504s 154.4 1982.6
rsa 1024 bits 0.035175s 0.001602s 28.4 624.2
rsa 2048 bits 0.234255s 0.005301s 4.3 188.6
rsa 3072 bits 0.672667s 0.012633s 1.5 79.2
rsa 4096 bits 3.826250s 0.019731s 0.3 50.7
rsa 7680 bits 9.170000s 0.081667s 0.1 12.2
rsa 15360 bits 66.880000s 0.291667s 0.0 3.4</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 4,790.42k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.3</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 50.7</li>
</ul>
<p>Hummm... this build of OpenSSL doesn't use assembler implementations of the methods, so we expect performance to be lower than equivalent x86 systems. Looking at the MD5 results our list, the performance looks to be a bit less than that of a Intel Pentium 75, at a rough estimate it looks to be about the level expected for a Pentium 60. For the RSA results it looks to be in the realm of a Intel Pentium Pro 200. That is quite a range, but these are very different algorithms so differences are expected.</p>
<h4 style="text-align: left;">OpenSSL 3.0</h4>
<p><i>Update</i> (2022-May-18) bookworm/sid has pushed out an update to OpenSSL 3, which has a bunch of changes to OpenSSL behaviour... so let's try running it.</p>
<p>Details of the OpenSSL build:</p>
<pre class="capturedOutput">$ openssl version -a
OpenSSL 3.0.3 3 May 2022 (Library: OpenSSL 3.0.3 3 May 2022)
built on: Mon May 16 21:20:27 2022 UTC
platform: debian-m68k
options: bn(64,32)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DB_ENDIAN -g -O2 -ffile-prefix-map=/build/openssl-AG3TKG/openssl-3.0.3=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/m68k-linux-gnu/engines-3"
MODULESDIR: "/usr/lib/m68k-linux-gnu/ossl-modules"
Seeding source: os-specific
CPUINFO: N/A</pre>
<p>A base run of the speed test on the QEMU emulated m68k system:</p>
<pre class="capturedOutput">$ openssl speed
...
version: 3.0.3
built on: Mon May 16 21:20:27 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DB_ENDIAN -g -O2 -ffile-prefix-map=/build/openssl-AG3TKG/openssl-3.0.3=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2
CPUINFO: N/A
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 2903.86k 11336.87k 33977.76k 3212.11k 89841.25k 91397.51k
sha1 2635.15k 7148.93k 1222.73k 2197.63k 2933.62k 3106.36k
sha256 85.89k 4437.99k 10123.96k 13271.76k 808.28k 808.28k
sha512 341.37k 1494.36k 2103.18k 3018.65k 3530.75k 3603.39k
hmac(md5) 1640.10k 308.69k 1084.85k 2675.29k 4823.56k 5129.62k
des-ede3 152.43k 174.71k 185.56k 185.81k 186.55k 188.63k
aes-128-cbc 429.18k 634.09k 758.17k 789.70k 794.79k 792.07k
aes-192-cbc 401.67k 571.78k 634.49k 692.05k 699.85k 700.63k
aes-256-cbc 369.70k 533.49k 581.51k 599.14k 604.91k 620.52k
camellia-128-cbc 698.23k 1467.43k 2085.67k 2307.78k 2482.18k 2490.37k
camellia-192-cbc 634.25k 1420.31k 2098.26k 2317.44k 2395.00k 2394.58k
camellia-256-cbc 688.12k 1450.35k 2080.15k 2313.36k 2397.92k 2392.50k
ghash 422.45k 784.61k 998.57k 1079.61k 1104.02k 1101.31k
rand 359.42k 1329.43k 284.66k 488.56k 600.75k 611.02k
sign verify sign/s verify/s
rsa 512 bits 0.006797s 0.010921s 147.1 91.6
rsa 1024 bits 0.036051s 0.001602s 27.7 624.4
rsa 2048 bits 0.218261s 0.005592s 4.6 178.8
rsa 3072 bits 0.708667s 0.013202s 1.4 75.7
rsa 4096 bits 1.423750s 0.019920s 0.7 50.2
rsa 7680 bits 9.545000s 0.084583s 0.1 11.8
sign verify sign/s verify/s
dsa 512 bits 0.014020s 0.007466s 71.3 133.9
dsa 1024 bits 0.023839s 0.021906s 41.9 45.6
dsa 2048 bits 0.076462s 0.071214s 13.1 14.0
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0352s 0.0298s 28.4 33.6
192 bits ecdsa (nistp192) 0.0406s 0.0317s 24.6 31.6
224 bits ecdsa (nistp224) 0.0495s 0.0407s 20.2 24.6
256 bits ecdsa (nistp256) 0.0536s 0.0434s 18.7 23.0
384 bits ecdsa (nistp384) 0.1397s 0.0996s 7.2 10.0
521 bits ecdsa (nistp521) 0.3448s 0.2357s 2.9 4.2
163 bits ecdsa (nistk163) 0.0184s 0.0337s 54.4 29.7
233 bits ecdsa (nistk233) 0.0360s 0.0694s 27.8 14.4
283 bits ecdsa (nistk283) 0.0686s 0.1329s 14.6 7.5
409 bits ecdsa (nistk409) 0.1886s 0.3615s 5.3 2.8
571 bits ecdsa (nistk571) 0.4570s 0.8606s 2.2 1.2
163 bits ecdsa (nistb163) 0.0192s 0.0366s 51.9 27.3
233 bits ecdsa (nistb233) 0.0389s 0.0744s 25.7 13.4
283 bits ecdsa (nistb283) 0.0695s 0.1441s 14.4 6.9
409 bits ecdsa (nistb409) 0.1853s 0.3487s 5.4 2.9
571 bits ecdsa (nistb571) 0.5119s 1.0671s 2.0 0.9
256 bits ecdsa (brainpoolP256r1) 0.0677s 0.0621s 14.8 16.1
256 bits ecdsa (brainpoolP256t1) 0.0674s 0.0559s 14.8 17.9
384 bits ecdsa (brainpoolP384r1) 0.2020s 0.1692s 5.0 5.9
384 bits ecdsa (brainpoolP384t1) 0.2065s 0.1552s 4.8 6.4
512 bits ecdsa (brainpoolP512r1) 0.3700s 0.2971s 2.7 3.4
512 bits ecdsa (brainpoolP512t1) 0.3696s 0.3719s 2.7 2.7
op op/s
160 bits ecdh (secp160r1) 0.0354s 28.2
192 bits ecdh (nistp192) 0.0372s 26.8
224 bits ecdh (nistp224) 0.0473s 21.1
256 bits ecdh (nistp256) 0.0507s 19.7
384 bits ecdh (nistp384) 0.1316s 7.6
521 bits ecdh (nistp521) 0.3216s 3.1
163 bits ecdh (nistk163) 0.0160s 62.3
233 bits ecdh (nistk233) 0.0331s 30.2
283 bits ecdh (nistk283) 0.0631s 15.8
409 bits ecdh (nistk409) 0.1523s 6.6
571 bits ecdh (nistk571) 0.4369s 2.3
163 bits ecdh (nistb163) 0.0175s 57.0
233 bits ecdh (nistb233) 0.0366s 27.3
283 bits ecdh (nistb283) 0.0660s 15.2
409 bits ecdh (nistb409) 0.2024s 4.9
571 bits ecdh (nistb571) 0.4629s 2.2
256 bits ecdh (brainpoolP256r1) 0.0691s 14.5
256 bits ecdh (brainpoolP256t1) 0.0654s 15.3
384 bits ecdh (brainpoolP384r1) 0.1969s 5.1
384 bits ecdh (brainpoolP384t1) 0.2575s 3.9
512 bits ecdh (brainpoolP512r1) 0.3443s 2.9
512 bits ecdh (brainpoolP512t1) 0.3417s 2.9
253 bits ecdh (X25519) 0.0046s 217.1
448 bits ecdh (X448) 0.0362s 27.6
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0017s 0.0049s 596.2 203.3
456 bits EdDSA (Ed448) 0.4308s 0.0368s 2.3 27.1
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0684s 0.0538s 14.6 18.6
op op/s
2048 bits ffdh 0.7329s 1.4
3072 bits ffdh 2.6000s 0.4
4096 bits ffdh 5.2400s 0.2</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 89,841.25k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.7</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 50.2</li>
</ul>
<p>That's odd the MD5 result is a lot better... (4.7 MB/s vs. 89.8 MB/s) that seems a bit large to be simply explained by changes in background load and the old number was pretty stable over 16 runs. Checking an OpenSSL 1.1.1n build (~96 MB/s for MD5 in a single run) it looks like the change is related to something else on the platform.</p>
<p>Can we use the Linux kernel crypto methods (AF_ALG)?</p>
<pre class="capturedOutput">$ openssl engine afalg -c
(afalg) AFALG engine support
[AES-128-CBC, AES-192-CBC, AES-256-CBC]</pre>
<p>That looks like a "yes", so let's try a run with the kernel methods enabled (although the engine only provides AES, other methods will fall-back to the OpenSSL implementation):</p>
<pre class="capturedOutput">$ openssl speed -engine afalg
[ 2171.560000] NET: Registered PF_ALG protocol family
Engine "afalg" set.
...
version: 3.0.3
built on: Mon May 16 21:20:27 2022 UTC
options: bn(64,32)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DB_ENDIAN -g -O2 -ffile-prefix-map=/build/openssl-AG3TKG/openssl-3.0.3=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2
CPUINFO: N/A
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 3515.39k 11646.49k 32664.45k 3221.72k 94781.79k 94552.93k
sha1 2707.50k 423.20k 1299.03k 39320.35k 3084.54k 3123.37k
sha256 85.31k 206.35k 497.72k 723.79k 830.09k 854.58k
sha512 363.94k 1479.65k 2267.87k 3241.07k 3731.91k 3718.74k
hmac(md5) 1933.38k 342.86k 23365.42k 2657.54k 89425.46k 5047.60k
des-ede3 152.54k 176.19k 193.74k 196.66k 196.07k 196.18k
aes-128-cbc 201.90k 848.34k 3144.12k 11942.57k 57034.03k 233963.52k
aes-192-cbc 194.88k 971.49k 2994.42k 11822.29k 115796.33k 198246.40k
aes-256-cbc 238.73k 896.07k 3201.41k 14706.08k 73564.16k 144998.40k
camellia-128-cbc 726.50k 1490.39k 2199.90k 2438.27k 2568.82k 2604.08k
camellia-192-cbc 716.46k 1536.28k 2178.63k 2372.15k 2411.49k 2408.77k
camellia-256-cbc 685.88k 1477.70k 2087.42k 2306.37k 2406.06k 2408.77k
ghash 420.56k 782.81k 989.41k 1081.15k 1107.69k 1101.31k
rand 340.81k 1235.13k 280.08k 477.63k 588.63k 604.19k
sign verify sign/s verify/s
rsa 512 bits 0.006899s 0.000522s 145.0 1916.2
rsa 1024 bits 0.036255s 0.001609s 27.6 621.4
rsa 2048 bits 0.215745s 0.005593s 4.6 178.8
rsa 3072 bits 0.711333s 0.013188s 1.4 75.8
rsa 4096 bits 1.536250s 0.020000s 0.7 50.0
rsa 7680 bits 9.280000s 0.076515s 0.1 13.1
sign verify sign/s verify/s
dsa 512 bits 0.009346s 0.006757s 107.0 148.0
dsa 1024 bits 0.022854s 0.020208s 43.8 49.5
dsa 2048 bits 0.071714s 0.066577s 13.9 15.0
sign verify sign/s verify/s
160 bits ecdsa (secp160r1) 0.0334s 0.0282s 30.0 35.5
192 bits ecdsa (nistp192) 0.0374s 0.0290s 26.8 34.5
224 bits ecdsa (nistp224) 0.0468s 0.0364s 21.4 27.4
256 bits ecdsa (nistp256) 0.0515s 0.0413s 19.4 24.2
384 bits ecdsa (nistp384) 0.1309s 0.0944s 7.6 10.6
521 bits ecdsa (nistp521) 0.3326s 0.2270s 3.0 4.4
163 bits ecdsa (nistk163) 0.0175s 0.0333s 57.2 30.0
233 bits ecdsa (nistk233) 0.0342s 0.0652s 29.2 15.3
283 bits ecdsa (nistk283) 0.0653s 0.1176s 15.3 8.5
409 bits ecdsa (nistk409) 0.1462s 0.3544s 6.8 2.8
571 bits ecdsa (nistk571) 0.4268s 0.7738s 2.3 1.3
163 bits ecdsa (nistb163) 0.0192s 0.0359s 52.2 27.8
233 bits ecdsa (nistb233) 0.0404s 0.0770s 24.7 13.0
283 bits ecdsa (nistb283) 0.0748s 0.1305s 13.4 7.7
409 bits ecdsa (nistb409) 0.1835s 0.3627s 5.4 2.8
571 bits ecdsa (nistb571) 0.5886s 1.1243s 1.7 0.9
256 bits ecdsa (brainpoolP256r1) 0.0630s 0.0605s 15.9 16.5
256 bits ecdsa (brainpoolP256t1) 0.0629s 0.0545s 15.9 18.4
384 bits ecdsa (brainpoolP384r1) 0.1940s 0.1605s 5.2 6.2
384 bits ecdsa (brainpoolP384t1) 0.1915s 0.1445s 5.2 6.9
512 bits ecdsa (brainpoolP512r1) 0.3476s 0.2858s 2.9 3.5
512 bits ecdsa (brainpoolP512t1) 0.3367s 0.2449s 3.0 4.1
op op/s
160 bits ecdh (secp160r1) 0.0315s 31.7
192 bits ecdh (nistp192) 0.0343s 29.1
224 bits ecdh (nistp224) 0.0450s 22.2
256 bits ecdh (nistp256) 0.0483s 20.7
384 bits ecdh (nistp384) 0.1232s 8.1
521 bits ecdh (nistp521) 0.3073s 3.3
163 bits ecdh (nistk163) 0.0150s 66.5
233 bits ecdh (nistk233) 0.0307s 32.6
283 bits ecdh (nistk283) 0.0584s 17.1
409 bits ecdh (nistk409) 0.1501s 6.7
571 bits ecdh (nistk571) 0.4586s 2.2
163 bits ecdh (nistb163) 0.0163s 61.4
233 bits ecdh (nistb233) 0.0366s 27.3
283 bits ecdh (nistb283) 0.0614s 16.3
409 bits ecdh (nistb409) 0.1797s 5.6
571 bits ecdh (nistb571) 0.4537s 2.2
256 bits ecdh (brainpoolP256r1) 0.0601s 16.6
256 bits ecdh (brainpoolP256t1) 0.0664s 15.1
384 bits ecdh (brainpoolP384r1) 0.1971s 5.1
384 bits ecdh (brainpoolP384t1) 0.1856s 5.4
512 bits ecdh (brainpoolP512r1) 0.3197s 3.1
512 bits ecdh (brainpoolP512t1) 0.3169s 3.2
253 bits ecdh (X25519) 0.0041s 243.9
448 bits ecdh (X448) 0.0314s 31.8
sign verify sign/s verify/s
253 bits EdDSA (Ed25519) 0.0016s 0.0047s 628.6 212.5
456 bits EdDSA (Ed448) 0.0153s 0.0375s 65.2 26.7
sign verify sign/s verify/s
256 bits SM2 (CurveSM2) 0.0648s 0.0514s 15.4 19.5
op op/s
2048 bits ffdh 0.6675s 1.5
3072 bits ffdh 2.3320s 0.4
4096 bits ffdh 4.7233s 0.2</pre>
<p>Wow... those AES methods show a huge change, from ~800 KB/s to ~73 MB/s for AES-256-CBC in these OpenSSL 3.0.3 runs.</p>
<h3 style="text-align: left;">Further Sources</h3>
<p>More information can be found at:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Motorola_68000_series">Motorola 68000 series - Wikipedia</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/m68k">Documentation/Platforms/m68k - QEMU</a></li>
<li><a href="https://en.wikipedia.org/wiki/Macintosh_Quadra_800">Macintosh Quadra 800 - Wikipedia</a></li>
<li><a href="https://www.emaculation.com/doku.php/m68k-qemu-on-osx">Running qemu-system-m68k in macOS [E-Maculation wiki]</a></li>
<li><a href="https://wiki.debian.org/M68k/QemuSystemM68k">M68k/QemuSystemM68k - Debian Wiki</a></li>
<li><a href="https://gist.github.com/DoctorWkt/7829fcf5375766b8166bcdd35dd583ef">Debian 10 Running on qemu-system-m68k · GitHub</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-89605368836550247632022-04-14T22:40:00.007+01:002022-05-21T16:07:03.373+01:00Slackware Linux 3.0 on a PCem Pentium 75<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Km_KESiMzoQobLTjMTDtvJf6LsmDkgUyGoO-bt-MnXLF1H7je1YB5vJ-Lr7jqsShEpeHngeB7sOohNZIZXt-IRDAm7A_gatSUv716CYX6i8Lm4wpk0UhJ2ngYixkYE1EeDPXdLtTJnVOz5VCUDBoSIrjVdA0hbKwumQ0j-CaS3mPGgSVyyie_Rnh/s1282/PCem-Slackware3.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Slackware 3.0 X-windows" border="0" data-original-height="1071" data-original-width="1282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Km_KESiMzoQobLTjMTDtvJf6LsmDkgUyGoO-bt-MnXLF1H7je1YB5vJ-Lr7jqsShEpeHngeB7sOohNZIZXt-IRDAm7A_gatSUv716CYX6i8Lm4wpk0UhJ2ngYixkYE1EeDPXdLtTJnVOz5VCUDBoSIrjVdA0hbKwumQ0j-CaS3mPGgSVyyie_Rnh/s320/PCem-Slackware3.png" width="320" /></a></div>
<h3 style="text-align: left;">Slackware</h3>
<p>Established back in 1993, Slackware (<a href="http://www.slackware.com/">The Slackware Linux Project</a>; <a href="https://en.wikipedia.org/wiki/Slackware">Wikipedia</a>) is the oldest surviving Linux distribution...</p>
<p>Slackware Linux 3.0 was the first Slackware release to have an official CD-ROM distribution and support installation from CD-ROM. Released in November 1995, the same month as the Pentium Pro. So complete system support is limited to i386, i486 and early Pentium systems.</p>
<p>Fortunately I have a Pentium based system that consists of hardware from this era: <a href="https://boxes-of-tat.blogspot.com/p/intel-pentium-75-tilia.html">tilia</a>. And that machine can be approximated using an Intel 430fx based system in PC emulators such as <a href="https://pcem-emulator.co.uk/">PCem</a>.</p>
<h3 style="text-align: left;">PCem</h3>
<p>The IBM PC and compatibles emulator PCem supports a range of PC system, from the original Intel 8088 based IBM PC through to a early 2000s slot 1 based Pentium II system. This includes a couple of systems featuring the Intel 430fx chipset which makes them equivalent to our physical system.</p>
<p>So the target emulated hardware is:</p>
<table border="1">
<tbody>
<tr><th>Mainboard</th><td><a href="http://www.intel.com/">Intel</a> Advanced/ZP (Zappa); Intel Triton 82430FX PCIset <i>aka.</i> 430FX</td></tr>
<tr><th>CPU</th><td><a href="http://www.intel.com/">Intel</a> Pentium 75</td></tr>
<tr><th>RAM</th><td>72 MiB (128 MiB max.)</td></tr>
<tr><th>Floppy</th><td>3.5" 2.88MB</td></tr>
<tr><th rowspan="3">Storage</th><td>IDE Controller Intel 82371FB <i>aka</i>. PIIX, ATA-2 16 MB/s</td></tr>
<tr><td>IDE hard disk 2048 GB</td></tr>
<tr><td>ATAPI CD-ROM drive</td></tr>
<tr><th>Video</th><td>S3 Trio64 based VGA</td></tr>
<tr><th>Network</th><td>10Mb/s ethernet ISA</td></tr>
</tbody>
</table>
<span><a name='more'></a></span>
<h3 style="text-align: left;">PCem Installation</h3>
<p>For simplicity of installation I'm using a PCem distribution that bundles a collection of firmware ROMs for the various systems supported by PCem.</p>
<ul>
<li><a href="https://github.com/BaRRaKudaRain/PCem-ROMs/releases">Releases · BaRRaKudaRain/PCem-ROMs · GitHub</a></li>
</ul>
<p>For this case I'm using the Windows installer for PCem v17.0 (<tt>PCem_Setup.exe</tt>).</p>
<p>Alternatively you could use the official distribution from the <a href="https://pcem-emulator.co.uk/">PCem website</a> and source the required firmware ROMs separately.</p>
<p>Note that if using a Linux installation you need to run <tt>pcem</tt> and then exit, so the user configuration directory <tt>~/.pcem/</tt> is generated. Then copy the collection of firmware ROMs into the <tt>~/.pcem/roms/</tt> directory. Depending on the source of the firmware ROMs you may need to adjust the case of the filenames so PCem picks them up correctly (see the listing in <a href="https://github.com/sarah-walker-pcem/pcem/blob/dev/README.md">README.md</a>).</p>
<h3 style="text-align: left;">PCem System Configuration</h3>
<p>Now that PCem is installed, a machine configuration is required to specify the details of the machine to emulate. Fortunately PCem provides a menu based interface for doing this.</p>
<ol type="A">
<li>Start PCem</li>
<li>The initial window shows a list of the available machine configurations (most likely empty at this point), and a set of buttons for managing the configurations.
</li>
<li>Create a machine using the bottom left icon ("New") and give the machine a name (e.g. "Slackware 3 i430fx Pentium 75")
</li>
<li>After a short pause the machine configuration dialog should now open. If it doesn't select the new machine from the list and use the tools icon on the right ("Configure") to access the configuration dialog
</li>
<li>Working through the configuration tabs in order:
<ol type="1">
<li>Mainboard, processor and memory
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXQDCBeMyzLpvF0sV52tJK3a6ZF8Ou1MqC7hJ2osDfOORcQoK0Ay2ByhRmyHfJ2BnZAT_AbnxPXi_5SNVpxBcHGD1myT2v2mEtJgGBGB4V-FaE78KH9vDztNkRpInkAhfHSFdY2fsJeYDzcHeGrD5wcqsgZEjMocZAxgo8-fwzwFubiUMEOyBbYwR/s543/PCem-Slackware3-1.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Mainboard" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXQDCBeMyzLpvF0sV52tJK3a6ZF8Ou1MqC7hJ2osDfOORcQoK0Ay2ByhRmyHfJ2BnZAT_AbnxPXi_5SNVpxBcHGD1myT2v2mEtJgGBGB4V-FaE78KH9vDztNkRpInkAhfHSFdY2fsJeYDzcHeGrD5wcqsgZEjMocZAxgo8-fwzwFubiUMEOyBbYwR/s320/PCem-Slackware3-1.png" width="320" /></a></div>
<ul>
<li>"Machine": we select a i430fx based board, which are currently "[Socket 5] Intel Advanced/ZP" or "[Socket 5] Itautec Infoway Multimidia".</li>
<li>"CPU": we want an Intel Pentium 75, which happens to be the default.</li>
<li>"FPU": disabled since the main processor provides an FPU.</li>
<li>"Memory": in order to match the physical machine this is set to 72, rather than the default and maximum value of 128.</li>
<li>"Waitstates": the default looks good</li>
</ul>
</li>
<li>Display
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpv-SpkjBg84NxC3tEHgCaZuxRCY7ai2Cg1B0ZbP9yD9zHwrTlBSRzC4Z3cjkc_eRvZJ9rQGTBmnM6U9mf_SwuqKnF0bcstEStw8OhY4KiQ4UWcmDw3Sspueu8B9N6KaK5G8OfAvq-MMO-PWrlemkrc3GV2TWaCcy8NJIzPUeYB2LWBZAiXkHE85xz/s543/PCem-Slackware3-2.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Display" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpv-SpkjBg84NxC3tEHgCaZuxRCY7ai2Cg1B0ZbP9yD9zHwrTlBSRzC4Z3cjkc_eRvZJ9rQGTBmnM6U9mf_SwuqKnF0bcstEStw8OhY4KiQ4UWcmDw3Sspueu8B9N6KaK5G8OfAvq-MMO-PWrlemkrc3GV2TWaCcy8NJIzPUeYB2LWBZAiXkHE85xz/s320/PCem-Slackware3-2.png" width="320" /></a></div>
<ul>
<li>"Device": for S3 Trio64 cards we have two choices: "Number Nine 9FX (S3 Trio64)" and "Phoenix S3 Trio64". FWIW I've had the best experience with the Number Nine card.</li>
<li>"Speed": the default looks good</li>
</ul>
</li>
<li>Audio: for the moment we're not interested in audio, so the default settings are good.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgViK9FZBT2mG0C-I3PkqyUXBVjsxhbKiAuei0SQ09UIMBYOuTvGJtJ0Eze0Yzd_-qrp28Nms4cBwdjWWswe1zBqHpIMVoozi6x6sdcsnGKz0eQHP6x0xV0mBSZR25gA7CsAFGHm-VwLYTbfQ-WtAop3ApJsHS-J7wgOdKe3TQz20HHygvwLq5f3vF7/s543/PCem-Slackware3-3.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Audio" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgViK9FZBT2mG0C-I3PkqyUXBVjsxhbKiAuei0SQ09UIMBYOuTvGJtJ0Eze0Yzd_-qrp28Nms4cBwdjWWswe1zBqHpIMVoozi6x6sdcsnGKz0eQHP6x0xV0mBSZR25gA7CsAFGHm-VwLYTbfQ-WtAop3ApJsHS-J7wgOdKe3TQz20HHygvwLq5f3vF7/s320/PCem-Slackware3-3.png" width="320" /></a></div>
</li>
<li>Drives
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkI4xVUEMMRbEZXluMPksilIwnC7j65ot8T4oLNImu54Gh862r49PVx2Gc9-13nKilmGLzuccwO1-8QsLoVKHb788uwrTPWZ4upcixFSPPaXMybfATboV14Dn2E56tecQQxM4sPIIcy81jeeLCTaysjvJRkq1vn792EdrHZVJsApKWMnm3oyK4a_jm/s543/PCem-Slackware3-5.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Drives" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkI4xVUEMMRbEZXluMPksilIwnC7j65ot8T4oLNImu54Gh862r49PVx2Gc9-13nKilmGLzuccwO1-8QsLoVKHb788uwrTPWZ4upcixFSPPaXMybfATboV14Dn2E56tecQQxM4sPIIcy81jeeLCTaysjvJRkq1vn792EdrHZVJsApKWMnm3oyK4a_jm/s320/PCem-Slackware3-5.png" width="320" /></a></div>
<ul>
<li>"HDD": the default "[IDE] Standard IDE" is good.</li>
<li>"FDD1": set this to '3.5" 2.88M'</li>
<li>"FDD2": set this to 'None'</li>
<li>"CD Model": the default "PCemCD" is good.</li>
<li>"CD Speed": the default "24x" is good.</li>
<li>For "Drive 0 Primary Master (C:)" create a hard disk of 2048 MB using the "New" button.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglU7W-Zb7uMARNMbywtW9iQ85z9Es3iHJiFi4yDXuev-Su-RW5AwsoXW7a4umc7aZ5kJ4SgYHak4jYGpVf99M6XmdMQw2kOMVULRQfhx88xZGaUAXQ-I9eMbjy241LCvfGkhpjlN824hwGVQgXYwxuQmWUfhgiCouct3L0rZHIuuDFQoXauJWSoBIr/s490/PCem-Slackware3-4.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Harddisk Creation" border="0" data-original-height="255" data-original-width="490" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglU7W-Zb7uMARNMbywtW9iQ85z9Es3iHJiFi4yDXuev-Su-RW5AwsoXW7a4umc7aZ5kJ4SgYHak4jYGpVf99M6XmdMQw2kOMVULRQfhx88xZGaUAXQ-I9eMbjy241LCvfGkhpjlN824hwGVQgXYwxuQmWUfhgiCouct3L0rZHIuuDFQoXauJWSoBIr/s320/PCem-Slackware3-4.png" width="320" /></a></div>
</li>
</ul>
</li>
<li>Mouse
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioQrkkfpNyJnC0QNWZtjuykLi2gL1BUwlq5SzdUMoksMbdBxRQU2ZNvfE7sKGFiH63vD8F8DEx1BBlN3J-qfSlLVuGIM3mgx06KgtNNDjJxlu-UDT9W66ZCIhNy3Wl62NJnev7XLGCIoAlPosC5N0j1-YzYuCdXRhbHZkPbwI257rxM3lE4ZXuUB2m/s543/PCem-Slackware3-6.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Mouse" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioQrkkfpNyJnC0QNWZtjuykLi2gL1BUwlq5SzdUMoksMbdBxRQU2ZNvfE7sKGFiH63vD8F8DEx1BBlN3J-qfSlLVuGIM3mgx06KgtNNDjJxlu-UDT9W66ZCIhNy3Wl62NJnev7XLGCIoAlPosC5N0j1-YzYuCdXRhbHZkPbwI257rxM3lE4ZXuUB2m/s320/PCem-Slackware3-6.png" width="320" /></a></div>
<ul>
<li>"Mouse": select "Mouse Systems 3-button (serial)" since we'll be running X Windows and will want the middle button.</li>
</ul>
</li>
<li>Joystick: not likely to use this, so the default settings are good.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg4nGDpww4gTh0aIFqqepSq6NLnLJ3DBqtcgBoosaj5JW8h93CDT97_XhWoB75r-tbFkek9c3fag0rsFkkbshCtj0d5llHbWnge-ouK4rC4vsTxLrHJkuF60MV0iORN228yUTdWu9W6wBr5tyZIOo0UBfGu9t1pw7eGJhfpBXvJULA5DGfkBVw7gWd/s543/PCem-Slackware3-7.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Joystick" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg4nGDpww4gTh0aIFqqepSq6NLnLJ3DBqtcgBoosaj5JW8h93CDT97_XhWoB75r-tbFkek9c3fag0rsFkkbshCtj0d5llHbWnge-ouK4rC4vsTxLrHJkuF60MV0iORN228yUTdWu9W6wBr5tyZIOo0UBfGu9t1pw7eGJhfpBXvJULA5DGfkBVw7gWd/s320/PCem-Slackware3-7.png" width="320" /></a></div>
</li>
<li>Network
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDDfBRriiQPLammBm1RZTnfyyvPqptHm5HKvl4LDJy4EEXXCg3ZyJgYjoBgnz3XBUzn7VOy4S1fUqw5DWOrCmbXkTmLtUR54Gn3Gm4p_fxTJr6nb4cK2bAmthQfBgMyZVjb7-wh7GCJ6fhQLA0_moXHG2UGVyB_sDR4TTrSNPktq0wBNrPs138hlSu/s543/PCem-Slackware3-8.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="PCem Network" border="0" data-original-height="452" data-original-width="543" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDDfBRriiQPLammBm1RZTnfyyvPqptHm5HKvl4LDJy4EEXXCg3ZyJgYjoBgnz3XBUzn7VOy4S1fUqw5DWOrCmbXkTmLtUR54Gn3Gm4p_fxTJr6nb4cK2bAmthQfBgMyZVjb7-wh7GCJ6fhQLA0_moXHG2UGVyB_sDR4TTrSNPktq0wBNrPs138hlSu/s320/PCem-Slackware3-8.png" width="320" /></a></div>
<ul>
<li>"Network Card": select "NE2000" to have basic ethernet</li>
</ul>
</li>
</ol>
</li>
<li>Click the "OK" button to save the configuration and close the dialog.</li>
</ol>
<p>So now we have a machine to install Slackware on...</p>
<h3 style="text-align: left;">Slackware Installation</h3>
<ol style="text-align: left;">
<li>Fetch the Slackware Linux 3.0 CD-ROM image from Archive.org (<a href="https://archive.org/details/Slackware_Linux_3.0_Walnut_Creek_October_1995">https://archive.org/details/Slackware_Linux_3.0_Walnut_Creek_October_1995</a>), for installation we only need CD 1.</li>
<li>Sadly the CD is not bootable (the El Torito CD-ROM specification was released in 1995), so we need to use floppy boot images. We need a boot and a root image.</li>
<li>For the emulated machine the 'idecd' and 'color.gz' floppy images are what we are looking for to get IDE CD-ROM support and nice menus for installation.</li>
<ol>
<li>On MS Windows:
<ol>
<li>In file explorer, find the downloaded ISO and double-click to mount the disk image</li>
<li>Copy the boot disk image (<tt>\BOOTDSKS.144\IDECD</tt>) to a working directory</li>
<li>The boot image needs to be padded to 1.44MB and renamed to have the ".img" extension so PCem treats it as a raw disk image. In my case I'm using an image I padded on Linux.</li>
<li>Copy the root disk image (<tt>\ROOTDSKS\COLOR.GZ</tt>) to a working directory</li>
<li>The root image also needs to be renamed to have the ".img" extension.</li>
<li>Once done with the ISO, be sure to "Eject" the image</li>
</ol>
</li>
<li>On Linux: <pre class="capturedOutput">mkdir tmp_mnt
fuseiso slackware3_cd1.iso tmp_mnt # Mount the ISO
cp tmp_mnt/bootdsks.144/idecd ./ # Boot disk (only 600KB)
truncate -s 1440K idecd # Pad boot disk to 1.44MB
cp tmp_mnt/rootdsks/color.gz ./ # Root disk (already 1.44MB)
guestunmount tmp_mnt/ # Unmount the ISO
rmdir tmp_mnt</pre></li>
</ol>
<li>Now the boot and root floppies are prepared, back to PCem...
<ol>
<li>Start/load the machine we created</li>
<li>Use the "Disc">"Change drive A:..." menu to insert the boot disk image (<tt>IDECD.img</tt>)</li>
<li>Use the "CD-ROM">"Image..." menu to insert the Slackware CD-ROM ISO</li>
<li>When first booted the machine will stop for the BIOS settings to be confirmed. Most of the settings will be fine, but the BIOS needs to be told about the floppy drive being 2.88MB.</li>
</ol>
</li>
<li>Using the normal floppy swapping with at the LILO boot prompt use "<tt>ramdisk mem=72m</tt>"</li>
<li>Swap the floppy image to <tt>COLOR.GZ.img</tt>, using "Disc">"Change drive A:..." menu when requested.</li>
<li>The hard drive is blank, so once we've logged in as "root", we need to partition the disk: <tt>fdisk /dev/hda</tt></li>
<ol>
<li>Use '<tt>m</tt>' to familiarize yourself with the options.</li>
<li>Since we have plenty of memory we could skip having a swap partition. But a small swap space can help so I will create one.</li>
<li>New 'n', primary partition 'p', partition '1', from cylinder '1' to '504'</li>
<li>New 'n', primary partition 'p', partition '2', from cylinder '505' to '520' (at ~4 MB per cylinder, 16 cylinders is about 64 MB).</li>
<li>Type 't', partition '2', type list 'L', type '82' (Linux swap).</li>
<li>Write changes to disk 'w'</li>
</ol>
<li>With the disk partitioned, run <tt>setup</tt> to continue the installation and follow the prompts...</li>
<ol>
<li>If your plan to use the manual pages (<tt>man</tt>) be sure to install GNU troff (gtroff) from the 'AP' set</li>
<li>The graphics card works with the S3 XFree86 server</li>
<li>The mouse is a "Mouse Systems 3-button Serial"</li>
<li>For user networking the IP addresses are (from <a href="https://pcem-emulator.co.uk/phpBB3/viewtopic.php?p=3676#p3676">PCem forum</a>):</li>
<ul>
<li>Host: 10.0.2.16</li>
<li>Gateway: 10.0.2.2</li>
<li>Netmask: 255.255.255.0</li>
<li>DNS: 10.0.2.3</li>
</ul>
<li>In order to use all of the configured RAM the memory size has to be passed as a kernel parameter by LILO, otherwise it will only see 64 MiB (the maximum the BIOS reports). For this machine we use "<tt>mem=72M</tt>" as the kernel parameter.</li><li>The IRQ for the NE2000 card isn't recognized by default, so force the configuration with the kernel parameter: <tt>ether=10,0x300,0,0,eth0</tt></li>
</ol>
<li>Once logged in:</li>
<ol>
<li>give 'root' a password (<tt>passwd</tt>)</li>
<li>add a regular user account (<tt>adduser</tt>)</li>
<li>configure the X server (<tt>xf86config</tt>). When configuring the X server, assume the monitor is the most capable option each time. The emulated card is a S3 Trio64 VGA PCI with 2MB RAM, so I used the "S3-Trio64 generic" option which works fine.</li>
<li>If the configured name server doesn't work. Try adding the your network DNS address to <tt>/etc/resolv.conf</tt> as another <tt>nameserver</tt></li>
</ol>
</ol>
<p>With the system installed further exploration will involve hitting the documentation:</p>
<ul style="text-align: left;">
<li>Installed docs:</li>
<ul>
<li>FAQs and HOWTOs: <tt>/usr/doc/faq/</tt></li>
<li>Manual pages: <tt>apropos <term></tt>, <tt>man -k <term></tt>, <tt>man <pagename></tt></li>
<li>GNU info: <tt>info</tt></li>
</ul>
<li>CD-ROM: <tt>docs/</tt></li>
<li><a href="https://tldp.org/">The Linux Documentation Project</a></li>
<li>Various Linux usenet groups, such as:</li>
<ul>
<li><a href="https://groups.google.com/g/comp.os.linux">comp.os.linux - Google Groups</a></li>
<li><a href="https://groups.google.com/g/comp.os.linux.setup">comp.os.linux.setup - Goggle Groups</a></li>
<li><a href="https://groups.google.com/g/comp.os.linux.misc">comp.os.linux.misc - Google Groups</a></li>
<li><a href="https://groups.google.com/g/alt.os.linux.slackware">alt.os.linux.slackware - Google Groups</a></li>
</ul>
</ul>
<h3 style="text-align: left;">System Information - Slackware Linux 3.0</h3>
<p>So what does Slackware Linux 3.0 have to say about the system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre class="capturedOutput">$ uname -a
Linux p-slack3 1.2.13 #1 Wed Aug 23 01:06:43 CDT 1995 i586</pre>
<p>A "Linux" kernel, on a node named "p-slack3", kernel release "1.2.13", version "#1 Wed Aug 23 01:06:43 CDT 1995", on a "i586" machine.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
cpu : 586
model : Pentium 90/100
mask : D
vid : GenuineIntel
fdiv_bug : no
math : yes
hlt : yes
wp : yes
Integrated NPU : yes
Enhanced VM86 : yes
IO Breakpoints : no
4MB Pages : yes
TS Counters : yes
Pentium MSR : yes
Mach. Ch. Exep. : no
CMPXCHGB8B : yes
BogoMips : 74.98</pre>
<p>That would be a second generation Intel Pentium processor (P54C), but the BogoMips looks too high. The configuration has the CPU at 75MHz, which normally gives a BogoMips result of around 30...</p>
<p>The CPUID (<a href="https://en.wikipedia.org/wiki/CPUID">Wikipedia</a>) for this processor should be: family 5, model 2, with any stepping. The "mask" here is the stepping rendered as an ASCII letter (in '<tt>fs/proc/array.c</tt>' we have <tt>mask[0] = x86_mask+'@';</tt>) which makes '<tt>D</tt>' a stepping of 4.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre class="capturedOutput">$ cat /proc/meminfo
total: used: free: shared: buffers:
Mem: 73711616 41402368 32309248 6053888 35647488
Swap: 66056192 0 66056192</pre>
<p>So 72 MiB RAM, with 64 MB of swap.</p>
<h4 align="left">/proc/pci</h4>
<p>Report PCI devices:</p>
<pre class="capturedOutput">$ cat /proc/pci
PCI devices found :
Bus 0 Device 0 Function 0.
Host bridge : Intel 82437FX Triton (rev 0).
Bus 0 Device 7 Function 0.
ISA bridge : Intel 82371FB (rev 0).
Bus 0 Device 13 Function 0.
VGA display controller : S3 Inc. Trio32/Trio64 (rev 0). 8259's interrupt 11.</pre>
<p>The Linux 1.2 kernel used in Slackware 3.0 pre-dates the availability of the <tt>lspci</tt> command or the <tt>/proc/bus/pci/devices</tt> file. So we're left with <tt>/proc/pci</tt>. Since the network card is on the ISA bus, we only see the mainboard chipset and the graphics card.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre class="capturedOutput">$ dmesg
Console: colour EGA+ 80x25, 1 virtual console (max 63)
bios32_init : BIOS32 Service Directory structure at 0x000fc9f0
bios32_init : BIOS32 Service Directory entry at 0xfca00
pcibios_init : PCI BIOS revision 2.10 entry at 0xfca21
Probing PCI hardware.
Calibrating delay loop.. ok - 74.98 BogoMips
Serial driver version 4.11 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A
lp0 at 0x03bc, using polling driver
ftape: allocated 3 buffers aligned at: 00238000
hda: PCemHD, 2047MB w/256KB Cache, LBA, CHS=520/128/63, MaxMult=16
hdc: PCemCD, ATAPI, CDROM drive
ide1: secondary interface on irq 15
ide0: primary interface on irq 14
Floppy drive(s): fd0 is 2.88M
FDC 0 is a post-1991 82077
lance.c: PCI bios is present, checking for devices...
Memory: 71988k/73728k available (760k kernel code, 384k reserved, 596k data)
This processor honours the WP bit even when in supervisor mode. Good.
Swansea University Computer Society NET3.019
Swansea University Computer Society TCP/IP for NET3.019
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.8.3-NET3.019-NEWTTY (4 channels) (6 bit encapsulation enabled)
CSLIP: code copyright 1989 Regents of the University of California
NE*000 ethercard probe at 0x300: ac de 48 88 bb aa
eth0: NE2000 found at 0x300, using IRQ 10.
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Checking 386/387 coupling... Ok, fpu using old IRQ13 error reporting
Checking 'hlt' instruction... Ok.
Linux version 1.2.13 (root@bigkitty) (gcc version 2.7.0) #1 Wed Aug 23 01:06:43 CDT 1995
Partition check:
hda: multiple mode turned off
hda: hda1 hda2
VFS: Mounted root (ext2 filesystem) readonly.
Adding Swap: 64508k swap-space
Max size:331555 Log zone size:2048
First datazone:68 Root inode number 139264
ISO9660 Extensions: RRIP_1991A
VFS: Disk change detected on device 2/0</pre>
<p>Here we see the results of hardware detection, the NE2000 card is picked up correctly due to the 'ether' kernel parameter being passed to force the IRQ.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Pentium_(original)">Pentium (original) - Wikipedia</a></li>
<li><a href="http://www.bitsavers.org/components/intel/pentium/242480-002_Pentium_Processor_Specification_Update_Mar95.pdf">242480-002_Pentium_Processor_Specification_Update_Mar95.pdf</a> - Intel Pentium Processor
Specification Update. Release Date: March, 1995</li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-19560594238376603402021-08-23T16:43:00.004+01:002022-05-23T07:45:19.273+01:00Raspberry Pi OS on QEMU raspi2b - System Information<h3 style="text-align: left;">Raspberry Pi OS</h3>
<p>The popular <a href="https://www.raspberrypi.org/">Raspberry Pi</a> (<a href="https://en.wikipedia.org/wiki/Raspberry_Pi">Wikipedia</a>) is often used with a tuned Linux distribution: <a href="https://www.raspberrypi.org/software/">Raspberry Pi OS</a> (formerly <a href="https://www.raspbian.org/">Raspbian</a>), which is based on <a href="https://www.debian.org/">Debian</a> Linux.</p>
<h3 style="text-align: left;">QEMU</h3>
<p>The system emulator QEMU provides machine profiles for a selection of Raspberry Pi models:</p>
<p>The 32-bit ARM models, ARMv6 & ARMv7:</p>
<pre class="capturedOutput">$ qemu-system-arm -machine help | grep rasp
raspi0 Raspberry Pi Zero (revision 1.2)
raspi1ap Raspberry Pi A+ (revision 1.1)
raspi2 Raspberry Pi 2B (revision 1.1) (alias of raspi2b)
raspi2b Raspberry Pi 2B (revision 1.1)</pre>
<p>The 64-bit ARM models, ARMv8:</p>
<pre class="capturedOutput">$ qemu-system-aarch64 -machine help | grep rasp
raspi0 Raspberry Pi Zero (revision 1.2)
raspi1ap Raspberry Pi A+ (revision 1.1)
raspi2 Raspberry Pi 2B (revision 1.1) (alias of raspi2b)
raspi2b Raspberry Pi 2B (revision 1.1)
raspi3ap Raspberry Pi 3A+ (revision 1.0)
raspi3 Raspberry Pi 3B (revision 1.2) (alias of raspi3b)
raspi3b Raspberry Pi 3B (revision 1.2)</pre>
<p>The 64-bit emulation presumably includes the 32-bit models in order to allow for hypothetical upgraded versions of these systems by swapping the ARM processor core. This also provides support for the revisions of the Raspberry Pi 2B, the original board used a BCM2836 SoC with a 32-bit ARM v7 processor, but later versions of the 2B board used a BCM2837 with a 64-bit ARM v8 processor.</p>
<p>These options cover three processors:</p>
<ul style="text-align: left;">
<li>Broadcom BCM2835 SoC in the Zero and A+</li>
<ul>
<li>ARM1176JZF-S @ 700 Mhz core, 32-bit ARMv6</li>
</ul>
<li>Broadcom BCM2836 SoC in the 2B</li>
<ul>
<li>ARM Cortex-A7 @ 900 MHz, quad-core, 32-bit ARMv7</li>
</ul>
<li>Broadcom BCM2837 SoC in the 3A+ and 3B</li>
<ul>
<li>ARM Cortex-A53 @ 1.2 GHz or 1.4 GHz, quad-core, 64-bit ARMv8</li>
</ul>
</ul>
<p>That is three generations of the ARM architecture and coverage of the older models.</p>
<span><a name='more'></a></span>
<h4 style="text-align: left;">Emulation Command</h4>
<p>Getting Raspberry Pi OS booting in QEMU has taken a bit of mucking about... and I've only gotten the Raspberry Pi 2B machine (raspi2b) to work so far. The general process goes like this...</p>
<p>Check your QEMU supports the Raspberry Pi machines (see above). I'm using the package from 'backports' on Debian Linux 10 (buster) which has a recent version:</p>
<pre class="capturedOutput">$ qemu-system-aarch64 -version
QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-9~bpo10+1)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers</pre>
<p>Set-up a location for the various files and download the Raspberry Pi OS distribution:</p>
<pre class="capturedOutput">$ mkdir Raspbian
$ cd Raspbian
$ mkdir 2021-05-07-raspios-buster-armhf-lite
$ cd 2021-05-07-raspios-buster-armhf-lite
$ wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-05-28/2021-05-07-raspios-buster-armhf-lite.zip</pre>
<p>Unpack the distribution archive, convert the raw SD card image to qcow2 and resize to 8 GiB:</p>
<pre class="capturedOutput">$ unzip 2021-05-07-raspios-buster-armhf-lite.zip
$ qemu-img convert -f raw -O qcow2 2021-05-07-raspios-buster-armhf-lite.img 2021-05-07-raspios-buster-armhf-lite.qcow2
$ qemu-img resize 2021-05-07-raspios-buster-armhf-lite.qcow2 8G</pre>
<p>Extract the kernel (kernel*.img), device tree (*.dtb), and kernel options (cmdline.txt) files from the SD card image using '<a href="https://packages.debian.org/buster/libguestfs-tools">libguestfs-tools</a>':</p>
<pre class="capturedOutput">$ mkdir tmp_mnt
$ guestmount -a 2021-05-07-raspios-buster-armhf-lite.qcow2 -m /dev/sda1 tmp_mnt
$ cp -v tmp_mnt/*.dtb ./
$ cp -v tmp_mnt/kernel*.img ./
$ cp -v tmp_mnt/cmdline.txt ./
$ guestunmount tmp_mnt
$ sleep 3 # Wait for unmount to take full effect.
$ rmdir tmp_mnt</pre>
<p>Start the 'raspi2b' QEMU machine:</p>
<pre class="capturedOutput">$ qemu-system-arm \
-machine raspi2b \
-m 1G \
-dtb 2021-05-07-raspios-buster-armhf-lite/bcm2709-rpi-2-b.dtb \
-sd 2021-05-07-raspios-buster-armhf-lite/2021-05-07-raspios-buster-armhf-lite.qcow2 \
-kernel 2021-05-07-raspios-buster-armhf-lite/kernel7.img \
-append 'rw earlyprintk loglevel=8 console=ttyAMA0,115200 console=tty1 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 fsck.repair=yes rootwait' \
-no-reboot \
-serial telnet:localhost:4321,server,nowait \
-name 'Raspberry Pi 2B on QEMU'</pre>
<p>Then in another terminal connect to the serial console using telnet (you may need to hit return to get the login prompt):</p>
<pre class="capturedOutput">$ telnet localhost 4321</pre>
<p>Login using the default user (pi) and password (raspberry). The use 'raspi-config' to resize the root partition to fill the SD card:</p>
<ul>
<li><tt>$ sudo raspi-config</tt></li>
<li>Select option "6 Advanced Options"</li>
<li>Select option "A1 Expand Filesystem"</li>
</ul>
<p>And wait while the partition table is updated and written back to the card. Once it has finished exits back out the config tool and the system will be set to reboot. Which ends in a kernel error (possibly due to the -no-reboot option), but the changes have been made.</p><p>Restart the QEMU machine and connect as before, and you should be good to go.</p>
<h3 style="text-align: left;">System Information</h3>
<p>So now we are running, let's see what the system has to say about itself...</p>
<p>Note: the equivalent information for a <a href="https://boxes-of-tat.blogspot.com/p/raspberry-pi-model-b-rev-2-arm-11.html">Raspberry Pi Model B rev. 2</a> might be useful for comparison.</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system information:</p>
<pre class="capturedOutput">$ uname -a
Linux raspberrypi 5.10.17-v7+ #1414 SMP Fri Apr 30 13:18:35 BST 2021 armv7l GNU/Linux</pre>
<p>So a "Linux" kernel, running on a node named "raspberrypi", kernel release "5.10.17-v7+", kernel version "#1414 SMP Fri Apr 30 13:18:35 BST 2021", platform architecture "armv7l" (ARMv7 little-endian) as part of operating system "GNU/Linux".</p>
<h4 style="text-align: left;">lsb_release</h4>
<p>Linux Standard Base (LSB) distribution release information:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster</pre>
<p>Yep, this is Raspbian 10, based on Debian Linux 10 (buster).</p>
<h4 style="text-align: left;">lscpu and /proc/cpuinfo</h4>
<p>System processor(s) information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: armv7l
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: ARM
Model: 5
Model name: Cortex-A7
Stepping: r0p5
BogoMIPS: 125.00
Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
pi@raspberrypi:~$ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 125.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 1
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 125.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 2
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 125.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 3
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 125.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : BCM2835
Revision : 0000
Serial : 0000000000000000
Model : Raspberry Pi 2 Model B</pre>
<p>So the system is seeing a BCM2835 containing a Cortex-A7 with 4 cores, supporting ARMv7 in little-endian mode. The Cortex-A7 core is consistent with the original 2B board, but it used a BCM2836... the BCM2835 was used in the first generation boards (Raspberry Pi Model A and Model B) and should have a ARMv6 processor core.</p>
<p>The Linux kernel doesn't attempt to identify the members of the Broadcom SoC family, instead reporting the fixed value of "BCM2835" on all Raspberry Pi boards. While this is a little confusing, the "Model" information identifies the specific board and the CPU details reflect the actual processor cores present in the SoC, so is not an issue.</p>
<p>For an overview of the various CPU feature flags see the ARM answer in <a href="https://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean">linux - What do the flags in /proc/cpuinfo mean? - Unix & Linux Stack Exchange</a>.</p>
<h4 style="text-align: left;">lsusb</h4>
<p>USB bus, hubs and devices:</p>
<pre class="capturedOutput">$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub</pre>
<p>So the root hub is getting generated, but the expected devices are missing. In particular the ethernet device is not present, meaning no networking.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log messages:</p>
<pre class="capturedOutput">$ dmesg
[ 0.000000] Booting Linux on physical CPU 0xf00
[ 0.000000] Linux version 5.10.17-v7+ (dom@buildbot) (arm-linux-gnueabihf-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1414 SMP Fri Apr 30 13:18:35 BST 2021
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Raspberry Pi 2 Model B
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] Reserved memory: created CMA memory pool at 0x38000000, size 64 MiB
[ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] On node 0 totalpages: 245760
[ 0.000000] DMA zone: 2160 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 245760 pages, LIFO batch:63
[ 0.000000] percpu: Embedded 20 pages/cpu s50700 r8192 d23028 u81920
[ 0.000000] pcpu-alloc: s50700 r8192 d23028 u81920 alloc=20*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 243600
[ 0.000000] Kernel command line: rw earlyprintk loglevel=8 console=ttyAMA0,115200 console=tty1 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 fsck.repair=yes rootwait
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 891980K/983040K available (9216K kernel code, 1311K rwdata, 2940K rodata, 1024K init, 860K bss, 25524K reserved, 65536K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] ftrace: allocating 31910 entries in 63 pages
[ 0.000000] ftrace: allocated 63 pages with 6 groups
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] Rude variant of Tasks RCU enabled.
[ 0.000000] Tracing variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x3ac/0x580 with crng_init=0
[ 0.000000] arch_timer: cp15 timer(s) running at 62.50MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns
[ 0.000463] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns
[ 0.000800] Switching to timer-based delay loop, resolution 16ns
[ 0.018911] Console: colour dummy device 80x30
[ 0.023298] printk: console [tty1] enabled
[ 0.026611] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=625000)
[ 0.027186] pid_max: default: 32768 minimum: 301
[ 0.029320] LSM: Security Framework initializing
[ 0.035634] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.035868] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.089015] Disabling memory control group subsystem
[ 0.091671] CPU: Testing write buffer coherency: ok
[ 0.117585] CPU0: update cpu_capacity 1024
[ 0.117807] CPU0: thread -1, cpu 0, socket 15, mpidr 80000f00
[ 0.136063] Setting up static identity map for 0x100000 - 0x10003c
[ 0.138118] rcu: Hierarchical SRCU implementation.
[ 0.149308] smp: Bringing up secondary CPUs ...
[ 0.158752] CPU1: update cpu_capacity 1024
[ 0.158829] CPU1: thread -1, cpu 1, socket 15, mpidr 80000f01
[ 0.171227] CPU2: update cpu_capacity 1024
[ 0.171268] CPU2: thread -1, cpu 2, socket 15, mpidr 80000f02
[ 0.176888] CPU3: update cpu_capacity 1024
[ 0.176919] CPU3: thread -1, cpu 3, socket 15, mpidr 80000f03
[ 0.177716] smp: Brought up 1 node, 4 CPUs
[ 0.178266] SMP: Total of 4 processors activated (500.00 BogoMIPS).
[ 0.178424] CPU: All CPU(s) started in SVC mode.
[ 0.203643] devtmpfs: initialized
[ 0.262064] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 0.288078] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.289698] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.313097] pinctrl core: initialized pinctrl subsystem
[ 0.343347] NET: Registered protocol family 16
[ 0.392026] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.410027] audit: initializing netlink subsys (disabled)
[ 0.416305] audit: type=2000 audit(0.380:1): state=initialized audit_enabled=0 res=1
[ 0.426909] thermal_sys: Registered thermal governor 'step_wise'
[ 0.433766] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[ 0.434015] hw-breakpoint: maximum watchpoint size is 8 bytes.
[ 0.436131] Serial: AMBA PL011 UART driver
[ 0.506372] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[ 0.535478] raspberrypi-firmware soc:firmware: Attached to firmware from 1970-01-05T00:12:17, variant unknown
[ 0.555102] raspberrypi-firmware soc:firmware: Firmware hash is 8165b810000000008151fd5c8151fd4880719a24
[ 0.746740] bcm2835-dma 3f007000.dma: DMA legacy API manager, dmachans=0x1
[ 0.757396] SCSI subsystem initialized
[ 0.760363] usbcore: registered new interface driver usbfs
[ 0.761142] usbcore: registered new interface driver hub
[ 0.761513] usbcore: registered new device driver usb
[ 0.799771] clocksource: Switched to clocksource arch_sys_counter
[ 2.338970] VFS: Disk quotas dquot_6.6.0
[ 2.339458] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 2.341081] FS-Cache: Loaded
[ 2.353816] CacheFiles: Loaded
[ 2.431679] NET: Registered protocol family 2
[ 2.446779] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[ 2.447110] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 2.447522] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 2.448006] TCP: Hash tables configured (established 8192 bind 8192)
[ 2.457541] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 2.458122] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 2.466745] NET: Registered protocol family 1
[ 2.479120] RPC: Registered named UNIX socket transport module.
[ 2.479667] RPC: Registered udp transport module.
[ 2.479770] RPC: Registered tcp transport module.
[ 2.479872] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 2.495701] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available
[ 2.511275] Initialise system trusted keyrings
[ 2.515346] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[ 2.543565] zbud: loaded
[ 2.554091] FS-Cache: Netfs 'nfs' registered for caching
[ 2.558541] NFS: Registering the id_resolver key type
[ 2.559409] Key type id_resolver registered
[ 2.559537] Key type id_legacy registered
[ 2.560530] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 2.567748] Key type asymmetric registered
[ 2.568048] Asymmetric key parser 'x509' registered
[ 2.568450] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 2.568873] io scheduler mq-deadline registered
[ 2.569401] io scheduler kyber registered
[ 2.585110] bcm2708_fb soc:fb: More displays reported from firmware than supported in driver (935808672 vs 3)
[ 2.585299] bcm2708_fb soc:fb: FB found 3 display(s)
[ 2.677627] Console: switching to colour frame buffer device 100x30
[ 2.696855] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 800x480
[ 2.703685] bcm2708_fb soc:fb: Registered framebuffer for display 1, size 800x480
[ 2.715320] bcm2708_fb soc:fb: Registered framebuffer for display 2, size 800x480
[ 2.749520] bcm2835-rng 3f104000.rng: hwrng registered
[ 2.755362] vc-mem: phys_addr:0x00000000 mem_base=0x00000000 mem_size:0x00000000(0 MiB)
[ 2.762834] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
[ 2.857358] brd: module loaded
[ 2.910626] loop: module loaded
[ 2.917274] bcm2835-power bcm2835-power: ASB register ID returned 0x00000000
[ 2.926513] Loading iSCSI transport class v2.0-870.
[ 2.942956] libphy: Fixed MDIO Bus: probed
[ 2.947599] usbcore: registered new interface driver lan78xx
[ 2.951656] usbcore: registered new interface driver smsc95xx
[ 2.957295] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[ 3.175342] Core Release: 2.94a
[ 3.179039] Setting default values for core params
[ 3.185239] Finished setting default values for core params
[ 3.403096] Using Buffer DMA mode
[ 3.406684] Periodic Transfer Interrupt Enhancement - disabled
[ 3.409730] Multiprocessor Interrupt Enhancement - disabled
[ 3.414450] OTG VER PARAM: 0, OTG VER FLAG: 0
[ 3.418294] Shared Tx FIFO mode
[ 3.427541] WARN::dwc_otg_hcd_init:1074: FIQ DMA bounce buffers: virt = b8054000 dma = 0xf8054000 len=9024
[ 3.439653] FIQ FSM acceleration enabled for :
Non-periodic Split Transactions
Periodic Split Transactions
High-Speed Isochronous Endpoints
Interrupt/Control Split Transaction hack enabled
[ 3.457293] dwc_otg: Microframe scheduler enabled
[ 3.461426] WARN::hcd_init_fiq:457: FIQ on core 1
[ 3.470262] WARN::hcd_init_fiq:458: FIQ ASM at 807be568 length 36
[ 3.475687] WARN::hcd_init_fiq:497: MPHI regs_base at bc810000
[ 3.482357] dwc_otg 3f980000.usb: DWC OTG Controller
[ 3.488011] dwc_otg 3f980000.usb: new USB bus registered, assigned bus number 1
[ 3.497633] dwc_otg 3f980000.usb: irq 89, io mem 0x00000000
[ 3.505429] Init: Port Power? op_state=1
[ 3.508702] Init: Power Port (1)
[ 3.526500] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
[ 3.530180] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.533287] usb usb1: Product: DWC OTG Controller
[ 3.536388] usb usb1: Manufacturer: Linux 5.10.17-v7+ dwc_otg_hcd
[ 3.542431] usb usb1: SerialNumber: 3f980000.usb
[ 3.556107] hub 1-0:1.0: USB hub found
[ 3.562423] hub 1-0:1.0: 1 port detected
[ 3.575445] dwc_otg: FIQ enabled
[ 3.580592] dwc_otg: NAK holdoff enabled
[ 3.585253] dwc_otg: FIQ split-transaction FSM enabled
[ 3.588042] Module dwc_common_port init
[ 3.594848] usbcore: registered new interface driver usb-storage
[ 3.604590] mousedev: PS/2 mouse device common for all mice
[ 3.621141] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[ 3.625461] cpu cpu0: Cannot get clock for CPU0
[ 3.628443] raspberrypi-cpufreq: probe of raspberrypi-cpufreq failed with error -2
[ 3.637506] sdhci: Secure Digital Host Controller Interface driver
[ 3.641095] sdhci: Copyright(c) Pierre Ossman
[ 3.655368] sdhost-bcm2835 3f202000.mmc: could not get clk, deferring probe
[ 3.664785] sdhci-pltfm: SDHCI platform and OF driver helper
[ 3.687705] ledtrig-cpu: registered to indicate activity on CPUs
[ 3.694490] hid: raw HID events driver (C) Jiri Kosina
[ 3.699486] usbcore: registered new interface driver usbhid
[ 3.705341] usbhid: USB HID core driver
[ 3.725453] bcm2835_vchiq 3f00b840.mailbox: failed to set channelbase
[ 3.729018] vchiq: could not load vchiq
[ 3.737335] Initializing XFRM netlink socket
[ 3.742905] NET: Registered protocol family 17
[ 3.747331] Key type dns_resolver registered
[ 3.751725] Registering SWP/SWPB emulation handler
[ 3.759223] registered taskstats version 1
[ 3.763143] Loading compiled-in X.509 certificates
[ 3.785191] Key type ._fscrypt registered
[ 3.789080] Key type .fscrypt registered
[ 3.791761] Key type fscrypt-provisioning registered
[ 3.847462] uart-pl011 3f201000.serial: cts_event_workaround enabled
[ 3.852774] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 114, base_baud = 0) is a PL011 rev2
[ 3.879042] printk: console [ttyAMA0] enabled
[ 3.895470] bcm2835_thermal 3f212000.thermal: Not able to read trip_temp: -33
[ 4.000988] bcm2835-clk 3f101000.cprman: tsens: couldn't lock PLL
[ 4.004662] bcm2835_thermal: probe of 3f212000.thermal failed with error -33
[ 4.011584] sdhost: log_buf @ (ptrval) (f8053000)
[ 4.074335] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 4.081314] of_cfs_init
[ 4.087758] of_cfs_init: OK
[ 4.111626] Waiting for root device /dev/mmcblk0p2...
[ 4.135310] mmc0: host does not support reading read-only switch, assuming write-enable
[ 4.141840] mmc0: new high speed SDHC card at address 4567
[ 4.155999] mmcblk0: mmc0:4567 QEMU! 8.00 GiB
[ 4.209556] mmcblk0: p1 p2
[ 4.387664] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 4.394605] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 4.478209] devtmpfs: mounted
[ 4.611261] Freeing unused kernel memory: 1024K
[ 4.755750] Run /sbin/init as init process
[ 4.760220] with arguments:
[ 4.763826] /sbin/init
[ 4.767235] earlyprintk
[ 4.770599] with environment:
[ 4.773677] HOME=/
[ 4.785002] TERM=linux
[ 9.609291] systemd[1]: System time before build time, advancing clock.
[ 10.137774] random: fast init done
[ 10.812752] NET: Registered protocol family 10
[ 10.837373] Segment Routing with IPv6
[ 13.273402] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[ 13.468965] systemd[1]: Detected architecture arm.
[ 23.413875] systemd[1]: Set hostname to <raspberrypi>.
[ 33.992479] uart-pl011 3f201000.serial: no DMA platform data
[ 38.405627] random: systemd: uninitialized urandom read (16 bytes read)
[ 38.503084] random: systemd: uninitialized urandom read (16 bytes read)
[ 38.518598] systemd[1]: Listening on Journal Audit Socket.
[ 38.536102] random: systemd: uninitialized urandom read (16 bytes read)
[ 38.543297] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 38.581454] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 38.599794] systemd[1]: Created slice system-getty.slice.
[ 38.614493] systemd[1]: Listening on Syslog Socket.
[ 38.630966] systemd[1]: Listening on udev Kernel Socket.
[ 38.648522] systemd[1]: Listening on Journal Socket (/dev/log).
[ 38.663199] systemd[1]: Reached target Swap.
[ 38.683516] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 38.710022] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 43.829917] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 45.234537] systemd-journald[112]: Received request to flush runtime journal from PID 1
[ 88.764615] random: crng init done
[ 88.765199] random: 7 urandom warning(s) missed due to ratelimiting
[ 91.662780] 8021q: 802.1Q VLAN Support v1.8
[ 95.587585] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 99.904706] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 108.729856] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SSFS</pre>
<p>Lots of stuff in here... including identification of the processor and board.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>To see how well this compares to real hardware, we need some benchmarks for comparison...</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips pseudo-benchmark (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>), is used by the Linux kernel to calibrate a wait loop. On ARM processors an alternative timer-delay approach may be used, and a BogoMips figure may be derived from the system timer rather than the processor clock. The BogoMips line in the 'demsg' output reflects this:</p>
<pre class="capturedOutput">Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=625000)</pre>
<p>This value is also reported in '/proc/cpuinfo' and 'lscpu', and is used as the basis of the system BogoMips figure in 'dmesg':</p>
<pre class="capturedOutput">SMP: Total of 4 processors activated (500.00 BogoMIPS).</pre>
<p>So for this system BogoMips doesn't tell us about the processor, instead reflecting the system timer. So to get a feel for performance we're going to have to use something else.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://www.openssl.org/">OpenSSL</a> cryptographic library provides a tool providing a command-line interface to the library methods and one aspect of this provides a speed test. Since I'm mostly interested in older systems I'm going to use the common RSA and MD5 methods.</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 1445194 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 1206383 md5's in 3.01s
Doing md5 for 3s on 256 size blocks: 782471 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 331358 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 52272 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 26360 md5's in 3.00s
OpenSSL 1.1.1d 10 Sep 2019
built on: Thu Mar 25 16:22:23 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -D__ARM_MAX_ARCH__=7 -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-GRrFMG/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 7707.70k 25650.67k 66770.86k 113103.53k 142737.41k 143960.75k
$ openssl speed rsa
Doing 512 bits private rsa's for 10s: 6375 512 bits private RSA's in 10.00s
Doing 512 bits public rsa's for 10s: 68512 512 bits public RSA's in 10.00s
Doing 1024 bits private rsa's for 10s: 1273 1024 bits private RSA's in 9.99s
Doing 1024 bits public rsa's for 10s: 32773 1024 bits public RSA's in 9.99s
Doing 2048 bits private rsa's for 10s: 249 2048 bits private RSA's in 10.02s
Doing 2048 bits public rsa's for 10s: 11806 2048 bits public RSA's in 9.99s
Doing 3072 bits private rsa's for 10s: 92 3072 bits private RSA's in 10.05s
Doing 3072 bits public rsa's for 10s: 5648 3072 bits public RSA's in 9.99s
Doing 4096 bits private rsa's for 10s: 43 4096 bits private RSA's in 10.02s
Doing 4096 bits public rsa's for 10s: 3421 4096 bits public RSA's in 9.98s
Doing 7680 bits private rsa's for 10s: 9 7680 bits private RSA's in 11.15s
Doing 7680 bits public rsa's for 10s: 1031 7680 bits public RSA's in 9.99s
Doing 15360 bits private rsa's for 10s: 2 15360 bits private RSA's in 18.10s
Doing 15360 bits public rsa's for 10s: 266 15360 bits public RSA's in 10.00s
OpenSSL 1.1.1d 10 Sep 2019
built on: Thu Mar 25 16:22:23 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -D__ARM_MAX_ARCH__=7 -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-GRrFMG/openssl-1.1.1d=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
sign verify sign/s verify/s
rsa 512 bits 0.001569s 0.000146s 637.5 6851.2
rsa 1024 bits 0.007848s 0.000305s 127.4 3280.6
rsa 2048 bits 0.040241s 0.000846s 24.9 1181.8
rsa 3072 bits 0.109239s 0.001769s 9.2 565.4
rsa 4096 bits 0.233023s 0.002917s 4.3 342.8
rsa 7680 bits 1.238889s 0.009690s 0.8 103.2
rsa 15360 bits 9.050000s 0.037594s 0.1 26.6</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 142,737.41k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 4.3</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 342.8</li>
</ul>
<p>These will be roughly indicative of computational workload performance.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>Raspberry Pi systems have been a bit under powered for computational or memory intensive tasks such as compiling large programs from source. QEMU provides a potential workaround for this by providing an emulated system running the same operating system and tool chain, where host capabilities can elevate performance. Although networking appears to be an issue here, host tools can be used to access the file systems and copy software builds over to an drive which can be used in a real Raspberry Pi system.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul style="text-align: left;">
<li><a href="https://qemu-project.gitlab.io/qemu/system/arm/raspi.html">Raspberry Pi boards (raspi0, raspi1ap, raspi2b, raspi3ap, raspi3b) — QEMU documentation</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/ARM">Documentation/Platforms/ARM - QEMU</a></li>
<li><a href="https://www.mbtechworks.com/hardware/raspberry-pi-model-comparison.html">Raspberry Pi Models - 11 Model Comparison Chart</a></li>
<li><a href="https://github.com/dhruvvyas90/qemu-rpi-kernel">GitHub - dhruvvyas90/qemu-rpi-kernel: Qemu kernel for emulating Rpi on QEMU</a></li>
<li><a href="https://kimtinh.gitlab.io/post/tech/2019_05_20_qemu_rpi/">Run Raspbian with qemu and virt-manager - My quick notes</a></li>
<li><a href="https://stackoverflow.com/questions/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu">linux - How to emulate the Raspberry Pi 2 on QEMU? - Stack Overflow</a></li>
<li><a href="https://lists.gnu.org/archive/html/qemu-arm/2017-07/msg00035.html">Re: [Qemu-arm] [Query]: Does QEMU support SMSC LAN9514 chip for Raspberr</a></li>
<li><a href="https://www.raspberrypi.org/documentation/configuration/uart.md">UART configuration - Raspberry Pi Documentation</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-11833735380160917902021-08-15T11:51:00.002+01:002022-05-21T16:08:57.477+01:00NetBSD/hppa on QEMU - System Information<h3 style="text-align: left;">NetBSD on PA-RISC</h3>
<p>Originally inspired by <a href="https://www.openbsd.org/hppa.html">OpenBSD/hppa</a> the current <a href="https://wiki.netbsd.org/ports/hppa/">NetBSD/hppa</a> started as a port for HP 9000/700 systems and carried the name NetBSD/hp700. An initial experimental source release with NetBSD 2.0 in 2004, was followed by a binary release with NetBSD 3.0 in 2005. For NetBSD 7.0 in 2021 the port adopted the 'hppa' architecture name. The port now covers most PA-RISC HP 9000 systems, albeit in 32-mode.</p>
<h4 align="left">Platform</h4>
<p>HP developed the Precision Architecture (HP-PA or PA-RISC) RISC processor during the early 1980s in order to consolidate its compute platforms on to two architectures: Intel x86 and HP PA-RISC. The PA-RISC based HP 9000 series 700 entered the market in 1991</p>
<h3 align="left">Emulator and Platform</h3>
<p>The QEMU system emulator provides a 32-bit PA-RISC emulation based on the HP Visualize B160L (9000/778), a 1996 HP-UX workstation. From <a href="https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html">HP Visualize B132L, B160L, B180L PA-RISC Workstations - OpenPA.net</a> the B160L system specifications are:</p>
<ul style="text-align: left;">
<li>CPU: PA-7300LC 160 MHz</li>
<li>RAM: 32 MiB to 1.5 GiB max.</li>
<li>Bus: GSC, EISA, PCI</li>
<li>Storage controllers:</li>
<ul>
<li>NCR 53C710 narrow SCSI-2</li>
<li>NCR 53C720 Fast-Wide HVD SCSI-2</li>
</ul>
<li>Network interface: Intel 82596CA 10 Mb/s ethernet</li>
<li>Graphics: Visualize-EG (Graffiti) 2MB</li>
<li>Audio: Harmony</li>
</ul>
<p>The emulated system doesn't implement the audio, ethernet or SCSI controllers (yet), instead replacing the SCSI controllers and ethernet interface with PCI devices to provide the same functionality:</p>
<ul>
<li>CPU: one (or more) PA-7300LC at 250 MHz</li>
<li>RAM: 512 MiB default, up to 3.0 GiB</li>
<li>Bus: GSC, EISA, PCI</li>
<li>Storage controllers: Symbios Logic 53c895 Fast Wide LVD SCSI-2, PCI</li>
<li>Network interface: DEC Tulip 21142/43 100 Mb/s ethernet, PCI</li>
<li>Graphics: HPA208LC1280 aka. Artist</li>
</ul>
<p>The addition of multi-processor (SMP) support diverges from the source workstation, but provides an alternative means for increasing the system performance.</p>
<span><a name='more'></a></span>
<h4 align="left">Emulator Command</h4>
<p>Translating this into a QEMU system emulation command:</p>
<pre class="capturedOutput">qemu-system-hppa \
--machine hppa \
-m size=1536M \
-hda hda_NetBSD9_hppa.qcow2 \
-cdrom NetBSD-9.2-hppa.iso \
-net nic,model=e1000 \
-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \
-vga none \
-boot order=cd \
-no-reboot \
-name 'NetBSD 9 on HP B160L'</pre>
<p>A couple of things worth noting here:</p>
<ul>
<li>While the 'hppa' machine gives a healthy 512 MiB of memory by default I've increased it to 1.5 GiB, the maximum in a real B160L</li>
<li>Due to an issue with the <a href="https://man.netbsd.org/NetBSD-9.2/tlp.4">NetBSD tlp driver</a> (Tulip) not being able to detect the network connection (NOCARRIER), the default Tulip card has been swapped for an Intel e1000 network adapter (<a href="https://man.netbsd.org/NetBSD-9.2/wm.4">NetBSD wm</a>).</li>
<li>The user networking port forwarding rules provide a host/guest route for ssh connections:
<ul>
<li>Host to guest: <tt>ssh -p 2222 localhost</tt></li>
<li>Guest to host: <tt>ssh 10.0.2.1</tt></li>
</ul>
</li>
<li>The graphics is disabled to avoid issues with NetBSD detecting the graphics card</li>
</ul>
<h3 align="left">System Information</h3>
<p>So let's see what the operating system has to say about emulated platform...</p>
<h4 align="left">uname</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">% uname -a
NetBSD qhp-netbsd.home 9.2 NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/hppa/compile/GENERIC hppa</pre>
<p>So a "NetBSD" kernel, on a node named "qhp-netbsd.home", kernel release "9.2", version "NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/hppa/compile/GENERIC", platform architecture "hppa".</p>
<h4 align="left">dmesg</h4>
<p>System boot messages:</p>
<pre class="capturedOutput">% dmesg
[ 1.000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
[ 1.000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
[ 1.000000] 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved.
[ 1.000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.000000] The Regents of the University of California. All rights reserved.
[ 1.000000] NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021
[ 1.000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/hppa/compile/GENERIC
[ 1.000000] HP9000/778/B160L (Merlin L2 160)
[ 1.000000] real mem = 1536 MB (73728 reserved for PROM, 1522 MB used by NetBSD)
[ 1.000000] avail mem = 1495 MB
[ 1.000000] timecounter: Timecounters tick every 10.000 msec
[ 1.000000] Kernelized RAIDframe activated
[ 1.000000] mainbus0 (root) [flex fff80000]
[ 1.000000] pdc0 at mainbus0
[ 1.000000] power0 at mainbus0
[ 1.000000] cpu0 at mainbus0 hpa 0xfffb0000 path 48 irq 31: PA7300LC (Velociraptor) rev 0
[ 1.000000] cpu0: PCXL2, PA-RISC 1.1e, lev 1, cat A, 250 MHz clk
[ 1.000000] cpu0: shadows, 0K/0K D/I caches, 256 shared TLB, 0/0 D/I BTLBs
[ 1.000000] cpu0: no floating point
[ 1.000000] mem0 at mainbus0 hpa 0xfffbf000 path 63: viper rev 0, ctrl 0x0 size 1536MB
[ 1.000000] phantomas0 at mainbus0 hpa 0xffc00000 path 8
[ 1.000000] dino0 at phantomas0 hpa 0xfff80000 path 8/0: Dino V3.1
[ 1.000000] "Core RS-232C" at dino0 (type 0xa, sv 0x8c) hpa 0xfff83000 path 8/0/63 not configured
[ 1.000000] pci0 at dino0 bus 0
[ 1.000000] pci0: i/o space, memory space enabled
[ 1.000000] esiop0 at pci0 dev 0 function 0: Symbios Logic 53c895a (ultra2-wide scsi)
[ 1.000000] esiop0: using on-board RAM
[ 1.000000] esiop0: interrupting at irq 0
[ 1.000000] scsibus0 at esiop0: 16 targets, 8 luns per target
[ 1.000000] wm0 at pci0 dev 1 function 0: Intel i82540EM 1000BASE-T Ethernet (rev. 0x03)
[ 1.000000] wm0: interrupting at irq 1
[ 1.000000] wm0: 32-bit 33MHz PCI bus
[ 1.000000] wm0: 64 words (6 address bits) MicroWire EEPROM
[ 1.000000] wm0: Ethernet address 52:54:00:12:34:56
[ 1.000000] wm0: 0x200402<LOCK_EECD,IOH_VALID,WOL>
[ 1.000000] makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 0
[ 1.000000] makphy0: Failed to access EADR. Are you an emulator?
[ 1.000000] makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
[ 1.000000] lasi0 at phantomas0 hpa 0xffc00000 path 8/16 irq 28: rev 0.0
[ 1.000000] gsc0 at lasi0
[ 1.000000] lpt1 at gsc0 hpa 0xffd02000 path 8/16/0 irq 7
[ 1.000000] com2 at gsc0 hpa 0xffd05000 path 8/16/4 irq 5: ns8250 or ns16450, no fifo
[ 1.000000] timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
[ 1.000010] timecounter: Timecounter "itimer" frequency 250000000 Hz quality 100
[ 1.000010] scsibus0: waiting 2 seconds for devices to settle...
[ 3.297646] sd0 at scsibus0 target 0 lun 0: <QEMU, QEMU HARDDISK, 2.5+> disk fixed
[ 3.344310] sd0: 4096 MB, 8322 cyl, 16 head, 63 sec, 512 bytes/sect x 8388608 sectors
[ 3.401280] cd0 at scsibus0 target 2 lun 0: <QEMU, QEMU CD-ROM, 2.5+> cdrom removable
[ 3.821134] boot device: sd0
[ 3.896230] root on sd0a dumps on sd0b
[ 4.135077] root file system type: ffs
[ 4.155878] kern.module.path=/stand/hppa/9.2/modules
[ 26.225041] esiop0: autoconfiguration error: phase mismatch without command
[ 26.225041] esiop0: autoconfiguration error: unhandled scsi interrupt, sist=0x80 sstat1=0x0 DSA=0x2ac9961 DSP=0x50
[ 26.262119] esiop0: scsi bus reset
[ 26.262119] sd0: async, 8-bit transfers, tagged queueing
[ 26.275994] cd0: async, 8-bit transfers, tagged queueing
[ 35.140937] esiop0: autoconfiguration error: phase mismatch without command
[ 35.140937] esiop0: autoconfiguration error: unhandled scsi interrupt, sist=0x80 sstat1=0x0 DSA=0x1 DSP=0x50
[ 35.177145] esiop0: scsi bus reset
[ 35.414770] esiop0: autoconfiguration error: phase mismatch without command
[ 35.414770] esiop0: autoconfiguration error: unhandled scsi interrupt, sist=0x80 sstat1=0x0 DSA=0x1 DSP=0x50
[ 35.450893] esiop0: scsi bus reset
[ 124.754068] esiop0: autoconfiguration error: phase mismatch without command
[ 124.754068] esiop0: autoconfiguration error: unhandled scsi interrupt, sist=0x80 sstat1=0x0 DSA=0x2ac91e1 DSP=0x50
[ 124.795951] esiop0: scsi bus reset</pre>
<p>Lots of stuff here, so I'll only pick out some highlights...</p>
<ul>
<li>Identification of the system as a HP B160L</li>
<li>Report the 1.5 GiB memory</li>
<li>Processor details as a PA7300L, <i>aka</i>. PCXL2</li>
<li>Identification of chipsets and devices</li>
<li>Some SCSI errors</li>
</ul>
<h4 style="text-align: left;">sysctl</h4>
<p>The system configuration tool 'sysctl' (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/hppa/sysctl.8">NetBSD sysctl</a>) provides information about various aspects of the system configuration. Since we're interested in how the operating system sees the emulated system hardware, the 'hw' hierarchy is of interest:</p>
<pre class="capturedOutput">% sysctl -a | grep '^hw'
hw.machine = hppa
hw.model = HP9000/778/B160L (Merlin L2 160)
hw.ncpu = 1
hw.byteorder = 4321
hw.physmem = 1610612736
hw.usermem = 1610612736
hw.pagesize = 4096
hw.disknames = sd0 cd0
hw.machine_arch = hppa
hw.alignbytes = 7
hw.cnmagic = \x2b\x2b\x2b\x2b\x2b
hw.physmem64 = 1610612736
hw.usermem64 = 1610612736
hw.iostatnames = sd0 cd0
hw.ncpuonline = 1
hw.uhso.autoswitch = 1
hw.wsevent.default_version = 1
hw.firmware.path = /libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata
hw.wm0.txrx_workqueue = 0</pre>
<p>Here we have the system architecture, the system model, the number of processors and the connected disks.</p><p>As well as the hardware ('hw') section, there is also a machine dependent ('machdep') section:</p>
<pre class="capturedOutput">% sysctl -a | grep '^machdep'
machdep.booted_kernel = netbsd
machdep.lcd_blink = 0
machdep.power_switch.state = on
machdep.power_switch.control = enabled</pre>
<p>Some stuff about the system power management, and the front panel LCD heartbeat control. The B160L doesn't have a front panel LCD, instead using LEDs to show system activity, including an LED for the system heartbeat, but other HP 9000 models featured an LCD in this role.</p>
<h4 style="text-align: left;">pcictl</h4>
<p>The PCI bus configuration tool 'pcictl' (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/hppa/pcictl.8">NetBSD pcictl</a>) provides a means to look at the installed PCI devices:</p>
<pre class="capturedOutput">% pcictl pci0 list
000:00:0: Symbios Logic 53c895A (SCSI mass storage)
000:01:0: Intel i82540EM 1000baseT Ethernet (ethernet network, revision 0x03)</pre>
<p>And we see the expected PCI devices: the default SCSI controller and the Intel e1000 ethernet card, which replaced the default DEC Tulip ethernet card.</p>
<h4 style="text-align: left;">scsictl</h4>
<p>The SCSI configuration tool 'scsictl' (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/hppa/scsictl.8">NetBSD scsictl</a>) allows us to get information about the installed SCSI devices. In this case we have the system hard-disk and the CD-ROM drive, which can be seen in the 'sysctl' output:</p>
<pre class="capturedOutput">hw.disknames = sd0 cd0</pre>
<p>Using these device names we can get a bit more information:</p>
<pre class="capturedOutput"># scsictl sd0 identify
/dev/rsd0: scsibus0 target 0 lun 0 <QEMU, QEMU HARDDISK, 2.5+>
# scsictl cd0 identify
/dev/rcd0: scsibus0 target 2 lun 0 <QEMU, QEMU CD-ROM, 2.5+></pre>
<p>So we have the QEMU emulated hard-disk, that maps to the hard-disk image file that was specified on the command-line, and the QEMU emulated optical drive.</p>
<h3 align="left">Benchmark</h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing? To find out we're going to need a benchmark.</p>
<h4 align="left">BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). This is helpful in this case since the performance of processors of this era typically scaled with clock speed. So let's get some results using the standalone BogoMips 1.4.1 program and see what it says:</p>
<pre class="capturedOutput">Calibrating delay loop... 45.77 BogoMIPS
Calibrating delay loop... 73.72 BogoMIPS
Calibrating delay loop... 26.11 BogoMIPS
Calibrating delay loop... 46.79 BogoMIPS
Calibrating delay loop... 75.36 BogoMIPS</pre>
<p>The host system load appears prety constant so that doesn't look like a cause for the variablity. Checking the NetBSD/hppa end, <tt>top</tt> indicates the system is burning a lot of time (>90%) in "interupt" states which would explain the variblity and is likely connected to the SCSI errors.</p>
<p>Other that the very low outlier, these BogoMips results look to be inline with the HP-UX 11i results, suggesting they reflect the actual performance.</p>
<h4 align="left">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<pre class="capturedOutput">% openssl speed md5
Doing md5 for 3s on 16 size blocks: 248980 md5's in 2.30s
Doing md5 for 3s on 64 size blocks: 233838 md5's in 2.28s
Doing md5 for 3s on 256 size blocks: 163364 md5's in 2.30s
Doing md5 for 3s on 1024 size blocks: 84138 md5's in 2.30s
Doing md5 for 3s on 8192 size blocks: 14457 md5's in 2.29s
Doing md5 for 3s on 16384 size blocks: 7471 md5's in 2.29s
OpenSSL 1.1.1k 25 Mar 2021
NetBSD 9.2
options:bn(32,32) rc4(int) des(long) aes(partial) idea(int) blowfish(ptr)
gcc version 7.5.0 (NetBSD nb4 20200810)
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 1732.03k 6563.87k 18183.12k 37459.70k 51716.92k 53451.91k
% openssl speed rsa
Doing 512 bits private rsa's for 10s: 234 512 bits private RSA's in 7.67s
Doing 512 bits public rsa's for 10s: 3318 512 bits public RSA's in 7.63s
Doing 1024 bits private rsa's for 10s: 54 1024 bits private RSA's in 7.76s
Doing 1024 bits public rsa's for 10s: 1331 1024 bits public RSA's in 7.58s
Doing 2048 bits private rsa's for 10s: 11 2048 bits private RSA's in 8.20s
Doing 2048 bits public rsa's for 10s: RSA verify failure
4294967295:error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding:/usr/src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c:67:
4294967295:error:04067072:rsa routines:rsa_ossl_public_decrypt:padding check failed:/usr/src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c:588:
-1 2048 bits public RSA's in 0.25s
Doing 3072 bits private rsa's for 10s: 4 3072 bits private RSA's in 8.95s
Doing 3072 bits public rsa's for 10s: 216 3072 bits public RSA's in 7.66s
Doing 4096 bits private rsa's for 10s: 1 4096 bits private RSA's in 19.58s
Doing 4096 bits public rsa's for 10s: RSA verify failure
4294967295:error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding:/usr/src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c:67:
4294967295:error:04067072:rsa routines:rsa_ossl_public_decrypt:padding check failed:/usr/src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c:588:
-1 4096 bits public RSA's in 6.03s
OpenSSL 1.1.1k 25 Mar 2021
NetBSD 9.2
options:bn(32,32) rc4(int) des(long) aes(partial) idea(int) blowfish(ptr)
gcc version 7.5.0 (NetBSD nb4 20200810)
sign verify sign/s verify/s
rsa 512 bits 0.032778s 0.002300s 30.5 434.9
rsa 1024 bits 0.143704s 0.005695s 7.0 175.6
rsa 2048 bits 0.745455s -0.250000s 1.3 -4.0
rsa 3072 bits 2.237500s 0.035463s 0.4 28.2
rsa 4096 bits 19.580000s -6.030000s 0.1 -0.2</pre>
<p>The errors in the RSA test suggest there are issues with the implementation on this platform, and indicate that the strange looking RSA results (how do we get negative verifies per second) are invalid. The failures do not appear to be deterministic, suggesting the errors are connected to the random number parts of the method. While it looks like some runs work correctly, the errors make all the RSA results suspect.</p>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 51,716.92k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: <i>invalid</i></li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: <i>invalid</i></li>
</ul>
<p>So allowing for the limited results obtained, the MD5 results are possibly indicative of computational workload performance.</p>
<h3 align="left">Thoughts</h3>
<p>Performance seems to be a problem, with tasks often feeling sluggish. From the message log it looks like the SCSI driver is having problems and the errors from the OpenSSL speed test could indicate other issues.</p>
<h3 align="left">Further Sources</h3>
<p>More information can be found at:</p>
<ul>
<li><a href="https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html">HP Visualize B132L, B160L, B180L PA-RISC Workstations – OpenPA.net</a></li>
<li><a href="https://parisc.wiki.kernel.org/images-parisc/d/d5/B1xx-owners.pdf">Model B132L/B132L+/B160L/B180L Owner’s Guide</a></li>
<li><a href="https://wiki.qemu.org/Features/HPPA">Features/HPPA - QEMU</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/HPPA">Documentation/Platforms/HPPA - QEMU</a></li>
<li><a href="https://parisc.wiki.kernel.org/index.php/Qemu">Qemu - Linux PARISC Wiki</a></li>
<li><a href="https://wiki.netbsd.org/ports/hppa/">NetBSD/hppa</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-46106283737723435212021-08-08T07:52:00.002+01:002022-05-21T16:09:36.342+01:00Slackware Linux 3.0 on QEMU<h3 style="text-align: left;">Slackware</h3>
<p>Established back in 1993, Slackware (<a href="http://www.slackware.com/">The Slackware Linux Project</a>; <a href="https://en.wikipedia.org/wiki/Slackware">Wikipedia</a>) is the oldest surviving Linux distribution...</p>
<p>Slackware Linux 3.0 was the first Slackware release to have an official CD-ROM distribution and support installation from CD-ROM. Released in November 1995, the same month as the Pentium Pro, it doesn't have support for a lot of the more modern hardware emulated by QEMU...</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgCQCGMKYRyL9W9-zFUKqUVs2t1nawI0BzmwyWMxx5mN6ZR1t18qMez4nB7H0-u9AHMynt-Nzd-RufL5o6ZO54fY7lLmbNhSZGy10vpUAwGTamoJ5n0LT7bejyx4E8BcW1GokTaG0T_RY/s1036/Slackware_3.0_X.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="829" data-original-width="1036" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgCQCGMKYRyL9W9-zFUKqUVs2t1nawI0BzmwyWMxx5mN6ZR1t18qMez4nB7H0-u9AHMynt-Nzd-RufL5o6ZO54fY7lLmbNhSZGy10vpUAwGTamoJ5n0LT7bejyx4E8BcW1GokTaG0T_RY/s320/Slackware_3.0_X.png" width="320" /></a></div><br />
<h3 style="text-align: left;">QEMU</h3>
<p>The default QEMU i386 system emulation ('pc') is based on Intel's "Natoma" (Intel 440FX & PIIX3) chipset for Pentium Pro and Pentium II processors, which was released in 1996 (<a href="https://en.wikipedia.org/wiki/List_of_Intel_chipsets">List of Intel chipsets - Wikipedia</a>):</p>
<p></p>
<ul style="text-align: left;">
<li>Model: "pc" - Intel 440FX & PIIX3 "Natoma"</li>
<li>CPU: "qemu32" - QEMU Virtual CPU (default)</li>
<li>RAM: 128 MiB default, 2 GiB max.</li>
<li>Bus: PCI and ISA</li>
<li>Storage controller: IDE (PIIX3)</li>
<li>Network interface: "e1000" - Intel 82540EM Gigabit Ethernet Controller, 1,000 Mb/s ethernet</li>
<li>Graphics: "std" - Standard VGA (with Bochs VBE)</li>
</ul>
<p></p>
<p>Since the kernels included with Slackware 3.0 are older than this, they don't recognize the hardware and use generic methods to run on the system. Distributions based on the Linux 2.0 series or later kernels would be a better choice for the 'pc' machine (<a href="https://www.linuxjournal.com/article/1311">Linux Version 2.0 | Linux Journal</a>).</p>
<p>Fortunately QEMU has a generic ISA based PC system profile ('isapc') which provides an option that is more in keeping with the hardware available when Slackware 3.0 was released:</p>
<p></p>
<ul style="text-align: left;">
<li>Model: "isapc" - ISA bus PC</li>
<li>CPU: "486" - Intel i486DX/4</li>
<li>RAM: 128 MiB default, 2 GiB max.</li>
<li>Bus: ISA</li>
<li>Storage controller: IDE</li>
<li>Network interface: "ne2k_isa" - NE2000 ISA, 10 Mb/s ethernet (IRQ 9, I/O 0x300)</li>
<li>Graphics: "cirrus" - Cirrus GD-5446 VGA ISA</li>
</ul><div>This isn't ideal, given that PCI based 486 and Pentium based systems existed at the time, but QEMU doesn't provide the appropriate chipsets for those systems, so exploration of those options will have to be on real hardware, or using other emulators (e.g. <a href="https://bochs.sourceforge.io/">Bochs</a>, <a href="https://pcem-emulator.co.uk/">PCem</a>, etc.).</div>
<p></p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">Installation</h3>
<p></p>
<ol style="text-align: left;">
<li>Fetch the Slackware Linux 3.0 CD-ROM image from Archive.org (<a href="https://archive.org/details/Slackware_Linux_3.0_Walnut_Creek_October_1995">https://archive.org/details/Slackware_Linux_3.0_Walnut_Creek_October_1995</a>), for installation we only need CD 1.</li>
<li>Sadly the CD is not bootable (the El Torito CD-ROM specification was released in 1995), so we need to use floppy boot images. We need a boot and a root image.</li>
<li>For the 'isapc' and 'pc' machines the 'idecd' and 'color.gz' floppy images are what we are looking for to get IDE CD-ROM support and nice menus for installation.</li>
<ol>
<li>On Linux: <pre>mkdir tmp_mnt
fuseiso slackware3_cd1.iso tmp_mnt # Mount the ISO
cp tmp_mnt/bootdsks.144/idecd ./ # Boot disk (only 600KB)
truncate -s 1440K idecd # Pad boot disk to 1.44MB
cp tmp_mnt/rootdsks/color.gz ./ # Root disk (already 1.44MB)
guestunmount tmp_mnt/ # Unmount the ISO
rmdir tmp_mnt</pre></li>
</ol>
<li>And a disk image for the install, a 2 GB disk will be more than enough: <tt>qemu-img create -f qcow2 hda_Slackware3.qcow2 2G</tt></li>
<li>Now we can boot the system for installation. In QEMU 5.2.0, the floppy support in 'isapc' appears to be broken, so we have to use 'pc' for installation: <pre>qemu-system-i386 \
-machine type=pc \
-cpu 486 \
-m size=512M \
-fda idecd \
-fdb color.gz \
-hda hda_Slackware3.qcow2 \
-cdrom slackware3_cd1.iso \
-net nic -net user \
-device sb16 \
-boot order=a \
-no-reboot \
-name "Install Slackware Linux 3.0 on pc/486"
</pre></li>
<li>Since we're using boot and root floppies in different drives, use "<tt>ramdisk root=/dev/fd1</tt>" as detailed on the boot screen.</li>
<li>The hard drive is blank, so once we've logged in as "root", we need to partition the disk: <tt>fdisk /dev/hda</tt></li>
<ol>
<li>Use '<tt>m</tt>' to familiarize yourself with the options.</li>
<li>Since we have plenty memory we can skip having a swap partition. For illustration I will create one, but the whole disk can be used as root instead.</li>
<li>New 'n', primary partition 'p', partition '1', from cylinder '1' to '504'</li>
<li>New 'n', primary partition 'p', partition '2', from cylinder '505' to '520' (at ~4 MB per cylinder, 16 cylinders is about 64 MB).</li>
<li>Type 't', partition '2', type list 'L', type '82' (Linux swap).</li>
<li>Write changes to disk 'w'</li>
</ol>
<li>With the disk partitioned, run <tt>setup</tt> to continue the installation and follow the prompts...</li>
<ol>
<li>If your plan to use the manual pages (<tt>man</tt>) be sure to install GNU troff (gtroff)</li>
<li>The QEMU 'cirrus' display will work with the SVGA XFree86 server</li>
<li>The QEMU mouse is PS/2</li>
<li>For QEMU user networking the IP addresses are (from <a href="https://wiki.qemu.org/Documentation/Networking">Documentation/Networking - QEMU</a>):</li>
<ul>
<li>Host: 10.0.2.15</li>
<li>Gateway: 10.0.2.2</li>
<li>Netmask: 255.255.255.0</li>
<li>DNS: 10.0.2.3</li>
</ul>
<li>In order to use the configured 512 MiB RAM, remember to tell LILO to use "<tt>mem=512M</tt>" as a kernel parameter</li>
</ol>
<li>After packages are installed, and the system shutdown, we can switch to an 'isapc': <pre>qemu-system-i386 \
-machine type=isapc \
-cpu 486 \
-m size=512M \
-hda hda_Slackware3.qcow2 \
-cdrom slackware3_cd1.iso \
-net nic -net user \
-device sb16 \
-boot order=c \
-no-reboot \
-name "Slackware Linux 3.0 on isapc/486"</pre></li>
<li>Once logged in you can give 'root' a password (<tt>passwd</tt>), add a regular user account (<tt>adduser</tt>), enable serial port login (<tt>/etc/inittab</tt>) and configure the X server (<tt>xf86config</tt>)</li><ol><li>When configuring the X server, you can assume the monitor is the most capable option each time. The emulated card is a Cirrus Logic GD-5446 VGA ISA with 4MB RAM, so any of the Cirrus Logic cards will do, I used the "Cirrus Logic GD543x" option.</li></ol>
</ol>
<p>With the system installed further exploration will involve hitting the documentation:</p>
<ul style="text-align: left;">
<li>Installed docs:</li>
<ul>
<li>FAQs and HOWTOs: <tt>/usr/doc/faq/</tt></li>
<li>Manual pages: <tt>apropos <term></tt>, <tt>man -k <term></tt>, <tt>man <pagename></tt></li>
<li>GNU info: <tt>info</tt></li>
</ul>
<li>CD-ROM: <tt>docs/</tt></li>
<li><a href="https://tldp.org/">The Linux Documentation Project</a></li>
<li>Various Linux usenet groups, such as:</li>
<ul>
<li><a href="https://groups.google.com/g/comp.os.linux">comp.os.linux - Google Groups</a></li>
<li><a href="https://groups.google.com/g/comp.os.linux.setup">comp.os.linux.setup - Goggle Groups</a></li>
<li><a href="https://groups.google.com/g/comp.os.linux.misc">comp.os.linux.misc - Google Groups</a></li>
<li><a href="https://groups.google.com/g/alt.os.linux.slackware">alt.os.linux.slackware - Google Groups</a></li>
</ul>
</ul>
<p></p>
<h3 style="text-align: left;">System Information</h3>
<p>So what does Slackware Linux 3.0 have to say about the 'isapc' system...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system release information:</p>
<pre>$ uname -a
Linux q-slack3 1.2.13 #1 Wed Aug 23 00:34:56 CDT 1995 i486</pre>
<p>A "Linux" kernel, on a node named "q-slack3", kernel release "1.2.13", version "#1 Wed Aug 23 00:34:56 CDT 1995", on a "i486" machine.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>Processor information:</p>
<pre>$ cat /proc/cpuinfo
cpu : 486
model : DX/4
mask : Unknown
vid : GenuineIntel
fdiv_bug : no
math : yes
hlt : yes
wp : yes
Integrated NPU : yes
Enhanced VM86 : no
IO Breakpoints : no
4MB Pages : yes
TS Counters : no
Pentium MSR : no
Mach. Ch. Exep. : no
CMPXCHGB8B : no
BogoMips : 516.22</pre>
<p>So QEMU's '486' processor is an Intel 486DX/4 (from other Linux versions the CPUID is: family 4, model 8, stepping 0). The CPUID (<a href="https://en.wikipedia.org/wiki/CPUID">Wikipedia</a>) feature flags are shown in order, starting with "Integrated NPU" for the first 8 bits. Interestingly it appears that a real Intel 486DX/4 would set the "Enhanced VM86" flag for VME support (Virtual-8086 Mode Extensions), and not set the "4MB Pages" flag for PSE (Page Size Extension).</p>
<p>From the BogoMips result we can estimate the processor clock to be:</p>
<p>516 * 2 = 1,032 MHz = 1.0 GHz</p>
<p>That shows how far Intel processors have come... Intel's fastest 486 was the 486DX/4 100 MHz, and here we are running an emulated 486 on an i7 860 2.80 GHz and we get a ridiculously fast 486.</p>
<h4 style="text-align: left;">/proc/meminfo</h4>
<p>Memory information:</p>
<pre>$ cat /proc/meminfo
total: used: free: shared: buffers:
Mem: 533798912 5627904 528171008 4648960 2146304
Swap: 66056192 0 66056192</pre>
<p>So 512 MiB RAM, with 64 MB of swap.</p>
<p>Linux 1.2 used the BIOS to get RAM size, and that only reported up to 64 MiB, for larger memory systems Linux needed to be told about the available memory via the "mem" kernel parameter. This is likely also the reason that the swap partition size for Linux 1.2 could be no larger than 64 MB, for larger swap multiple partitions were required. The small swap configured here is to allow idle memory pages from the kernel and system daemons to be swapped out if necessary.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log:</p>
<pre>$ dmesg
Console: colour EGA+ 80x25, 1 virtual console (max 63)
bios32_init : BIOS32 Service Directory structure at 0x000f6820
bios32_init : BIOS32 Service Directory entry at 0xfd34f
pcibios_init : PCI BIOS revision 2.10 entry at 0xffa40
Probing PCI hardware.
Calibrating delay loop.. ok - 516.22 BogoMips
Serial driver version 4.11 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
lp1 at 0x0378, using polling driver
PS/2 auxiliary pointing device detected -- driver installed.
ftape: allocated 3 buffers aligned at: 00370000
hda: QEMU HARDDISK, 2048MB w/256KB Cache, LBA, CHS=520/128/63, MaxMult=16
hdc: QEMU DVD-ROM, ATAPI, CDROM drive
ide1: secondary interface on irq 15
ide0: primary interface on irq 14
Floppy drive(s): fd0 is 2.88M AMI BIOS
FDC 0 is a post-1991 82077
scsi : 0 hosts.
scsi : detected total.
lance.c: PCI bios is present, checking for devices...
Memory: 521292k/524288k available (840k kernel code, 384k reserved, 1772k data)
This processor honours the WP bit even when in supervisor mode. Good.
Swansea University Computer Society NET3.019
Swansea University Computer Society TCP/IP for NET3.019
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.8.3-NET3.019-NEWTTY (4 channels) (6 bit encapsulation enabled)
CSLIP: code copyright 1989 Regents of the University of California
NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
eth0: NE2000 found at 0x300, using IRQ 9.
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Checking 'hlt' instruction... Ok.
Linux version 1.2.13 (root@bigkitty) (gcc version 2.7.0) #1 Wed Aug 23 00:34:56 CDT 1995
Partition check:
hda: multiple mode turned off
hda: hda1 hda2
VFS: Mounted root (ext2 filesystem) readonly.
Adding Swap: 64508k swap-space
Max size:331555 Log zone size:2048
First datazone:68 Root inode number 139264
ISO9660 Extensions: RRIP_1991A</pre>
<p>Here we see the results of hardware detection, in the days before hardware told you what it was (Plug & Play), things work pretty well here with most of the installed hardware being picked up as expected.</p>
<h4 style="text-align: left;">Alternative - /proc/cpuinfo</h4>
<p>Just for fun the /proc/cpuinfo for QEMU's 'pentium' processor:</p>
<pre>$ cat /proc/cpuinfo
cpu : 586
model : 4
mask : C
vid : GenuineIntel
fdiv_bug : no
math : yes
hlt : yes
wp : yes
Integrated NPU : yes
Enhanced VM86 : no
IO Breakpoints : yes
4MB Pages : yes
TS Counters : yes
Pentium MSR : yes
Mach. Ch. Exep. : yes
CMPXCHGB8B : yes
BogoMips : 488.06</pre>
<p>From other versions of Linux we know the CPUID information is: family 5, model 4, stepping 3. Which is what we see here with cpu "586" (family 5), model "4" (model 4) and mask "C" ("C" = 43, so "C" - "@" => 43 - 40 = 3; stepping 3). This means the processor is an Intel Pentium MMX (see <a href="https://en.wikichip.org/wiki/intel/cpuid">CPUID - Intel - WikiChip</a>), which didn't start shipping till 1997.</p>
<p>Like the emulated '486', the "Enhanced VM86" flag for VME (Virtual-8086 Mode Extensions) would be set on a real Pentium MMX processor.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-28154231880004982262021-08-04T15:59:00.005+01:002022-05-21T16:11:53.697+01:00BeOS - System Information<h3 style="text-align: left;">BeOS</h3>
<p>The BeOS operating system (<a href="https://en.wikipedia.org/wiki/BeOS">Wikipedia</a>) is a multimedia operating system from the late 1990s...</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX-cq22B1ceCUo0bKyCdy78W1oiNIleyVt91MQc2NJdV2tWj9mBVTct0NuuQOurWbS8rf9sZpqTMqPWStAb5ecYPC18gOKCk0M-ZpbkS3Z7xmFeFp5zkvNaUAAfLxLw1BCi-5AvnbF-Yg/s1026/VirtualBox+BeOS+5+Pro.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="BeOS 5 Pro in VirtualBox" border="0" data-original-height="842" data-original-width="1026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX-cq22B1ceCUo0bKyCdy78W1oiNIleyVt91MQc2NJdV2tWj9mBVTct0NuuQOurWbS8rf9sZpqTMqPWStAb5ecYPC18gOKCk0M-ZpbkS3Z7xmFeFp5zkvNaUAAfLxLw1BCi-5AvnbF-Yg/s320/VirtualBox+BeOS+5+Pro.png" width="320" /></a></div>
<h4 style="text-align: left;">Platform</h4>
<p>BeOS Release 5.0 Professional supported two system architectures (see <a href="https://web.archive.org/web/20010616201750/http://www.be.com/products/freebeos/beosreadylist.html">BeOS Ready Hardware List</a>):</p>
<ol style="text-align: left;">
<li>PowerPC - BeBox and various pre-G3 Power Macintosh systems and compatibles</li>
<li>x86 - various systems based on Intel Pentium, Pentium Pro, Pentium II, Pentium III & Celeron processors and compatibles (e.g. AMD K6, K6-2, K6-III & Athlon; Cyrix 686mx, 686GXm, & M II; IDT WinChip C6 & WinChip 2).</li>
</ol>
<p>The hardware that can run BeOS is aging and can be difficult to obtain, so there is a need to consider emulation/virtualization options as alternatives to sourcing hardware.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">Emulator and Virtual Machine</h3><p style="text-align: left;">Examining the emulation and virtualization options for running BeOS...</p>
<h4 style="text-align: left;">PowerPC</h4>
<p>For BeOS on the PowerPC platform options are limited, with BeOS supported systems typically not having emulation solutions available. Looking at Power Macintosh emulation options:</p>
<ul style="text-align: left;">
<li><a href="http://gavare.se/gxemul/">GXemul</a> - provides a generic G4 system, which is unlikely to be supported by BeOS.</li>
<li><a href="http://pearpc.sourceforge.net/">PearPC</a> - provides a G3 or G4 Power Macintosh... which aren't supported by BeOS</li>
<li><a href="https://sheepshaver.cebix.net/">SheepShaver</a> - provides MacOS support for the right era, so maybe able to run BeOS? However it looks like the system level is generic and tailored to support MacOS, so no BeOS support.</li>
<li><a href="https://www.qemu.org/">QEMU</a> - system emulation of the Beige G3 (g3beige) and Graphite G4 AGP (mac99), which are not supported by BeOS.</li>
</ul>
<p>Since BeOS requires a pre-G3 Power Macintosh (although it does support G3 processor upgrades), these don't really help. </p>
<p>Looking around for BeBox emulations finds preliminary support for the PowerPC BeBox in <a href="https://www.mamedev.org/">MAME</a>, but this is marked as not working (see <a href="http://adb.arcadeitalia.net/?mame=bebox">BeBox Dual603-66 - MAME machine</a> and <a href="http://adb.arcadeitalia.net/?mame=bebox2">BeBox Dual603-133 - MAME machine</a>). It also appears that there was some interest in emulating the BeBox prototype based on the AT&T Hobbit processor (<a href="https://en.wikipedia.org/wiki/AT%26T_Hobbit">Wikipedia</a>) in MESS a while back (<a href="https://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=47523#Post47523">Hobbit BeBox - Forums</a>).</p>
<h4 style="text-align: left;">Intel x86 and Compatibles</h4>
<p>For the x86 platform support there is a much wider range of options:</p>
<ul style="text-align: left;">
<li>Virtual Machine (VM):</li>
<ul>
<li>VirtualBox: see <a href="https://learn.adafruit.com/build-a-bebox-with-beos-and-virtualbox">Overview | Build your own BeBox and run BeOS using Virtualbox | Adafruit Learning System</a></li>
</ul>
<li>Emulation:</li>
<ul>
<li><a href="https://bochs.sourceforge.io/">Bochs</a></li>
<li><a href="https://www.qemu.org/">QEMU</a></li>
</ul>
</ul>
<p style="text-align: left;">The main restrictions being on finding emulated devices with driver support.</p>
<h4 style="text-align: left;">The Selection</h4>
<p style="text-align: left;">Given that there are already details for setting up BeOS on VirtualBox, and I'm using VirtualBox for various other operating systems, my initial choice is to use VirtualBox. However VirtualBox uses a hypervisor model, which means BeOS can see some aspects of the host hardware... which confuses it a little.</p>
<p style="text-align: left;">So I'm also going to try getting BeOS to work on Bochs, since it emulates everything and provides devices choices which fit with BeOS hardware support. But that is for another day...</p>
<h3 style="text-align: left;">System Information</h3>
<p>So let's see what the BeOS has to say about the VM system, and where appropriate a real Pentium MMX class PC system...</p>
<h4 align="left">uname</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">$ uname -a
BeOS beos5-vm 5.0 1000009 BePC unknown</pre>
<p>So a "BeOS" system called "beos5-vm", OS release "5.0", version "1000009", machine type "BePC", processor type "unknown".</p>
<p>Seems odd that the host processor type is not reported, this might be a mismatch between the supplied 'uname' (from GNU sh-utils) and the system information on BeOS.</p>
<h4 style="text-align: left;">iroster</h4>
<p>Show the roster of input devices:</p>
<pre class="capturedOutput">$ iroster
name type state
--------------------------------------------------
AT Keyboard B_KEYBOARD_DEVICE running
PS/2 Mouse B_POINTING_DEVICE running</pre>
<p>For these machines we have the keyboard and mouse.</p>
<h4 style="text-align: left;">listdev</h4>
<p>Show a list of devices...</p>
<p>For a real hardware system:</p>
<pre class="capturedOutput">$ listdev
ISA bus, device #0: Memory Controller (RAM) [5|0|0]
Current configuration:
mem range: min 0 max 0 align 0 len a0000
mem range: min e0000 max e0000 align 0 len 20000
1 configurations
Possible configuration #0:
mem range: min 0 max 0 align 0 len a0000
mem range: min e0000 max e0000 align 0 len 20000
Bus-dependent information:
CSN 0 LDN 0
ISA bus, device #1: Generic System Peripheral (PIC) [8|0|1]
Current configuration: irq [2]
io range: min 20 max 20 align 0 len 2
io range: min a0 max a0 align 0 len 2
1 configurations
Possible configuration #0: irq [2]
io range: min 20 max 20 align 0 len 2
io range: min a0 max a0 align 0 len 2
Bus-dependent information:
CSN 1 LDN 0
ISA bus, device #2: Generic System Peripheral (DMA) [8|1|1]
Current configuration: dma [4]
io range: min 0 max 0 align 0 len 10
io range: min 80 max 80 align 0 len 11
io range: min 94 max 94 align 0 len c
io range: min c0 max c0 align 0 len 1f
1 configurations
Possible configuration #0: dma [4]
io range: min 0 max 0 align 0 len 10
io range: min 80 max 80 align 0 len 11
io range: min 94 max 94 align 0 len c
io range: min c0 max c0 align 0 len 1f
Bus-dependent information:
CSN 2 LDN 0
ISA bus, device #3: Generic System Peripheral (Timer) [8|2|1]
Current configuration: irq [0]
io range: min 40 max 40 align 0 len 4
1 configurations
Possible configuration #0: irq [0]
io range: min 40 max 40 align 0 len 4
Bus-dependent information:
CSN 3 LDN 0
ISA bus, device #4: Generic System Peripheral (RTC) [8|3|1]
Current configuration: irq [8]
io range: min 70 max 70 align 0 len 2
1 configurations
Possible configuration #0: irq [8]
io range: min 70 max 70 align 0 len 2
Bus-dependent information:
CSN 4 LDN 0
ISA bus, device #5: Input Device (Keyboard) [9|0|0]
Current configuration: irq [1]
io range: min 60 max 60 align 0 len 1
io range: min 64 max 64 align 0 len 1
1 configurations
Possible configuration #0: irq [1]
io range: min 60 max 60 align 0 len 1
io range: min 64 max 64 align 0 len 1
Bus-dependent information:
CSN 5 LDN 0
ISA bus, device #6: Generic System Peripheral (Other) [8|80|0]
Current configuration:
io range: min 61 max 61 align 0 len 1
1 configurations
Possible configuration #0:
io range: min 61 max 61 align 0 len 1
Bus-dependent information:
CSN 6 LDN 0
ISA bus, device #7: Generic System Peripheral (Other) [8|80|0]
Current configuration: irq [13]
io range: min f0 max f0 align 0 len 10
1 configurations
Possible configuration #0: irq [13]
io range: min f0 max f0 align 0 len 10
Bus-dependent information:
CSN 7 LDN 0
ISA bus, device #8: Input Device (Mouse) [9|2|0]
Current configuration: irq [12]
1 configurations
Possible configuration #0: irq [12]
Bus-dependent information:
CSN 8 LDN 0
ISA bus, device #9: Bridge Device (PCI-PCI) [6|4|0]
Current configuration:
0 configurations
Bus-dependent information:
CSN 9 LDN 0
ISA bus, device #10: Mass Storage Controller (Floppy) [1|2|0]
Current configuration: irq [6] dma [2]
io range: min 3f0 max 3f0 align 4 len 6
1 configurations
Possible configuration #0: irq [6] dma [2]
io range: min 3f0 max 3f0 align 4 len 6
Bus-dependent information:
CSN a LDN 0
ISA bus, device #11: Generic System Peripheral (Other) [8|80|0]
Current configuration:
io range: min 4d0 max 4d0 align 4 len 2
io range: min cf8 max cf8 align 8 len 8
io range: min 3f7 max 3f7 align 1 len 1
mem range: min fffe0000 max fffe0000 align 0 len 20000
mem range: min 100000 max 100000 align 0 len ff00000
1 configurations
Possible configuration #0:
io range: min 4d0 max 4d0 align 4 len 2
io range: min cf8 max cf8 align 8 len 8
io range: min 3f7 max 3f7 align 1 len 1
mem range: min fffe0000 max fffe0000 align 0 len 20000
mem range: min 100000 max 100000 align 0 len ff00000
Bus-dependent information:
CSN b LDN 0
ISA bus, device #12: Legacy (non-VGA) [0|0|0]
Current configuration: irq [3]
io range: min 200 max 200 align 0 len 20
mem range: min c0000 max c0000 align 0 len 4000
1 configurations
Possible configuration #0: irq [2,3,4,5,10,11,12,15]
io range: min 200 max 3e0 align 20 len 20
mem range: min c0000 max dc000 align 40000000 len 4000
Bus-dependent information:
CSN 1 LDN 0 Plug & Play Ethernet Card
PCI bus, device #0: Bridge Device (Host) [6|0|0]
Current configuration:
1 configurations
Possible configuration #0:
Bus-dependent information:
vendor id: 10b9, device id: 1531
PCI bus, device #1: Bridge Device (ISA) [6|1|0]
Current configuration:
1 configurations
Possible configuration #0:
Bus-dependent information:
vendor id: 10b9, device id: 1533
PCI bus, device #2: Display Controller (VGA/8514) [3|0|0]
Current configuration:
io range: min ec80 max ec80 align 0 len 80
mem range: min ef800000 max ef800000 align 0 len 800000
mem range: min ffaf0000 max ffaf0000 align 0 len 10000
1 configurations
Possible configuration #0:
io range: min ec80 max ec80 align 0 len 80
mem range: min ef800000 max ef800000 align 0 len 800000
mem range: min ffaf0000 max ffaf0000 align 0 len 10000
Bus-dependent information:
vendor id: 1039, device id: 6326
PCI bus, device #3: Multimedia Device (Audio) [4|1|0]
Current configuration: irq [9]
io range: min ee80 max ee80 align 0 len 40
1 configurations
Possible configuration #0: irq [9]
io range: min ee80 max ee80 align 0 len 40
Bus-dependent information:
vendor id: 1274, device id: 5880
PCI bus, device #4: NIC (Ethernet) [2|0|0]
Current configuration: irq [10]
io range: min ec00 max ec00 align 0 len 80
mem range: min ffadff80 max ffadff80 align 0 len 80
1 configurations
Possible configuration #0: irq [10]
io range: min ec00 max ec00 align 0 len 80
mem range: min ffadff80 max ffadff80 align 0 len 80
Bus-dependent information:
vendor id: 1011, device id: 19
PCI bus, device #5: Mass Storage Controller (IDE) [1|1|fa]
Current configuration: irqs [14][15]
io range: min 1f0 max 1f0 align 0 len 8
io range: min 3f4 max 3f4 align 0 len 4
io range: min 170 max 170 align 0 len 8
io range: min 374 max 374 align 0 len 4
io range: min ffa0 max ffa0 align 0 len 10
1 configurations
Possible configuration #0: irqs [14][15]
io range: min 1f0 max 1f0 align 0 len 8
io range: min 3f4 max 3f4 align 0 len 4
io range: min 170 max 170 align 0 len 8
io range: min 374 max 374 align 0 len 4
io range: min ffa0 max ffa0 align 0 len 10
Bus-dependent information:
vendor id: 10b9, device id: 5229
PCI bus, device #6: Serial Bus Controller (USB) [c|3|10]
Current configuration: irq [11]
mem range: min ffad7000 max ffad7000 align 0 len 1000
1 configurations
Possible configuration #0: irq [11]
mem range: min ffad7000 max ffad7000 align 0 len 1000
Bus-dependent information:
vendor id: 10b9, device id: 5237</pre>
<p>Lots of hardware information here, but not particularly designed to be human readable, and doesn't really mention which drivers handle the devices. Something that would be helpful for identifying devices that are not configured correctly. In this particular case there is a ISA Plug & Play NE2000 ethernet adapter which is configured, but not bound to a driver, and the USB controller also seems to be configured and not bound. Investigation shows the NE2000 issue to be a Plug&Play allocation to an I/O address which is not available to the driver.</p>
<p>For the VirtualBox BeOS VM things are similar, but some of the detail is a bit different:</p>
<pre class="capturedOutput">$ listdev
ISA bus, device #0: Generic System Peripheral (PIC) [8|0|1]
Current configuration: irq [2]
io range: min 20 max 20 align 0 len 2
io range: min a0 max a0 align 0 len 2
1 configurations
Possible configuration #0: irq [2]
io range: min 20 max 20 align 0 len 2
io range: min a0 max a0 align 0 len 2
Bus-dependent information:
CSN 0 LDN 0 PIC
ISA bus, device #1: Generic System Peripheral (DMA) [8|1|1]
Current configuration: dma [4]
io range: min 0 max 0 align 0 len 10
io range: min 80 max 80 align 0 len 11
io range: min 94 max 94 align 0 len c
io range: min c0 max c0 align 0 len 1f
1 configurations
Possible configuration #0: dma [4]
io range: min 0 max 0 align 0 len 10
io range: min 80 max 80 align 0 len 11
io range: min 94 max 94 align 0 len c
io range: min c0 max c0 align 0 len 1f
Bus-dependent information:
CSN 1 LDN 0 DMA
ISA bus, device #2: Generic System Peripheral (Timer) [8|2|1]
Current configuration: irq [0]
io range: min 40 max 40 align 0 len 4
1 configurations
Possible configuration #0: irq [0]
io range: min 40 max 40 align 0 len 4
Bus-dependent information:
CSN 2 LDN 0 Timer
ISA bus, device #3: Generic System Peripheral (RTC) [8|3|1]
Current configuration: irq [8]
io range: min 70 max 70 align 0 len 2
1 configurations
Possible configuration #0: irq [8]
io range: min 70 max 70 align 0 len 2
Bus-dependent information:
CSN 3 LDN 0 RTC
ISA bus, device #4: Input Device (Keyboard) [9|0|0]
Current configuration: irq [1]
io range: min 60 max 60 align 0 len 1
io range: min 64 max 64 align 0 len 1
1 configurations
Possible configuration #0: irq [1]
io range: min 60 max 60 align 0 len 1
io range: min 64 max 64 align 0 len 1
Bus-dependent information:
CSN 4 LDN 0 Keyboard
ISA bus, device #5: Generic System Peripheral (Other) [8|80|0]
Current configuration: irq [13]
io range: min f0 max f0 align 0 len 10
1 configurations
Possible configuration #0: irq [13]
io range: min f0 max f0 align 0 len 10
Bus-dependent information:
CSN 5 LDN 0 Math Coprocessor
ISA bus, device #6: Communication Device (Serial) [7|0|2]
Current configuration: irq [4]
io range: min 3f8 max 3f8 align 0 len 8
1 configurations
Possible configuration #0: irq [4]
io range: min 3f8 max 3f8 align 0 len 8
Bus-dependent information:
CSN 6 LDN 0 Serial 1
ISA bus, device #7: Communication Device (Serial) [7|0|2]
Current configuration: irq [3]
io range: min 2f8 max 2f8 align 0 len 8
1 configurations
Possible configuration #0: irq [3]
io range: min 2f8 max 2f8 align 0 len 8
Bus-dependent information:
CSN 7 LDN 0 Serial 2
ISA bus, device #8: Communication Device (Parallel) [7|1|2]
Current configuration: irq [7]
io range: min 378 max 378 align 0 len 4
1 configurations
Possible configuration #0: irq [7]
io range: min 378 max 378 align 0 len 4
Bus-dependent information:
CSN 8 LDN 0 Parallel 1
ISA bus, device #9: Mass Storage Controller (Floppy) [1|2|0]
Current configuration: irq [6] dma [2]
io range: min 3f0 max 3f0 align 0 len 6
1 configurations
Possible configuration #0: irq [6] dma [2]
io range: min 3f0 max 3f0 align 0 len 6
Bus-dependent information:
CSN 9 LDN 0 Floppy
ISA bus, device #10: Input Device (Mouse) [9|2|0]
Current configuration: irq [12]
1 configurations
Possible configuration #0: irq [12]
Bus-dependent information:
CSN a LDN 0 PS/2 Mouse
ISA bus, device #11: Memory Controller (RAM) [5|0|0]
Current configuration:
mem range: min 0 max 0 align 0 len 20000000
1 configurations
Possible configuration #0:
mem range: min 0 max 0 align 0 len 20000000
Bus-dependent information:
CSN b LDN 0 RAM
PCI bus, device #0: Bridge Device (Host) [6|0|0]
Current configuration:
1 configurations
Possible configuration #0:
Bus-dependent information:
vendor id: 8086, device id: 1237
PCI bus, device #1: Bridge Device (ISA) [6|1|0]
Current configuration:
1 configurations
Possible configuration #0:
Bus-dependent information:
vendor id: 8086, device id: 7000
PCI bus, device #2: Mass Storage Controller (IDE) [1|1|8a]
Current configuration: irqs [14][15]
io range: min 1f0 max 1f0 align 0 len 8
io range: min 3f4 max 3f4 align 0 len 4
io range: min 170 max 170 align 0 len 8
io range: min 374 max 374 align 0 len 4
io range: min d000 max d000 align 0 len 10
1 configurations
Possible configuration #0: irqs [14][15]
io range: min 1f0 max 1f0 align 0 len 8
io range: min 3f4 max 3f4 align 0 len 4
io range: min 170 max 170 align 0 len 8
io range: min 374 max 374 align 0 len 4
io range: min d000 max d000 align 0 len 10
Bus-dependent information:
vendor id: 8086, device id: 7010
PCI bus, device #3: Display Controller (VGA/8514) [3|0|0]
Current configuration: irq [10]
mem range: min 30387000 max 30387000 align 0 len 8000000
1 configurations
Possible configuration #0: irq [10]
mem range: min 30387000 max 30387000 align 0 len 8000000
Bus-dependent information:
vendor id: 80ee, device id: beef
PCI bus, device #4: NIC (Ethernet) [2|0|0]
Current configuration: irq [9]
io range: min d010 max d010 align 0 len 8
mem range: min f0000000 max f0000000 align 0 len 20000
1 configurations
Possible configuration #0: irq [9]
io range: min d010 max d010 align 0 len 8
mem range: min f0000000 max f0000000 align 0 len 20000
Bus-dependent information:
vendor id: 8086, device id: 1004
PCI bus, device #5: Generic System Peripheral (Other) [8|80|0]
Current configuration: irq [11]
io range: min d020 max d020 align 0 len 20
mem range: min f0400000 max f0400000 align 0 len 400000
mem range: min f0800000 max f0800000 align 0 len 4000
1 configurations
Possible configuration #0: irq [11]
io range: min d020 max d020 align 0 len 20
mem range: min f0400000 max f0400000 align 0 len 400000
mem range: min f0800000 max f0800000 align 0 len 4000
Bus-dependent information:
vendor id: 80ee, device id: cafe
PCI bus, device #6: Bridge Device (Other) [6|80|0]
Current configuration: irq [9]
1 configurations
Possible configuration #0: irq [9]
Bus-dependent information:
vendor id: 8086, device id: 7113</pre>
<p>Use of PCI and USB device databases helps identify some of the hardware, but there is stuff here that is harder to identify. Fortunately since this is a VM we know what some of the hardware should be.</p>
<h4 style="text-align: left;">sysinfo</h4>
<p>System information...</p>
<p>For the real hardware we get:</p>
<pre class="capturedOutput">$ sysinfo
Kernel name: kernel_intel built on: May 26 2000 12:27:12 version 0xf4249
1 WinChip C6 revision 0541 running at 200MHz (ID: 0x00000000 0x00000000)
CPU #0: CentaurHauls
type 0, family 5, model 4, stepping 1, features 0x008000b5
197693440 bytes free (used/max 70742016 / 268435456)
13189 semaphores free (used/max 3195 / 16384)
3978 threads free (used/max 118 / 4096)
999 teams free (used/max 25 / 1024)</pre>
<p>So some information about the processor (an IDT WinChip C6 200MHz), and the system memory (256 MiB).</p>
<p>For the VM things are a little less clear:</p>
<pre class="capturedOutput">$ sysinfo
Kernel name: kernel_intel built on: May 26 2000 12:27:12 version 0xf4249
1 (unknown) revision 06e5 running at 1714MHz (ID: 0x00000000 0x00000000)
CPU #0: GenuineIntel
type 0, family 6, model 14, stepping 5, features 0x178bfbbf
Unknown cache descriptor 0x5a
Data TLB: 4k-Byte Pages, 4-way set associative, 64 entries
Unknown cache descriptor 0x55
Unknown cache descriptor 0xe4
Unknown cache descriptor 0xb2
Unknown cache descriptor 0xf0
Unknown cache descriptor 0x2c
Unknown cache descriptor 0x21
Unknown cache descriptor 0xca
Unknown cache descriptor 0x09
Serial number: 0001-06E5-0000-0000-0000-0000
470630400 bytes free (used/max 66240512 / 536870912)
13971 semaphores free (used/max 2413 / 16384)
3999 threads free (used/max 97 / 4096)
1004 teams free (used/max 20 / 1024)</pre>
<p>The processor information is a bit messed up, but the memory information looks right (512 MiB).</p>
<p>Since BeOS 5 is from 2000, it is not surprising that it has difficulty with the CPUID (<a href="https://en.wikipedia.org/wiki/CPUID">Wikipedia</a>) information from the 2009 Intel i7-860 (<a href="https://ark.intel.com/content/www/us/en/ark/products/41316/intel-core-i7-860-processor-8m-cache-2-80-ghz.html">Intel Core i7860 Processor 8M Cache 2.80 GHz Product Specifications</a>). While a CPUID fix from 2005 is installed, it does not appear to expose the extended CPUID information used by this processor. This explains how the expected CPUID information of: family 6 (0x006), model 30 (0x1E), and stepping 5 (0x5), is reported as: family 6 (0x6), model 14 (0xE), stepping 5 (0x5).</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>For the emulated machine an obvious question is, how well does it perform compared to the real thing? To find out we're going to need a benchmark.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>Real hardware: IDT WinChip C6 200 MHz</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 107168 md5's in 2846.20s
Doing md5 for 3s on 64 size blocks: 95346 md5's in 2808.50s
Doing md5 for 3s on 256 size blocks: 71313 md5's in 2795.40s
Doing md5 for 3s on 1024 size blocks: 36096 md5's in 2820.29s
Doing md5 for 3s on 8192 size blocks: 6310 md5's in 2791.43s
OpenSSL 0.9.7j 04 May 2006
built on: Sun May 14 16:17:08 CEST 2006
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_SYSNAME_BEOS -fPIC -DPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_BEOS -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
available timing options: TIMES TIMEB HZ=1000 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 602.45 2172.74 6530.77 13.11k 18.52k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 562 512 bit private RSA's in 9328.29s
Doing 512 bit public rsa's for 10s: 6445 512 bit public RSA's in 9345.04s
Doing 1024 bit private rsa's for 10s: 113 1024 bit private RSA's in 9346.39s
Doing 1024 bit public rsa's for 10s: 2241 1024 bit public RSA's in 9344.92s
Doing 2048 bit private rsa's for 10s: 20 2048 bit private RSA's in 9845.24s
Doing 2048 bit public rsa's for 10s: 681 2048 bit public RSA's in 9378.28s
Doing 4096 bit private rsa's for 10s: 3 4096 bit private RSA's in 9751.98s
Doing 4096 bit public rsa's for 10s: 193 4096 bit public RSA's in 9380.68s
OpenSSL 0.9.7j 04 May 2006
built on: Sun May 14 16:17:08 CEST 2006
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_SYSNAME_BEOS -fPIC -DPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_BEOS -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
available timing options: TIMES TIMEB HZ=1000 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 16.598374s 1.449967s 0.1 0.7
rsa 1024 bits 82.711442s 4.169977s 0.0 0.2
rsa 2048 bits 492.261950s 13.771335s 0.0 0.1
rsa 4096 bits 3250.659000s 48.604560s 0.0 0.0</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p><ul>
<li>OpenSSL speed MD5 8,192 bytes: 18.52k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.0</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 0.0</li>
</ul>
<p>Hmmm... this looks a bit on the slow side... what about in the VM.</p>
<p>VirtualBox VM on an Intel i7 860 2.80 GHz</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 4579176 md5's in 2824.00s
Doing md5 for 3s on 64 size blocks: 3988617 md5's in 2839.21s
Doing md5 for 3s on 256 size blocks: 2814488 md5's in 2826.80s
Doing md5 for 3s on 1024 size blocks: 1311622 md5's in 2838.56s
Doing md5 for 3s on 8192 size blocks: 216074 md5's in 2837.72s
OpenSSL 0.9.7j 04 May 2006
built on: Sun May 14 16:17:08 CEST 2006
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_SYSNAME_BEOS -fPIC -DPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_BEOS -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
available timing options: TIMES TIMEB HZ=1000 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 25.94k 89.91k 254.88k 473.16k 623.77k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 26442 512 bit private RSA's in 9425.71s
Doing 512 bit public rsa's for 10s: 312877 512 bit public RSA's in 9435.73s
Doing 1024 bit private rsa's for 10s: 5444 1024 bit private RSA's in 9435.00s
Doing 1024 bit public rsa's for 10s: 108652 1024 bit public RSA's in 9430.70s
Doing 2048 bit private rsa's for 10s: 918 2048 bit private RSA's in 9434.73s
Doing 2048 bit public rsa's for 10s: 32469 2048 bit public RSA's in 9449.11s
Doing 4096 bit private rsa's for 10s: 138 4096 bit private RSA's in 9455.03s
Doing 4096 bit public rsa's for 10s: 9261 4096 bit public RSA's in 9465.28s
OpenSSL 0.9.7j 04 May 2006
built on: Sun May 14 16:17:08 CEST 2006
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_SYSNAME_BEOS -fPIC -DPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_BEOS -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
available timing options: TIMES TIMEB HZ=1000 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 0.356467s 0.030158s 2.8 33.2
rsa 1024 bits 1.733101s 0.086797s 0.6 11.5
rsa 2048 bits 10.277485s 0.291019s 0.1 3.4
rsa 4096 bits 68.514710s 1.022058s 0.0 1.0</pre>
<p>Extracting the relevant figures:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 623.77k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.0</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 1.0</li>
</ul>
<p>As expected the i7 is faster, but the performance is still lower than expected.</p><p>Checking with other figures, both of the sample platforms are reporting about 1/1,000 of the expected values. This could be an implementation issue in BeOS or the version of OpenSSL, or it might be due to issues in the OpenSSL port to BeOS.</p>
<h3>Thoughts</h3>
<div>While BeOS is relatively dated it runs in a VM quite well, and offers an interesting option to play with alternative operating systems. For more serious work, the BeOS descendant <a href="https://www.haiku-os.org/">Haiku</a> would be a more appropriate option.</div>
<h3 style="text-align: left;">Further Sources</h3>
<div>More information can be found at:</div>
<ul>
<li><a href="https://learn.adafruit.com/build-a-bebox-with-beos-and-virtualbox">Overview | Build your own BeBox and run BeOS using Virtualbox | Adafruit Learning System</a></li>
<li><a href="https://www.haiku-os.org/docs/userguide/en/applications/list-cli-apps.html">List of commands</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-75335705926274930842021-07-25T22:43:00.005+01:002022-05-21T16:12:35.220+01:00HP-UX 11i v1 (32-bit PA-RISC) on QEMU - System Information<h3 style="text-align: left;">HP 9000 Family</h3>
<p style="text-align: left;">In the early 1980s <a href="https://www.hp.com/">Hewlett-Packard</a> (HP) introduced the HP 9000 family (<a href="https://en.wikipedia.org/wiki/HP_9000">Wikipedia</a>), the initial offerings were re-badges of existing workstation lines featuring machines based on the Motorola 68000 and HP FOCUS processors. In 1991 the HP 9000/700 series was introduced, based on HP's Precision Architecture RISC processor (HP-PA or PA-RISC) (<a href="https://en.wikipedia.org/wiki/PA-RISC">Wikipedia</a>). The earlier 32-bit PA-RISC 1.0 processors had appeared in HP's mainframe and server systems back in the mid-1980s, but this was the first appearance of PA-RISC in a workstation line, and used the improved PA-RISC 1.1 processors. This marked the final stage in the consolidation of HP's non-x86 computer lines on to a single processor architecture. In 1996 HP introduced its first systems using the 64-bit PA-RISC processors, including the HP Visualize C160 and C180 workstations (both model 9000/780).</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifHQk0Ok1ewEz6j1oCwQGPHbF0KqI1OMM1ajpg5llOgG8enuei4MQOGicASBi2Qm9Y4zgSidBER5EJMTn46Ex-Xiza90k7q1CZzIZnBcdrJT68wwSXd3neqPgL2f0kjOknFz7dP2oGwjc/s1036/QEMU_HP-UX_11i_logon_CDE.png" style="margin-left: 1em; margin-right: 1em;"><img alt="HP-UX 11i CDE logon screen in QEMU" border="0" data-original-height="829" data-original-width="1036" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifHQk0Ok1ewEz6j1oCwQGPHbF0KqI1OMM1ajpg5llOgG8enuei4MQOGicASBi2Qm9Y4zgSidBER5EJMTn46Ex-Xiza90k7q1CZzIZnBcdrJT68wwSXd3neqPgL2f0kjOknFz7dP2oGwjc/s320/QEMU_HP-UX_11i_logon_CDE.png" width="320" /></a></div>
<br />
<p style="text-align: left;">Other than some early systems, and some systems based on the acquired technologies from Apollo Computers (these could also run Apollo Domain/OS), the HP 9000 line shipped running versions of HP's UNIX operating system: HP-UX (<a href="https://en.wikipedia.org/wiki/HP-UX">Wikipedia</a>). Initially based on AT&T UNIX System III, and later UNIX System V, HP-UX was a major commercial UNIX from the 1980s through the 2000s. The rise of the open source UNIX-like operating systems and the market reception of Itanium (IA-64) servers would ultimately see HP-UX relegated to a maintenance role, with the last release being HP-UX 11i v3 in 2007, the last update in 2020, and support ending on PA-RISC in 2021 and on IA-64 in 2025.</p>
<h3 style="text-align: left;">QEMU</h3>
<p>Emulates a HP 9000/778/B160L , normally known as a HP Visualize B160L workstation (<a href="https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html">HP Visualize B132L, B160L, B180L PA-RISC Workstations - OpenPA.net</a>).</p>
<p>Emulated system specification:</p>
<ul style="text-align: left;">
<li>CPU: 1x PA-7300LC at 250 MHz (32-bit PA-RISC)</li>
<li>RAM: default 512 MiB, up to 3.0 GiB (hardware supported up to 1.5 GiB)</li>
<li>Disk controller(s): SCSI C895 Fast Wide LVD (Symbios Logic 53c895 chipset)</li>
<li>Network controller(s): Ethernet (DEC Tulip 21142/43)</li>
<li>Graphics: HPA208LC1280 <i>aka.</i> Artist.</li>
</ul>
<p>Since the B160L is based on a 32-bit PA-RISC 1.1 processor, the latest version of HP-UX that can be used is HP-UX 11i v1 (see <a href="https://www.openpa.net/hp-ux_unix.html">HP-UX Unix Operating System for PA-RISC - OpenPA.net</a>), later versions only support 64-bit PA-RISC and Itanium systems.</p>
<span><a name='more'></a></span>
<h4 style="text-align: left;">QEMU Command</h4>
<p style="text-align: left;">For the interested the QEMU command use to start the emulated machine is:</p>
<pre class="capturedOutput">qemu-system-hppa \
-m size=1024M \
-drive if=scsi,bus=0,index=6,file=${hd_disk},format=raw \
-net nic,model=tulip \
-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \
-global artist.width=1024 -global artist.height=768 \
-boot order=c \
-name 'HP-UX on HP B160L'</pre>
<p>This gives 1.0 GiB RAM, a DEC Tulip based ethernet card, and sets the graphic card to have 1024x768 output resolution. The port forwarding rules provide host/guest port mappings for using ssh.</p>
<h3 style="text-align: left;">System Information</h3>
<p>So let's see what we can discover about the system and if we can identify that it is running on QEMU.</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system name, release and version information.</p>
<pre class="capturedOutput">> uname -a
HP-UX qemuhpux B.11.11 U 9000/778 2006243326 unlimited-user license</pre>
<p>So "HP-UX" release "B.11.11", <i>aka.</i> 11i v1, version "U", on a "9000/778", <i>aka.</i> HP B160L, identified as "2006243326", with an "unlimited-user licence", and named "qemuhpux".</p>
<h4 style="text-align: left;">model</h4>
<p>Report the system model:</p>
<pre class="capturedOutput"># model
9000/778/B160L</pre>
<p>As expected the emulated system reports itself as a HP B160L, <i>aka.</i> HP 9000/778/B160L, workstation.</p>
<h4 style="text-align: left;">swlist - System Patches</h4>
<p>Also using the package manager (assuming the patches from the 2000s):</p>
<pre class="capturedOutput">> /usr/sbin/swlist -l bundle | grep 200
BUNDLE11i B.11.11.0306.1 Required Patch Bundle for HP-UX 11i, June 2003
FEATURE11-11 B.11.11.0209.5 Feature Enablement Patches for HP-UX 11i, Sept 2002
HWEnable11i B.11.11.0509.430 Hardware Enablement Patches for HP-UX 11i v1, September 2005
OnlineDiag B.11.11.16.09 HPUX 11.11 Support Tools Bundle, Sep 2005
</pre>
<p>So the most recent patches on this system are from 2005.</p>
<p>To get a list of individual patches use:</p>
<pre class="capturedOutput"># swlist -l product *,c=patch
# Initializing...
# Contacting target "qemuhpux.home"...
#
# Target: qemuhpux.home:/
#
PHCO_22958 1.0 set_parms
PHCO_23263 B.11.11.15 HP AutoRAID Manager cumulative patch
PHCO_24173 1.0 ups_mond(1M) cumulative patch
PHCO_25311 B.11.11.15 HP Array Manager/60 cumulative patch
PHCO_25831 1.0 SCSI Ultra160 driver Online Addition script
PHCO_26951 1.0 itemap support for FireGL graphics cards
PHCO_27100 1.0 HFS mkfs(1M) VxVM Rootability patch
PHCO_27101 1.0 mkboot(1M) VxVM Rootability patch
PHCO_27103 1.0 pre_init_rc enh for VxVM rootability
PHCO_27185 1.0 ioinitrc(1M) cumulative patch
PHCO_27758 1.0 gsp parser & DIMM labels
PHCO_28160 1.0 install fix for correct $PATH & rc.config.d
PHCO_28169 1.0 mksf(1M) cumulative patch
PHCO_28998 1.0 fbackup(1M),frecover(1M) cumulative patch
PHCO_29379 1.0 LVM commands cumulative patch
PHCO_30514 1.0 rad(1M) and hotplugd(1M) man page patch
PHCO_30598 1.0 cumulative SAM patch
PHCO_31878 1.0 nPar cmds cumulative patch,IOX,dual cpu
PHKL_23290 1.0 system_space.h header file patch
PHKL_23292 1.0 scsi_surface.h header file patch
PHKL_23293 1.0 assert.h header file patch
PHKL_23294 1.0 buf.h header file patch
PHKL_23295 1.0 debug.h header file patch
PHKL_23296 1.0 dnlc.h header file patch
PHKL_23297 1.0 io.h header file patch
PHKL_23298 1.0 ki_iface.h header file patch
PHKL_23299 1.0 pfdat.h header file patch
PHKL_23300 1.0 proc_debug.h header file patch
PHKL_23301 1.0 proc_iface.h header file patch
PHKL_23302 1.0 rw_lock.h header file patch
PHKL_23303 1.0 sem_alpha.h header file patch
PHKL_23304 1.0 sem_beta.h header file patch
PHKL_23305 1.0 sem_sync.h header file patch
PHKL_23306 1.0 sem_utl.h header file patch
PHKL_23307 1.0 spinlock.h header file patch
PHKL_23308 1.0 vas.h header file patch
PHKL_23309 1.0 vfd.h header file patch
PHKL_23310 1.0 vnode.h header file patch
PHKL_23311 1.0 inode.h header file patch
PHKL_23312 1.0 pci.h header file patch
PHKL_23314 1.0 spinlock.h header file patch
PHKL_23315 1.0 cpu.h header file patch
PHKL_23316 1.0 map.h header file patch
PHKL_23625 1.0 Fix initial clock sync for SD derivatives
PHKL_23666 1.0 SCSI IO Subsystem Cumulative Patch
PHKL_23810 1.0 Enable SCSI floppy for 64 bit computers
PHKL_23957 1.0 Boot panic (w/Fiber Ch. & Gig. Ethernet) fix
PHKL_24278 1.0 Softpower enablement for bladed servers
PHKL_25506 1.0 asyncio driver patch
PHKL_26269 1.0 Rock Ridge extension for ISO-9660
PHKL_26425 1.0 Cumulative DLKM module load/unload patch
PHKL_26743 1.0 LVM Cumulative Patch
PHKL_27096 1.0 VxVM,EMC,Psets&vPar,slpq1,earlyKRS
PHKL_27155 1.0 PA-8800 TLB optimization
PHKL_27177 1.0 VxVM boot support change for os loader
PHKL_27219 1.0 adjtime(2) support for cpu speeds over 1 GHz
PHKL_28025 1.0 Rock Ridge extension for ISO-9660
PHKL_28197 1.0 Cumulative USB Driver patch
PHKL_28569 1.0 INTRMIGR enabler, WSIO support patch
PHKL_28839 1.0 PA-8800 enablement, p2p_bcopy process hang
PHKL_29529 1.0 New audio h/w support + cumulative fixes
PHKL_29539 1.0 PDC_SCSI_PARMS,iCOD,vPars,IPMI,OLA/R
PHKL_29567 1.0 Doorbell Enablement in OLA/R subsystem.
PHKL_29651 1.0 HW enablement: AGP graphics card support
PHKL_29700 1.0 SD early dump,CDUMP,dump menu,dump messages
PHKL_30100 1.0 Psets,vPar,Xserver,T600 HPMC KRNG,early LPMC
PHKL_30105 1.0 remove mem module and LPMC syslog msgs
PHKL_30197 1.0 Psets, vPar, SLVM, Reboot Hangs, Serial Num
PHKL_30257 1.0 Fibre Channel Mass Storage Patch
PHKL_30446 1.0 Interrupt Migration EP
PHKL_30512 1.0 crash,vpars,timeout;SG TOC,nPar Config
PHKL_30992 1.0 MO 8k sector size;FIFO;Event Port;perf;shmem
PHKL_31227 1.0 PCI patch,boot-time HPMC,PCI-X,OLA/R,AGP
PHKL_31241 1.0 AGP, cumulative graphics, multicard
PHKL_32089 1.0 SCSI Ultra160 Cumulative Patch
PHKL_32090 1.0 SCSI IO Cumulative Patch
PHKL_32647 1.0 Extending Physical I/O Addressing
PHKL_33338 1.0 iCOD,vPars,IPMI,PDCnbcall,OLA/R AB,sx2000
PHKL_33339 1.0 I/O,vPar,CDUMP,IM perf,PCI-X perf,PCI-X 2.0
PHKL_33425 1.0 SCSI Tape (stape) cumulative
PHNE_23288 1.0 netmp.h socketvar.h unpcb.h header patch
PHNE_23289 1.0 mux4.h header file patch
PHNE_28799 1.0 100BT unified driver cumulative patch
PHNE_30463 1.0 Cumulative Mux and Pty Patch
PHNE_32396 1.0 LAN product cumulative patch
PHSS_22898 1.0 HP aC++ -AA runtime libraries (aCC A.03.30)
PHSS_25983 1.0 B1000/B2000/C3X00/J5X00/J6000/J7000 5.0 FW
PHSS_32939 B.11.11.29 Xserver cumulative patch </pre>
<p>Typically there will be a lot of these...</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System start-up message log (as root):</p>
<pre class="capturedOutput"># dmesg
Jul 25 20:58
No BTLB entries found for processor 0
NOTICE: nfs3_link(): File system was registered at index 3.
NOTICE: autofs_link(): File system was registered at index 6.
NOTICE: cachefs_link(): File system was registered at index 7.
1 graph3
8 bc
8/0 GSCtoPCI
8/0/0/0 c720
8/0/0/0.2 tgt
8/0/0/0.2.0 sdisk
8/0/0/0.6 tgt
8/0/0/0.6.0 sdisk
8/0/0/0.7 tgt
8/0/0/0.7.0 sctl
8/0/1/0 btlan
8/0/63 asio0
8/16 bus_adapter
8/16/4 asio0
8/16/0 CentIf
8/16/7 ps2
48 processor
63 memory
btlan: Invalid connection type in SROM, using MII_AUTOSENSE as default.
btlan: Initializing 10/100BASE-TX card at 8/0/1/0....
System Console is on the ITE
Logical volume 64, 0x3 configured as ROOT
Logical volume 64, 0x2 configured as SWAP
Logical volume 64, 0x2 configured as DUMP
Swap device table: (start & size given in 512-byte blocks)
entry 0 - major is 64, minor is 0x2; start = 0, size = 4194304
Dump device table: (start & size given in 1-Kbyte blocks)
entry 00000000 - major is 31, minor is 0x6000; start = 310112, size = 2097152
Starting the STREAMS daemons-phase 1
Create STCP device files
$Revision: vmunix: vw: -proj selectors: CUPI80_BL2000_1108 -c 'Vw for CUPI80_BL2000_1108 build' -- cupi80_bl2000_1108 'CUPI80_BL2000_1108' Wed Nov 8 19:05:38 PST 2000 $
Memory Information:
physical page size = 4096 bytes, logical page size = 4096 bytes
Physical: 1048576 Kbytes, lockable: 813644 Kbytes, available: 934848 Kbytes</pre>
<p>These kernel messages also appear in the system log (/var/adm/syslog/syslog.log), along with additional messages from system services.</p><p>The system map looks to have the available devices in the expected locations in the tree, and the 1.0 GiB memory is reported.</p>
<h4 style="text-align: left;">ioscan</h4>
<p>Scan and report I/O devices and hardware, kernel cached information can be displayed by using the -k option as a regular user.</p>
<pre class="capturedOutput"># ioscan
H/W Path Class Description
==================================================
bc
1 graphics Graphics
8 bc Pseudo Bus Converter
8/0 ba GSCtoPCI Bridge
8/0/0/0 ext_bus SCSI C895 Fast Wide LVD
8/0/0/0.2 target
8/0/0/0.2.0 disk QEMU QEMU CD-ROM
8/0/0/0.6 target
8/0/0/0.6.0 disk QEMU QEMU HARDDISK
8/0/0/0.7 target
8/0/0/0.7.0 ctl Initiator
8/0/1/0 lan HP PCI 10/100Base-TX Core
8/0/63 tty Built-in RS-232C
8/16 ba Core I/O Adapter
8/16/0 ext_bus Built-in Parallel Interface
8/16/4 tty Built-in RS-232C
8/16/7 ps2 Built-in Keyboard/Mouse
48 processor Processor
63 memory Memory</pre>
<p>The -f option can be used when running as root to get more information about kernel drivers:</p>
<pre class="capturedOutput"># ioscan -f
Class I H/W Path Driver S/W State H/W Type Description
=============================================================================
bc 0 root CLAIMED BUS_NEXUS
graphics 0 1 graph3 CLAIMED INTERFACE Graphics
bc 1 8 bc CLAIMED BUS_NEXUS Pseudo Bus Converter
ba 0 8/0 GSCtoPCI CLAIMED BUS_NEXUS GSCtoPCI Bridge
ext_bus 0 8/0/0/0 c720 CLAIMED INTERFACE SCSI C895 Fast Wide LVD
target 0 8/0/0/0.2 tgt CLAIMED DEVICE
disk 0 8/0/0/0.2.0 sdisk CLAIMED DEVICE QEMU QEMU CD-ROM
target 1 8/0/0/0.6 tgt CLAIMED DEVICE
disk 1 8/0/0/0.6.0 sdisk CLAIMED DEVICE QEMU QEMU HARDDISK
target 2 8/0/0/0.7 tgt CLAIMED DEVICE
ctl 0 8/0/0/0.7.0 sctl CLAIMED DEVICE Initiator
lan 0 8/0/1/0 btlan CLAIMED INTERFACE HP PCI 10/100Base-TX Core
tty 1 8/0/63 asio0 CLAIMED INTERFACE Built-in RS-232C
ba 1 8/16 bus_adapter CLAIMED BUS_NEXUS Core I/O Adapter
ext_bus 1 8/16/0 CentIf CLAIMED INTERFACE Built-in Parallel Interface
tty 0 8/16/4 asio0 CLAIMED INTERFACE Built-in RS-232C
ps2 0 8/16/7 ps2 CLAIMED INTERFACE Built-in Keyboard/Mouse
processor 0 48 processor CLAIMED PROCESSOR Processor
memory 0 63 memory CLAIMED MEMORY Memory</pre>
<p>The disk hardware shows the fingerprint of QEMU being the host environment.</p>
<h4 style="text-align: left;">print_manifest</h4>
<p>Display a system manifest. Requires the Ignite package to be installed.</p>
<pre class="capturedOutput"># /opt/ignite/bin/print_manifest
System Information
Your Hewlett-Packard computer has software installed and
configured as follows.
The system was created May 20, 2021, 17:24:40 EDT.
It was created with Ignite-UX revision C.6.3.324.
-------------------------------------------------------------
NOTE: You should retain this information for future reference.
-------------------------------------------------------------
System Hardware
Model: 9000/778/B160L
Main Memory: 1024 MB
Processors: 1
OS mode: 32 bit
HW capability: 32 bit
LAN hardware ID: 0x525400123456
Software ID: 2006243326
Keyboard Language: PS2_DIN_UK_English_Euro
Storage devices HW Path Interface
QEMU QEMU CD-ROM 8/0/0/0.2.0 SCSI C895 Fast Wide LVD
QEMU QEMU HARDDISK 12288 Mb 8/0/0/0.6.0 SCSI C895 Fast Wide LVD
I/O Interfaces
Class H/W Path Driver Description
graphics 1 graph3 Graphics
ext_bus 8/0/0/0 c720 SCSI C895 Fast Wide LVD
lan 8/0/1/0 btlan HP PCI 10/100Base-TX Core
tty 8/0/63 asio0 Built-in RS-232C
ext_bus 8/16/0 CentIf Built-in Parallel Interface
tty 8/16/4 asio0 Built-in RS-232C
ps2 8/16/7 ps2 Built-in Keyboard/Mouse
Installed Software
Your system was installed with HP-UX version B.11.11.
Your system has the following software products installed and
configured on the system disk drive(s).
Product Revision Description
100BaseT-00 B.11.11.01 EISA 100BaseT;Supptd HW=A4308B;SW=J2780BA
100BaseT-01 B.11.11.01 HP-PB 100BaseT;Supptd HW=A3495A;SW=J2759BA
B6848BA 1.4.gm.46.9 Ximian GNOME 1.4 GTK+ Libraries for HP-UX
B8465BA A.02.00.07 HP WBEM Services for HP-UX
B9073BA B.11.11.07.01.00.00HP-UX iCOD (Instant Capacity)
B9788AA 1.3.1.16.00 Java2 1.3 SDK for HP-UX
B9789AA 1.3.1.16.00 Java2 1.3 RTE for HP-UX
BUNDLE11i B.11.11.0306.1 Required Patch Bundle for HP-UX 11i, June 2003
Base-VXVM B.03.50.5 Base VERITAS Volume Manager Bundle 3.5 for HP-UX
CDE-ChineseS B.11.11.0412 Simplified Chinese CDE Environment
CDE-ChineseT B.11.11.0412 Traditional Chinese CDE Environment
CDE-English B.11.11.0412 English CDE Environment
CDE-French B.11.11.0412 French CDE Environment
CDE-German B.11.11.0412 German CDE Environment
CDE-Italian B.11.11.0412 Italian CDE Environment
CDE-Japanese B.11.11.0412 Japanese CDE Environment
CDE-Korean B.11.11.0412 Korean CDE Environment
CDE-Spanish B.11.11.0412 Spanish CDE Environment
CDE-Swedish B.11.11.0412 Swedish CDE Environment
FDDI-00 B.11.11.02 PCI FDDI;Supptd HW=A3739A/A3739B;SW=J3626AA
FEATURE11-11 B.11.11.0209.5 Feature Enablement Patches for HP-UX 11i, Sept 2002
FibrChanl-00 B.11.11.12 PCI/HSC FibreChannel;Supptd HW=A6684A,A6685A,A5158A,A6795A
GigEther-00 B.11.11.19 PCI/HSC GigEther;Supptd HW=A4926A/A4929A/A4924A/A4925A;SW=J1642AA
HPUXBase32 B.11.11 HP-UX 32-bit Base OS
HPUXBaseAux B.11.11.0509 HP-UX Base OS Auxiliary
HWEnable11i B.11.11.0509.430 Hardware Enablement Patches for HP-UX 11i v1, September 2005
ISEEPlatform A.03.95.021 ISEE Platform
J4269AA B.04.00.02 LDAP-UX Integration
Java15JDK 1.5.0.01.01 Java 1.5 JDK for HP-UX
Java15JDKadd 1.5.0.01.01 Java 1.5 JDK -AA addon for HP-UX
Java15JRE 1.5.0.01.01 Java 1.5 JRE for HP-UX
Java15JREadd 1.5.0.01.01 Java 1.5 JRE -AA addon for HP-UX
MOZILLA 1.7.8.00.00 Mozilla 1.78 for HP-UX
MOZILLAsrc 1.7.8.00.00 Mozilla 1.78 Source distribution
NPar B.11.11.01.04.01.01nPartition Provider - HP-UX
NParCmds A.01.02 Enhanced NPartition Commands
OnlineDiag B.11.11.16.09 HPUX 11.11 Support Tools Bundle, Sep 2005
OpenSSL A.00.09.07e.012 Secure Network Communications Protocol
ParMgr B.11.11.02.00.05.03Partition Manager - HP-UX
SysMgmtWeb A.2.2.0.4 HP-UX Web Based System Management User Interfaces
T1455AA 1.3.1.16.00 Java2 1.3 Mozilla Plugin for HP-UX
T1456AA 1.4.2.09.02 Java2 1.4 SDK for HP-UX
T1456AAaddon 1.4.2.09.02 Java2 1.4 SDK -AA addon for HP-UX
T1457AA 1.4.2.09.02 Java2 1.4 RTE for HP-UX
T1457AAaddon 1.4.2.09.02 Java2 1.4 RTE -AA addon for HP-UX
T1458AA 1.4.2.09.02 Java2 1.4 Netscape Plugin for HP-UX
T1471AA A.04.00.002 HP-UX Secure Shell
hpuxwsApache A.2.0.54.01 HP-UX Apache-based Web Server
hpuxwsTomcat A.5.5.9.01 HP-UX Tomcat-based Servlet Engine
hpuxwsWebmin A.1.070.04 HP-UX Webmin-based Admin
hpuxwsXml A.2.00 HP-UX XML Web Server Tools
perl D.5.8.3.B Perl Programming Language
vparprovider B.11.11.01.01 vPar Provider - HP-UX
LVM File System Configuration
This system is configured with Logical Volume Manager (LVM) file systems.
Refer to the File System layout section for information on the LVM layout.
JFS File System Configuration
This system is configured with a Journaled File System (referred to
as either JFS or VXFS). Refer to the File System layout section for
information on JFS/VXFS file systems.
Disk layout
LVM disk Device file HW Addr size vol. grp
QEMU QEMU HARDDISK /dev/dsk/c0t6d0 8/0/0/0.6.0 12288 /dev/vg00
File System layout
LVM Device file mount point size fs type
/dev/vg00:
/dev/vg00/lvol1 /stand 300 hfs
/dev/vg00/lvol2 swap 2048
/dev/vg00/lvol3 / 200 vxfs
/dev/vg00/lvol4 /tmp 200 vxfs
/dev/vg00/lvol5 /home 20 vxfs
/dev/vg00/lvol6 /opt 2432 vxfs
/dev/vg00/lvol7 /usr 2228 vxfs
/dev/vg00/lvol8 /var 2548 vxfs
/dev/vg00 unallocated 2304
Swap configuration
type size priority device/location
dev 2048 1 /dev/vg00/lvol2
Kernel Configuration
The following drivers or parameters are configured into your system's
kernel. After installing HP-UX, use the sam(1m) command to configure
the following items into the kernel:
default_disk_ir 1
STRMSGSZ 65535
nstrpty 60
maxswapchunks 1024
System Information
The following parameters were set on the configured target:
hostname: qemuhpux.home
IP address: 10.0.2.15
subnet mask: 255.255.255.0
gateway IP address: 10.0.2.2
time zone: GMT0BST
DNS domain name: home
DNS IP address: 10.0.2.3
DNS IP address: 192.168.1.254</pre>
<p>Tons of information here, including the QEMU fingerprint on the disk drive hardware information.</p>
<h4 style="text-align: left;">cstm</h4>
<p>The console version of the Support Tools Manager. Here a little script is used to log the reported information to a file:</p>
<pre class="capturedOutput">> echo 'map selall info; wait infolog' | cstm > cstm_info.log</pre>
<p>Then looking at the output:</p>
<pre class="capturedOutput">> more cstm_info.log
Running Command File (/usr/sbin/stm/ui/config/.stmrc).
-- Information --
Support Tools Manager
Version A.49.10
Product Number B4708AA
(C) Copyright Hewlett Packard Co. 1995-2005
All Rights Reserved
Use of this program is subject to the licensing restrictions described
in "Help-->On Version". HP shall not be liable for any damages resulting
from misuse or unauthorized use of this program.
cstm>map selall info; wait infolog
qemuhpux.home
Dev Last Last Op
Num Path Product Active Tool Status
=== ==================== ========================= =========== =============
1 1 Graphics Interface (Artis Information Warning
2 8 Bus Adapter (504) Information Successful
3 8/0 PCI Bus Adapter (680) Information Successful
4 8/0/0/0 PCI SCSI Interface (10000 Information Successful
5 8/0/0/0.2.0 Optical Storage Device (Q Information Warning
6 8/0/0/0.6.0 SCSI Disk (QEMUQEMU) Information Incomplete
7 8/0/1/0 Core PCI 100BT Interface Information Successful
8 8/0/63 RS-232 Interface (220008a Information Successful
9 8/16 Core I/O Adapter (3d) Information Successful
10 8/16/0 Centronics Interface (3d) Information Successful
11 8/16/4 RS-232 Interface (3d) Information Successful
12 8/16/7 Built-in Keyboard/Mouse ( Information Successful
13 48 CPU (502) Information Successful
14 63 MEMORY (67) Information Successful
-- Converting multiple raw log files to text. --
Preparing the Information Tool Log for each selected device...
.... qemuhpux.home : 10.0.2.15 ....
-- Information Tool Log for Graphics Interface on path 1 --
Log creation time: Fri May 21 13:07:08 2021
Hardware path: 1
Model: Not Available
Product Number: Not Available
Use the "graphinfo" command for more information.
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Bus Adapter on path 8 --
Log creation time: Fri May 21 13:07:07 2021
Hardware path: 8
Product ID: Bus Adapter
Hardware Path: 8
Module Type: Bus Converter Port
Hardware Model: 0x504
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0
Software Option: 0
Hard Physical Address: 0xffc00000
Slot Number: 0
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for PCI Bus Adapter on path 8/0 --
Log creation time: Fri May 21 13:07:07 2021
Hardware path: 8/0
Product ID: PCI Bus Adapter
Hardware Path: 8/0
Module Type: Foreign Bus Bridge
Hardware Model: 0x680
Hardware Revision Number: 0x3
Software Revision Number: 0
Software Model Number: 0xa
Software Option: 0
Hard Physical Address: 0xfff80000
Slot Number: 0
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for PCI SCSI Interface on path 8/0/0/0 --
Log creation time: Fri May 21 13:07:12 2021
Hardware path: 8/0/0/0
Product ID: PCI SCSI Interface
Device ID: 0x0012
Revision ID 0000
Vendor ID: 0x1000 ( Symbios Logic Inc.)
Class Code: 0x010000
Base Class: 0x01 ( Mass Storage Controller. )
Sub-Class/Interface: 00/00 ( SCSI bus controller )
Device Status: 0000
Subsystem ID: 0x1000
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Optical Storage Device on path 8/0/0/0.2.0 --
Log creation time: Fri May 21 13:07:13 2021
Hardware path: 8/0/0/0.2.0
Product Id: QEMU CD-ROM Vendor: QEMU
Device Type: Optical Storage Device Firmware Rev: 2.5+
Device Qualifier: QEMUQEMU Logical Unit: 0
Serial Number: N/A
Capacity (M Byte): N/A
Block Size: N/A
Max Block Address: N/A
Error Logs
Read Errors: N/A Buffer Overruns: N/A
Read Reverse Errors: N/A Buffer Underruns: N/A
Write Errors: N/A Non-Medium Errors: N/A
Verify Errors: N/A
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for SCSI Disk on path 8/0/0/0.6.0 --
Log creation time: Fri May 21 13:07:14 2021
Hardware path: 8/0/0/0.6.0
The selected device is not supported by this tool.
Inaccurate information could be displayed by the tool.
Product Id: QEMU HARDDISK Vendor: QEMU
Device Type: SCSI Disk Firmware Rev: 2.5+
Device Qualifier: QEMUQEMU Logical Unit: 0
Serial Number: N/A
Capacity (M Byte): 12288.00
Block Size: 512
Max Block Address: 25165823
Error Logs
Total Retries: N/A Buffer Overruns: N/A
Read Reverse Errors: N/A Buffer Underruns: N/A
Write Errors: N/A Non-Medium Errors: N/A
Verify Errors: N/A
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Core PCI 100BT Interface on path 8/0/1/0 --
Log creation time: Fri May 21 13:07:19 2021
Hardware path: 8/0/1/0
Product ID: Core PCI 100BT Interface
Device ID: 0x0019
Revision ID 0000
Vendor ID: 0x1011 ( Digital Equipment Corporation )
Class Code: 0x020000
Base Class: 0x02 ( Network Controller. )
Sub-Class/Interface: 00/00 ( Ethernet controller )
Device Status: 0000
Subsystem Vendor ID: 0x103c
Subsystem ID: 0x104f
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for RS-232 Interface on path 8/0/63 --
Log creation time: Fri May 21 13:07:19 2021
Hardware path: 8/0/63
Product ID: RS-232 Interface
Hardware Path: 8/0/63
Module Type: Foreign I/O Module
Hardware Model: 0x22
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0x8c
Software Option: 0
Slot Number: 0
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Core I/O Adapter on path 8/16 --
Log creation time: Fri May 21 13:07:21 2021
Hardware path: 8/16
Product ID: Core I/O Adapter
Hardware Path: 8/16
Module Type: Bus Adapter
Hardware Model: 0x3d
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0x81
Software Option: 0
Hard Physical Address: 0xffd00000
Soft Physical Address: 0xffd0c000
Slot Number: 0
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Centronics Interface on path 8/16/0 --
Log creation time: Fri May 21 13:07:22 2021
Hardware path: 8/16/0
Product ID: Centronics Interface
Hardware Path: 8/16/0
Module Type: Foreign I/O Module
Hardware Model: 0x3d
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0x74
Software Option: 0
Hard Physical Address: 0xffd02000
Soft Physical Address: 0xffd01000
Slot Number: 0
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for RS-232 Interface on path 8/16/4 --
Log creation time: Fri May 21 13:07:25 2021
Hardware path: 8/16/4
Product ID: RS-232 Interface
Hardware Path: 8/16/4
Module Type: Foreign I/O Module
Hardware Model: 0x3d
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0x8c
Software Option: 0
Hard Physical Address: 0xffd05000
Slot Number: 1
IODC Revision: 0x1
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for Built-in Keyboard/Mouse on path 8/16/7 --
Log creation time: Fri May 21 13:07:25 2021
Hardware path: 8/16/7
Product ID: Built-in Keyboard/Mouse
Hardware Path: 8/16/7
Module Type: Foreign I/O Module
Hardware Model: 0x3d
Hardware Revision Number: 0
Software Revision Number: 0
Software Model Number: 0x84
Software Option: 0
Hard Physical Address: 0xffd08000
Slot Number: 2
IODC Revision: 0
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for CPU on path 48 --
Log creation time: Fri May 21 13:07:29 2021
Hardware path: 48
Product ID: CPU Module Type: 0
Hardware Model: 0x502 Software Model: 0x4
Hardware Revision: 0 Software Revision: 0
Hardware ID: 0 Software ID: 2006243326
Boot ID: 0x2020202 Software Option: 0x81
Processor Number: 0 Path: 48
Hard Physical Address: 0xfffb0000 Soft Physical Address: 0
Slot Number: 12 Software Capability: 0x100000f0
PDC Firmware Revision: 0.8 IODC Revision: 0
Instruction Cache [Kbyte]: 0 Processor Speed: N/A
Processor State: Active
Data Cache [Kbyte]: 0
Instruction TLB [entry]: 256 Processor Chip Revisions: 35
Data TLB Size [entry]: 256 2nd Level Cache Size:[KB] N/A
Serial Number: N/A
Processor PIM Information: Not Supported by this computer system
=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=-+-=
-- Information Tool Log for MEMORY on path 63 --
Log creation time: Fri May 21 13:07:29 2021
Hardware path: 63
Basic Memory Description
Module Type: MEMORY
Total Physical Memory : 0 MB
Total Configured Memory : 0 MB
Page Size: 4096 Bytes
Memory interleaving is not supported on this machine.
Memory Board Inventory
Total Phys Configured Disabled
Board Size (MB) Total (MB) Total (MB)
------------ ---------- ---------- ----------
---------- ---------- ----------
System Total: 0 0 0
Memory Controller Inventory
Hard Hardware Hardware Software Software
Physical Model Revision Model Revision Software IODC
Address Number Number Number Number Option Revision
---------- -------- -------- -------- -------- -------- --------
0xfffbf000 0x67 0 0x9 0 0 0
Bank Inventory
Inter
Log. Phys Size leave
Bank Bank Board (MB) Disabled? SPA Range (Hex) Group
---- ---- ------------ ---- --------- --------------------- -----
Memory interleaving is not supported on this machine.
SPA - Page Map
SPA Range (Hex) Corresponding Pages
--------------------- --------------------------
Memory Error Log Summary
The memory error log is empty.
Page Deallocation Table (PDT)
This machine is not designed to have a Page Deallocation Table.
-- Information Tool Log for each selected device --
View - To View the file.
Print - To Print the file.
SaveAs - To Save the file.
Enter Done, Help, Print, SaveAs, or View: [Done] #.</pre>
<p>STM reports quite a bit of information on the devices, and again we see the QEMU fingerprint. The memory information looks a bit strange here, but the system is managing to see and use the memory.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>So how does this machine perform?</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). Based on recorded results found online, the PA7300LC used in the B160L typically gives BogoMips results that are about equal to the processor clock speed (in MHz). So on a real HP Visualize B160L, which has a PA7300LC running at 160 Mhz, the expected BogoMips is around 160.</p>
<p>So what are the scores from the standalone BogoMips program:</p>
<pre class="capturedOutput">Calibrating delay loop.. ok - 68.00 BogoMips
Calibrating delay loop.. ok - 58.00 BogoMips
Calibrating delay loop.. ok - 62.00 BogoMips
Calibrating delay loop.. ok - 62.00 BogoMips
Calibrating delay loop.. ok - 64.00 BogoMips</pre>
<p>So taking the median as the score, that would be 62.00 BogoMips. Taking the upper figure into account, the processor clock speed equivalent looks to be approx. 70.0 MHz.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>First Message Digest 5 (MD5) (<a href="https://en.wikipedia.org/wiki/MD5">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 62187 md5's in 2.72s
Doing md5 for 3s on 64 size blocks: 57001 md5's in 2.80s
Doing md5 for 3s on 256 size blocks: 47295 md5's in 2.58s
Doing md5 for 3s on 1024 size blocks: 40640 md5's in 2.82s
Doing md5 for 3s on 8192 size blocks: 13118 md5's in 2.71s
OpenSSL 0.9.7e 25 Oct 2004
built on: Tue Jan 25 15:26:40 IST 2005
options:bn(64,32) md2(int) rc4(ptr,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)
compiler: cc +Z -DZLIB -DOPENSSL_THREADS -DDSO_DL -DOPENSSL_NO_KRB5 -DOPENSSL_NO_RC5 -DOPENSSL_NO_IDEA +DA1.1 -Wl,+nodefaultrpath -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O1 -z
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 365.81k 1302.88k 4692.84k 14757.22k 39654.12k</pre>
<p>And then RSA (Rivest–Shamir–Adleman) (<a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 40 512 bit private RSA's in 9.10s
Doing 512 bit public rsa's for 10s: 422 512 bit public RSA's in 9.06s
Doing 1024 bit private rsa's for 10s: 7 1024 bit private RSA's in 9.60s
Doing 1024 bit public rsa's for 10s: 123 1024 bit public RSA's in 9.10s
Doing 2048 bit private rsa's for 10s: 2 2048 bit private RSA's in 17.73s
Doing 2048 bit public rsa's for 10s: 34 2048 bit public RSA's in 9.12s
Doing 4096 bit private rsa's for 10s: 1 4096 bit private RSA's in 61.75s
Doing 4096 bit public rsa's for 10s: 9 4096 bit public RSA's in 8.68s
OpenSSL 0.9.7e 25 Oct 2004
built on: Tue Jan 25 15:26:40 IST 2005
options:bn(64,32) md2(int) rc4(ptr,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx)
compiler: cc +Z -DZLIB -DOPENSSL_THREADS -DDSO_DL -DOPENSSL_NO_KRB5 -DOPENSSL_NO_RC5 -DOPENSSL_NO_IDEA +DA1.1 -Wl,+nodefaultrpath -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O1 -z
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 0.2275s 0.0215s 4.4 46.6
rsa 1024 bits 1.3714s 0.0740s 0.7 13.5
rsa 2048 bits 8.8650s 0.2682s 0.1 3.7
rsa 4096 bits 61.7500s 0.9644s 0.0 1.0</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 39,654.12k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.0</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 1.0</li>
</ul>
<p>These provide a rough idea of computational workload performance for this particular machine.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>The QEMU PA-RISC emulation can run HP-UX, and appears suitable for hobbyist usage. Single processor performance seems to be a little on the low side, but the emulated system does support the use of multiple processors which helps with multi-process or multi-threaded workloads.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul>
<li><a href="https://www.openpa.net/">Independent PA-RISC and Itanium technical resource - OpenPA.net</a></li>
<li><a href="https://astr0baby.wordpress.com/2019/04/28/running-hp-ux-11-11-on-qemu-system-hppa/">Running HP-UX 11.11 on qemu-system-hppa | Astr0baby's not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://silo.tips/download/patch-management-user-guide-for-hp-ux-11x-systems">[PDF] Patch Management User Guide for HP-UX 11.x Systems - Free Download PDF</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-85084824311971115882021-07-05T08:03:00.006+01:002022-05-21T15:58:23.828+01:00Linux for PA-RISC (32-bit) on QEMU - System Information<h3 style="text-align: left;">HP PA-RISC</h3>
<p>In the mid-1980s <a href="https://www.hp.com/">Hewlett-Packard</a> (HP) introduced the first version of its Precision Architecture RISC processor (HP-PA or PA-RISC) (<a href="https://en.wikipedia.org/wiki/PA-RISC">Wikipedia</a>) in its mainframe and server product lines. In 1991 the HP 9000/700 series was introduced based on the improved PA-RISC 1.1 processors. In 1996 HP introduced its first systems using the 64-bit PA-RISC 2.0 processors, including the HP Visualize C160 and C180 workstations (both model 9000/780).</p><p>In the 1990s PA-RISC was one of the main RISC processors seen in UNIX workstations, along with AXP Alpha, PowerPC/POWER, SPARC and MIPS. The phasing out of the PA-RISC systems, in favor of Itanium (IA-64) based HP Integrity systems (<a href="https://en.wikipedia.org/wiki/HPE_Integrity_Servers">Wikipedia</a>) during the 2000s mean there is an interest in replacing ageing hardware with emulation options.</p>
<p>As well as the proprietary UNIX from HP (HP-UX), PA-RISC systems can also run the Linux, NetBSD and OpenBSD open source operating systems.</p>
<h3>Linux on PA-RISC</h3>
<p>The <a href="https://parisc.wiki.kernel.org/">Linux on PA-RISC project</a> added support for PA-RISC system starting with Linux 2.6, and the Debian and Gentoo Linux distributions have support for PA-RISC.</p><p>While official support for PA-RISC ended with Debian Linux 5 (lenny), the <a href="https://www.debian.org/ports/hppa/">Debian for PA-RISC</a> port does provide an un-official network installation CD image for the current release. However the current Debian Linux for PA-RISC ports repository is for Debian Linux "unstable" (sid), which can cause problems with installation.</p>
<p>For the purposes of this exploration I'm going to use the Debian Linux 5 (lenny) distribution DVD, this means the results presented here will be easily reproducible. For those curious about PA-RISC Debian Linux 10, there is a pre-made disk image at <a href="https://parisc.wiki.kernel.org/index.php/Qemu">Qemu - Linux PARISC Wiki</a> that might help.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">QEMU & HP-PA</h3>
<p>The HP-PA architecture is supported by the <a href="https://www.qemu.org/">QEMU</a> system emulator with an emulation of a system based on the 32-bit PA-RISC, HP Visualize B160L workstation.</p>
<h4 style="text-align: left;">HP Visualize B160L Specification</h4>
<p>Based on information from <a href="https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html">HP Visualize B132L, B160L, B180L PA-RISC Workstations - OpenPA.net</a></p>
<ul style="text-align: left;">
<li>CPU: PA7300LC at 160 MHz</li>
<li>RAM: 32 MiB to 1.5 GiB</li>
<li>Buses: GSC, EISA, PCI</li>
<li>SCSI controllers:
<ul>
<li>NCR 53c710 fast narrow SCSI</li>
<li>NCR 53c720 fast wide SCSI</li>
</ul>
</li>
<li>Network controller: Intel 82596CA 10 Mb/s Ethernet</li>
<li>Misc: 2 serial ports, 1 parallel port, 1 floppy controller</li>
</ul>
<p>Additional hardware may be present as expansion cards.</p>
<h4 style="text-align: left;">QEMU 'hppa' System</h4>
<p>The 'hppa' system emulated by QEMU has the default configuration:</p>
<ul style="text-align: left;">
<li>Firmware: SeaBIOS PA-RISC Firmware</li>
<li>CPU: 1 or more PA-RISC PA7300LC at 250 MHz</li>
<li>RAM: 512 MiB default, up to 3 GiB</li>
<li>Graphics: Artist</li>
<li>Misc: serial port, parallel port</li>
<li>PCI devices:</li>
<ul>
<li>SCSI controller: LSI 53c895a Ultra2 SCSI</li>
<li>Network controller: Digital DS21142/43 Tulip based 10/100 Mb/s ethernet</li>
</ul>
</ul>
<p>The PCI devices stand in for unimplemented mainboard devices, the missing devices are likely to be implemented at some point in the future.</p>
<h3 style="text-align: left;">Emulation Command</h3>
<p>For the curious the QEMU command used is:</p>
<pre class="capturedOutput">qemu-system-hppa \
--machine hppa \
-m size=1536M \
-hda hda_DebianLinux5_hppa.qcow2 \
-cdrom debian-5010-hppa-DVD-1.iso \
-net nic \
-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \
-vga none \
-boot order=cd \
-no-reboot \
-name 'Debian Linux 5 (lenny) on HP B160L'</pre>
<p>The port forwarding rules are to provide host/guest ssh routes while using user networking. and the graphics are disabled to force use of the serial console.</p>
<h3 style="text-align: left;">System Information</h3>
<p>Let's try some commands to see what we have...</p>
<h4 style="text-align: left;">uname</h4>
<p style="text-align: left;">Operating system information:</p>
<pre class="capturedOutput">$ uname -a
Linux qhp-deb5 2.6.26-2-parisc #1 Sun Mar 4 17:37:14 UTC 2012 parisc GNU/Linux</pre>
<p>So a "Linux" kernel, on a node named "qhp-deb5", kernel release "2.6.26-2-parisc", version "#1 Sun Mar 4 17:37:14 UTC 2012", on platform architecture "parisc", for operating system "GNU/Linux".</p>
<h4 style="text-align: left;">lsb_release</h4>
<p>Operating system distribution information:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0.10 (lenny)
Release: 5.0.10
Codename: lenny</pre>
<p>As expected for a Debian Linux 5 (lenny) release.</p>
<p>Required explicit installation of the 'lsb-release' package.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p style="text-align: left;">Processor information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
processor : 0
cpu family : PA-RISC 1.1e
cpu : PA7300LC (PCX-L2)
cpu MHz : 250.000000
model : 9000/778/B160L
model name : Merlin L2 160 (9000/778/B160L)
hversion : 0x00005020
sversion : 0x00000481
I-cache : 0 KB
D-cache : 0 KB (WB, 0-way associative)
ITLB entries : 256
DTLB entries : 256 - shared with ITLB
BTLB : not supported
bogomips : 976.89
software id : 2006243326</pre>
<p>As expected the machine is identified as a B160L, and the processor claims to be a PA7300LC at 250 MHz, the original B160L ran the processor at 160 MHz, but this may be an adjustment to handle differences in emulation performance. The BogoMips figure looks high... but we'll come back to this when looking a performance.</p>
<h4 style="text-align: left;">lspci</h4>
<p>Devices on the PCI bus:</p>
<pre class="capturedOutput">$ lspci -v
00:00.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a
Flags: bus master, fast devsel, latency 255, IRQ 19
I/O ports at 0100 [size=256]
Memory at f0802000 (32-bit, non-prefetchable) [size=1K]
Memory at f0800000 (32-bit, non-prefetchable) [size=8K]
Kernel driver in use: sym53c8xx
Kernel modules: sym53c8xx
00:01.0 Ethernet controller: Digital Equipment Corporation DECchip 21142/43
Subsystem: Hewlett-Packard Company Device 104f
Flags: bus master, fast devsel, latency 0, IRQ 20
I/O ports at 0080 [size=128]
Memory at f0803000 (32-bit, non-prefetchable) [size=128]
Kernel driver in use: tulip
Kernel modules: tulip
</pre>
<p>The system's emulated mainboard devices don't currently provide the SCSI controllers and ethernet adapter present on the B160L, so emulated PCI cards are used to provide the same functionality.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>A hardware report based on various commands:</p>
<pre class="capturedOutput">$ report-hw
umame -a: Linux qhp-deb5 2.6.26-2-parisc #1 Sun Mar 4 17:37:14 UTC 2012 parisc GNU/Linux
lspci -knn: 00:00.0 SCSI storage controller [0100]: LSI Logic / Symbios Logic 53c895a [1000:0012]
lspci -knn: Kernel driver in use: sym53c8xx
lspci -knn: Kernel modules: sym53c8xx
lspci -knn: 00:01.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019]
lspci -knn: Kernel driver in use: tulip
lspci -knn: Kernel modules: tulip
lsmod: Module Size Used by
lsmod: ipv6 324752 10
lsmod: isofs 37072 0
lsmod: udf 103892 0
lsmod: nls_base 7560 2 isofs,udf
lsmod: crc_itu_t 2024 1 udf
lsmod: loop 15860 0
lsmod: lasi_82596 24968 0
lsmod: ext3 154544 1
lsmod: jbd 52028 1 ext3
lsmod: sg 36600 0
lsmod: sr_mod 18988 0
lsmod: cdrom 41728 1 sr_mod
lsmod: sd_mod 31096 4
lsmod: tulip 58212 0
lsmod: sym53c8xx 84284 3
lsmod: zalon7xx 33108 0
lsmod: lasi700 2568 0
lsmod: 53c700 32688 1 lasi700
lsmod: scsi_transport_spi 28808 3 sym53c8xx,zalon7xx,53c700
lsmod: scsi_mod 169740 8 sg,sr_mod,sd_mod,sym53c8xx,zalon7xx,lasi700,53c700,scsi_transport_spi
lsmod: hilkbd 4120 0
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: /dev/sda5 3755460 484452 3080240 14% /
df: tmpfs 776364 0 776364 0% /lib/init/rw
df: udev 10240 500 9740 5% /dev
df: tmpfs 776364 0 776364 0% /dev/shm
df: /dev/sda2 120443 11922 102095 11% /boot
free: total used free shared buffers cached
free: Mem: 1552728 94720 1458008 0 7716 63400
free: -/+ buffers/cache: 23604 1529124
free: Swap: 216836 0 216836
/proc/cmdline: root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102 palo_kernel=2/vmlinux
/proc/cpuinfo: processor : 0
/proc/cpuinfo: cpu family : PA-RISC 1.1e
/proc/cpuinfo: cpu : PA7300LC (PCX-L2)
/proc/cpuinfo: cpu MHz : 250.000000
/proc/cpuinfo: model : 9000/778/B160L
/proc/cpuinfo: model name : Merlin L2 160 (9000/778/B160L)
/proc/cpuinfo: hversion : 0x00005020
/proc/cpuinfo: sversion : 0x00000481
/proc/cpuinfo: I-cache : 0 KB
/proc/cpuinfo: D-cache : 0 KB (WB, 0-way associative)
/proc/cpuinfo: ITLB entries : 256
/proc/cpuinfo: DTLB entries : 256 - shared with ITLB
/proc/cpuinfo: BTLB : not supported
/proc/cpuinfo: bogomips : 976.89
/proc/cpuinfo: software id : 2006243326
/proc/cpuinfo:
/proc/ioports: 00000000-0000ffff : Dino I/O Port
/proc/ioports: 00000080-000000ff : 0000:00:01.0
/proc/ioports: 00000080-000000ff : tulip
/proc/ioports: 00000100-000001ff : 0000:00:00.0
/proc/ioports: 00000100-000001ff : sym53c8xx
/proc/iomem: 00000000-5fffffff : System RAM
/proc/iomem: 00000000-000009ff : PDC data (Page Zero)
/proc/iomem: 00100000-0035cfff : Kernel code
/proc/iomem: 0035d000-00447fff : Kernel data
/proc/iomem: f0800000-ff7fffff : Dino LMMIO 0
/proc/iomem: f0800000-f0801fff : 0000:00:00.0
/proc/iomem: f0800000-f0801fff : sym53c8xx
/proc/iomem: f0802000-f08023ff : 0000:00:00.0
/proc/iomem: f0802000-f08023ff : sym53c8xx
/proc/iomem: f0803000-f080307f : 0000:00:01.0
/proc/iomem: f0803000-f080307f : tulip
/proc/iomem: ffc00000-ffc00fff : 8
/proc/iomem: ffd00000-ffd00fff : 8:16
/proc/iomem: ffd02000-ffd02fff : 8:16:0
/proc/iomem: ffd05000-ffd05fff : 8:16:4
/proc/iomem: ffd0c000-ffd0c000 : led_data
/proc/iomem: fff80000-fffaffff : Central Bus
/proc/iomem: fff80000-fff80fff : 8:0
/proc/iomem: fff80000-fff80fff : Dino
/proc/iomem: fff83000-fff83fff : 8:0:63
/proc/iomem: fff83800-fff83807 : serial
/proc/iomem: fffb0000-fffdffff : Local Broadcast
/proc/iomem: fffb0000-fffb0fff : 48
/proc/iomem: fffbf000-fffbffff : 63
/proc/iomem: fffe0000-ffffffff : Global Broadcast
/proc/interrupts: CPU0
/proc/interrupts: 18: 1295 GSC-PCI serial
/proc/interrupts: 19: 11207 GSC-PCI sym53c8xx
/proc/interrupts: 20: 36 GSC-PCI eth0
/proc/interrupts: 64: 286056 CPU timer
/proc/interrupts: 65: 0 CPU lasi
/proc/interrupts: 66: 13526 CPU Dino
/proc/meminfo: MemTotal: 1552728 kB
/proc/meminfo: MemFree: 1458132 kB
/proc/meminfo: Buffers: 7716 kB
/proc/meminfo: Cached: 63400 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 42528 kB
/proc/meminfo: Inactive: 39524 kB
/proc/meminfo: SwapTotal: 216836 kB
/proc/meminfo: SwapFree: 216836 kB
/proc/meminfo: Dirty: 60 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 10988 kB
/proc/meminfo: Mapped: 8392 kB
/proc/meminfo: Slab: 6072 kB
/proc/meminfo: SReclaimable: 3820 kB
/proc/meminfo: SUnreclaim: 2252 kB
/proc/meminfo: PageTables: 1180 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 993200 kB
/proc/meminfo: Committed_AS: 105292 kB
/proc/meminfo: VmallocTotal: 237504 kB
/proc/meminfo: VmallocUsed: 1624 kB
/proc/meminfo: VmallocChunk: 235208 kB</pre>
<p>Some glimpses of the core chipsets here and their devices. Also see the 1.5 GiB memory configured from the QEMU command-line.</p>
<h4 style="text-align: left;">lshw</h4>
<p>A hardware report showing device relationships:</p>
<pre class="capturedOutput"># lshw
system: 3f
start of directory: 83611648
length of directory: 72583168
lif version: 4f
tracks per surface: 808416877
number of surfaces: 1818848885
blocks per track: 2015390062
ipl addr: 77778944
ipl length: 36864
ipl entry point: 0
qhp-deb5
description: Merlin L2 160 (9000/778/B160L)
product: 9000/778/B160L
serial: 2006243326
width: 32 bits
*-core
description: Motherboard
physical id: 0
*-cpu
description: Processor
product: PA7300LC (PCX-L2)
physical id: 48
bus info: cpu@0
version: 1.1e
size: 250MHz
configuration: driver=CPU
*-memory
description: Memory
physical id: 63
bus info: parisc@63
size: 1536MiB
*-busconverter
description: Bus converter port
physical id: 8
bus info: parisc@8
*-pci
description: PCI Bridge
physical id: 0
bus info: parisc@8/0
version: 3
configuration: driver=dino
*-serial
description: RS-232 Serial Interface
physical id: 63
bus info: parisc@8/0/63
configuration: driver=serial
*-core
description: Core Bus
physical id: 16
bus info: parisc@8/16
configuration: driver=lasi
*-printer UNCLAIMED
description: Core Centronics Parallel interface
physical id: 0
bus info: parisc@8/16/0
*-serial
description: RS-232 Serial Interface
physical id: 4
bus info: parisc@8/16/4
configuration: driver=serial_1
*-scsi
description: SCSI storage controller
product: 53c895a
vendor: LSI Logic / Symbios Logic
physical id: 0
bus info: pci@0000:00:00.0
logical name: scsi0
version: 00
width: 32 bits
clock: 33MHz
capabilities: scsi bus_master scsi-host
configuration: driver=sym53c8xx latency=255 module=sym53c8xx
*-disk
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
size: 4GiB (4294MB)
capabilities: partitioned partitioned:dos
configuration: signature=d91a0500
*-volume:0
description: Linux/PA-RISC boot partition
physical id: 1
bus info: scsi@0:0.0.0,1
logical name: /dev/sda1
capacity: 31MiB
capabilities: primary boot
*-volume:1
description: Linux filesystem partition
vendor: Linux
physical id: 2
bus info: scsi@0:0.0.0,2
logical name: /dev/sda2
logical name: /boot
version: 1.0
serial: 79a0cd68-010a-41dc-8704-bc2554308a99
size: 125MiB
capacity: 125MiB
capabilities: primary large_files huge_files recover ext2 initialized
configuration: filesystem=ext2 modified=2021-06-28 14:28:59 mount.fstype=ext2 mount.options=rw,errors=continue mounted=2021-06-28 14:28:59 state=mounted
*-volume:2
description: Extended partition
physical id: 3
bus info: scsi@0:0.0.0,3
logical name: /dev/sda3
size: 3937MiB
capacity: 3937MiB
capabilities: primary extended partitioned partitioned:extended
*-logicalvolume:0
description: Linux filesystem partition
physical id: 5
logical name: /dev/sda5
logical name: /
capacity: 3725MiB
capabilities: bootable
configuration: mount.fstype=ext3 mount.options=rw,errors=remount-ro,data=ordered state=mounted
*-logicalvolume:1
description: Linux swap / Solaris partition
physical id: 6
logical name: /dev/sda6
capacity: 211MiB
capabilities: nofs
*-cdrom
description: DVD reader
physical id: 0.2.0
bus info: scsi@0:0.2.0
logical name: /dev/cdrom
logical name: /dev/dvd
logical name: /dev/scd0
logical name: /dev/sr0
capabilities: audio dvd bootable partitioned partitioned:lif
configuration: status=ready
*-network
description: Ethernet interface
product: DECchip 21142/43
vendor: Digital Equipment Corporation
physical id: 1
bus info: pci@0000:00:01.0
logical name: eth0
version: 00
serial: 52:54:00:12:34:56
width: 32 bits
clock: 33MHz
capabilities: bus_master ethernet physical
configuration: broadcast=yes driver=tulip driverversion=1.1.15-NAPI ip=10.0.2.15 latency=0 module=tulip multicast=yes</pre>
<p>The tree helps with seeing the GSC and PCI devices, although it looks like the emulated devices don't appear on the expected connections. For example the SCSI controller and ethernet adapter appear on the main "core" bus (presumably GSC+), rather than under the PCI bridge.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System log messages:</p>
<pre class="capturedOutput">$ dmesg
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.26-2-parisc (Debian 2.6.26-29) (dannf@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 Sun Mar 4 17:37:14 UTC 2012
[ 0.000000] FP[0] enabled: Rev 1 Model 19
[ 0.000000] The 32-bit Kernel has started...
[ 0.000000] console [ttyB0] enabled
[ 0.000000] Initialized PDC Console for debugging.
[ 0.000000] Determining PDC firmware type: System Map.
[ 0.000000] model 00005020 00000481 00000000 02020202 7794d7fe 100000f0 00000004 000000ba 000000ba
[ 0.000000] vers 00000023
[ 0.000000] CPUID vers 15 rev 8 (0x000001e8)
[ 0.000000] capabilities 0x2
[ 0.000000] model 9000/778/B160L
[ 0.000000] Total Memory: 1536 MB
[ 0.000000] initrd: 4f919000-4ffee54e
[ 0.000000] initrd: reserving 3f919000-3ffee54e (mem_max 60000000)
[ 0.000000] On node 0 totalpages: 393216
[ 0.000000] Normal zone: 3072 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 390144 pages, LIFO batch:31
[ 0.000000] Movable zone: 0 pages used for memmap
[ 0.000000] PDC reported no LCD or LED.
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 390144
[ 0.000000] Kernel command line: root=/dev/sda5 HOME=/ console=ttyS0 TERM=vt102 palo_kernel=2/vmlinux
[ 0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes)
[17179569.184000] Console: colour dummy device 160x64
[17179569.196000] Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes)
[17179569.204000] Inode-cache hash table entries: 131072 (order: 7, 524288 bytes)
[17179569.376000] Memory: 1545216k/1572864k available (1964k kernel code, 27360k reserved, 883k data, 224k init)
[17179569.380000] virtual kernel memory layout:
[17179569.380000] vmalloc : 0x00810000 - 0x0f000000 ( 231 MB)
[17179569.380000] memory : 0x10000000 - 0x70000000 (1536 MB)
[17179569.380000] .init : 0x10410000 - 0x10448000 ( 224 kB)
[17179569.380000] .data : 0x102eb0b0 - 0x103c8000 ( 883 kB)
[17179569.380000] .text : 0x10100000 - 0x102eb0b0 (1964 kB)
[17179569.384000] Calibrating delay loop... 976.89 BogoMIPS (lpj=1953792)
[17179569.468000] Security Framework initialized
[17179569.472000] SELinux: Disabled at boot.
[17179569.472000] Capability LSM initialized
[17179569.472000] Mount-cache hash table entries: 512
[17179569.484000] Initializing cgroup subsys ns
[17179569.484000] Initializing cgroup subsys cpuacct
[17179569.484000] Initializing cgroup subsys devices
[17179569.512000] net_namespace: 648 bytes
[17179569.516000] NET: Registered protocol family 16
[17179569.532000] EISA bus registered
[17179569.532000] Searching for devices...
[17179569.552000] Found devices:
[17179569.552000] 1. Phantom PseudoBC GSC+ Port at 0xffc00000 [8] { 7, 0x0, 0x504, 0x00000 }
[17179569.552000] 2. Dino PCI Bridge at 0xfff80000 [8/0] { 13, 0x3, 0x680, 0x0000a }
[17179569.552000] 3. Merlin+ 132 Dino RS-232 at 0xfff83000 [8/0/63] { 10, 0x0, 0x022, 0x0008c }
[17179569.552000] 4. Merlin 160 Core BA at 0xffd00000 [8/16] { 11, 0x0, 0x03d, 0x00081 }, additional addresses: 0xffd0c000 0xffc00000
[17179569.552000] 5. Merlin 160 Core RS-232 at 0xffd05000 [8/16/4] { 10, 0x0, 0x03d, 0x0008c }
[17179569.556000] 6. Merlin 160 Core Centronics at 0xffd02000 [8/16/0] { 10, 0x0, 0x03d, 0x00074 }, additional addresses: 0xffd01000 0xffd03000
[17179569.556000] 7. Merlin L2 160 (9000/778/B160L) at 0xfffb0000 [48] { 0, 0x0, 0x502, 0x00004 }
[17179569.556000] 8. Memory at 0xfffbf000 [63] { 1, 0x0, 0x067, 0x00009 }
[17179569.556000] Enabling regular chassis codes support v0.05
[17179569.560000] CPU(s): 1 x PA7300LC (PCX-L2) at 250.000000 MHz
[17179569.560000] Whole cache flush 7271 cycles, flushing 3440640 bytes 8746 cycles
[17179569.560000] Setting cache flush threshold to 0 (1 CPUs online)
[17179569.564000] Lasi version 0 at 0xffd00000 found.
[17179569.564000] LED display at ffd0c000 registered
[17179569.572000] Dino version 3.1 found at 0xfff80000
[17179569.592000] powersw: Soft power switch at 0xf07ffff0 enabled.
[17179569.656000] NET: Registered protocol family 2
[17179569.696000] IP route cache hash table entries: 65536 (order: 6, 262144 bytes)
[17179569.708000] TCP established hash table entries: 262144 (order: 9, 2097152 bytes)
[17179569.724000] TCP bind hash table entries: 65536 (order: 6, 262144 bytes)
[17179569.724000] TCP: Hash tables configured (established 262144 bind 65536)
[17179569.728000] TCP reno registered
[17179569.740000] NET: Registered protocol family 1
[17179569.752000] checking if image is initramfs... it is
[17179572.464000] Freeing initrd memory: 6997k freed
[17179572.468000] Enabling PDC chassis warnings support v0.05
[17179572.468000] unwind_init: start = 0x1035ee40, end = 0x10386210, entries = 10045
[17179572.468000] WARNING: Out of order unwind entry! 10360830 and 10360840
[17179572.468000] WARNING: Out of order unwind entry! 10360840 and 10360850
[17179572.476000] audit: initializing netlink socket (disabled)
[17179572.480000] type=2000 audit(1624886875.296:1): initialized
[17179572.492000] VFS: Disk quotas dquot_6.5.1
[17179572.492000] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[17179572.500000] msgmni has been set to 3032
[17179572.508000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[17179572.512000] io scheduler noop registered
[17179572.512000] io scheduler anticipatory registered
[17179572.512000] io scheduler deadline registered
[17179572.512000] io scheduler cfq registered (default)
[17179572.516000] PDC Stable Storage facility v0.30
[17179572.524000] STI GSC/PCI core graphics driver Version 0.9a
[17179572.600000] Generic RTC Driver v1.07
[17179572.600000] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[17179572.624000] 8:0:63: ttyS0 at MMIO 0xfff83800 (irq = 18) is a 16550A
[17179572.624000] console handover: boot [ttyB0] -> real [ttyS0]
[17179572.688000] brd: module loaded
[17179572.696000] mice: PS/2 mouse device common for all mice
[17179572.704000] TCP cubic registered
[17179572.704000] NET: Registered protocol family 17
[17179572.712000] registered taskstats version 1
[17179572.716000] Freeing unused kernel memory: 224k freed
[17179575.668000] SCSI subsystem initialized
[17179584.684000] sym53c8xx 0000:00:00.0: enabling SERR and PARITY (0107 -> 0147)
[17179584.688000] sym0: <895a> rev 0x0 at pci 0000:00:00.0 irq 19
[17179584.756000] Linux Tulip driver version 1.1.15-NAPI (Feb 27, 2007)
[17179584.796000] sym0: PA-RISC Firmware, ID 7, Fast-40, LVD, parity checking
[17179584.800000] sym0: SCSI BUS has been reset.
[17179584.812000] scsi0 : sym-2.2.3
[17179584.880000] tulip 0000:00:01.0: enabling SERR and PARITY (0103 -> 0143)
[17179584.884000] tulip0: EEPROM default media type Autosense.
[17179584.884000] tulip0: Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block.
[17179584.888000] tulip0: MII transceiver #1 config 3100 status 702c advertising 0501.
[17179584.888000] tulip0: Advertising 01e1 on PHY 1, previously advertising 0501.
[17179584.896000] eth0: Digital DS21142/43 Tulip rev 0 at MMIO 0xf0803000, 52:54:00:12:34:56, IRQ 20.
[17179585.272000] scsi: waiting for bus probes to complete ...
[17179587.820000] scsi 0:0:0:0: Direct-Access QEMU QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[17179587.824000] target0:0:0: tagged command queuing enabled, command queue depth 16.
[17179587.824000] target0:0:0: Beginning Domain Validation
[17179587.828000] target0:0:0: Domain Validation skipping write tests
[17179587.828000] target0:0:0: Ending Domain Validation
[17179587.836000] scsi 0:0:2:0: CD-ROM QEMU QEMU CD-ROM 2.5+ PQ: 0 ANSI: 5
[17179587.836000] target0:0:2: tagged command queuing enabled, command queue depth 16.
[17179587.836000] target0:0:2: Beginning Domain Validation
[17179587.840000] target0:0:2: Domain Validation skipping write tests
[17179587.840000] target0:0:2: Ending Domain Validation
[17179588.648000] Driver 'sd' needs updating - please use bus_type methods
[17179588.652000] sd 0:0:0:0: [sda] 8388608 512-byte hardware sectors (4295 MB)
[17179588.656000] sd 0:0:0:0: [sda] Write Protect is off
[17179588.656000] sd 0:0:0:0: [sda] Mode Sense: 63 00 00 08
[17179588.656000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[17179588.664000] sd 0:0:0:0: [sda] 8388608 512-byte hardware sectors (4295 MB)
[17179588.664000] sd 0:0:0:0: [sda] Write Protect is off
[17179588.664000] sd 0:0:0:0: [sda] Mode Sense: 63 00 00 08
[17179588.664000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[17179588.664000] sda: sda1 sda2 sda3 < sda5 sda6 >
[17179588.808000] sd 0:0:0:0: [sda] Attached SCSI disk
[17179589.092000] Driver 'sr' needs updating - please use bus_type methods
[17179589.096000] sr0: scsi3-mmc drive: 16x/50x cd/rw xa/form2 cdda tray
[17179589.096000] Uniform CD-ROM driver Revision: 3.20
[17179589.100000] sr 0:0:2:0: Attached scsi CD-ROM sr0
[17179590.424000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[17179590.428000] sr 0:0:2:0: Attached scsi generic sg1 type 5
[17179593.728000] kjournald starting. Commit interval 5 seconds
[17179593.728000] EXT3-fs: mounted filesystem with ordered data mode.
[17179602.668000] udevd version 125 started
[17179624.188000] Adding 216836k swap on /dev/sda6. Priority:-1 extents:1 across:216836k
[17179625.616000] EXT3 FS on sda5, internal journal
[17179632.184000] LASI 82596 driver - Revision: 1.30
[17179632.544000] loop: module loaded
[17179647.108000] eth0: Setting full-duplex based on MII#1 link partner capability of 4181.</pre>
<p>The various mainboard chipsets are shown here with their names and devices.</p>
<p>A web search turns up an example of part of a dmesg output from a Linux 2.4 kernel (<a href="http://cocoa.5ch.net/test/read.cgi/linux/996363680/">dmesg自慢スレ</a>), which shows the core devices on a B160L:</p>
<pre class="capturedOutput">Searching for devices...
Found devices:
1. Phantom PseudoBC GSC+ Port (7) at 0xffc00000, versions 0x504, 0x0, 0x0, 0x0, 0x0
2. Merlin 160 Core FW-SCSI (4) at 0xfff8c000, versions 0x3d, 0x0, 0x89, 0x0, 0x80
3. Merlin L2 160 (9000/778/B160L) (0) at 0xfffbe000, versions 0x502, 0x0, 0x4, 0x0, 0x81
4. Merlin 160/ThunderHawk Memory (1) at 0xfffbf000, versions 0x67, 0x0, 0x9, 0x0, 0x0
5. Merlin 160 Core BA (11) at 0xffd00000, versions 0x3d, 0x0, 0x81, 0x0, 0x0, additional addresses: 0xffd0c000 0xffc00000
6. Merlin 160 Core RS-232 (10) at 0xffd05000, versions 0x3d, 0x0, 0x8c, 0x0, 0x0
7. Merlin 160 Core SCSI (10) at 0xffd06000, versions 0x3d, 0x0, 0x82, 0x0, 0x0
8. Merlin 160 Core LAN (802.3) (10) at 0xffd07000, versions 0x3d, 0x0, 0x8a, 0x0, 0x0
9. Merlin 160 Core Centronics (10) at 0xffd02000, versions 0x3d, 0x0, 0x74, 0x0, 0x0, additional addresses: 0xffd01000 0xffd03000
10. Merlin 160 Core Audio (10) at 0xffd04000, versions 0x3d, 0x4, 0x7b, 0x0, 0x0
11. Merlin 160 Core PS/2 Port (10) at 0xffd08000, versions 0x3d, 0x0, 0x84, 0x0, 0x0
12. Merlin 160 Core PS/2 Port (10) at 0xffd08100, versions 0x3d, 0x0, 0x84, 0x0, 0x0
13. Merlin 160 Wax BA (11) at 0xffe00000, versions 0x41, 0x0, 0x8e, 0x0, 0x0
14. Merlin 160 Wax EISA BA (11) at 0xfc000000, versions 0x41, 0x0, 0x90, 0x0, 0x0, additional addresses: 0xf0184000
15. Merlin 160 Wax HIL (10) at 0xffe01000, versions 0x41, 0x0, 0x73, 0x0, 0x0
16. Merlin 160 Wax RS-232 (10) at 0xffe02000, versions 0x41, 0x0, 0x8c, 0x0, 0x0
17. Gecko GSC Core Graphics (10) at 0xf8000000, versions 0x16, 0x0, 0x85, 0x0, 0x0, additional addresses: 0xf0011000
18. Dino PCI Bridge (13) at 0xfff80000, versions 0x680, 0x1, 0xa, 0x0, 0x0
19. Merlin+ 132 Dino PS/2 Port (10) at 0xfff81000, versions 0x22, 0x0, 0x96, 0x0, 0x0</pre>
<p>Wow, that is quite a bit more that we see on the QEMU machine:</p>
<ul>
<li>Two SCSI devices - functionality provided by a PCI SCSI card</li>
<li>LAN device - functionality provided by a PCI ethernet card</li>
<li>Graphics device - removed in our emulation to force serial console</li>
<li>Wax chip - provides the EISA bridge, doesn't appear to be emulated</li>
<li>Audio device - not emulated</li>
<li>Three PS/2 devices - not sure why three appear... but the emulated system seems to handle these differently</li>
</ul>
<p>As noted in the "TODO" section on the QEMU wiki (<a href="https://wiki.qemu.org/Features/HPPA">Features/HPPA - QEMU</a>) there are more devices to be emulated.</p>
<h3 style="text-align: left;">Benchmarks</h3>
<p>So how does this machine perform?</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). Based on recorded results found online, the PA7300LC used in the B160L typically gives BogoMips results that are about equal to the processor clock speed (in MHz). So on a real HP Visualize B160L, which has a PA7300LC running at 160 Mhz, the expected BogoMips is around 160. In QEMU the processor is claimed to be running at 250 MHz, which means we would expect a BogoMips result of around 250.</p>
<pre class="capturedOutput">Calibrating delay loop... 976.89 BogoMIPS (lpj=1953792)</pre>
<p>But the observed BogoMips result is 976.89, which suggests a processor clock of about 980 Mhz, which is quite a bit faster than the original hardware. But since this calibration of is based on a busy-wait-loop, that doesn't actually do anything, the emulation may optimize the particular instructions involved more than a workload that does something.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>First Message Digest 5 (MD5) (<a href="https://en.wikipedia.org/wiki/MD5">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 130061 md5's in 2.96s
Doing md5 for 3s on 64 size blocks: 123503 md5's in 2.96s
Doing md5 for 3s on 256 size blocks: 112761 md5's in 2.96s
Doing md5 for 3s on 1024 size blocks: 92664 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 3551 md5's in 2.97s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:21:53 UTC 2012
options:bn(64,32) md2(char) rc4(idx,int) des(idx,cisc,4,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 703.03k 2670.34k 9752.30k 31629.31k 9794.54k</pre>
<p>And then RSA (Rivest–Shamir–Adleman) (<a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 482 512 bit private RSA's in 9.80s
Doing 512 bit public rsa's for 10s: 6359 512 bit public RSA's in 9.93s
Doing 1024 bit private rsa's for 10s: 109 1024 bit private RSA's in 9.94s
Doing 1024 bit public rsa's for 10s: 2619 1024 bit public RSA's in 9.95s
Doing 2048 bit private rsa's for 10s: 23 2048 bit private RSA's in 10.27s
Doing 2048 bit public rsa's for 10s: 953 2048 bit public RSA's in 9.84s
Doing 4096 bit private rsa's for 10s: 4 4096 bit private RSA's in 10.06s
Doing 4096 bit public rsa's for 10s: 305 4096 bit public RSA's in 9.79s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:21:53 UTC 2012
options:bn(64,32) md2(char) rc4(idx,int) des(idx,cisc,4,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DB_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 0.020332s 0.001562s 49.2 640.4
rsa 1024 bits 0.091193s 0.003799s 11.0 263.2
rsa 2048 bits 0.446522s 0.010325s 2.2 96.8
rsa 4096 bits 2.515000s 0.032098s 0.4 31.2</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 9,794.54k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.4</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 31.2</li>
</ul>
<p>These provide a rough idea of computational workload performance for this particular machine. These look a bit low compared to the BogoMips result, but this is a different workload so the emulator will behave differently. I haven't seen any OpenSSL results for the B160L, so it is difficult to compare, but inferring from the results I have found these figures could be consistent with the real hardware.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>The QEMU PA-RISC emulation runs Linux well, and appears very suitable for hobbyist usage. Single processor performance seems to be a little on the low side, but the emulated system supports the use of multiple processors which helps with multi-process or multi-threaded workloads.</p><p>There appear to be issues with the current device placements and bus assignments. This looks like a workaround for the currently unimplemented hardware, so future QEMU versions will likely address this.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul style="text-align: left;">
<li><a href="https://en.wikipedia.org/wiki/HP_9000">HP 9000 - Wikipedia</a></li>
<li><a href="https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html">HP Visualize B132L, B160L, B180L</a></li>
<li><a href="https://www.hpmuseum.net/">HP Computer Museum</a></li>
<li><a href="https://parisc.wiki.kernel.org/index.php/Qemu">Qemu - Linux PARISC Wiki</a></li>
<li><a href="https://astr0baby.wordpress.com/2019/04/28/running-hp-ux-11-11-on-qemu-system-hppa/">Running HP-UX 11.11 on qemu-system-hppa | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-48758411699348138192021-06-27T21:54:00.004+01:002022-05-21T16:14:20.144+01:00HP Tru64 UNIX on AlphaVM-Free - System Information<h3 style="text-align: left;">AlphaVM-Free</h3>
<p>A commercial Alpha AXP system emulator from <a href="https://emuvm.com/">EmuVM</a>, the AlphaVM family of system emulators provide a means to emulate members of the Tsunami family of Alpha based systems from Compaq and HP. Mainly targeted at providing a migration option for existing Alpha systems running OpenVMS or Tru64 UNIX, allowing existing applications to be moved to newer, and potentially more efficient, hardware. A free version of AlphaVM (AlphaVM-Free) was offered as an evaluation and hobbyist product complementing the supported commercial offering (AlphaVM-Pro). Apparently due to licence abuse (see <a href="https://raymii.org/s/blog/The_sad_state_of_Alpha_emulators_for_OpenVMS.html">The sad state of Alpha emulators (for OpenVMS) - Raymii.org</a>) the free version has been since replaced with a low cost option (AlphaVM-Basic).</p>
<p>To have a look at the emulator's capabilities and how well it manages to run HP Tru64 UNIX, I've setup a legacy AlphaVM-Free system in a Debian Linux 10 (buster) virtual machine and installed HP Tru64 UNIX 5.1B. Since all versions of AlphaVM are related the other versions will show similar behavior, although there is some additional flexibility with tuning the emulation available in the commercial product.</p>
<p>Note that AlphaVM requires the CMPXCHG16B instruction to be available on the host. In my case this meant I had to update the VirtualBox configuration for the Debian Linux 10 host virtual machine to allow access to this instruction (see <a href="https://forums.virtualbox.org/viewtopic.php?f=9&t=50648">virtualbox.org: View topic - hot to enable CMPXCHG16B instruction</a>).</p>
<span><a name='more'></a></span>
<h4 style="text-align: left;">Emulated System</h4>
<p>AlphaVM-Free emulates a range of systems in the Tsunami family of systems, which were based on the 21272 (Tsunami) and 21274 (Typhoon) chipsets:</p>
<ul>
<li>Extreme Performance (XP) workstations:</li>
<ul>
<li>Compaq XP900</li>
<li>Compaq XP1000</li>
</ul>
<li>Departmental Server (DS):</li>
<ul>
<li>Compaq DS10, DS10L</li>
<li>Compaq DS20, DS20E, DS20L</li>
</ul>
<li>Enterprise Server (ES):</li>
<ul>
<li>Compaq ES40</li>
</ul>
</ul>
<p>The DS and ES lines were available in server (AlphaServer) and workstation (AlphaStation) enclosures, the XP line only had a workstation. The the Tsunami/Typhoon chipsets were also used in the AlphaPC 264DP board and its derivatives (e.g. API UP2000 and UP2000+), but an AlphaVM system profile is not provided for those systems. The high-end Global Server (GS) series of the same period utilized custom chipsets, and are part of the TurboLaser and Wildfire families, rather than the Tsunami family.</p>
<p>For this exploration I've selected a DS10 system with an EV67. For comparison the equivalent physical system configuration (as sold by Compaq) would be:</p>
<p>Compaq AlphaServer DS10 67/600:</p>
<ul>
<li>CPU: Alpha 21264A (EV67) at 616 MHz</li>
<li>RAM: 256 MiB to 2 GiB</li>
<li>Network: 2 10/100 ethernet - Tulip 21143 (DE500)</li>
<li>Disk controller:</li>
<ul>
<li>built-in dual IDE (provided by Acer Labs 1543C)</li>
<li>SCSI option: Ultra2 (KZPCA-AA; NCR53c895), Ultra3 (KZPEA-DB; AIC-7899)</li>
</ul>
<li>Misc.: Acer Labs 1543C providing: dual IDE, Floppy, USB, 2 serial, 1 parallel, keyboard & mouse (PS/2)</li>
</ul>
<p>AlphaVM uses substitutions for some of the standard configuration hardware, and I want to see how some of the alternative device options turn out, so the emulated system looks more like:</p>
<ul>
<li>CPU: Alpha 21264A (EV67) at 616 MHz</li>
<li>RAM: 1 GiB</li>
<li>Network interfaces:</li>
<ul>
<li>DE500 10/100 Mb/s ethernet (Tulip 21143)</li>
<li>DE435 10 Mb/s ethernet (Tulip 21040)</li>
</ul>
<li>Disk controller:</li>
<ul>
<li>SCSI: QLogic ISP 1020 SCSI controller with 22 GB, 2 GB and CD-ROM drives</li>
</ul>
<li>Misc.: 2 serial, 1 parallel</li>
</ul>
<p>The AlphaVM documentation doesn't say much about the additional built-in devices, so I'm assuming they are absent.</p>
<h4>Emulator Command</h4>
<p>AlphaVM uses a configuration file for the emulated system specification, and this is simply referenced in the command-line:</p>
<pre class="capturedOutput">$ alphavm_free config.emu</pre>
<p>The <tt>config.emu</tt> file I'm using is:</p>
<pre class="capturedOutput">system {
type = ds10_616;
reported_type = default;
num_cpus = 1;
ssn = 'EmuVM-00-000-001';
interval_clock_freq = 1000;
memory {
size = 1024;
}
cpu {
server = basic;
jit {
async = yes;
}
}
serial com1 {
server = socket;
port = 3000;
}
scsi_controller qla0 {
scsi_id = 7;
}
scsi_disk dka0 {
scsi_bus = 0;
scsi_id = 0;
scsi_lun = 0;
file = 'disk01.dd';
caching = no;
write_through = yes;
}
scsi_disk dka1 {
scsi_bus = 0;
scsi_id = 2;
scsi_lun = 0;
file = 'disk02.dd';
caching = no;
write_through = yes;
}
scsi_cdrom iso {
scsi_id = 4;
file = 'ISO/tru64-cd1.iso';
}
ether eth0 {
type = dec21143;
server = dummy;
mac_address = 0x08002B000001;
}
ether eth1 {
type = dec21040;
server = dummy;
mac_address = 0x08002B000002;
}
}</pre>
<p>Note: this system profile (<tt>ds10_616</tt>) always provides two ethernet interfaces, which by default are dummy devices. Here this default is overridden to give us one each of the two supported types of adapter (DE500 & DE435) with distinct MAC addresses.</p>
<p>Unlike a real DS10, where the supplied CD-ROM drive is on an IDE bus, the only option here is to configure the CD-ROM drive as a SCSI device, in this case mapped to an ISO image of CD 1 of the Tru64 installation disk set.</p>
<h3 style="text-align: left;">HP Tru64 UNIX</h3>
<p>The main UNIX for Alpha based systems, Tru64 UNIX (<a href="https://en.wikipedia.org/wiki/Tru64_UNIX">Wikipedia</a>), was derived from OSF/1 (<a href="https://en.wikipedia.org/wiki/OSF/1">Wikipedia</a>) and had a number of name changes thoughout its life-time:</p>
<ul style="text-align: left;">
<li>DEC OSF/1 AXP</li>
<li>Digital UNIX</li>
<li>Compaq Tru64 UNIX</li>
</ul>
<p>When Compaq merged with HP, documentation and marketing materials were updated to use HP Tru64 as the name, but the operating system retained mentions of the Compaq name in order to promote compatibility.</p>
<h3 style="text-align: left;">System Information</h3>
<p>So lets see what the firmware and operating system have to say about emulated platform.</p>
<h4 style="text-align: left;">SRM Firmware</h4>
<p>The AlphaVM-Free version of the SRM firmware doesn't provide the full capabilities of the SRM console on a real DS10, however it does provide the core "show devices" command for reporting potential boot devices:</p>
<pre class="capturedOutput">>>> show devices
pka SCSI Controller
dka0 SCSI 0 14 0 0 0 0 0
dka200 SCSI 0 14 0 0 200 0 0
dka400 SCSI 0 14 0 0 400 0 0
ewa MOP 0 9 0 0 0 3 0 (08:00:2b:00:00:01)
ewb MOP 0 11 0 0 0 3 0 (08:00:2b:00:00:02)</pre>
<p>Here we see the SCSI controllers (pka & pkb), their disks (dka0 & dka200) and the SCSI CD-ROM drive (dka400), and the network interfaces (ewa & ewb). The reported device names (see <a href="https://tldp.org/HOWTO/SRM-HOWTO/x99.html">SRM Device Naming</a>) match the expected names of the devices configured for the system.</p>
<h4>uname</h4>
<p>System version and architecture information:</p>
<pre class="capturedOutput"># uname -a
OSF1 alvm-tru64 V5.1 2650 alpha</pre>
<p>Breaking this down: <tt>OSF1</tt> is the operating system name for Tru64 and its predecessors, the release is <tt>V5.1</tt>, and the version <tt>2650</tt>, which is the 'B' update (and its subsequent patches), running on an Alpha.</p>
<h4 style="text-align: left;">sizer</h4>
<p>Reports on the system and/or kernel. In this case we use:</p>
<ul>
<li><tt>-v</tt> to get the operating system version string</li>
<li><tt>-c</tt> to get the CPU type</li>
<li><tt>-implver</tt> to get the processor family name</li>
</ul>
<p>So lets see what we have...</p>
<pre class="capturedOutput"># sizer -v
Compaq Tru64 UNIX V5.1B (Rev. 2650); Wed Jun 16 14:14:34 BST 2021
# sizer -c
cpu "DEC6600"
# sizer -implver
EV6</pre>
<p>The operating system version string confirms this is Tru64 5.1B, with a recently built kernel.</p>
<p>The CPU module is a "<tt>DEC6600</tt>", this identifier is associated with the DS10, DS20 and ES40 systems.</p>
<p>The processor family is EV6 which is correct for the Alpha 21264 chip and its derivatives (<a href="https://en.wikipedia.org/wiki/Alpha_21264">Wikipedia</a>). Although the specified DS10 model should have the improved EV67 rather than a plain EV6.</p>
<h4 style="text-align: left;">psrinfo</h4>
<p>Report processor information:</p>
<pre class="capturedOutput"># psrinfo -v
Status of processor 0 as of: 06/16/21 14:44:35
Processor has been on-line since 06/16/2021 14:15:24
The alpha EV6.7 (21264A) processor operates at 617 MHz,
has a cache size of 1048576 bytes,
and has an alpha internal floating point processor.</pre>
<p>For our emulated DS10 model we expect one Alpha EV67 running at 616 MHz, and that is what the system reports.</p>
<h4 style="text-align: left;">hwmgr</h4>
<p>Report hardware information:</p>
<pre class="capturedOutput"># hwmgr view devices
HWID: Device Name Mfg Model Location
------------------------------------------------------------------------------
3: /dev/dmapi/dmapi
4: /dev/scp_scsi
5: /dev/kevm
26: /dev/disk/dsk0c EmuVM HD image bus-0-targ-0-lun-0
27: /dev/disk/dsk1c EmuVM HD image bus-0-targ-2-lun-0
28: /dev/disk/cdrom0c EmuVM CDROM ISO image bus-0-targ-4-lun-0
29: /dev/random
30: /dev/urandom
# hwmgr view hierarchy
HWID: hardware hierarchy
-------------------------------------------------------------------------------
1: platform AlphaServer DS10 616 MHz
2: cpu CPU0
6: bus pci0
7: connection pci0slot7
15: bus isa0
16: connection isa0slot1
17: serial_port tty00
18: connection isa0slot2
19: serial_port tty01
20: connection isa0slot3
21: parallel_port lp0
9: connection pci0slot9
22: network tu0
11: connection pci0slot11
23: network tu1
13: connection pci0slot14
24: scsi_adapter isp0
25: scsi_bus scsi0
26: disk bus-0-targ-0-lun-0 dsk0
27: disk bus-0-targ-2-lun-0 dsk1
28: disk bus-0-targ-4-lun-0 cdrom0</pre>
<p>Here we see the emulated disks give a fingerprint for the emulator with the "<tt>EmuVM</tt>" manufacturer string.</p>
<p>So the system is identified as an AlphaServer DS10, as expected, with one CPU, two SCSI hard disks and a CD-ROM, 2 serial ports, 1 parallel port and a two Tulip based network interfaces. As expected for the emulated system configuration.</p>
<p>On a real DS10 system we would also expect to see the other built-in devices: keyboard, mouse, floppy disk controller, IDE controller and USB. However since we can't configure these for use with AlphaVM it is unsurprising they are not implemented in the emulated system.</p>
<h4 style="text-align: left;">vmstat</h4>
<p>Virtual memory information with some additional physical memory information:</p>
<pre class="capturedOutput"># vmstat -P
Total Physical Memory = 1024.00 M
= 131072 pages
Physical Memory Clusters:
start_pfn end_pfn type size_pages / size_bytes
0 256 pal 256 / 2.00M
256 131072 os 130816 / 1022.00M
Physical Memory Use:
start_pfn end_pfn type size_pages / size_bytes
256 289 scavenge 33 / 264.00k
289 1070 text 781 / 6.10M
1070 1213 data 143 / 1.12M
1213 1441 bss 228 / 1.78M
1441 1637 kdebug 196 / 1.53M
1637 1644 cfgmgmt 7 / 56.00k
1644 1645 locks 1 / 8.00k
1645 1659 pmap 14 / 112.00k
1659 2265 unixtable 606 / 4.73M
2265 2289 logs 24 / 192.00k
2289 5302 vmtables 3013 / 23.54M
5302 131072 managed 125770 / 982.58M
============================
Total Physical Memory Use: 130816 / 1022.00M
Managed Pages Break Down:
free pages = 109057
active pages = 4320
inactive pages = 0
wired pages = 7284
ubc pages = 5142
==================
Total = 125803
WIRED Pages Break Down:
vm wired pages = 1044
ubc wired pages = 0
meta data pages = 3882
malloc pages = 1131
contig pages = 695
user ptepages = 393
kernel ptepages = 132
free ptepages = 7
==================
Total = 7284</pre>
<p>This reports the expected 1 GiB memory from the emulator configuration.</p>
<h4 style="text-align: left;">System Boot Record</h4>
<p>Kernel messages from the boot process:</p>
<pre class="capturedOutput"># uerf -R -r 300
uerf version 4.2-011 (122)
********************************* ENTRY 1. *********************************
----- EVENT INFORMATION -----
EVENT CLASS OPERATIONAL EVENT
OS EVENT TYPE 300. SYSTEM STARTUP
SEQUENCE NUMBER 1.
OPERATING SYSTEM DEC OSF/1
OCCURRED/LOGGED ON Wed Jun 16 15:28:06 2021
OCCURRED ON SYSTEM alvm-tru64
SYSTEM ID x000B0022
SYSTYPE x00000000
MESSAGE Alpha boot: available memory from
_0x296c000 to 0x40000000
Compaq Tru64 UNIX V5.1B (Rev. 2650);
_Wed Jun 16 14:14:34 BST 2021
physical memory = 1024.00 megabytes.
available memory = 982.57 megabytes.
using 3882 buffers containing 30.32
_megabytes of memory
Firmware revision: 13.0-0
PALcode: UNIX version 1.62-1
AlphaServer DS10 616 MHz
config_cpus: Could not find config
_tree entry for CPU0
pci0 (primary bus:0) at nexus
isa0 at pci0
ace0 at isa0
ace1 at isa0
lp0 at isa0
tu0: DECchip 21143: Revision: 3.0
tu0: auto negotiation capable device
tu0: no SROM info for selected media
tu0 at pci0 slot 9
tu0: DEC TULIP (10/100) Ethernet
_Interface, hardware address:
_08-00-2B-00-00-01
tu0: auto negotiation off: selecting
_100BaseTX (UTP) port: full duplex
tu1: DECchip 21040: Revision: 2.0
tu1 at pci0 slot 11
tu1: DEC TULIP (10Mbps) Ethernet
_Interface, hardware address:
_08-00-2B-00-00-02
tu1: console mode: selecting 10BaseT
_(UTP) port: full duplex
isp0 at pci0 slot 14
isp0: QLOGIC ISP1020B - Differential
_Mode
isp0: Firmware revision 7.63 (loaded
_by console)
scsi0 at isp0 slot 0 rad 0
Created FRU table binary error log
_packet
kernel console: ace0
dli: configured
NetRAIN configured.
Random number generator configured.
ATM Subsystem configured with 1
_restart threads
ATMUNI: configured
ATMSIG: 3.x (module=uni3x) configured
ILMI: 3.x (module=ilmi) configured
ATM IP: configured
ATM LANE: configured.
ATM IFMP: configured </pre>
<p>While not the prettiest format, this does cover what happened during boot. There is a lot of information in here, some of which is redundant with earlier information, so I'll only comment on some highlights.</p>
<p>The two network adapters are identified here showing the "<tt>tu0: DECchip 21143</tt>" (DE500) and "<tt>tu1: DECchip 21040</tt>" (DE435). As is the SCSI controller "<tt>isp0: QLOGIC ISP1020B</tt>"</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing? To find out we're going to need a benchmark.</p>
<h4>BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). This is helpful in this case since the performance of processors of this era typically scaled with clock speed. So let's get some results using the standalone BogoMips 1.3 program and see what it says:</p>
<pre class="capturedOutput">> ./bogo.sh
Calibrating delay loop.. ok - 74.00 BogoMips
Calibrating delay loop.. ok - 76.00 BogoMips
Calibrating delay loop.. ok - 78.00 BogoMips
Calibrating delay loop.. ok - 76.00 BogoMips
Calibrating delay loop.. ok - 76.00 BogoMips</pre>
<p>On an Alpha 21264 (EV6) the Linux BogoMips result is approximately equal to twice the processor clock speed, which would suggest the emulated machine is very slow (Mhz = BogoMips / 1.99 => 80 / 1.99 = 40.2 MHz) compared to the real hardware.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>One of the provided benchmarks for AlphaVM (<a href="https://emuvm.com/support/benchmarks/">Benchmarks - EmuVM</a>) uses OpenSSL to get a performance measure. So lets see how that compares:</p>
<pre class="capturedOutput">> openssl speed md5
Doing md5 for 3s on 8 size blocks: 157920 md5's in 2.83s
Doing md5 for 3s on 64 size blocks: 86312 md5's in 2.85s
Doing md5 for 3s on 256 size blocks: 37151 md5's in 2.82s
Doing md5 for 3s on 1024 size blocks: 11254 md5's in 2.85s
Doing md5 for 3s on 8192 size blocks: 1506 md5's in 2.85s
OpenSSL 0.9.6g [engine] 9 Aug 2002
built on: Thu Aug 15 02:59:23 EDT 2002
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,4,long) blowfish(idx)
compiler: cc -DTHREADS -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_RC5 -DNO_HW_KEYCLIENT -pthread -std1 -O4 -readonly_strings
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 445.89k 1938.23k 3376.56k 4043.54k 4328.83k
> openssl speed rsa
Doing 512 bit private rsa's for 10s: 598 512 bit private RSA's in 9.48s
Doing 512 bit public rsa's for 10s: 8019 512 bit public RSA's in 9.50s
Doing 1024 bit private rsa's for 10s: 135 1024 bit private RSA's in 9.50s
Doing 1024 bit public rsa's for 10s: 2633 1024 bit public RSA's in 9.50s
Doing 2048 bit private rsa's for 10s: 23 2048 bit private RSA's in 9.73s
Doing 2048 bit public rsa's for 10s: 776 2048 bit public RSA's in 9.43s
Doing 4096 bit private rsa's for 10s: 4 4096 bit private RSA's in 11.30s
Doing 4096 bit public rsa's for 10s: 216 4096 bit public RSA's in 9.50s
OpenSSL 0.9.6g [engine] 9 Aug 2002
built on: Thu Aug 15 02:59:23 EDT 2002
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,4,long) blowfish(idx)
compiler: cc -DTHREADS -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_RC5 -DNO_HW_KEYCLIENT -pthread -std1 -O4 -readonly_strings
sign verify sign/s verify/s
rsa 512 bits 0.0159s 0.0012s 63.1 844.1
rsa 1024 bits 0.0704s 0.0036s 14.2 277.2
rsa 2048 bits 0.4232s 0.0122s 2.4 82.3
rsa 4096 bits 2.8250s 0.0440s 0.4 22.7</pre>
<p>The relevant figures are for comparison with the published results are:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 4,328.83k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.4</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 22.7</li>
</ul>
<p>These figures are much lower than the published results, however this is using AlphaVM-Free, which doesn't have access to the higher performance CPU emulations in AlphaVM-Pro, which was used for the published benchmark. Comparing with the real DS10 system in the benchmark result it would appear that this emulated machine is around 1/10 of the performance.</p>
<h3>Thoughts</h3>
<p>AlphaVM-Free runs HP Tru64 UNIX very well, and although the performance is a bit less than expected it should be adequate for most hobbyist purposes. However since it is no longer available, the replacement <a href="https://emuvm.com/products/alphavm-basic/">AlphaVM-Basic</a> option is worth a look for these roles. For the types of workloads expected for system migrations, it is evident that the <a href="https://emuvm.com/products/alphavm-pro/">AlphaVM-Pro</a> product would be a much better option for commercial applications.</p>
<p>The estimated 1/10 of a real DS10 gives us something to work with regarding comparisons with other Alpha systems and emulations. Certainly the performance seen here for Tru64 UNIX is comparable with the <a href="http://www.migrationspecialties.com/FreeAXP.html">FreeAXP</a> system emulator from <a href="http://www.migrationspecialties.com/">Migration Specialties International, Inc.</a> (see <a href="https://boxes-of-tat.blogspot.com/2021/06/hp-tru64-on-freeaxp-system-information.html">HP Tru64 on FreeAXP - System Information</a>). But the availability of more memory and more hardware configuration options placed AlphaVM-Free ahead in the free Alpha emulation stakes.</p>
<h3>Further Sources</h3>
<div>More information can be found at:</div>
<p></p>
<ul>
<li><a href="http://www.ema-tech.co.uk/alphavm-1-5-11-windows.pdf">AlphaVM for Windows: User Manual</a></li>
<li><a href="https://silo.tips/download/alphavm-for-linux-user-manual-3">[PDF] AlphaVM for Linux User Manual - Free Download PDF</a></li>
<li><a href="https://astr0baby.wordpress.com/2014/04/07/running-tru64-unix-inside-a-vm-for-metasploit-testing/">Running Tru64 UNIX inside a VM for Metasploit testing | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://astr0baby.wordpress.com/2017/02/20/unix-os-archaeology-tru64-unix-part-2/">Unix OS archaeology &#8211; Tru64 UNIX part 2 | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a> </li>
<li><a href="https://astr0baby.wordpress.com/2019/09/28/tru64-5-1b-unix-and-oracle-9i-infosec-exercise/">Tru64 5.1B Unix and Oracle 9i infosec exercise | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://forums.virtualbox.org/viewtopic.php?f=9&t=50648">virtualbox.org: View topic - hot to enable CMPXCHG16B instruction</a></li>
<li><a href="https://techmonitor.ai/techonology/dec_gets_compaq_ted_at_decus">DEC GETS ‘COMPAQ-TED’ AT DECUS</a></li>
</ul>
<p></p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-59273932278179865872021-06-25T20:33:00.006+01:002022-05-23T08:52:51.956+01:00Linux for SPARC64 on QEMU sun4u - System Information<h3 style="text-align: left;">Linux for SPARC</h3>
<p>The SPARC processor (<a href="https://en.wikipedia.org/wiki/SPARC">Wikipedia</a>) was the third processor to be supported in the Linux kernel (after x86 and Alpha) back in the mid 1990s. In his 1997 M.Sc. thesis: "<a href="https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf">Linux: a Portable Operating System</a>", Linus Torvalds discussed the integration of Alpha and SPARC into the Linux kernel and the challenges of developing a portable operating system.</p>
<p>Looking for early Linux distributions supporting SPARC finds:</p>
<ul style="text-align: left;">
<li>RedHat Linux 4.0 released 3-Oct-1996: 2.0.18 kernel supporting sun4c and sun4m.</li>
<li>RedHat Linux 6.0 released 26-Apr-1999: 2.2.5 kernel supporting sun4c, sun4m and sun4u</li>
<li>Debian Linux 2.1 (slink) released 9-May-1999: 2.0.35 kernel for sun4c and sun4m, and 2.2.1 kernel for sun4u</li>
</ul>
<p>These Linux distributions were targeted at Sun's SPARC systems and did not support SPARC systems from other vendors, unless they were clones of Sun's systems.</p>
<p>In 1987 Sun Microsystems introduced its first 32-bit based SPARC systems, and Sun introduced its first 64-bit SPARC (UltraSparc) systems in late 1995 with the Ultra 1 and Ultra 2 workstations and their server variants, the Ultra Server 1 and Ultra Server 2.</p>
<p>The 64-bit SPARC specification had been released by <a href="https://sparc.org/">SPARC International</a> in 1993 and HAL Computer Systems (<a href="https://en.wikipedia.org/wiki/HAL_Computer_Systems">Wikipedia</a>), a subsidiary of Fujitsu, brought the first SPARC64 workstations to market in 1995, with the release of the HALstation 300 series systems.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">QEMU sun4u</h3>
<p>Back in <a href="https://boxes-of-tat.blogspot.com/2021/05/linux-for-sparc64-on-qemu.html">Linux for SPARC64 on QEMU</a> I looked at installing Debian Linux for SPARC on a QEMU sun4u machine.</p>
<h3 style="text-align: left;">System Information - Debian Linux 11 (bullseye)</h3>
<p>Let's see what the operating system has to say about the emulated machine.</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system information:</p>
<pre class="capturedOutput">$ uname -a
Linux debian 5.10.0-7-sparc64 #1 Debian 5.10.40-1 (2021-05-28) sparc64 GNU/Linux</pre>
<p>A "Linux" kernel, on a node named "debian", kernel version "5.10.0-7-sparc64", kernel release "#1 Debian 5.10.40-1 (2021-05-28)", platform architecture "sparc64" for operating system "GNU/Linux".</p>
<h4 style="text-align: left;">lsb_release</h4>
<p>Distribution information using the Linux Standard Base (LSB) (<a href="https://en.wikipedia.org/wiki/Linux_Standard_Base">Wikipedia</a>) tool:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye</pre>
<p>This in-official release is tracking the forthcoming Debian Linux 11 (bullseye) release, rather the the official Debian Linux 10 (buster) release.</p>
<h4 style="text-align: left;">lscpu and /proc/cpuinfo</h4>
<p>Processor information:</p>
<pre class="capturedOutput">$ lscpu
Architecture: sparc64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Big Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Model name: TI UltraSparc IIi (Sabre)
Flags: sun4u
$ cat /proc/cpuinfo
cpu : TI UltraSparc IIi (Sabre)
fpu : UltraSparc IIi integrated FPU
pmu : ultra12
prom : OBP 3.10.24 1999/01/01 01:01
type : sun4u
ncpus probed : 1
ncpus active : 1
D$ parity tl1 : 0
I$ parity tl1 : 0
Cpu0ClkTck : 0000000005f5e100
cpucaps : flush,stbar,swap,muldiv,v9,mul32,div32,v8plus,vis
MMU Type : Spitfire
MMU PGSZs : 8K,64K,512K,4MB</pre>
<p>As expected this machine has a single UltraSPARC IIi processor (<a href="https://en.wikipedia.org/wiki/UltraSPARC_II">Wikipedia</a>). This variant of the UltraSPARC II featured an on-chip PCI controller.</p>
<p>The <tt>Cpu0ClkTck</tt> line reports the CPU clock frequency in Hz for the first processor (CPU 0). In multi-processor and multi-core systems there are additional <tt>Cpu?ClkTck</tt> lines for numbered for each processor. For some reason the clock is reported in hexadecimial, in this case the value 0x5f5e100 equals 100,000,000. So the system reports the processor as clocked at 100.0 MHz.</p>
<h4 style="text-align: left;">lspci</h4>
<p>PCI buses and devices</p>
<pre class="capturedOutput">$ lspci -v
00:01.0 PCI bridge: Oracle/SUN Simba Advanced PCI Bridge (rev 11) (prog-if 00 [Normal decode])
Device tree node: /sys/firmware/devicetree/base/pci@1f,0/pci@1
Flags: bus master, 66MHz, medium devsel, latency 0
Bus: primary=00, secondary=02, subordinate=02, sec-latency=64
I/O behind bridge: [disabled]
Memory behind bridge: [disabled]
Prefetchable memory behind bridge: 0000000000000000-00000000000fffff [size=1M]
00:01.1 PCI bridge: Oracle/SUN Simba Advanced PCI Bridge (rev 11) (prog-if 00 [Normal decode])
Device tree node: /sys/firmware/devicetree/base/pci@1f,0/pci@1,1
Flags: bus master, 66MHz, medium devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
I/O behind bridge: 00000000-00008fff [size=36K]
Memory behind bridge: 20000000-210fffff [size=17M]
Prefetchable memory behind bridge: 0000000000000000-00000000000fffff [size=1M]
01:01.0 Bridge: Oracle/SUN EBUS (rev 01)
Subsystem: Red Hat, Inc. EBUS
Device tree node: /sys/firmware/devicetree/base/pci@1f,0/pci@1,1/ebus@1
Flags: 66MHz, medium devsel
Memory at 20000000 (32-bit, non-prefetchable) [size=16M]
I/O ports at 00000000 [virtual] [size=32K]
01:01.1 Ethernet controller: Oracle/SUN Happy Meal 10/100 Ethernet [hme]
Subsystem: Red Hat, Inc. Happy Meal 10/100 Ethernet [hme]
Device tree node: /sys/firmware/devicetree/base/pci@1f,0/pci@1,1/network@1,1
Flags: bus master, fast devsel, latency 0, IRQ 00000007
Memory at 21000000 (32-bit, non-prefetchable) [size=32K]
Kernel driver in use: hme
Kernel modules: sunhme
01:03.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 07) (prog-if 8f [PCI native mode controller, supports both channels switched to ISA compatibility mode, supports bus mastering])
Subsystem: Red Hat, Inc. PCI0646
Device tree node: /sys/firmware/devicetree/base/pci@1f,0/pci@1,1/ide@3
Flags: bus master, fast devsel, latency 0, IRQ 00000008
I/O ports at 00008000 [size=8]
I/O ports at 00008080 [size=4]
I/O ports at 00008100 [size=8]
I/O ports at 00008180 [size=4]
I/O ports at 00008200 [size=16]
Kernel driver in use: pata_cmd64x
Kernel modules: pata_cmd64x, ata_generic</pre>
<p>The integrated PCI bus controller on the UltraSPARC IIi (Sabre) isn't reported here. Instead we start with the two Simba PCI bus bridges, which are connected to it. These bridges split the PCI devices into those on the mainboard and those using the PCI slots. For this machine there are no PCI cards present in the slots, so only the integrated PCI devices are reported: the ethernet controller, the IDE interface, and the EBUS bridge to the other integrated devices (for this config that is mainly the PROM and serial port).</p>
<h4 style="text-align: left;">report-hw</h4>
<p>A hardware report based on various commands:</p>
<pre class="capturedOutput">$ report-hw
uname -a: Linux debian 5.10.0-7-sparc64 #1 Debian 5.10.40-1 (2021-05-28) sparc64 GNU/Linux
lspci -knn: 00:01.0 PCI bridge [0604]: Oracle/SUN Simba Advanced PCI Bridge [108e:5000] (rev 11)
lspci -knn: 00:01.1 PCI bridge [0604]: Oracle/SUN Simba Advanced PCI Bridge [108e:5000] (rev 11)
lspci -knn: 01:01.0 Bridge [0680]: Oracle/SUN EBUS [108e:1000] (rev 01)
lspci -knn: Subsystem: Red Hat, Inc. EBUS [1af4:1100]
lspci -knn: 01:01.1 Ethernet controller [0200]: Oracle/SUN Happy Meal 10/100 Ethernet [hme] [108e:1001]
lspci -knn: Subsystem: Red Hat, Inc. Happy Meal 10/100 Ethernet [hme] [1af4:1100]
lspci -knn: Kernel driver in use: hme
lspci -knn: Kernel modules: sunhme
lspci -knn: 01:03.0 IDE interface [0101]: Silicon Image, Inc. PCI0646 [1095:0646] (rev 07)
lspci -knn: Subsystem: Red Hat, Inc. PCI0646 [1af4:1100]
lspci -knn: Kernel driver in use: pata_cmd64x
lspci -knn: Kernel modules: pata_cmd64x, ata_generic
usb: No USB information available
lsmod: Module Size Used by
lsmod: sg 24098 0
lsmod: drm 387151 0
lsmod: drm_panel_orientation_quirks 1107 1 drm
lsmod: fuse 99945 1
lsmod: i2c_core 54846 1 drm
lsmod: configfs 30127 1
lsmod: ip_tables 15827 0
lsmod: x_tables 23106 1 ip_tables
lsmod: autofs4 30809 2
lsmod: ext4 716354 2
lsmod: crc16 1657 1 ext4
lsmod: mbcache 4772 1 ext4
lsmod: jbd2 90264 1 ext4
lsmod: crc32c_generic 2362 3
lsmod: sd_mod 45571 4
lsmod: t10_pi 5012 1 sd_mod
lsmod: crc_t10dif 2287 1 t10_pi
lsmod: crct10dif_generic 2029 1
lsmod: crct10dif_common 1670 2 crct10dif_generic,crc_t10dif
lsmod: sr_mod 16193 0
lsmod: cdrom 50649 1 sr_mod
lsmod: ata_generic 3735 0
lsmod: pata_cmd64x 7963 3
lsmod: libata 212226 2 pata_cmd64x,ata_generic
lsmod: sunhme 28751 0
lsmod: scsi_mod 199977 4 sd_mod,libata,sg,sr_mod
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: udev 496920 0 496920 0% /dev
df: tmpfs 101656 632 101024 1% /run
df: /dev/sda2 6721508 1147460 5212892 19% /
df: tmpfs 508240 0 508240 0% /dev/shm
df: tmpfs 5120 0 5120 0% /run/lock
df: /dev/sda1 484210 88706 370502 20% /boot
df: tmpfs 101648 0 101648 0% /run/user/1000
free: total used free shared buff/cache available
free: Mem: 1016488 39240 900712 632 76536 864592
free: Swap: 992960 0 992960
/proc/cmdline: console=ttyS0 root=/dev/sda2
/proc/cpuinfo: cpu : TI UltraSparc IIi (Sabre)
/proc/cpuinfo: fpu : UltraSparc IIi integrated FPU
/proc/cpuinfo: pmu : ultra12
/proc/cpuinfo: prom : OBP 3.10.24 1999/01/01 01:01
/proc/cpuinfo: type : sun4u
/proc/cpuinfo: ncpus probed : 1
/proc/cpuinfo: ncpus active : 1
/proc/cpuinfo: D$ parity tl1 : 0
/proc/cpuinfo: I$ parity tl1 : 0
/proc/cpuinfo: Cpu0ClkTck : 0000000005f5e100
/proc/cpuinfo: cpucaps : flush,stbar,swap,muldiv,v9,mul32,div32,v8plus,vis
/proc/cpuinfo: MMU Type : Spitfire
/proc/cpuinfo: MMU PGSZs : 8K,64K,512K,4MB
/proc/ioports: 00000000-00000000 : pci@1f,0
/proc/ioports: 00000000-00000000 : PCI Bus 0000:01
/proc/ioports: 00000000-00000000 : 0000:01:01.0
/proc/ioports: 00000000-00000000 : su
/proc/ioports: 00000000-00000000 : eeprom@14,2000
/proc/ioports: 00000000-00000000 : power
/proc/ioports: 00000000-00000000 : 0000:01:03.0
/proc/ioports: 00000000-00000000 : pata_cmd64x
/proc/ioports: 00000000-00000000 : 0000:01:03.0
/proc/ioports: 00000000-00000000 : pata_cmd64x
/proc/ioports: 00000000-00000000 : 0000:01:03.0
/proc/ioports: 00000000-00000000 : pata_cmd64x
/proc/ioports: 00000000-00000000 : 0000:01:03.0
/proc/ioports: 00000000-00000000 : pata_cmd64x
/proc/ioports: 00000000-00000000 : 0000:01:03.0
/proc/ioports: 00000000-00000000 : pata_cmd64x
/proc/ioports: 00000000-00000000 : PCI Bus 0000:02
/proc/iomem: 00000000-00000000 : System RAM
/proc/iomem: 00000000-00000000 : Kernel code
/proc/iomem: 00000000-00000000 : Kernel data
/proc/iomem: 00000000-00000000 : Kernel bss
/proc/iomem: 00000000-00000000 : pci@1f,0
/proc/iomem: 00000000-00000000 : PCI Bus 0000:01
/proc/iomem: 00000000-00000000 : 0000:01:01.0
/proc/iomem: 00000000-00000000 : 0000:01:01.1
/proc/iomem: 00000000-00000000 : sunhme
/proc/iomem: 00000000-00000000 : PCI Bus 0000:02
/proc/iomem: 00000000-00000000 : IOMMU
/proc/interrupts: CPU0
/proc/interrupts: 0: 45107 none timer
/proc/interrupts: 1: 0 sun4u -IVEC power
/proc/interrupts: 5: 517 sun4u -IVEC su(serial)
/proc/interrupts: 7: 527 sun4u -IVEC enp1s1f1
/proc/interrupts: 8: 4367 sun4u -IVEC pata_cmd64x
/proc/interrupts: NMI: 0 Non-maskable interrupts
/proc/meminfo: MemTotal: 1016488 kB
/proc/meminfo: MemFree: 900776 kB
/proc/meminfo: MemAvailable: 864656 kB
/proc/meminfo: Buffers: 10352 kB
/proc/meminfo: Cached: 55000 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 32536 kB
/proc/meminfo: Inactive: 52968 kB
/proc/meminfo: Active(anon): 400 kB
/proc/meminfo: Inactive(anon): 20376 kB
/proc/meminfo: Active(file): 32136 kB
/proc/meminfo: Inactive(file): 32592 kB
/proc/meminfo: Unevictable: 0 kB
/proc/meminfo: Mlocked: 0 kB
/proc/meminfo: SwapTotal: 992960 kB
/proc/meminfo: SwapFree: 992960 kB
/proc/meminfo: Dirty: 0 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 20176 kB
/proc/meminfo: Mapped: 23792 kB
/proc/meminfo: Shmem: 632 kB
/proc/meminfo: KReclaimable: 11184 kB
/proc/meminfo: Slab: 21984 kB
/proc/meminfo: SReclaimable: 11184 kB
/proc/meminfo: SUnreclaim: 10800 kB
/proc/meminfo: KernelStack: 1120 kB
/proc/meminfo: PageTables: 1176 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 1501200 kB
/proc/meminfo: Committed_AS: 123008 kB
/proc/meminfo: VmallocTotal: 6438256640 kB
/proc/meminfo: VmallocUsed: 2792 kB
/proc/meminfo: VmallocChunk: 0 kB
/proc/meminfo: Percpu: 256 kB
/proc/meminfo: AnonHugePages: 0 kB
/proc/meminfo: ShmemHugePages: 0 kB
/proc/meminfo: ShmemPmdMapped: 0 kB
/proc/meminfo: FileHugePages: 0 kB
/proc/meminfo: FilePmdMapped: 0 kB
/proc/meminfo: HugePages_Total: 0
/proc/meminfo: HugePages_Free: 0
/proc/meminfo: HugePages_Rsvd: 0
/proc/meminfo: HugePages_Surp: 0
/proc/meminfo: Hugepagesize: 8192 kB
/proc/meminfo: Hugetlb: 0 kB</pre>
<p>Mostly redundant with what we've already seen... but the meminfo section shows the 1 GiB of memory, and the ioports section shows some of the ebus devices.</p>
<h4 style="text-align: left;">lshw</h4>
<p>An alternative hardware report:</p>
<pre class="capturedOutput">$ sudo lshw
debian
description: Computer
width: 64 bits
*-core
description: Motherboard
physical id: 0
clock: 500MHz
*-firmware
product: OpenFirmware 3
physical id: 0
logical name: /proc/device-tree
capabilities: bootinfo
*-cpu:0
description: CPU
physical id: 2
bus info: cpu@0
width: 32 bits
*-cpu:1 DISABLED
description: CPU
physical id: 3
bus info: cpu@1
*-cpu:2 DISABLED
description: CPU
physical id: 4
bus info: cpu@2
*-memory
description: System memory
physical id: 5
size: 992MiB
*-pci:0
description: PCI bridge
product: Simba Advanced PCI Bridge
vendor: Oracle/SUN
physical id: 1
bus info: pci@0000:00:01.0
version: 11
width: 32 bits
clock: 66MHz
capabilities: pci normal_decode bus_master
resources: ioport:800000(size=8388608) memory:60000000-9fffffff
*-pci:1
description: PCI bridge
product: Simba Advanced PCI Bridge
vendor: Oracle/SUN
physical id: 1.1
bus info: pci@0000:00:01.1
version: 11
width: 32 bits
clock: 66MHz
capabilities: pci normal_decode bus_master
resources: ioport:0(size=8388608) memory:20000000-5fffffff
*-bridge UNCLAIMED
description: Bridge
product: EBUS
vendor: Oracle/SUN
physical id: 1
bus info: pci@0000:01:01.0
version: 01
width: 32 bits
clock: 66MHz
capabilities: bridge
configuration: latency=10
resources: memory:20000000-20ffffff ioport:0(size=32768)
*-network
description: Ethernet interface
product: Happy Meal 10/100 Ethernet [hme]
vendor: Oracle/SUN
physical id: 1.1
bus info: pci@0000:01:01.1
logical name: enp1s1f1
version: 00
serial: 52:54:00:12:34:56
size: 100Mbit/s
capacity: 100Mbit/s
width: 32 bits
clock: 33MHz
capabilities: bus_master ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=sunhme driverversion=2.02 duplex=full ip=10.0.2.15 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:7 memory:21000000-21007fff
*-ide
description: IDE interface
product: PCI0646
vendor: Silicon Image, Inc.
physical id: 3
bus info: pci@0000:01:03.0
logical name: scsi0
logical name: scsi1
version: 07
width: 32 bits
clock: 33MHz
capabilities: ide isa_compat_mode pci_native_mode bus_master emulated
configuration: driver=pata_cmd64x latency=0
resources: irq:8 ioport:8000(size=8) ioport:8080(size=4) ioport:8100(size=8) ioport:8180(size=4) ioport:8200(size=16)
*-disk
description: ATA Disk
product: QEMU HARDDISK
vendor: Linux
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 1.0
serial: ba63e42a-de73-4f20-ae5a-f8490498aa6a
size: 488MiB
capabilities: extended_attributes large_files ext2 initialized
configuration: ansiversion=5 filesystem=ext2 lastmountpoint=/ logicalsectorsize=512 modified=2021-06-23 10:18:20 mounted=2021-06-23 10:16:36 sectorsize=512 state=clean
*-cdrom
description: DVD reader
product: QEMU DVD-ROM
vendor: QEMU
physical id: 1
bus info: scsi@1:0.0.0
logical name: /dev/cdrom
logical name: /dev/dvd
logical name: /dev/sr0
version: 2.5+
capabilities: removable audio dvd
configuration: ansiversion=5 status=ready
*-medium
physical id: 0
logical name: /dev/cdrom</pre>
<p>Here the relationships between the bits of hardware are visualized through a tree structure. Sadly this can't see through the EBUS bridge, so those devices are not reported.</p>
<p>Not sure why this sees two disabled CPUs, the workstations this QEMU machine is based on had a single processor. That said the higher end contemporary workstations from Sun (Ultra 60 and Ultra 80), did support multiple processors, but they used the regular UltraSPARC II, rather than the UltraSPARC IIi.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System messages:</p>
<pre class="capturedOutput">$ sudo dmesg
[ 0.002050] PROMLIB: Sun IEEE Boot Prom 'OBP 3.10.24 1999/01/01 01:01'
[ 0.005192] PROMLIB: Root node compatible: sun4u
[ 0.007416] Linux version 5.10.0-7-sparc64 (debian-kernel@lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 Debian 5.10.40-1 (2021-05-28)
[ 0.021108] printk: bootconsole [earlyprom0] enabled
[ 0.022389] ARCH: SUN4U
[ 0.027814] Ethernet address: 52:54:00:12:34:56
[ 0.029596] MM: PAGE_OFFSET is 0xfffff80000000000 (max_phys_bits == 40)
[ 0.030730] MM: VMALLOC [0x0000000100000000 --> 0x0000060000000000]
[ 0.031825] MM: VMEMMAP [0x0000060000000000 --> 0x00000c0000000000]
[ 0.068013] Kernel: Using 4 locked TLB entries for main kernel image.
[ 0.069158] Remapping the kernel...
[ 0.081348] done.
[ 2.095155] OF stdout device is: /pci@1fe,0/pci@1,1/ebus@1/su
[ 2.096467] PROM: Built device tree with 51658 bytes of memory.
[ 2.099900] Top of RAM: 0x3fe80000, Total RAM: 0x3fe80000
[ 2.101054] Memory hole size: 0MB
[ 2.114577] Allocated 16384 bytes for kernel page tables.
[ 2.117356] Zone ranges:
[ 2.118635] Normal [mem 0x0000000000000000-0x000000003fe7ffff]
[ 2.120428] Movable zone start for each node
[ 2.121430] Early memory node ranges
[ 2.122461] node 0: [mem 0x0000000000000000-0x000000003fe7ffff]
[ 2.124307] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fe7ffff]
[ 2.125825] On node 0 totalpages: 130880
[ 2.126078] Normal zone: 1151 pages used for memmap
[ 2.126143] Normal zone: 0 pages reserved
[ 2.126684] Normal zone: 130880 pages, LIFO batch:31
[ 2.153977] Normal zone: 192 pages in unavailable ranges
[ 2.155157] Booting Linux...
[ 2.156656] CPU CAPS: [flush,stbar,swap,muldiv,v9,mul32,div32,v8plus]
[ 2.158245] CPU CAPS: [vis]
[ 2.167167] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 2.167612] pcpu-alloc: [0] 0
[ 2.173669] Built 1 zonelists, mobility grouping on. Total pages: 129729
[ 2.174971] Kernel command line: console=ttyS0 root=/dev/sda2
[ 2.193363] Dentry cache hash table entries: 131072 (order: 7, 1048576 bytes, linear)
[ 2.195746] Inode-cache hash table entries: 65536 (order: 6, 524288 bytes, linear)
[ 2.197142] Sorting __ex_table...
[ 2.201234] mem auto-init: stack:off, heap alloc:on, heap free:off
[ 2.219744] Memory: 993824K/1047040K available (8114K kernel code, 1418K rwdata, 2168K rodata, 496K init, 405K bss, 53216K reserved, 0K cma-reserved)
[ 2.222734] random: get_random_u64 called from __kmem_cache_create+0x1c/0x420 with crng_init=0
[ 2.234017] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 2.241284] ftrace: allocating 25951 entries in 51 pages
[ 2.317993] ftrace: allocated 51 pages with 4 groups
[ 2.378560] NR_IRQS: 2048, nr_irqs: 2048, preallocated irqs: 1
[ 2.385333] clocksource: tick: mask: 0xffffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
[ 2.389981] clocksource: mult[a000000] shift[24]
[ 2.391154] clockevent: mult[1999999a] shift[32]
[ 2.401702] Console: colour dummy device 80x25
[ 2.496167] calibrate_delay_direct() dropping min bogoMips estimate 1 = 436692
[ 2.497405] Calibrating delay using timer specific routine.. 255.71 BogoMIPS (lpj=511431)
[ 2.498639] pid_max: default: 32768 minimum: 301
[ 2.501561] LSM: Security Framework initializing
[ 2.504710] Yama: disabled by default; enable with sysctl kernel.yama.*
[ 2.510248] AppArmor: AppArmor initialized
[ 2.511242] TOMOYO Linux initialized
[ 2.513897] Mount-cache hash table entries: 2048 (order: 1, 16384 bytes, linear)
[ 2.515061] Mountpoint-cache hash table entries: 2048 (order: 1, 16384 bytes, linear)
[ 2.587681] devtmpfs: initialized
[ 2.605069] Performance events: No support for PMU type 'ultra12'
[ 2.611355] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 2.612830] futex hash table entries: 256 (order: -1, 6144 bytes, linear)
[ 2.633924] NET: Registered protocol family 16
[ 2.674764] audit: initializing netlink subsys (disabled)
[ 2.682557] audit: type=2000 audit(0.228:1): state=initialized audit_enabled=0 res=1
[ 2.685609] thermal_sys: Registered thermal governor 'fair_share'
[ 2.685894] thermal_sys: Registered thermal governor 'bang_bang'
[ 2.687056] thermal_sys: Registered thermal governor 'step_wise'
[ 2.688142] thermal_sys: Registered thermal governor 'user_space'
[ 2.699611] pci@1f,0: PCI IO [io 0x1fe02000000-0x1fe02ffffff] offset 1fe02000000
[ 2.701760] pci@1f,0: PCI MEM [mem 0x1ff00000000-0x1ffefffffff] offset 1ff00000000
[ 2.703246] pci@1f,0: SABRE PCI Bus Module ver[0:0]
[ 2.704398] PCI: Scanning PBM /pci@1f,0
[ 2.710903] sabre ffe2e428: PCI host bridge to bus 0000:00
[ 2.712512] pci_bus 0000:00: root bus resource [io 0x1fe02000000-0x1fe02ffffff] (bus address [0x0000-0xffffff])
[ 2.713498] pci_bus 0000:00: root bus resource [mem 0x1ff00000000-0x1ffefffffff] (bus address [0x00000000-0xefffffff])
[ 2.714886] pci_bus 0000:00: root bus resource [bus 00-02]
[ 2.717517] pci 0000:00:01.1: [108e:5000] type 01 class 0x060400
[ 2.723764] pci_bus 0000:01: extended config space not accessible
[ 2.727535] pci 0000:01:01.0: [108e:1000] type 00 class 0x068000
[ 2.728600] pci 0000:01:01.0: reg 0x10: [mem 0x1ff20000000-0x1ff20ffffff]
[ 2.729777] pci 0000:01:01.0: reg 0x14: [io 0x1fe02000000-0x1fe02007fff]
[ 2.732178] pci 0000:01:01.1: [108e:1001] type 00 class 0x020000
[ 2.733401] pci 0000:01:01.1: reg 0x10: [mem 0x1ff21000000-0x1ff21007fff]
[ 2.735381] pci 0000:01:03.0: [1095:0646] type 00 class 0x01018f
[ 2.736350] pci 0000:01:03.0: reg 0x10: [io 0x1fe02008000-0x1fe02008007]
[ 2.737534] pci 0000:01:03.0: reg 0x14: [io 0x1fe02008080-0x1fe02008083]
[ 2.738512] pci 0000:01:03.0: reg 0x18: [io 0x1fe02008100-0x1fe02008107]
[ 2.739440] pci 0000:01:03.0: reg 0x1c: [io 0x1fe02008180-0x1fe02008183]
[ 2.740375] pci 0000:01:03.0: reg 0x20: [io 0x1fe02008200-0x1fe0200820f]
[ 2.742427] pci 0000:00:01.0: [108e:5000] type 01 class 0x060400
[ 2.744667] pci_bus 0000:02: extended config space not accessible
[ 2.776941] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[ 2.778061] HugeTLB registered 8.00 MiB page size, pre-allocated 0 pages
[ 2.779017] HugeTLB registered 256 MiB page size, pre-allocated 0 pages
[ 2.779919] HugeTLB registered 2.00 GiB page size, pre-allocated 0 pages
[ 4.199862] iommu: Default domain type: Translated
[ 4.207715] vgaarb: loaded
[ 4.235564] NetLabel: Initializing
[ 4.236756] NetLabel: domain hash size = 128
[ 4.238155] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 4.241185] NetLabel: unlabeled traffic allowed by default
[ 4.243463] /pci@1f,0/pci@1,1/ebus@1/eeprom@14,2000: Mostek regs at 0x1fe02002000
[ 4.249517] clocksource: Switched to clocksource tick
[ 4.629212] VFS: Disk quotas dquot_6.6.0
[ 4.630918] VFS: Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[ 4.642264] AppArmor: AppArmor Filesystem Enabled
[ 4.689680] NET: Registered protocol family 2
[ 4.698617] IP idents hash table entries: 16384 (order: 4, 131072 bytes, linear)
[ 4.710330] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 8192 bytes, linear)
[ 4.711828] TCP established hash table entries: 8192 (order: 3, 65536 bytes, linear)
[ 4.713083] TCP bind hash table entries: 8192 (order: 3, 65536 bytes, linear)
[ 4.714871] TCP: Hash tables configured (established 8192 bind 8192)
[ 4.717352] UDP hash table entries: 512 (order: 1, 16384 bytes, linear)
[ 4.719156] UDP-Lite hash table entries: 512 (order: 1, 16384 bytes, linear)
[ 4.726293] NET: Registered protocol family 1
[ 4.727998] NET: Registered protocol family 44
[ 4.729527] PCI: CLS 0 bytes, default 64
[ 4.738914] Trying to unpack rootfs image as initramfs...
[ 7.886706] Freeing initrd memory: 22144K
[ 7.888752] power: Control reg at 1fe02007240
[ 7.900422] Initialise system trusted keyrings
[ 7.904369] Key type blacklist registered
[ 7.906528] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[ 7.952956] zbud: loaded
[ 7.960728] integrity: Platform Keyring initialized
[ 7.962084] Key type asymmetric registered
[ 7.963280] Asymmetric key parser 'x509' registered
[ 7.964801] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 7.970269] io scheduler mq-deadline registered
[ 8.174534] ffe30af0: ttyS0 at MMIO 0x1fe020003f8 (irq = 5, base_baud = 115387) is a 16550A
[ 8.178607] Console: ttyS0 (SU)
[ 8.186949] printk: console [ttyS0] enabled
[ 8.192027] printk: bootconsole [earlyprom0] disabled
[ 8.214901] mousedev: PS/2 mouse device common for all mice
[ 8.227989] rtc-m48t59 rtc-m48t59.0: IRQ index 0 not found
[ 8.232791] rtc-m48t59 rtc-m48t59.0: registered as rtc0
[ 8.234575] rtc-m48t59 rtc-m48t59.0: setting system clock to 2021-06-23T13:29:50 UTC (1624454990)
[ 8.255307] ledtrig-cpu: registered to indicate activity on CPUs
[ 8.263115] NET: Registered protocol family 10
[ 8.977363] Segment Routing with IPv6
[ 8.978700] mip6: Mobile IPv6
[ 8.979075] NET: Registered protocol family 17
[ 8.979980] mpls_gso: MPLS GSO support
[ 8.981109] registered taskstats version 1
[ 8.981809] Loading compiled-in X.509 certificates
[ 9.294055] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
[ 9.295522] Loaded X.509 cert 'Debian Secure Boot Signer 2021 - linux: 4b6ef5abca669825178e052c84667ccbc0531f8c'
[ 9.297123] zswap: loaded using pool lzo/zbud
[ 9.299869] Key type ._fscrypt registered
[ 9.300037] Key type .fscrypt registered
[ 9.300191] Key type fscrypt-provisioning registered
[ 9.302853] AppArmor: AppArmor sha1 policy hashing enabled
[ 9.389341] This architecture does not have kernel memory protection.
[ 9.389923] Run /init as init process
[ 9.390216] with arguments:
[ 9.390288] /init
[ 9.390338] with environment:
[ 9.390384] HOME=/
[ 9.390430] TERM=linux
[ 14.160665] scsi_mod: module verification failed: signature and/or required key missing - tainting kernel
[ 14.322883] sunhme.c:v3.10 August 26, 2008 David S. Miller (davem@davemloft.net)
[ 14.345423] SCSI subsystem initialized
[ 14.538804] eth0: HAPPY MEAL (PCI/CheerIO) 10/100BaseT Ethernet
[ 14.539233] 52:54:00:12:34:56
[ 14.596989] libata version 3.00 loaded.
[ 14.756623] scsi host0: pata_cmd64x
[ 14.831271] scsi host1: pata_cmd64x
[ 14.833056] ata1: PATA max UDMA/33 cmd 0x1fe02008000 ctl 0x1fe02008080 bmdma 0x1fe02008200 irq 8
[ 14.833416] ata2: PATA max UDMA/33 cmd 0x1fe02008100 ctl 0x1fe02008180 bmdma 0x1fe02008208 irq 8
[ 14.838870] pata_cmd64x: active 10 recovery 10 setup 3.
[ 14.839135] pata_cmd64x: active 10 recovery 10 setup 3.
[ 15.014514] ata1.01: NODEV after polling detection
[ 15.017506] ata1.00: ATA-7: QEMU HARDDISK, 2.5+, max UDMA/100
[ 15.018168] ata1.00: 16777216 sectors, multi 16: LBA48
[ 15.019626] pata_cmd64x: active 3 recovery 1 setup 1.
[ 15.167071] scsi 0:0:0:0: Direct-Access ATA QEMU HARDDISK 2.5+ PQ: 0 ANSI: 5
[ 15.208257] pata_cmd64x: active 10 recovery 10 setup 3.
[ 15.208320] pata_cmd64x: active 10 recovery 10 setup 3.
[ 15.366651] ata2.01: NODEV after polling detection
[ 15.374686] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 15.375190] pata_cmd64x: active 4 recovery 2 setup 1.
[ 15.406280] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
[ 16.159120] hme 0000:01:01.1 enp1s1f1: renamed from eth0
[ 16.529104] sr 1:0:0:0: [sr0] scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[ 16.530166] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 16.575813] sd 0:0:0:0: [sda] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB)
[ 16.585076] sd 0:0:0:0: [sda] Write Protect is off
[ 16.585587] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 16.613084] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 16.687372] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 16.706470] sda: sda1 sda2 sda3 sda4
[ 16.888612] sd 0:0:0:0: [sda] Attached SCSI disk
[ 19.565143] PM: Image not found (code -22)
[ 19.575836] random: fast init done
[ 20.781347] crc32c_sparc64: sparc64 crc32c opcode not available.
[ 21.063724] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[ 22.562728] Not activating Mandatory Access Control as /sbin/tomoyo-init does not exist.
[ 24.447845] random: crng init done
[ 25.431555] systemd[1]: Inserted module 'autofs4'
[ 26.132824] systemd[1]: systemd 247.3-5 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD -SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified)
[ 26.148835] systemd[1]: Detected architecture sparc64.
[ 26.258345] systemd[1]: Set hostname to <debian>.
[ 42.759510] systemd[1]: Queued start job for default target Graphical Interface.
[ 42.865457] systemd[1]: Created slice system-getty.slice.
[ 42.908740] systemd[1]: Created slice system-modprobe.slice.
[ 42.936756] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 42.964127] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 42.991388] systemd[1]: Created slice User and Session Slice.
[ 43.007927] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 43.051846] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 43.089656] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ 43.113175] systemd[1]: Reached target Local Encrypted Volumes.
[ 43.124516] systemd[1]: Reached target Paths.
[ 43.136465] systemd[1]: Reached target Remote File Systems.
[ 43.146693] systemd[1]: Reached target Slices.
[ 43.171505] systemd[1]: Listening on Syslog Socket.
[ 43.201222] systemd[1]: Listening on fsck to fsckd communication Socket.
[ 43.222577] systemd[1]: Listening on initctl Compatibility Named Pipe.
[ 43.251467] systemd[1]: Listening on Journal Audit Socket.
[ 43.272630] systemd[1]: Listening on Journal Socket (/dev/log).
[ 43.295215] systemd[1]: Listening on Journal Socket.
[ 43.322506] systemd[1]: Listening on udev Control Socket.
[ 43.340170] systemd[1]: Listening on udev Kernel Socket.
[ 43.431381] systemd[1]: Mounting Huge Pages File System...
[ 43.544086] systemd[1]: Mounting POSIX Message Queue File System...
[ 43.742769] systemd[1]: Mounting Kernel Debug File System...
[ 43.984081] systemd[1]: Mounting Kernel Trace File System...
[ 44.292134] systemd[1]: Starting Set the console keyboard layout...
[ 44.474322] systemd[1]: Starting Create list of static device nodes for the current kernel...
[ 44.818461] systemd[1]: Starting Load Kernel Module configfs...
[ 45.111839] systemd[1]: Starting Load Kernel Module drm...
[ 45.465143] systemd[1]: Starting Load Kernel Module fuse...
[ 45.564290] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
[ 45.584864] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
[ 46.116927] systemd[1]: Starting Journal Service...
[ 46.677268] systemd[1]: Starting Load Kernel Modules...
[ 46.756127] fuse: init (API version 7.32)
[ 46.982301] systemd[1]: Starting Remount Root and Kernel File Systems...
[ 47.245137] systemd[1]: Starting Coldplug All udev Devices...
[ 48.515090] systemd[1]: Mounted Huge Pages File System.
[ 48.636903] systemd[1]: Mounted POSIX Message Queue File System.
[ 48.760569] systemd[1]: Mounted Kernel Debug File System.
[ 48.859040] systemd[1]: Mounted Kernel Trace File System.
[ 49.059735] systemd[1]: Finished Create list of static device nodes for the current kernel.
[ 49.304031] systemd[1]: modprobe@configfs.service: Succeeded.
[ 49.431574] systemd[1]: Finished Load Kernel Module configfs.
[ 49.673685] systemd[1]: modprobe@drm.service: Succeeded.
[ 49.767328] systemd[1]: Finished Load Kernel Module drm.
[ 49.971012] systemd[1]: modprobe@fuse.service: Succeeded.
[ 50.051282] systemd[1]: Finished Load Kernel Module fuse.
[ 50.523315] systemd[1]: Mounting FUSE Control File System...
[ 50.896486] systemd[1]: Mounting Kernel Configuration File System...
[ 52.400680] systemd[1]: Mounted FUSE Control File System.
[ 52.495289] systemd[1]: Mounted Kernel Configuration File System.
[ 56.899409] systemd[1]: Finished Load Kernel Modules.
[ 57.238947] systemd[1]: Starting Apply Kernel Variables...
[ 57.659168] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro
[ 58.259161] systemd[1]: Finished Remount Root and Kernel File Systems.
[ 58.361432] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[ 58.405318] systemd[1]: Condition check resulted in Platform Persistent Storage Archival being skipped.
[ 58.653291] systemd[1]: Starting Load/Save Random Seed...
[ 59.029827] systemd[1]: Starting Create System Users...
[ 63.225620] systemd[1]: Started Journal Service.
[ 70.624026] systemd-journald[163]: Received client request to flush runtime journal.
[ 79.853041] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 79.890668] sr 1:0:0:0: Attached scsi generic sg1 type 5
[ 89.404783] Adding 992960k swap on /dev/sda4. Priority:-2 extents:1 across:992960k FS
[ 94.182956] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
[ 94.216709] EXT4-fs (sda1): mounted filesystem without journal. Opts: (null)
[ 94.217381] ext2 filesystem being mounted at /boot supports timestamps until 2038 (0x7fffffff)
[ 102.294187] enp1s1f1: Link is up using
[ 102.294246] internal
[ 102.294539] transceiver at
[ 102.294720] 100Mb/s, Full Duplex.</pre>
<p>Lots of stuff in here, mostly relating to the detection of the relevant bits of emulated hardware. Thus we see the QEMU manufacturer on some devices.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>To get an idea of how the emulated machine compares with real hardware we need some benchmarks...</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>).</p>
<pre class="capturedOutput">[ 2.496167] calibrate_delay_direct() dropping min bogoMips estimate 1 = 436692
[ 2.497405] Calibrating delay using timer specific routine.. 255.71 BogoMIPS (lpj=511431)</pre>
<p>The BogoMips method here uses a timer rather than the system clock, to measure CPU clock ticks in an shorter interval. This method gives a result that is around double the CPU clock speed. So from our result of about 256 BogoMips, we can estimate the processor clock to be around 128 MHz. Which suggests performance around that of the first generation of UltraSPARC workstations, and around half of the expected performance of the Ultra 5 & Ultra 10 workstations.</p>
<p>Note: on some UltraSPARC systems a very low BogoMips result is returned. This is apparently due to an issue with the timer used being of a higher frequency than expected. As far as I can tell this issue does not affect the Ultra 5 & Ultra 10 workstations the QEMU sun4u machine is based on.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<p>First Message Digest 5 (MD5) (<a href="https://en.wikipedia.org/wiki/MD5">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 963775 md5's in 2.99s
Doing md5 for 3s on 64 size blocks: 912624 md5's in 2.99s
Doing md5 for 3s on 256 size blocks: 746261 md5's in 2.99s
Doing md5 for 3s on 1024 size blocks: 430432 md5's in 2.99s
Doing md5 for 3s on 8192 size blocks: 88506 md5's in 2.99s
Doing md5 for 3s on 16384 size blocks: 44569 md5's in 2.99s
OpenSSL 1.1.1k 25 Mar 2021
built on: Thu Mar 25 20:49:34 2021 UTC
options:bn(64,32) rc4(char) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -m64 -mcpu=ultrasparc -DB_ENDIAN -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-RqngBi/openssl-1.1.1k=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 5157.32k 19534.43k 63893.92k 147412.16k 242488.68k 244220.23k</pre>
<p>And then RSA (Rivest–Shamir–Adleman) (<a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)">Wikipedia</a>):</p>
<pre class="capturedOutput">$ openssl speed rsa
Doing 512 bits private rsa's for 10s: 5387 512 bits private RSA's in 9.98s
Doing 512 bits public rsa's for 10s: 47102 512 bits public RSA's in 9.99s
Doing 1024 bits private rsa's for 10s: 1142 1024 bits private RSA's in 9.97s
Doing 1024 bits public rsa's for 10s: 19684 1024 bits public RSA's in 9.98s
Doing 2048 bits private rsa's for 10s: 177 2048 bits private RSA's in 10.04s
Doing 2048 bits public rsa's for 10s: 6441 2048 bits public RSA's in 9.99s
Doing 3072 bits private rsa's for 10s: 61 3072 bits private RSA's in 10.03s
Doing 3072 bits public rsa's for 10s: 3054 3072 bits public RSA's in 9.98s
Doing 4096 bits private rsa's for 10s: 27 4096 bits private RSA's in 10.03s
Doing 4096 bits public rsa's for 10s: 1755 4096 bits public RSA's in 9.97s
Doing 7680 bits private rsa's for 10s: 5 7680 bits private RSA's in 11.47s
Doing 7680 bits public rsa's for 10s: 527 7680 bits public RSA's in 10.00s
Doing 15360 bits private rsa's for 10s: 1 15360 bits private RSA's in 17.50s
Doing 15360 bits public rsa's for 10s: 135 15360 bits public RSA's in 10.05s
OpenSSL 1.1.1k 25 Mar 2021
built on: Thu Mar 25 20:49:34 2021 UTC
options:bn(64,32) rc4(char) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -m64 -mcpu=ultrasparc -DB_ENDIAN -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-RqngBi/openssl-1.1.1k=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
sign verify sign/s verify/s
rsa 512 bits 0.001853s 0.000212s 539.8 4714.9
rsa 1024 bits 0.008730s 0.000507s 114.5 1972.3
rsa 2048 bits 0.056723s 0.001551s 17.6 644.7
rsa 3072 bits 0.164426s 0.003268s 6.1 306.0
rsa 4096 bits 0.371481s 0.005681s 2.7 176.0
rsa 7680 bits 2.294000s 0.018975s 0.4 52.7
rsa 15360 bits 17.500000s 0.074444s 0.1 13.4</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 242,488.68k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 2.7</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 176.0</li>
</ul>
<p>These provide a rough idea of computational workload performance for this particular machine. From the collected results these figures look very good considering this is emulation.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>QEMU's sun4u machine is a generic UltraSPARC IIi system, with similarities to Sun's Ultra 5 and Ultra 10 workstations, which supports Linux well. Performance is less than for those workstations (as expected of emulation of a late 1990s workstation), and looks to be more akin to the Ultra 1 and Ultra 2 workstations. Still this is more than sufficient for typical hobbyist usage.</p>
<h3 style="text-align: left;">Further Sources</h3>
<p>More information can be found at:</p>
<ul style="text-align: left;">
<li><a href="https://en.wikipedia.org/wiki/SPARC">SPARC - Wikipedia</a></li>
<li><a href="https://tldp.org/HOWTO/html_single/SPARC-HOWTO/">SPARC-HOWTO</a> from the Linux Documentation Project (TLDP)</li>
<li><a href="https://web.archive.org/web/19961226191940/http://www.redhat.com/news/rhl4.0.html">Announcing Red Hat Linux 4.0</a> - Wayback Machine Dec-1996</li>
<li><a href="https://web.archive.org/web/19991009084434/http://www.redhat.com/corp/support/hardware/index.html">Red Hat Hardware Compatibility Lists</a> - Wayback Machine Oct-1999</li>
<li><a href="https://www.debian.org/releases/slink/">Debian 2.1 (slink) Information</a></li>
<li><a href="https://web.archive.org/web/19961220112644/http://www.sun.com/smi/Press/sunflash/9511/sunflash.951107.19779.html">11/7/95 - SUN CHANGES RULES OF THE GAME WITH NEW SYSTEMS THAT WILL LAUNCH USERS INTO NETWORK AGE</a> - Wayback Machine Dec-1996</li>
<li><a href="http://sunsite.uakom.sk/sunworldonline/swol-11-1995/swol-11-fusion.hardware.html">A look at the Ultra hardware - SunWorld - November 1995</a></li>
<li><a href="https://web.archive.org/web/20001014104554/http://www.sun.com/smi/Press/sunflash/1995-11/sunflash.951107.19690.html">11/7/95 - NEW SUN SERVERS POST BREAKTHROUGH PERFORMANCE, THROUGHPUT FOR WORKGROUPS AND PC LANS</a> - Wayback Machine Oct-2000</li>
<li><a href="http://sunsite.uakom.sk/sunworldonline/swol-10-1995/swol-10-hal.html">HAL's 64-bit challenge - SunWorld - October 1995</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/SPARC">Documentation/Platforms/SPARC - QEMU</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-46732211716042993372021-06-21T07:54:00.009+01:002022-05-21T16:16:36.326+01:00Linux for Alpha on AlphaVM-Free - System Information<h3 style="text-align: left;">AlphaVM-Free & Alpha Linux</h3>
<p>The AlphaVM family of system emulators from <a href="https://emuvm.com/">EmuVM</a>, provide a means to emulate members of the Tsunami family of Alpha based systems from Compaq and HP. Mainly targeted at providing a migration option for existing Alpha systems running OpenVMS or Tru64 UNIX, this emulator is also capable of running <a href="http://www.alphalinux.org/">Linux for Alpha</a>.</p>
<p>The Alpha (<a href="https://en.wikipedia.org/wiki/DEC_Alpha">Wikipedia</a>) was the first non Intel x86 platform to have support integrated into the Linux kernel back in the mid 1990s. Linus Torvalds discusses the integration of Alpha and SPARC into Linux and the challenges of developing a portable operating system in his 1997 M.Sc. thesis: "<a href="https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf">Linux: a Portable Operating System</a>". While the retirement of Alpha systems by Compaq and HP means the remaining hardware is aging, and Linux has been ported to many more systems since, there are still some use cases for Linux on Alpha. But moving away from potentially unreliable and increasingly uncommon hardware has become very desirable. One option for accomplishing this is using a system emulator.</p>
<p>The AlphaVM system emulator is one such possibility and a free version of AlphaVM (AlphaVM-Free) was offered as an evaluation and hobbyist product. This complemented the supported commercial offering (AlphaVM-Pro) which provides increased capabilities and full support. Apparently due to licence abuse (see <a href="https://raymii.org/s/blog/The_sad_state_of_Alpha_emulators_for_OpenVMS.html">The sad state of Alpha emulators (for OpenVMS) - Raymii.org</a>) the free version has been since replaced with a low cost option (AlphaVM-Basic).</p>
<p>To have a look at the emulator's capabilities and how well it manages to run Linux, I've setup a legacy AlphaVM-Free system in a Debian Linux 10 (buster) virtual machine and installed Debian Linux 5 (lenny) from the distribution DVD.</p>
<p>Note that AlphaVM requires the CMPXCHG16B instruction to be available on the host. In my case this meant I had to update the VirtualBox configuration for the Debian Linux 10 host virtual machine to allow access to this instruction (see <a href="https://forums.virtualbox.org/viewtopic.php?f=9&t=50648">virtualbox.org: View topic - hot to enable CMPXCHG16B instruction</a>).</p>
<span><a name='more'></a></span>
<h4>Emulated System</h4>
<p>AlphaVM-Free emulates a range of systems in the Tsunami family of systems, which were based on the 21272 (Tsunami) and 21274 (Typhoon) chipsets:</p>
<ul>
<li>Extreme Performance (XP) workstations:</li>
<ul>
<li>Compaq XP900</li>
<li>Compaq XP1000</li>
</ul>
<li>Departmental Server (DS):</li>
<ul>
<li>Compaq DS10, DS10L</li>
<li>Compaq DS20, DS20E, DS20L</li>
</ul>
<li>Enterprise Server (ES):</li>
<ul>
<li>Compaq ES40</li>
</ul>
</ul>
<p>The DS and ES lines were available in server (AlphaServer) and workstation (AlphaStation) enclosures, the XP line only had a workstation. The the Tsunami/Typhoon chipsets were also used in the AlphaPC 264DP board and its derivatives (e.g. API UP2000 and UP2000+).</p>
<p>For this exploration I've selected a DS10 system with an EV6. Compaq sold the system with a configuration like:</p>
<p>Compaq AlphaServer DS10 6/466:</p>
<ul>
<li>CPU: Alpha 21264 (EV6) at 466 MHz</li>
<li>RAM: 256 MiB to 2 GiB</li>
<li>Network: <i>built-in</i> dual 10/100 ethernet - Tulip 21143 (DE500)</li>
<li>Disk controller:</li>
<ul>
<li><i>built-in</i> dual IDE (provided by Acer Labs 1543C)</li>
<li>SCSI option: Ultra2 (KZPCA-AA; NCR53c895), Ultra3 (KZPEA-DB; AIC-7899)</li>
</ul>
<li>Graphics: <i>optional</i></li>
<ul>
<li>3Dlabs Oxygen VX1 (<i>aka.</i> Permedia 3; PBXGF)</li>
<li>ELSA Gloria Synergy (Permedia 2; PBXGK)</li>
<li>Multi-function DEPVD and DEPVZ cards, include a Permedia 2 graphics adapter</li>
<li>PowerStorm 300 or 350 (REALimage 2100; PBXGD)</li>
</ul>
<li>Audio: <i>optional</i></li>
<ul>
<li>Ensoniq PCI 1373 audio card (ES1373; AVH10)</li>
</ul>
<li>Misc.: Acer Labs 1543C providing: dual IDE, Floppy, USB, 2 serial, 1 parallel, keyboard & mouse (PS/2)</li>
</ul>
<p>AlphaVM uses substitutions for some of the standard configuration hardware, and doesn't provide graphics or audio support. Since I want to see how some of the alternative device options turn out I've made a couple of additional substitutions:</p>
<ul>
<li>CPU: Alpha 21264 (EV6) at 466 MHz</li>
<li>RAM: 1 GiB</li>
<li>Network interfaces:</li>
<ul>
<li>DE500 10/100 Mb/s ethernet (Tulip 21143)</li>
<li>DE435 10 Mb/s ethernet (Tulip 21040)</li>
</ul>
<li>Disk controller:</li>
<ul>
<li>SCSI: QLogic ISP 1020 SCSI controller with 22 GB, 2 GB and CD-ROM drives</li>
</ul>
<li>Misc.: 2 serial</li>
</ul>
<p>The other integrated devices don't appear to be available to configure, so I'm assuming they are not present in the emulation.</p>
<h4 style="text-align: left;">Emulator Command</h4>
<p>AlphaVM uses a configuration file for the emulated system specification, and this is simply referenced in the command-line:</p>
<pre class="capturedOutput">$ alphavm_free config.emu</pre>
<p>The <tt>config.emu</tt> file I'm using is:</p>
<pre class="capturedOutput">system {
type = ds10_466;
reported_type = default;
num_cpus = 1;
ssn = 'EmuVM-00-000-001';
interval_clock_freq = 1000;
memory {
size = 1024;
}
cpu {
server = basic;
jit {
async = yes;
}
}
serial com1 {
server = socket;
port = 3000;
}
scsi_controller qla0 {
scsi_id = 7;
}
scsi_disk dka0 {
scsi_bus = 0;
scsi_id = 0;
scsi_lun = 0;
file = 'disk01.dd';
caching = no;
write_through = yes;
}
scsi_cdrom iso {
scsi_id = 4;
file = 'ISO/debian-5010-alpha-DVD-1.iso';
}
ether eth0 {
type = dec21143;
server = dummy;
mac_address = 0x08002B000001;
}
ether eth1 {
type = dec21040;
server = dummy;
mac_address = 0x08002B000002;
}
}</pre>
<p>Note: this system profile (<tt>ds10_466</tt>) always provides two ethernet interfaces, which by default are dummy devices. Here this default is overridden to give us one each of the two supported types of adapter (DE500 & DE435) with distinct MAC addresses.</p>
<p>Unlike a real DS10, where the supplied CD-ROM drive is on an IDE bus, the only option here is to configure the CD-ROM drive as a SCSI device, in this case mapped to an ISO image of the Debian Linux 5 (lenny) installation DVD.</p>
<h3 align="left">System Information</h3>
<p>So lets see what the firmware and operating system have to say about emulated platform.</p>
<h4 style="text-align: left;">SRM Firmware</h4>
<p>The AlphaVM-Free version of the SRM firmware doesn't provide the capabilities of the SRM console on a real DS10, however it does provide the core "show devices" command for reporting potential boot devices:</p>
<pre class="capturedOutput">>>> sh dev
pka SCSI Controller
dka0 SCSI 0 14 0 0 0 0 0
dka400 SCSI 0 14 0 0 400 0 0
ewa MOP 0 9 0 0 0 3 0 (08:00:2b:00:00:01)
ewb MOP 0 11 0 0 0 3 0 (08:00:2b:00:00:02)</pre>
<p>So there is the SCSI controller, the system disk (dka0), the CD-ROM drive (dka400) and the two ethernet adapters (ewa & ewb).</p>
<h4>uname</h4>
<p>Operating system name, version, revision and platform information:</p>
<pre class="capturedOutput">$ uname -a
Linux alvm-deb5 2.6.26-2-alpha-generic #1 Sun Mar 4 21:08:03 UTC 2012 alpha GNU/Linux</pre>
<p>So a "<tt>Linux</tt>" kernel, release "<tt>2.6.26-2-alpha-generic</tt>", version "<tt>#1 Sun Mar 4 21:08:03 UTC 2012</tt>", on "<tt>alpha</tt>" for operating system "<tt>GNU/Linux</tt>" on a node named "<tt>alvm-deb5</tt>".</p>
<h4 style="text-align: left;">lsb_release</h4>
<p>Linux Standard Base (LSB) release information:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0.10 (lenny)
Release: 5.0.10
Codename: lenny</pre>
<p>A more readable version of the operating system information, including the Debian release codename. May require installation of the 'lsb-release' package.</p>
<h4 style="text-align: left;">/proc/cpuinfo</h4>
<p>System processor(s) information:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
cpu : Alpha
cpu model : EV6
cpu variation : 7
cpu revision : 0
cpu serial number : AlphaVM-CPU-00
system type : Tsunami
system variation : Webbrick
system revision : 0
system serial number : EmuVM-00-000-001"
cycle frequency [Hz] : 462962962
timer frequency [Hz] : 1000.00
page size [bytes] : 8192
phys. address bits : 44
max. addr. space # : 255
BogoMIPS : 1712.96
kernel unaligned acc : 0 (pc=0,va=0)
user unaligned acc : 0 (pc=0,va=0)
platform string : AlphaServer DS10 466 MHz
cpus detected : 1
L1 Icache : 64K, 2-way, 64b line
L1 Dcache : 64K, 2-way, 64b line
L2 cache : n/a
L3 cache : n/a</pre>
<p>On more recent versions of Linux an 'lscpu' command is often provided that reports a more digestible version of this information, and includes a few additional properties.</p>
<h4 style="text-align: left;">lspci</h4>
<p>List PCI bus devices and lookup names in device database:</p>
<pre class="capturedOutput">$ lspci
00:07.0 ISA bridge: Intel Corporation 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge (rev 03)
00:09.0 Ethernet controller: Digital Equipment Corporation DECchip 21142/43 (rev 30)
00:0b.0 Ethernet controller: Digital Equipment Corporation DECchip 21040 [Tulip] (rev 20)
00:0e.0 SCSI storage controller: QLogic Corp. ISP1020 Fast-wide SCSI (rev 04)</pre>
<p>The "PCI to ISA Bridge" is part of an Intel System I/O (SIO) chip that provides access to various devices (see <a href="https://www.cebix.net/downloads/bebox/82378zb.pdf">SIO/SIO.A Datasheet</a>) on a real system.</p>
<p>The raw PCI information can be found in:</p>
<pre class="capturedOutput">$ cat /proc/bus/pci/devices
0038 80860484 0 0 9000000 0 0 0 0 0 0 10000 0 0 0 0 0
0048 10110019 1d 8001 9010000 0 0 0 0 0 100 1000 0 0 0 0 0 tulip
0058 10110002 1e 8401 9011000 0 0 0 0 0 100 1000 0 0 0 0 0 de2104x
0070 10771020 23 8801 9012000 0 0 0 0 0 100 1000 0 0 0 0 0 qla1280</pre>
<p>Which can be a bit difficult to understand.</p>
<h4 style="text-align: left;">lshw</h4>
<p>A tool to produce a hardware report:</p>
<pre class="capturedOutput"># lshw
alvm-deb5
description: Computer
product: AlphaServer DS10 466 MHz
version: Tsunami Webbrick 0
serial: EmuVM-00-000-001"
width: 64 bits
*-core
description: Motherboard
physical id: 0
*-memory
description: System memory
physical id: 0
size: 1GiB
*-cpu
product: Alpha
vendor: Digital Equipment Corporation
physical id: 1
bus info: cpu@0
version: EV6 unknown
size: 462MHz
width: 64 bits
*-isa
description: ISA bridge
product: 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge
vendor: Intel Corporation
physical id: 7
bus info: pci@0000:00:07.0
version: 03
width: 32 bits
clock: 33MHz
capabilities: isa
configuration: latency=0 maxlatency=40 mingnt=20
*-network:0 DISABLED
description: Ethernet interface
product: DECchip 21142/43
vendor: Digital Equipment Corporation
physical id: 9
bus info: pci@0000:00:09.0
logical name: eth0
version: 30
serial: 08:00:2b:00:00:01
width: 32 bits
clock: 33MHz
capabilities: ethernet physical
configuration: broadcast=yes driver=tulip driverversion=1.1.15-NAPI latency=0 maxlatency=40 mingnt=20 module=tulip multicast=yes
*-network:1 DISABLED
description: Ethernet interface
product: DECchip 21040 [Tulip]
vendor: Digital Equipment Corporation
physical id: b
bus info: pci@0000:00:0b.0
logical name: eth1
version: 20
serial: 08:00:2b:00:00:02
size: 10MB/s
capacity: 10MB/s
width: 32 bits
clock: 33MHz
capabilities: ethernet physical tp aui 10bt 10bt-fd
configuration: autonegotiation=on broadcast=yes driver=de2104x driverversion=0.7 duplex=half latency=0 link=no maxlatency=40 mingnt=20 module=de2104x multicast=yes port=twisted pair speed=10MB/s
*-scsi
description: SCSI storage controller
product: ISP1020 Fast-wide SCSI
vendor: QLogic Corp.
physical id: e
bus info: pci@0000:00:0e.0
logical name: scsi0
version: 04
width: 32 bits
clock: 33MHz
capabilities: scsi
configuration: driver=qla1280 latency=0 maxlatency=40 mingnt=20 module=qla1280
*-disk
description: SCSI Disk
product: HD image
vendor: EmuVM
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 0001
size: 9GiB (9663MB)
capacity: 9GiB (9663MB)
configuration: ansiversion=2
*-cdrom
description: SCSI CD-ROM
product: CDROM ISO image
vendor: EmuVM
physical id: 0.4.0
bus info: scsi@0:0.4.0
logical name: /dev/cdrom
logical name: /dev/scd0
logical name: /dev/sr0
logical name: /media/cdrom0
version: 0001
capacity: 4436MiB (4651MB)
capabilities: removable audio
configuration: ansiversion=2 mount.fstype=iso9660 mount.options=ro,nosuid,nodev,noexec state=mounted status=ready
*-medium
physical id: 0
logical name: /dev/cdrom
logical name: /media/cdrom0
capacity: 4436MiB (4651MB)
configuration: mount.fstype=iso9660 mount.options=ro,nosuid,nodev,noexec state=mounted</pre>
<p>This looks like the configured system, although the configured ISA devices aren't covered.</p>
<p>Requires installation of the 'lshw' package.</p>
<h4 style="text-align: left;">report-hw</h4>
<p>A script which runs various commands (including some of those above) to produce a hardware report for the system:</p>
<pre class="capturedOutput"># report-hw
umame -a: Linux alvm-deb5 2.6.26-2-alpha-generic #1 Sun Mar 4 21:08:03 UTC 2012 alpha GNU/Linux
lspci -knn: 00:07.0 ISA bridge [0601]: Intel Corporation 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge [8086:0484] (rev 03)
lspci -knn: 00:09.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019] (rev 30)
lspci -knn: Kernel driver in use: tulip
lspci -knn: Kernel modules: tulip
lspci -knn: 00:0b.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21040 [Tulip] [1011:0002] (rev 20)
lspci -knn: Kernel driver in use: de2104x
lspci -knn: Kernel modules: de2104x
lspci -knn: 00:0e.0 SCSI storage controller [0100]: QLogic Corp. ISP1020 Fast-wide SCSI [1077:1020] (rev 04)
lspci -knn: Kernel driver in use: qla1280
lspci -knn: Kernel modules: qla1280
lsmod: Module Size Used by
lsmod: nls_utf8 2464 1
lsmod: isofs 45064 1
lsmod: zlib_inflate 18008 1 isofs
lsmod: udf 108768 0
lsmod: nls_base 9704 3 nls_utf8,isofs,udf
lsmod: crc_itu_t 2496 1 udf
lsmod: loop 18624 0
lsmod: evdev 12441 0
lsmod: pcspkr 3472 0
lsmod: ext3 159168 1
lsmod: jbd 60240 1 ext3
lsmod: sg 40216 0
lsmod: sr_mod 22412 1
lsmod: cdrom 44968 1 sr_mod
lsmod: sd_mod 31984 4
lsmod: qla1280 125848 4
lsmod: scsi_mod 189184 4 sg,sr_mod,sd_mod,qla1280
lsmod: de2104x 27652 0
lsmod: tulip 65160 0
lsmod: bitrev 2624 1 tulip
lsmod: crc32 4800 2 de2104x,tulip
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: /dev/sda2 8175224 596648 7163296 8% /
df: tmpfs 514760 0 514760 0% /lib/init/rw
df: udev 10240 1088 9152 11% /dev
df: tmpfs 514760 0 514760 0% /dev/shm
df: /dev/sda1 105386 11782 87982 12% /boot
df: /dev/sr0 4541512 4541512 0 100% /media/cdrom0
free: total used free shared buffers cached
free: Mem: 1029520 84832 944688 0 22328 35336
free: -/+ buffers/cache: 27168 1002352
free: Swap: 1004040 0 1004040
/proc/cmdline: ro root=/dev/sda2
/proc/cpuinfo: cpu : Alpha
/proc/cpuinfo: cpu model : EV6
/proc/cpuinfo: cpu variation : 7
/proc/cpuinfo: cpu revision : 0
/proc/cpuinfo: cpu serial number : AlphaVM-CPU-00
/proc/cpuinfo: system type : Tsunami
/proc/cpuinfo: system variation : Webbrick
/proc/cpuinfo: system revision : 0
/proc/cpuinfo: system serial number : EmuVM-00-000-001"
/proc/cpuinfo: cycle frequency [Hz] : 462962962
/proc/cpuinfo: timer frequency [Hz] : 1000.00
/proc/cpuinfo: page size [bytes] : 8192
/proc/cpuinfo: phys. address bits : 44
/proc/cpuinfo: max. addr. space # : 255
/proc/cpuinfo: BogoMIPS : 1712.96
/proc/cpuinfo: kernel unaligned acc : 0 (pc=0,va=0)
/proc/cpuinfo: user unaligned acc : 0 (pc=0,va=0)
/proc/cpuinfo: platform string : AlphaServer DS10 466 MHz
/proc/cpuinfo: cpus detected : 1
/proc/cpuinfo: L1 Icache : 64K, 2-way, 64b line
/proc/cpuinfo: L1 Dcache : 64K, 2-way, 64b line
/proc/cpuinfo: L2 cache : n/a
/proc/cpuinfo: L3 cache : n/a
/proc/ioports: 00000000-01ffffff : PCI IO bus 0
/proc/ioports: 00000000-0000001f : dma1
/proc/ioports: 00000020-0000003f : pic1
/proc/ioports: 00000040-0000005f : timer
/proc/ioports: 00000060-0000006f : keyboard
/proc/ioports: 00000070-00000080 : rtc
/proc/ioports: 000000a0-000000bf : pic2
/proc/ioports: 000000c0-000000df : dma2
/proc/ioports: 000002f8-000002ff : serial
/proc/ioports: 000003f8-000003ff : serial
/proc/ioports: 00008000-000080ff : 0000:00:09.0
/proc/ioports: 00008000-000080ff : tulip
/proc/ioports: 00008400-000084ff : 0000:00:0b.0
/proc/ioports: 00008400-000084ff : de2104x
/proc/ioports: 00008800-000088ff : 0000:00:0e.0
/proc/iomem: 00000000-3fffffff : PCI mem bus 0
/proc/iomem: 09000000-0900ffff : 0000:00:07.0
/proc/iomem: 09010000-09010fff : 0000:00:09.0
/proc/iomem: 09010000-09010fff : tulip
/proc/iomem: 09011000-09011fff : 0000:00:0b.0
/proc/iomem: 09011000-09011fff : de2104x
/proc/iomem: 09012000-09012fff : 0000:00:0e.0
/proc/interrupts: 2: 0 XT-PIC cascade
/proc/interrupts: 3: 56 XT-PIC serial
/proc/interrupts: 4: 70750 XT-PIC serial
/proc/interrupts: 8: 2425282 RTC +timer
/proc/interrupts: 35: 30987 DP264 qla1280
/proc/interrupts: ERR: 0
/proc/meminfo: MemTotal: 1029520 kB
/proc/meminfo: MemFree: 944808 kB
/proc/meminfo: Buffers: 22328 kB
/proc/meminfo: Cached: 35336 kB
/proc/meminfo: SwapCached: 0 kB
/proc/meminfo: Active: 34016 kB
/proc/meminfo: Inactive: 30384 kB
/proc/meminfo: SwapTotal: 1004040 kB
/proc/meminfo: SwapFree: 1004040 kB
/proc/meminfo: Dirty: 184 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 6776 kB
/proc/meminfo: Mapped: 3776 kB
/proc/meminfo: Slab: 14016 kB
/proc/meminfo: SReclaimable: 10792 kB
/proc/meminfo: SUnreclaim: 3224 kB
/proc/meminfo: PageTables: 576 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 1518800 kB
/proc/meminfo: Committed_AS: 39520 kB
/proc/meminfo: VmallocTotal: 8388608 kB
/proc/meminfo: VmallocUsed: 1560 kB
/proc/meminfo: VmallocChunk: 8386904 kB
/proc/bus/input/devices: I: Bus=0010 Vendor=001f Product=0001 Version=0100
/proc/bus/input/devices: N: Name="PC Speaker"
/proc/bus/input/devices: P: Phys=isa0061/input0
/proc/bus/input/devices: S: Sysfs=/class/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=kbd event0
/proc/bus/input/devices: B: EV=40001
/proc/bus/input/devices: B: SND=6
/proc/bus/input/devices: </pre>
<p>Coverage of some of the missing devices here.</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System boot messages:</p>
<pre class="capturedOutput"># dmesg
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.26-2-alpha-generic (Debian 2.6.26-29) (dannf@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 Sun Mar 4 21:08:03 UTC 2012
[ 0.000000] Booting GENERIC on Tsunami variation Webbrick using machine vector Webbrick from SRM
[ 0.000000] Major Options: MAGIC_SYSRQ
[ 0.000000] Command line: ro root=/dev/sda2
[ 0.000000] memcluster 0, usage 1, start 0, end 256
[ 0.000000] memcluster 1, usage 0, start 256, end 131072
[ 0.000000] freeing pages 256:2048
[ 0.000000] freeing pages 2987:131072
[ 0.000000] reserving pages 2987:2989
[ 0.000000] Initial ramdisk at: 0xfffffc003f62e000 (9240441 bytes)
[ 0.000000] On node 0 totalpages: 131072
[ 0.000000] DMA zone: 896 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 130176 pages, LIFO batch:15
[ 0.000000] Normal zone: 0 pages used for memmap
[ 0.000000] Movable zone: 0 pages used for memmap
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130176
[ 0.000000] Kernel command line: ro root=/dev/sda2
[ 0.000000] PID hash table entries: 4096 (order: 12, 32768 bytes)
[ 0.000000] Using epoch = 2000
[ 0.000000] Setting RTC_FREQ to 1024 Hz (20)
[ 0.000000] Turning on RTC interrupts.
[4194001.855599] Console: colour dummy device 80x25
[4194001.855599] console [tty0] enabled
[4194001.869271] Dentry cache hash table entries: 131072 (order: 7, 1048576 bytes)
[4194001.892708] Inode-cache hash table entries: 65536 (order: 6, 524288 bytes)
[4194002.327279] Memory: 1019512k/1048576k available (2162k kernel code, 26336k reserved, 3314k data, 304k init)
[4194002.331185] Calibrating delay loop... 1712.96 BogoMIPS (lpj=835584)
[4194002.369271] Security Framework initialized
[4194002.369271] Capability LSM initialized
[4194002.369271] Mount-cache hash table entries: 512
[4194002.373177] Initializing cgroup subsys ns
[4194002.373177] Initializing cgroup subsys cpuacct
[4194002.373177] Initializing cgroup subsys devices
[4194002.394661] net_namespace: 1208 bytes
[4194002.399544] NET: Registered protocol family 16
[4194002.406380] EISA bus registered
[4194002.408333] pci: enabling save/restore of SRM state
[4194002.426888] Linux Plug and Play Support v0.97 (c) Adam Belay
[4194002.449349] NET: Registered protocol family 2
[4194002.465950] IP route cache hash table entries: 32768 (order: 5, 262144 bytes)
[4194002.476693] TCP established hash table entries: 131072 (order: 8, 2097152 bytes)
[4194002.510872] TCP bind hash table entries: 65536 (order: 6, 524288 bytes)
[4194002.524544] TCP: Hash tables configured (established 131072 bind 65536)
[4194002.524544] TCP reno registered
[4194002.531380] NET: Registered protocol family 1
[4194002.535286] checking if image is initramfs... it is
[4194054.565533] Freeing initrd memory: 9023k freed
[4194054.578228] VFS: Disk quotas dquot_6.5.1
[4194054.578228] Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[4194054.581158] msgmni has been set to 2010
[4194054.583111] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[4194054.583111] io scheduler noop registered
[4194054.583111] io scheduler anticipatory registered
[4194054.583111] io scheduler deadline registered
[4194054.585064] io scheduler cfq registered (default)
[4194054.585064] isapnp: Scanning for PnP cards...
[4194055.301861] isapnp: No Plug & Play device found
[4194055.371197] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[4194055.375103] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16450
[4194055.375103] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16450
[4194055.417095] brd: module loaded
[4194055.418072] i8042.c: No controller found.
[4194055.421001] mice: PS/2 mouse device common for all mice
[4194055.442486] TCP cubic registered
[4194055.443462] NET: Registered protocol family 17
[4194055.445415] registered taskstats version 1
[4194055.450298] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[4194055.452251] Freeing unused kernel memory: 304k freed
[4194164.165086] Linux Tulip driver version 1.1.15-NAPI (Feb 27, 2007)
[4194164.166063] PCI: Setting latency timer of device 0000:00:09.0 to 64
[4194164.181688] eth0: Digital DS21142/43 Tulip rev 48 at Port 0x8000, 08:00:2b:00:00:01, IRQ 29.
[4194165.574265] de2104x PCI Ethernet driver v0.7 (Mar 17, 2004)
[4194165.596726] eth1: 21040 at 0xfffffd0009011000, 08:00:2b:00:00:02, IRQ 30
[4194165.596726] PCI: Setting latency timer of device 0000:00:0b.0 to 64
[4194167.297897] SCSI subsystem initialized
[4194168.386764] qla1280: QLA1040 found on PCI bus 0, dev 14
[4194168.386764] PCI: Setting latency timer of device 0000:00:0e.0 to 64
[4194176.574260] scsi(0:0): Resetting SCSI BUS
[4194180.295937] scsi0 : QLogic QLA1040 PCI to SCSI Host Adapter
[4194180.295937] Firmware version: 7.65.06, Driver version 3.26
[4194180.302773] scsi 0:0:0:0: Direct-Access EmuVM HD image 0001 PQ: 0 ANSI: 2
[4194180.302773] scsi(0:0:0:0): Sync: period 10, offset 12, Wide, Tagged queuing: depth 31
[4194181.026406] scsi 0:0:4:0: CD-ROM EmuVM CDROM ISO image 0001 PQ: 0 ANSI: 2
[4194181.026406] scsi(0:0:4:0): Sync: period 10, offset 12, Wide
[4194184.553748] Driver 'sd' needs updating - please use bus_type methods
[4194184.553748] sd 0:0:0:0: [sda] 18874368 512-byte hardware sectors (9664 MB)
[4194184.553748] sd 0:0:0:0: [sda] Write Protect is off
[4194184.562537] sd 0:0:0:0: [sda] Mode Sense: b7 00 10 08
[4194184.562537] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
[4194184.563513] sd 0:0:0:0: [sda] 18874368 512-byte hardware sectors (9664 MB)
[4194184.563513] sd 0:0:0:0: [sda] Write Protect is off
[4194184.563513] sd 0:0:0:0: [sda] Mode Sense: b7 00 10 08
[4194184.565467] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA
[4194184.565467] sda: sda1 sda2 sda3 sda4
[4194184.571326] sd 0:0:0:0: [sda] Attached SCSI disk
[4194187.596715] Driver 'sr' needs updating - please use bus_type methods
[4194187.598668] sr0: scsi3-mmc drive: 0x/0x caddy
[4194187.598668] Uniform CD-ROM driver Revision: 3.20
[4194187.599645] sr 0:0:4:0: Attached scsi CD-ROM sr0
[4194190.095737] sd 0:0:0:0: Attached scsi generic sg0 type 0
[4194190.095737] sr 0:0:4:0: Attached scsi generic sg1 type 5
[4194206.111354] kjournald starting. Commit interval 5 seconds
[4194206.111354] EXT3-fs: mounted filesystem with ordered data mode.
[4194212.936546] udevd version 125 started
[4194349.144484] input: PC Speaker as /class/input/input0
[4194357.962839] Adding 1004040k swap on /dev/sda4. Priority:-1 extents:1 across:1004040k
[4194358.339792] EXT3 FS on sda2, internal journal
[4194361.133736] loop: module loaded
[4195148.941926] UDF-fs: No VRS found
[4195148.950715] ISO 9660 Extensions: Microsoft Joliet Level 3
[4195149.699738] ISO 9660 Extensions: RRIP_1991A</pre>
<p>Lots of stuff here, so I'll only pick out some highlights...</p>
<ul>
<li>The SCSI controller is reported as a "QLogic QLA1040 PCI to SCSI Host Adapter" here, but other commands show it as a "QLogic Corp. ISP1020 Fast-wide SCSI"</li>
<li>The drives have a manufacturer string of "<tt>EmuVM</tt>", which tells us we are under emulation.</li>
</ul>
<p>Picking through the output might find more gems.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing? To find out we're going to need a benchmark to complement the BogoMips pseudo-benchmark detailed in '<tt>/proc/cpuinfo</tt>' and '<tt>dmesg</tt>'.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>OpenSSL provides a means of assessing the performance of the provided cryptographic algorithms using the provided 'openssl' tool, and is installed as part of the standard packages. Since we're going to be comparing against other older systems and the published AlphaVM benchmarks (<a href="https://emuvm.com/support/benchmarks/">Benchmarks - EmuVM</a>) we'll look at the older MD5 and RSA algorithms:</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 89725 md5's in 5.43s
Doing md5 for 3s on 64 size blocks: 66920 md5's in 5.30s
Doing md5 for 3s on 256 size blocks: 41124 md5's in 5.44s
Doing md5 for 3s on 1024 size blocks: 15721 md5's in 5.47s
Doing md5 for 3s on 8192 size blocks: 2362 md5's in 5.58s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:51:04 UTC 2012
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIO -O3 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=1024 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 264.49k 807.67k 1934.40k 2941.06k 3470.64k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 969 512 bit private RSA's in 18.66s
Doing 512 bit public rsa's for 10s: 14727 512 bit public RSA's in 18.47s
Doing 1024 bit private rsa's for 10s: 283 1024 bit private RSA's in 18.14s
Doing 1024 bit public rsa's for 10s: 6001 1024 bit public RSA's in 18.28s
Doing 2048 bit private rsa's for 10s: 56 2048 bit private RSA's in 18.22s
Doing 2048 bit public rsa's for 10s: 2061 2048 bit public RSA's in 18.25s
Doing 4096 bit private rsa's for 10s: 10 4096 bit private RSA's in 19.80s
Doing 4096 bit public rsa's for 10s: 631 4096 bit public RSA's in 18.15s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:51:04 UTC 2012
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIO -O3 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=1024 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 0.019258s 0.001254s 51.9 797.5
rsa 1024 bits 0.064112s 0.003046s 15.6 328.3
rsa 2048 bits 0.325439s 0.008853s 3.1 113.0
rsa 4096 bits 1.979980s 0.028769s 0.5 34.8</pre>
<p>Extracting relevant figures for comparisons:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 3,470.64k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.5</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 34.8</li>
</ul>
<p>Looking at the published AlphaVM benchmarks (<a href="https://emuvm.com/support/benchmarks/">Benchmarks - EmuVM</a>), which include figures from a real DS10 6/466:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 42,636k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 3.5</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 232.0</li>
</ul>
<p>It is evident that the emulated DS10 6/466 is much slower than the real thing, by about an order of magnitude. However this is with a version of AlphaVM with a basic emulation for the processor, that doesn't include features that improve the emulation performance. The figures for AlphaVM-Pro how how much difference tuning the emulation can make:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 234,367k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 14.3</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 961.1</li>
</ul>
<p>With this particular set of results showing performance that surpasses the real hardware.</p>
<p>For rough comparisons of other platforms and emulators see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>AlphaVM-Free seems to run Linux for Alpha pretty well, certainly well enough for most hobbyist requirements.</p>
<p>It is interesting that comparing the benchmark performance seen here, with that observed running Linux for Alpha in QEMU on the same host system (see <a href="https://boxes-of-tat.blogspot.com/2021/06/linux-for-alpha-on-qemu-system.html">Linux for Alpha on QEMU - System Information</a>), suggests that computational workloads of this nature would work better on QEMU than on AlphaVM-Free. The published benchmarks suggest that AlphaVM-Pro product would be better still.</p>
<h3 align="left">Further Sources</h3>
<p>More information can be found at:</p>
<p></p>
<ul>
<li><a href="http://www.ema-tech.co.uk/alphavm-1-5-11-windows.pdf">AlphaVM for Windows: User Manual</a></li>
<li><a href="https://silo.tips/download/alphavm-for-linux-user-manual-3">[PDF] AlphaVM for Linux User Manual - Free Download PDF</a></li>
<li><a href="https://astr0baby.wordpress.com/2014/04/07/running-tru64-unix-inside-a-vm-for-metasploit-testing/">Running Tru64 UNIX inside a VM for Metasploit testing | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://astr0baby.wordpress.com/2017/02/20/unix-os-archaeology-tru64-unix-part-2/">Unix OS archaeology &#8211; Tru64 UNIX part 2 | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://astr0baby.wordpress.com/2019/09/28/tru64-5-1b-unix-and-oracle-9i-infosec-exercise/">Tru64 5.1B Unix and Oracle 9i infosec exercise | Astr0baby&#039;s not so random thoughts _____ rand() % 100;</a></li>
<li><a href="https://forums.virtualbox.org/viewtopic.php?f=9&t=50648">virtualbox.org: View topic - hot to enable CMPXCHG16B instruction</a></li>
</ul>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-57717328307082543192021-06-14T17:38:00.006+01:002022-05-21T16:17:52.110+01:00HP Tru64 on FreeAXP - System Information<h3 style="text-align: left;">FreeAXP</h3>
<p><a href="http://www.migrationspecialties.com/">Migration Specialties International, Inc.</a> provide a services for the maintenance and migration of OpenVMS and Tru64 operating system environments. Part of their offering uses system emulation to provide an option to migrate from aging hardware on to modern systems. As an evaluation and hobbyist tool, they also provide a free version of their system emulator system: <a href="http://www.migrationspecialties.com/FreeAXP.html">FreeAXP</a> which emulates a DEC Alpha (AXP) based AlphaServer 400 with the specification:</p>
<ul>
<li>RAM: 32MB to 128MB</li>
<li>Up to 7 SCSI disks</li>
<li>Up to 2 network interfaces</li>
<li>2 serial ports (used for system console)</li>
<li>Capable of running OpenVMS or Tru64</li>
</ul>
<p>So having downloaded and installed the emulator, I've configured a emulated system for testing with Tru64:</p>
<ul>
<li>CPU: a DECchip 21064 (EV4) Alpha processor</li>
<li>RAM: 128 MB</li>
<li>SCSI controller: KZPAA (53c810) - narrow SCSI, max. 7 devices</li>
<ul>
<li>Id 0: RZ40L SCSI Hard disk - 8 GB</li>
<li>Id 6: RRD42 SCSI CD-ROM drive - mapped to system optical drive</li>
</ul>
<li>Network interface: DE500 (21143)</li>
</ul>
<p>FreeAXP uses a version of the SRM firmware from the AlphaServer 400, which can tell us a bit about the system before we install an operating system.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">SRM System Firmware</h3>
<p>Since FreeAXP uses a full version of the SRM firmware (<a href="https://en.wikipedia.org/wiki/System_Reference_Manual">Wikipedia</a>) we can use SRM commands to get information about the hardware in the system and about operating system support. Information about the available SRM commands can be found in appendix "A: Console Commands" in the "Digital AlphaServer™ 400 Series: User Information" manual (<a href="https://manx-docs.org/collections/antonio/dec/MDS-2000-01/cd1/ALPHA/PCSVAUIA.PDF">PDF</a>).</p>
<h4 style="text-align: left;">show version</h4>
<p>Firmware version:</p>
<pre class="capturedOutput">>>>show version
version V7.0-9 Mar 18 1999 13:25:37</pre>
<p>Checking the <a href="ftp://ftp.hp.com/pub/alphaserver/firmware/retired_platforms/servers/AS400/">AlphaServer 400 firmware on the HP FTP site</a>, the latest version available there provides SRM v7.0, which according to the documentation supports: OpenVMS 6.2, 7.0, 7.1, & 7.2; and Digital UNIX 3.2 and 4.0. The system firmware also included ARC 4.58 for running MS Windows NT 3.51 or 4.0. However the documentation is from March 1999, before the release of Compaq Tru64 5.0 in July 1999. All the AlphaServer systems were supported by Tru64 through to the last release of HP Tru64 5.1B-6 in October 2010. The AlphaServer 400 was by OpenVMS through to OpenVMS 8.2 released Feb 2005.</p>
<p>While the emulator's limited hardware selection renders it a bit moot, later versions of the firmware also provide a wider range of hardware support, in particular for graphics adapters, network interfaces and disk controllers. On real hardware this makes itself felt when looking for devices that can be used for booting and supported graphics adapters.</p>
<h4 style="text-align: left;">show memory</h4>
<p>Report memory configuration:</p>
<pre class="capturedOutput">>>>show memory
128 Meg of System Memory
Bank 0 = 64 Mbytes(32 MB Per Simm) Starting at 0x0
Bank 1 = 64 Mbytes(32 MB Per Simm) Starting at 0x4000000
Bank 2 = No Memory Detected</pre>
<p>This is consistent with the required configuration for 128 MiB in an AlphaServer 400.</p>
<h4 style="text-align: left;">show device</h4>
<p>Report storage and network devices:</p>
<pre class="capturedOutput">>>>show device
dka0.0.0.6.0 DKA0 RZ40L 8203
dka600.6.0.6.0 DKA600 RRD42 4.5d
dva0.0.0.0.1 DVA0
ewa0.0.0.11.0 EWA0 0A-00-27-00-00-0F
pka0.7.0.6.0 PKA0 SCSI Bus ID 7</pre>
<p>These devices are:</p>
<ul>
<li>PKA0 - SCSI controller (SCSI id 7)</li>
<ul>
<li>DKA0 - first SCSI disk (SCSI id 0)</li>
<li>DKA600 - sixth SCSI disk (SCSI id 6)</li>
</ul>
<li>DVA0 - first floppy disk drive</li>
<li>EWA - first ethernet controller - DEC Tulip chipset based (e.g. DE500)</li>
</ul>
<p>For more information about SRM device names see <a href="https://tldp.org/HOWTO/SRM-HOWTO/x99.html">SRM Device Naming</a>. Since the device id is needed to run other commands (e.g. boot), this is very commonly used, and often abbreviated to things like "sho dev", "sh dev" or even "sh d".</p>
<h4 style="text-align: left;">show pal</h4>
<p>Details of the PALcode (<a href="https://en.wikipedia.org/wiki/PALcode">Wikipedia</a>) included in the firmware:</p>
<pre class="capturedOutput">>>>show pal
pal VMS PALcode V5.56-2, OSF PALcode X1.46-2</pre>
<p>So the firmware provides PALcode for OpenVMS and DEC OSF/1 / Digital UNIX / Compaq Tru-64 / HP Tru64. The OSF PALcode is also used by Linux, NetBSD and OpenBSD.</p>
<h4 style="text-align: left;">show config</h4>
<p>Report the system configuration:</p>
<pre class="capturedOutput">>>>show config
Firmware
SRM Console: V7.0-9
show_arc: Can't find Flash Rom containing ARC console.
PALcode: VMS PALcode V5.56-2, OSF PALcode X1.46-2
Serial Rom: V4.6
Diag Rom: V1.7
Processor
DECchip (tm) 21064-3 166Mhz 512KB Cache
MEMORY
128 Meg of System Memory
Bank 0 = 64 Mbytes(32 MB Per Simm) Starting at 0x0
Bank 1 = 64 Mbytes(32 MB Per Simm) Starting at 0x4000000
Bank 2 = No Memory Detected
PCI Bus
Bus 00 Slot 06: NCR 810A Scsi Controller
pka0.7.0.6.0 SCSI Bus ID 7
dka0.0.0.6.0 RZ40L
dka600.6.0.6.0 RRD42
Bus 00 Slot 07: Intel SIO 82378
Bus 00 Slot 11: DE500-BA Network Controller
ewa0.0.0.11.0 0A-00-27-00-00-0F
ISA
Slot Device Name Type Enabled BaseAddr IRQ DMA
0
0 MOUSE Embedded Yes 60 12
1 KBD Embedded Yes 60 1
2 COM1 Embedded Yes 3f8 4
3 COM2 Embedded Yes 2f8 3
4 LPT1 Embedded Yes 3bc 7
5 FLOPPY Embedded Yes 3f0 6 2</pre>
<p>The AlphaServer 400 system firmware contained both SRM and AlphaBIOS (ARC) allowing the system to switch between them if needing to run MS Windows NT for Alpha. Since MS Windows support was dropped back in 1999, during the development of MS Windows 2000, and few applications were created specifically for the Alpha version of MS Windows NT, it is unsurprising that FreeAXP has omitted the ARC firmware need.</p>
<p>The processor is confirmed to be an Alpha 21064 (EV4) chip, I'm assuming the '-3' suffix relates to a processor design revision which didn't involve a production process change. The DECchip name was use by DECs semiconductor business.</p>
<p>The installed KZPAA SCSI controller lets us know that it is NCR 810A (53c810a) based, and the model is reported for the DE500-BA ethernet adapter. The device name (ewa) for the DE500 indicates it is DEC Tulip based which is well supported on operating systems available for Alpha. The DEC Tulip ethernet adapters had a number of models and revisions of the ethernet adapters, some of which have behaviors that need additional configuration, so this information is useful to have.</p>
<h3 style="text-align: left;">HP Tru64</h3>
<p>The UNIX on Alpha systems is an OSF/1 (<a href="https://en.wikipedia.org/wiki/OSF/1">Wikipedia</a>) derivative. This was originally called DEC OSF/1 AXP, a name used through to the OSF/1 3.0 release in 1994. In 1995 there was a re-brand with the release of Digital UNIX 3.2. After the acquisition by Compaq in 1998, there was another re-brand with the 1999 release of Compaq Tru64 UNIX 4.0F. The Tru64 name stuck through Compaq's merger with HP, and was used through to the last release in 2010 of HP Tru64 UNIX 5.1B-6.</p>
<p>For looking at the emulated system I've installed HP Tru64 UNIX 5.1B. so let's see what Tru64 has to say about the emulated machine.</p>
<h4 style="text-align: left;">uname</h4>
<p>System version and architecture information:</p>
<pre class="capturedOutput"># uname -a
OSF1 faxp-tru64 V5.1 2650 alpha</pre>
<p>OSF1 is the system name for Tru64 and its predecessors, the release is V5.1, and the version 2650, which is the 'B' update, running on an Alpha.</p>
<h4 style="text-align: left;">sizer</h4>
<p>Reports on the system and/or kernel. In this case we use:</p>
<ul>
<li><tt>-v</tt> to get the operating system version string</li>
<li><tt>-c</tt> to get the CPU type</li>
<li><tt>-implver</tt> to get the processor family name</li>
</ul>
<p>So lets see what we have...</p>
<pre class="capturedOutput"># sizer -v
Compaq Tru64 UNIX V5.1B (Rev. 2650); Tue May 11 20:40:38 BST 2021
# sizer -c
cpu "DEC2100_A50"
# sizer -implver
EV4</pre>
<p>The OS version string confirms this is Tru64 5.1B.</p>
<p>Not sure what is going on with the CPU type. The AlphaServer 2100 line was originally marketed as the Digital 2100 AXP when it was introduced in 1994, before the change to AlphaStation and AlphaServer branding for the workstation and server lines. But the 2100 line is part of the "Sable" family of Alpha systems, and the AlphaServer 400 product line (<a href="https://en.wikipedia.org/wiki/AlphaServer">Wikipedia</a>) was part of the Avanti family. This might suggest a connection during development, but I haven't found any documentation confirming that.</p>
<p>The processor family is EV4 which is correct for the Alpha 21064 chip (the 21064A would be EV45), which is the expected chip for an AlphaServer 400 4/166.</p>
<h4 style="text-align: left;">psrinfo</h4>
<p>Report processor information:</p>
<pre class="capturedOutput"># psrinfo -v
Status of processor 0 as of: 05/14/21 19:54:00
Processor has been on-line since 05/14/2021 19:21:53
The alpha EV4 (21064) processor operates at 1216 MHz,
has a cache size of 262144 bytes,
and has an alpha internal floating point processor.</pre>
<p>We expect one Alpha EV4 and that is what we see. Although the AlphaServer 400 only featured a 166 MHz EV4 (the EV45 model ran at 233 MHz), the system claims we're getting >1 GHz. Great for performance if true...</p>
<h4 style="text-align: left;">hwmgr</h4>
<p>Report hardware information:</p>
<pre class="capturedOutput"># hwmgr view devices
HWID: Device Name Mfg Model Location
------------------------------------------------------------------------------
3: /dev/dmapi/dmapi
4: /dev/scp_scsi
5: /dev/kevm
26: /dev/disk/dsk0c DEC RZ40L bus-0-targ-0-lun-0
27: /dev/disk/cdrom0c DEC RRD42 bus-0-targ-6-lun-0
28: /dev/random
29: /dev/urandom
# hwmgr view hierarchy
HWID: hardware hierarchy
-------------------------------------------------------------------------------
1: platform AlphaServer 400 4/166
2: cpu CPU0
6: bus pci0
7: connection pci0slot6
13: scsi_adapter psiop0
14: scsi_bus scsi0
26: disk bus-0-targ-0-lun-0 dsk0
27: disk bus-0-targ-6-lun-0 cdrom0
9: connection pci0slot7
15: bus isa0
16: connection isa0slot0
17: keyboard keyboard0
18: pointer mouse0
19: connection isa0slot2
20: serial_port tty00
21: connection isa0slot3
22: serial_port tty01
23: connection isa0slot4
24: parallel_port lp0
11: connection pci0slot11
25: network tu0</pre>
<p>So the system is identified as an AlphaServer 400 4/166, as expected, with one CPU, a SCSI hard disk and CD-ROM drives, the typical system ports and a Tulip based network card. All as expected for the emulated system.</p>
<p>Does seem a little odd that SRM reported a floppy controller, but there doesn't appear to be one here. Give that floppies are very seldom used with these systems, and when they are it's for firmware changes, this is a very minor issue.</p>
<h4 style="text-align: left;">vmstat</h4>
<p>Virtual memory information with some additional physical memory information:</p>
<pre class="capturedOutput"># vmstat -P
Total Physical Memory = 128.00 M
= 16384 pages
Physical Memory Clusters:
start_pfn end_pfn type size_pages / size_bytes
0 249 pal 249 / 1.95M
249 16383 os 16134 / 126.05M
16383 16384 pal 1 / 8.00k
Physical Memory Use:
start_pfn end_pfn type size_pages / size_bytes
249 289 scavenge 40 / 320.00k
289 1064 text 775 / 6.05M
1064 1207 data 143 / 1.12M
1207 1435 bss 228 / 1.78M
1435 1630 kdebug 195 / 1.52M
1630 1637 cfgmgmt 7 / 56.00k
1637 1639 locks 2 / 16.00k
1639 1653 pmap 14 / 112.00k
1653 1749 unixtable 96 / 768.00k
1749 1752 logs 3 / 24.00k
1752 2096 vmtables 344 / 2.69M
2096 16383 managed 14287 / 111.62M
============================
Total Physical Memory Use: 16134 / 126.05M
Managed Pages Break Down:
free pages = 2746
active pages = 4322
inactive pages = 0
wired pages = 2159
ubc pages = 5100
==================
Total = 14327
WIRED Pages Break Down:
vm wired pages = 491
ubc wired pages = 0
meta data pages = 441
malloc pages = 779
contig pages = 28
user ptepages = 400
kernel ptepages = 13
free ptepages = 7
==================
Total = 2159</pre>
<p>So the memory system also sees the expected 128 MB from the emulator configuration.</p>
<h3 style="text-align: left;">Benchmarks</h3>
<p>The <tt>psrinfo</tt> result that gives a clock speed >1 GHz is intriguing... So does this machine perform like a >1 GHz Alpha? Let's try some simple benchmarks and see what we get...</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The "busy doing nothing" benchmark, BogoMips were derived from a the need to calibrate a busy-wait loop in the Linux kernel. Fortunately the <a href="https://tldp.org/HOWTO/BogoMips/">BogoMips mini-Howto</a> gives a set of results from real Alpha hardware running Linux (<a href="https://tldp.org/HOWTO/BogoMips/bogo-list.html#AEN280">4.10. Alpha Systems</a>) and other operating systems (<a href="https://tldp.org/HOWTO/BogoMips/bogo-list.html#AEN308">4.17. Non-Linux systems (reference only)</a>) for comparison. The <a href="https://en.wikipedia.org/wiki/BogoMips">BogoMips Wikipedia page</a> features a table giving expected clock speed multipliers for deriving BogoMips readings (<a href="https://en.wikipedia.org/wiki/BogoMips#Proper_BogoMips_ratings">Proper BogoMips Ratings</a>). Since we're not running Linux we'll use a portable implementation (<a href="https://www.ibiblio.org/pub/micro/pc-stuff/Linux/system/status/bogo-1.2.tar.gz">bogo-1.2.tar.gz</a>) of about the same era as most of the collected results.</p>
<p>As an additional check we'll compare against some figures collected on real Alpha hardware running multiple operating systems:</p>
<table border="1">
<tbody>
<tr><th>System Name</th><th>CPU</th><th>MHz</th><th>OS</th><th>BogoMips</th><th>Notes</th></tr>
<tr><td>laurus</td><td>DEC Alpha 21164A (EV56)</td><td align="right">533</td><td>HP Tru64 5.1b</td><td align="right">528.00</td><td>bogomips 1.3</td></tr>
<tr><td>laurus</td><td>DEC Alpha 21164A (EV56)</td><td align="right">533</td><td>Linux 2.2</td><td align="right">528.12</td><td>/proc/cpuinfo</td></tr>
<tr><td>laurus</td><td>DEC Alpha 21164A (EV56)</td><td align="right">533</td><td>NetBSD 1.5.2</td><td align="right">531.55</td><td>bogomips 1.3</td></tr>
<tr><td>laurus</td><td>DEC Alpha 21164A (EV56)</td><td align="right">533</td><td>Linux 2.4</td><td align="right">1059.80</td><td>/proc/cpuinfo</td></tr>
<tr><td>laurus</td><td>DEC Alpha 21164A (EV56)</td><td align="right">533</td><td>Linux 2.6.11</td><td align="right">1059.80</td><td>/proc/cpuinfo</td></tr>
<tr><td>sarothamnus</td><td>Alpha 21264B (EV68AL)</td><td align="right">800</td><td>Linux 2.6.11</td><td align="right">1586.36</td><td>/proc/cpuinfo</td></tr>
</tbody>
</table>
<p>N.B. The doubling of results between the Linux 2.2 and 2.4 kernels was due to some code changes, see "<a href="https://tldp.org/HOWTO/BogoMips/bogo-faq.html#AEN192">3.5. New BogoMips algorithm?</a>" in the BogoMips mini-Howto and the <a href="https://github.com/vitalyvch/Bogo/tree/BogoMIPS_v1.4">README</a> for the BogoMips 1.4 implementation for an explanation.</p>
<p>So using a simple script to run the the <tt>bogomips</tt> program, from the bogo-1.2 distribution, 5 times we get:</p>
<pre class="capturedOutput">faxp-tru64> bogo.sh
Calibrating delay loop.. ok - 150.00 BogoMips
Calibrating delay loop.. ok - 150.00 BogoMips
Calibrating delay loop.. ok - 150.00 BogoMips
Calibrating delay loop.. ok - 150.00 BogoMips
Calibrating delay loop.. ok - 150.00 BogoMips</pre>
<p>Hmmm... that seems very low compared to the >1 GHz clock speed. But wouldn't be too far off if running on real AlphaStation 400 4/166 hardware, where the processor was clocked at 166 MHz, assuming the clock * 0.99 estimate works (166 * 0.99 = 165.34). The estimate is consistent with my own observations on real hardware, which suggests an effective clock speed of about 150 MHz.</p>
<p>However a look at the recorded BogoMips scores for non-Linux systems has scores for older Alpha systems running OSF1 (the old name for Tru64) that are consistently around half the clock speed. Since this emulated machine is aiming for a Alpha EV4, that would suggest an effective clock speed of 300 MHz.</p>
<p>In either case these indicate actual performance is lower than that >1 GHz clock frequency figure would suggest. Which is what we would expect for an emulation since the host is not that much more powerful than the guest (especially since FreeAXP runs single threaded).</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>OpenSSL provides a means of assessing the performance of the provided cryptographic algorithms, and is installed as part of the standard packages for Tru64.</p>
<pre class="capturedOutput"># openssl speed md5
Doing md5 for 3s on 8 size blocks: 165769 md5's in 2.98s
Doing md5 for 3s on 64 size blocks: 93653 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 40673 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 12507 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 1676 md5's in 3.00s
OpenSSL 0.9.6g [engine] 9 Aug 2002
built on: Thu Aug 15 02:59:23 EDT 2002
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,4,long) blowfish(idx)
compiler: cc -DTHREADS -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_RC5 -DNO_HW_KEYCLIENT -pthread -std1 -O4 -readonly_strings
The 'numbers' are in 1000s of bytes per second processed.
type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 444.52k 1997.93k 3470.76k 4269.06k 4576.60k
# openssl speed rsa
Doing 512 bit private rsa's for 10s: 551 512 bit private RSA's in 10.00s
Doing 512 bit public rsa's for 10s: 7364 512 bit public RSA's in 9.98s
Doing 1024 bit private rsa's for 10s: 126 1024 bit private RSA's in 10.02s
Doing 1024 bit public rsa's for 10s: 2582 1024 bit public RSA's in 9.98s
Doing 2048 bit private rsa's for 10s: 22 2048 bit private RSA's in 10.33s
Doing 2048 bit public rsa's for 10s: 754 2048 bit public RSA's in 10.00s
Doing 4096 bit private rsa's for 10s: 4 4096 bit private RSA's in 12.07s
Doing 4096 bit public rsa's for 10s: 217 4096 bit public RSA's in 10.00s
OpenSSL 0.9.6g [engine] 9 Aug 2002
built on: Thu Aug 15 02:59:23 EDT 2002
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,4,long) blowfish(idx)
compiler: cc -DTHREADS -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_RC5 -DNO_HW_KEYCLIENT -pthread -std1 -O4 -readonly_strings
sign verify sign/s verify/s
rsa 512 bits 0.0181s 0.0014s 55.1 737.6
rsa 1024 bits 0.0795s 0.0039s 12.6 258.6
rsa 2048 bits 0.4697s 0.0133s 2.1 75.4
rsa 4096 bits 3.0167s 0.0461s 0.3 21.7</pre>
<p>Extracting relevant figures for comparisons:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 4,576.60k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.3</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 21.7</li>
</ul>
<p>Now to collect more figures for comparison.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>So FreeAXP looks to keep HP Tru64 very happy, and the emulated AlphaServer 400 4/166 hardware looks to match the actual hardware, except for differences in performance and having a few more restrictions on the available hardware.</p>
<p>FreeAXP is targeted at hobbyist customers and as an evaluation product for corporate use. So the limited range of hardware available makes sense, as does the lack of performance tuning options. Part of the performance limitation could be trying to replicate Alpha instruction timings, something that can be important in some applications. This would make a lot of sense of an evaluation product for a service targeted at providing system migration options for applications that cannot be simply moved to other platforms.</p>
<h3 style="text-align: left;">Further Sources</h3>
<ul>
<li>Alpha SRM</li>
<ul>
<li><a href="https://tldp.org/HOWTO/SRM-HOWTO/index.html">SRM Firmware Howto</a></li>
<li><a href="http://www.cilinder.be/docs/digitalalpha/srmcons.pdf">Alpha SRM Console for Alpha Microprocessor Motherboards - User’s Guide</a></li>
</ul>
<li>HP Tru64</li>
<ul>
<li><a href="https://astr0baby.wordpress.com/2019/09/28/tru64-5-1b-unix-and-oracle-9i-infosec-exercise/">Tru64 5.1B Unix and Oracle 9i infosec exercise</a></li>
<li><a href="https://docplayer.net/50404030-Quickspecs-hp-tru64-unix-operating-system-version-5-1b-6-overview-retired.html">QuickSpecs. HP Tru64 UNIX Operating System Version 5.1B-6 Overview. Retired - PDF Free Download</a></li>
</ul>
<li>Linux for Alpha on QEMU</li>
<ul>
<li><a href="https://gmplib.org/~tege/qemu.html">System emulation using QEMU</a></li>
<li><a href="https://virtuallyfun.com/wordpress/2014/02/19/alpha-linux-on-qemu/">Alpha Linux on Qemu</a></li>
</ul>
</ul>
<p><i>Update</i> 16-Jun-2021: added OpenSSL benchmark.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-20253138673271551172021-06-07T11:47:00.004+01:002022-05-21T16:18:41.104+01:00Linux for Alpha on QEMU - System Information<h3>Linux for Alpha</h3>
<p>A long time ago, the Digital Equipment Corporation's (DEC) Alpha processor <i>aka.</i> Alpha AXP (<a href="https://en.wikipedia.org/wiki/DEC_Alpha">Wikipedia</a>) looked to be the future. It dominated the super computer listings, spawned a number of workstation, server and OEM systems, and there was even a MS Windows port. In those heady days it also happened to find itself the target of the first non-x86 port of the Linux kernel. A porting effort at DEC was described by Jim Paradis in a series of <a href="https://www.linuxjournal.com/">Linux Journal</a> Articles (<a href="https://www.linuxjournal.com/article/1044">1</a>, <a href="https://www.linuxjournal.com/article/1177">2</a>, <a href="https://www.linuxjournal.com/article/1178">3</a>) back in 1995, and Linus Torvalds in his 1997 M.Sc. thesis: "<a href="https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf">Linux: a Portable Operating System</a>", discusses the portability of the Linux kernel using the challenges encountered in adding support for Alpha and SPARC as examples.</p>
<p>The Alpha ultimately lost out to the joint HP & Intel Itanium business case when Compaq bought DEC in 1998, with the Alpha IP being sold to Intel in 2001. Compaq merged with HP in 2002, and HP continued marketing Alpha based systems until 2007 and supported the hardware until 2012.</p>
<p>As such there is a desire to replicate Alpha environments on more modern hardware. For some this is a way to run applications that were built for Alpha, and may even be exclusive to that platform. For others its a way to explore the behaviours of older systems and maybe learn from the differences. The <a href="https://www.qemu.org/">QEMU</a> system emulator provides an emulation of an Alpha based system capable of running Linux. Currently there are few Linux distributions that support Alpha...</p>
<span><a name='more'></a></span>
<p>Support for DEC Alpha came to Debian in the 1999 "slink" release (2.1), and the last official release of Debian Linux for Alpha machines was 2009's Debian Linux 5.0 ("lenny"). There in-official releases from the <a href="https://www.debian.org/ports/">Debian Ports</a> project with CD images for Debian Linux 9 ("stretch") currently available. For more recent Linux versions it looks like only the <a href="https://www.gentoo.org/">Gentoo Linux</a> distribution provides an option using current versions of the kernel.</p>
<p>For the sake of simplicity I'm going with a DVD version of the Debian Linux 5.0 ("lenny") release, so I don't have to worry about the status of any of the supporting online archives.</p>
<h3 style="text-align: left;">QEMU</h3>
<p>Sadly the Alpha support in <a href="https://www.qemu.org/">QEMU</a> is not yet at the point of being able to run operating systems (e.g. <a href="http://www.uk.netbsd.org/ports/alpha/">NetBSD</a>, <a href="https://www.openbsd.org/alpha.html">OpenBSD</a>, <a href="https://en.wikipedia.org/wiki/Tru64_UNIX">HP Tru64</a> or <a href="https://vmssoftware.com/products/openvms/">OpenVMS</a>) other than <a href="http://www.alphalinux.org/">Linux for Alpha</a>. Currently the SRM alternative firmware provided is sufficient to load the required PALcode and QEMU when run specifying a kernel and an initrd will run Linux happily. It appears that there is some progress on running NetBSD (see the "<a href="http://mail-index.netbsd.org/port-alpha/2020/02/26/msg001040.html">NetBSD/alpha on qemu-system-alpha</a>" thread) , but it is unclear when this will be suitable for release.</p>
<p>The Alpha machine QEMU emulates is based on the Alpha DP264 platform, this is probably best known as the basis of the Compaq AlphaServer ES40 and Compaq AlphaStation ES40 systems, although a number of other AlphaStations (e.g. XP900 and XP1000), AlphaServers (e.g. DS10 and DS20) and OEM boards (e.g. AlphaPC 264DP and API UP2000) were also based on it. However the QEMU documentation doesn't say much about the default system configuration for the Alpha emulation...</p>
<h3 style="text-align: left;">System Information</h3>
<p>Let's see what the system has to say for itself...</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system name, version and system architecture.</p>
<pre class="capturedOutput">$ uname -a
Linux qalp-d5 2.6.26-2-alpha-generic #1 Sun Mar 4 21:08:03 UTC 2012 alpha GNU/Linux</pre>
<p>So Linux release "2.6.26-2-alpha-generic", version "#1 Sun Mar 4 21:08:03 UTC 2012", on platform "alpha", for operating system "GNU/Linux" on node "qalp-d5".</p>
<h4 align="left">lsb_release</h4>
<p>The Linux Standard Base release information provides a little bit more:</p>
<pre class="capturedOutput">$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0.10 (lenny)
Release: 5.0.10
Codename: lenny</pre>
<p>Confirming the distribution release information, and giving the release code name. Note that 5.0.10 corresponds to the last update to the Debian Linux 5.0 release.</p>
<h4 align="left">/proc/cpuinfo</h4>
<p>Details of the processor:</p>
<pre class="capturedOutput">$ cat /proc/cpuinfo
cpu : Alpha
cpu model : EV67
cpu variation : 0
cpu revision : 0
cpu serial number :
system type : Tsunami
system variation : Clipper
system revision : 0
system serial number : QEMU
cycle frequency [Hz] : 250000000
timer frequency [Hz] : 1024.00
page size [bytes] : 8192
phys. address bits : 40
max. addr. space # : 255
BogoMIPS : 539.92
kernel unaligned acc : 0 (pc=0,va=0)
user unaligned acc : 0 (pc=0,va=0)
platform string : N/A
cpus detected : 1
L1 Icache : 64K, 2-way, 64b line
L1 Dcache : 64K, 2-way, 64b line
L2 cache : n/a
L3 cache : n/a</pre>
<p>The combination of Tsunami & Clipper identifies the emulated system as an Compaq ES40, which sets some expectations.</p>
<p>The default processor is an EV67 running at 250 Mhz and giving a BogoMips score of 539.92. While this matches the processor type for an ES40 (an EV6 at 500 MHZ, an EV67 at 667 MHz or EV68AL at 833 MHz) the speed is much reduced. The BogoMips score is consistent with the stated "cycle frequency", since for the EV6 processors the BogoMips score can be approximated as 1.99 times the clock (1.99 * 250 = 497.5).</p>
<h4>lspci</h4>
<p>Report installed PCI bus devices:</p>
<pre class="capturedOutput"># lspci
00:00.0 VGA compatible controller: Cirrus Logic GD 5446
00:01.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
00:02.0 IDE interface: Silicon Image, Inc. PCI0646 (rev 07)</pre>
<p>Here we see the graphics card (QEMU's default Cirrus Logic emulation), the ethernet interface (Intel e1000) and a Silicon Image IDE disk controller (CMD646 deriviative).</p>
<h4 style="text-align: left;">hw_report</h4>
<p>The <tt>hw_report</tt> script generates a hardware report, by running various commands:</p>
<pre class="capturedOutput"># report-hw
umame -a: Linux qalp-d5 2.6.26-2-alpha-generic #1 Sun Mar 4 21:08:03 UTC 2012 alpha GNU/Linux
lspci -knn: 00:00.0 VGA compatible controller [0300]: Cirrus Logic GD 5446 [1013:00b8]
lspci -knn: Kernel modules: cirrusfb
lspci -knn: 00:01.0 Ethernet controller [0200]: Intel Corporation 82540EM Gigabit Ethernet Controller [8086:100e] (rev 03)
lspci -knn: Kernel driver in use: e1000
lspci -knn: Kernel modules: e1000
lspci -knn: 00:02.0 IDE interface [0101]: Silicon Image, Inc. PCI0646 [1095:0646] (rev 07)
lspci -knn: Kernel driver in use: CMD64x_IDE
lspci -knn: Kernel modules: cmd64x, ide-pci-generic, ata_generic
lsmod: Module Size Used by
lsmod: nls_utf8 2464 1
lsmod: isofs 45064 1
lsmod: zlib_inflate 18008 1 isofs
lsmod: udf 108768 0
lsmod: nls_base 9704 3 nls_utf8,isofs,udf
lsmod: crc_itu_t 2496 1 udf
lsmod: ppdev 10096 0
lsmod: parport_pc 33360 1
lsmod: lp 12888 0
lsmod: parport 47496 3 ppdev,parport_pc,lp
lsmod: ipv6 372312 16
lsmod: loop 18624 0
lsmod: pcspkr 3472 0
lsmod: psmouse 51488 0
lsmod: serio_raw 7292 0
lsmod: evdev 12441 1
lsmod: ext3 159168 1
lsmod: jbd 60240 1 ext3
lsmod: ide_cd_mod 41328 1
lsmod: cdrom 44968 1 ide_cd_mod
lsmod: ide_disk 17030 4
lsmod: ata_generic 6652 0
lsmod: libata 189984 1 ata_generic
lsmod: scsi_mod 189184 1 libata
lsmod: ide_pci_generic 5292 0 [permanent]
lsmod: cmd64x 8294 0 [permanent]
lsmod: ide_core 131928 4 ide_cd_mod,ide_disk,ide_pci_generic,cmd64x
lsmod: e1000 158100 0
df: Filesystem 1K-blocks Used Available Use% Mounted on
df: /dev/hda4 7357608 2253000 4730856 33% /
df: tmpfs 61240 0 61240 0% /lib/init/rw
df: udev 10240 1112 9128 11% /dev
df: tmpfs 61240 0 61240 0% /dev/shm
df: /dev/hda2 73202 20874 48422 31% /boot
df: /dev/hdb 4541512 4541512 0 100% /media/cdrom0
free: total used free shared buffers cached
free: Mem: 122488 104544 17944 0 3936 36688
free: -/+ buffers/cache: 63920 58568
free: Swap: 1875960 135936 1740024
/proc/cmdline: root=/dev/hda4
/proc/cpuinfo: cpu : Alpha
/proc/cpuinfo: cpu model : EV67
/proc/cpuinfo: cpu variation : 0
/proc/cpuinfo: cpu revision : 0
/proc/cpuinfo: cpu serial number :
/proc/cpuinfo: system type : Tsunami
/proc/cpuinfo: system variation : Clipper
/proc/cpuinfo: system revision : 0
/proc/cpuinfo: system serial number : QEMU
/proc/cpuinfo: cycle frequency [Hz] : 250000000
/proc/cpuinfo: timer frequency [Hz] : 1024.00
/proc/cpuinfo: page size [bytes] : 8192
/proc/cpuinfo: phys. address bits : 40
/proc/cpuinfo: max. addr. space # : 255
/proc/cpuinfo: BogoMIPS : 539.92
/proc/cpuinfo: kernel unaligned acc : 0 (pc=0,va=0)
/proc/cpuinfo: user unaligned acc : 0 (pc=0,va=0)
/proc/cpuinfo: platform string : N/A
/proc/cpuinfo: cpus detected : 1
/proc/cpuinfo: L1 Icache : 64K, 2-way, 64b line
/proc/cpuinfo: L1 Dcache : 64K, 2-way, 64b line
/proc/cpuinfo: L2 cache : n/a
/proc/cpuinfo: L3 cache : n/a
/proc/ioports: 00000000-01ffffff : PCI IO bus 0
/proc/ioports: 00000000-0000001f : dma1
/proc/ioports: 00000020-0000003f : pic1
/proc/ioports: 00000040-0000005f : timer
/proc/ioports: 00000060-0000006f : keyboard
/proc/ioports: 00000070-00000080 : rtc
/proc/ioports: 000000a0-000000bf : pic2
/proc/ioports: 000000c0-000000df : dma2
/proc/ioports: 000002f8-000002ff : serial
/proc/ioports: 00000378-0000037a : parport0
/proc/ioports: 000003c0-000003df : alpha-vga+
/proc/ioports: 000003f8-000003ff : serial
/proc/ioports: 00008000-0000803f : 0000:00:01.0
/proc/ioports: 00008000-0000803f : e1000
/proc/ioports: 00008040-0000804f : 0000:00:02.0
/proc/ioports: 00008040-0000804f : CMD646
/proc/ioports: 00008050-00008057 : 0000:00:02.0
/proc/ioports: 00008050-00008057 : CMD646
/proc/ioports: 00008058-0000805f : 0000:00:02.0
/proc/ioports: 00008058-0000805f : CMD646
/proc/ioports: 00008060-00008063 : 0000:00:02.0
/proc/ioports: 00008060-00008063 : CMD646
/proc/ioports: 00008064-00008067 : 0000:00:02.0
/proc/ioports: 00008064-00008067 : CMD646
/proc/iomem: 00000000-3fffffff : PCI mem bus 0
/proc/iomem: 09000000-0903ffff : 0000:00:01.0
/proc/iomem: 09040000-0905ffff : 0000:00:01.0
/proc/iomem: 09040000-0905ffff : e1000
/proc/iomem: 09060000-0906ffff : 0000:00:00.0
/proc/iomem: 09070000-09070fff : 0000:00:00.0
/proc/iomem: 0a000000-0bffffff : 0000:00:00.0
/proc/interrupts: 1: 1371 XT-PIC i8042
/proc/interrupts: 2: 0 XT-PIC cascade
/proc/interrupts: 8: 2931319 RTC +timer
/proc/interrupts: 12: 19914 XT-PIC i8042
/proc/interrupts: 24: 6094 CLIPPER eth0
/proc/interrupts: 28: 73840 CLIPPER ide0
/proc/interrupts: ERR: 0
/proc/meminfo: MemTotal: 122488 kB
/proc/meminfo: MemFree: 18288 kB
/proc/meminfo: Buffers: 3936 kB
/proc/meminfo: Cached: 36688 kB
/proc/meminfo: SwapCached: 30640 kB
/proc/meminfo: Active: 62240 kB
/proc/meminfo: Inactive: 21408 kB
/proc/meminfo: SwapTotal: 1875960 kB
/proc/meminfo: SwapFree: 1740024 kB
/proc/meminfo: Dirty: 200 kB
/proc/meminfo: Writeback: 0 kB
/proc/meminfo: AnonPages: 38656 kB
/proc/meminfo: Mapped: 18824 kB
/proc/meminfo: Slab: 11824 kB
/proc/meminfo: SReclaimable: 4712 kB
/proc/meminfo: SUnreclaim: 7112 kB
/proc/meminfo: PageTables: 2504 kB
/proc/meminfo: NFS_Unstable: 0 kB
/proc/meminfo: Bounce: 0 kB
/proc/meminfo: WritebackTmp: 0 kB
/proc/meminfo: CommitLimit: 1937200 kB
/proc/meminfo: Committed_AS: 325968 kB
/proc/meminfo: VmallocTotal: 8388608 kB
/proc/meminfo: VmallocUsed: 2664 kB
/proc/meminfo: VmallocChunk: 8385320 kB
/proc/bus/input/devices: I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
/proc/bus/input/devices: N: Name="AT Translated Set 2 keyboard"
/proc/bus/input/devices: P: Phys=isa0060/serio0/input0
/proc/bus/input/devices: S: Sysfs=/class/input/input0
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=kbd event0
/proc/bus/input/devices: B: EV=120013
/proc/bus/input/devices: B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
/proc/bus/input/devices: B: MSC=10
/proc/bus/input/devices: B: LED=7
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0010 Vendor=001f Product=0001 Version=0100
/proc/bus/input/devices: N: Name="PC Speaker"
/proc/bus/input/devices: P: Phys=isa0061/input0
/proc/bus/input/devices: S: Sysfs=/class/input/input1
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=kbd event1
/proc/bus/input/devices: B: EV=40001
/proc/bus/input/devices: B: SND=6
/proc/bus/input/devices:
/proc/bus/input/devices: I: Bus=0011 Vendor=0002 Product=0006 Version=0000
/proc/bus/input/devices: N: Name="ImExPS/2 Generic Explorer Mouse"
/proc/bus/input/devices: P: Phys=isa0060/serio1/input0
/proc/bus/input/devices: S: Sysfs=/class/input/input2
/proc/bus/input/devices: U: Uniq=
/proc/bus/input/devices: H: Handlers=mouse0 event2
/proc/bus/input/devices: B: EV=7
/proc/bus/input/devices: B: KEY=1f0000 0 0 0 0
/proc/bus/input/devices: B: REL=143
/proc/bus/input/devices: </pre>
<p>So reports various bit of hardware, using some of the commands we've already used, and a few we haven't. These results identify the IDE controller as a CMD646, and the default memory as 128 MiB.</p>
<h4 align="left">dmesg</h4>
<p>The system messages report on the discovery of hardware and loading of suitable drivers, Due to some messages, I'm looking directly at the system log to get to the same messages.</p>
<pre class="capturedOutput"># head -250 /var/log/syslog
imklog 3.18.6, log source = /proc/kmsg started.
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.26-2-alpha-generic (Debian 2.6.26-29) (dannf@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 Sun Mar 4 21:08:03 UTC 2012
[ 0.000000] Booting GENERIC on Tsunami variation Clipper using machine vector Clipper from SRM
[ 0.000000] Major Options: MAGIC_SYSRQ
[ 0.000000] Command line: root=/dev/hda4
[ 0.000000] memcluster 0, usage 1, start 0, end 15
[ 0.000000] memcluster 1, usage 0, start 15, end 16384
[ 0.000000] freeing pages 15:2048
[ 0.000000] freeing pages 2987:16384
[ 0.000000] reserving pages 2987:2988
[ 0.000000] Initial ramdisk at: 0xfffffc0007728000 (9271610 bytes)
[ 0.000000] 1024K Bcache detected; load hit latency 2 cycles, load miss latency 7 cycles
[ 0.000000] On node 0 totalpages: 16384
[ 0.000000] DMA zone: 112 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 16272 pages, LIFO batch:3
[ 0.000000] Normal zone: 0 pages used for memmap
[ 0.000000] Movable zone: 0 pages used for memmap
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16272
[ 0.000000] Kernel command line: root=/dev/hda4
[ 0.000000] PID hash table entries: 512 (order: 9, 4096 bytes)
[ 0.000000] HWRPB cycle frequency bogus, and unable to estimate a proper value!
[ 0.000000] Using epoch = 1980
[ 0.000000] Turning on RTC interrupts.
[4194001.864388] Console: colour VGA+ 80x25
[4194001.864388] console [tty0] enabled
[4194001.868294] Dentry cache hash table entries: 16384 (order: 4, 131072 bytes)
[4194001.868294] Inode-cache hash table entries: 8192 (order: 3, 65536 bytes)
[4194001.876107] Memory: 113000k/131072k available (2162k kernel code, 17824k reserved, 3314k data, 304k init)
[4194001.880990] Calibrating delay loop... 591.92 BogoMIPS (lpj=288768)
[4194001.911263] Security Framework initialized
[4194001.913216] Capability LSM initialized
[4194001.913216] Mount-cache hash table entries: 512
[4194001.923958] Initializing cgroup subsys ns
[4194001.923958] Initializing cgroup subsys cpuacct
[4194001.923958] Initializing cgroup subsys devices
[4194001.945443] net_namespace: 1208 bytes
[4194001.949349] NET: Registered protocol family 16
[4194001.958138] EISA bus registered
[4194001.964974] pci: enabling save/restore of SRM state
[4194001.985482] Linux Plug and Play Support v0.97 (c) Adam Belay
[4194002.008919] NET: Registered protocol family 2
[4194002.018685] IP route cache hash table entries: 1024 (order: 0, 8192 bytes)
[4194002.025521] TCP established hash table entries: 4096 (order: 3, 65536 bytes)
[4194002.025521] TCP bind hash table entries: 4096 (order: 2, 32768 bytes)
[4194002.026497] TCP: Hash tables configured (established 4096 bind 4096)
[4194002.026497] TCP reno registered
[4194002.030404] NET: Registered protocol family 1
[4194002.036263] checking if image is initramfs... it is
[4194004.932746] Freeing initrd memory: 9054k freed
[4194004.940558] VFS: Disk quotas dquot_6.5.1
[4194004.940558] Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[4194004.942512] msgmni has been set to 238
[4194004.944465] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[4194004.944465] io scheduler noop registered
[4194004.945441] io scheduler anticipatory registered
[4194004.945441] io scheduler deadline registered
[4194004.945441] io scheduler cfq registered (default)
[4194004.946418] isapnp: Scanning for PnP cards...
[4194005.392707] isapnp: No Plug & Play device found
[4194005.425910] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[4194005.427863] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[4194005.428839] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[4194005.448371] brd: module loaded
[4194005.452277] serio: i8042 KBD port at 0x60,0x64 irq 1
[4194005.452277] serio: i8042 AUX port at 0x60,0x64 irq 12
[4194005.459113] mice: PS/2 mouse device common for all mice
[4194005.466925] TCP cubic registered
[4194005.466925] NET: Registered protocol family 17
[4194005.468879] registered taskstats version 1
[4194005.468879] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[4194005.468879] Freeing unused kernel memory: 304k freed
[4194005.565558] input: AT Translated Set 2 keyboard as /class/input/input0
[4194018.421020] Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
[4194018.421020] Copyright (c) 1999-2006 Intel Corporation.
[4194018.422973] PCI: Setting latency timer of device 0000:00:01.0 to 64
[4194018.823364] e1000: 0000:00:01.0: e1000_probe: (PCI:33MHz:32-bit) 52:54:00:12:34:56
[4194018.980590] Uniform Multi-Platform E-IDE driver
[4194018.980590] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[4194019.174926] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[4194019.175903] CMD646: IDE controller (0x1095:0x0646 rev 0x07) at PCI slot 0000:00:02.0
[4194019.176879] CMD646: UltraDMA capable
[4194019.176879] CMD646: 100% native mode on irq 28
[4194019.176879] CMD646: IDE port disabled
[4194019.177856] PCI: Setting latency timer of device 0000:00:02.0 to 64
[4194019.177856] ide0: BM-DMA at 0x8040-0x8047
[4194019.178832] Probing IDE interface ide0...
[4194019.592895] hda: QEMU HARDDISK, ATA DISK drive
[4194020.438597] hdb: QEMU DVD-ROM, ATAPI CD/DVD-ROM drive
[4194020.491332] hda: host max PIO5 wanted PIO255(auto-tune) selected PIO4
[4194020.492308] hda: UDMA/33 mode selected
[4194020.493285] hdb: host max PIO5 wanted PIO255(auto-tune) selected PIO0
[4194020.493285] hdb: UDMA/33 mode selected
[4194020.493285] ide0 at 0x8050-0x8057,0x8062 on irq 28
[4194020.641722] SCSI subsystem initialized
[4194020.669066] libata version 3.00 loaded.
[4194021.238402] hda: max request size: 512KiB
[4194021.238402] hda: 18874368 sectors (9663 MB) w/256KiB Cache, CHS=16383/255/63
[4194021.242308] hda: cache flushes supported
[4194021.243285] hda: hda1 hda2 hda3 hda4
[4194021.286253] hdb: ATAPI 4X DVD-ROM drive, 512kB Cache
[4194021.289183] Uniform CD-ROM driver Revision: 3.20
[4194024.497189] EXT3-fs: INFO: recovery required on readonly filesystem.
[4194024.497189] EXT3-fs: write access will be enabled during recovery.
[4194027.244258] kjournald starting. Commit interval 5 seconds
[4194027.244258] EXT3-fs: recovery complete.
[4194027.246211] EXT3-fs: mounted filesystem with ordered data mode.
[4194030.163202] udevd version 125 started
[4194048.779403] input: PC Speaker as /class/input/input1
[4194049.038192] input: ImExPS/2 Generic Explorer Mouse as /class/input/input2
[4194053.147565] Adding 1875960k swap on /dev/hda3. Priority:-1 extents:1 across:1875960k
[4194053.719830] EXT3 FS on hda4, internal journal
[4194055.919048] loop: module loaded
[4194062.981544] e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[origin software="rsyslogd" swVersion="3.18.6" x-pid="1253" x-info="http://www.rsyslog.com"] restart
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 10.0.2.2
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 10.0.2.15 -- renewal in 36045 seconds.
Found user 'avahi' (UID 104) and group 'avahi' (GID 109).
Successfully dropped root privileges.
avahi-daemon 0.6.23 starting up.
Successfully called chroot().
Successfully dropped remaining capabilities.
No service file found in /etc/avahi/services.
[4194069.542088] NET: Registered protocol family 10
[4194069.546971] lo: Disabled Privacy Extensions
Joining mDNS multicast group on interface eth0.IPv6 with address fe80::5054:ff:fe12:3456.
New relevant interface eth0.IPv6 for mDNS.
Joining mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
New relevant interface eth0.IPv4 for mDNS.
Network interface enumeration completed.
Registering new address record for fe80::5054:ff:fe12:3456 on eth0.*.
Registering new address record for 10.0.2.15 on eth0.IPv4.
Registering HINFO record with values 'ALPHA'/'LINUX'.
[4194070.707126] parport0: PC-style at 0x378 [PCSPP,TRISTATE]
[4194070.898533] lp0: using parport0 (polling).
Server startup complete. Host name is qalp-d5.local. Local service cookie is 1033850574.
[4194071.242282] ppdev: user-space parallel port driver
Leaving mDNS multicast group on interface eth0.IPv6 with address fe80::5054:ff:fe12:3456.
Joining mDNS multicast group on interface eth0.IPv6 with address fec0::5054:ff:fe12:3456.
Registering new address record for fec0::5054:ff:fe12:3456 on eth0.*.
Withdrawing address record for fe80::5054:ff:fe12:3456 on eth0.
Started up.
<info> starting...
<info> eth0: Device is fully-supported using driver 'e1000'.
<info> nm_device_init(): waiting for device's worker thread to start
<info> nm_device_init(): device's worker thread started, continuing.
<info> Now managing wired Ethernet (802.3) device 'eth0'.
<info> Deactivating device eth0.
Withdrawing address record for 10.0.2.15 on eth0.
Leaving mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
Interface eth0.IPv4 no longer relevant for mDNS.
Withdrawing address record for fec0::5054:ff:fe12:3456 on eth0.
Leaving mDNS multicast group on interface eth0.IPv6 with address fec0::5054:ff:fe12:3456.
Joining mDNS multicast group on interface eth0.IPv6 with address fe80::5054:ff:fe12:3456.
IPV6_ADD_MEMBERSHIP failed: Invalid argument
Registering new address record for fe80::5054:ff:fe12:3456 on eth0.*.
Withdrawing address record for fe80::5054:ff:fe12:3456 on eth0.
Interface eth0.IPv6 no longer relevant for mDNS.
<info> Will activate wired connection 'eth0' because it now has a link.
<info> SWITCH: no current connection, found better connection 'eth0'.
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.reason
<info> Will activate connection 'eth0'.
<info> Device eth0 activation scheduled...
<info> Activation (eth0) started...
<info> Activation (eth0) Stage 1 of 5 (Device Prepare) scheduled...
<info> Activation (eth0) Stage 1 of 5 (Device Prepare) started...
<info> Activation (eth0) Stage 2 of 5 (Device Configure) scheduled...
<info> Activation (eth0) Stage 1 of 5 (Device Prepare) complete.
<info> Activation (eth0) Stage 2 of 5 (Device Configure) starting...
<info> Activation (eth0) Stage 2 of 5 (Device Configure) successful.
<info> Activation (eth0) Stage 3 of 5 (IP Configure Start) scheduled.
<info> Activation (eth0) Stage 2 of 5 (Device Configure) complete.
<info> Activation (eth0) Stage 3 of 5 (IP Configure Start) started...
<info> Activation (eth0) Beginning DHCP transaction.
<info> DHCP daemon state is now 12 (successfully started) for interface eth0
<info> Activation (eth0) Stage 3 of 5 (IP Configure Start) complete.
Anacron 2.3 started on 2021-05-31
Will run job `cron.daily' in 5 min.
Will run job `cron.weekly' in 10 min.
Will run job `cron.monthly' in 15 min.
Jobs will be executed sequentially
<info> DHCP daemon state is now 1 (starting) for interface eth0
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
Joining mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
New relevant interface eth0.IPv4 for mDNS.
Registering new address record for 10.0.2.15 on eth0.IPv4.
Withdrawing address record for 10.0.2.15 on eth0.
Leaving mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
Interface eth0.IPv4 no longer relevant for mDNS.
Joining mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
New relevant interface eth0.IPv4 for mDNS.
Registering new address record for 10.0.2.15 on eth0.IPv4.
(CRON) INFO (pidfile fd = 3)
(CRON) STARTUP (fork ok)
(CRON) INFO (Running @reboot jobs)
<info> DHCP daemon state is now 4 (reboot) for interface eth0
<info> Activation (eth0) Stage 4 of 5 (IP Configure Get) scheduled...
<info> Activation (eth0) Stage 4 of 5 (IP Configure Get) started...
bound to 10.0.2.15 -- renewal in 40400 seconds.
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.host_name
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.domain_name
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.domain_search
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.nis_domain
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.nis_servers
<info> Retrieved the following IP4 configuration from the DHCP daemon:
<info> address 10.0.2.15
<info> netmask 255.255.255.0
<info> broadcast 10.0.2.255
<info> gateway 10.0.2.2
<info> nameserver 10.0.2.3
message_handler: message handler not found under /com/redhat/dhcp/eth0 for sub-path eth0.dbus.get.interface_mtu
<info> Activation (eth0) Stage 5 of 5 (IP Configure Commit) scheduled...
<info> Activation (eth0) Stage 4 of 5 (IP Configure Get) complete.
<info> Activation (eth0) Stage 5 of 5 (IP Configure Commit) started...
Withdrawing address record for 10.0.2.15 on eth0.
Leaving mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
Interface eth0.IPv4 no longer relevant for mDNS.
Joining mDNS multicast group on interface eth0.IPv4 with address 10.0.2.15.
New relevant interface eth0.IPv4 for mDNS.
Registering new address record for 10.0.2.15 on eth0.IPv4.
<info> Activation (eth0) successful, device activated.
<info> Activation (eth0) Finish handler scheduled.
<info> Activation (eth0) Stage 5 of 5 (IP Configure Commit) complete.
[4194092.517662] TSUNAMI machine check: vector=0x0 pc=0x1200d1bdc code=0x0
[4194092.517662] machine check type: unknown
[4194092.517662] pc = [<00000001200d1bdc>] ra = [<00000001200909a0>] ps = 0008 Not tainted
[4194092.517662] pc is at 0x1200d1bdc
[4194092.517662] ra is at 0x1200909a0
[4194092.517662] v0 = 0000020000938000 t0 = 0000000000000207 t1 = 00000001202568e0
[4194092.517662] t2 = 0000000000000002 t3 = 0000000000000000 t4 = 0000000000000000
[4194092.517662] t5 = 0000020000416d20 t6 = 0000000000000004 t7 = 0000000000000004
[4194092.517662] a0 = 0000020000938000 a1 = 0000000000000000 a2 = 0000000000000028
[4194092.517662] a3 = 0000000000000000 a4 = 0000000000000005 a5 = 00000800000c0000
[4194092.517662] t8 = 00000001203a5130 t9 = 00000200007ed43c t10= 00000000000a0000
[4194092.517662] t11= 0000000000002000 pv = 00000001200d1bd0 at = 000000000baa0e6f
[4194092.517662] gp = 0000000120267ae0 sp = fffffc0006a24000</pre>
<p>Allowing for the appearance of some daemon start-up messages, this looks in line with our other findings. Although I'm not sure what the "<tt>TSUNAMI machine check</tt>" thing is about (I suspect an issue with the firmware), but there are a lot of repeats of this message in the system log, which makes <tt>dmesg</tt> a little awkward to use.</p>
<p>In any case we see the usual QEMU fingerprint in the disk drive names with "QEMU" appearing as the manufacturer string.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>As well as the BogoMips pseudo-benchmark, it would be useful to have a more computational performance measure...</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The OpenSSL package includes a performance benchmark for each of the provided cryptographic algorithms. Since we're dealing with older systems we'll use the older RSA and MD5 methods:</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 550976 md5's in 3.45s
Doing md5 for 3s on 64 size blocks: 449881 md5's in 3.25s
Doing md5 for 3s on 256 size blocks: 389808 md5's in 3.50s
Doing md5 for 3s on 1024 size blocks: 248046 md5's in 3.76s
Doing md5 for 3s on 8192 size blocks: 52369 md5's in 3.83s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:51:04 UTC 2012
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIO -O3 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=1024 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 2558.73k 8848.56k 28471.95k 67522.09k 112009.95k
$ openssl speed rsa
Doing 512 bit private rsa's for 10s: 4244 512 bit private RSA's in 11.53s
Doing 512 bit public rsa's for 10s: 74102 512 bit public RSA's in 11.56s
Doing 1024 bit private rsa's for 10s: 1503 1024 bit private RSA's in 11.75s
Doing 1024 bit public rsa's for 10s: 38062 1024 bit public RSA's in 11.96s
Doing 2048 bit private rsa's for 10s: 348 2048 bit private RSA's in 11.78s
Doing 2048 bit public rsa's for 10s: 15696 2048 bit public RSA's in 11.32s
Doing 4096 bit private rsa's for 10s: 73 4096 bit private RSA's in 11.73s
Doing 4096 bit public rsa's for 10s: 5913 4096 bit public RSA's in 12.07s
OpenSSL 0.9.8g 19 Oct 2007
built on: Wed Jan 18 22:51:04 UTC 2012
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,risc1,16,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIO -O3 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=1024 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 512 bits 0.002718s 0.000156s 367.9 6409.4
rsa 1024 bits 0.007814s 0.000314s 128.0 3182.7
rsa 2048 bits 0.033837s 0.000721s 29.6 1386.9
rsa 4096 bits 0.160718s 0.002041s 6.2 489.9</pre>
<p>Extracting relevant figures for comparisons:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 112,009.95k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 6.2</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 489.9</li>
</ul>
<p>For comparison the AlphaVM benchmarks (<a href="https://emuvm.com/support/benchmarks/">Benchmarks - EmuVM</a>) include figures from real hardware. For this case the Compaq DS10 6/466 results provide the most useful comparison:</p>
<ul>
<li>OpenSSL speed MD5 8,192 bytes: 42,636k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 3.5</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 232.0</li>
</ul>
<p>As the DS10 is running an EV6 at 466 MHz, and our emulated processor is an EV67 running at about 250 Mhz we expect the DS10 to have roughly twice the performance. But the opposite turns out to be the case. There are a number of possible reasons for this:</p>
<ol>
<li>OpenSSL speed changes. Operating system and version differences, may mean differences in the execution of the 'speed' methods.</li>
<li>OpenSSL implementation improvements. The reference would have used the OpenSSL provided with Tru64 or OpenVMS. Checking Tru64 5.1B that was "OpenSSL 0.9.6g [engine] 9 Aug 2002", but we're using "OpenSSL 0.9.8g 19 Oct 2007"</li>
<li>Differences in compiler optimization. The reference would have been built using the native compiler, but the version we're using was built with GCC. There will be differences in the compiler optimizations that have an effect on performance.</li>
<li>Operating system library performance and optimizations. Probably not a huge difference, but worth bearing in mind.</li>
<li>QEMU's processor emulation is likely more efficient for some instructions and less efficient for others. So it is possible that the mix used in this test favors the emulation compared to real hardware.</li>
</ol>
<p></p>
<p>So bearing in mind the flaws of benchmarks and emulation, and the differences in operating systems and compilers, it looks like this QEMU system has better performance for this specific kind of workload than the original hardware.</p>
<h4 style="text-align: left;">Thoughts</h4>
<p>QEMU provides an emulated Alpha system that looks similar to the real thing:</p>
<p></p>
<ul>
<li>Compaq ES40 67/667:</li>
<ul>
<li>CPU: 1 to 4 Alpha 21264 (EV67) processors at 667 MHz</li>
<li>RAM: from 512 MiB or 1 GiB to 16 or 32 GiB (depending on model)</li>
<li>Network: <i>various</i>, including</li>
<ul>
<li>Intel i8255x based 10/100 ethernet (DE602)</li>
<li>Broadcom based 10/100/1000 ethernet (DEGXA)</li>
</ul>
<li>Disk controllers:</li>
<ul>
<li><i>integrated</i> IDE (Acer Labs M1543C) with CD-ROM drive</li>
<li>SCSI Ultra2 LVD (KZPCA-AA; NCR53C895) with 18, 36 or 72 GB drive</li>
</ul>
<li>Graphics: <i>optional</i></li>
<ul>
<li>Multi-function<i> </i>DEPVZ card, includes a Permedia 2 graphics adapter</li>
<li>3Dlabs Oxygen VX1 (<i>aka.</i> Permedia 3)</li>
<li>Radeon 7500 (PBXGG)</li>
<li>PowerStorm 300 or 350 (PBXGD), REALimage 2100 chipset</li>
</ul>
<li>Misc.: Acer Labs M1543C providing 1 parallel, 2 serial, USB, floppy, keyboard & mouse</li>
</ul>
<li>QEMU Tsunami/Clipper</li>
<ul>
<li>CPU: 1 or more Alpha EV67 (default) processors at ~250 MHz</li>
<li>RAM: 128 MiB (default) or more (limited by host system RAM?)</li>
<li>Network: <i>various</i>, including</li>
<ul>
<li>Intel PRO/1000 (<i>aka.</i> e1000) 82540EM based gigabit ethernet (default)</li>
<li>DEC Tulip based 10/100 ethernet (DE4xx and DE5xx)</li>
</ul>
<li>Disk controllers:</li>
<ul>
<li>IDE CMD646 (default)</li>
<li>various SCSI controllers including NCR53C810 & LSI53C895a</li>
</ul>
<li>Graphics: Cirrus Logic CL-GD5446 (default)</li>
<li>Misc.: 1 parallel, 2 serial, keyboard & mouse</li>
</ul>
</ul>
<p>So the emulated system feels like an ES40 fitted with older cards. This could help compatibility, since the main operating systems for Alpha support a limited range of hardware, as do the SRM and AlphaBIOS firmware. However this is only an issue during boot for Linux, with probing of devices and many available drives mitigating the issue once the system is up and running.</p>
<p>While a real ES40 uses a different IDE controller, the CMD646 was used on early Digital Personal Workstation "Miata" MX5 mainboards, however the version of the CMD646 used suffered from issues with DMA, which meant later models used a revised mainboard (MiataGL) with a different IDE controller. The QEMU emulated CMD646 reports as a version of the chipset (0x07 <i>aka</i>. PCI0646U2) in which the issue had been fixed, and the <tt>dmesg</tt> output shows that UltraDMA mode is being enabled. For more information on the issue see the <a href="https://www.freebsd.org/releases/6.0R/hardware-alpha/#AEN186">FreeBSD/alpha documentation</a> and the source for the <a href="https://elixir.bootlin.com/linux/latest/source/drivers/ide/cmd64x.c">CMD64x Linux driver</a>.</p>
<p>The emulated system performance falls a bit short of a real ES40. However this Linux for Alpha installation looks to be working fine, and performance is on a par with some of the older Alpha workstations and servers, so not an issue for experimenting with an Alpha based environment.</p>
<p>The BogoMIPS (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>; <a href="https://tldp.org/HOWTO/html_single/BogoMips/">TLDP</a>) result given by the system is reasonably consistent with the claimed processor clock of 250 MHz, and resembles the performance of the Alpha workstations of the mid-1990s. Realistically this is not bad for an emulated processor running in a virtual machine (Debian 10 on VirtualBox on MS Windows 10) on a processor more than 10 years old (<a href="https://ark.intel.com/content/www/us/en/ark/products/41316/intel-core-i7-860-processor-8m-cache-2-80-ghz.html">Intel i7-860</a>), especially since the default emulation is being used with no additional tuning.</p>
<h3 style="text-align: left;">Further Sources</h3>
<p>Additional sources:</p>
<ul>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/Alpha">Documentation/Platforms/Alpha - QEMU</a></li>
<li><a href="https://gmplib.org/~tege/qemu.html">System emulation using QEMU</a></li>
<li><a href="https://virtuallyfun.com/wordpress/2014/02/19/alpha-linux-on-qemu/">Alpha Linux on Qemu | Fun with virtualization</a></li>
<li><a href="https://web.archive.org/web/20170502011724/http://systems.firstworks.com/2014/02/debian-5010-alpha.html">firstworks systems: Debian 5.0.10 Alpha</a></li>
<li><a href="https://forums.gentoo.org/viewtopic-t-1025044-start-0.html">Gentoo Forums :: View topic - DEC Alpha - boot partitions : SRM/aboot [workaround found]</a></li>
<li>Alpha based systems:</li>
<ul>
<li><a href="https://en.wikipedia.org/wiki/AlphaStation">AlphaStation - Wikipedia</a></li>
<li><span style="font-family: inherit;"><a href="https://en.wikipedia.org/wiki/AlphaServer">AlphaServer - Wikipedia</a></span></li>
<li>Alpha Processor Inc. (API):</li>
<ul>
<li>AlphaPC 264DP (<a href="https://www.mikerohard.de/dp264spec.pdf">MikeRoHard.de</a>)</li>
<li>UP1000 (<a href="http://www.alphalinux.org/wiki/index.php/UP1000">AlphaLinux</a>, <a href="https://www.mikerohard.de/up1000spec.pdf">MikeRoHard.de</a>) & UP1100 (<a href="http://www.alphalinux.org/wiki/index.php/UP1100">AlphaLinux</a>, <a href="https://www.mikerohard.de/up1100spec.pdf">MikeRoHard.de</a>)</li>
<li>UP1500 (<a href="http://www.alphalinux.org/wiki/index.php/UP1500">AlphaLinux</a>, <a href="https://www.manualslib.com/manual/1592894/Samsung-Up1500-800-A1.html">ManualsLib</a>)</li>
<li>UP2000 (<a href="https://www.mikerohard.de/up2000spec.pdf">MikeRoHard.de</a>) & UP2000+ (<a href="https://www.mikerohard.de/up2000+spec.pdf">MikeRoHard.de</a>)</li>
<li>CS20 (<a href="https://www.mikerohard.de/cs20spec.pdf">MikeRoHard.de</a>)</li>
</ul>
<li><a href="https://h20195.www2.hpe.com/v2/getdocument.aspx?docname=c04282237#">Compaq AlphaServer ES40 Compaq AlphaStation ES40 (QuickSpecs/c04282237.pdf)</a></li>
</ul>
<li><a href="https://www.freebsd.org/releases/6.0R/hardware-alpha/#AEN186">FreeBSD/alpha documentation</a></li>
<li><a href="https://www.debian.org/releases/lenny/alpha/">Debian GNU/Linux Installation Guide</a> for Debian 5 ("lenny") for the Alpha</li>
</ul>
<p><i>Update</i> 17-Jun-2021: added OpenSSL benchmark</p>
<hr />
<h3 style="text-align: left;">Installation Notes - Debian Linux 5 ("lenny")</h3>
<p>Installing Linux for Alpha on a QEMU emulated Alpha machine, encounters a few issues...</p>
<h4 style="text-align: left;">QEMU Command</h4>
<p>The limitations of the current QEMU Alpha firmware, mean that it can't boot the system using the regular boot loader. Instead we need to extract the installation boot kernel and initrd from the installation media:</p>
<pre class="capturedOutput">$ mkdir tmp_mnt
$ fuseiso debian-5010-alpha-DVD-1.iso tmp_mnt
$ cp tmp_mnt/boot/vmlinuz ./
$ cp tmp_mnt/boot/initrd.gz ./
$ fusermount -u tmp_mnt
$ zcat vmlinuz > vmlinux</pre>
<p>The last step makes an uncompressed copy of the kernel that we can pass to QEMU.</p>
<pre class="capturedOutput">qemu-system-alpha \
-kernel vmlinux \
-initrd initrd.gz \
-drive file=hda_alpha_debian5.qcow2,if=ide \
-drive file=debian-5010-alpha-DVD-1.iso,if=ide,media=cdrom \
-net nic -net user \
-name 'Debian Linux 5 Installation on Alpha'</pre>
<p>The kernel and ram-disk will start the Debian Installer, and later mount the DVD that contains the software repository.</p>
<h4 style="text-align: left;">Partitioning the Disk</h4>
<p>The Alpha QEMU firmware (SRM analogue) expects the boot drive to have a BSD-like OSF/1 disk label rather than a MS DOS style (MBR) or GPT style partition table. Creating this on Linux is a bit tricky (see Further Sources), so I'm using an existing image with a OSF/1 disk label.</p>
<p>This disk started as a 2 GiB disk image, but I want a bit more space for an install from the DVD:</p>
<pre class="capturedOutput">$ qemu-img info hda_alpha_debian5.qcow2
image: hda_alpha_debian5.qcow2
file format: qcow2
virtual size: 2 GiB (2147483648 bytes)
disk size: 928 MiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false</pre>
<p>So it needed to be resized:</p>
<pre class="capturedOutput">$ qemu-img resize hda_alpha_debian5.qcow2 +7G
Image resized.</pre>
<p>To get a 9 GiB disk for the installation:</p>
<pre class="capturedOutput">$ qemu-img info hda_alpha_debian5.qcow2
image: hda_alpha_debian5.qcow2
file format: qcow2
virtual size: 9 GiB (9663676416 bytes)
disk size: 928 MiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false</pre>
<p>While this has resized the disk image, the disk information in the existing disk label has not been updated, so we are going to have to update that too.</p>
<p>The 2 GiB image used a disk geometry of:</p>
<pre class="capturedOutput">bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
cylinders: 261
sectors/cylinder: 16065
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0
track-to-track seek: 0</pre>
<p>Using this as a starting point we calculate the number of cylinders that would give ~9 GiB of disk space:</p>
<p>9 GiB => 9,663,676,416 bytes / 512 => 18,874,368 sectors / 16065 => 1,174.87 cylinders</p>
<p>So if we update the disk label information and set the 'cylinders' parameter to 1174, that will give a close to 9 GiB disk, and then the partitions can be adjusted to fit.</p>
<p>So we run the Debian Installation process up to the "Partition disks" stage, where we're presented with a "Partitioning method" menu, so we can be sure of disk detection has been run and the corresponding device files created.</p>
<p>For the moment we don't use the partitioner, but instead hit <i>Esc</i> twice to get to the "Debian installer main menu". Once there scroll down and select the "Execute a shell" option, to run a command prompt that will give us access to the command-line partitioning tools.</p>
<p>Once at the command prompt start <tt>fdisk</tt> on the hard-disk, if you're not sure of which device corresponds to the disk, check <tt>dmesg</tt> to see the detection messages.</p>
<p>The disk I'm using as a starting point has a basic layout with:</p>
<ul>
<li>slice a <i>aka.</i> hda1 - small partition for the boot loader aboot</li>
<li>slice b <i>aka.</i> hda2 - small partition for boot files mounts as /boot</li>
<li>slice c <i>aka.</i> hda3 - large partition for all the other files, mounts as /</li>
<li>slice d <i>aka.</i> hda4 - swap space</li>
</ul>
<p>Since this is a small disk the '/' partition is quite small, but it looks a reasonable size to use for swap space, so I'm going to switch the swap space with the main partition, and make a larger main partition. While we won't actually need the boot loader partition, since we're loading the kernel directly, I'll leave it in so the installer has some where to go for that stage.</p>
<pre class="capturedOutput"># fdisk /dev/hda
Detected an OSF/1 disklabel on /dev/hda, entering disklabel mode.
BSD disklabel command (m for help): m
Command action
d delete a BSD partition
e edit drive data
i install bootstrap
l list known filesystem types
m print this menu
n add a new BSD partition
p print BSD partition table
q quit without saving changes
r return to main menu
s show complete disklabel
t change a partition's filesystem id
u change units (cylinders/sectors)
w write disklabel to disk
BSD disklabel command (m for help): p
5 partitions:
# start end size fstype [fsize bsize cpg]
a: 1* 1* 0* ext2
b: 1* 10* 9* ext2
c: 10* 244* 233* ext2
d: 244* 262* 17* swap
BSD disklabel command (m for help): s
# /dev/hda:
type: SCSI
disk:
label:
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 261
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # milliseconds
track-to-track seek: 0 # milliseconds
drivedata: 0
5 partitions:
# start end size fstype [fsize bsize cpg]
a: 1* 1* 0* ext2
b: 1* 10* 9* ext2
c: 10* 244* 233* ext2
d: 244* 262* 17* swap
BSD disklabel command (m for help): e
bytes/sector (512):
sectors/track (63):
tracks/cylinder (255):
cylinders (261): 1174
sectors/cylinder (16065):
rpm (3600):
interleave (1):
trackskew (0):
cylinderskew (0):
headswitch (0):
track-to-track seek (0):
BSD disklabel command (m for help): u
Changing display/entry units to sectors
BSD disklabel command (m for help): p
5 partitions:
# start end size fstype [fsize bsize cpg]
a: 1 1954 1954 ext2
b: 1955 158205 156251 ext2
c: 158206 3910159 3751954 ext2
d: 3910160 4194303 284144 swap
BSD disklabel command (m for help): d
Partition (a-e): d
BSD disklabel command (m for help): n
Partition (a-p): d
First sector (0-18860309, default 0): 3910160
Last sector or +size or +sizeM or +sizeK (3910160-18860309, default 18860309):
Using default value 18860309
BSD disklabel command (m for help): t
Partition (a-e): c
Hex code (type L to list codes): L
0 unused 5 4.1BSD 9 4.4LFS d boot
1 swap 6 Eighth Edition a unknown e ADOS
2 Version 6 7 4.2BSD b HPFS f HFS
3 Version 7 8 ext2 c ISO-9660 10 AdvFS
4 System V
Hex code (type L to list codes): 1
BSD disklabel command (m for help): t
Partition (a-e): d
Hex code (type L to list codes): 8
BSD disklabel command (m for help): p
5 partitions:
# start end size fstype [fsize bsize cpg]
a: 1 1954 1954 ext2
b: 1955 158205 156251 ext2
c: 158206 3910159 3751954 swap
d: 3910160 18860309 14950150 ext2
BSD disklabel command (m for help): w
Writing disklabel to /dev/hda.
Syncing disks.
Calling ioctl() to re-read partition table.
BSD disklabel command (m for help): q
#</pre>
<p>So we have:</p>
<ol>
<li>Looked the the partition table (p)</li>
<li>Looked at the disk-label information (s)</li>
<li>Edited the disk-label to update the number of cylinders (e)</li>
<li>Resized the last partition aka slice d:</li>
<ol>
<li>Delete slice d (d)</li>
<li>Create slice d (n)</li>
</ol>
<li>Changed the type for slice c to 'swap' (t)</li>
<li>Changed the type for slice d to 'ext2' (t)</li>
<li>Committed the changes (w)</li>
</ol>
<p>Now we'll give then an initial formatting, so the format detection will pick them up as we would expect:</p>
<pre class="capturedOutput"># mkswap /dev/hda3
Setting up swapspace version 1, size = 1920992256 bytes
# mkfs.ext3 -T small /dev/hda4
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1869824 inodes, 7475072 blocks
373753 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=74711040
913 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001, 1990657, 2809857, 5120001, 5971969
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.</pre>
<p>Okay now we have new partitions in place:</p>
<ul>
<li>slice a <i>aka.</i> hda1 - small partition for the boot loader aboot (unchanged)</li>
<li>slice b <i>aka.</i> hda2 - small partition for boot files mounts as /boot (unchanged)</li>
<li>slice c <i>aka.</i> hda3 - swap space</li>
<li>slice d <i>aka.</i> hda4 - large partition for all the other files, mounts as /</li>
</ul>
<p>Note: newer versions of Debian provide a BusyBox built-in version of fdisk, rather the older version used here. In my experiments the BusyBox version seems to have issues with managing a BSD disk-label, so I found using the older tools to work better.</p>
<p>Exit out of the shell, and abort this installation. This is very likely redundant, but this way we can be sure that the kernel sees only the new disk setup.</p>
<h4 style="text-align: left;">Actually Installing</h4>
<p>So starting back up, we proceed through to the "Partition disks" stage of the installation process again. Here we select "Manual" and assign our disk slices mount points and roles:</p>
<p></p>
<ul>
<li>slice a <i>aka.</i> hda1 - aboot</li>
<li>slice b <i>aka.</i> hda2 - /boot</li>
<li>slice c <i>aka.</i> hda3 - swap</li>
<li>slice d <i>aka.</i> hda4 - /</li>
</ul>
<p>If the auto-detection has worked the system will have already assigned the aboot and swap slices to their roles. So we only have to deal with the '/boot' and '/' slices. Since we're keeping this, equivalent to a real hardware install, the partition configurations are:</p>
<ul>
<li>#2</li>
<ul>
<li>Set "Use as:" to "Ext2 file system"</li>
<li>Set "Format the partition:" to "yes, format it"</li>
<li>Set "Mount point:" to "/boot - static files of the boot loader"</li>
<li>"Done setting up the partition"</li>
</ul>
<li>#4</li>
<ul>
<li>Set "Use as:" to "Ext3 journaling file system"</li>
<li>Set "Format the partition:" to "no, keep existing data"</li>
<li>Set "Mount point:" to "/ - the root file system"</li>
<li>"Done setting up the partition"</li>
</ul>
<li>When all done "Finish partitioning and write changes to disk"</li>
</ul>
<p>Since we already formatted our '/' filesystem, we don't bother reformatting it, this also preserves the "small" filesystem character we gave it earlier.</p>
<p>With this in place we can proceed with the rest of the installation, remembering that the remote repositories are not going to be available:</p>
<ul>
<li>For prompt "Use a network mirror?" respond "<No>"</li>
<li>For warning "Cannot access repository" respond "<Continue>"</li>
</ul>
<p>After a bit of time the main phase of the installation completes, and the installer starts to finalize the system. One of the parts of that is the "Install aboot on a hard disk" phase, which will fail and give an "Installation step failed" message. Since we're not going to actually use aboot, this isn't a problem, so we can skip this stage of the process, by selecting "Continue without boot loader" when presented with the "Debian installer main menu", this will give a message containing the location of the kernel and the required boot parameters:</p>
<pre class="capturedOutput">You will need to boot manually with the /vmlinuz kernel on partition
/dev/hda4 and root=/dev/hda4 passed as a kernel argument.</pre>
<p>Before finishing the installation process, and stopping with an "Installation complete" message, that talks about rebooting. We don't want to reboot, since we need to extract the installed kernel and initrd from the installed system and boot with an updated command-line, which passes the boot parameter. So select "<Go back>" to get to the "Debian installer main menu" and select "Abort the installation" to perform a shutdown of the system.</p>
<h4 style="text-align: left;">Extract Installed Kernel</h4>
<p>So we need to mount the installed system disk and copy the kernel and initrd so we can pass them to QEMU when booting. For this I use the <a href="https://libguestfs.org/">libguestfs</a> tools (<a href="https://packages.debian.org/stretch/libguestfs-tools">libguestfs-tools package</a> in Debian):</p>
<pre class="capturedOutput">$ guestmount -a hda_alpha_debian5.qcow2 -m /dev/sda2 tmp_mnt
$ ls tmp_mnt
bootlx net_aboot.nh
config-2.6.26-2-alpha-generic net_pad
initrd.img-2.6.26-2-alpha-generic System.map-2.6.26-2-alpha-generic
lost+found vmlinuz-2.6.26-2-alpha-generic
$ cp tmp_mnt/initrd.img-2.6.26-2-alpha-generic ./
$ zcat tmp_mnt/vmlinuz-2.6.26-2-alpha-generic > ./vmlinux-2.6.26-2-alpha-generic
$ guestunmount tmp_mnt</pre>
<p>Note: we'll need to do this for any kernel and/or initrd updates, so we're booting with the right environment.</p>
<h4 style="text-align: left;">Start the Installed System</h4>
<p>Now we start QEMU with the new kernel and initrd passing the root device for the new installation as a parameter:</p>
<pre class="capturedOutput">$ qemu-system-alpha \
-drive file=hda_alpha_debian5.qcow2,if=ide \
-drive file=debian-5010-alpha-DVD-1.iso,if=ide,media=cdrom \
-net nic -net user \
-kernel vmlinux-2.6.26-2-alpha-generic \
-initrd initrd.img-2.6.26-2-alpha-generic \
-append 'root=/dev/hda4' \
-name 'Debian Linux 5 on Alpha'</pre>
<p>Once booted, log in with the account you created during installation, and you're off...</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-73042715612573894892021-05-29T13:55:00.004+01:002022-05-21T16:20:10.698+01:00Linux for SPARC64 on QEMU<h3 style="text-align: left;">Linux for SPARC64</h3>
<p>Linux is an open source UNIX-like operating system kernel that supports a wide range of platforms. This includes the 64-bit SPARC platforms (sparc64), commonly seen in Sun Microsystems UNIX workstations and servers.</p>
<p>Since SPARC64 processors support both 32-bit and 64-bin SPARC binaries, Linux distributions for SPARC based systems can come in three broad classes:</p>
<ol style="text-align: left;">
<li>32-bit kernel with 32-bit user-land - 32-bit & 64-bit SPARC processors</li>
<li>64-bit kernel with 32-bit user-land - 64-bit SPARC processors</li>
<li>64-bit kernel with 64-bit user-land - 64-bit SPARC processors</li>
</ol>
<p>The Debian Linux distribution has provided for all three of these scenarios with its 'sparc' and 'sparc64' ports:</p>
<ul style="text-align: left;">
<li><a href="https://www.debian.org/ports/sparc/">Debian for SPARC</a> releases up to and including <a href="https://www.debian.org/releases/etch/">Debian Linux 4.0 (etch)</a> used a 32-bit kernel or 64-bit kernel with a 32-bit user-land</li>
<li><a href="https://www.debian.org/ports/sparc/">Debian for SPARC</a> releases up to and including <a href="https://www.debian.org/releases/wheezy/">Debian Linux 7 (wheezy)</a> used a 64-bit kernel with a (mostly) 32-bit user-land</li>
<li><a href="https://wiki.debian.org/Sparc64">Debian for SPARC64</a> current in-official port Debian Linux 10 (buster), which uses a 64-bit kernel with a 64-bit user-land</li>
</ul>
<p>Since the 'sparc64' in-official port provides the most recent Linux version, and is fully 64-bit and thus provides more of a contrast with the 32-bit Linux environment used in <a href="https://boxes-of-tat.blogspot.com/2021/05/looking-at-system-information-on-qemu.html">Linux for SPARC (32-bit) on QEMU (sun4m) - System Information</a>, it's our selected target.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">QEMU and SPARC64</h3>
<p>QEMU provides SPARC64 system emulation for PCI based 'sun4u' and 'sun4v' systems. The 'sun4u' platform includes the Sun Ultra workstations. The default QEMU emulation looks most similar to the Sun Ultra 5 and Ultra 10 workstations (<a href="https://en.wikipedia.org/wiki/Ultra_5/10">Wikipedia</a>), which are machines that many people are familiar with thanks to their popularity in tech companies in the late 1990s and early 2000s. So let's go with the 'sun4u' system emulation:</p>
<ul style="text-align: left;">
<li>CPU: TI UltraSPARC IIi (SUNW,UltraSPARC-IIi)</li>
<li>RAM: 128 MiB default, max. > 4 GiB</li>
<li>Disk controller: PATA</li>
<li>Network controller: Sun "Happy Meal" Ethernet (<span style="font-family: courier;">hme0</span>)</li>
<li>Graphics: generic VGA with VESA support</li>
</ul>
<p>Since modern operating systems like memory, I'm going to give the emulated system 1 GiB (1024 MiB) of memory. Apparently this will also avoid issues with the memory usage of the Debian installer.</p>
<h3 style="text-align: left;">Installing Linux</h3>
<p>First step is to create a directory for the various files:</p>
<pre class="capturedOutput">$ mkdir sparc64_Debian_Linux
$ cd sparc64_Debian_Linux</pre>
<p>disk image for the installation. For this I'm going to use a 8 GiB qcow2 format disk image:</p>
<pre class="capturedOutput">$ qemu-img create -f qcow2 hda_debian_sparc64.qcow2 8G</pre>
<p>Now let's download the current installation CD:</p>
<pre class="capturedOutput">$ wget https://cdimage.debian.org/cdimage/ports/current/debian-10.0.0-sparc64-NETINST-1.iso</pre>
<p>Okay we've now got the disks, so on to building the QEMU command for installation:</p>
<pre class="capturedOutput">$ qemu-system-sparc64 \
-m size=1024M \
-hda hda_debian_sparc64.qcow2 \
-cdrom debian-10.0.0-sparc64-NETINST-1.iso \
-net nic \
-net user \
-vga none \
-boot once=d \
-name 'Install Debian Linux on UltraSPARC'</pre>
<p>The default graphics adapter has issues on this platform, so we remove it with the <tt>-vga none</tt> option, we will use the serial console (<i>ctrl-alt-2</i>) to interact with the installation. The <tt>-boot once=d</tt> option is used to tell the OpenBIOS firmware to boot from the installation CD for the first boot, any subsequent reboots will use the main disk instead.</p>
<p>The installation is Debian standard, so I'll only mention the bits that deviate from the normal flow of the installer...</p>
<p>At the "Finish the installation" stage, don't select "Continue" but instead hit <i>Esc</i> to get to the main installation menu. Select the "Execute a shell" option so we can get a command-line and make some changes...</p>
<p>Thanks to the Debian Sparc64 QEMU notes (<a href="https://wiki.debian.org/Sparc64Qemu">Sparc64Qemu</a>) and a thread on the debian-sparc mailing list (<a href="https://www.mail-archive.com/debian-sparc@lists.debian.org/msg27299.html">https://www.mail-archive.com/debian-sparc@lists.debian.org/msg27299.html</a>) we know there is a issue with some modules in the kernel and their interaction with the QEMU default graphics card. Since we are running without the graphics card there shouldn't be a problem, but just in case we accidentally boot with graphics enabled we need to prevent those modules from loading.</p>
<pre class="capturedOutput"># echo 'blacklist bochs-drm' > /target/etc/modprobe.d/drm-blocklist.conf</pre>
<p>Now we can exit the shell (<i>ctrl-D</i> or <tt>exit</tt>) and finish the install. Once back at the menu, the "Finish the installation" option is selected, so hit <i>enter</i> and hope...</p>
<p>And the reboot fails with a kernel panic! But we're installed, so not a big deal (although it would be nice if it worked).</p>
<p>Attempting a direct boot (command line as above but with <tt>-boot c</tt>) manages to load the boot loader (Grub) but it then fails with a "error: canonicalise devname failed." This is a known issue (see <a href="https://www.mail-archive.com/debian-sparc@lists.debian.org/msg27299.html">qemu-system-sparc64 not booting install of debian sparc64</a>) that can be worked round by using the QEMU's ability to directly boot a kernel. To do that we need to get the kernel and RAM disk image from the installation.</p>
<h3 style="text-align: left;">Extract the Kernel & Ramdisk</h3>
<p>I'm going to use the <a href="https://libguestfs.org/">libguestfs</a> tools to access the image.</p>
<p>First create a mount point:</p>
<pre class="capturedOutput">$ mkdir tmp_mnt</pre>
<p>Then mount the <tt>/boot</tt> partition (sda1) on the mount point:</p>
<pre class="capturedOutput">$ guestmount -a hda_debian_sparc64.qcow2 -m /dev/sda1 tmp_mnt</pre>
<p>Identify the required files:</p>
<pre class="capturedOutput">$ ls -l tmp_mnt
total 76766
-rw-r--r-- 1 root root 169558 Jan 30 20:38 config-5.10.0-3-sparc64
-rw-r--r-- 1 root root 169464 May 28 09:31 config-5.10.0-7-sparc64
drwxr-xr-x 5 root root 1024 May 29 11:49 grub
lrwxrwxrwx 1 root root 27 May 29 08:22 initrd.img -> initrd.img-5.10.0-7-sparc64
-rw-r--r-- 1 root root 22647626 May 29 00:39 initrd.img-5.10.0-3-sparc64
-rw-r--r-- 1 root root 22667406 May 29 08:38 initrd.img-5.10.0-7-sparc64
lrwxrwxrwx 1 root root 27 May 29 00:26 initrd.img.old -> initrd.img-5.10.0-3-sparc64
drwx------ 2 root root 12288 May 28 23:35 lost+found
-rw-r--r-- 1 root root 83 Jan 30 20:38 System.map-5.10.0-3-sparc64
-rw-r--r-- 1 root root 83 May 28 09:31 System.map-5.10.0-7-sparc64
-rwxr-xr-x 1 root root 16279624 Jan 30 20:38 vmlinux-5.10.0-3-sparc64
-rwxr-xr-x 1 root root 16342448 May 28 09:31 vmlinux-5.10.0-7-sparc64
lrwxrwxrwx 1 root root 24 May 29 08:22 vmlinuz -> vmlinux-5.10.0-7-sparc64
lrwxrwxrwx 1 root root 24 May 29 00:26 vmlinuz.old -> vmlinux-5.10.0-3-sparc64</pre>
<p>We want to current kernel as linked to by <tt>vmlinuz</tt>, and the init RAM disk image as linked by <tt>initrd.img</tt>:</p>
<pre class="capturedOutput">$ cp tmp_mnt/initrd.img-5.10.0-7-sparc64 tmp_mnt/vmlinux-5.10.0-7-sparc64 ./</pre>
<p>Then un-mount the disk image:</p>
<pre class="capturedOutput">$ guestunmount tmp_mnt</pre>
<p>So we now have the bits to boot the system.</p>
<h3 style="text-align: left;">Boot the Installed System</h3>
<p>Now we can boot the kernel in QEMU:</p>
<pre class="capturedOutput">$ qemu-system-sparc64 \
-m size=1024M \
-hda hda_debian_sparc64.qcow2 \
-cdrom debian-10.0.0-sparc64-NETINST-1.iso \
-net nic \
-net user \
-vga none \
-kernel vmlinux-5.10.0-7-sparc64 \
-initrd initrd.img-5.10.0-7-sparc64 \
-append 'console=ttyS0 root=/dev/sda2' \
-name 'Run Debian Linux on UltraSPARC'</pre>
<p>And we're up and running.</p>
<h3 style="text-align: left;">User Networking and ssh</h3>
<p>Since I'm using the QEMU user-mode networking, use of ssh needs a little bit of port mapping. The ssh protocol uses port 22, so we'll need mappings to:</p>
<ul>
<li>Provide a mapping from an IP in the guest network to the ssh port on the host</li>
<li>Add a port on the host that maps on to the guest</li>
</ul>
<p>To do this we can use QEMU's network forwarding options and the <tt>netcat</tt> command to do a little forwarding:</p>
<pre class="capturedOutput">-net "user,guestfwd=:10.0.2.1:22-cmd:netcat 127.0.0.1 22,hostfwd=::2222-:22" \</pre>
<p>This can be put in place of the <tt>-net user</tt> part of the QEMU command.</p>
<p>Then the host can ssh to the guest with:</p>
<pre class="capturedOutput">$ ssh -p 2222 localhost</pre>
<p>And the guest can ssh to the host with:</p>
<pre class="capturedOutput">$ ssh 10.0.2.1</pre>
<p>As well as ssh this also supports <tt>scp</tt>, so moving files between host and guest is easy.</p>
<h3 style="text-align: left;">Further Information & Sources</h3>
<p>Sources of more information:</p>
<ul>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/SPARC">Documentation/Platforms/SPARC - QEMU</a></li>
<li><a href="https://wiki.debian.org/Sparc64Qemu">Sparc64Qemu</a></li>
</ul>
<p><br /></p>
Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-88586622102077333612021-05-28T08:08:00.005+01:002022-05-21T16:21:37.170+01:00NetBSD/sparc64 9.2 on QEMU - System Information<h3 style="text-align: left;">NetBSD</h3>
<p>A member of the open source family of <a href="https://en.wikipedia.org/wiki/Berkeley_Software_Distribution">Berkeley Software Distribution</a> (BSD) UNIX-like operating systems, along with FreeBSD and OpenBSD, <a href="https://www.netbsd.org/">NetBSD</a> is available for a wide range of hardware platforms (<a href="https://wiki.netbsd.org/ports/">Platforms supported by NetBSD</a>), including support for many systems of historical interest.</p>
<h3 style="text-align: left;">SPARC64</h3>
<p>Released in 1993 the SPARC Version 9 specification added 64-bit support to the SPARC processor architecture. The first workstations to market were the HAL SPARC64 (<a href="https://en.wikipedia.org/wiki/HAL_SPARC64">Wikipedia</a>) based Fujitsu HALstation Model 300 series in October 1995, followed by the Sun UltraSPARC based Sun Ultra workstations (<a href="https://en.wikipedia.org/wiki/Sun_Ultra_series">Wikipedia</a>) in November 1995.</p>
<span><a name='more'></a></span>
<h3 style="text-align: left;">QEMU and SPARC64</h3>
<p>As well as the 32-bit 'sun4m' emulations QEMU also provides 64-bit UltraSPARC emulation (sparc64), providing 'sun4u' (UltraSPARC) and 'sun4v' (UltraSPARC T1) based platforms. This is newer than the mature sun4m emulations, so don't expect the sparc64 emulation to be as stable and well featured.</p>
<p>The default QEMU machine for UltraSPARC is a generic PCI-based 'sun4u' system:</p>
<ul>
<li>CPU: TI UltraSPARC IIi (<tt>SUNW,UltraSPARC-IIi</tt>)</li>
<li>RAM: 128 MiB default, max. > 4 GiB</li>
<li>Disk controller: PATA</li>
<li>Network controller: Sun "Happy Meal" Ethernet (<tt>hme0</tt>)</li>
<li>Graphics: generic VGA with VESA support</li>
</ul>
<p>The use of the UltraSPARC IIi makes this most similar to the Sun Ultra 5 and Ultra 10 workstations, which were very popular during the late 1990s.</p>
<p>The emulated 'sun4u' system is limited to a single processor. It appears that it can support more memory than any of the late 1990s UltraSPARC based Sun Ultra workstations (max. 4 GiB in Sun Ultra 80). The revival of the Ultra brand in the mid-2000s featured a line of UltraSPARC based workstations which had support for more memory (max. 16 GiB in Ultra 45).</p>
<h4 style="text-align: left;">Graphics</h4>
<p>While the graphics work for the OpenBIOS firmware and the early stages of booting, it fails when the operating system tries to switch into graphics mode.</p>
<p>The popular Ultra 5 and Ultra 10 workstations used integrated Sun PGX graphics, based on the ATI 3D Rage II+DVD (PGX8, 2MiB) or ATI 3D Rage Pro (PGX24, 4 MiB) chipsets, depending on the mainboard. For the other UltraSPARC systems Sun sold PCI PGX graphics cards to add graphics output or for multi-monitor configurations: PGX8, PGX32 (3Dlabs Permedia 2) and PGX64 (ATI Rage XL, 8 MiB). Later models would use Sun XVR based graphics cards based on the ATI Redeon chipsets. Sadly QEMU does not, currently, provide emulations of those chipsets, so operating systems require the <tt>-nographic</tt> option to setup.</p>
<h4 style="text-align: left;">QEMU Command</h4>
<p>For those interested, the emulated system run here was started using the command:</p>
<pre class="capturedOutput">$ qemu-system-sparc64 -m size=1024M -hda hda_NetBSD_sparc64.qcow -cdrom NetBSD-9.2-sparc64.iso -boot c -net nic -net user -nographic</pre>
<p>For installation the firmware was told to boot from the installation ISO with <tt>-boot d</tt> instead of the boot from the system disk option (<tt>-boot c</tt>) used here. The <tt>-nographic</tt> option is used to avoid problems with the emulated graphics card in NetBSD/sparc64.</p>
<h3 style="text-align: left;">System Information</h3>
<p>So lets see what NetBSD has to say about itself and the emulated system it is running on.</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system name, version, revision and platform information.</p>
<pre class="capturedOutput">$ uname -a
NetBSD qnetbsd9.home 9.2 NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/sparc64/compile/GENERIC sparc64</pre>
<p>That is a NetBSD, version 9.2, release "<tt>NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/sparc64/compile/GENERIC</tt>" on a 64-bit SPARC platform (sparc64), with the node name "qnetbsd9.home".</p>
<h4 style="text-align: left;">dmesg</h4>
<p>System boot messages.</p>
<pre class="capturedOutput">$ dmesg
[ 1.000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
[ 1.000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
[ 1.000000] 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved.
[ 1.000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.000000] The Regents of the University of California. All rights reserved.
[ 1.000000] NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021
[ 1.000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/sparc64/compile/GENERIC
[ 1.000000] total memory = 1024 MB
[ 1.000000] avail memory = 987 MB
[ 1.000000] timecounter: Timecounters tick every 10.000 msec
[ 1.000000] Kernelized RAIDframe activated
[ 1.000000] running cgd selftest aes-xts-256 aes-xts-512 done
[ 1.000000] mainbus0 (root): OpenBiosTeam,OpenBIOS: hostid 80123456
[ 1.000000] cpu0 at mainbus0: SUNW,UltraSPARC-IIi @ 100 MHz, CPU id 0
[ 1.000000] cpu0: manuf 17, impl 12, mask 91
[ 1.000000] cpu0: 256K instruction (64 b/l), 16K data (32 b/l), 256K external (64 b/l)
[ 1.000000] psycho0 at mainbus0
[ 1.000000] psycho0: SUNW,sabre: impl 0, version 0: ign 7c0 bus range 0 to 2; PCI bus 0
[ 1.000000] pci0 at psycho0
[ 1.000000] pci0: i/o space, memory space enabled
[ 1.000000] ppb0 at pci0 dev 1 function 1: Sun Microsystems Simba PCI Bridge (rev. 0x11)
[ 1.000000] pci1 at ppb0 bus 1
[ 1.000000] pci1: i/o space, memory space enabled
[ 1.000000] ebus0 at pci1 dev 1 function 0: Sun Microsystems PCIO Ebus2, revision 0x01
[ 1.000000] clock0 at ebus0 addr 2000-3fff: mk48t59
[ 1.000000] power at ebus0 addr 7240-7243 ipl 1 not configured
[ 1.000000] fdthree at ebus0 addr 0-ffffffff not configured
[ 1.000000] com0 at ebus0 addr 3f8-3ff ipl 2b: ns16550a, working fifo
[ 1.000000] com0: console
[ 1.000000] pckbc0 at ebus0 addr 60-67 ipl 29autoconfiguration error: : no intr 1: selftest ok
[ 1.000000] pckbd0 at pckbc0 (kbd slot)
[ 1.000000] wskbd1 at pckbd0 mux 1
[ 1.000000] pms0 at pckbc0 (aux slot)
[ 1.000000] wsmouse0 at pms0 mux 0
[ 1.000000] hme0 at pci1 dev 1 function 1: Sun Happy Meal Ethernet, rev. 0
[ 1.000000] hme0: interrupting at ivec 3021
[ 1.000000] hme0: Ethernet address 52:54:00:12:34:56
[ 1.000000] nsphy0 at hme0 phy 1: DP83840 10/100 media interface, rev. 1
[ 1.000000] nsphy0: 100baseTX-FDX, auto
[ 1.000000] genfb0 at pci1 dev 2 function 0: vendor 1234 product 1111 (rev. 0x02)
[ 1.000000] cmdide0 at pci1 dev 3 function 0: CMD Technology PCI0646 (rev. 0x07)
[ 1.000000] cmdide0: bus-master DMA support present
[ 1.000000] cmdide0: primary channel configured to native-PCI mode, channel non-independant
[ 1.000000] cmdide0: using ivec 1820 for native-PCI interrupt
[ 1.000000] atabus0 at cmdide0 channel 0
[ 1.000000] cmdide0: secondary channel configured to native-PCI mode, channel non-independant
[ 1.000000] atabus1 at cmdide0 channel 1
[ 1.000000] ppb1 at pci0 dev 1 function 0: Sun Microsystems Simba PCI Bridge (rev. 0x11)
[ 1.000000] pci2 at ppb1 bus 2
[ 1.000000] pci2: i/o space, memory space enabled
[ 1.000000] pcons at mainbus0 not configured
[ 1.000000] timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
[ 1.000003] timecounter: Timecounter "tick-counter" frequency 100000000 Hz quality 100
[ 1.000003] No counter-timer -- using %tick at 100MHz as system clock.
[ 4.143247] wd0 at atabus0 drive 0
[ 4.163424] wd0: <QEMU HARDDISK>
[ 4.163424] wd0: drive supports 16-sector PIO transfers, LBA48 addressing
[ 4.163424] wd0: 6144 MB, 12483 cyl, 16 head, 63 sec, 512 bytes/sect x 12582912 sectors
[ 4.173378] wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
[ 4.183315] wd0(cmdide0:0:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)
[ 4.183315] atapibus0 at atabus1: 2 targets
[ 4.193752] cd0 at atapibus0 drive 0: <QEMU DVD-ROM, QM00003, 2.5+> cdrom removable
[ 4.203927] cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
[ 4.203927] cd0(cmdide0:1:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)
[ 4.243486] WARNING: 1 error while detecting hardware; check system log.
[ 4.253250] root on wd0a dumps on wd0b
[ 4.263063] root file system type: ffs
[ 4.272781] kern.module.path=/stand/sparc64/9.2/modules</pre>
<p>Lots of stuff here, so I'll only pick out some highlights, if you want to work through it you may find the NetBSD man pages for section 4 "Special Files and Hardware Support" helpful (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/sparc64/intro.4">NetBSD/sparc64 man 4 intro</a>).</p>
<p>Since modern operating systems tend to be a little more memory hungry than those the original UltraSPARC systems were released with, I've upped the memory from the default 128 MiB to a more comfortable 1.0 GiB (1024 MiB). The processor is reported as an UltraSPARC IIi at 100 MHz. The disk drives show the QEMU finger print in the reported manufacturer and device name strings.</p>
<h4 style="text-align: left;">sysctl</h4>
<p>A tool to manipulate system information variables in the kernel. Here I've limited the output to only the hardware related items (<tt>hw</tt> group).</p>
<pre class="capturedOutput">$ sysctl -a | grep '^hw'
hw.machine = sparc64
hw.model = OpenBiosTeam,OpenBIOS (SUNW,UltraSPARC-IIi @ 100 MHz)
hw.ncpu = 1
hw.byteorder = 4321
hw.physmem = 1073741824
hw.usermem = 1057128448
hw.pagesize = 8192
hw.disknames = wd0 cd0
hw.machine_arch = sparc64
hw.alignbytes = 15
hw.cnmagic = \x27\x01
hw.physmem64 = 1073741824
hw.usermem64 = 1057128448
hw.iostatnames = wd0 cd0
hw.ncpuonline = 1
hw.uhso.autoswitch = 1
hw.fwohci.nocyclemaster = 0
hw.fwohci.phydma_enable = 1
hw.ieee1394if.try_bmr = 1
hw.ieee1394if.hold_count = 0
hw.ieee1394if.ieee1394_debug = 0
hw.fwmem.eui64_hi = 0
hw.fwmem.eui64_lo = 0
hw.fwmem.speed = 2
hw.fwmem.fwmem_debug = 0
hw.fwip.rx_queue_len = 256
hw.fwip.if_fwip_debug = 0
hw.sbp.auto_login = 1
hw.sbp.max_speed = -1
hw.sbp.exclusive_login = 1
hw.sbp.login_delay = 1000
hw.sbp.scan_delay = 500
hw.sbp.use_doorbell = 0
hw.sbp.tags = 0
hw.sbp.sbp_debug = 0
hw.ath.dwell = 200
hw.ath.calibrate = 30
hw.ath.outdoor = 1
hw.ath.countrycode = 0
hw.ath.regdomain = 0
hw.ath.debug = 0
hw.ath.rxbuf = 40
hw.ath.txbuf = 200
hw.ath.hal.dma_brt = 2
hw.ath.hal.sw_brt = 10
hw.ath.hal.swba_backoff = 0
hw.wsevent.default_version = 1
hw.firmware.path = /libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata
hw.ubsec.maxbatch = 1
hw.ubsec.maxaggr = 1
hw.cpu0.name = SUNW,UltraSPARC-IIi
hw.cpu0.id = 0
hw.cpu0.clock_frequency = 100000000
hw.cpu0.ver = 6474004206454023
hw.wd0.use_ncq = 1
hw.wd0.use_ncq_prio = 0</pre>
<p>Again, a bit too much information here, most of which repeats the stuff in the <tt>dmesg</tt> output, so just the highlights...</p>
<p>The <tt>hw.model</tt> variable contains the hardware model name, which is a generic OpenBIOS name for this generic 'sun4u' system. This also includes the processor identification as an UltraSPARC IIi at 100 MHz, which is also covered in the CPU section (<tt>hw.cpu0.*</tt>)</p>
<h4 style="text-align: left;">pcictl</h4>
<p>The PCI bus control application, can get a report of the devices on the bus:</p>
<pre class="capturedOutput"># pcictl pci0 list
000:01:0: Sun Microsystems Simba PCI Bridge (PCI bridge, revision 0x11)
000:01:1: Sun Microsystems Simba PCI Bridge (PCI bridge, revision 0x11)
001:01:0: Sun Microsystems PCIO Ebus2 (miscellaneous bridge, revision 0x01)
001:01:1: Sun Microsystems PCIO Happy Meal Ethernet (ethernet network)
001:02:0: vendor 1234 product 1111 (VGA display, revision 0x02)
001:03:0: CMD Technology PCI0646 (IDE mass storage, interface 0x8f, revision 0x07)
NULL phandle
Unexpected client interface exception: -1 </pre>
<p>Things don't seem quite right here, with a recurring error appearing after listing the devices. But the device information reported shows the expected devices installed.</p>
<p>The UltraSPARC IIi processor includes a PCI bus controller, which gives the main PCI bus ("Sabre" bus). The "Sabre" bus connects to two PCI bridge devices, one for the mainboard devices, and the other for the PCI slots. Knowing this the reported PCI configuration makes sense, with the two "Simba" bridge devices at the top on bus '000', followed by the mainboard devices on bus '001' supporting the I/O device, ethernet, VGA graphics and Parallel ATA controller.</p>
<p>The reporting of the 'vendor' and 'product' identifiers instead of their associated strings for the VGA controller, indicates that there is no matching information in NetBSD's hardware database.</p>
<h4 style="text-align: left;">atactl</h4>
<p>Using <tt>sysctl</tt> we can get a list of the disks installed in the system:</p>
<pre class="capturedOutput"># sysctl hw.disknames
hw.disknames = wd0 cd0</pre>
<p>The <tt>wd</tt> prefix (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/sparc64/wd.4">NetBSD man</a>) indicates that the drive is on an ATA bus, so we can use <tt>atactl</tt> to get more information about it (if it was a SCSI disk (<tt>sd</tt>) we would use <tt>scsictl</tt> instead):</p>
<pre class="capturedOutput"># atactl wd0 identify
Model: QEMU HARDDISK, Rev: 2.5+, Serial #: QM00001
Device type: ATA, fixed
Capacity 6442 Mbytes, 12582912 sectors, 512 bytes/sector
Cylinders: 12483, heads: 16, sec/track: 63
Physical sector size: 512 bytes
Device capabilities:
DMA
LBA
IORDY operation
Device supports following standards:
ATA-4 ATA-5 ATA-6 ATA-7
Command set support:
NOP command (enabled)
Write cache (enabled)
SMART feature set (enabled)
FLUSH CACHE EXT command (enabled)
FLUSH CACHE command (enabled)
48-bit Address feature set (enabled)
TRIM supported
# atactl cd0 identify
Model: , Rev: , Serial #:
Device type: ATA, removable
Capacity 0 bytes, 0 sectors, 512 bytes/sector
Cylinders: 0, heads: 0, sec/track: 0
Device capabilities:</pre>
<p>The <tt>cd</tt> devices (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/sparc64/cd.4">NetBSD man</a>) are a bit special, since we can also look at them as SCSI devices:</p>
<pre class="capturedOutput"># scsictl cd0 identify
/dev/rcd0: scsibus0 target 0 lun 0 >QEMU, QEMU DVD-ROM, 2.5+></pre>
<p>Where we see the manufacturer and drive name strings, which were missing from the ATA version of the information.</p>
<h3 style="text-align: left;">Benchmark</h3>
<p>Since this is an emulated machine an obvious question is, how well does it perform compared to the real thing? To find out we're going to need a benchmark.</p>
<h4 style="text-align: left;">BogoMips</h4>
<p>The BogoMips (<a href="https://en.wikipedia.org/wiki/BogoMips">Wikipedia</a>) pseudo-benchmark has a behavior where the score is related to the processor clock speed, and has an easily available collection of results from a range of systems (see <a href="https://tldp.org/HOWTO/html_single/BogoMips/">BogoMips mini-Howto</a>). This is helpful in this case since the performance of processors of this era typically scaled with clock speed. So let's get some results using the standalone BogoMips 1.3 program and see what it says:</p>
<pre>Calibrating delay loop.. ok - 214.74 BogoMips
Calibrating delay loop.. ok - 218.24 BogoMips
Calibrating delay loop.. ok - 216.48 BogoMips
Calibrating delay loop.. ok - 214.74 BogoMips
Calibrating delay loop.. ok - 216.48 BogoMips</pre>
<p>On UltraSPARC systems the BogoMips score is approx. twice the processor clock speed, so the maximum score of about 220 BogoMips suggests performance equivalent to an UltraSPARC running at 110.0 MHz. Checking online the slowest released Sun Ultra workstations had a processor clock of 143 MHz (giving around 286 BogoMips), so this emulation is a little on the slow side when compared to Sun hardware. However the first 64-bit SPARC processors were used in the Fujitsu HALstation Model 330 and Model 350 workstations, these use a SPARC64 processor (<a href="https://en.wikipedia.org/wiki/HAL_SPARC64">Wikipedia</a>) running at 101 Mhz and 118 MHz respectively, and ran a fork of Solaris 2.4 called SPARC64/OS. These workstations would be around the performance level we're seeing.</p>
<h4 style="text-align: left;">OpenSSL</h4>
<p>The <a href="https://openssl.org/">OpenSSL</a> library of cryptographic methods provides a means to test the performance of the methods. Using this we can get a feel for the computational performance of a system, and comparisons with real hardware and other emulations can show how well a particular emulation performs. Since we are mainly interested in old hardware, we'll test using two of the older methods: MD5 and RSA.</p>
<pre class="capturedOutput">$ openssl speed md5
Doing md5 for 3s on 16 size blocks: 812486 md5's in 3.02s
Doing md5 for 3s on 64 size blocks: 659360 md5's in 3.01s
Doing md5 for 3s on 256 size blocks: 342044 md5's in 3.02s
Doing md5 for 3s on 1024 size blocks: 153124 md5's in 3.01s
Doing md5 for 3s on 8192 size blocks: 24631 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 12456 md5's in 3.00s
OpenSSL 1.1.1k 25 Mar 2021
NetBSD 9.2
options:bn(64,64) rc4(int) des(int) aes(partial) idea(int) blowfish(ptr)
gcc version 7.5.0 (NetBSD nb4 20200810)
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
md5 4304.56k 14019.61k 28994.46k 52092.68k 67259.05k 68026.37k
$ openssl speed rsa
Doing 512 bits private rsa's for 10s: 1275 512 bits private RSA's in 10.01s
Doing 512 bits public rsa's for 10s: 14227 512 bits public RSA's in 10.00s
Doing 1024 bits private rsa's for 10s: 229 1024 bits private RSA's in 10.04s
Doing 1024 bits public rsa's for 10s: 4879 1024 bits public RSA's in 10.00s
Doing 2048 bits private rsa's for 10s: 37 2048 bits private RSA's in 9.68s
Doing 2048 bits public rsa's for 10s: 1496 2048 bits public RSA's in 10.01s
Doing 3072 bits private rsa's for 10s: 13 3072 bits private RSA's in 10.37s
Doing 3072 bits public rsa's for 10s: 649 3072 bits public RSA's in 10.04s
Doing 4096 bits private rsa's for 10s: 6 4096 bits private RSA's in 10.00s
Doing 4096 bits public rsa's for 10s: 422 4096 bits public RSA's in 10.01s
Doing 7680 bits private rsa's for 10s: 1 7680 bits private RSA's in 10.97s
Doing 7680 bits public rsa's for 10s: 113 7680 bits public RSA's in 10.03s
OpenSSL 1.1.1k 25 Mar 2021
NetBSD 9.2
options:bn(64,64) rc4(int) des(int) aes(partial) idea(int) blowfish(ptr)
gcc version 7.5.0 (NetBSD nb4 20200810)
sign verify sign/s verify/s
rsa 512 bits 0.007851s 0.000703s 127.4 1422.7
rsa 1024 bits 0.043843s 0.002050s 22.8 487.9
rsa 2048 bits 0.261622s 0.006691s 3.8 149.5
rsa 3072 bits 0.797692s 0.015470s 1.3 64.6
rsa 4096 bits 1.666667s 0.023720s 0.6 42.2
rsa 7680 bits 10.970000s 0.088761s 0.1 11.3</pre>
<p>Extracting the relevant figures for comparisons (see <a href="https://boxes-of-tat.blogspot.com/p/openssl-speed-results.html">OpenSSL Speed Results</a>):</p><ul>
<li>OpenSSL speed MD5 8,192 bytes: 67,259.05k</li>
<li>OpenSSL speed RSA 4,096 bytes sign/s: 0.6</li>
<li>OpenSSL speed RSA 4,096 bytes verify/s: 42.2</li>
</ul>
<p>These will be roughly indicative of computational workload performance on this machine.</p>
<h3 style="text-align: left;">Thoughts</h3>
<p>The speed of the processor being slower than any of the actual Sun Ultra workstations may place some restrictions on roles that can be fulfilled by the emulated machine. However performance of other emulated hardware elements (e.g. disk and network) may offset the slower processor, and make this a viable environment for more tasks than would be initially expected.</p>
<h3 style="text-align: left;">Sources</h3>
<p></p>
<ul style="text-align: left;">
<li><a href="https://en.wikipedia.org/wiki/Sun_Ultra_series">Sun Ultra series - Wikipedia</a></li>
<li><a href="https://gmplib.org/~tege/qemu.html">System emulation using QEMU</a></li>
<li><a href="https://wiki.qemu.org/Documentation/Platforms/SPARC">Documentation/Platforms/SPARC - QEMU</a></li>
<li><a href="https://wiki.netbsd.org/ports/sparc64/">NetBSD/sparc64</a></li>
<li><a href="https://dogemicrosystems.ca/pub/Sun/System_Handbook/Sun_syshbk_V4.1/Devices/Graphics/graphics-matrix.html">Graphics Card Compatibility Matrix</a></li>
<li><a href="http://sunsite.uakom.sk/sunworldonline/swol-10-1995/swol-10-hal.html">HAL's 64-bit challenge - SunWorld - October 1995</a></li>
</ul>
<hr />
<p><i>Update</i> 24-Jun-2021: added OpenSSL benchmark results</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0tag:blogger.com,1999:blog-7125294730422622718.post-28427249744517681992021-05-27T17:11:00.002+01:002022-05-14T18:31:57.149+01:00NetBSD - System Information<h3 style="text-align: left;">NetBSD</h3>
<p style="text-align: left;">A member of the open source family of <a href="https://en.wikipedia.org/wiki/Berkeley_Software_Distribution">Berkeley Software Distribution</a> (BSD) UNIX-like operating systems, along with FreeBSD and OpenBSD, <a href="https://www.netbsd.org/">NetBSD</a> is available for a wide range of hardware platforms (<a href="https://wiki.netbsd.org/ports/">Platforms supported by NetBSD</a>), including support for many vintage systems.</p>
<h4 style="text-align: left;">System Note</h4>
<p style="text-align: left;">The sample results below are taken from a NetBSD system running in a <a href="https://www.virtualbox.org/">VirtualBox</a> VM on a Intel i7-860 system running <a href="https://www.microsoft.com/en-gb/windows">MS Windows</a> 10. So some of the hardware information will look a little different from the results running on actual hardware. For example the the processor identification and the number of cores won't match.</p>
<p><span></span></p><a name='more'></a><p></p>
<h3 style="text-align: left;">Operating System</h3>
<p>Commands and files used to obtain information about the operating system:</p>
<h4 style="text-align: left;">uname</h4>
<p>Operating system name, version, release and platform.</p>
<pre class="capturedOutput"># uname -a
NetBSD netbsd9.home 9.2 NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64</pre>
<p>That is NetBSD version 9.2, release "<tt>NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC</tt>", on an <tt>amd64</tt> system named "netbsd9.home".</p>
<h4 style="text-align: left;">/etc/release</h4>
<p>The <tt>/etc/release</tt> file contains details of the release.</p>
<pre class="capturedOutput"># cat /etc/release
NetBSD 9.2/amd64
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Build information:
Build date Wed May 12 13:15:55 UTC 2021
Built by builder@localhost.NetBSD.org
Build ID 202105121714Z
Build settings:
DISTRIBVER = '9.2'
EXTERNAL_TOOLCHAIN = (undefined)
HAVE_GCC = '7'
HAVE_GDB = '830'
HAVE_LLVM = (undefined)
HAVE_PCC = (undefined)
INSTALLWORLDDIR = (undefined)
MACHINE = 'amd64'
MACHINE_ARCH = 'x86_64'
MKARZERO = 'yes'
MKATF = 'yes'
MKBINUTILS = 'yes'
MKBSDGREP = 'no'
MKBSDTAR = 'yes'
MKCATPAGES = 'no'
MKCOMPATTESTS = 'no'
MKCOMPATX11 = 'no'
MKCOMPLEX = 'yes'
MKCTF = 'yes'
MKCVS = 'yes'
MKCXX = 'yes'
MKDEBUG = 'yes'
MKDEBUGLIB = 'no'
MKDOC = 'yes'
MKDTC = 'yes'
MKDTRACE = 'yes'
MKDYNAMICROOT = 'yes'
MKEXTSRC = 'no'
MKFIRMWARE = 'yes'
MKGCC = 'yes'
MKGCCCMDS = 'yes'
MKGDB = 'yes'
MKGROFF = 'yes'
MKGROFFHTMLDOC = 'no'
MKHESIOD = 'yes'
MKHTML = 'yes'
MKIEEEFP = 'yes'
MKINET6 = 'yes'
MKINFO = 'yes'
MKIPFILTER = 'yes'
MKISCSI = 'yes'
MKKERBEROS = 'yes'
MKKMOD = 'yes'
MKKYUA = 'no'
MKLDAP = 'yes'
MKLIBCXX = 'no'
MKLIBSTDCXX = 'yes'
MKLINKLIB = 'yes'
MKLINT = 'no'
MKLLD = 'no'
MKLLDB = 'no'
MKLLVM = 'no'
MKLLVMRT = 'yes'
MKLVM = 'yes'
MKMAKEMANDB = 'yes'
MKMAN = 'yes'
MKMANDOC = 'yes'
MKMANZ = 'no'
MKMCLINKER = 'no'
MKMDNS = 'yes'
MKNLS = 'yes'
MKNOUVEAUFIRMWARE = 'yes'
MKNPF = 'yes'
MKNSD = 'no'
MKOBJ = 'yes'
MKOBJDIRS = 'yes'
MKPAM = 'yes'
MKPCC = 'no'
MKPERFUSE = 'yes'
MKPF = 'yes'
MKPIC = 'yes'
MKPICINSTALL = 'no'
MKPICLIB = 'yes'
MKPIGZGZIP = 'no'
MKPOSTFIX = 'yes'
MKPROFILE = 'yes'
MKRADEONFIRMWARE = 'yes'
MKREPRO = 'yes'
MKRUMP = 'yes'
MKSHARE = 'yes'
MKSKEY = 'yes'
MKSLJIT = 'yes'
MKSOFTFLOAT = 'no'
MKSTATICLIB = 'yes'
MKSTRIPIDENT = 'no'
MKTEGRAFIRMWARE = 'no'
MKTPM = 'no'
MKUNBOUND = 'yes'
MKUNPRIVED = 'yes'
MKUPDATE = 'no'
MKX11 = 'yes'
MKX11FONTS = 'yes'
MKX11MOTIF = 'no'
MKXORG_SERVER = 'yes'
MKYP = 'yes'
MKZFS = 'yes'
NETBSD_OFFICIAL_RELEASE = 'yes'
NOCLEANDIR = (undefined)
NODISTRIBDIRS = (undefined)
NOINCLUDES = (undefined)
TOOLCHAIN_MISSING = 'no'
USETOOLS = 'yes'
USE_HESIOD = 'yes'
USE_INET6 = 'yes'
USE_JEMALLOC = 'yes'
USE_KERBEROS = 'yes'
USE_LDAP = 'yes'
USE_PAM = 'yes'
USE_SKEY = 'no'
USE_YP = 'yes'</pre>
<p>A lot of stuff here should there be a need to rebuild.</p>
<h3 style="text-align: left;">Hardware</h3>
<h4 style="text-align: left;">dmesg</h4>
<p>The system messages from the boot process are typically available using <tt>dmesg</tt>, if enough system messages have been generated to fill the system message buffer, have a look in <tt>/var/run/dmesg.boot</tt> to see the boot time messages.</p>
<pre class="capturedOutput">netbsd9# dmesg
[ 1.000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
[ 1.000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
[ 1.000000] 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved.
[ 1.000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.000000] The Regents of the University of California. All rights reserved.
[ 1.000000] NetBSD 9.2 (GENERIC) #0: Wed May 12 13:15:55 UTC 2021
[ 1.000000] mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC
[ 1.000000] total memory = 4095 MB
[ 1.000000] avail memory = 3952 MB
[ 1.000000] rnd: seeded with 256 bits
[ 1.000000] timecounter: Timecounters tick every 10.000 msec
[ 1.000000] Kernelized RAIDframe activated
[ 1.000000] running cgd selftest aes-xts-256 aes-xts-512 done
[ 1.000000] timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
[ 1.000003] innotek GmbH VirtualBox (1.2)
[ 1.000003] mainbus0 (root)
[ 1.000003] ACPI: RSDP 0x00000000000E0000 000024 (v02 VBOX )
[ 1.000003] ACPI: XSDT 0x00000000DFFF0030 00003C (v01 VBOX VBOXXSDT 00000001 ASL 00000061)
[ 1.000003] ACPI: FACP 0x00000000DFFF00F0 0000F4 (v04 VBOX VBOXFACP 00000001 ASL 00000061)
[ 1.000003] ACPI: DSDT 0x00000000DFFF0470 002325 (v02 VBOX VBOXBIOS 00000002 INTL 20100528)
[ 1.000003] ACPI: FACS 0x00000000DFFF0200 000040
[ 1.000003] ACPI: APIC 0x00000000DFFF0240 00005C (v02 VBOX VBOXAPIC 00000001 ASL 00000061)
[ 1.000003] ACPI: SSDT 0x00000000DFFF02A0 0001CC (v01 VBOX VBOXCPUT 00000002 INTL 20100528)
[ 1.000003] ACPI: 2 ACPI AML tables successfully acquired and loaded
[ 1.000003] ioapic0 at mainbus0 apid 2: pa 0xfec00000, version 0x20, 24 pins
[ 1.000003] cpu0 at mainbus0 apid 0
[ 1.000003] cpu0: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz, id 0x106e5
[ 1.000003] cpu0: package 0, core 0, smt 0
[ 1.000003] cpu1 at mainbus0 apid 1
[ 1.000003] cpu1: Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz, id 0x106e5
[ 1.000003] cpu1: package 0, core 1, smt 0
[ 1.000003] acpi0 at mainbus0: Intel ACPICA 20190405
[ 1.000003] acpi0: X/RSDT: OemId <VBOX ,VBOXXSDT,00000001>, AslId <ASL ,00000061>
[ 1.000003] acpi0: SCI interrupting at int 9
[ 1.000003] acpi0: fixed power button present
[ 1.000003] acpi0: fixed sleep button present
[ 1.000003] timecounter: Timecounter "ACPI-Safe" frequency 3579545 Hz quality 900
[ 1.051382] pckbc1 at acpi0 (PS2K, PNP0303) (kbd port): io 0x60,0x64 irq 1
[ 1.051382] pckbc2 at acpi0 (PS2M, PNP0F03) (aux port): irq 12
[ 1.051382] attimer1 at acpi0 (TIMR, PNP0100): io 0x40-0x43,0x50-0x53
[ 1.051382] SRL0 (PNP0501) at acpi0 not configured
[ 1.051382] acpivga0 at acpi0 (GFX0): ACPI Display Adapter
[ 1.051382] acpiout0 at acpivga0 (VGA, 0x0100): ACPI Display Output Device
[ 1.051382] acpivga0: connected output devices:
[ 1.051382] acpivga0: 0x0100 (acpiout0): VGA Analog Monitor, index 0, port 0, head 0
[ 1.051382] acpiacad0 at acpi0 (AC, ACPI0003-0): ACPI AC Adapter
[ 1.051382] ACPI: Enabled 2 GPEs in block 00 to 07
[ 1.051382] pckbd0 at pckbc1 (kbd slot)
[ 1.051382] pckbc1: using irq 1 for kbd slot
[ 1.051382] wskbd0 at pckbd0: console keyboard
[ 1.051382] pms0 at pckbc1 (aux slot)
[ 1.051382] pckbc1: using irq 12 for aux slot
[ 1.051382] wsmouse0 at pms0 mux 0
[ 1.051382] pci0 at mainbus0 bus 0: configuration mode 1
[ 1.051382] pci0: This pci host supports neither MSI nor MSI-X.
[ 1.051382] pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
[ 1.051382] pchb0 at pci0 dev 0 function 0: vendor 8086 product 1237 (rev. 0x02)
[ 1.051382] pcib0 at pci0 dev 1 function 0: vendor 8086 product 7000 (rev. 0x00)
[ 1.051382] piixide0 at pci0 dev 1 function 1: Intel 82371AB IDE controller (PIIX4) (rev. 0x01)
[ 1.051382] piixide0: bus-master DMA support present
[ 1.051382] piixide0: primary channel configured to compatibility mode
[ 1.051382] piixide0: primary channel interrupting at ioapic0 pin 14
[ 1.051382] atabus0 at piixide0 channel 0
[ 1.051382] piixide0: secondary channel configured to compatibility mode
[ 1.051382] piixide0: secondary channel interrupting at ioapic0 pin 15
[ 1.051382] atabus1 at piixide0 channel 1
[ 1.051382] vga0 at pci0 dev 2 function 0: vendor 15ad product 0405 (rev. 0x00)
[ 1.051382] wsdisplay0 at vga0 kbdmux 1: console (80x25, vt100 emulation), using wskbd0
[ 1.051382] wsmux1: connecting to wsdisplay0
[ 1.051382] drm at vga0 not configured
[ 1.051382] wm0 at pci0 dev 3 function 0: Intel i82540EM 1000BASE-T Ethernet (rev. 0x02)
[ 1.051382] wm0: interrupting at ioapic0 pin 19
[ 1.051382] wm0: 32-bit 33MHz PCI bus
[ 1.051382] wm0: 64 words (6 address bits) MicroWire EEPROM
[ 1.051382] wm0: Ethernet address 08:00:27:c8:18:c6
[ 1.051382] wm0: 0x402<LOCK_EECD,IOH_VALID>
[ 1.051382] makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 4
[ 1.051382] makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
[ 1.051382] vendor 80ee product cafe (miscellaneous system) at pci0 dev 4 function 0 not configured
[ 1.051382] auich0 at pci0 dev 5 function 0: i82801AA (ICH) AC-97 Audio
[ 1.051382] auich0: interrupting at ioapic0 pin 21
[ 1.051382] auich0: ac97: SigmaTel STAC9700 codec; no 3D stereo
[ 1.051382] auich0: ac97: ext id 0x809<AC97_23,VRM,VRA>
[ 1.051382] ohci0 at pci0 dev 6 function 0: vendor 106b product 003f (rev. 0x00)
[ 1.051382] ohci0: interrupting at ioapic0 pin 22
[ 1.051382] ohci0: OHCI version 1.0
[ 1.051382] usb0 at ohci0: USB revision 1.0
[ 1.051382] piixpm0 at pci0 dev 7 function 0: vendor 8086 product 7113 (rev. 0x08)
[ 1.051382] piixpm0: interrupting at ioapic0 pin 23
[ 1.051382] iic0 at piixpm0 port 0: I2C bus
[ 1.051382] ehci0 at pci0 dev 11 function 0: vendor 8086 product 265c (rev. 0x00)
[ 1.051382] ehci0: interrupting at ioapic0 pin 19
[ 1.051382] ehci0: EHCI version 1.0
[ 1.051382] usb1 at ehci0: USB revision 2.0
[ 1.051382] isa0 at pcib0
[ 1.051382] com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
[ 1.051382] pcppi0 at isa0 port 0x61
[ 1.051382] spkr0 at pcppi0: PC Speaker
[ 1.051382] wsbell at spkr0 not configured
[ 1.051382] midi0 at pcppi0: PC speaker
[ 1.051382] sysbeep0 at pcppi0
[ 1.051382] attimer1: attached to pcppi0
[ 1.051382] acpicpu0 at cpu0: ACPI CPU
[ 1.051382] acpicpu0: C1: HLT, lat 0 us, pow 0 mW
[ 1.051382] acpicpu1 at cpu1: ACPI CPU
[ 1.051382] timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
[ 1.335022] timecounter: Timecounter "TSC" frequency 2809031330 Hz quality 3000
[ 1.335043] acpiacad0: AC adapter online.
[ 1.915491] auich0: measured ac97 link rate at 39998 Hz, will use 48000 Hz
[ 1.915491] audio0 at auich0: playback, capture, full duplex, independent
[ 2.268357] audio0: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback
[ 2.268357] audio0: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for recording
[ 2.268357] spkr1 at audio0: PC Speaker (synthesized)
[ 2.268357] wsbell at spkr1 not configured
[ 2.286202] uhub0 at usb0: NetBSD (0000) OHCI root hub (0000), class 9/0, rev 1.00/1.00, addr 1
[ 2.286202] uhub0: 12 ports with 12 removable, self powered
[ 2.286202] uhub1 at usb1: NetBSD (0000) EHCI root hub (0000), class 9/0, rev 2.00/1.00, addr 1
[ 2.286202] uhub1: 12 ports with 12 removable, self powered
[ 2.286202] IPsec: Initialized Security Association Processing.
[ 6.479970] wd0 at atabus0 drive 0
[ 6.479970] wd0: <VBOX HARDDISK>
[ 6.539749] wd0: drive supports 128-sector PIO transfers, LBA addressing
[ 6.539749] wd0: 41150 MB, 83607 cyl, 16 head, 63 sec, 512 bytes/sect x 84276224 sectors
[ 6.539749] wd0: GPT GUID: c6bbd56c-4899-4558-9d1d-6abca8e955c4
[ 6.539749] dk0 at wd0: "2cb86f5b-9247-4145-b249-64fcf1460b87", 75887549 blocks at 64, type: ffs
[ 6.550475] dk1 at wd0: "29f2bd47-2e4a-49a4-91b3-5a674ebaabeb", 8388575 blocks at 75887616, type: swap
[ 6.550475] wd0: 32-bit data port
[ 6.550475] wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
[ 6.550475] wd0(piixide0:0:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)
[ 6.550475] atapibus0 at atabus1: 2 targets
[ 6.550475] cd0 at atapibus0 drive 0: <VBOX CD-ROM, VB2-01700376, 1.0> cdrom removable
[ 6.559365] cd0: 32-bit data port
[ 6.559365] cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
[ 6.559365] cd0(piixide0:1:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)
[ 6.559365] boot device: wd0
[ 6.559365] root on dk0 dumps on dk1
[ 6.569370] root file system type: ffs
[ 6.569370] kern.module.path=/stand/amd64/9.2/modules
[ 17.878763] wsdisplay0: screen 1 added (80x25, vt100 emulation)
[ 17.878763] wsdisplay0: screen 2 added (80x25, vt100 emulation)
[ 17.878763] wsdisplay0: screen 3 added (80x25, vt100 emulation)
[ 17.888775] wsdisplay0: screen 4 added (80x25, vt100 emulation)</pre>
<p>Lots and lots of stuff about the system here... highlights include:</p>
<p></p>
<ul>
<li>System memory reporting the 4 GiB allocated to the VM</li>
<li>Lots of items with the name VBOX or VirtualBox</li>
<li>System CPU: Intel i7-860, reporting the 2 virtual cores allocated to the VM rather than all 8 (4 cores + hyperthreading)</li>
<li>IDE bus and disks</li>
<li>Network controller</li>
</ul>
<p>With the device names.</p>
<h4 style="text-align: left;">sysctl</h4>
<p>A tool to manipulate system information variables in the kernel. Here I've limited the output to only the hardware related items.</p>
<pre class="capturedOutput"># sysctl -a | grep '^hw'
hw.machine = amd64
hw.model = Intel 686-class
hw.ncpu = 2
hw.byteorder = 1234
hw.physmem = -462848
hw.usermem = -16752640
hw.pagesize = 4096
hw.disknames = wd0 dk0 dk1 cd0
hw.machine_arch = x86_64
hw.alignbytes = 7
hw.cnmagic =
hw.physmem64 = 4294504448
hw.usermem64 = 4278214656
hw.iostatnames = wd0 dk0 dk1 cd0
hw.ncpuonline = 2
hw.acpi.sleep.beep = 0
hw.acpi.sleep.vbios = 2
hw.acpi.sleep.state = 0
hw.acpi.sleep.states = S0 S5
hw.acpi.root = 917504
hw.acpi.stat.gpe = 0
hw.acpi.stat.sci = 0
hw.acpi.stat.fixed = 0
hw.acpi.stat.method = 148
hw.acpi.acpivga0.bios_switch = 1
hw.acpi.cpu.dynamic = 1
hw.acpi.cpu.passive = 1
hw.ipw.accept_eula = 0
hw.iwi.accept_eula = 0
hw.uhso.autoswitch = 1
hw.fwohci.nocyclemaster = 0
hw.fwohci.phydma_enable = 1
hw.ieee1394if.try_bmr = 1
hw.ieee1394if.hold_count = 0
hw.ieee1394if.ieee1394_debug = 0
hw.fwmem.eui64_hi = 0
hw.fwmem.eui64_lo = 0
hw.fwmem.speed = 2
hw.fwmem.fwmem_debug = 0
hw.fwip.rx_queue_len = 256
hw.fwip.if_fwip_debug = 0
hw.sbp.auto_login = 1
hw.sbp.max_speed = -1
hw.sbp.exclusive_login = 1
hw.sbp.login_delay = 1000
hw.sbp.scan_delay = 500
hw.sbp.use_doorbell = 0
hw.sbp.tags = 0
hw.sbp.sbp_debug = 0
hw.ath.dwell = 200
hw.ath.calibrate = 30
hw.ath.outdoor = 1
hw.ath.countrycode = 0
hw.ath.regdomain = 0
hw.ath.debug = 0
hw.ath.rxbuf = 40
hw.ath.txbuf = 200
hw.ath.hal.dma_brt = 2
hw.ath.hal.sw_brt = 10
hw.ath.hal.swba_backoff = 0
hw.rtw.rfprog_fallback = 0
hw.rtw.host_rfio = 0
hw.wsevent.default_version = 1
hw.firmware.path = /libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata
hw.ubsec.maxbatch = 1
hw.ubsec.maxaggr = 1
hw.drm2.dp_aux_i2c_transfer_size = 16
hw.drm2.dp_aux_i2c_speed_khz = 10
hw.drm2.drm_debug = 0
hw.drm2.edid_fixup = 6
hw.drm2.drm_fbdev_emulation = 1
hw.drm2.drm_timestamp_monotonic = 1
hw.drm2.drm_timestamp_precision = 20
hw.drm2.drm_vblank_offdelay = 5000
hw.drm2.drm_kms_helper_poll = 1
hw.drm2.i915.guc_log_level = -1
hw.drm2.i915.enable_guc_submission = 0
hw.drm2.i915.edp_vswing = 0
hw.drm2.i915.nuclear_pageflip = 0
hw.drm2.i915.verbose_state_checks = 1
hw.drm2.i915.mmio_debug = 0
hw.drm2.i915.use_mmio_flip = 0
hw.drm2.i915.enable_cmd_parser = 1
hw.drm2.i915.disable_vtd_wa = 0
hw.drm2.i915.disable_display = 0
hw.drm2.i915.invert_brightness = 0
hw.drm2.i915.load_detect_test = 0
hw.drm2.i915.prefault_disable = 0
hw.drm2.i915.fastboot = 0
hw.drm2.i915.enable_ips = 1
hw.drm2.i915.disable_power_well = -1
hw.drm2.i915.preliminary_hw_support = 0
hw.drm2.i915.enable_psr = 0
hw.drm2.i915.enable_execlists = -1
hw.drm2.i915.enable_ppgtt = -1
hw.drm2.i915.enable_hangcheck = 1
hw.drm2.i915.reset = 1
hw.drm2.i915.vbt_sdvo_panel_type = -1
hw.drm2.i915.panel_use_ssc = -1
hw.drm2.i915.lvds_channel_mode = 0
hw.drm2.i915.enable_fbc = -1
hw.drm2.i915.enable_rc6 = -1
hw.drm2.i915.semaphores = -1
hw.drm2.i915.panel_ignore_lid = 1
hw.drm2.i915.modeset = -1
hw.drm2.radeon_mst = 0
hw.drm2.radeon_auxch = -1
hw.drm2.radeon_backlight = -1
hw.drm2.radeon_bapm = -1
hw.drm2.radeon_use_pflipirq = 2
hw.drm2.radeon_deep_color = 0
hw.drm2.radeon_vm_block_size = -1
hw.drm2.radeon_vm_size = 8
hw.drm2.radeon_hard_reset = 0
hw.drm2.radeon_runtime_pm = -1
hw.drm2.radeon_aspm = -1
hw.drm2.radeon_dpm = -1
hw.drm2.radeon_fastfb = 0
hw.drm2.radeon_lockup_timeout = 10000
hw.drm2.radeon_msi = -1
hw.drm2.radeon_pcie_gen2 = -1
hw.drm2.radeon_hw_i2c = 0
hw.drm2.radeon_disp_priority = 0
hw.drm2.radeon_audio = -1
hw.drm2.radeon_tv = 1
hw.drm2.radeon_connector_table = 0
hw.drm2.radeon_testing = 0
hw.drm2.radeon_benchmarking = 0
hw.drm2.radeon_gart_size = -1
hw.drm2.radeon_agpmode = 0
hw.drm2.radeon_vram_limit = 0
hw.drm2.radeon_r4xx_atom = 0
hw.drm2.radeon_dynclks = -1
hw.drm2.radeon_modeset = -1
hw.drm2.radeon_no_wb = 0
hw.drm2.nouveau_tv_norm =
hw.drm2.nouveau_vram_pushbuf = 0
hw.drm2.nouveau_duallink = 1
hw.drm2.nouveau_tv_disable = 0
hw.drm2.nouveau_runtime_pm = -1
hw.drm2.nouveau_modeset = -1
hw.drm2.nouveau_noaccel = 0
hw.drm2.nouveau_debug =
hw.drm2.nouveau_config =
hw.wm0.txrx_workqueue = 0
hw.auich0.ac97rate = 48000
hw.audio0.blk_ms = 10
hw.audio0.multiuser = 0
hw.wd0.use_ncq = 1
hw.wd0.use_ncq_prio = 0</pre>
<p>Again lots of stuff, with a lot of overlap with what we saw in <tt>dmesg</tt>. As well as the <tt>hw</tt> category, the <tt>machdep</tt> section also has some hardware information:</p>
<pre class="capturedOutput"># sysctl -a | grep '^machdep'
machdep.biosbasemem = 639
machdep.biosextmem = 3668992
machdep.booted_kernel = netbsd
machdep.diskinfo: 80:84276224(1024/255/63),2 dk0 dk1 wd0:80
machdep.fpu_present = 1
machdep.osfxsr = 1
machdep.sse = 1
machdep.sse2 = 1
machdep.fpu_save = 1
machdep.fpu_save_size = 512
machdep.xsave_features = 0
machdep.dmi.system-vendor = innotek GmbH
machdep.dmi.system-product = VirtualBox
machdep.dmi.system-version = 1.2
machdep.dmi.system-serial = 0
machdep.dmi.system-uuid = aa52f87b-c91e-447e-843c-acbd63d88eb8
machdep.dmi.bios-vendor = innotek GmbH
machdep.dmi.bios-version = VirtualBox
machdep.dmi.bios-date = 20061201
machdep.dmi.board-vendor = Oracle Corporation
machdep.dmi.board-product = VirtualBox
machdep.dmi.board-version = 1.2
machdep.dmi.board-serial = 0
machdep.dmi.chassis-vendor = Oracle Corporation
machdep.dmi.chassis-type = Oracle Corporation
machdep.bootmethod = BIOS
machdep.cpu_brand = Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz
machdep.sparse_dump = 1
machdep.tsc_freq = 2809031330
machdep.pae = 1
machdep.tsc_user_enable = 1
machdep.hypervisor = generic
machdep.svs.enabled = 1
machdep.svs.pcid = 0
machdep.spectre_v1.mitigated = 0
machdep.spectre_v2.hwmitigated = 0
machdep.spectre_v2.swmitigated = 1
machdep.spectre_v2.method = [GCC retpoline]
machdep.spectre_v4.mitigated = 0
machdep.spectre_v4.method = (none)
machdep.mds.mitigated = 0
machdep.mds.method = (none)
machdep.taa.mitigated = 1
machdep.taa.method = [TAA_NO]
machdep.fpu_eager = 1
machdep.idle-mechanism = acpi</pre>
<p>This include the processor and machine identification strings.</p>
<h3 align="left">Devices</h3>
<h4>pcictl</h4>
<p>Information about the PCI bus.</p>
<pre class="capturedOutput"># pcictl pci0 list
000:00:0: Intel 82441FX (PMC) PCI and Memory Controller (host bridge, revision 0x02)
000:01:0: Intel 82371SB (PIIX3) PCI-ISA Bridge (ISA bridge)
000:01:1: Intel 82371AB (PIIX4) IDE Controller (IDE mass storage, interface 0x8a, revision 0x01)
000:02:0: VMware Virtual SVGA II (VGA display)
000:03:0: Intel i82540EM 1000baseT Ethernet (ethernet network, revision 0x02)
000:04:0: VirtualBox Guest Service (miscellaneous system)
000:05:0: Intel 82801AA AC-97 Audio Controller (audio multimedia, revision 0x01)
000:06:0: Apple Computer Intrepid USB Controller (USB serial bus, OHCI)
000:07:0: Intel 82371AB (PIIX4) Power Management Controller (miscellaneous bridge, revision 0x08)
000:11:0: Intel 82801FB/FR USB EHCI Controller (USB serial bus, EHCI)</pre>
<p>Most devices are on the PCI bus, but VirtualBox is masking the real hardware here. Note that the graphics card is an emulated device using a specification from VMware. Also kind of interesting that VirtualBox uses an Apple USB controller.</p>
<h3 style="text-align: left;">Storage</h3>
<p>The storage devices are listed in the <tt>hw.disknames</tt> variable from <tt>sysctl</tt>:</p>
<pre class="capturedOutput"># sysctl hw.disknames
hw.disknames = wd0 dk0 dk1 cd0</pre>
<p>To find out a bit more about these we need to turn to other commands...</p>
<h4 style="text-align: left;">atactl</h4>
<p>The <tt>wd0</tt> disk is an ATA device (see <a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/wd.4">NetBSD man wd</a>), so the <tt>atactl</tt> command (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/atactl.8">NetBSD man atactl</a>) can be used to find out more:</p>
<pre class="capturedOutput"># atactl wd0 identify
Model: VBOX HARDDISK, Rev: 1.0, Serial #: VB36acbb5b-9e97ffdc
Device type: ATA, fixed
Capacity 43 Gbytes, 84276224 sectors, 512 bytes/sector
Cylinders: 16383, heads: 16, sec/track: 63
Device capabilities:
DMA
LBA
IORDY operation
Device supports following standards:
ATA-1 ATA-2 ATA-3 ATA-4 ATA-5 ATA-6
Command set support:
Look-ahead (enabled)
Write cache (enabled)
Power Management feature set (enabled)
FLUSH CACHE command (enabled)</pre>
<p>So lots of information about this disk. What about the CD-ROM device <tt>cd0</tt> (see <a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/cd.4">NetBSD man cd</a>):</p>
<pre class="capturedOutput"># atactl cd0 identify
Model: , Rev: , Serial #:
Device type: ATA, removable
Capacity 0 bytes, 0 sectors, 512 bytes/sector
Cylinders: 0, heads: 0, sec/track: 0
Device capabilities:</pre>
<p>Hmmm that looks a little odd, for one thing were is the device name?</p>
<h4 style="text-align: left;">scsictl</h4>
<p>When looking at SCSI disks (see <a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/sd.4">NetBSD man sd</a>) use the <tt>scsictl</tt> command (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/scsictl.8">NetBSD man scsictl</a>) in place of <tt>atactl</tt>. Since the CD-ROM device also acts as a SCSI device, let's see what their view looks like:</p>
<pre class="capturedOutput"># scsictl cd0 identify
/dev/rcd0: scsibus0 target 0 lun 0 <VBOX, CD-ROM, 1.0></pre>
<p>Ah that's where the device name is, and this shows the identification information for a SCSI drive.</p>
<h4 style="text-align: left;">dkctl</h4>
<p>The <tt>dk</tt> disks (see <a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/dk.4">NetBSD man dk</a>) represent the partitions of the disk, known as disk wedges, so the <tt>dkctl</tt> command (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/dkctl.8">NetBSD man dkctl</a>) can be used to find out a bit more:</p>
<pre class="capturedOutput"># dkctl dk0 getwedgeinfo
dk0 at wd0: 2cb86f5b-9247-4145-b249-64fcf1460b87
dk0: 75887549 blocks at 64, type: ffs</pre>
<p>The identifier here is used in <tt>/etc/fstab</tt> to mount the wedge,</p>
<h4 style="text-align: left;">usbdevs</h4>
<p>To get information about any USB devices connected to the system use usbdevs (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/usbdevs.8">NetBSD man usbdevs</a>):</p>
<pre class="capturedOutput"># usbdevs -dv
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, OHCI root hub(0x0000), NetBSD(0x0000), rev 1.00(0x0100)
uhub0
port 1 powered
port 2 powered
port 3 powered
port 4 powered
port 5 powered
port 6 powered
port 7 powered
port 8 powered
port 9 powered
port 10 powered
port 11 powered
port 12 powered
Controller /dev/usb1:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), NetBSD(0x0000), rev 1.00(0x0100)
uhub1
port 1 powered
port 2 powered
port 3 powered
port 4 powered
port 5 powered
port 6 powered
port 7 powered
port 8 powered
port 9 powered
port 10 powered
port 11 powered
port 12 powered</pre>
<p>At the moment the system only has the default USB root hubs, so not a lot of information here... even with the <tt>-d</tt> and <tt>-v</tt> options to get information about the driver attached to the device and a some more details of the device.</p>
<h3 style="text-align: left;">Software Packages</h3>
<h4 style="text-align: left;">pkg_info</h4>
<p>To get a list of the installed <tt>pkgsrc</tt> packages use <tt>pkg_info</tt> (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/pkg_info.1">NetBSD man pkg_info</a>):</p>
<pre class="capturedOutput"># pkg_info -a
pkg_install-20210308 Package management and administration tools for pkgsrc
pkgin-20.12.1 Apt / yum like tool for managing pkgsrc binary packages</pre>
<p>This is a freshly installed system, so not much here yet.</p>
<h4 style="text-align: left;">pkgin</h4>
<p>The binary package manager <a href="https://pkgin.net/">pkgin</a> has its own inventory:</p>
<pre class="capturedOutput"># pkgin list
at-spi2-atk-2.38.0 Assistive Technology Service Provider Interface A11y Toolkit
at-spi2-core-2.38.0 Assistive Technology Service Provider Interface Core
atk-2.36.0 Set of interfaces for accessibility
avahi-0.8nb4 Facilitate service discovery on a local network
bash-5.1.4 The GNU Bourne Again Shell
cairo-1.16.0nb2 Vector graphics library with cross-device output support
cairo-gobject-1.16.0nb5 Vector graphics library with cross-device output support
cmocka-1.1.5 Unit testing framework for C supporting mock objects
dbus-1.12.20 Message bus system
dbus-glib-0.110nb1 GLib bindings for the D-BUS message bus system
desktop-file-utils-0.26 Utilities to manage desktop entries
enca-1.15 Extremely Naive Charset Analyser
ffmpeg4-4.3.2nb1 Decoding, encoding and streaming software (v4.x)
firefox-86.0.1 Web browser with support for extensions (version 86)
fribidi-1.0.10 Free Implementation of the Unicode Bidirectional Algorithm
gdbm-1.19 The GNU database manager
gdk-pixbuf2-2.40.0nb1 Library for image loading and manipulation
gettext-lib-0.21 Internationalized Message Handling Library (libintl)
giflib-5.2.1nb4 GIF image format library
glib2-2.66.8nb1 Some useful routines for C programming (glib2)
gmp-6.2.1 Library for arbitrary precision arithmetic
gnutls-3.7.1 Transport Layer Security library
gobject-introspection-1.68.0 GObject Introspection
graphite2-1.3.14 Cross-platform rendering for complex writing systems
gtk2+-2.24.33 GIMP Toolkit v2 - libraries for building X11 user interfaces
gtk3+-3.24.27 GIMP Toolkit v3 - libraries for building X11 user interfaces
harfbuzz-2.7.4 OpenType text shaping engine
hicolor-icon-theme-0.17nb1 Standard icon theme called hicolor
icu-68.2 Robust and full-featured Unicode services
jansson-2.13.1 C library for encoding, decoding and manipulating JSON data
jbigkit-2.1nb1 JBIG-KIT lossless image compression library
jpeg-9d IJG's jpeg compression utilities
lame-3.100nb2 Fast, high quality MP3 encoder
ldb-2.2.1 LDAP-like embedded database
libIDL-0.8.14nb5 CORBA Interface Definition Language parser
libaom-1.0.0nb3 Library for using AV1, video coding format
libass-0.15.0 Portable subtitle renderer for the ASS/SSA subtitle format
libbluray-1.2.1nb1 Library for Blu-Ray Discs playback for media players
libcfg+-0.7.0 Command line and configuration file parsing library
libcups-2.3.3op2 Common UNIX Printing System library
libdaemon-0.14nb2 C library that eases the writing of UNIX daemons
libffi-3.3nb4 Foreign function interface
libgcrypt-1.9.2 GNU cryptographic library
libgpg-error-1.41 Definitions of common error values for all GnuPG components
libiconv-1.14nb3 Character set conversion library
libogg-1.3.4nb1 Ogg project codecs library
libopus-1.3.1 Totally open, royalty-free, highly versatile audio codec library
libpaper-1.1.28 Paper size handling library
libtasn1-4.16.0 ASN.1 structure parser library
libtheora-1.1.1nb2 Video codec for Ogg multimedia streaming
libunistring-0.9.10 Unicode string library
libuuid-2.32.1 Generate unique identifiers for objects
libv4l-1.20.0 Video4Linux userspace library
libva-2.6.1 Video Acceleration API
libvorbis-1.3.7 Library for the Ogg Vorbis audio encoding format
libvpx-1.9.0nb1 On2 VP8 library from Google
libwebp-1.2.0 WebP image format library and tools
libxkbcommon-1.1.0 Library to handle keyboard descriptions
libxml2-2.9.10nb3 XML parser library from the GNOME project
libxslt-1.1.34nb4 XSLT parser library from the GNOME project
lmdb-0.9.29 Symas Lightning Memory-Mapped Database
lzo-2.10 Portable lossless data compression library
mozilla-rootcerts-1.0.20201204 Root CA certificates from the Mozilla Project
nettle-3.7.2 Cryptographic library
nspr-4.29 Platform-neutral API for system level and libc like functions
nss-3.62 Libraries to support development of security-enabled applications
p11-kit-0.23.22nb1 PKCS#11 module manager
p5-Parse-Yapp-1.21nb3 Perl5 LALR parser
pango-1.48.3 Library for layout and rendering of text
pcre-8.44 Perl Compatible Regular Expressions library
perl-5.32.1 Practical Extraction and Report Language
png-1.6.37 Library for manipulating PNG images
popt-1.18 Command line option parsing library
py38-cElementTree-3.8.8 C implementation of Python ElementTree API
py38-cryptodome-3.10.1 Cryptographic and hash functions for Python
py38-dns-1.16.0nb1 Python DNS toolkit
py38-ecdsa-0.16.1 Easy-to-use implementation of ECDSA cryptography
py38-expat-3.8.8 Python interface to expat
py38-idna-2.10 Python module for Internationalized Domain Names in Applications (IDNA)
py38-iso8601-0.1.14 Simple Python module to parse ISO 8601 dates
py38-setuptools-51.3.3 New Python packaging system
py38-six-1.15.0 Python 2 and 3 compatibility utilities
python38-3.8.8 Interpreted, interactive, object-oriented programming language
readline-8.1 GNU library that can recall and edit previous input
samba-4.13.7 SMB/CIFS protocol server suite
shared-mime-info-1.10nb3 Core database of common types
speex-1.2.0 Open-source, patent-free voice codec
talloc-2.3.2 Hierarchical pool based memory allocator with destructors
tcsh-6.22.02nb1 Extended C-shell with many useful features
tdb-1.4.3nb1 Small database system which uses files to store data
tevent-0.10.2nb1 Event system based on the talloc
tiff-4.2.0 Library and tools for reading and writing TIFF data files
wayland-1.18.0nb2 Display server protocol - development libraries
wayland-protocols-1.20 Additional wayland functionality
x264-devel-20191217nb1 GPL licensed H.264 encoder
x265-3.4 High Efficiency Video Coding (HEVC)
xmlcatmgr-2.2nb1 XML and SGML catalog manager
xvidcore-1.3.7 ISO MPEG-4 compliant video codec</pre>
<p>A lot of packages here.</p>
<h4 style="text-align: left;">sys_info</h4>
<p>For the system installed component packages the sys_info command (<a href="https://man.netbsd.org/NetBSD-9.2-STABLE/amd64/sys_info.1">NetBSD man sys_info</a>) can be used:</p>
<pre class="capturedOutput"># sys_info
awk-20121220
bind-9.14.7
bozohttpd-20210227
bzip2-1.0.8
calendar-20160601
dhcpcd-8.1.9
dtc-1.4.4
ftpd-20180428
g++-7.5.0
gcc-7.5.0
grep-2.5.1anb1
gzip-20170803
libc-12.213
libcurses-8.2
libdrm-3.4
libm-0.12
libresolv-3.0
libssh-34.0
libstdc++-9.0
libterminfo-1.0
libutil-7.24
libX11-7.0
libXaw7-10.0
libXfont-3.0
libXft-3.0
libXrandr-3.2
libXt-7.0
NetBSD-9.2
netpgp-3.99.17
netpgpverify-20170201
ntp-4.2.8pl11
openssh-8.0
opensshd-8.0
openssl-1.1.1k
libpcap-1.9.0-PRE-GIT
pkg_install-20201218
sh-20181212-20210512131555Z
sqlite3-3.26.0
sys_info-20170928
tcpdump-4.9.2
tcsh-6.22.02
tzdata-2021a
unbound-1.9.6
userland-NetBSD-9.2/amd64
wpa_supplicant-2.7
xz-5.2.4
yacc-1.9</pre>
<p>So we now know what versions the system components are.</p>
<p><br /></p>Hamishhttp://www.blogger.com/profile/03790030008667364131noreply@blogger.com0