|
From: | KONRAD Frédéric |
Subject: | Re: [Qemu-devel] [RFC PATCH v7 7/8] virtio-pci-blk : Switch to new API. |
Date: | Thu, 13 Dec 2012 09:24:22 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 |
On 12/12/2012 15:25, Peter Maydell wrote:
On 10 December 2012 16:45, <address@hidden> wrote:-static void virtio_blk_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc = DEVICE_CLASS(klass); - PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); - - k->init = virtio_blk_init_pci; - k->exit = virtio_blk_exit_pci; - k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET; - k->device_id = PCI_DEVICE_ID_VIRTIO_BLOCK; - k->revision = VIRTIO_PCI_ABI_VERSION; - k->class_id = PCI_CLASS_STORAGE_SCSI; - dc->reset = virtio_pci_reset; - dc->props = virtio_blk_properties; -}This hunk removes the setting of the PCI vendor and device IDs but I can't see where they are set in the new code. How will the PCI transport's PCI vendor/device/class IDs be set (a) when a virtio-blk backend is created and separately plugged into a virtio-pci transport (b) for the legacy virtio-pci-blk? [ideally the answer to (b) should be "in the same way as for (a)"] -- PMM
It's done in the virtio_pci_device_plugged(), ( step 4 ) At this time we have the device ID, so we can put the PCI IDs : +static void virtio_pci_device_plugged(void *opaque) +{ + VirtIOPCIProxy *proxy = VIRTIO_PCI(opaque); + uint8_t *config; + uint32_t size; + + /* Put the PCI IDs */ + switch (get_virtio_device_id(proxy->bus)) { + + case VIRTIO_ID_BLOCK: + pci_config_set_device_id(proxy->pci_dev.config, + PCI_DEVICE_ID_VIRTIO_BLOCK); + pci_config_set_class(proxy->pci_dev.config, PCI_CLASS_STORAGE_SCSI); + break; + default: + error_report("unknown device id\n"); + break; + + } I'll move the "case" to the step 7 as it should be. Fred
[Prev in Thread] | Current Thread | [Next in Thread] |