提交 de09bddb 编写于 作者: A Andi Kleen 提交者: Andi Kleen

[PATCH] i386: Add MMCFG resources to i386 too

Following earlier x86-64 patch

Cc: gregkh@suse.de
Signed-off-by: NAndi Kleen <ak@suse.de>
上级 4c6e052a
...@@ -151,6 +151,38 @@ static struct pci_raw_ops pci_mmcfg = { ...@@ -151,6 +151,38 @@ static struct pci_raw_ops pci_mmcfg = {
.write = pci_mmcfg_write, .write = pci_mmcfg_write,
}; };
static __init void pci_mmcfg_insert_resources(void)
{
#define PCI_MMCFG_RESOURCE_NAME_LEN 19
int i;
struct resource *res;
char *names;
unsigned num_buses;
res = kcalloc(PCI_MMCFG_RESOURCE_NAME_LEN + sizeof(*res),
pci_mmcfg_config_num, GFP_KERNEL);
if (!res) {
printk(KERN_ERR "PCI: Unable to allocate MMCONFIG resources\n");
return;
}
names = (void *)&res[pci_mmcfg_config_num];
for (i = 0; i < pci_mmcfg_config_num; i++, res++) {
num_buses = pci_mmcfg_config[i].end_bus_number -
pci_mmcfg_config[i].start_bus_number + 1;
res->name = names;
snprintf(names, PCI_MMCFG_RESOURCE_NAME_LEN, "PCI MMCONFIG %u",
pci_mmcfg_config[i].pci_segment_group_number);
res->start = pci_mmcfg_config[i].base_address;
res->end = res->start + (num_buses << 20) - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
insert_resource(&iomem_resource, res);
names += PCI_MMCFG_RESOURCE_NAME_LEN;
}
}
/* K8 systems have some devices (typically in the builtin northbridge) /* K8 systems have some devices (typically in the builtin northbridge)
that are only accessible using type1 that are only accessible using type1
Normally this can be expressed in the MCFG by not listing them Normally this can be expressed in the MCFG by not listing them
...@@ -187,6 +219,8 @@ static __init void unreachable_devices(void) ...@@ -187,6 +219,8 @@ static __init void unreachable_devices(void)
} }
} }
void __init pci_mmcfg_init(int type) void __init pci_mmcfg_init(int type)
{ {
if ((pci_probe & PCI_PROBE_MMCONF) == 0) if ((pci_probe & PCI_PROBE_MMCONF) == 0)
...@@ -214,4 +248,5 @@ void __init pci_mmcfg_init(int type) ...@@ -214,4 +248,5 @@ void __init pci_mmcfg_init(int type)
pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF;
unreachable_devices(); unreachable_devices();
pci_mmcfg_insert_resources();
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册