x86: make UV support configurable
authorNick Piggin <npiggin@suse.de>
Tue, 20 Jan 2009 03:36:04 +0000 (04:36 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 21 Jan 2009 12:00:42 +0000 (13:00 +0100)
Make X86 SGI Ultraviolet support configurable. Saves about 13K of text size
on my modest config.

   text    data     bss     dec     hex filename
6770537 1158680  694356 8623573  8395d5 vmlinux
6757492 1157664  694228 8609384  835e68 vmlinux.nouv

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/Kconfig
arch/x86/include/asm/uv/uv.h
arch/x86/kernel/Makefile
arch/x86/kernel/efi.c
arch/x86/kernel/entry_64.S
arch/x86/kernel/genapic_64.c
arch/x86/kernel/io_apic.c
drivers/misc/Kconfig

index ef27aed6ff7402ea8fbe5312ec8ca20f2d6b59bd..5a29b792cb84542da0c4e9964d549b21cc9c41e6 100644 (file)
@@ -391,6 +391,13 @@ config X86_RDC321X
          as R-8610-(G).
          If you don't have one of these chips, you should say N here.
 
+config X86_UV
+       bool "SGI Ultraviolet"
+       depends on X86_64
+       help
+         This option is needed in order to support SGI Ultraviolet systems.
+         If you don't have one of these, you should say N here.
+
 config SCHED_OMIT_FRAME_POINTER
        def_bool y
        prompt "Single-depth WCHAN output"
index dce5fe350134f75188363a7bcbe72d8117d0a091..8ac1d7e312f34a6c5c4e7324ace857e7ee75e040 100644 (file)
@@ -3,7 +3,7 @@
 
 enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
 
-#ifdef CONFIG_X86_64
+#ifdef CONFIG_X86_UV
 
 extern enum uv_system_type get_uv_system_type(void);
 extern int is_uv_system(void);
@@ -15,7 +15,7 @@ extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
                                                 unsigned long va,
                                                 unsigned int cpu);
 
-#else  /* X86_64 */
+#else  /* X86_UV */
 
 static inline enum uv_system_type get_uv_system_type(void) { return UV_NONE; }
 static inline int is_uv_system(void)   { return 0; }
@@ -28,6 +28,6 @@ uv_flush_tlb_others(const struct cpumask *cpumask, struct mm_struct *mm,
                    unsigned long va, unsigned int cpu)
 { return cpumask; }
 
-#endif /* X86_64 */
+#endif /* X86_UV */
 
 #endif /* _ASM_X86_UV_UV_H */
index 0b3272f58bd963800d57fbf804836f21c93a5f1e..a99437c965cc049eaac23685ad28ae4d5220eb57 100644 (file)
@@ -115,10 +115,11 @@ obj-$(CONFIG_SWIOTLB)                     += pci-swiotlb_64.o # NB rename without _64
 ###
 # 64 bit specific files
 ifeq ($(CONFIG_X86_64),y)
-        obj-y                          += genapic_64.o genapic_flat_64.o genx2apic_uv_x.o tlb_uv.o
-       obj-y                           += bios_uv.o uv_irq.o uv_sysfs.o
+        obj-y                          += genapic_64.o genapic_flat_64.o
         obj-y                          += genx2apic_cluster.o
         obj-y                          += genx2apic_phys.o
+       obj-$(CONFIG_X86_UV)            += genx2apic_uv_x.o tlb_uv.o
+       obj-$(CONFIG_X86_UV)            += bios_uv.o uv_irq.o uv_sysfs.o
         obj-$(CONFIG_X86_PM_TIMER)     += pmtimer_64.o
         obj-$(CONFIG_AUDIT)            += audit_64.o
 
index 1119d247fe11d87aceaa2e42f770bd773a9c1ea2..b205272ad3947e8318659720f73917df8a7bcde5 100644 (file)
@@ -366,10 +366,12 @@ void __init efi_init(void)
                                        SMBIOS_TABLE_GUID)) {
                        efi.smbios = config_tables[i].table;
                        printk(" SMBIOS=0x%lx ", config_tables[i].table);
+#ifdef CONFIG_X86_UV
                } else if (!efi_guidcmp(config_tables[i].guid,
                                        UV_SYSTEM_TABLE_GUID)) {
                        efi.uv_systab = config_tables[i].table;
                        printk(" UVsystab=0x%lx ", config_tables[i].table);
+#endif
                } else if (!efi_guidcmp(config_tables[i].guid,
                                        HCDP_TABLE_GUID)) {
                        efi.hcdp = config_tables[i].table;
index c52b60919163af41af58a7068fcba266fb0c657e..a52703864a161d3f25d904188634001a8573885f 100644 (file)
@@ -982,8 +982,10 @@ apicinterrupt IRQ_MOVE_CLEANUP_VECTOR \
        irq_move_cleanup_interrupt smp_irq_move_cleanup_interrupt
 #endif
 
+#ifdef CONFIG_X86_UV
 apicinterrupt UV_BAU_MESSAGE \
        uv_bau_message_intr1 uv_bau_message_interrupt
+#endif
 apicinterrupt LOCAL_TIMER_VECTOR \
        apic_timer_interrupt smp_apic_timer_interrupt
 
index 2bced78b0b8e85d6317c729c9554919cac2eb67b..e656c272115402e21d6a7cf996099e165dacad6d 100644 (file)
@@ -32,7 +32,9 @@ extern struct genapic apic_x2apic_cluster;
 struct genapic __read_mostly *genapic = &apic_flat;
 
 static struct genapic *apic_probe[] __initdata = {
+#ifdef CONFIG_X86_UV
        &apic_x2apic_uv_x,
+#endif
        &apic_x2apic_phys,
        &apic_x2apic_cluster,
        &apic_physflat,
index f796603907243fe3f32f703140985392c134a25c..e4d36bd56b62e7c4e402232175e470750121e7a3 100644 (file)
@@ -3765,7 +3765,7 @@ int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev)
 }
 #endif /* CONFIG_HT_IRQ */
 
-#ifdef CONFIG_X86_64
+#ifdef CONFIG_X86_UV
 /*
  * Re-target the irq to the specified CPU and enable the specified MMR located
  * on the specified blade to allow the sending of MSIs to the specified CPU.
index 419c378bd24b334d5645fa6a35ef5a3b8c158dd0..abcb8459254e6c7a95082550ed36ae5d99a7ec9c 100644 (file)
@@ -170,7 +170,7 @@ config ENCLOSURE_SERVICES
 config SGI_XP
        tristate "Support communication between SGI SSIs"
        depends on NET
-       depends on (IA64_GENERIC || IA64_SGI_SN2 || IA64_SGI_UV || X86_64) && SMP
+       depends on (IA64_GENERIC || IA64_SGI_SN2 || IA64_SGI_UV || X86_UV) && SMP
        select IA64_UNCACHED_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
        select GENERIC_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
        select SGI_GRU if (IA64_GENERIC || IA64_SGI_UV || X86_64) && SMP
@@ -197,7 +197,7 @@ config HP_ILO
 
 config SGI_GRU
        tristate "SGI GRU driver"
-       depends on (X86_64 || IA64_SGI_UV || IA64_GENERIC) && SMP
+       depends on (X86_UV || IA64_SGI_UV || IA64_GENERIC) && SMP
        default n
        select MMU_NOTIFIER
        ---help---