From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LRVe5-0008GP-QJ for qemu-devel@nongnu.org; Mon, 26 Jan 2009 12:53:14 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LRVe4-0008FX-DL for qemu-devel@nongnu.org; Mon, 26 Jan 2009 12:53:12 -0500 Received: from [199.232.76.173] (port=41200 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LRVe4-0008FO-1Y for qemu-devel@nongnu.org; Mon, 26 Jan 2009 12:53:12 -0500 Received: from mx20.gnu.org ([199.232.41.8]:51967) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LRV42-0004i1-AM for qemu-devel@nongnu.org; Mon, 26 Jan 2009 12:15:58 -0500 Received: from mail-qy0-f20.google.com ([209.85.221.20]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LRTET-0003dC-6M for qemu-devel@nongnu.org; Mon, 26 Jan 2009 10:18:37 -0500 Received: by qyk13 with SMTP id 13so9518282qyk.10 for ; Mon, 26 Jan 2009 07:17:35 -0800 (PST) Message-ID: <497DD3FC.9040706@codemonkey.ws> Date: Mon, 26 Jan 2009 09:17:16 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1232104347-29931-1-git-send-email-markmc@redhat.com> <1232104347-29931-2-git-send-email-markmc@redhat.com> <1232977378.3724.85.camel@blaa> In-Reply-To: <1232977378.3724.85.camel@blaa> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 3/3][RESEND] Use the default subsystem vendor ID for virtio devices Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Mark McLoughlin Cc: qemu-devel@nongnu.org Mark McLoughlin wrote: > A subsystem vendor ID of zero isn't allowed, so we use our > default ID. > > Gerd points out that although the PCI subsystem vendor ID is > treated by the guest as the virtio vendor ID: > The thinking was to allow the subsystem vendor ID to be a virtio specific vendor ID. If it's required to be a PCI vendor ID, then I guess that's what we'll have to do. Regards, Anthony Liguori > /* we use the subsystem vendor/device id as the virtio vendor/device > * id. this allows us to use the same PCI vendor/device id for all > * virtio devices and to identify the particular virtio driver by > * the subsytem ids */ > vp_dev->vdev.id.vendor = pci_dev->subsystem_vendor; > vp_dev->vdev.id.device = pci_dev->subsystem_device; > > it looks like only the device ID is used right now: > > # grep virtio modules.alias > alias virtio:d00000001v* virtio_net > alias virtio:d00000002v* virtio_blk > alias virtio:d00000003v* virtio_console > alias virtio:d00000004v* virtio-rng > alias virtio:d00000005v* virtio_balloon > alias pci:v00001AF4d*sv*sd*bc*sc*i* virtio_pci > alias virtio:d00000009v* 9pnet_virtio > > so setting the subsystem vendor id to something != zero shouldn't cause > trouble. > > Signed-off-by: Mark McLoughlin > --- > hw/virtio-balloon.c | 3 ++- > hw/virtio-blk.c | 3 ++- > hw/virtio-console.c | 3 ++- > hw/virtio-net.c | 3 ++- > 4 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c > index 0765516..696a108 100644 > --- a/hw/virtio-balloon.c > +++ b/hw/virtio-balloon.c > @@ -174,7 +174,8 @@ void *virtio_balloon_init(PCIBus *bus) > s = (VirtIOBalloon *)virtio_init_pci(bus, "virtio-balloon", > PCI_VENDOR_ID_REDHAT_QUMRANET, > PCI_DEVICE_ID_VIRTIO_BALLOON, > - 0, VIRTIO_ID_BALLOON, > + PCI_VENDOR_ID_REDHAT_QUMRANET, > + VIRTIO_ID_BALLOON, > 0x05, 0x00, 0x00, > 8, sizeof(VirtIOBalloon)); > if (s == NULL) > diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c > index e654cc5..847e221 100644 > --- a/hw/virtio-blk.c > +++ b/hw/virtio-blk.c > @@ -227,7 +227,8 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) > s = (VirtIOBlock *)virtio_init_pci(bus, "virtio-blk", > PCI_VENDOR_ID_REDHAT_QUMRANET, > PCI_DEVICE_ID_VIRTIO_BLOCK, > - 0, VIRTIO_ID_BLOCK, > + PCI_VENDOR_ID_REDHAT_QUMRANET, > + VIRTIO_ID_BLOCK, > 0x01, 0x80, 0x00, > sizeof(struct virtio_blk_config), sizeof(VirtIOBlock)); > if (!s) > diff --git a/hw/virtio-console.c b/hw/virtio-console.c > index ce20c91..333ffb1 100644 > --- a/hw/virtio-console.c > +++ b/hw/virtio-console.c > @@ -128,7 +128,8 @@ void *virtio_console_init(PCIBus *bus, CharDriverState *chr) > s = (VirtIOConsole *)virtio_init_pci(bus, "virtio-console", > PCI_VENDOR_ID_REDHAT_QUMRANET, > PCI_DEVICE_ID_VIRTIO_CONSOLE, > - 0, VIRTIO_ID_CONSOLE, > + PCI_VENDOR_ID_REDHAT_QUMRANET, > + VIRTIO_ID_CONSOLE, > 0x03, 0x80, 0x00, > 0, sizeof(VirtIOConsole)); > if (s == NULL) > diff --git a/hw/virtio-net.c b/hw/virtio-net.c > index b13914a..28f9280 100644 > --- a/hw/virtio-net.c > +++ b/hw/virtio-net.c > @@ -323,7 +323,8 @@ void virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn) > n = (VirtIONet *)virtio_init_pci(bus, "virtio-net", > PCI_VENDOR_ID_REDHAT_QUMRANET, > PCI_DEVICE_ID_VIRTIO_NET, > - 0, VIRTIO_ID_NET, > + PCI_VENDOR_ID_REDHAT_QUMRANET, > + VIRTIO_ID_NET, > 0x02, 0x00, 0x00, > sizeof(struct virtio_net_config), > sizeof(VirtIONet)); >