Currently the virtio-pci driver advertises the virtio balloon device
as having the PCI class code PCI_CLASS_MEMORY_RAM.  Although the
balloon device is vaguely related to RAM management, it doesn't
operate anything like a PCI memory device in the sense of the class
code (in fact it's all about taking RAM away from the guest, not
obtaining it).  Nor does this PCI class code appear to be suggested by
the virtio PCI specification.

This recently caused problems on the pseries machine - the class code
caused the firmware to mark the corresponding device tree node as a
memory node, which cause the guest to get horribly confused attempting
to discover memory early in boot.  That was due to a guest kernel bug,
but since the bug is widespread in existing deployed kernels, we don't
really want to trigger it from qemu.

We can work around the problem in the guest firmware for now, but
using PCI_CLASS_MEMORY_RAM for the balloon just seems wrong.  Are
there things out there already that rely on this, or should we just
drop the class code?

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Reply via email to