x64, x2apic/intr-remap: introcude self IPI to genapic routines
authorSuresh Siddha <suresh.b.siddha@intel.com>
Thu, 10 Jul 2008 18:16:53 +0000 (11:16 -0700)
committerIngo Molnar <mingo@elte.hu>
Sat, 12 Jul 2008 06:45:02 +0000 (08:45 +0200)
Introduce self IPI op for genapic.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: akpm@linux-foundation.org
Cc: arjan@linux.intel.com
Cc: andi@firstfloor.org
Cc: ebiederm@xmission.com
Cc: jbarnes@virtuousgeek.org
Cc: steiner@sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/genapic_64.c
arch/x86/kernel/genapic_flat_64.c
include/asm-x86/genapic_64.h
include/asm-x86/hw_irq.h
include/asm-x86/mach-default/mach_apic.h

index 7414871751a735630a9428803384a1191d07c737..6657de609dcbc211d4c5df10ab8ab694d53e0588 100644 (file)
@@ -61,7 +61,7 @@ void __init setup_apic_routing(void)
 
 /* Same for both flat and physical. */
 
-void send_IPI_self(int vector)
+void apic_send_IPI_self(int vector)
 {
        __send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
 }
index 400ed8df8b4e1b6f90386569df9fd8f8ce33817c..735586822135b4c891cddfe0eb0b82e6477955b9 100644 (file)
@@ -131,6 +131,7 @@ struct genapic apic_flat =  {
        .send_IPI_all = flat_send_IPI_all,
        .send_IPI_allbutself = flat_send_IPI_allbutself,
        .send_IPI_mask = flat_send_IPI_mask,
+       .send_IPI_self = apic_send_IPI_self,
        .cpu_mask_to_apicid = flat_cpu_mask_to_apicid,
        .phys_pkg_id = phys_pkg_id,
        .read_apic_id = read_xapic_id,
@@ -196,6 +197,7 @@ struct genapic apic_physflat =  {
        .send_IPI_all = physflat_send_IPI_all,
        .send_IPI_allbutself = physflat_send_IPI_allbutself,
        .send_IPI_mask = physflat_send_IPI_mask,
+       .send_IPI_self = apic_send_IPI_self,
        .cpu_mask_to_apicid = physflat_cpu_mask_to_apicid,
        .phys_pkg_id = phys_pkg_id,
        .read_apic_id = read_xapic_id,
index d567abc347a94edfa05f796f54b31992725a27a3..6777d71aabc9adbe38de834bd4e2dcbc373e8c8f 100644 (file)
@@ -24,6 +24,7 @@ struct genapic {
        void (*send_IPI_mask)(cpumask_t mask, int vector);
        void (*send_IPI_allbutself)(int vector);
        void (*send_IPI_all)(int vector);
+       void (*send_IPI_self)(int vector);
        /* */
        unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask);
        unsigned int (*phys_pkg_id)(int index_msb);
@@ -36,6 +37,7 @@ extern struct genapic apic_flat;
 extern struct genapic apic_physflat;
 extern int acpi_madt_oem_check(char *, char *);
 
+extern void apic_send_IPI_self(int vector);
 enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
 extern enum uv_system_type get_uv_system_type(void);
 extern int is_uv_system(void);
index 18f067c310f7880be0f8629e45a91add4b380abb..2ae47e7c106378e0f74db849bc751be302986ac0 100644 (file)
@@ -72,7 +72,9 @@ extern void enable_IO_APIC(void);
 #endif
 
 /* IPI functions */
+#ifdef CONFIG_X86_32
 extern void send_IPI_self(int vector);
+#endif
 extern void send_IPI(int dest, int vector);
 
 /* Statistics */
index d172c554ab9fa87cb83399849b232b24d5966a5e..e06d23975d6ab25b09a340f6c5f9baa20bc8f600 100644 (file)
@@ -31,6 +31,7 @@ static inline cpumask_t target_cpus(void)
 #define phys_pkg_id    (genapic->phys_pkg_id)
 #define vector_allocation_domain    (genapic->vector_allocation_domain)
 #define read_apic_id  (genapic->read_apic_id)
+#define send_IPI_self (genapic->send_IPI_self)
 extern void setup_apic_routing(void);
 #else
 #define INT_DELIVERY_MODE dest_LowestPrio