From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=46380 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OpzXG-0000Jg-PF for qemu-devel@nongnu.org; Mon, 30 Aug 2010 04:16:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OpzXE-0001bi-VB for qemu-devel@nongnu.org; Mon, 30 Aug 2010 04:16:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49185) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OpzXE-0001af-NI for qemu-devel@nongnu.org; Mon, 30 Aug 2010 04:16:08 -0400 From: Jes.Sorensen@redhat.com Date: Mon, 30 Aug 2010 10:16:00 +0200 Message-Id: <1283156160-4278-1-git-send-email-Jes.Sorensen@redhat.com> Subject: [Qemu-devel] [PATCH v3] Do not try loading option ROM for hotplug PCI device in pc-0.11 compat mode List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: Jes Sorensen pc-0.11 and older uses fw_cfg to provide option ROMs. As fw_cfg is setup at init time, it is not possible to load an option ROM for a hotplug device when running in compat mode. v2: Alex Williamson pointed out that one can get to qdev directly from pci_dev, so no need to pass it down. v3: Braces Signed-off-by: Jes Sorensen --- hw/pci.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index a98d6f3..a20f796 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1810,11 +1810,16 @@ static int pci_add_option_rom(PCIDevice *pdev) return 0; if (!pdev->rom_bar) { + int class; /* * Load rom via fw_cfg instead of creating a rom bar, - * for 0.11 compatibility. + * for 0.11 compatibility. fw_cfg is initialized at boot, so + * we cannot do hotplug load of option roms. */ - int class = pci_get_word(pdev->config + PCI_CLASS_DEVICE); + if (pdev->qdev.hotplugged) { + return 0; + } + class = pci_get_word(pdev->config + PCI_CLASS_DEVICE); if (class == 0x0300) { rom_add_vga(pdev->romfile); } else { -- 1.7.2.2