diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2009-03-30 17:55:30 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-04-03 20:08:12 -0400 |
commit | 7237d3de78ff89ec2e18eae5fe962d063024fef5 (patch) | |
tree | 07d0196e9e3122546cc0366c686d363423bfe894 /drivers/acpi/tables.c | |
parent | 8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (diff) |
x86, ACPI: add support for x2apic ACPI extensions
All logical processors with APIC ID values of 255 and greater will have their
APIC reported through Processor X2APIC structure (type-9 entry type) and all
logical processors with APIC ID less than 255 will have their APIC reported
through legacy Processor Local APIC (type-0 entry type) only. This is the
same case even for NMI structure reporting.
The Processor X2APIC Affinity structure provides the association between the
X2APIC ID of a logical processor and the proximity domain to which the logical
processor belongs.
For OSPM, Procssor IDs outside the 0-254 range are to be declared as Device()
objects in the ACPI namespace.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/tables.c')
-rw-r--r-- | drivers/acpi/tables.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index a8852952fac4..991c006a301b 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c | |||
@@ -62,6 +62,18 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header) | |||
62 | } | 62 | } |
63 | break; | 63 | break; |
64 | 64 | ||
65 | case ACPI_MADT_TYPE_LOCAL_X2APIC: | ||
66 | { | ||
67 | struct acpi_madt_local_x2apic *p = | ||
68 | (struct acpi_madt_local_x2apic *)header; | ||
69 | printk(KERN_INFO PREFIX | ||
70 | "X2APIC (apic_id[0x%02x] uid[0x%02x] %s)\n", | ||
71 | p->local_apic_id, p->uid, | ||
72 | (p->lapic_flags & ACPI_MADT_ENABLED) ? | ||
73 | "enabled" : "disabled"); | ||
74 | } | ||
75 | break; | ||
76 | |||
65 | case ACPI_MADT_TYPE_IO_APIC: | 77 | case ACPI_MADT_TYPE_IO_APIC: |
66 | { | 78 | { |
67 | struct acpi_madt_io_apic *p = | 79 | struct acpi_madt_io_apic *p = |
@@ -116,6 +128,24 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header) | |||
116 | } | 128 | } |
117 | break; | 129 | break; |
118 | 130 | ||
131 | case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI: | ||
132 | { | ||
133 | u16 polarity, trigger; | ||
134 | struct acpi_madt_local_x2apic_nmi *p = | ||
135 | (struct acpi_madt_local_x2apic_nmi *)header; | ||
136 | |||
137 | polarity = p->inti_flags & ACPI_MADT_POLARITY_MASK; | ||
138 | trigger = (p->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2; | ||
139 | |||
140 | printk(KERN_INFO PREFIX | ||
141 | "X2APIC_NMI (uid[0x%02x] %s %s lint[0x%x])\n", | ||
142 | p->uid, | ||
143 | mps_inti_flags_polarity[polarity], | ||
144 | mps_inti_flags_trigger[trigger], | ||
145 | p->lint); | ||
146 | } | ||
147 | break; | ||
148 | |||
119 | case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: | 149 | case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: |
120 | { | 150 | { |
121 | struct acpi_madt_local_apic_override *p = | 151 | struct acpi_madt_local_apic_override *p = |