Commit 03b486322e994dde49e67aedb391867b7cf28822

Authored by Nick Piggin
Committed by Ingo Molnar
1 parent 5b221278d6

x86: make UV support configurable

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>

Showing 8 changed files with 22 additions and 8 deletions Side-by-side Diff

... ... @@ -391,6 +391,13 @@
391 391 as R-8610-(G).
392 392 If you don't have one of these chips, you should say N here.
393 393  
  394 +config X86_UV
  395 + bool "SGI Ultraviolet"
  396 + depends on X86_64
  397 + help
  398 + This option is needed in order to support SGI Ultraviolet systems.
  399 + If you don't have one of these, you should say N here.
  400 +
394 401 config SCHED_OMIT_FRAME_POINTER
395 402 def_bool y
396 403 prompt "Single-depth WCHAN output"
arch/x86/include/asm/uv/uv.h
... ... @@ -3,7 +3,7 @@
3 3  
4 4 enum uv_system_type {UV_NONE, UV_LEGACY_APIC, UV_X2APIC, UV_NON_UNIQUE_APIC};
5 5  
6   -#ifdef CONFIG_X86_64
  6 +#ifdef CONFIG_X86_UV
7 7  
8 8 extern enum uv_system_type get_uv_system_type(void);
9 9 extern int is_uv_system(void);
... ... @@ -15,7 +15,7 @@
15 15 unsigned long va,
16 16 unsigned int cpu);
17 17  
18   -#else /* X86_64 */
  18 +#else /* X86_UV */
19 19  
20 20 static inline enum uv_system_type get_uv_system_type(void) { return UV_NONE; }
21 21 static inline int is_uv_system(void) { return 0; }
... ... @@ -28,7 +28,7 @@
28 28 unsigned long va, unsigned int cpu)
29 29 { return cpumask; }
30 30  
31   -#endif /* X86_64 */
  31 +#endif /* X86_UV */
32 32  
33 33 #endif /* _ASM_X86_UV_UV_H */
arch/x86/kernel/Makefile
... ... @@ -115,10 +115,11 @@
115 115 ###
116 116 # 64 bit specific files
117 117 ifeq ($(CONFIG_X86_64),y)
118   - obj-y += genapic_64.o genapic_flat_64.o genx2apic_uv_x.o tlb_uv.o
119   - obj-y += bios_uv.o uv_irq.o uv_sysfs.o
  118 + obj-y += genapic_64.o genapic_flat_64.o
120 119 obj-y += genx2apic_cluster.o
121 120 obj-y += genx2apic_phys.o
  121 + obj-$(CONFIG_X86_UV) += genx2apic_uv_x.o tlb_uv.o
  122 + obj-$(CONFIG_X86_UV) += bios_uv.o uv_irq.o uv_sysfs.o
122 123 obj-$(CONFIG_X86_PM_TIMER) += pmtimer_64.o
123 124 obj-$(CONFIG_AUDIT) += audit_64.o
124 125  
arch/x86/kernel/efi.c
... ... @@ -366,10 +366,12 @@
366 366 SMBIOS_TABLE_GUID)) {
367 367 efi.smbios = config_tables[i].table;
368 368 printk(" SMBIOS=0x%lx ", config_tables[i].table);
  369 +#ifdef CONFIG_X86_UV
369 370 } else if (!efi_guidcmp(config_tables[i].guid,
370 371 UV_SYSTEM_TABLE_GUID)) {
371 372 efi.uv_systab = config_tables[i].table;
372 373 printk(" UVsystab=0x%lx ", config_tables[i].table);
  374 +#endif
373 375 } else if (!efi_guidcmp(config_tables[i].guid,
374 376 HCDP_TABLE_GUID)) {
375 377 efi.hcdp = config_tables[i].table;
arch/x86/kernel/entry_64.S
... ... @@ -982,8 +982,10 @@
982 982 irq_move_cleanup_interrupt smp_irq_move_cleanup_interrupt
983 983 #endif
984 984  
  985 +#ifdef CONFIG_X86_UV
985 986 apicinterrupt UV_BAU_MESSAGE \
986 987 uv_bau_message_intr1 uv_bau_message_interrupt
  988 +#endif
987 989 apicinterrupt LOCAL_TIMER_VECTOR \
988 990 apic_timer_interrupt smp_apic_timer_interrupt
989 991  
arch/x86/kernel/genapic_64.c
... ... @@ -32,7 +32,9 @@
32 32 struct genapic __read_mostly *genapic = &apic_flat;
33 33  
34 34 static struct genapic *apic_probe[] __initdata = {
  35 +#ifdef CONFIG_X86_UV
35 36 &apic_x2apic_uv_x,
  37 +#endif
36 38 &apic_x2apic_phys,
37 39 &apic_x2apic_cluster,
38 40 &apic_physflat,
arch/x86/kernel/io_apic.c
... ... @@ -3765,7 +3765,7 @@
3765 3765 }
3766 3766 #endif /* CONFIG_HT_IRQ */
3767 3767  
3768   -#ifdef CONFIG_X86_64
  3768 +#ifdef CONFIG_X86_UV
3769 3769 /*
3770 3770 * Re-target the irq to the specified CPU and enable the specified MMR located
3771 3771 * on the specified blade to allow the sending of MSIs to the specified CPU.
drivers/misc/Kconfig
... ... @@ -170,7 +170,7 @@
170 170 config SGI_XP
171 171 tristate "Support communication between SGI SSIs"
172 172 depends on NET
173   - depends on (IA64_GENERIC || IA64_SGI_SN2 || IA64_SGI_UV || X86_64) && SMP
  173 + depends on (IA64_GENERIC || IA64_SGI_SN2 || IA64_SGI_UV || X86_UV) && SMP
174 174 select IA64_UNCACHED_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
175 175 select GENERIC_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
176 176 select SGI_GRU if (IA64_GENERIC || IA64_SGI_UV || X86_64) && SMP
... ... @@ -197,7 +197,7 @@
197 197  
198 198 config SGI_GRU
199 199 tristate "SGI GRU driver"
200   - depends on (X86_64 || IA64_SGI_UV || IA64_GENERIC) && SMP
  200 + depends on (X86_UV || IA64_SGI_UV || IA64_GENERIC) && SMP
201 201 default n
202 202 select MMU_NOTIFIER
203 203 ---help---