Hi Michael,
I'm trying to boot Linux 4.15 (upstream commit d8a5b8056) on top of
riscv-qemu qemu-upstream-v3. However it fails to detect virtio-mmio
devices for unclear reasons (see full log below).
virtio_blk: probe of virtio0 failed with error -22
virtio_net: probe of virtio1 failed with error -22
errno -22 == -EINVAL. There are 3 places in the Linux virtio_mmio.c
file where it could return -EINVAL but I added debugging and it
doesn't seem to be any of those.
Any ideas? Perhaps the command line is wrong for this qemu?
Is there a better branch of qemu to choose?
My Linux config is defconfig plus:
https://github.com/rwmjones/fedora-riscv-bootstrap/blob/master/kernel-config
Rich.
$ qemu-system-riscv64 \
-nographic -machine virt -m 2G \
-kernel host-tools/riscv64-unknown-elf/bin/bbl \
-append "console=ttyS0 ro root=/dev/vda init=/init" \
-device virtio-blk-device,drive=hd0 \
-drive file=stage3-disk.img,format=raw,id=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet${TELNET:+,hostfwd=tcp::10000-:23}
OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
Linux version 4.15.0-dirty (
rjo...@trick.home.annexia.org) (gcc version 7.3.1 20180129 (GCC)) #3 SMP Tue Jan 30 11:27:06 GMT 2018
Initial ramdisk at: 0x (ptrval) (512 bytes)
elf_hwcap is 0x112d
percpu: Embedded 15 pages/cpu @ (ptrval) s28824 r0 d32616 u61440
Built 1 zonelists, mobility grouping on. Total pages: 516615
Kernel command line: console=ttyS0 ro root=/dev/vda init=/init
Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
Sorting __ex_table...
Memory: 2054992K/2095104K available (5380K kernel code, 334K rwdata, 1467K rodata, 184K init, 844K bss, 40112K reserved, 0K cma-reserved)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
Console: colour dummy device 80x25
Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
smp: Brought up 1 node, 1 CPU
devtmpfs: initialized
cpu cpu0: Error -2 creating of_node link
random: get_random_u32 called from bucket_table_alloc+0xee/0x28e with crng_init=0
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
futex hash table entries: 256 (order: 2, 16384 bytes)
NET: Registered protocol family 16
vgaarb: loaded
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
TCP established hash table entries: 16384 (order: 5, 131072 bytes)
TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
UDP hash table entries: 1024 (order: 3, 32768 bytes)
UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Unpacking initramfs...
Initialise system trusted keyrings
workingset: timestamp_bits=62 max_order=19 bucket_order=0
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
nfs4filelayout_init: NFSv4 File Layout Driver Registering...
nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
random: fast init done
NET: Registered protocol family 38
Key type asymmetric registered
Asymmetric key parser 'x509' registered
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
irq: no irq domain found for interrupt-controller@c000000 !
console [ttyS0] disabled
10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 0, base_baud = 230400) is a 16550A
console [ttyS0] enabled
[drm] radeon kernel modesetting enabled.
loop: module loaded
virtio_blk: probe of virtio0 failed with error -22
libphy: Fixed MDIO Bus: probed
virtio_net: probe of virtio1 failed with error -22
e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
ehci-platform: EHCI generic platform driver
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci-pci: OHCI PCI platform driver
ohci-platform: OHCI generic platform driver
usbcore: registered new interface driver uas
usbcore: registered new interface driver usb-storage
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
NET: Registered protocol family 10
Segment Routing with IPv6
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
Key type dns_resolver registered
Loading compiled-in X.509 certificates
VFS: Cannot open root device "vda" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0-dirty #3
Call Trace:
[< (ptrval)>] walk_stackframe+0x0/0xa2
[< (ptrval)>] show_stack+0x26/0x34
[< (ptrval)>] dump_stack+0x5e/0x7c
[< (ptrval)>] panic+0xce/0x1e8
[< (ptrval)>] mount_block_root+0x17e/0x240
[< (ptrval)>] mount_root+0x108/0x124
[< (ptrval)>] prepare_namespace+0x116/0x15c
[< (ptrval)>] kernel_init_freeable+0x17e/0x1a2
[< (ptrval)>] kernel_init+0xe/0xf0
[< (ptrval)>] ret_from_syscall+0xa/0xe
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org