2008-03-24 19:53:23

by Glauber Costa

[permalink] [raw]
Subject: [PATCH 1/2] move ipi definitions to mach_ipi.h

take them out of the x86_64-only asm/mach_apic.h

Signed-off-by: Glauber Costa <[email protected]>
---
arch/x86/kernel/apic_64.c | 2 ++
arch/x86/kernel/crash.c | 4 ----
arch/x86/kernel/io_apic_64.c | 2 ++
arch/x86/kernel/smp.c | 6 +-----
arch/x86/kernel/tlb_64.c | 3 ++-
include/asm-x86/mach-default/mach_ipi.h | 17 +++++++++++++----
include/asm-x86/mach_apic.h | 3 ---
7 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 5362cfd..206278f 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -41,6 +41,8 @@ #include <asm/proto.h>
#include <asm/timex.h>
#include <asm/apic.h>

+#include <mach_ipi.h>
+
int disable_apic_timer __cpuinitdata;
static int apic_calibrate_pmtmr __initdata;
int disable_apic;
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index 9a5fa0a..2251d0a 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -26,11 +26,7 @@ #include <asm/hpet.h>
#include <linux/kdebug.h>
#include <asm/smp.h>

-#ifdef CONFIG_X86_32
#include <mach_ipi.h>
-#else
-#include <asm/mach_apic.h>
-#endif

/* This keeps a track of which one is crashing cpu. */
static int crashing_cpu;
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 1627c0d..7d5cdf3 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -50,6 +50,8 @@ #include <asm/nmi.h>
#include <asm/msidef.h>
#include <asm/hypertransport.h>

