2004-10-28 18:28:55

by Chris Wright

[permalink] [raw]
Subject: [PATCH] clustered apic patch missing APIC_DFR_CLUSTER def

The cluster apic support does not compile. I added the APIC_DFR_CLUSTER
def to asm-x86_64/apicdef.h (stolen from i386 one). Also added
APIC_DFR_FLAT while there. This may only be papering over real fix.

Additionally, cluster_cpu_present_to_apicid() is defined but not used
anywhere. So remove it.

Signed-off-by: Chris Wright <[email protected]>

===== include/asm-x86_64/apicdef.h 1.6 vs edited =====
--- 1.6/include/asm-x86_64/apicdef.h 2004-10-28 00:39:50 -07:00
+++ edited/include/asm-x86_64/apicdef.h 2004-10-28 11:15:19 -07:00
@@ -32,6 +32,8 @@
#define SET_APIC_LOGICAL_ID(x) (((x)<<24))
#define APIC_ALL_CPUS 0xFFu
#define APIC_DFR 0xE0
+#define APIC_DFR_CLUSTER 0x0FFFFFFFu
+#define APIC_DFR_FLAT 0xFFFFFFFFu
#define APIC_SPIV 0xF0
#define APIC_SPIV_FOCUS_DISABLED (1<<9)
#define APIC_SPIV_APIC_ENABLED (1<<8)
===== arch/x86_64/kernel/genapic_cluster.c 1.1 vs edited =====
--- 1.1/arch/x86_64/kernel/genapic_cluster.c 2004-10-28 00:39:50 -07:00
+++ edited/arch/x86_64/kernel/genapic_cluster.c 2004-10-28 11:18:10 -07:00
@@ -57,14 +57,6 @@
apic_write_around(APIC_LDR, val);
}

-static int cluster_cpu_present_to_apicid(int mps_cpu)
-{
- if ((unsigned)mps_cpu < NR_CPUS)
- return (int)bios_cpu_apicid[mps_cpu];
- else
- return BAD_APICID;
-}
-
/* Start with all IRQs pointing to boot CPU. IRQ balancing will shift them. */

static cpumask_t cluster_target_cpus(void)


2004-10-28 23:45:14

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] clustered apic patch missing APIC_DFR_CLUSTER def

On Thu, Oct 28, 2004 at 04:35:23PM -0700, James Cleverdon wrote:
> Hmmm... The patch containing APIC_DFR_CLUSTER and friends went
> into the -mm tree in the June/July timeframe. It must not have
> been pushed with the main cluster patch.

Andrew moved it into the x86-64 kexec APIC patch for some unknown
reason. And that obviously was not pushed ...

I already sent a patch to Linus and will send patches for
the other known buglets too (warnings, safe_smp_processor_id())

-Andi

2004-10-29 00:07:43

by Chris Wright

[permalink] [raw]
Subject: Re: [PATCH] clustered apic patch missing APIC_DFR_CLUSTER def

* James Cleverdon ([email protected]) wrote:
> Hmmm... The patch containing APIC_DFR_CLUSTER and friends went
> into the -mm tree in the June/July timeframe. It must not have
> been pushed with the main cluster patch.

OK, looks like Andi just sent something similar (i dropped the l (ell), since
it looked meant to be only 32bit).

> You're right, we're using the generic version of
> cpu_present_to_apicid(). The cluster one can go.

This part resent (below).

thanks,
-chris

Remove cluster_cpu_present_to_apicid(), it's defined but not used anywhere.

Signed-off-by: Chris Wright <[email protected]>

===== arch/x86_64/kernel/genapic_cluster.c 1.1 vs edited =====
--- 1.1/arch/x86_64/kernel/genapic_cluster.c 2004-10-28 00:39:50 -07:00
+++ edited/arch/x86_64/kernel/genapic_cluster.c 2004-10-28 11:18:10 -07:00
@@ -57,14 +57,6 @@
apic_write_around(APIC_LDR, val);
}

-static int cluster_cpu_present_to_apicid(int mps_cpu)
-{
- if ((unsigned)mps_cpu < NR_CPUS)
- return (int)bios_cpu_apicid[mps_cpu];
- else
- return BAD_APICID;
-}
-
/* Start with all IRQs pointing to boot CPU. IRQ balancing will shift them. */

static cpumask_t cluster_target_cpus(void)

2004-10-28 23:57:57

by James Cleverdon

[permalink] [raw]
Subject: Re: [PATCH] clustered apic patch missing APIC_DFR_CLUSTER def

Hmmm... The patch containing APIC_DFR_CLUSTER and friends went
into the -mm tree in the June/July timeframe. It must not have
been pushed with the main cluster patch.

You're right, we're using the generic version of
cpu_present_to_apicid(). The cluster one can go.


On Thursday 28 October 2004 11:27 am, Chris Wright wrote:
> The cluster apic support does not compile. I added the
> APIC_DFR_CLUSTER def to asm-x86_64/apicdef.h (stolen from i386 one).
> Also added APIC_DFR_FLAT while there. This may only be papering over
> real fix.
>
> Additionally, cluster_cpu_present_to_apicid() is defined but not used
> anywhere. So remove it.
>
> Signed-off-by: Chris Wright <[email protected]>
>
> ===== include/asm-x86_64/apicdef.h 1.6 vs edited =====
> --- 1.6/include/asm-x86_64/apicdef.h 2004-10-28 00:39:50 -07:00
> +++ edited/include/asm-x86_64/apicdef.h 2004-10-28 11:15:19 -07:00
> @@ -32,6 +32,8 @@
> #define SET_APIC_LOGICAL_ID(x) (((x)<<24))
> #define APIC_ALL_CPUS 0xFFu
> #define APIC_DFR 0xE0
> +#define APIC_DFR_CLUSTER 0x0FFFFFFFu
> +#define APIC_DFR_FLAT 0xFFFFFFFFu
> #define APIC_SPIV 0xF0
> #define APIC_SPIV_FOCUS_DISABLED (1<<9)
> #define APIC_SPIV_APIC_ENABLED (1<<8)
> ===== arch/x86_64/kernel/genapic_cluster.c 1.1 vs edited =====
> --- 1.1/arch/x86_64/kernel/genapic_cluster.c 2004-10-28 00:39:50
> -07:00 +++ edited/arch/x86_64/kernel/genapic_cluster.c 2004-10-28
> 11:18:10 -07:00 @@ -57,14 +57,6 @@
> apic_write_around(APIC_LDR, val);
> }
>
> -static int cluster_cpu_present_to_apicid(int mps_cpu)
> -{
> - if ((unsigned)mps_cpu < NR_CPUS)
> - return (int)bios_cpu_apicid[mps_cpu];
> - else
> - return BAD_APICID;
> -}
> -
> /* Start with all IRQs pointing to boot CPU. IRQ balancing will
> shift them. */
>
> static cpumask_t cluster_target_cpus(void)

--
James Cleverdon
IBM LTC (xSeries Linux Solutions)
{jamesclv(Unix, preferred), cleverdj(Notes)} at us dot ibm dot comm