From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YgY6i-0001aE-0d for qemu-devel@nongnu.org; Fri, 10 Apr 2015 08:32:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YgY6g-00016h-Fx for qemu-devel@nongnu.org; Fri, 10 Apr 2015 08:32:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47477) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YgY6g-00016B-7p for qemu-devel@nongnu.org; Fri, 10 Apr 2015 08:32:22 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id E2B678EA4E for ; Fri, 10 Apr 2015 12:32:21 +0000 (UTC) From: Gerd Hoffmann Date: Fri, 10 Apr 2015 14:31:50 +0200 Message-Id: <1428669111-24225-9-git-send-email-kraxel@redhat.com> In-Reply-To: <1428669111-24225-1-git-send-email-kraxel@redhat.com> References: <1428669111-24225-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 8/9] virtio: init from virtio_pci_device_plugged to virtio_pci_realize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , mst@redhat.com This allows virtio-pci subclasses to change things before the plugged callback applies them. Signed-off-by: Gerd Hoffmann --- hw/virtio/virtio-pci.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index c6fd73f..f73939e 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1272,22 +1272,6 @@ static void virtio_pci_device_plugged(DeviceState *d) uint8_t *config; uint32_t size; - /* - * virtio pci bar layout - * - * region 0 -- virtio legacy io bar - * region 1 -- msi-x bar - * region 2+3 -- not used by virtio-pci - * region 4+5 -- virtio modern memory (64bit) bar - * - * Regions 2+3 can be used by VirtIOPCIProxy subclasses. - * virtio-vga places the vga framebuffer there. - * - */ - proxy->legacy_io_bar = 0; - proxy->msix_bar = 1; - proxy->modern_mem_bar = 4; - config = proxy->pci_dev.config; if (proxy->class_code) { pci_config_set_class(config, proxy->class_code); @@ -1321,10 +1305,6 @@ static void virtio_pci_device_plugged(DeviceState *d) /* TODO: add io access for speed */ virtio_add_feature(&proxy->host_features, VIRTIO_F_VERSION_1); - memory_region_init(&proxy->modern_bar, OBJECT(proxy), "virtio-pci", - 2 * QEMU_VIRTIO_PCI_QUEUE_MEM_MULT * - VIRTIO_PCI_QUEUE_MAX); - virtio_pci_modern_regions_init(proxy); virtio_pci_modern_region_map(proxy, &proxy->common, &cap); virtio_pci_modern_region_map(proxy, &proxy->isr, &cap); virtio_pci_modern_region_map(proxy, &proxy->device, &cap); @@ -1383,6 +1363,27 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp) VirtIOPCIProxy *dev = VIRTIO_PCI(pci_dev); VirtioPCIClass *k = VIRTIO_PCI_GET_CLASS(pci_dev); + /* + * virtio pci bar layout + * + * region 0 -- virtio legacy io bar + * region 1 -- msi-x bar + * region 2+3 -- not used by virtio-pci + * region 4+5 -- virtio modern memory (64bit) bar + * + * Regions 2+3 can be used by VirtIOPCIProxy subclasses. + * virtio-vga places the vga framebuffer there. + * + */ + dev->legacy_io_bar = 0; + dev->msix_bar = 1; + dev->modern_mem_bar = 4; + + memory_region_init(&dev->modern_bar, OBJECT(dev), "virtio-pci", + 2 * QEMU_VIRTIO_PCI_QUEUE_MEM_MULT * + VIRTIO_PCI_QUEUE_MAX); + virtio_pci_modern_regions_init(dev); + virtio_pci_bus_new(&dev->bus, sizeof(dev->bus), dev); if (k->realize) { k->realize(dev, errp); -- 1.8.3.1