+#include <mach_ipi.h>
+
struct irq_cfg {
cpumask_t domain;
cpumask_t old_domain;
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index 16c52aa..8f75893 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -26,12 +26,8 @@ #include <asm/mtrr.h>
#include <asm/tlbflush.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
-#ifdef CONFIG_X86_32
-#include <mach_apic.h>
#include <mach_ipi.h>
-#else
-#include <asm/mach_apic.h>
-#endif
+#include <mach_apic.h>
/*
* Some notes on x86 processor bugs affecting SMP operation:
*
diff --git a/arch/x86/kernel/tlb_64.c b/arch/x86/kernel/tlb_64.c
index 615d848..1558e51 100644
--- a/arch/x86/kernel/tlb_64.c
+++ b/arch/x86/kernel/tlb_64.c
@@ -11,11 +11,12 @@ #include <linux/interrupt.h>
#include <asm/mtrr.h>
#include <asm/pgalloc.h>
#include <asm/tlbflush.h>
-#include <asm/mach_apic.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
#include <asm/apicdef.h>
#include <asm/idle.h>
+
+#include <mach_ipi.h>
/*
* Smarter SMP flushing macros.
* c/o Linus Torvalds.
diff --git a/include/asm-x86/mach-default/mach_ipi.h b/include/asm-x86/mach-default/mach_ipi.h
index 0dba244..f00467b 100644
--- a/include/asm-x86/mach-default/mach_ipi.h
+++ b/include/asm-x86/mach-default/mach_ipi.h
@@ -9,10 +9,7 @@ void __send_IPI_shortcut(unsigned int sh

extern int no_broadcast;

-static inline void send_IPI_mask(cpumask_t mask, int vector)
-{
- send_IPI_mask_bitmask(mask, vector);
-}
+void send_IPI_mask(cpumask_t mask, int vector);

static inline void __local_send_IPI_allbutself(int vector)
{
@@ -33,6 +30,17 @@ static inline void __local_send_IPI_all(
__send_IPI_shortcut(APIC_DEST_ALLINC, vector);
}

+#ifdef CONFIG_X86_64
+#include <asm/genapic.h>
+#define send_IPI_mask (genapic->send_IPI_mask)
+#define send_IPI_allbutself (genapic->send_IPI_allbutself)
+#define send_IPI_all (genapic->send_IPI_all)
+#else
+static inline void send_IPI_mask(cpumask_t mask, int vector);
+{
+ send_IPI_mask_bitmask(mask, vector);
+}
+
static inline void send_IPI_allbutself(int vector)
{
/*
@@ -50,5 +58,6 @@ static inline void send_IPI_all(int vect
{
__local_send_IPI_all(vector);
}
+#endif

#endif /* __ASM_MACH_IPI_H */
diff --git a/include/asm-x86/mach_apic.h b/include/asm-x86/mach_apic.h
index 7b7115a..1bc68c0 100644
--- a/include/asm-x86/mach_apic.h
+++ b/include/asm-x86/mach_apic.h
@@ -20,9 +20,6 @@ #define TARGET_CPUS (genapic->target_c
#define vector_allocation_domain (genapic->vector_allocation_domain)
#define apic_id_registered (genapic->apic_id_registered)
#define init_apic_ldr (genapic->init_apic_ldr)
-#define send_IPI_mask (genapic->send_IPI_mask)
-#define send_IPI_allbutself (genapic->send_IPI_allbutself)
-#define send_IPI_all (genapic->send_IPI_all)
#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
#define phys_pkg_id (genapic->phys_pkg_id)

--
1.4.2


2008-03-24 19:53:50

by Glauber Costa

[permalink] [raw]
Subject: [PATCH 2/2] move apic declarations to mach_apic.h

take them out of the x86_64-specific asm/mach_apic.h

Signed-off-by: Glauber Costa <[email protected]>
---
arch/x86/kernel/apic_64.c | 2 -
arch/x86/kernel/io_apic_64.c | 2 -
arch/x86/kernel/setup_64.c | 2 -
include/asm-x86/mach-default/mach_apic.h | 80 ++++++++++++++++--------------
include/asm-x86/mach_apic.h | 26 ----------
5 files changed, 46 insertions(+), 66 deletions(-)

diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 206278f..7dd6250 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -34,7 +34,6 @@ #include <asm/mtrr.h>
#include <asm/mpspec.h>
#include <asm/hpet.h>
#include <asm/pgalloc.h>
-#include <asm/mach_apic.h>
#include <asm/nmi.h>
#include <asm/idle.h>
#include <asm/proto.h>
@@ -42,6 +41,7 @@ #include <asm/timex.h>
#include <asm/apic.h>

#include <mach_ipi.h>
+#include <mach_apic.h>

int disable_apic_timer __cpuinitdata;
static int apic_calibrate_pmtmr __initdata;
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 7d5cdf3..6dd3362 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -43,7 +43,6 @@ #include <asm/io.h>
#include <asm/smp.h>
#include <asm/desc.h>
#include <asm/proto.h>
-#include <asm/mach_apic.h>
#include <asm/acpi.h>
#include <asm/dma.h>
#include <asm/nmi.h>
@@ -51,6 +50,7 @@ #include <asm/msidef.h>
#include <asm/hypertransport.h>

#include <mach_ipi.h>
+#include <mach_apic.h>

struct irq_cfg {
cpumask_t domain;
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 3f1dc97..08f9591 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -60,7 +60,6 @@ #include <asm/mpspec.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
#include <asm/setup.h>
-#include <asm/mach_apic.h>
#include <asm/numa.h>
#include <asm/sections.h>
#include <asm/dmi.h>
@@ -69,6 +68,7 @@ #include <asm/mce.h>
#include <asm/ds.h>
#include <asm/topology.h>

+#include <mach_apic.h>
#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
#else
diff --git a/include/asm-x86/mach-default/mach_apic.h b/include/asm-x86/mach-default/mach_apic.h
index 13900e8..3f49a3a 100644
--- a/include/asm-x86/mach-default/mach_apic.h
+++ b/include/asm-x86/mach-default/mach_apic.h
@@ -14,24 +14,25 @@ #else
return cpumask_of_cpu(0);
#endif
}
-#define TARGET_CPUS (target_cpus())

#define NO_BALANCE_IRQ (0)
#define esr_disable (0)

+#ifdef CONFIG_X86_64
+#include <asm/genapic.h>
+#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
+#define INT_DEST_MODE (genapic->int_dest_mode)
+#define TARGET_CPUS (genapic->target_cpus())
+#define apic_id_registered (genapic->apic_id_registered)
+#define init_apic_ldr (genapic->init_apic_ldr)
+#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
+#define phys_pkg_id (genapic->phys_pkg_id)
+#define vector_allocation_domain (genapic->vector_allocation_domain)
+extern void setup_apic_routing(void);
+#else
#define INT_DELIVERY_MODE dest_LowestPrio
#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
-
-static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
-{
- return physid_isset(apicid, bitmap);
-}
-
-static inline unsigned long check_apicid_present(int bit)
-{
- return physid_isset(bit, phys_cpu_present_map);
-}
-
+#define TARGET_CPUS (target_cpus())
/*
* Set up the logical destination ID.
*
@@ -49,32 +50,52 @@ static inline void init_apic_ldr(void)
apic_write_around(APIC_LDR, val);
}

-static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
+static inline int apic_id_registered(void)
{
- return phys_map;
+ return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map);
+}
+
+static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
+{
+ return cpus_addr(cpumask)[0];
+}
+
+static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
+{
+ return cpuid_apic >> index_msb;
}

-#ifdef CONFIG_X86_64
-extern void setup_apic_routing(void);
-#else
static inline void setup_apic_routing(void)
{
printk("Enabling APIC mode: %s. Using %d I/O APICs\n",
"Flat", nr_ioapics);
}
-#endif

-static inline int multi_timer_check(int apic, int irq)
+static inline int apicid_to_node(int logical_apicid)
{
return 0;
}
+#endif

-#ifdef CONFIG_X86_32
-static inline int apicid_to_node(int logical_apicid)
+static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
+{
+ return physid_isset(apicid, bitmap);
+}
+
+static inline unsigned long check_apicid_present(int bit)
+{
+ return physid_isset(bit, phys_cpu_present_map);
+}
+
+static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
+{
+ return phys_map;
+}
+
+static inline int multi_timer_check(int apic, int irq)
{
return 0;
}
-#endif

/* Mapping from cpu number to logical apicid */
static inline int cpu_to_logical_apicid(int cpu)
@@ -109,23 +130,8 @@ static inline int check_phys_apicid_pres
return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
}

