diff options
Diffstat (limited to 'hw/device-assignment.c')
-rw-r--r-- | hw/device-assignment.c | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 5564504d9..801950eaf 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -1311,77 +1311,6 @@ void add_assigned_devices(PCIBus *bus, const char **devices, int n_devices) } } -/* Option ROM header */ -struct option_rom_header { - uint8_t signature[2]; - uint8_t rom_size; - uint32_t entry_point; - uint8_t reserved[17]; - uint16_t pci_header_offset; - uint16_t expansion_header_offset; -} __attribute__ ((packed)); - -/* Option ROM PCI data structure */ -struct option_rom_pci_header { - uint8_t signature[4]; - uint16_t vendor_id; - uint16_t device_id; - uint16_t vital_product_data_offset; - uint16_t structure_length; - uint8_t structure_revision; - uint8_t class_code[3]; - uint16_t image_length; - uint16_t image_revision; - uint8_t code_type; - uint8_t indicator; - uint16_t reserved; -} __attribute__ ((packed)); - -/* - * Scan the list of Option ROMs at roms. If a suitable Option ROM is found, - * allocate a ram space and copy it there. Then return its size aligned to - * both 2KB and target page size. - */ -#define OPTION_ROM_ALIGN(x) (((x) + 2047) & ~2047) -static void scan_option_rom(const char *name, uint8_t devfn, void *roms) -{ - int i, size; - uint8_t csum; - struct option_rom_header *rom; - struct option_rom_pci_header *pcih; - - rom = roms; - - for ( ; ; ) { - /* Invalid signature means we're out of option ROMs. */ - if (strncmp((char *)rom->signature, "\x55\xaa", 2) || - (rom->rom_size == 0)) - break; - - size = rom->rom_size * 512; - /* Invalid checksum means we're out of option ROMs. */ - csum = 0; - for (i = 0; i < size; i++) - csum += ((uint8_t *)rom)[i]; - if (csum != 0) - break; - - /* Check the PCI header (if any) for a match. */ - pcih = (struct option_rom_pci_header *) - ((char *)rom + rom->pci_header_offset); - if ((rom->pci_header_offset != 0) && - !strncmp((char *)pcih->signature, "PCIR", 4)) - goto found; - - rom = (struct option_rom_header *)((char *)rom + size); - } - return; - - found: - rom_add_blob(name ? name : "assigned device", rom, size, 0); - return; -} - /* * Scan the assigned devices for the devices that have an option ROM, and then * load the corresponding ROM data to RAM. If an error occurs while loading an @@ -1445,9 +1374,5 @@ static void assigned_dev_load_option_rom(AssignedDevice *dev) size, PROT_READ); } - if (!dev->dev.qdev.hotplugged) { - /* Scan the buffer for suitable ROMs and increase the offset */ - scan_option_rom(dev->dev.qdev.id, dev->dev.devfn, buf); - } free(buf); } |