|
@@ -204,9 +204,9 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
- memcpy(pci_mmcfg_config, &mcfg->config, config_size);
|
|
|
|
|
|
+ memcpy(pci_mmcfg_config, &mcfg[1], config_size);
|
|
for (i = 0; i < pci_mmcfg_config_num; ++i) {
|
|
for (i = 0; i < pci_mmcfg_config_num; ++i) {
|
|
- if (mcfg->config[i].base_reserved) {
|
|
|
|
|
|
+ if (pci_mmcfg_config[i].base_reserved) {
|
|
printk(KERN_ERR PREFIX
|
|
printk(KERN_ERR PREFIX
|
|
"MMCONFIG not in low 4GB of memory\n");
|
|
"MMCONFIG not in low 4GB of memory\n");
|
|
kfree(pci_mmcfg_config);
|
|
kfree(pci_mmcfg_config);
|
|
@@ -233,11 +233,11 @@ static int __init acpi_parse_madt(struct acpi_table_header *header)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|
|
- if (madt->lapic_address) {
|
|
|
|
- acpi_lapic_addr = (u64) madt->lapic_address;
|
|
|
|
|
|
+ if (madt->address) {
|
|
|
|
+ acpi_lapic_addr = (u64) madt->address;
|
|
|
|
|
|
printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n",
|
|
printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n",
|
|
- madt->lapic_address);
|
|
|
|
|
|
+ madt->address);
|
|
}
|
|
}
|
|
|
|
|
|
acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
|
|
acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
|
|
@@ -654,7 +654,7 @@ static int __init acpi_parse_hpet(struct acpi_table_header *header)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|
|
- if (hpet_tbl->addr.space_id != ACPI_SPACE_MEM) {
|
|
|
|
|
|
+ if (hpet_tbl->address.space_id != ACPI_SPACE_MEM) {
|
|
printk(KERN_WARNING PREFIX "HPET timers must be located in "
|
|
printk(KERN_WARNING PREFIX "HPET timers must be located in "
|
|
"memory.\n");
|
|
"memory.\n");
|
|
return -1;
|
|
return -1;
|
|
@@ -667,29 +667,28 @@ static int __init acpi_parse_hpet(struct acpi_table_header *header)
|
|
hpet_res->name = (void *)&hpet_res[1];
|
|
hpet_res->name = (void *)&hpet_res[1];
|
|
hpet_res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
|
hpet_res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
|
snprintf((char *)hpet_res->name, HPET_RESOURCE_NAME_SIZE,
|
|
snprintf((char *)hpet_res->name, HPET_RESOURCE_NAME_SIZE,
|
|
- "HPET %u", hpet_tbl->number);
|
|
|
|
|
|
+ "HPET %u", hpet_tbl->sequence);
|
|
hpet_res->end = (1 * 1024) - 1;
|
|
hpet_res->end = (1 * 1024) - 1;
|
|
}
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_X86_64
|
|
|
|
- vxtime.hpet_address = hpet_tbl->addr.addrl |
|
|
|
|
- ((long)hpet_tbl->addr.addrh << 32);
|
|
|
|
|
|
+#ifdef CONFIG_X86_64
|
|
|
|
+ vxtime.hpet_address = hpet_tbl->address.address;
|
|
|
|
|
|
printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
|
|
printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
|
|
- hpet_tbl->id, vxtime.hpet_address);
|
|
|
|
|
|
+ hpet_tbl->id, vxtime.hpet_address);
|
|
|
|
|
|
res_start = vxtime.hpet_address;
|
|
res_start = vxtime.hpet_address;
|
|
-#else /* X86 */
|
|
|
|
|
|
+#else /* X86 */
|
|
{
|
|
{
|
|
extern unsigned long hpet_address;
|
|
extern unsigned long hpet_address;
|
|
|
|
|
|
- hpet_address = hpet_tbl->addr.addrl;
|
|
|
|
|
|
+ hpet_address = hpet_tbl->address.address;
|
|
printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
|
|
printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
|
|
- hpet_tbl->id, hpet_address);
|
|
|
|
|
|
+ hpet_tbl->id, hpet_address);
|
|
|
|
|
|
res_start = hpet_address;
|
|
res_start = hpet_address;
|
|
}
|
|
}
|
|
-#endif /* X86 */
|
|
|
|
|
|
+#endif /* X86 */
|
|
|
|
|
|
if (hpet_res) {
|
|
if (hpet_res) {
|
|
hpet_res->start = res_start;
|
|
hpet_res->start = res_start;
|