34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
|
Subject: [PATCH] bios: Use the correct mask to size the PCI option ROM BAR
|
||
|
From: Alex Williamson <alex.williamson@hp.com>
|
||
|
|
||
|
Bit 0 is the enable bit, which we not only don't want to set, but
|
||
|
it will stick and make us think it's an I/O port resource.
|
||
|
|
||
|
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
|
||
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
||
|
---
|
||
|
|
||
|
diff --git a/bios/rombios32.c b/bios/rombios32.c
|
||
|
index d7e18e9..f861f81 100644
|
||
|
--- a/bios/rombios32.c
|
||
|
+++ b/bios/rombios32.c
|
||
|
@@ -985,11 +985,13 @@ static void pci_bios_init_device(PCIDevice *d)
|
||
|
int ofs;
|
||
|
uint32_t val, size ;
|
||
|
|
||
|
- if (i == PCI_ROM_SLOT)
|
||
|
+ if (i == PCI_ROM_SLOT) {
|
||
|
ofs = 0x30;
|
||
|
- else
|
||
|
+ pci_config_writel(d, ofs, 0xfffffffe);
|
||
|
+ } else {
|
||
|
ofs = 0x10 + i * 4;
|
||
|
- pci_config_writel(d, ofs, 0xffffffff);
|
||
|
+ pci_config_writel(d, ofs, 0xffffffff);
|
||
|
+ }
|
||
|
val = pci_config_readl(d, ofs);
|
||
|
if (val != 0) {
|
||
|
size = (~(val & ~0xf)) + 1;
|
||
|
|
||
|
|