From: Alex Williamson Date: Fri, 25 Jun 2010 17:10:19 +0000 (-0600) Subject: pci: Free the space allocated for the option rom on removal X-Git-Tag: TizenStudio_2.0_p2.3.2~208^2~7443 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=230741dcc7c15573efe41ee88b7533e0c3c76f66;p=sdk%2Femulator%2Fqemu.git pci: Free the space allocated for the option rom on removal Signed-off-by: Alex Williamson Signed-off-by: Anthony Liguori --- diff --git a/hw/pci.c b/hw/pci.c index fe7c5c3..a7ff566 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -76,6 +76,7 @@ static struct BusInfo pci_bus_info = { static void pci_update_mappings(PCIDevice *d); static void pci_set_irq(void *opaque, int irq_num, int level); static int pci_add_option_rom(PCIDevice *pdev); +static void pci_del_option_rom(PCIDevice *pdev); static uint16_t pci_default_sub_vendor_id = PCI_SUBVENDOR_ID_REDHAT_QUMRANET; static uint16_t pci_default_sub_device_id = PCI_SUBDEVICE_ID_QEMU; @@ -709,6 +710,7 @@ static int pci_unregister_device(DeviceState *dev) return ret; pci_unregister_io_regions(pci_dev); + pci_del_option_rom(pci_dev); do_pci_unregister_device(pci_dev); return 0; } @@ -1765,6 +1767,15 @@ static int pci_add_option_rom(PCIDevice *pdev) return 0; } +static void pci_del_option_rom(PCIDevice *pdev) +{ + if (!pdev->rom_offset) + return; + + qemu_ram_free(pdev->rom_offset); + pdev->rom_offset = 0; +} + /* Reserve space and add capability to the linked list in pci config space */ int pci_add_capability_at_offset(PCIDevice *pdev, uint8_t cap_id, uint8_t offset, uint8_t size)