diff options
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/kernel/acpi/boot.c | 18 | ||||
-rw-r--r-- | arch/i386/kernel/acpi/earlyquirk.c | 2 | ||||
-rw-r--r-- | arch/i386/pci/mmconfig.c | 24 |
3 files changed, 20 insertions, 24 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index 5fafbacdd4cb..2147511ea78d 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -166,7 +166,7 @@ char *__acpi_map_table(unsigned long phys, unsigned long size) | |||
166 | 166 | ||
167 | #ifdef CONFIG_PCI_MMCONFIG | 167 | #ifdef CONFIG_PCI_MMCONFIG |
168 | /* The physical address of the MMCONFIG aperture. Set from ACPI tables. */ | 168 | /* The physical address of the MMCONFIG aperture. Set from ACPI tables. */ |
169 | struct acpi_table_mcfg_config *pci_mmcfg_config; | 169 | struct acpi_mcfg_allocation *pci_mmcfg_config; |
170 | int pci_mmcfg_config_num; | 170 | int pci_mmcfg_config_num; |
171 | 171 | ||
172 | int __init acpi_parse_mcfg(struct acpi_table_header *header) | 172 | int __init acpi_parse_mcfg(struct acpi_table_header *header) |
@@ -179,17 +179,13 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) | |||
179 | return -EINVAL; | 179 | return -EINVAL; |
180 | 180 | ||
181 | mcfg = (struct acpi_table_mcfg *)header; | 181 | mcfg = (struct acpi_table_mcfg *)header; |
182 | if (!mcfg) { | ||
183 | printk(KERN_WARNING PREFIX "Unable to map MCFG\n"); | ||
184 | return -ENODEV; | ||
185 | } | ||
186 | 182 | ||
187 | /* how many config structures do we have */ | 183 | /* how many config structures do we have */ |
188 | pci_mmcfg_config_num = 0; | 184 | pci_mmcfg_config_num = 0; |
189 | i = header->length - sizeof(struct acpi_table_mcfg); | 185 | i = header->length - sizeof(struct acpi_table_mcfg); |
190 | while (i >= sizeof(struct acpi_table_mcfg_config)) { | 186 | while (i >= sizeof(struct acpi_mcfg_allocation)) { |
191 | ++pci_mmcfg_config_num; | 187 | ++pci_mmcfg_config_num; |
192 | i -= sizeof(struct acpi_table_mcfg_config); | 188 | i -= sizeof(struct acpi_mcfg_allocation); |
193 | }; | 189 | }; |
194 | if (pci_mmcfg_config_num == 0) { | 190 | if (pci_mmcfg_config_num == 0) { |
195 | printk(KERN_ERR PREFIX "MMCONFIG has no entries\n"); | 191 | printk(KERN_ERR PREFIX "MMCONFIG has no entries\n"); |
@@ -206,7 +202,7 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) | |||
206 | 202 | ||
207 | memcpy(pci_mmcfg_config, &mcfg[1], config_size); | 203 | memcpy(pci_mmcfg_config, &mcfg[1], config_size); |
208 | for (i = 0; i < pci_mmcfg_config_num; ++i) { | 204 | for (i = 0; i < pci_mmcfg_config_num; ++i) { |
209 | if (pci_mmcfg_config[i].base_reserved) { | 205 | if (pci_mmcfg_config[i].address > 0xFFFFFFFF) { |
210 | printk(KERN_ERR PREFIX | 206 | printk(KERN_ERR PREFIX |
211 | "MMCONFIG not in low 4GB of memory\n"); | 207 | "MMCONFIG not in low 4GB of memory\n"); |
212 | kfree(pci_mmcfg_config); | 208 | kfree(pci_mmcfg_config); |
@@ -220,14 +216,14 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) | |||
220 | #endif /* CONFIG_PCI_MMCONFIG */ | 216 | #endif /* CONFIG_PCI_MMCONFIG */ |
221 | 217 | ||
222 | #ifdef CONFIG_X86_LOCAL_APIC | 218 | #ifdef CONFIG_X86_LOCAL_APIC |
223 | static int __init acpi_parse_madt(struct acpi_table_header *header) | 219 | static int __init acpi_parse_madt(struct acpi_table_header *table) |
224 | { | 220 | { |
225 | struct acpi_table_madt *madt = NULL; | 221 | struct acpi_table_madt *madt = NULL; |
226 | 222 | ||
227 | if (!header|| !cpu_has_apic) | 223 | if (!cpu_has_apic) |
228 | return -EINVAL; | 224 | return -EINVAL; |
229 | 225 | ||
230 | madt = (struct acpi_table_madt *)header; | 226 | madt = (struct acpi_table_madt *)table; |
231 | if (!madt) { | 227 | if (!madt) { |
232 | printk(KERN_WARNING PREFIX "Unable to map MADT\n"); | 228 | printk(KERN_WARNING PREFIX "Unable to map MADT\n"); |
233 | return -ENODEV; | 229 | return -ENODEV; |
diff --git a/arch/i386/kernel/acpi/earlyquirk.c b/arch/i386/kernel/acpi/earlyquirk.c index 4261c8501b7e..bf86f7662d8b 100644 --- a/arch/i386/kernel/acpi/earlyquirk.c +++ b/arch/i386/kernel/acpi/earlyquirk.c | |||
@@ -30,7 +30,7 @@ static int __init check_bridge(int vendor, int device) | |||
30 | is enabled. */ | 30 | is enabled. */ |
31 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { | 31 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { |
32 | nvidia_hpet_detected = 0; | 32 | nvidia_hpet_detected = 0; |
33 | acpi_table_parse("HPET", nvidia_hpet_check); | 33 | acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check); |
34 | if (nvidia_hpet_detected == 0) { | 34 | if (nvidia_hpet_detected == 0) { |
35 | acpi_skip_timer_override = 1; | 35 | acpi_skip_timer_override = 1; |
36 | printk(KERN_INFO "Nvidia board " | 36 | printk(KERN_INFO "Nvidia board " |
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c index 80522e331e34..5700220dcf5f 100644 --- a/arch/i386/pci/mmconfig.c +++ b/arch/i386/pci/mmconfig.c | |||
@@ -36,7 +36,7 @@ static DECLARE_BITMAP(fallback_slots, MAX_CHECK_BUS*32); | |||
36 | static u32 get_base_addr(unsigned int seg, int bus, unsigned devfn) | 36 | static u32 get_base_addr(unsigned int seg, int bus, unsigned devfn) |
37 | { | 37 | { |
38 | int cfg_num = -1; | 38 | int cfg_num = -1; |
39 | struct acpi_table_mcfg_config *cfg; | 39 | struct acpi_mcfg_allocation *cfg; |
40 | 40 | ||
41 | if (seg == 0 && bus < MAX_CHECK_BUS && | 41 | if (seg == 0 && bus < MAX_CHECK_BUS && |
42 | test_bit(PCI_SLOT(devfn) + 32*bus, fallback_slots)) | 42 | test_bit(PCI_SLOT(devfn) + 32*bus, fallback_slots)) |
@@ -48,11 +48,11 @@ static u32 get_base_addr(unsigned int seg, int bus, unsigned devfn) | |||
48 | break; | 48 | break; |
49 | } | 49 | } |
50 | cfg = &pci_mmcfg_config[cfg_num]; | 50 | cfg = &pci_mmcfg_config[cfg_num]; |
51 | if (cfg->pci_segment_group_number != seg) | 51 | if (cfg->pci_segment != seg) |
52 | continue; | 52 | continue; |
53 | if ((cfg->start_bus_number <= bus) && | 53 | if ((cfg->start_bus_number <= bus) && |
54 | (cfg->end_bus_number >= bus)) | 54 | (cfg->end_bus_number >= bus)) |
55 | return cfg->base_address; | 55 | return cfg->address; |
56 | } | 56 | } |
57 | 57 | ||
58 | /* Handle more broken MCFG tables on Asus etc. | 58 | /* Handle more broken MCFG tables on Asus etc. |
@@ -60,9 +60,9 @@ static u32 get_base_addr(unsigned int seg, int bus, unsigned devfn) | |||
60 | this applies to all busses. */ | 60 | this applies to all busses. */ |
61 | cfg = &pci_mmcfg_config[0]; | 61 | cfg = &pci_mmcfg_config[0]; |
62 | if (pci_mmcfg_config_num == 1 && | 62 | if (pci_mmcfg_config_num == 1 && |
63 | cfg->pci_segment_group_number == 0 && | 63 | cfg->pci_segment == 0 && |
64 | (cfg->start_bus_number | cfg->end_bus_number) == 0) | 64 | (cfg->start_bus_number | cfg->end_bus_number) == 0) |
65 | return cfg->base_address; | 65 | return cfg->address; |
66 | 66 | ||
67 | /* Fall back to type 0 */ | 67 | /* Fall back to type 0 */ |
68 | return 0; | 68 | return 0; |
@@ -125,7 +125,7 @@ static int pci_mmcfg_write(unsigned int seg, unsigned int bus, | |||
125 | unsigned long flags; | 125 | unsigned long flags; |
126 | u32 base; | 126 | u32 base; |
127 | 127 | ||
128 | if ((bus > 255) || (devfn > 255) || (reg > 4095)) | 128 | if ((bus > 255) || (devfn > 255) || (reg > 4095)) |
129 | return -EINVAL; | 129 | return -EINVAL; |
130 | 130 | ||
131 | base = get_base_addr(seg, bus, devfn); | 131 | base = get_base_addr(seg, bus, devfn); |
@@ -199,19 +199,19 @@ void __init pci_mmcfg_init(int type) | |||
199 | if ((pci_probe & PCI_PROBE_MMCONF) == 0) | 199 | if ((pci_probe & PCI_PROBE_MMCONF) == 0) |
200 | return; | 200 | return; |
201 | 201 | ||
202 | acpi_table_parse("MCFG", acpi_parse_mcfg); | 202 | acpi_table_parse(ACPI_SIG_MCFG, acpi_parse_mcfg); |
203 | if ((pci_mmcfg_config_num == 0) || | 203 | if ((pci_mmcfg_config_num == 0) || |
204 | (pci_mmcfg_config == NULL) || | 204 | (pci_mmcfg_config == NULL) || |
205 | (pci_mmcfg_config[0].base_address == 0)) | 205 | (pci_mmcfg_config[0].address == 0)) |
206 | return; | 206 | return; |
207 | 207 | ||
208 | /* Only do this check when type 1 works. If it doesn't work | 208 | /* Only do this check when type 1 works. If it doesn't work |
209 | assume we run on a Mac and always use MCFG */ | 209 | assume we run on a Mac and always use MCFG */ |
210 | if (type == 1 && !e820_all_mapped(pci_mmcfg_config[0].base_address, | 210 | if (type == 1 && !e820_all_mapped(pci_mmcfg_config[0].address, |
211 | pci_mmcfg_config[0].base_address + MMCONFIG_APER_MIN, | 211 | pci_mmcfg_config[0].address + MMCONFIG_APER_MIN, |
212 | E820_RESERVED)) { | 212 | E820_RESERVED)) { |
213 | printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %x is not E820-reserved\n", | 213 | printk(KERN_ERR "PCI: BIOS Bug: MCFG area at %lx is not E820-reserved\n", |
214 | pci_mmcfg_config[0].base_address); | 214 | (unsigned long)pci_mmcfg_config[0].address); |
215 | printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); | 215 | printk(KERN_ERR "PCI: Not using MMCONFIG.\n"); |
216 | return; | 216 | return; |
217 | } | 217 | } |