-static inline int apic_id_registered(void)
-{
- return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map);
-}
-
-static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
-{
- return cpus_addr(cpumask)[0];
-}
-
static inline void enable_apic_mode(void)
{
}

-static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
-{
- return cpuid_apic >> index_msb;
-}
-
#endif /* __ASM_MACH_APIC_H */
diff --git a/include/asm-x86/mach_apic.h b/include/asm-x86/mach_apic.h
deleted file mode 100644
index 1bc68c0..0000000
--- a/include/asm-x86/mach_apic.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef __ASM_MACH_APIC_H
-#define __ASM_MACH_APIC_H
-
-/*
- * Copyright 2004 James Cleverdon, IBM.
- * Subject to the GNU Public License, v.2
- *
- * Generic APIC sub-arch defines.
- *
- * Hacked for x86-64 by James Cleverdon from i386 architecture code by
- * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
- * James Cleverdon.
- */
-
-#include <asm/genapic.h>
-
-#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
-#define INT_DEST_MODE (genapic->int_dest_mode)
-#define TARGET_CPUS (genapic->target_cpus())
-#define vector_allocation_domain (genapic->vector_allocation_domain)
-#define apic_id_registered (genapic->apic_id_registered)
-#define init_apic_ldr (genapic->init_apic_ldr)
-#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
-#define phys_pkg_id (genapic->phys_pkg_id)
-
-#endif /* __ASM_MACH_APIC_H */
--
1.4.2

2008-03-24 22:44:24

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH 2/2] move apic declarations to mach_apic.h

On Mon, Mar 24, 2008 at 12:52 PM, Glauber Costa <[email protected]> wrote:
> take them out of the x86_64-specific asm/mach_apic.h
>
> Signed-off-by: Glauber Costa <[email protected]>
> ---
> arch/x86/kernel/apic_64.c | 2 -
> arch/x86/kernel/io_apic_64.c | 2 -
> arch/x86/kernel/setup_64.c | 2 -
> include/asm-x86/mach-default/mach_apic.h | 80 ++++++++++++++++--------------
> include/asm-x86/mach_apic.h | 26 ----------
> 5 files changed, 46 insertions(+), 66 deletions(-)
>
> diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
> index 206278f..7dd6250 100644
> --- a/arch/x86/kernel/apic_64.c
> +++ b/arch/x86/kernel/apic_64.c
> @@ -34,7 +34,6 @@ #include <asm/mtrr.h>
> #include <asm/mpspec.h>
> #include <asm/hpet.h>
> #include <asm/pgalloc.h>
> -#include <asm/mach_apic.h>
> #include <asm/nmi.h>
> #include <asm/idle.h>
> #include <asm/proto.h>
> @@ -42,6 +41,7 @@ #include <asm/timex.h>
> #include <asm/apic.h>
>
> #include <mach_ipi.h>
> +#include <mach_apic.h>

