1
From dfd94fafc2a157f4fc64014069e19dc6e6bbac52 Mon Sep 17 00:00:00 2001
2
From: Isaku Yamahata <yamahata@valinux.co.jp>
3
Date: Tue, 22 Jun 2010 17:57:48 +0900
4
Subject: [PATCH 45/54] seabios: pciinit: make pci memory space assignment 64bit aware.
6
make pci memory space assignment 64bit aware.
7
If 64bit memory space is found while assigning pci memory space,
8
clear higher bit and skip to next bar.
10
This patch is preparation for q35 chipset initialization which
13
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
15
src/pciinit.c | 19 +++++++++++++++++--
16
1 files changed, 17 insertions(+), 2 deletions(-)
18
diff --git a/src/pciinit.c b/src/pciinit.c
19
index 488c77b..b635e44 100644
22
@@ -37,7 +37,12 @@ static void pci_set_io_region_addr(u16 bdf, int region_num, u32 addr)
23
dprintf(1, "region %d: 0x%08x\n", region_num, addr);
26
-static void pci_bios_allocate_region(u16 bdf, int region_num)
32
+static int pci_bios_allocate_region(u16 bdf, int region_num)
36
@@ -71,13 +76,23 @@ static void pci_bios_allocate_region(u16 bdf, int region_num)
37
pci_set_io_region_addr(bdf, region_num, *paddr);
41
+ int is_64bit = !(val & PCI_BASE_ADDRESS_SPACE_IO) &&
42
+ (val & PCI_BASE_ADDRESS_MEM_TYPE_MASK) == PCI_BASE_ADDRESS_MEM_TYPE_64;
44
+ pci_config_writel(bdf, ofs + 4, 0);
49
static void pci_bios_allocate_regions(u16 bdf)
52
for (i = 0; i < PCI_NUM_REGIONS; i++) {
53
- pci_bios_allocate_region(bdf, i);
54
+ int is_64bit = pci_bios_allocate_region(bdf, i);