31 /*
32 * [Support of X2APIC]
33 * According to the ACPI Spec, when using the X2APIC interrupt model, logical
34 * processors with APIC ID values of 255 and greater are required to have a
35 * Processor Device object and must convey the Processor's APIC information to
36 * OSPM using the Processor Local X2APIC structure. Logical Processors with APIC
37 * ID values less than 255 must use the Processor Local XAPIC structure to
38 * convey their APIC information to OSPM.
39 */
40
41 #include <sys/types.h>
42 #include <sys/atomic.h>
43 #include <sys/bootconf.h>
44 #include <sys/cpuvar.h>
45 #include <sys/machsystm.h>
46 #include <sys/note.h>
47 #include <sys/psm_types.h>
48 #include <sys/x86_archext.h>
49 #include <sys/sunddi.h>
50 #include <sys/sunndi.h>
51 #include <sys/acpi/acpi.h>
52 #include <sys/acpica.h>
53 #include <sys/acpidev.h>
54 #include <sys/acpidev_impl.h>
55
56 struct acpidev_cpu_map_item {
57 uint32_t proc_id;
58 uint32_t apic_id;
59 };
60
61 struct acpidev_cpu_MAT_arg {
62 boolean_t found;
63 boolean_t enabled;
64 uint32_t proc_id;
65 uint32_t apic_id;
66 };
67
68 static ACPI_STATUS acpidev_cpu_pre_probe(acpidev_walk_info_t *infop);
69 static ACPI_STATUS acpidev_cpu_post_probe(acpidev_walk_info_t *infop);
70 static ACPI_STATUS acpidev_cpu_probe(acpidev_walk_info_t *infop);
71 static acpidev_filter_result_t acpidev_cpu_filter(acpidev_walk_info_t *infop,
|
31 /*
32 * [Support of X2APIC]
33 * According to the ACPI Spec, when using the X2APIC interrupt model, logical
34 * processors with APIC ID values of 255 and greater are required to have a
35 * Processor Device object and must convey the Processor's APIC information to
36 * OSPM using the Processor Local X2APIC structure. Logical Processors with APIC
37 * ID values less than 255 must use the Processor Local XAPIC structure to
38 * convey their APIC information to OSPM.
39 */
40
41 #include <sys/types.h>
42 #include <sys/atomic.h>
43 #include <sys/bootconf.h>
44 #include <sys/cpuvar.h>
45 #include <sys/machsystm.h>
46 #include <sys/note.h>
47 #include <sys/psm_types.h>
48 #include <sys/x86_archext.h>
49 #include <sys/sunddi.h>
50 #include <sys/sunndi.h>
51 #include <acpica/include/acpi.h>
52 #include <sys/acpica.h>
53 #include <sys/acpidev.h>
54 #include <sys/acpidev_impl.h>
55
56 struct acpidev_cpu_map_item {
57 uint32_t proc_id;
58 uint32_t apic_id;
59 };
60
61 struct acpidev_cpu_MAT_arg {
62 boolean_t found;
63 boolean_t enabled;
64 uint32_t proc_id;
65 uint32_t apic_id;
66 };
67
68 static ACPI_STATUS acpidev_cpu_pre_probe(acpidev_walk_info_t *infop);
69 static ACPI_STATUS acpidev_cpu_post_probe(acpidev_walk_info_t *infop);
70 static ACPI_STATUS acpidev_cpu_probe(acpidev_walk_info_t *infop);
71 static acpidev_filter_result_t acpidev_cpu_filter(acpidev_walk_info_t *infop,
|