From: "Michael S. Tsirkin" <mst@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-trivial@nongnu.org, aliguori@us.ibm.com,
Rusty Russell <rusty@rustcorp.com.au>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Remove PCI class code from virtio balloon device
Date: Sun, 18 Mar 2012 14:38:42 +0200 [thread overview]
Message-ID: <20120318123840.GF29902@redhat.com> (raw)
In-Reply-To: <1331859788-6522-1-git-send-email-david@gibson.dropbear.id.au>
On Fri, Mar 16, 2012 at 12:03:08PM +1100, David Gibson wrote:
> Currently the virtio balloon device, when using the virtio-pci interface
> advertises itself with PCI class code MEMORY_RAM. This is wrong; the
> balloon is vaguely related to memory, but is nothing like a PCI memory
> device in the meaning of the class code, and this code is not required or
> suggested by the virtio PCI specification.
>
> Worse, this patch causes problems on the pseries machine, because the
> firmware, seeing this class code, advertises the device as memory in the
> device tree, and then a guest kernel bug causes it to see this "memory"
> before the real system memory, leading to a crash in early boot.
>
> This patch fixes the problem by removing the bogus PCI class code on the
> balloon device.
>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Rusty Russell <rusty@rustcorp.com.au>
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Well, this gives the class a legacy value 00,
and the PCI spec says we should not use this:
D.1.
Base Class 00h
This base class is defined to provide backward compatibility for devices
that were built
before the Class Code field was defined. No new devices should use this
value and existing
devices should switch to a more appropriate value if possible.
For class codes with this base class value, there are two defined values
for the remaining
fields as shown in the table below. All other values are reserved.
Base Class
00h
Sub-Class
Interface
00h
01h
VGA-compatible device
00h
00h
All currently implemented devices
except VGA-compatible devices
You probably want this instead:
#define PCI_CLASS_OTHERS 0xff
> ---
> hw/virtio-pci.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index a0fb7c1..3c3907a 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -919,7 +919,6 @@ static void virtio_balloon_class_init(ObjectClass *klass, void *data)
> k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
> k->device_id = PCI_DEVICE_ID_VIRTIO_BALLOON;
> k->revision = VIRTIO_PCI_ABI_VERSION;
> - k->class_id = PCI_CLASS_MEMORY_RAM;
> dc->reset = virtio_pci_reset;
> dc->props = virtio_balloon_properties;
> }
> --
> 1.7.9.1
next prev parent reply other threads:[~2012-03-18 12:38 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 1:03 [Qemu-devel] [PATCH] Remove PCI class code from virtio balloon device David Gibson
2012-03-18 12:38 ` Michael S. Tsirkin [this message]
2012-03-19 2:17 ` David Gibson
-- strict thread matches above, loose matches on Subject: below --
2012-03-19 4:59 David Gibson
2012-03-19 11:33 ` Stefan Hajnoczi
2012-03-20 0:42 ` David Gibson
2012-03-20 9:54 ` Stefan Hajnoczi
2012-03-20 10:19 ` David Gibson
2012-03-21 11:26 ` Stefan Hajnoczi
2012-03-21 11:28 ` Stefan Hajnoczi
2012-03-21 13:24 ` David Gibson
2012-03-21 13:08 ` Michael S. Tsirkin
2012-03-21 14:42 ` Anthony Liguori
2012-03-21 15:10 ` Michael S. Tsirkin
2012-03-21 15:14 ` Anthony Liguori
2012-03-21 16:11 ` Michael S. Tsirkin
2012-03-21 16:26 ` Anthony Liguori
2012-03-21 16:33 ` Anthony Liguori
2012-03-21 18:28 ` Michael S. Tsirkin
2012-03-21 18:11 ` Michael S. Tsirkin
2012-03-20 10:53 ` Michael S. Tsirkin
2012-03-22 9:09 David Gibson
2012-03-22 10:01 ` Stefan Hajnoczi
2012-03-22 10:27 ` Gerd Hoffmann
2012-03-22 10:32 ` Stefan Hajnoczi
2012-03-22 10:52 ` David Gibson
2012-03-22 11:53 ` Michael S. Tsirkin
2012-03-23 1:52 ` David Gibson
2012-03-23 12:54 ` Anthony Liguori
2012-03-26 1:19 David Gibson
2012-04-02 2:43 ` David Gibson
2012-04-02 6:46 ` Michael S. Tsirkin
2012-04-02 6:49 ` David Gibson
2012-04-02 7:11 ` Michael S. Tsirkin
2012-04-03 14:31 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120318123840.GF29902@redhat.com \
--to=mst@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=rusty@rustcorp.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).