qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH v3] Do not try loading option ROM for hotplug PC


From: Anthony Liguori
Subject: [Qemu-devel] Re: [PATCH v3] Do not try loading option ROM for hotplug PCI device in pc-0.11 compat mode
Date: Mon, 30 Aug 2010 08:00:53 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100713 Lightning/1.0b1 Thunderbird/3.0.6

On 08/30/2010 03:16 AM, address@hidden wrote:
From: Jes Sorensen<address@hidden>

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

What's the specific bug? The devices themselves have a check for hotplug which inhibits rom addition during hotplug so either there's a device missing this check or if we're going to go this route, we ought to remove those checks in the other devices.

Regards,

Anthony Liguori

Signed-off-by: Jes Sorensen<address@hidden>
---
  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 {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]