good. include/asm-x86/mach_apic.h is gone.

YH

2008-03-25 14:38:36

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 1/2] move ipi definitions to mach_ipi.h


* Glauber Costa <[email protected]> wrote:

> take them out of the x86_64-only asm/mach_apic.h

thanks, applied.

Ingo

2008-03-25 14:38:51

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 2/2] move apic declarations to mach_apic.h


* Glauber Costa <[email protected]> wrote:

> take them out of the x86_64-specific asm/mach_apic.h

thanks, applied.

Ingo

2008-03-25 15:07:34

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 1/2] move ipi definitions to mach_ipi.h


* Glauber Costa <[email protected]> wrote:

> +++ b/include/asm-x86/mach-default/mach_ipi.h

> -static inline void send_IPI_mask(cpumask_t mask, int vector)
> -{
> - send_IPI_mask_bitmask(mask, vector);
> -}
> +void send_IPI_mask(cpumask_t mask, int vector);

> +#else
> +static inline void send_IPI_mask(cpumask_t mask, int vector);
> +{
> + send_IPI_mask_bitmask(mask, vector);
> +}

this trivially doesnt build on 32-bit, for multiple reasons...

Ingo

2008-03-25 16:30:00

by Glauber Costa

[permalink] [raw]
Subject: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h

take them out of the x86_64-specific asm/mach_apic.h

Signed-off-by: Glauber Costa <[email protected]>
---
arch/x86/kernel/apic_64.c | 2 +-
arch/x86/kernel/cpu/amd.c | 2 +-
arch/x86/kernel/io_apic_64.c | 2 +-
arch/x86/kernel/setup_64.c | 2 +-
include/asm-x86/mach-default/mach_apic.h | 80 ++++++++++++++++--------------
include/asm-x86/mach_apic.h | 26 ----------
6 files changed, 47 insertions(+), 67 deletions(-)
delete mode 100644 include/asm-x86/mach_apic.h

diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 206278f..7dd6250 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -34,7 +34,6 @@
#include <asm/mpspec.h>
#include <asm/hpet.h>
#include <asm/pgalloc.h>
-#include <asm/mach_apic.h>
#include <asm/nmi.h>
#include <asm/idle.h>
#include <asm/proto.h>
@@ -42,6 +41,7 @@
#include <asm/apic.h>

#include <mach_ipi.h>
+#include <mach_apic.h>

int disable_apic_timer __cpuinitdata;
static int apic_calibrate_pmtmr __initdata;
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 33d38f8..0173065 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -4,8 +4,8 @@
#include <asm/io.h>
#include <asm/processor.h>
#include <asm/apic.h>
-#include <asm/mach_apic.h>

+#include <mach_apic.h>
#include "cpu.h"

