pci: Disable expansion ROM address decoding when signature check fails
authorBin Meng <bmeng.cn@gmail.com>
Wed, 8 Jul 2015 05:06:41 +0000 (13:06 +0800)
committerSimon Glass <sjg@chromium.org>
Wed, 15 Jul 2015 00:03:20 +0000 (18:03 -0600)
We should not leave the expansion ROM address window open when there
is not a valid ROM.

Suggested-by: Matt Porter <mporter@konsulko.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Simon Glass <sjg@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
drivers/pci/pci_rom.c

index aa06767d2a82d753597c719cc1d87311b69f6223..a33efae2636a4593fdb366bd5c62a91e58cb506b 100644 (file)
@@ -104,6 +104,10 @@ static int pci_rom_probe(pci_dev_t dev, uint class,
        if (le16_to_cpu(rom_header->signature) != PCI_ROM_HDR) {
                printf("Incorrect expansion ROM header signature %04x\n",
                       le16_to_cpu(rom_header->signature));
+#ifndef CONFIG_VGA_BIOS_ADDR
+               /* Disable expansion ROM address decoding */
+               pci_write_config_dword(dev, PCI_ROM_ADDRESS, rom_address);
+#endif
                return -EINVAL;
        }