On 01/08/16 16:06, Artyom Tarasenko wrote:
> Good job, Mark!
> So, now it's possible to boot the PPC and SPARC64 systems from virtio
> drives, right?
>
> Artyom
That's correct, with one caveat - it seems that the drivers in some of
the test Debian 9.0 images don't like QEMU advertising both modern and
legacy modes:
./qemu-system-sparc64 -drive
file=/home/build/src/qemu/image/sparc64/debian-9.0-sparc64-NETINST-1.iso,if=virtio,media=cdrom,index=0
-nographic -bios
/home/build/src/openbios/openbios.git/openbios/obj-sparc64/openbios-builtin.elf.nostrip
-m 256
OpenBIOS for Sparc64
open isn't unique.
close isn't unique.
Configuration device id QEMU version 1 machine id 0
kernel cmdline
CPUs: 1 x SUNW,UltraSPARC-IIi
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.1 built on Aug 1 2016 18:06
Type 'help' for detailed information
Trying disk:a...
No valid state has been set by load or init-program
0 > boot virtio0:d
(cut)
[ 22.223263] ffe2f1d0: ttyS0 at MMIO 0x1fe020043f8 (irq = 5, base_baud
= 115387) is a 16550A
[ 22.223905] Console: ttyS0 (SU)
[ 22.277730] console [ttyS0] enabled
[ 22.297898] mousedev: PS/2 mouse device common for all mice
[ 22.321023] rtc-m48t59 rtc-m48t59.0: rtc core: registered m48t59 as rtc0
[ 22.323433] ledtrig-cpu: registered to indicate activity on CPUs
[ 22.332493] NET: Registered protocol family 10
[ 22.356833] mip6: Mobile IPv6
[ 22.357582] NET: Registered protocol family 17
[ 22.358693] mpls_gso: MPLS GSO support
[ 22.364318] registered taskstats version 1
[ 22.367031] zswap: loaded using pool lzo/zbud
[ 22.378680] rtc-m48t59 rtc-m48t59.0: setting system clock to
2016-08-01 20:14:14 UTC (1470082454)
[ 23.527600] random: systemd-udevd urandom read with 0 bits of entropy
available
[ 26.788885] ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker
[ 26.901425] ne2k-pci 0000:00:04.0 eth0: RealTek RTL-8029 found at
0x1fe02008000, IRQ 6, 52:54:00:12:34:56.
[ 48.346114] NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s!
[systemd-udevd:57]
[ 48.347490] Modules linked in: virtio_pci(+) virtio_ring ne2k_pci(+)
virtio 8390
[ 48.349833] CPU: 0 PID: 57 Comm: systemd-udevd Not tainted
4.3.0-1-sparc64 #1 Debian 4.3.3-2
[ 48.351288] task: fffff8000f4275e0 ti: fffff8000f55c000 task.ti:
fffff8000f55c000
[ 48.352552] TSTATE: 0000009911001600 TPC: 0000000010024274 TNPC:
0000000010024278 Y: 00000000 Not tainted
[ 48.355228] TPC: <vp_reset+0x14/0x40 [virtio_pci]>
[ 48.356043] g0: 0000000000b04400 g1: 000001ff04800014 g2:
fffffffffffb0000 g3: 0000000000000000
[ 48.357446] g4: fffff8000f4275e0 g5: 0000000000332ed0 g6:
fffff8000f55c000 g7: 0000000000000001
[ 48.358836] o0: 0000000000000000 o1: 000000001000ad08 o2:
fffff8000f55f380 o3: fffff8000f41a880
[ 48.360203] o4: fffff8000f41a888 o5: fffff8000f5ad2c0 sp:
fffff8000f55ea41 ret_pc: 0000000000764384
[ 48.361666] RPC: <dev_set_name+0x24/0x40>
[ 48.362418] l0: 0000000080000000 l1: 0000001111001607 l2:
0000000010025168 l3: 0000000000000400
[ 48.363788] l4: 0000000000000000 l5: 0000000000000001 l6:
0000000000000000 l7: 0000000000000008
[ 48.365198] i0: fffff8000f516c00 i1: 000000001000ad08 i2:
0000000000000000 i3: 00000000000000d0
[ 48.366586] i4: 0000000000000000 i5: 0000000000000000 i6:
fffff8000f55eaf1 i7: 000000001000a4e4
[ 48.368098] I7: <register_virtio_device+0x64/0x100 [virtio]>
[ 48.369130] Call Trace:
[ 48.369740] [000000001000a4e4] register_virtio_device+0x64/0x100
[virtio]
[ 48.370915] [0000000010025820] virtio_pci_probe+0xa0/0x160 [virtio_pci]
[ 48.371983] [00000000006eaf40] pci_device_probe+0x80/0x100
[ 48.372879] [000000000076928c] driver_probe_device+0x16c/0x480
[ 48.373829] [0000000000769628] __driver_attach+0x88/0xa0
[ 48.374683] [0000000000766fdc] bus_for_each_dev+0x5c/0xa0
[ 48.375554] [0000000000768c1c] driver_attach+0x1c/0x40
[ 48.376408] [0000000000768710] bus_add_driver+0x1f0/0x2a0
[ 48.377281] [000000000076a114] driver_register+0x74/0x120
[ 48.378162] [00000000006e9894] __pci_register_driver+0x34/0x60
[ 48.379186] [000000001002a018] virtio_pci_driver_init+0x18/0x28
[virtio_pci]
[ 48.380328] [0000000000426c58] do_one_initcall+0xb8/0x200
[ 48.381226] [0000000000525200] do_init_module+0x50/0x1f0
[ 48.382091] [00000000004c2514] load_module+0x1c54/0x23c0
[ 48.382953] [00000000004c2e74] SyS_finit_module+0x94/0xe0
[ 48.383843] [00000000004060f4] linux_sparc_syscall+0x34/0x44
Fortunately it is possible to force legacy mode with a bit of QEMU
command-line fu in order to get the desired behaviour:
./qemu-system-sparc64 -drive
file=/home/build/src/qemu/image/sparc64/debian-9.0-sparc64-NETINST-1.iso,if=none,media=cdrom,id=cd,index=0
-device virtio-blk-pci,disable-modern=on,drive=cd -nographic -bios
/home/build/src/openbios/openbios.git/openbios/obj-sparc64/openbios-builtin.elf.nostrip
-m 256
OpenBIOS for Sparc64
open isn't unique.
close isn't unique.
Configuration device id QEMU version 1 machine id 0
kernel cmdline
CPUs: 1 x SUNW,UltraSPARC-IIi
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.1 built on Aug 1 2016 18:06
Type 'help' for detailed information
Trying disk:a...
No valid state has been set by load or init-program
0 > boot virtio0:d
(cut)
[ 21.749180] ffe2f1d0: ttyS0 at MMIO 0x1fe020043f8 (irq = 5, base_baud
= 115387) is a 16550A
[ 21.749779] Console: ttyS0 (SU)
[ 21.803436] console [ttyS0] enabled
[ 21.824159] mousedev: PS/2 mouse device common for all mice
[ 21.842179] rtc-m48t59 rtc-m48t59.0: rtc core: registered m48t59 as rtc0
[ 21.844768] ledtrig-cpu: registered to indicate activity on CPUs
[ 21.858976] NET: Registered protocol family 10
[ 21.884821] mip6: Mobile IPv6
[ 21.885565] NET: Registered protocol family 17
[ 21.886398] mpls_gso: MPLS GSO support
[ 21.892226] registered taskstats version 1
[ 21.894600] zswap: loaded using pool lzo/zbud
[ 21.905840] rtc-m48t59 rtc-m48t59.0: setting system clock to
2016-08-01 20:36:46 UTC (1470083806)
[ 23.025258] random: systemd-udevd urandom read with 0 bits of entropy
available
[ 26.240261] ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker
[ 26.364453] ne2k-pci 0000:00:04.0 eth0: RealTek RTL-8029 found at
0x1fe02008000, IRQ 6, 52:54:00:12:34:56.
[ 26.386623] virtio-pci 0000:00:06.0: virtio_pci: leaving for legacy
driver
[ 29.109407] ne2k-pci 0000:00:04.0 enp0s4: renamed from eth0
[ 29.118803] vda: vda1 vda2 vda3 vda4 vda5 vda6 vda7 vda8
Starting system log daemon: syslogd, klogd.
Given that transitional/legacy support is complicated enough, I'm quite
tempted to rework this to a proper 1.0 driver before commit so the
default behaviour "just works" for users.
ATB,
Mark.