[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [IA64] redefine raw_smp_processor_id()



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID d44e8ace51a33fe966f037fe04a5446096402b28
# Parent  a2bb5a3242a1449c132cbd64950582d054c2a627
[IA64] redefine raw_smp_processor_id()

There are two definitions of raw_smp_processor_id()
One is in file xen/include/asm-ia64/linux/asm/smp.h
        #define raw_smp_processor_id() (current_thread_info()->cpu)
The other is in file /xen/include/asm-ia64/config.h
        #define raw_smp_processor_id()   current->processor
In fact, the first one takes effect, that's not correct.

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>

diff -r a2bb5a3242a1 -r d44e8ace51a3 xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     Fri Feb 24 17:50:27 2006
+++ b/xen/include/asm-ia64/config.h     Fri Feb 24 18:08:51 2006
@@ -293,11 +293,11 @@
 #endif /* __XEN_IA64_CONFIG_H__ */
 
 // needed for include/xen/smp.h
-#ifdef CONFIG_SMP
-#define raw_smp_processor_id() current->processor
-#else
-#define raw_smp_processor_id() 0
-#endif
+//#ifdef CONFIG_SMP
+//#define raw_smp_processor_id()       current->processor
+//#else
+//#define raw_smp_processor_id()       0
+//#endif
 
 
 #ifndef __ASSEMBLY__
diff -r a2bb5a3242a1 -r d44e8ace51a3 
xen/include/asm-ia64/linux-xen/asm/README.origin
--- a/xen/include/asm-ia64/linux-xen/asm/README.origin  Fri Feb 24 17:50:27 2006
+++ b/xen/include/asm-ia64/linux-xen/asm/README.origin  Fri Feb 24 18:08:51 2006
@@ -17,6 +17,7 @@
 pgtable.h              -> linux/include/asm-ia64/pgtable.h
 processor.h            -> linux/include/asm-ia64/processor.h
 ptrace.h               -> linux/include/asm-ia64/ptrace.h
+smp.h                  -> linux/include/asm-ia64/smp.h
 spinlock.h             -> linux/include/asm-ia64/spinlock.h
 system.h               -> linux/include/asm-ia64/system.h
 tlbflush.h             -> linux/include/asm-ia64/tlbflush.h
diff -r a2bb5a3242a1 -r d44e8ace51a3 
xen/include/asm-ia64/linux/asm/README.origin
--- a/xen/include/asm-ia64/linux/asm/README.origin      Fri Feb 24 17:50:27 2006
+++ b/xen/include/asm-ia64/linux/asm/README.origin      Fri Feb 24 18:08:51 2006
@@ -46,7 +46,6 @@
 sections.h             -> linux/include/asm-ia64/sections.h
 semaphore.h            -> linux/include/asm-ia64/semaphore.h
 setup.h                        -> linux/include/asm-ia64/setup.h
-smp.h                  -> linux/include/asm-ia64/smp.h
 string.h               -> linux/include/asm-ia64/string.h
 thread_info.h          -> linux/include/asm-ia64/thread_info.h
 timex.h                        -> linux/include/asm-ia64/timex.h
diff -r a2bb5a3242a1 -r d44e8ace51a3 xen/include/asm-ia64/linux-xen/asm/smp.h
--- /dev/null   Fri Feb 24 17:50:27 2006
+++ b/xen/include/asm-ia64/linux-xen/asm/smp.h  Fri Feb 24 18:08:51 2006
@@ -0,0 +1,143 @@
+/*
+ * SMP Support
+ *
+ * Copyright (C) 1999 VA Linux Systems
+ * Copyright (C) 1999 Walt Drummond <drummond@xxxxxxxxxxx>
+ * (c) Copyright 2001-2003, 2005 Hewlett-Packard Development Company, L.P.
+ *     David Mosberger-Tang <davidm@xxxxxxxxxx>
+ *     Bjorn Helgaas <bjorn.helgaas@xxxxxx>
+ */
+#ifndef _ASM_IA64_SMP_H
+#define _ASM_IA64_SMP_H
+
+#include <linux/config.h>
+#include <linux/init.h>
+#include <linux/threads.h>
+#include <linux/kernel.h>
+#include <linux/cpumask.h>
+
+#include <asm/bitops.h>
+#include <asm/io.h>
+#include <asm/param.h>
+#include <asm/processor.h>
+#include <asm/ptrace.h>
+
+static inline unsigned int
+ia64_get_lid (void)
+{
+       union {
+               struct {
+                       unsigned long reserved : 16;
+                       unsigned long eid : 8;
+                       unsigned long id : 8;
+                       unsigned long ignored : 32;
+               } f;
+               unsigned long bits;
+       } lid;
+
+       lid.bits = ia64_getreg(_IA64_REG_CR_LID);
+       return lid.f.id << 8 | lid.f.eid;
+}
+
+#ifdef CONFIG_SMP
+
+#define XTP_OFFSET             0x1e0008
+
+#define SMP_IRQ_REDIRECTION    (1 << 0)
+#define SMP_IPI_REDIRECTION    (1 << 1)
+
+#ifdef XEN
+#define raw_smp_processor_id() (current->processor)
+#else
+#define raw_smp_processor_id() (current_thread_info()->cpu)
+#endif
+
+extern struct smp_boot_data {
+       int cpu_count;
+       int cpu_phys_id[NR_CPUS];
+} smp_boot_data __initdata;
+
+extern char no_int_routing __devinitdata;
+
+extern cpumask_t cpu_online_map;
+extern cpumask_t cpu_core_map[NR_CPUS];
+extern cpumask_t cpu_sibling_map[NR_CPUS];
+extern int smp_num_siblings;
+extern int smp_num_cpucores;
+extern void __iomem *ipi_base_addr;
+extern unsigned char smp_int_redirect;
+
+extern volatile int ia64_cpu_to_sapicid[];
+#define cpu_physical_id(i)     ia64_cpu_to_sapicid[i]
+
+extern unsigned long ap_wakeup_vector;
+
+/*
+ * Function to map hard smp processor id to logical id.  Slow, so don't use 
this in
+ * performance-critical code.
+ */
+static inline int
+cpu_logical_id (int cpuid)
+{
+       int i;
+
+       for (i = 0; i < NR_CPUS; ++i)
+               if (cpu_physical_id(i) == cpuid)
+                       break;
+       return i;
+}
+
+/*
+ * XTP control functions:
+ *     min_xtp   : route all interrupts to this CPU
+ *     normal_xtp: nominal XTP value
+ *     max_xtp   : never deliver interrupts to this CPU.
+ */
+
+static inline void
+min_xtp (void)
+{
+       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
+               writeb(0x00, ipi_base_addr + XTP_OFFSET); /* XTP to min */
+}
+
+static inline void
+normal_xtp (void)
+{
+       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
+               writeb(0x08, ipi_base_addr + XTP_OFFSET); /* XTP normal */
+}
+
+static inline void
+max_xtp (void)
+{
+       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
+               writeb(0x0f, ipi_base_addr + XTP_OFFSET); /* Set XTP to max */
+}
+
+#define hard_smp_processor_id()                ia64_get_lid()
+
+/* Upping and downing of CPUs */
+extern int __cpu_disable (void);
+extern void __cpu_die (unsigned int cpu);
+extern void cpu_die (void) __attribute__ ((noreturn));
+extern int __cpu_up (unsigned int cpu);
+extern void __init smp_build_cpu_map(void);
+
+extern void __init init_smp_config (void);
+extern void smp_do_timer (struct pt_regs *regs);
+
+extern int smp_call_function_single (int cpuid, void (*func) (void *info), 
void *info,
+                                    int retry, int wait);
+extern void smp_send_reschedule (int cpu);
+extern void lock_ipi_calllock(void);
+extern void unlock_ipi_calllock(void);
+extern void identify_siblings (struct cpuinfo_ia64 *);
+
+#else
+
+#define cpu_logical_id(i)              0
+#define cpu_physical_id(i)             ia64_get_lid()
+
+#endif /* CONFIG_SMP */
+#endif /* _ASM_IA64_SMP_H */
diff -r a2bb5a3242a1 -r d44e8ace51a3 xen/include/asm-ia64/linux/asm/smp.h
--- a/xen/include/asm-ia64/linux/asm/smp.h      Fri Feb 24 17:50:27 2006
+++ /dev/null   Fri Feb 24 18:08:51 2006
@@ -1,139 +0,0 @@
-/*
- * SMP Support
- *
- * Copyright (C) 1999 VA Linux Systems
- * Copyright (C) 1999 Walt Drummond <drummond@xxxxxxxxxxx>
- * (c) Copyright 2001-2003, 2005 Hewlett-Packard Development Company, L.P.
- *     David Mosberger-Tang <davidm@xxxxxxxxxx>
- *     Bjorn Helgaas <bjorn.helgaas@xxxxxx>
- */
-#ifndef _ASM_IA64_SMP_H
-#define _ASM_IA64_SMP_H
-
-#include <linux/config.h>
-#include <linux/init.h>
-#include <linux/threads.h>
-#include <linux/kernel.h>
-#include <linux/cpumask.h>
-
-#include <asm/bitops.h>
-#include <asm/io.h>
-#include <asm/param.h>
-#include <asm/processor.h>
-#include <asm/ptrace.h>
-
-static inline unsigned int
-ia64_get_lid (void)
-{
-       union {
-               struct {
-                       unsigned long reserved : 16;
-                       unsigned long eid : 8;
-                       unsigned long id : 8;
-                       unsigned long ignored : 32;
-               } f;
-               unsigned long bits;
-       } lid;
-
-       lid.bits = ia64_getreg(_IA64_REG_CR_LID);
-       return lid.f.id << 8 | lid.f.eid;
-}
-
-#ifdef CONFIG_SMP
-
-#define XTP_OFFSET             0x1e0008
-
-#define SMP_IRQ_REDIRECTION    (1 << 0)
-#define SMP_IPI_REDIRECTION    (1 << 1)
-
-#define raw_smp_processor_id() (current_thread_info()->cpu)
-
-extern struct smp_boot_data {
-       int cpu_count;
-       int cpu_phys_id[NR_CPUS];
-} smp_boot_data __initdata;
-
-extern char no_int_routing __devinitdata;
-
-extern cpumask_t cpu_online_map;
-extern cpumask_t cpu_core_map[NR_CPUS];
-extern cpumask_t cpu_sibling_map[NR_CPUS];
-extern int smp_num_siblings;
-extern int smp_num_cpucores;
-extern void __iomem *ipi_base_addr;
-extern unsigned char smp_int_redirect;
-
-extern volatile int ia64_cpu_to_sapicid[];
-#define cpu_physical_id(i)     ia64_cpu_to_sapicid[i]
-
-extern unsigned long ap_wakeup_vector;
-
-/*
- * Function to map hard smp processor id to logical id.  Slow, so don't use 
this in
- * performance-critical code.
- */
-static inline int
-cpu_logical_id (int cpuid)
-{
-       int i;
-
-       for (i = 0; i < NR_CPUS; ++i)
-               if (cpu_physical_id(i) == cpuid)
-                       break;
-       return i;
-}
-
-/*
- * XTP control functions:
- *     min_xtp   : route all interrupts to this CPU
- *     normal_xtp: nominal XTP value
- *     max_xtp   : never deliver interrupts to this CPU.
- */
-
-static inline void
-min_xtp (void)
-{
-       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
-               writeb(0x00, ipi_base_addr + XTP_OFFSET); /* XTP to min */
-}
-
-static inline void
-normal_xtp (void)
-{
-       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
-               writeb(0x08, ipi_base_addr + XTP_OFFSET); /* XTP normal */
-}
-
-static inline void
-max_xtp (void)
-{
-       if (smp_int_redirect & SMP_IRQ_REDIRECTION)
-               writeb(0x0f, ipi_base_addr + XTP_OFFSET); /* Set XTP to max */
-}
-
-#define hard_smp_processor_id()                ia64_get_lid()
-
-/* Upping and downing of CPUs */
-extern int __cpu_disable (void);
-extern void __cpu_die (unsigned int cpu);
-extern void cpu_die (void) __attribute__ ((noreturn));
-extern int __cpu_up (unsigned int cpu);
-extern void __init smp_build_cpu_map(void);
-
-extern void __init init_smp_config (void);
-extern void smp_do_timer (struct pt_regs *regs);
-
-extern int smp_call_function_single (int cpuid, void (*func) (void *info), 
void *info,
-                                    int retry, int wait);
-extern void smp_send_reschedule (int cpu);
-extern void lock_ipi_calllock(void);
-extern void unlock_ipi_calllock(void);
-extern void identify_siblings (struct cpuinfo_ia64 *);
-
-#else
-
-#define cpu_logical_id(i)              0
-#define cpu_physical_id(i)             ia64_get_lid()
-
-#endif /* CONFIG_SMP */
-#endif /* _ASM_IA64_SMP_H */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.