diff options
author | Bob Moore <robert.moore@intel.com> | 2008-08-03 22:42:47 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-10-22 23:14:40 -0400 |
commit | 1d7cc03049f7c9c5cced9208a39316c5245ef314 (patch) | |
tree | 6f9a15a8d2c8d9db85fd68a727b935ce739af3e4 /include/acpi | |
parent | c2de3a49454cdc9ca42bbd5d742913421d049f59 (diff) |
ACPICA: x2APIC support: changes for MADT and SRAT ACPI tables
Support for the x2APIC. There are 2 new subtables for the MADT and
one new subtable for the SRAT. Includes disassembler and acpisrc
support. Data from the Intel 64 Architecture x2APIC Specification,
June 2008.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi')
-rw-r--r-- | include/acpi/acdisasm.h | 4 | ||||
-rw-r--r-- | include/acpi/actbl1.h | 51 |
2 files changed, 49 insertions, 6 deletions
diff --git a/include/acpi/acdisasm.h b/include/acpi/acdisasm.h index f53faca8ec80..0c1ed387073c 100644 --- a/include/acpi/acdisasm.h +++ b/include/acpi/acdisasm.h | |||
@@ -186,6 +186,8 @@ extern struct acpi_dmtable_info acpi_dm_table_info_madt5[]; | |||
186 | extern struct acpi_dmtable_info acpi_dm_table_info_madt6[]; | 186 | extern struct acpi_dmtable_info acpi_dm_table_info_madt6[]; |
187 | extern struct acpi_dmtable_info acpi_dm_table_info_madt7[]; | 187 | extern struct acpi_dmtable_info acpi_dm_table_info_madt7[]; |
188 | extern struct acpi_dmtable_info acpi_dm_table_info_madt8[]; | 188 | extern struct acpi_dmtable_info acpi_dm_table_info_madt8[]; |
189 | extern struct acpi_dmtable_info acpi_dm_table_info_madt9[]; | ||
190 | extern struct acpi_dmtable_info acpi_dm_table_info_madt10[]; | ||
189 | extern struct acpi_dmtable_info acpi_dm_table_info_madt_hdr[]; | 191 | extern struct acpi_dmtable_info acpi_dm_table_info_madt_hdr[]; |
190 | extern struct acpi_dmtable_info acpi_dm_table_info_mcfg[]; | 192 | extern struct acpi_dmtable_info acpi_dm_table_info_mcfg[]; |
191 | extern struct acpi_dmtable_info acpi_dm_table_info_mcfg0[]; | 193 | extern struct acpi_dmtable_info acpi_dm_table_info_mcfg0[]; |
@@ -197,8 +199,10 @@ extern struct acpi_dmtable_info acpi_dm_table_info_slit[]; | |||
197 | extern struct acpi_dmtable_info acpi_dm_table_info_spcr[]; | 199 | extern struct acpi_dmtable_info acpi_dm_table_info_spcr[]; |
198 | extern struct acpi_dmtable_info acpi_dm_table_info_spmi[]; | 200 | extern struct acpi_dmtable_info acpi_dm_table_info_spmi[]; |
199 | extern struct acpi_dmtable_info acpi_dm_table_info_srat[]; | 201 | extern struct acpi_dmtable_info acpi_dm_table_info_srat[]; |
202 | extern struct acpi_dmtable_info acpi_dm_table_info_srat_hdr[]; | ||
200 | extern struct acpi_dmtable_info acpi_dm_table_info_srat0[]; | 203 | extern struct acpi_dmtable_info acpi_dm_table_info_srat0[]; |
201 | extern struct acpi_dmtable_info acpi_dm_table_info_srat1[]; | 204 | extern struct acpi_dmtable_info acpi_dm_table_info_srat1[]; |
205 | extern struct acpi_dmtable_info acpi_dm_table_info_srat2[]; | ||
202 | extern struct acpi_dmtable_info acpi_dm_table_info_tcpa[]; | 206 | extern struct acpi_dmtable_info acpi_dm_table_info_tcpa[]; |
203 | extern struct acpi_dmtable_info acpi_dm_table_info_wdrt[]; | 207 | extern struct acpi_dmtable_info acpi_dm_table_info_wdrt[]; |
204 | 208 | ||
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index d38f9be2f6ee..63f5b4cf4de1 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h | |||
@@ -908,7 +908,9 @@ enum acpi_madt_type { | |||
908 | ACPI_MADT_TYPE_IO_SAPIC = 6, | 908 | ACPI_MADT_TYPE_IO_SAPIC = 6, |
909 | ACPI_MADT_TYPE_LOCAL_SAPIC = 7, | 909 | ACPI_MADT_TYPE_LOCAL_SAPIC = 7, |
910 | ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, | 910 | ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, |
911 | ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */ | 911 | ACPI_MADT_TYPE_LOCAL_X2APIC = 9, |
912 | ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, | ||
913 | ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ | ||
912 | }; | 914 | }; |
913 | 915 | ||
914 | /* | 916 | /* |
@@ -1009,6 +1011,26 @@ struct acpi_madt_interrupt_source { | |||
1009 | 1011 | ||
1010 | #define ACPI_MADT_CPEI_OVERRIDE (1) | 1012 | #define ACPI_MADT_CPEI_OVERRIDE (1) |
1011 | 1013 | ||
1014 | /* 9: Processor Local X2_APIC (07/2008) */ | ||
1015 | |||
1016 | struct acpi_madt_local_x2apic { | ||
1017 | struct acpi_subtable_header header; | ||
1018 | u16 reserved; /* Reserved - must be zero */ | ||
1019 | u32 local_apic_id; /* Processor X2_APIC ID */ | ||
1020 | u32 lapic_flags; | ||
1021 | u32 uid; /* Extended X2_APIC processor ID */ | ||
1022 | }; | ||
1023 | |||
1024 | /* 10: Local X2APIC NMI (07/2008) */ | ||
1025 | |||
1026 | struct acpi_madt_local_x2apic_nmi { | ||
1027 | struct acpi_subtable_header header; | ||
1028 | u16 inti_flags; | ||
1029 | u32 uid; /* Processor X2_APIC ID */ | ||
1030 | u8 lint; /* LINTn to which NMI is connected */ | ||
1031 | u8 reserved[3]; | ||
1032 | }; | ||
1033 | |||
1012 | /* | 1034 | /* |
1013 | * Common flags fields for MADT subtables | 1035 | * Common flags fields for MADT subtables |
1014 | */ | 1036 | */ |
@@ -1150,10 +1172,15 @@ struct acpi_table_srat { | |||
1150 | enum acpi_srat_type { | 1172 | enum acpi_srat_type { |
1151 | ACPI_SRAT_TYPE_CPU_AFFINITY = 0, | 1173 | ACPI_SRAT_TYPE_CPU_AFFINITY = 0, |
1152 | ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, | 1174 | ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, |
1153 | ACPI_SRAT_TYPE_RESERVED = 2 | 1175 | ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, |
1176 | ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ | ||
1154 | }; | 1177 | }; |
1155 | 1178 | ||
1156 | /* SRAT sub-tables */ | 1179 | /* |
1180 | * SRAT Sub-tables, correspond to Type in struct acpi_subtable_header | ||
1181 | */ | ||
1182 | |||
1183 | /* 0: Processor Local APIC/SAPIC Affinity */ | ||
1157 | 1184 | ||
1158 | struct acpi_srat_cpu_affinity { | 1185 | struct acpi_srat_cpu_affinity { |
1159 | struct acpi_subtable_header header; | 1186 | struct acpi_subtable_header header; |
@@ -1165,9 +1192,7 @@ struct acpi_srat_cpu_affinity { | |||
1165 | u32 reserved; /* Reserved, must be zero */ | 1192 | u32 reserved; /* Reserved, must be zero */ |
1166 | }; | 1193 | }; |
1167 | 1194 | ||
1168 | /* Flags */ | 1195 | /* 1: Memory Affinity */ |
1169 | |||
1170 | #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ | ||
1171 | 1196 | ||
1172 | struct acpi_srat_mem_affinity { | 1197 | struct acpi_srat_mem_affinity { |
1173 | struct acpi_subtable_header header; | 1198 | struct acpi_subtable_header header; |
@@ -1186,6 +1211,20 @@ struct acpi_srat_mem_affinity { | |||
1186 | #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ | 1211 | #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ |
1187 | #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ | 1212 | #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ |
1188 | 1213 | ||
1214 | /* 2: Processor Local X2_APIC Affinity (07/2008) */ | ||
1215 | |||
1216 | struct acpi_srat_x2apic_cpu_affinity { | ||
1217 | struct acpi_subtable_header header; | ||
1218 | u16 reserved; /* Reserved, must be zero */ | ||
1219 | u32 proximity_domain; | ||
1220 | u32 apic_id; | ||
1221 | u32 flags; | ||
1222 | }; | ||
1223 | |||
1224 | /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */ | ||
1225 | |||
1226 | #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ | ||
1227 | |||
1189 | /******************************************************************************* | 1228 | /******************************************************************************* |
1190 | * | 1229 | * |
1191 | * TCPA - Trusted Computing Platform Alliance table | 1230 | * TCPA - Trusted Computing Platform Alliance table |