seabios: enable io/memory unconditionally
PATCH v2 1/1 seabios: enable io/memory unconditionally
VGA adapters need to claim memory and i/o
transactions even if they do not have any
i/o or memory bars. E.g. PCI spec, page 297,
gives an example of such a device:
Programming interface 0000 0000b
VGA-compatible controller. Memory
addresses 0A 0000h through 0B
FFFFh. I/O addresses 3B0h to 3BBh
and 3C0h to 3DFh and all aliases of
these addresses.
While we could check for these devices and special-case them, it is easier to fix this by enabling i/o and memory space unconditionally:
devices that do not support it will just ignore this setting.
---
Changes from v1: build fixes
src/pciinit.c | 17 ++++++----------- 1 files changed, 6 insertions(+), 11 deletions(-)
src/pciinit.c +6 -11
@@ -28,7 +28,6 @@ static u8 pci_irqs[4] = {static void pci_set_io_region_addr (u16 bdf,int region_num,u32 addr) { -u16 cmd;u32 ofs, old_addr;if (region_num ==PCI_ROM_SLOT ) {
@@ -41,16 +40,6 @@ static void pci_set_io_region_addr(u16 bdf, int region_num, u32 addr)pci_config_writel (bdf, ofs, addr);dprintf (1 ,"region %d: 0x%08x\n" , region_num, addr); - -/* enable memory mappings */ - cmd =pci_config_readw (bdf,PCI_COMMAND ); -if (region_num ==PCI_ROM_SLOT ) - cmd |=PCI_COMMAND_MEMORY ; -else if (old_addr &PCI_BASE_ADDRESS_SPACE_IO ) - cmd |=PCI_COMMAND_IO ; -else - cmd |=PCI_COMMAND_MEMORY ; -pci_config_writew (bdf,PCI_COMMAND , cmd); }/* return the global irq number corresponding to a given device irq
@@ -95,6 +84,7 @@ static void pci_bios_init_device(u16 bdf) {int class;u32 *paddr; +u16 cmd;int i, pin, pic_irq, vendor_id, device_id; class =pci_config_readw (bdf,PCI_CLASS_DEVICE );
@@ -165,6 +155,11 @@ static void pci_bios_init_device(u16 bdf)break ; } +/* enable memory mappings */ + cmd =pci_config_readw (bdf,PCI_COMMAND ); + cmd |=PCI_COMMAND_IO |PCI_COMMAND_MEMORY ; +pci_config_writew (bdf,PCI_COMMAND , cmd); +/* map the interrupt */ pin =pci_config_readb (bdf,PCI_INTERRUPT_PIN );if (pin !=0 ) {
Signature · 1 line
1.6.5.rc2
Quoted 4 lines · Michael S. Tsirkin
VGA adapters need to claim memory and i/o
transactions even if they do not have any
i/o or memory bars. E.g. PCI spec, page 297,
gives an example of such a device:
I've modified your patch slightly (to use new pci_config_maskw helper) and have committed it.
Thanks,
-Kevin
Quoted 8 lines · Kevin O'Connor
Quoted 4 lines · Michael S. Tsirkin
VGA adapters need to claim memory and i/o
transactions even if they do not have any
i/o or memory bars. E.g. PCI spec, page 297,
gives an example of such a device:I've modified your patch slightly (to use new
pci_config_maskwhelper) and have committed it.
Cool. Anthony, could you merge into savannah tree please?
Quoted 2 lines
Thanks,
-Kevin