Messages in this thread Patch in this message | | | Date | Thu, 26 Feb 2009 00:39:50 -0800 | From | Yinghai Lu <> | Subject | Re: [PATCH] x86: don't compile vsmp_64 for 32bit |
| |
Ravikiran G Thirumalai wrote: > On Wed, Feb 25, 2009 at 09:20:50PM -0800, Yinghai Lu wrote: >> Impact: cleanup >> >> that is only needed when CONFIG_X86_VSMP is defined with 64bit >> also remove dead code about PCI, because CONFIG_X86_VSMP depends on PCI >> >> Signed-off-by: Yinghai Lu <yinghai@kernel.org> >> > > NAK! > vsmp64.c is compiled unconditionally for a reason. There are ifdefs in the > file to avoid code compilation based on config options. is_vsmp_box() is > needed even when CONFIG_X86_VSMP is not enabled, since distro kernels don't ship > with CONFIG_X86_VSMP, and since is_vsmp_box() is used to determine whether > tsc's can be considered synced or not, this is needed.
so even CONFIG_X86_VSMP is not defined, you want all x86 systems including 32bit kernel and 64bit kernel to call
static int is_vsmp = -1;
static void __init detect_vsmp_box(void) { is_vsmp = 0;
if (!early_pci_allowed()) return;
/* Check if we are running on a ScaleMP vSMPowered box */ if (read_pci_config(0, 0x1f, 0, PCI_VENDOR_ID) == (PCI_VENDOR_ID_SCALEMP | (PCI_DEVICE_ID_SCALEMP_VSMP_CTL << 16))) is_vsmp = 1; }
int is_vsmp_box(void) { if (is_vsmp != -1) return is_vsmp; else { WARN_ON_ONCE(1); return 0; } }
> > In the future, I would appreciate if you copy me on cleanups/changes involving > vsmp64.c
i didn't touch vsmp64.c
YH
> > Thanks, > Kiran > >> --- >> arch/x86/include/asm/apic.h | 7 +++++++ >> arch/x86/include/asm/setup.h | 4 ++++ >> arch/x86/kernel/Makefile | 2 +- >> arch/x86/kernel/setup.c | 2 -- >> arch/x86/kernel/vsmp_64.c | 12 +----------- >> 5 files changed, 13 insertions(+), 14 deletions(-) >> >> Index: linux-2.6/arch/x86/include/asm/apic.h >> =================================================================== >> --- linux-2.6.orig/arch/x86/include/asm/apic.h >> +++ linux-2.6/arch/x86/include/asm/apic.h >> @@ -75,7 +75,14 @@ static inline void default_inquire_remot >> #define setup_secondary_clock setup_secondary_APIC_clock >> #endif >> >> +#ifdef CONFIG_X86_VSMP >> extern int is_vsmp_box(void); >> +#else >> +static inline int is_vsmp_box(void) >> +{ >> + return 0; >> +} >> +#endif >> extern void xapic_wait_icr_idle(void); >> extern u32 safe_xapic_wait_icr_idle(void); >> extern void xapic_icr_write(u32, u32); >> Index: linux-2.6/arch/x86/include/asm/setup.h >> =================================================================== >> --- linux-2.6.orig/arch/x86/include/asm/setup.h >> +++ linux-2.6/arch/x86/include/asm/setup.h >> @@ -64,7 +64,11 @@ extern void x86_quirk_time_init(void); >> #include <asm/bootparam.h> >> >> /* Interrupt control for vSMPowered x86_64 systems */ >> +#ifdef CONFIG_X86_VSMP >> void vsmp_init(void); >> +#else >> +static inline void vsmp_init(void) { } >> +#endif >> >> void setup_bios_corruption_check(void); >> >> Index: linux-2.6/arch/x86/kernel/Makefile >> =================================================================== >> --- linux-2.6.orig/arch/x86/kernel/Makefile >> +++ linux-2.6/arch/x86/kernel/Makefile >> @@ -70,7 +70,7 @@ obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += f >> obj-$(CONFIG_KEXEC) += machine_kexec_$(BITS).o >> obj-$(CONFIG_KEXEC) += relocate_kernel_$(BITS).o crash.o >> obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o >> -obj-y += vsmp_64.o >> +obj-$(CONFIG_X86_VSMP) += vsmp_64.o >> obj-$(CONFIG_KPROBES) += kprobes.o >> obj-$(CONFIG_MODULES) += module_$(BITS).o >> obj-$(CONFIG_EFI) += efi.o efi_$(BITS).o efi_stub_$(BITS).o >> Index: linux-2.6/arch/x86/kernel/setup.c >> =================================================================== >> --- linux-2.6.orig/arch/x86/kernel/setup.c >> +++ linux-2.6/arch/x86/kernel/setup.c >> @@ -863,9 +863,7 @@ void __init setup_arch(char **cmdline_p) >> >> reserve_initrd(); >> >> -#ifdef CONFIG_X86_64 >> vsmp_init(); >> -#endif >> >> io_delay_init(); >> >> Index: linux-2.6/arch/x86/kernel/vsmp_64.c >> =================================================================== >> --- linux-2.6.orig/arch/x86/kernel/vsmp_64.c >> +++ linux-2.6/arch/x86/kernel/vsmp_64.c >> @@ -22,7 +22,7 @@ >> #include <asm/paravirt.h> >> #include <asm/setup.h> >> >> -#if defined CONFIG_PCI && defined CONFIG_PARAVIRT >> +#ifdef CONFIG_PARAVIRT >> /* >> * Interrupt control on vSMPowered systems: >> * ~AC is a shadow of IF. If IF is 'on' AC should be 'off' >> @@ -114,7 +114,6 @@ static void __init set_vsmp_pv_ops(void) >> } >> #endif >> >> -#ifdef CONFIG_PCI >> static int is_vsmp = -1; >> >> static void __init detect_vsmp_box(void) >> @@ -139,15 +138,6 @@ int is_vsmp_box(void) >> return 0; >> } >> } >> -#else >> -static void __init detect_vsmp_box(void) >> -{ >> -} >> -int is_vsmp_box(void) >> -{ >> - return 0; >> -} >> -#endif >> >> void __init vsmp_init(void) >> { >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/
| |