diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2016-02-02 22:50:33 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2016-02-02 23:37:05 -0500 |
commit | 01a30dc7e38859125f4120e4f10f26af4049daf7 (patch) | |
tree | 0114d9dad60f162b5aa152e411231911fe1347cb /src | |
parent | f46739b1a819750c63fb5849844d99cc2ab001e8 (diff) | |
download | seabios-01a30dc7e38859125f4120e4f10f26af4049daf7.tar.gz |
pci: Consistently set pci->have_drivers for devices with internal drivers
Set the pci->have_drivers flag for any device that calls
pci_enable_x() to ensure that the flag is consistently set on any
device with an internal driver. Setting this flag prevents an option
rom on the device from being executed.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/hw/ata.c | 1 | ||||
-rw-r--r-- | src/hw/pci.c | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/hw/ata.c b/src/hw/ata.c index 7aaf2f1d..12dab961 100644 --- a/src/hw/ata.c +++ b/src/hw/ata.c @@ -945,7 +945,6 @@ init_controller(struct pci_device *pci, int chanid, int irq static void init_pciata(struct pci_device *pci, u8 prog_if) { - pci->have_driver = 1; u8 pciirq = pci_config_readb(pci->bdf, PCI_INTERRUPT_LINE); int master = 0; if (CONFIG_ATA_DMA && prog_if & 0x80) { diff --git a/src/hw/pci.c b/src/hw/pci.c index 86b7d546..76c293c8 100644 --- a/src/hw/pci.c +++ b/src/hw/pci.c @@ -279,6 +279,7 @@ pci_enable_busmaster(struct pci_device *pci) ASSERT32FLAT(); wait_preempt(); pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_MASTER); + pci->have_driver = 1; } // Verify an IO bar and return it to the caller @@ -298,6 +299,7 @@ pci_enable_iobar(struct pci_device *pci, u32 addr) return 0; } pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_IO); + pci->have_driver = 1; return bar; } @@ -326,6 +328,7 @@ pci_enable_membar(struct pci_device *pci, u32 addr) return NULL; } pci_config_maskw(pci->bdf, PCI_COMMAND, 0, PCI_COMMAND_MEMORY); + pci->have_driver = 1; return (void*)bar; } |