ioemu: fix multiple pci-attach/pci-detach by removing the meaningless irq_index
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 1 Sep 2008 09:48:09 +0000 (10:48 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 1 Sep 2008 09:48:09 +0000 (10:48 +0100)
For HVM guest, we can't do pci-attach/pci-detach for >64 times due to
the meaningless checking in pci_register_device(). I made a test of
300 times of attach/detach and everything now works well.

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
tools/ioemu/hw/pci.c
tools/ioemu/vl.h

index affce42f72dae11474a3c85cec98bd450e56ea2b..255b849a9ec6cfc9858f7ce2ab211ff4211e8064 100644 (file)
@@ -45,7 +45,6 @@ struct PCIBus {
 static void pci_update_mappings(PCIDevice *d);
 
 target_phys_addr_t pci_mem_base;
-static int pci_irq_index;
 static PCIBus *first_bus;
 
 PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
@@ -114,9 +113,6 @@ PCIDevice *pci_register_device(PCIBus *bus, const char *name,
 {
     PCIDevice *pci_dev;
 
-    if (pci_irq_index >= PCI_DEVICES_MAX)
-        return NULL;
-    
     if (devfn < 0) {
         for(devfn = bus->devfn_min ; devfn < 256; devfn += 8) {
             if ( !bus->devices[devfn] &&
@@ -140,7 +136,6 @@ PCIDevice *pci_register_device(PCIBus *bus, const char *name,
         config_write = pci_default_write_config;
     pci_dev->config_read = config_read;
     pci_dev->config_write = config_write;
-    pci_dev->irq_index = pci_irq_index++;
     bus->devices[devfn] = pci_dev;
     return pci_dev;
 }
index ecaaef8721c7fb49ebf45edc1ac09304e3639adc..04a5f7b77ac5551937acb7cb34e0884341ac3512 100644 (file)
@@ -812,8 +812,6 @@ struct PCIDevice {
     /* do not access the following fields */
     PCIConfigReadFunc *config_read;
     PCIConfigWriteFunc *config_write;
-    /* ??? This is a PC-specific hack, and should be removed.  */
-    int irq_index;
 
     /* Current IRQ levels.  Used internally by the generic PCI code.  */
     int irq_state[4];