diff options
author | Len Brown <len.brown@intel.com> | 2009-04-05 02:14:15 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-04-05 02:14:15 -0400 |
commit | 478c6a43fcbc6c11609f8cee7c7b57223907754f (patch) | |
tree | a7f7952099da60d33032aed6de9c0c56c9f8779e /arch/x86/kernel/acpi | |
parent | 8a3f257c704e02aee9869decd069a806b45be3f1 (diff) | |
parent | 6bb597507f9839b13498781e481f5458aea33620 (diff) |
Merge branch 'linus' into release
Conflicts:
arch/x86/kernel/cpu/cpufreq/longhaul.c
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'arch/x86/kernel/acpi')
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 169 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/realmode/wakeup.S | 4 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/sleep.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/wakeup_32.S | 2 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/wakeup_64.S | 4 |
5 files changed, 79 insertions, 101 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4f942096291d..723989d7f802 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -37,15 +37,10 @@ | |||
37 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
38 | #include <asm/io_apic.h> | 38 | #include <asm/io_apic.h> |
39 | #include <asm/apic.h> | 39 | #include <asm/apic.h> |
40 | #include <asm/genapic.h> | ||
41 | #include <asm/io.h> | 40 | #include <asm/io.h> |
42 | #include <asm/mpspec.h> | 41 | #include <asm/mpspec.h> |
43 | #include <asm/smp.h> | 42 | #include <asm/smp.h> |
44 | 43 | ||
45 | #ifdef CONFIG_X86_LOCAL_APIC | ||
46 | # include <mach_apic.h> | ||
47 | #endif | ||
48 | |||
49 | static int __initdata acpi_force = 0; | 44 | static int __initdata acpi_force = 0; |
50 | u32 acpi_rsdt_forced; | 45 | u32 acpi_rsdt_forced; |
51 | #ifdef CONFIG_ACPI | 46 | #ifdef CONFIG_ACPI |
@@ -56,16 +51,7 @@ int acpi_disabled = 1; | |||
56 | EXPORT_SYMBOL(acpi_disabled); | 51 | EXPORT_SYMBOL(acpi_disabled); |
57 | 52 | ||
58 | #ifdef CONFIG_X86_64 | 53 | #ifdef CONFIG_X86_64 |
59 | 54 | # include <asm/proto.h> | |
60 | #include <asm/proto.h> | ||
61 | |||
62 | #else /* X86 */ | ||
63 | |||
64 | #ifdef CONFIG_X86_LOCAL_APIC | ||
65 | #include <mach_apic.h> | ||
66 | #include <mach_mpparse.h> | ||
67 | #endif /* CONFIG_X86_LOCAL_APIC */ | ||
68 | |||
69 | #endif /* X86 */ | 55 | #endif /* X86 */ |
70 | 56 | ||
71 | #define BAD_MADT_ENTRY(entry, end) ( \ | 57 | #define BAD_MADT_ENTRY(entry, end) ( \ |
@@ -121,35 +107,18 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC; | |||
121 | */ | 107 | */ |
122 | char *__init __acpi_map_table(unsigned long phys, unsigned long size) | 108 | char *__init __acpi_map_table(unsigned long phys, unsigned long size) |
123 | { | 109 | { |
124 | unsigned long base, offset, mapped_size; | ||
125 | int idx; | ||
126 | 110 | ||
127 | if (!phys || !size) | 111 | if (!phys || !size) |
128 | return NULL; | 112 | return NULL; |
129 | 113 | ||
130 | if (phys+size <= (max_low_pfn_mapped << PAGE_SHIFT)) | 114 | return early_ioremap(phys, size); |
131 | return __va(phys); | 115 | } |
132 | 116 | void __init __acpi_unmap_table(char *map, unsigned long size) | |
133 | offset = phys & (PAGE_SIZE - 1); | 117 | { |
134 | mapped_size = PAGE_SIZE - offset; | 118 | if (!map || !size) |
135 | clear_fixmap(FIX_ACPI_END); | 119 | return; |
136 | set_fixmap(FIX_ACPI_END, phys); | ||
137 | base = fix_to_virt(FIX_ACPI_END); | ||
138 | |||
139 | /* | ||
140 | * Most cases can be covered by the below. | ||
141 | */ | ||
142 | idx = FIX_ACPI_END; | ||
143 | while (mapped_size < size) { | ||
144 | if (--idx < FIX_ACPI_BEGIN) | ||
145 | return NULL; /* cannot handle this */ | ||
146 | phys += PAGE_SIZE; | ||
147 | clear_fixmap(idx); | ||
148 | set_fixmap(idx, phys); | ||
149 | mapped_size += PAGE_SIZE; | ||
150 | } | ||
151 | 120 | ||
152 | return ((unsigned char *)base + offset); | 121 | early_iounmap(map, size); |
153 | } | 122 | } |
154 | 123 | ||
155 | #ifdef CONFIG_PCI_MMCONFIG | 124 | #ifdef CONFIG_PCI_MMCONFIG |
@@ -239,7 +208,8 @@ static int __init acpi_parse_madt(struct acpi_table_header *table) | |||
239 | madt->address); | 208 | madt->address); |
240 | } | 209 | } |
241 | 210 | ||
242 | acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id); | 211 | default_acpi_madt_oem_check(madt->header.oem_id, |
212 | madt->header.oem_table_id); | ||
243 | 213 | ||
244 | return 0; | 214 | return 0; |
245 | } | 215 | } |
@@ -939,7 +909,7 @@ static struct { | |||
939 | DECLARE_BITMAP(pin_programmed, MP_MAX_IOAPIC_PIN + 1); | 909 | DECLARE_BITMAP(pin_programmed, MP_MAX_IOAPIC_PIN + 1); |
940 | } mp_ioapic_routing[MAX_IO_APICS]; | 910 | } mp_ioapic_routing[MAX_IO_APICS]; |
941 | 911 | ||
942 | static int mp_find_ioapic(int gsi) | 912 | int mp_find_ioapic(int gsi) |
943 | { | 913 | { |
944 | int i = 0; | 914 | int i = 0; |
945 | 915 | ||
@@ -954,6 +924,16 @@ static int mp_find_ioapic(int gsi) | |||
954 | return -1; | 924 | return -1; |
955 | } | 925 | } |
956 | 926 | ||
927 | int mp_find_ioapic_pin(int ioapic, int gsi) | ||
928 | { | ||
929 | if (WARN_ON(ioapic == -1)) | ||
930 | return -1; | ||
931 | if (WARN_ON(gsi > mp_ioapic_routing[ioapic].gsi_end)) | ||
932 | return -1; | ||
933 | |||
934 | return gsi - mp_ioapic_routing[ioapic].gsi_base; | ||
935 | } | ||
936 | |||
957 | static u8 __init uniq_ioapic_id(u8 id) | 937 | static u8 __init uniq_ioapic_id(u8 id) |
958 | { | 938 | { |
959 | #ifdef CONFIG_X86_32 | 939 | #ifdef CONFIG_X86_32 |
@@ -967,8 +947,8 @@ static u8 __init uniq_ioapic_id(u8 id) | |||
967 | DECLARE_BITMAP(used, 256); | 947 | DECLARE_BITMAP(used, 256); |
968 | bitmap_zero(used, 256); | 948 | bitmap_zero(used, 256); |
969 | for (i = 0; i < nr_ioapics; i++) { | 949 | for (i = 0; i < nr_ioapics; i++) { |
970 | struct mp_config_ioapic *ia = &mp_ioapics[i]; | 950 | struct mpc_ioapic *ia = &mp_ioapics[i]; |
971 | __set_bit(ia->mp_apicid, used); | 951 | __set_bit(ia->apicid, used); |
972 | } | 952 | } |
973 | if (!test_bit(id, used)) | 953 | if (!test_bit(id, used)) |
974 | return id; | 954 | return id; |
@@ -1000,29 +980,29 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base) | |||
1000 | 980 | ||
1001 | idx = nr_ioapics; | 981 | idx = nr_ioapics; |
1002 | 982 | ||
1003 | mp_ioapics[idx].mp_type = MP_IOAPIC; | 983 | mp_ioapics[idx].type = MP_IOAPIC; |
1004 | mp_ioapics[idx].mp_flags = MPC_APIC_USABLE; | 984 | mp_ioapics[idx].flags = MPC_APIC_USABLE; |
1005 | mp_ioapics[idx].mp_apicaddr = address; | 985 | mp_ioapics[idx].apicaddr = address; |
1006 | 986 | ||
1007 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); | 987 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); |
1008 | mp_ioapics[idx].mp_apicid = uniq_ioapic_id(id); | 988 | mp_ioapics[idx].apicid = uniq_ioapic_id(id); |
1009 | #ifdef CONFIG_X86_32 | 989 | #ifdef CONFIG_X86_32 |
1010 | mp_ioapics[idx].mp_apicver = io_apic_get_version(idx); | 990 | mp_ioapics[idx].apicver = io_apic_get_version(idx); |
1011 | #else | 991 | #else |
1012 | mp_ioapics[idx].mp_apicver = 0; | 992 | mp_ioapics[idx].apicver = 0; |
1013 | #endif | 993 | #endif |
1014 | /* | 994 | /* |
1015 | * Build basic GSI lookup table to facilitate gsi->io_apic lookups | 995 | * Build basic GSI lookup table to facilitate gsi->io_apic lookups |
1016 | * and to prevent reprogramming of IOAPIC pins (PCI GSIs). | 996 | * and to prevent reprogramming of IOAPIC pins (PCI GSIs). |
1017 | */ | 997 | */ |
1018 | mp_ioapic_routing[idx].apic_id = mp_ioapics[idx].mp_apicid; | 998 | mp_ioapic_routing[idx].apic_id = mp_ioapics[idx].apicid; |
1019 | mp_ioapic_routing[idx].gsi_base = gsi_base; | 999 | mp_ioapic_routing[idx].gsi_base = gsi_base; |
1020 | mp_ioapic_routing[idx].gsi_end = gsi_base + | 1000 | mp_ioapic_routing[idx].gsi_end = gsi_base + |
1021 | io_apic_get_redir_entries(idx); | 1001 | io_apic_get_redir_entries(idx); |
1022 | 1002 | ||
1023 | printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%lx, " | 1003 | printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, " |
1024 | "GSI %d-%d\n", idx, mp_ioapics[idx].mp_apicid, | 1004 | "GSI %d-%d\n", idx, mp_ioapics[idx].apicid, |
1025 | mp_ioapics[idx].mp_apicver, mp_ioapics[idx].mp_apicaddr, | 1005 | mp_ioapics[idx].apicver, mp_ioapics[idx].apicaddr, |
1026 | mp_ioapic_routing[idx].gsi_base, mp_ioapic_routing[idx].gsi_end); | 1006 | mp_ioapic_routing[idx].gsi_base, mp_ioapic_routing[idx].gsi_end); |
1027 | 1007 | ||
1028 | nr_ioapics++; | 1008 | nr_ioapics++; |
@@ -1051,19 +1031,19 @@ int __init acpi_probe_gsi(void) | |||
1051 | return max_gsi + 1; | 1031 | return max_gsi + 1; |
1052 | } | 1032 | } |
1053 | 1033 | ||
1054 | static void assign_to_mp_irq(struct mp_config_intsrc *m, | 1034 | static void assign_to_mp_irq(struct mpc_intsrc *m, |
1055 | struct mp_config_intsrc *mp_irq) | 1035 | struct mpc_intsrc *mp_irq) |
1056 | { | 1036 | { |
1057 | memcpy(mp_irq, m, sizeof(struct mp_config_intsrc)); | 1037 | memcpy(mp_irq, m, sizeof(struct mpc_intsrc)); |
1058 | } | 1038 | } |
1059 | 1039 | ||
1060 | static int mp_irq_cmp(struct mp_config_intsrc *mp_irq, | 1040 | static int mp_irq_cmp(struct mpc_intsrc *mp_irq, |
1061 | struct mp_config_intsrc *m) | 1041 | struct mpc_intsrc *m) |
1062 | { | 1042 | { |
1063 | return memcmp(mp_irq, m, sizeof(struct mp_config_intsrc)); | 1043 | return memcmp(mp_irq, m, sizeof(struct mpc_intsrc)); |
1064 | } | 1044 | } |
1065 | 1045 | ||
1066 | static void save_mp_irq(struct mp_config_intsrc *m) | 1046 | static void save_mp_irq(struct mpc_intsrc *m) |
1067 | { | 1047 | { |
1068 | int i; | 1048 | int i; |
1069 | 1049 | ||
@@ -1081,7 +1061,7 @@ void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi) | |||
1081 | { | 1061 | { |
1082 | int ioapic; | 1062 | int ioapic; |
1083 | int pin; | 1063 | int pin; |
1084 | struct mp_config_intsrc mp_irq; | 1064 | struct mpc_intsrc mp_irq; |
1085 | 1065 | ||
1086 | /* | 1066 | /* |
1087 | * Convert 'gsi' to 'ioapic.pin'. | 1067 | * Convert 'gsi' to 'ioapic.pin'. |
@@ -1089,7 +1069,7 @@ void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi) | |||
1089 | ioapic = mp_find_ioapic(gsi); | 1069 | ioapic = mp_find_ioapic(gsi); |
1090 | if (ioapic < 0) | 1070 | if (ioapic < 0) |
1091 | return; | 1071 | return; |
1092 | pin = gsi - mp_ioapic_routing[ioapic].gsi_base; | 1072 | pin = mp_find_ioapic_pin(ioapic, gsi); |
1093 | 1073 | ||
1094 | /* | 1074 | /* |
1095 | * TBD: This check is for faulty timer entries, where the override | 1075 | * TBD: This check is for faulty timer entries, where the override |
@@ -1099,13 +1079,13 @@ void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi) | |||
1099 | if ((bus_irq == 0) && (trigger == 3)) | 1079 | if ((bus_irq == 0) && (trigger == 3)) |
1100 | trigger = 1; | 1080 | trigger = 1; |
1101 | 1081 | ||
1102 | mp_irq.mp_type = MP_INTSRC; | 1082 | mp_irq.type = MP_INTSRC; |
1103 | mp_irq.mp_irqtype = mp_INT; | 1083 | mp_irq.irqtype = mp_INT; |
1104 | mp_irq.mp_irqflag = (trigger << 2) | polarity; | 1084 | mp_irq.irqflag = (trigger << 2) | polarity; |
1105 | mp_irq.mp_srcbus = MP_ISA_BUS; | 1085 | mp_irq.srcbus = MP_ISA_BUS; |
1106 | mp_irq.mp_srcbusirq = bus_irq; /* IRQ */ | 1086 | mp_irq.srcbusirq = bus_irq; /* IRQ */ |
1107 | mp_irq.mp_dstapic = mp_ioapics[ioapic].mp_apicid; /* APIC ID */ | 1087 | mp_irq.dstapic = mp_ioapics[ioapic].apicid; /* APIC ID */ |
1108 | mp_irq.mp_dstirq = pin; /* INTIN# */ | 1088 | mp_irq.dstirq = pin; /* INTIN# */ |
1109 | 1089 | ||
1110 | save_mp_irq(&mp_irq); | 1090 | save_mp_irq(&mp_irq); |
1111 | } | 1091 | } |
@@ -1115,7 +1095,7 @@ void __init mp_config_acpi_legacy_irqs(void) | |||
1115 | int i; | 1095 | int i; |
1116 | int ioapic; | 1096 | int ioapic; |
1117 | unsigned int dstapic; | 1097 | unsigned int dstapic; |
1118 | struct mp_config_intsrc mp_irq; | 1098 | struct mpc_intsrc mp_irq; |
1119 | 1099 | ||
1120 | #if defined (CONFIG_MCA) || defined (CONFIG_EISA) | 1100 | #if defined (CONFIG_MCA) || defined (CONFIG_EISA) |
1121 | /* | 1101 | /* |
@@ -1140,7 +1120,7 @@ void __init mp_config_acpi_legacy_irqs(void) | |||
1140 | ioapic = mp_find_ioapic(0); | 1120 | ioapic = mp_find_ioapic(0); |
1141 | if (ioapic < 0) | 1121 | if (ioapic < 0) |
1142 | return; | 1122 | return; |
1143 | dstapic = mp_ioapics[ioapic].mp_apicid; | 1123 | dstapic = mp_ioapics[ioapic].apicid; |
1144 | 1124 | ||
1145 | /* | 1125 | /* |
1146 | * Use the default configuration for the IRQs 0-15. Unless | 1126 | * Use the default configuration for the IRQs 0-15. Unless |
@@ -1150,16 +1130,14 @@ void __init mp_config_acpi_legacy_irqs(void) | |||
1150 | int idx; | 1130 | int idx; |
1151 | 1131 | ||
1152 | for (idx = 0; idx < mp_irq_entries; idx++) { | 1132 | for (idx = 0; idx < mp_irq_entries; idx++) { |
1153 | struct mp_config_intsrc *irq = mp_irqs + idx; | 1133 | struct mpc_intsrc *irq = mp_irqs + idx; |
1154 | 1134 | ||
1155 | /* Do we already have a mapping for this ISA IRQ? */ | 1135 | /* Do we already have a mapping for this ISA IRQ? */ |
1156 | if (irq->mp_srcbus == MP_ISA_BUS | 1136 | if (irq->srcbus == MP_ISA_BUS && irq->srcbusirq == i) |
1157 | && irq->mp_srcbusirq == i) | ||
1158 | break; | 1137 | break; |
1159 | 1138 | ||
1160 | /* Do we already have a mapping for this IOAPIC pin */ | 1139 | /* Do we already have a mapping for this IOAPIC pin */ |
1161 | if (irq->mp_dstapic == dstapic && | 1140 | if (irq->dstapic == dstapic && irq->dstirq == i) |
1162 | irq->mp_dstirq == i) | ||
1163 | break; | 1141 | break; |
1164 | } | 1142 | } |
1165 | 1143 | ||
@@ -1168,13 +1146,13 @@ void __init mp_config_acpi_legacy_irqs(void) | |||
1168 | continue; /* IRQ already used */ | 1146 | continue; /* IRQ already used */ |
1169 | } | 1147 | } |
1170 | 1148 | ||
1171 | mp_irq.mp_type = MP_INTSRC; | 1149 | mp_irq.type = MP_INTSRC; |
1172 | mp_irq.mp_irqflag = 0; /* Conforming */ | 1150 | mp_irq.irqflag = 0; /* Conforming */ |
1173 | mp_irq.mp_srcbus = MP_ISA_BUS; | 1151 | mp_irq.srcbus = MP_ISA_BUS; |
1174 | mp_irq.mp_dstapic = dstapic; | 1152 | mp_irq.dstapic = dstapic; |
1175 | mp_irq.mp_irqtype = mp_INT; | 1153 | mp_irq.irqtype = mp_INT; |
1176 | mp_irq.mp_srcbusirq = i; /* Identity mapped */ | 1154 | mp_irq.srcbusirq = i; /* Identity mapped */ |
1177 | mp_irq.mp_dstirq = i; | 1155 | mp_irq.dstirq = i; |
1178 | 1156 | ||
1179 | save_mp_irq(&mp_irq); | 1157 | save_mp_irq(&mp_irq); |
1180 | } | 1158 | } |
@@ -1211,7 +1189,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity) | |||
1211 | return gsi; | 1189 | return gsi; |
1212 | } | 1190 | } |
1213 | 1191 | ||
1214 | ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base; | 1192 | ioapic_pin = mp_find_ioapic_pin(ioapic, gsi); |
1215 | 1193 | ||
1216 | #ifdef CONFIG_X86_32 | 1194 | #ifdef CONFIG_X86_32 |
1217 | if (ioapic_renumber_irq) | 1195 | if (ioapic_renumber_irq) |
@@ -1285,22 +1263,22 @@ int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin, | |||
1285 | u32 gsi, int triggering, int polarity) | 1263 | u32 gsi, int triggering, int polarity) |
1286 | { | 1264 | { |
1287 | #ifdef CONFIG_X86_MPPARSE | 1265 | #ifdef CONFIG_X86_MPPARSE |
1288 | struct mp_config_intsrc mp_irq; | 1266 | struct mpc_intsrc mp_irq; |
1289 | int ioapic; | 1267 | int ioapic; |
1290 | 1268 | ||
1291 | if (!acpi_ioapic) | 1269 | if (!acpi_ioapic) |
1292 | return 0; | 1270 | return 0; |
1293 | 1271 | ||
1294 | /* print the entry should happen on mptable identically */ | 1272 | /* print the entry should happen on mptable identically */ |
1295 | mp_irq.mp_type = MP_INTSRC; | 1273 | mp_irq.type = MP_INTSRC; |
1296 | mp_irq.mp_irqtype = mp_INT; | 1274 | mp_irq.irqtype = mp_INT; |
1297 | mp_irq.mp_irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) | | 1275 | mp_irq.irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) | |
1298 | (polarity == ACPI_ACTIVE_HIGH ? 1 : 3); | 1276 | (polarity == ACPI_ACTIVE_HIGH ? 1 : 3); |
1299 | mp_irq.mp_srcbus = number; | 1277 | mp_irq.srcbus = number; |
1300 | mp_irq.mp_srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3); | 1278 | mp_irq.srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3); |
1301 | ioapic = mp_find_ioapic(gsi); | 1279 | ioapic = mp_find_ioapic(gsi); |
1302 | mp_irq.mp_dstapic = mp_ioapic_routing[ioapic].apic_id; | 1280 | mp_irq.dstapic = mp_ioapic_routing[ioapic].apic_id; |
1303 | mp_irq.mp_dstirq = gsi - mp_ioapic_routing[ioapic].gsi_base; | 1281 | mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi); |
1304 | 1282 | ||
1305 | save_mp_irq(&mp_irq); | 1283 | save_mp_irq(&mp_irq); |
1306 | #endif | 1284 | #endif |
@@ -1427,7 +1405,7 @@ static void __init acpi_process_madt(void) | |||
1427 | if (!error) { | 1405 | if (!error) { |
1428 | acpi_lapic = 1; | 1406 | acpi_lapic = 1; |
1429 | 1407 | ||
1430 | #ifdef CONFIG_X86_GENERICARCH | 1408 | #ifdef CONFIG_X86_BIGSMP |
1431 | generic_bigsmp_probe(); | 1409 | generic_bigsmp_probe(); |
1432 | #endif | 1410 | #endif |
1433 | /* | 1411 | /* |
@@ -1439,9 +1417,8 @@ static void __init acpi_process_madt(void) | |||
1439 | acpi_ioapic = 1; | 1417 | acpi_ioapic = 1; |
1440 | 1418 | ||
1441 | smp_found_config = 1; | 1419 | smp_found_config = 1; |
1442 | #ifdef CONFIG_X86_32 | 1420 | if (apic->setup_apic_routing) |
1443 | setup_apic_routing(); | 1421 | apic->setup_apic_routing(); |
1444 | #endif | ||
1445 | } | 1422 | } |
1446 | } | 1423 | } |
1447 | if (error == -EINVAL) { | 1424 | if (error == -EINVAL) { |
diff --git a/arch/x86/kernel/acpi/realmode/wakeup.S b/arch/x86/kernel/acpi/realmode/wakeup.S index 3355973b12ac..580b4e296010 100644 --- a/arch/x86/kernel/acpi/realmode/wakeup.S +++ b/arch/x86/kernel/acpi/realmode/wakeup.S | |||
@@ -3,8 +3,8 @@ | |||
3 | */ | 3 | */ |
4 | #include <asm/segment.h> | 4 | #include <asm/segment.h> |
5 | #include <asm/msr-index.h> | 5 | #include <asm/msr-index.h> |
6 | #include <asm/page.h> | 6 | #include <asm/page_types.h> |
7 | #include <asm/pgtable.h> | 7 | #include <asm/pgtable_types.h> |
8 | #include <asm/processor-flags.h> | 8 | #include <asm/processor-flags.h> |
9 | 9 | ||
10 | .code16 | 10 | .code16 |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index a60c1f3bcb87..7c243a2c5115 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
@@ -101,6 +101,7 @@ int acpi_save_state_mem(void) | |||
101 | stack_start.sp = temp_stack + sizeof(temp_stack); | 101 | stack_start.sp = temp_stack + sizeof(temp_stack); |
102 | early_gdt_descr.address = | 102 | early_gdt_descr.address = |
103 | (unsigned long)get_cpu_gdt_table(smp_processor_id()); | 103 | (unsigned long)get_cpu_gdt_table(smp_processor_id()); |
104 | initial_gs = per_cpu_offset(smp_processor_id()); | ||
104 | #endif | 105 | #endif |
105 | initial_code = (unsigned long)wakeup_long64; | 106 | initial_code = (unsigned long)wakeup_long64; |
106 | saved_magic = 0x123456789abcdef0; | 107 | saved_magic = 0x123456789abcdef0; |
diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S index a12e6a9fb659..8ded418b0593 100644 --- a/arch/x86/kernel/acpi/wakeup_32.S +++ b/arch/x86/kernel/acpi/wakeup_32.S | |||
@@ -1,7 +1,7 @@ | |||
1 | .section .text.page_aligned | 1 | .section .text.page_aligned |
2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
3 | #include <asm/segment.h> | 3 | #include <asm/segment.h> |
4 | #include <asm/page.h> | 4 | #include <asm/page_types.h> |
5 | 5 | ||
6 | # Copyright 2003, 2008 Pavel Machek <pavel@suse.cz>, distribute under GPLv2 | 6 | # Copyright 2003, 2008 Pavel Machek <pavel@suse.cz>, distribute under GPLv2 |
7 | 7 | ||
diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup_64.S index 96258d9dc974..8ea5164cbd04 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S | |||
@@ -1,8 +1,8 @@ | |||
1 | .text | 1 | .text |
2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
3 | #include <asm/segment.h> | 3 | #include <asm/segment.h> |
4 | #include <asm/pgtable.h> | 4 | #include <asm/pgtable_types.h> |
5 | #include <asm/page.h> | 5 | #include <asm/page_types.h> |
6 | #include <asm/msr.h> | 6 | #include <asm/msr.h> |
7 | #include <asm/asm-offsets.h> | 7 | #include <asm/asm-offsets.h> |
8 | 8 | ||