/*
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 7d5cdf3..6dd3362 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -43,7 +43,6 @@
#include <asm/smp.h>
#include <asm/desc.h>
#include <asm/proto.h>
-#include <asm/mach_apic.h>
#include <asm/acpi.h>
#include <asm/dma.h>
#include <asm/nmi.h>
@@ -51,6 +50,7 @@
#include <asm/hypertransport.h>

#include <mach_ipi.h>
+#include <mach_apic.h>

struct irq_cfg {
cpumask_t domain;
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 3f1dc97..08f9591 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -60,7 +60,6 @@
#include <asm/mmu_context.h>
#include <asm/proto.h>
#include <asm/setup.h>
-#include <asm/mach_apic.h>
#include <asm/numa.h>
#include <asm/sections.h>
#include <asm/dmi.h>
@@ -69,6 +68,7 @@
#include <asm/ds.h>
#include <asm/topology.h>

+#include <mach_apic.h>
#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
#else
diff --git a/include/asm-x86/mach-default/mach_apic.h b/include/asm-x86/mach-default/mach_apic.h
index 13900e8..3f49a3a 100644
--- a/include/asm-x86/mach-default/mach_apic.h
+++ b/include/asm-x86/mach-default/mach_apic.h
@@ -14,24 +14,25 @@ static inline cpumask_t target_cpus(void)
return cpumask_of_cpu(0);
#endif
}
-#define TARGET_CPUS (target_cpus())

#define NO_BALANCE_IRQ (0)
#define esr_disable (0)

+#ifdef CONFIG_X86_64
+#include <asm/genapic.h>
+#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
+#define INT_DEST_MODE (genapic->int_dest_mode)
+#define TARGET_CPUS (genapic->target_cpus())
+#define apic_id_registered (genapic->apic_id_registered)
+#define init_apic_ldr (genapic->init_apic_ldr)
+#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
+#define phys_pkg_id (genapic->phys_pkg_id)
+#define vector_allocation_domain (genapic->vector_allocation_domain)
+extern void setup_apic_routing(void);
+#else
#define INT_DELIVERY_MODE dest_LowestPrio
#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
-
-static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
-{
- return physid_isset(apicid, bitmap);
-}
-
-static inline unsigned long check_apicid_present(int bit)
-{
- return physid_isset(bit, phys_cpu_present_map);
-}
-
+#define TARGET_CPUS (target_cpus())
/*
* Set up the logical destination ID.
*
@@ -49,32 +50,52 @@ static inline void init_apic_ldr(void)
apic_write_around(APIC_LDR, val);
}

-static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
+static inline int apic_id_registered(void)
{
- return phys_map;
+ return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map);
+}
+
+static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
+{
+ return cpus_addr(cpumask)[0];
+}
+
+static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
+{
+ return cpuid_apic >> index_msb;
}

-#ifdef CONFIG_X86_64
-extern void setup_apic_routing(void);
-#else
static inline void setup_apic_routing(void)
{
printk("Enabling APIC mode: %s. Using %d I/O APICs\n",
"Flat", nr_ioapics);
}
-#endif

-static inline int multi_timer_check(int apic, int irq)
+static inline int apicid_to_node(int logical_apicid)
{
return 0;
}
+#endif

-#ifdef CONFIG_X86_32
-static inline int apicid_to_node(int logical_apicid)
+static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
+{
+ return physid_isset(apicid, bitmap);
+}
+
+static inline unsigned long check_apicid_present(int bit)
+{
+ return physid_isset(bit, phys_cpu_present_map);
+}
+
+static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map)
+{
+ return phys_map;
+}
+
+static inline int multi_timer_check(int apic, int irq)
{
return 0;
}
-#endif

/* Mapping from cpu number to logical apicid */
static inline int cpu_to_logical_apicid(int cpu)
@@ -109,23 +130,8 @@ static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
}

-static inline int apic_id_registered(void)
-{
- return physid_isset(GET_APIC_ID(apic_read(APIC_ID)), phys_cpu_present_map);
-}
-
-static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
-{
- return cpus_addr(cpumask)[0];
-}
-
static inline void enable_apic_mode(void)
{
}

-static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
-{
- return cpuid_apic >> index_msb;
-}
-
#endif /* __ASM_MACH_APIC_H */
diff --git a/include/asm-x86/mach_apic.h b/include/asm-x86/mach_apic.h
deleted file mode 100644
index 1bc68c0..0000000
--- a/include/asm-x86/mach_apic.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef __ASM_MACH_APIC_H
-#define __ASM_MACH_APIC_H
-
-/*
- * Copyright 2004 James Cleverdon, IBM.
- * Subject to the GNU Public License, v.2
- *
- * Generic APIC sub-arch defines.
- *
- * Hacked for x86-64 by James Cleverdon from i386 architecture code by
- * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
- * James Cleverdon.
- */
-
-#include <asm/genapic.h>
-
-#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
-#define INT_DEST_MODE (genapic->int_dest_mode)
-#define TARGET_CPUS (genapic->target_cpus())
-#define vector_allocation_domain (genapic->vector_allocation_domain)
-#define apic_id_registered (genapic->apic_id_registered)
-#define init_apic_ldr (genapic->init_apic_ldr)
-#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
-#define phys_pkg_id (genapic->phys_pkg_id)
-
-#endif /* __ASM_MACH_APIC_H */
--
1.5.0.6

2008-03-25 16:30:28

by Glauber Costa

[permalink] [raw]
Subject: [PATCH 0/2] get rid of mach_apic.h

yeah, the last patch sent was totally brown paper bag. I sent a previous
version from the wrong machine, sorry.

ingo, the new testing also unveiled a new catch, so I'm resending _both_ patches.
please ignore both of them from the last run, and apply these instead

2008-03-25 16:30:42

by Glauber Costa

[permalink] [raw]
Subject: [PATCH 1/2] [PATCH] move ipi definitions to mach_ipi.h

take them out of the x86_64-only asm/mach_apic.h

