|
| 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] |