Ignore disabled local APICs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23118 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -9,6 +9,8 @@
|
|||||||
#define ACPI_RSDT_SIGNATURE "RSDT"
|
#define ACPI_RSDT_SIGNATURE "RSDT"
|
||||||
#define ACPI_MADT_SIGNATURE "APIC"
|
#define ACPI_MADT_SIGNATURE "APIC"
|
||||||
|
|
||||||
|
#define ACPI_LOCAL_APIC_ENABLED 0x01
|
||||||
|
|
||||||
struct acpi_rsdp {
|
struct acpi_rsdp {
|
||||||
char signature[8]; /* "RSD PTR " including blank */
|
char signature[8]; /* "RSD PTR " including blank */
|
||||||
uint8 checksum; /* checksum of bytes 0-19 (per ACPI 1.0) */
|
uint8 checksum; /* checksum of bytes 0-19 (per ACPI 1.0) */
|
||||||
|
|||||||
@@ -280,6 +280,11 @@ smp_do_acpi_config(acpi_rsdp *rsdp)
|
|||||||
|
|
||||||
acpi_local_apic *localApic = (acpi_local_apic *)apic;
|
acpi_local_apic *localApic = (acpi_local_apic *)apic;
|
||||||
TRACE(("smp: found local APIC with id %u\n", localApic->apic_id));
|
TRACE(("smp: found local APIC with id %u\n", localApic->apic_id));
|
||||||
|
if ((localApic->flags & ACPI_LOCAL_APIC_ENABLED) == 0) {
|
||||||
|
TRACE(("smp: APIC is disabled and will not be used\n"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
gKernelArgs.arch_args.cpu_apic_id[gKernelArgs.num_cpus] = localApic->apic_id;
|
gKernelArgs.arch_args.cpu_apic_id[gKernelArgs.num_cpus] = localApic->apic_id;
|
||||||
gKernelArgs.arch_args.cpu_os_id[localApic->apic_id] = gKernelArgs.num_cpus;
|
gKernelArgs.arch_args.cpu_os_id[localApic->apic_id] = gKernelArgs.num_cpus;
|
||||||
// ToDo: how to find out? putting 0x10 in to indicate a local apic
|
// ToDo: how to find out? putting 0x10 in to indicate a local apic
|
||||||
|
|||||||
Reference in New Issue
Block a user