Signed-off-by: Glauber Costa <[email protected]>
---
arch/x86/kernel/apic_64.c | 2 ++
arch/x86/kernel/crash.c | 4 ----
arch/x86/kernel/io_apic_64.c | 2 ++
arch/x86/kernel/kgdb.c | 6 +-----
arch/x86/kernel/smp.c | 6 +-----
arch/x86/kernel/tlb_64.c | 3 ++-
include/asm-x86/mach-default/mach_ipi.h | 10 ++++++++++
include/asm-x86/mach_apic.h | 3 ---
8 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c
index 5362cfd..206278f 100644
--- a/arch/x86/kernel/apic_64.c
+++ b/arch/x86/kernel/apic_64.c
@@ -41,6 +41,8 @@
#include <asm/timex.h>
#include <asm/apic.h>

+#include <mach_ipi.h>
+
int disable_apic_timer __cpuinitdata;
static int apic_calibrate_pmtmr __initdata;
int disable_apic;
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index 9a5fa0a..2251d0a 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -26,11 +26,7 @@
#include <linux/kdebug.h>
#include <asm/smp.h>

-#ifdef CONFIG_X86_32
#include <mach_ipi.h>
-#else
-#include <asm/mach_apic.h>
-#endif

/* This keeps a track of which one is crashing cpu. */
static int crashing_cpu;
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 1627c0d..7d5cdf3 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -50,6 +50,8 @@
#include <asm/msidef.h>
#include <asm/hypertransport.h>

+#include <mach_ipi.h>
+
struct irq_cfg {
cpumask_t domain;
cpumask_t old_domain;
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c
index 8c7e555..0acc610 100644
--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -46,11 +46,7 @@
#include <asm/apicdef.h>
#include <asm/system.h>

-#ifdef CONFIG_X86_32
-# include <mach_ipi.h>
-#else
-# include <asm/mach_apic.h>
-#endif
+#include <mach_ipi.h>

/*
* Put the error code here just in case the user cares:
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index 16c52aa..8f75893 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -26,12 +26,8 @@
#include <asm/tlbflush.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
-#ifdef CONFIG_X86_32
-#include <mach_apic.h>
#include <mach_ipi.h>
-#else
-#include <asm/mach_apic.h>
-#endif
+#include <mach_apic.h>
/*
* Some notes on x86 processor bugs affecting SMP operation:
*
diff --git a/arch/x86/kernel/tlb_64.c b/arch/x86/kernel/tlb_64.c
index 615d848..1558e51 100644
--- a/arch/x86/kernel/tlb_64.c
+++ b/arch/x86/kernel/tlb_64.c
@@ -11,11 +11,12 @@
#include <asm/mtrr.h>
#include <asm/pgalloc.h>
#include <asm/tlbflush.h>
-#include <asm/mach_apic.h>
#include <asm/mmu_context.h>
#include <asm/proto.h>
#include <asm/apicdef.h>
#include <asm/idle.h>
+
+#include <mach_ipi.h>
/*
* Smarter SMP flushing macros.
* c/o Linus Torvalds.
diff --git a/include/asm-x86/mach-default/mach_ipi.h b/include/asm-x86/mach-default/mach_ipi.h
index 0dba244..be32336 100644
--- a/include/asm-x86/mach-default/mach_ipi.h
+++ b/include/asm-x86/mach-default/mach_ipi.h
@@ -9,10 +9,15 @@ void __send_IPI_shortcut(unsigned int shortcut, int vector);

extern int no_broadcast;

+#ifdef CONFIG_X86_64
+#include <asm/genapic.h>
+#define send_IPI_mask (genapic->send_IPI_mask)
+#else
static inline void send_IPI_mask(cpumask_t mask, int vector)
{
send_IPI_mask_bitmask(mask, vector);
}
+#endif

static inline void __local_send_IPI_allbutself(int vector)
{
@@ -33,6 +38,10 @@ static inline void __local_send_IPI_all(int vector)
__send_IPI_shortcut(APIC_DEST_ALLINC, vector);
}

+#ifdef CONFIG_X86_64
+#define send_IPI_allbutself (genapic->send_IPI_allbutself)
+#define send_IPI_all (genapic->send_IPI_all)
+#else
static inline void send_IPI_allbutself(int vector)
{
/*
@@ -50,5 +59,6 @@ static inline void send_IPI_all(int vector)
{
__local_send_IPI_all(vector);
}
+#endif

#endif /* __ASM_MACH_IPI_H */
diff --git a/include/asm-x86/mach_apic.h b/include/asm-x86/mach_apic.h
index 7b7115a..1bc68c0 100644
--- a/include/asm-x86/mach_apic.h
+++ b/include/asm-x86/mach_apic.h
@@ -20,9 +20,6 @@
#define vector_allocation_domain (genapic->vector_allocation_domain)
#define apic_id_registered (genapic->apic_id_registered)
#define init_apic_ldr (genapic->init_apic_ldr)
-#define send_IPI_mask (genapic->send_IPI_mask)
-#define send_IPI_allbutself (genapic->send_IPI_allbutself)
-#define send_IPI_all (genapic->send_IPI_all)
#define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)
#define phys_pkg_id (genapic->phys_pkg_id)

--
1.5.0.6

2008-03-25 16:34:49

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 0/2] get rid of mach_apic.h


