|
Lines 13-19
Link Here
|
| 13 |
|
13 |
|
| 14 |
#include "pci.h" |
14 |
#include "pci.h" |
| 15 |
|
15 |
|
| 16 |
#define MMCONFIG_APER_SIZE (256*1024*1024) |
16 |
/* aperture is up to 256MB but BIOS may reserve less */ |
|
|
17 |
#define MMCONFIG_APER_MIN (2 * 1024*1024) |
| 18 |
#define MMCONFIG_APER_MAX (256 * 1024*1024) |
| 19 |
|
| 17 |
/* Verify the first 16 busses. We assume that systems with more busses |
20 |
/* Verify the first 16 busses. We assume that systems with more busses |
| 18 |
get MCFG right. */ |
21 |
get MCFG right. */ |
| 19 |
#define MAX_CHECK_BUS 16 |
22 |
#define MAX_CHECK_BUS 16 |
|
Lines 175-183
void __init pci_mmcfg_init(void)
Link Here
|
| 175 |
return; |
178 |
return; |
| 176 |
|
179 |
|
| 177 |
if (!e820_all_mapped(pci_mmcfg_config[0].base_address, |
180 |
if (!e820_all_mapped(pci_mmcfg_config[0].base_address, |
| 178 |
pci_mmcfg_config[0].base_address + MMCONFIG_APER_SIZE, |
181 |
pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN, |
| 179 |
E820_RESERVED)) { |
182 |
E820_RESERVED)) { |
| 180 |
printk(KERN_ERR "PCI: BIOS Bug: MCFG area is not E820-reserved\n"); |
183 |
printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n", |
|
|
184 |
pci_mmcfg_config[0].base_address); |
| 181 |
printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); |
185 |
printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); |
| 182 |
return; |
186 |
return; |
| 183 |
} |
187 |
} |
|
Lines 190-196
void __init pci_mmcfg_init(void)
Link Here
|
| 190 |
} |
194 |
} |
| 191 |
for (i = 0; i < pci_mmcfg_config_num; ++i) { |
195 |
for (i = 0; i < pci_mmcfg_config_num; ++i) { |
| 192 |
pci_mmcfg_virt[i].cfg = &pci_mmcfg_config[i]; |
196 |
pci_mmcfg_virt[i].cfg = &pci_mmcfg_config[i]; |
| 193 |
pci_mmcfg_virt[i].virt = ioremap_nocache(pci_mmcfg_config[i].base_address, MMCONFIG_APER_SIZE); |
197 |
pci_mmcfg_virt[i].virt = ioremap_nocache(pci_mmcfg_config[i].base_address, |
|
|
198 |
MMCONFIG_APER_MAX); |
| 194 |
if (!pci_mmcfg_virt[i].virt) { |
199 |
if (!pci_mmcfg_virt[i].virt) { |
| 195 |
printk("PCI: Cannot map mmconfig aperture for segment %d\n", |
200 |
printk("PCI: Cannot map mmconfig aperture for segment %d\n", |
| 196 |
pci_mmcfg_config[i].pci_segment_group_number); |
201 |
pci_mmcfg_config[i].pci_segment_group_number); |