diff options
Diffstat (limited to 'arch/i386/kernel/acpi/boot.c')
-rw-r--r-- | arch/i386/kernel/acpi/boot.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index cbbcf9c630bf..389a8a56d2b4 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -204,9 +204,9 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) | |||
204 | return -ENOMEM; | 204 | return -ENOMEM; |
205 | } | 205 | } |
206 | 206 | ||
207 | memcpy(pci_mmcfg_config, &mcfg->config, config_size); | 207 | memcpy(pci_mmcfg_config, &mcfg[1], config_size); |
208 | for (i = 0; i < pci_mmcfg_config_num; ++i) { | 208 | for (i = 0; i < pci_mmcfg_config_num; ++i) { |
209 | if (mcfg->config[i].base_reserved) { | 209 | if (pci_mmcfg_config[i].base_reserved) { |
210 | printk(KERN_ERR PREFIX | 210 | printk(KERN_ERR PREFIX |
211 | "MMCONFIG not in low 4GB of memory\n"); | 211 | "MMCONFIG not in low 4GB of memory\n"); |
212 | kfree(pci_mmcfg_config); | 212 | kfree(pci_mmcfg_config); |
@@ -233,11 +233,11 @@ static int __init acpi_parse_madt(struct acpi_table_header *header) | |||
233 | return -ENODEV; | 233 | return -ENODEV; |
234 | } | 234 | } |
235 | 235 | ||
236 | if (madt->lapic_address) { | 236 | if (madt->address) { |
237 | acpi_lapic_addr = (u64) madt->lapic_address; | 237 | acpi_lapic_addr = (u64) madt->address; |
238 | 238 | ||
239 | printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n", | 239 | printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n", |
240 | madt->lapic_address); | 240 | madt->address); |
241 | } | 241 | } |
242 | 242 | ||
243 | acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id); | 243 | 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) | |||
654 | return -ENODEV; | 654 | return -ENODEV; |
655 | } | 655 | } |
656 | 656 | ||
657 | if (hpet_tbl->addr.space_id != ACPI_SPACE_MEM) { | 657 | if (hpet_tbl->address.space_id != ACPI_SPACE_MEM) { |
658 | printk(KERN_WARNING PREFIX "HPET timers must be located in " | 658 | printk(KERN_WARNING PREFIX "HPET timers must be located in " |
659 | "memory.\n"); | 659 | "memory.\n"); |
660 | return -1; | 660 | return -1; |
@@ -667,29 +667,28 @@ static int __init acpi_parse_hpet(struct acpi_table_header *header) | |||
667 | hpet_res->name = (void *)&hpet_res[1]; | 667 | hpet_res->name = (void *)&hpet_res[1]; |
668 | hpet_res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; | 668 | hpet_res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; |
669 | snprintf((char *)hpet_res->name, HPET_RESOURCE_NAME_SIZE, | 669 | snprintf((char *)hpet_res->name, HPET_RESOURCE_NAME_SIZE, |
670 | "HPET %u", hpet_tbl->number); | 670 | "HPET %u", hpet_tbl->sequence); |
671 | hpet_res->end = (1 * 1024) - 1; | 671 | hpet_res->end = (1 * 1024) - 1; |
672 | } | 672 | } |
673 | 673 | ||
674 | #ifdef CONFIG_X86_64 | 674 | #ifdef CONFIG_X86_64 |
675 | vxtime.hpet_address = hpet_tbl->addr.addrl | | 675 | vxtime.hpet_address = hpet_tbl->address.address; |
676 | ((long)hpet_tbl->addr.addrh << 32); | ||
677 | 676 | ||
678 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", | 677 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", |
679 | hpet_tbl->id, vxtime.hpet_address); | 678 | hpet_tbl->id, vxtime.hpet_address); |
680 | 679 | ||
681 | res_start = vxtime.hpet_address; | 680 | res_start = vxtime.hpet_address; |
682 | #else /* X86 */ | 681 | #else /* X86 */ |
683 | { | 682 | { |
684 | extern unsigned long hpet_address; | 683 | extern unsigned long hpet_address; |
685 | 684 | ||
686 | hpet_address = hpet_tbl->addr.addrl; | 685 | hpet_address = hpet_tbl->address.address; |
687 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", | 686 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", |
688 | hpet_tbl->id, hpet_address); | 687 | hpet_tbl->id, hpet_address); |
689 | 688 | ||
690 | res_start = hpet_address; | 689 | res_start = hpet_address; |
691 | } | 690 | } |
692 | #endif /* X86 */ | 691 | #endif /* X86 */ |
693 | 692 | ||
694 | if (hpet_res) { | 693 | if (hpet_res) { |
695 | hpet_res->start = res_start; | 694 | hpet_res->start = res_start; |