[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1856834] Re: PCI broken in qemu ppc e500 in v2.12.0 and other versi
From: |
Andrej Krutak |
Subject: |
[Bug 1856834] Re: PCI broken in qemu ppc e500 in v2.12.0 and other versions |
Date: |
Tue, 20 Oct 2020 10:53:32 -0000 |
After some research, the problem is that mpc8544ds has only 2 PCI slots
defined (hw/ppc/mpc8544ds.c -> pmc->pci_nr_slots = 2;). This in turn
results in DTB only contain 2 devices in pci@e0008000/interrupt-map. Too
bad qemu doesn't complain when more devices are added - the PCI bars
seem to be OK, just interrupts are not found by linux, hence the error
-22:
pci 8000:00:13.0: of_irq_parse_pci: failed with rc=-22
...and later virtio_rng probe freeze (which freezes linux boot, if a
module is not used and probed in different process).
Changing pci_nr_slots to bigger number (e.g. 4) seems to work just OK,
though of course the mpc8544ds simulation is then non-realistic. A
cleaner solution is adding PCI-PCI bridge, that seems to work too.
As a side-note, MSI doesn't seem to work on e500mc neither. Enabling MSI
support in kernel seems to cause that virtio-blk-pci device probe freeze
in linux, /proc/interrupts shows:
19: 0 fsl-msi-224 0 Edge virtio1-config
20: 0 fsl-msi-224 1 Edge virtio1-req.0
Without MSI, legacy IRQ is used and that seems to work OK:
17: 743 OpenPIC 3 Level virtio1
Alternatively, passing vectors=0 to the virtio device (-device virtio-
blk,drive=drive0,vectors=0 -drive ...) does the trick as well.
That was a fun ride... :-)
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1856834
Title:
PCI broken in qemu ppc e500 in v2.12.0 and other versions
Status in QEMU:
New
Bug description:
The same qemu -M mpc... command that works on qemu-system-ppc version
2.8.0 freezes guest on bootup and shows error for qemu-system-ppc
version 4.2.0release and 4.19dirtygit:
qemu-system-ppc: virtio-blk failed to set guest notifier (-24), ensure -accel
kvm is set.
qemu-system-ppc: virtio_bus_start_ioeventfd: failed. Fallback to userspace
(slower).
ends/freezes at:
nbd: registered device at major 43
vda:
I'm using -drive file=/home/me/rawimage.dd,if=virtio and works fine in
version 2.8.0 installed with apt-get install (Ubuntu 17.04) and also
with 2.8.0 official release from git/github that I compiled/built
myself. But both of the newer releases fail on the same exact machine
same config.
I also noticed that qemu-2.8.0 was fine with mtd but the newer ones I tried
weren't, ie gave
qemu-system-ppc: -drive if=mtd: machine type does not support
if=mtd,bus=0,unit=0
(but I removed -drive if=mtd since wasn't using it anyway)
I also tried on windows but I think virtio doesn't work on windows
hosts at all? On windows host it fails the same way, even version 2.12
as well as 4.1.10...
used:
./configure --prefix=/opt/... --enable-fdt --enable-kvm --enable-debug
(basically all steps the same on same exact system same config, yet
2.8.0 works fine whether apt-get installed or built from source while
the others I built, 4.19/4.2.0 or 2.12/4.1.10(win) don't.)
In case newer qemu versions act weird on various kernels, I did try with both
vmlinuz-4.10.0-19-generic and vmlinuz-4.13.12-041312-generic (I didn't compile
them but I can provide config-..files. This is on Ubuntu 17.04 x86_64 host
emulating e500v2 cpm guest, ie -M mpc... GUEST kernel 2.6.32.44 which is why I
can't use -M ppce500 instead..)
tx
ecs
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1856834/+subscriptions