tree 1b9d29d6db925d41e282f2f3dcff189b4c185f90
parent 107ce721abddbd876aa6203ac982821e405400e9
author Jason Davis <[EMAIL PROTECTED]> Sun, 17 Apr 2005 05:24:53 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Sun, 17 Apr 2005 05:24:53 -0700

[PATCH] x86_64 genapic update

x86_64 genapic mechanism should be aware of machines that use physical APIC
mode regardless of how many clusters/processors are detected.

ACPI 3.0 FADT makes this determination very simple by providing a feature
flag "force_apic_physical_destination_mode" to state whether the machine
unconditionally uses physical APIC mode.

Unisys' next generation x86_64 ES7000 will need to utilize this FADT
feature flag in order to boot the x86_64 kernel in the correct APIC mode. 
This patch has been tested on both x86_64 commodity and ES7000 boxes.

Signed-off-by: Jason Davis <[EMAIL PROTECTED]>
Acked-by: Andi Kleen <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 i386/kernel/acpi/boot.c |    4 ++++
 x86_64/kernel/genapic.c |   16 ++++++++++++++++
 2 files changed, 20 insertions(+)

Index: arch/i386/kernel/acpi/boot.c
===================================================================
--- af4c860c05048d00288fa8860a988d1d4b9c535b/arch/i386/kernel/acpi/boot.c  
(mode:100644 sha1:9ba0b957d11f74496dde74d98e2c7bd1f6bdceda)
+++ 1b9d29d6db925d41e282f2f3dcff189b4c185f90/arch/i386/kernel/acpi/boot.c  
(mode:100644 sha1:040451e90a042f498ff8abd6cfa3d18654cb973b)
@@ -608,6 +608,10 @@
        acpi_fadt.sci_int = fadt->sci_int;
 #endif
 
+       /* initialize rev and apic_phys_dest_mode for x86_64 genapic */
+       acpi_fadt.revision = fadt->revision;
+       acpi_fadt.force_apic_physical_destination_mode = 
fadt->force_apic_physical_destination_mode;
+
 #ifdef CONFIG_X86_PM_TIMER
        /* detect the location of the ACPI PM Timer */
        if (fadt->revision >= FADT2_REVISION_ID) {
Index: arch/x86_64/kernel/genapic.c
===================================================================
--- af4c860c05048d00288fa8860a988d1d4b9c535b/arch/x86_64/kernel/genapic.c  
(mode:100644 sha1:d2c42fb99cb3453eeda7ce1298e12640325441d6)
+++ 1b9d29d6db925d41e282f2f3dcff189b4c185f90/arch/x86_64/kernel/genapic.c  
(mode:100644 sha1:69b9c25a8fc4ee5399b76b4a5d0967fc9c520f33)
@@ -20,6 +20,10 @@
 #include <asm/smp.h>
 #include <asm/ipi.h>
 
+#if defined(CONFIG_ACPI_BUS)
+#include <acpi/acpi_bus.h>
+#endif
+
 /* which logical CPU number maps to which CPU (physical APIC ID) */
 u8 x86_cpu_to_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
 EXPORT_SYMBOL(x86_cpu_to_apicid);
@@ -47,6 +51,18 @@
                goto print;
        }
 
+#if defined(CONFIG_ACPI_BUS)
+       /*
+        * Some x86_64 machines use physical APIC mode regardless of how many
+        * procs/clusters are present (x86_64 ES7000 is an example).
+        */
+       if (acpi_fadt.revision > FADT2_REVISION_ID)
+               if (acpi_fadt.force_apic_physical_destination_mode) {
+                       genapic = &apic_cluster;
+                       goto print;
+               }
+#endif
+
        memset(cluster_cnt, 0, sizeof(cluster_cnt));
 
        for (i = 0; i < NR_CPUS; i++) {
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to