* Glauber Costa <[email protected]> wrote:

> yeah, the last patch sent was totally brown paper bag. I sent a
> previous version from the wrong machine, sorry.
>
> ingo, the new testing also unveiled a new catch, so I'm resending
> _both_ patches. please ignore both of them from the last run, and
> apply these instead

thanks, applied.

Ingo

2008-03-25 19:59:22

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h


* Glauber Costa <[email protected]> wrote:

> take them out of the x86_64-specific asm/mach_apic.h

this broke the 32-bit build:

In file included from arch/x86/kernel/cpu/amd.c:8:
include/asm-x86/mach-default/mach_apic.h: In function 'init_apic_ldr':
include/asm-x86/mach-default/mach_apic.h:47: error: implicit declaration of function 'apic_write_around'
[...]

.config attached.

Ingo


Attachments:
(No filename) (394.00 B)
config (52.05 kB)
Download all attachments

2008-03-25 21:10:48

by Glauber Costa

[permalink] [raw]
Subject: Re: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h

Ingo Molnar wrote:
> * Glauber Costa <[email protected]> wrote:
>
>> take them out of the x86_64-specific asm/mach_apic.h
>
> this broke the 32-bit build:
>
> In file included from arch/x86/kernel/cpu/amd.c:8:
> include/asm-x86/mach-default/mach_apic.h: In function 'init_apic_ldr':
> include/asm-x86/mach-default/mach_apic.h:47: error: implicit declaration of function 'apic_write_around'
> [...]
>
> .config attached.
>
> Ingo
>
Problem is that local apic is not always present.
I'm sending a replacement.

2008-03-26 04:48:24

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h


there's another build error i found:

arch/x86/kernel/setup.c: In function 'setup_per_cpu_areas':
arch/x86/kernel/setup.c:87: error: expected ',' or ';' before '__attribute__'

config attached. This is with and without your second patch. (i.e.
independent problem, introduced by the 1/2 patch)

Ingo


Attachments:
(No filename) (305.00 B)
config (48.98 kB)
Download all attachments

2008-03-26 04:49:29

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h


* Ingo Molnar <[email protected]> wrote:

> there's another build error i found:
>
> arch/x86/kernel/setup.c: In function 'setup_per_cpu_areas':
> arch/x86/kernel/setup.c:87: error: expected ',' or ';' before '__attribute__'
>
> config attached. This is with and without your second patch. (i.e.
> independent problem, introduced by the 1/2 patch)

sorry - this is not your build bug :-)

Ingo

2008-03-26 11:49:43

by Glauber Costa

[permalink] [raw]
Subject: Re: [PATCH 2/2] [PATCH] move apic declarations to mach_apic.h

On Wed, Mar 26, 2008 at 1:49 AM, Ingo Molnar <[email protected]> wrote:
>
>
> * Ingo Molnar <[email protected]> wrote:
>
> > there's another build error i found:
> >
> > arch/x86/kernel/setup.c: In function 'setup_per_cpu_areas':
> > arch/x86/kernel/setup.c:87: error: expected ',' or ';' before '__attribute__'
> >
> > config attached. This is with and without your second patch. (i.e.
> > independent problem, introduced by the 1/2 patch)
>
> sorry - this is not your build bug :-)
>

Heh. My reaction when I saw it was "Oh no, I can't believe it!"

--
Glauber Costa.
"Free as in Freedom"
http://glommer.net

"The less confident you are, the more serious you have to act."