qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]