From 74b469f2e6b1589118b6ac05c7256add01e572d2 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Thu, 25 Oct 2007 19:42:04 +0200 Subject: [PATCH 1/6] x86: move i386 and x86_64 Makefiles to arch/x86 Moving the ARCH specific Makefiles for i386 and x86_64 required a litle bit tweaking in the top-lvel Makefile. SRCARCH is now set in the top-level Makefile because we need this info to include the correct arch Makefile. Signed-off-by: Sam Ravnborg --- Makefile | 7 +++++-- arch/x86/Makefile | 13 +++++++++++++ arch/{i386/Makefile => x86/Makefile_32} | 7 ++----- arch/{i386/Makefile.cpu => x86/Makefile_32.cpu} | 0 arch/{x86_64/Makefile => x86/Makefile_64} | 5 +---- 5 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 arch/x86/Makefile rename arch/{i386/Makefile => x86/Makefile_32} (98%) rename arch/{i386/Makefile.cpu => x86/Makefile_32.cpu} (100%) rename arch/{x86_64/Makefile => x86/Makefile_64} (99%) diff --git a/Makefile b/Makefile index 2a4729024dfb..8816060cdf40 100644 --- a/Makefile +++ b/Makefile @@ -196,6 +196,9 @@ CROSS_COMPILE ?= UTS_MACHINE := $(ARCH) SRCARCH := $(ARCH) +# for i386 and x86_64 we use SRCARCH equal to x86 +SRCARCH := $(if $(filter x86_64 i386,$(SRCARCH)),x86,$(SRCARCH)) + KCONFIG_CONFIG ?= .config # SHELL used by kbuild @@ -418,7 +421,7 @@ ifeq ($(config-targets),1) # Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. # KBUILD_DEFCONFIG may point out an alternative default configuration # used for 'make defconfig' -include $(srctree)/arch/$(ARCH)/Makefile +include $(srctree)/arch/$(SRCARCH)/Makefile export KBUILD_DEFCONFIG config %config: scripts_basic outputmakefile FORCE @@ -497,7 +500,7 @@ else KBUILD_CFLAGS += -O2 endif -include $(srctree)/arch/$(ARCH)/Makefile +include $(srctree)/arch/$(SRCARCH)/Makefile ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls diff --git a/arch/x86/Makefile b/arch/x86/Makefile new file mode 100644 index 000000000000..65077d79c846 --- /dev/null +++ b/arch/x86/Makefile @@ -0,0 +1,13 @@ +# Unified Makefile for i386 and x86_64 + +# No need to remake these files +$(srctree)/arch/x86/Makefile%: ; + +ifeq ($(ARCH),i386) + include $(srctree)/arch/x86/Makefile_32 +else + include $(srctree)/arch/x86/Makefile_64 +endif + + + diff --git a/arch/i386/Makefile b/arch/x86/Makefile_32 similarity index 98% rename from arch/i386/Makefile rename to arch/x86/Makefile_32 index f5b9a37def8b..346ac0766875 100644 --- a/arch/i386/Makefile +++ b/arch/x86/Makefile_32 @@ -1,5 +1,5 @@ # -# i386/Makefile +# i386 Makefile # # This file is included by the global makefile so that you can add your own # architecture-specific flags and dependencies. Remember to do have actions @@ -17,9 +17,6 @@ # 20050320 Kianusch Sayah Karadji # Added support for GEODE CPU -# Fill in SRCARCH -SRCARCH := x86 - # BITS is used as extension for files which are available in a 32 bit # and a 64 bit version to simplify shared Makefiles. # e.g.: obj-y += foo_$(BITS).o @@ -46,7 +43,7 @@ KBUILD_CFLAGS += -pipe -msoft-float -mregparm=3 -freg-struct-return KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2) # CPU-specific tuning. Anything which can be shared with UML should go here. -include $(srctree)/arch/i386/Makefile.cpu +include $(srctree)/arch/x86/Makefile_32.cpu # temporary until string.h is fixed cflags-y += -ffreestanding diff --git a/arch/i386/Makefile.cpu b/arch/x86/Makefile_32.cpu similarity index 100% rename from arch/i386/Makefile.cpu rename to arch/x86/Makefile_32.cpu diff --git a/arch/x86_64/Makefile b/arch/x86/Makefile_64 similarity index 99% rename from arch/x86_64/Makefile rename to arch/x86/Makefile_64 index 20eb69bd5a6d..57e714a47af7 100644 --- a/arch/x86_64/Makefile +++ b/arch/x86/Makefile_64 @@ -1,5 +1,5 @@ # -# x86_64/Makefile +# x86_64 Makefile # # This file is included by the global makefile so that you can add your own # architecture-specific flags and dependencies. Remember to do have actions @@ -21,9 +21,6 @@ # # $Id: Makefile,v 1.31 2002/03/22 15:56:07 ak Exp $ -# Fill in SRCARCH -SRCARCH := x86 - # BITS is used as extension for files which are available in a 32 bit # and a 64 bit version to simplify shared Makefiles. # e.g.: obj-y += foo_$(BITS).o From 2266cfd50de3872e877eeca3dd4a6f940f22ba60 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Thu, 25 Oct 2007 20:31:19 +0200 Subject: [PATCH 2/6] x86: move defconfig files for i386 and x86_64 to x86 With some small changes to kconfig makefile we can now locate the defconfig files for i386 and x86_64 in the configs/ subdirectory under x86. make ARCH=i386 defconfig and make defconfig works as expected also after this change. But arch maintainers shall now update a defconfig file in the configs/ directory. Signed-off-by: Sam Ravnborg --- arch/x86/Makefile | 5 ++++- arch/{i386/defconfig => x86/configs/i386_defconfig} | 0 arch/{x86_64/defconfig => x86/configs/x86_64_defconfig} | 0 scripts/kconfig/Makefile | 6 +++--- 4 files changed, 7 insertions(+), 4 deletions(-) rename arch/{i386/defconfig => x86/configs/i386_defconfig} (100%) rename arch/{x86_64/defconfig => x86/configs/x86_64_defconfig} (100%) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 65077d79c846..309597386a77 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -1,6 +1,9 @@ # Unified Makefile for i386 and x86_64 -# No need to remake these files +# select defconfig based on actual architecture +KBUILD_DEFCONFIG := $(ARCH)_defconfig + +# # No need to remake these files $(srctree)/arch/x86/Makefile%: ; ifeq ($(ARCH),i386) diff --git a/arch/i386/defconfig b/arch/x86/configs/i386_defconfig similarity index 100% rename from arch/i386/defconfig rename to arch/x86/configs/i386_defconfig diff --git a/arch/x86_64/defconfig b/arch/x86/configs/x86_64_defconfig similarity index 100% rename from arch/x86_64/defconfig rename to arch/x86/configs/x86_64_defconfig diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 83c5e76414ce..fbf39cc6afab 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -60,12 +60,12 @@ defconfig: $(obj)/conf ifeq ($(KBUILD_DEFCONFIG),) $< -d arch/$(ARCH)/Kconfig else - @echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)' - $(Q)$< -D arch/$(ARCH)/configs/$(KBUILD_DEFCONFIG) arch/$(ARCH)/Kconfig + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< -D arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) arch/$(ARCH)/Kconfig endif %_defconfig: $(obj)/conf - $(Q)$< -D arch/$(ARCH)/configs/$@ arch/$(ARCH)/Kconfig + $(Q)$< -D arch/$(SRCARCH)/configs/$@ arch/$(ARCH)/Kconfig # Help text used by make help help: From d013a27cb79a01b324f93adb275162c244cca2de Mon Sep 17 00:00:00 2001 From: Randy Dunlap Date: Wed, 24 Oct 2007 15:50:43 -0700 Subject: [PATCH 3/6] x86: unification of i386 and x86_64 Kconfig.debug Adding proper dependencies so the two Kconfig.debug files are now identical and move the result file to x86. Signed-off-by: Randy Dunlap Signed-off-by: Sam Ravnborg --- arch/i386/Kconfig | 2 +- arch/{i386 => x86}/Kconfig.debug | 51 ++++++++++++++++++++------ arch/x86_64/Kconfig | 2 +- arch/x86_64/Kconfig.debug | 61 -------------------------------- 4 files changed, 43 insertions(+), 73 deletions(-) rename arch/{i386 => x86}/Kconfig.debug (65%) delete mode 100644 arch/x86_64/Kconfig.debug diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index b4437ce0f973..d24e3e207ea5 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig @@ -1272,7 +1272,7 @@ source "fs/Kconfig" source "kernel/Kconfig.instrumentation" -source "arch/i386/Kconfig.debug" +source "arch/x86/Kconfig.debug" source "security/Kconfig" diff --git a/arch/i386/Kconfig.debug b/arch/x86/Kconfig.debug similarity index 65% rename from arch/i386/Kconfig.debug rename to arch/x86/Kconfig.debug index f03531eacdfb..970b2defe7df 100644 --- a/arch/i386/Kconfig.debug +++ b/arch/x86/Kconfig.debug @@ -1,14 +1,14 @@ menu "Kernel hacking" config TRACE_IRQFLAGS_SUPPORT - bool - default y + def_bool y source "lib/Kconfig.debug" config EARLY_PRINTK bool "Early printk" if EMBEDDED && DEBUG_KERNEL default y + depends on X86_32 help Write kernel log output directly into the VGA buffer or to a serial port. @@ -37,10 +37,12 @@ config DEBUG_STACK_USAGE comment "Page alloc debug is incompatible with Software Suspend on i386" depends on DEBUG_KERNEL && HIBERNATION + depends on X86_32 config DEBUG_PAGEALLOC bool "Debug page memory allocations" depends on DEBUG_KERNEL && !HIBERNATION && !HUGETLBFS + depends on X86_32 help Unmap pages from the kernel linear mapping after free_pages(). This results in a large slowdown, but helps to find certain types @@ -59,6 +61,7 @@ config DEBUG_RODATA config 4KSTACKS bool "Use 4Kb for kernel stacks instead of 8Kb" depends on DEBUG_KERNEL + depends on X86_32 help If you say Y here the kernel will use a 4Kb stacksize for the kernel stack attached to each process/thread. This facilitates @@ -67,22 +70,50 @@ config 4KSTACKS will also use IRQ stacks to compensate for the reduced stackspace. config X86_FIND_SMP_CONFIG - bool + def_bool y depends on X86_LOCAL_APIC || X86_VOYAGER - default y + depends on X86_32 config X86_MPPARSE - bool + def_bool y depends on X86_LOCAL_APIC && !X86_VISWS - default y + depends on X86_32 config DOUBLEFAULT default y bool "Enable doublefault exception handler" if EMBEDDED + depends on X86_32 help - This option allows trapping of rare doublefault exceptions that - would otherwise cause a system to silently reboot. Disabling this - option saves about 4k and might cause you much additional grey - hair. + This option allows trapping of rare doublefault exceptions that + would otherwise cause a system to silently reboot. Disabling this + option saves about 4k and might cause you much additional grey + hair. + +config IOMMU_DEBUG + bool "Enable IOMMU debugging" + depends on IOMMU && DEBUG_KERNEL + depends on X86_64 + help + Force the IOMMU to on even when you have less than 4GB of + memory and add debugging code. On overflow always panic. And + allow to enable IOMMU leak tracing. Can be disabled at boot + time with iommu=noforce. This will also enable scatter gather + list merging. Currently not recommended for production + code. When you use it make sure you have a big enough + IOMMU/AGP aperture. Most of the options enabled by this can + be set more finegrained using the iommu= command line + options. See Documentation/x86_64/boot-options.txt for more + details. + +config IOMMU_LEAK + bool "IOMMU leak tracing" + depends on DEBUG_KERNEL + depends on IOMMU_DEBUG + help + Add a simple leak tracer to the IOMMU code. This is useful when you + are debugging a buggy device driver that leaks IOMMU mappings. + +#config X86_REMOTE_DEBUG +# bool "kgdb debugging stub" endmenu diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index 308970aa5382..e2542e5b536c 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig @@ -835,7 +835,7 @@ source fs/Kconfig source "kernel/Kconfig.instrumentation" -source "arch/x86_64/Kconfig.debug" +source "arch/x86/Kconfig.debug" source "security/Kconfig" diff --git a/arch/x86_64/Kconfig.debug b/arch/x86_64/Kconfig.debug deleted file mode 100644 index 775d211a5cf9..000000000000 --- a/arch/x86_64/Kconfig.debug +++ /dev/null @@ -1,61 +0,0 @@ -menu "Kernel hacking" - -config TRACE_IRQFLAGS_SUPPORT - bool - default y - -source "lib/Kconfig.debug" - -config DEBUG_RODATA - bool "Write protect kernel read-only data structures" - depends on DEBUG_KERNEL - help - Mark the kernel read-only data as write-protected in the pagetables, - in order to catch accidental (and incorrect) writes to such const data. - This option may have a slight performance impact because a portion - of the kernel code won't be covered by a 2MB TLB anymore. - If in doubt, say "N". - -config IOMMU_DEBUG - depends on IOMMU && DEBUG_KERNEL - bool "Enable IOMMU debugging" - help - Force the IOMMU to on even when you have less than 4GB of - memory and add debugging code. On overflow always panic. And - allow to enable IOMMU leak tracing. Can be disabled at boot - time with iommu=noforce. This will also enable scatter gather - list merging. Currently not recommended for production - code. When you use it make sure you have a big enough - IOMMU/AGP aperture. Most of the options enabled by this can - be set more finegrained using the iommu= command line - options. See Documentation/x86_64/boot-options.txt for more - details. - -config IOMMU_LEAK - bool "IOMMU leak tracing" - depends on DEBUG_KERNEL - depends on IOMMU_DEBUG - help - Add a simple leak tracer to the IOMMU code. This is useful when you - are debugging a buggy device driver that leaks IOMMU mappings. - -config DEBUG_STACKOVERFLOW - bool "Check for stack overflows" - depends on DEBUG_KERNEL - help - This option will cause messages to be printed if free stack space - drops below a certain limit. - -config DEBUG_STACK_USAGE - bool "Stack utilization instrumentation" - depends on DEBUG_KERNEL - help - Enables the display of the minimum amount of free stack which each - task has ever had available in the sysrq-T and sysrq-P debug output. - - This option will slow down process creation somewhat. - -#config X86_REMOTE_DEBUG -# bool "kgdb debugging stub" - -endmenu From e703f75d620824739148142c3734ae8223e4d1f5 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Thu, 25 Oct 2007 20:42:18 +0200 Subject: [PATCH 4/6] kconfig: small code refactoring in kconfig Makefile Do not hardcode the arch/$(ARCH)/Kconfig name all over Signed-off-by: Sam Ravnborg --- scripts/kconfig/Makefile | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index fbf39cc6afab..3c9db073571c 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -4,23 +4,25 @@ PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config +Kconfig := arch/$(ARCH)/Kconfig + xconfig: $(obj)/qconf - $< arch/$(ARCH)/Kconfig + $< $(Kconfig) gconfig: $(obj)/gconf - $< arch/$(ARCH)/Kconfig + $< $(Kconfig) menuconfig: $(obj)/mconf - $< arch/$(ARCH)/Kconfig + $< $(Kconfig) config: $(obj)/conf - $< arch/$(ARCH)/Kconfig + $< $(Kconfig) oldconfig: $(obj)/conf - $< -o arch/$(ARCH)/Kconfig + $< -o $(Kconfig) silentoldconfig: $(obj)/conf - $< -s arch/$(ARCH)/Kconfig + $< -s $(Kconfig) # Create new linux.po file # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files @@ -45,27 +47,27 @@ update-po-config: $(obj)/kxgettext PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig randconfig: $(obj)/conf - $< -r arch/$(ARCH)/Kconfig + $< -r $(Kconfig) allyesconfig: $(obj)/conf - $< -y arch/$(ARCH)/Kconfig + $< -y $(Kconfig) allnoconfig: $(obj)/conf - $< -n arch/$(ARCH)/Kconfig + $< -n $(Kconfig) allmodconfig: $(obj)/conf - $< -m arch/$(ARCH)/Kconfig + $< -m $(Kconfig) defconfig: $(obj)/conf ifeq ($(KBUILD_DEFCONFIG),) - $< -d arch/$(ARCH)/Kconfig + $< -d $(Kconfig) else @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" - $(Q)$< -D arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) arch/$(ARCH)/Kconfig + $(Q)$< -D arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) endif %_defconfig: $(obj)/conf - $(Q)$< -D arch/$(SRCARCH)/configs/$@ arch/$(ARCH)/Kconfig + $(Q)$< -D arch/$(SRCARCH)/configs/$@ $(Kconfig) # Help text used by make help help: From 47572387d58a9584c60ebbbdee56fc92c627f16f Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Thu, 25 Oct 2007 21:04:16 +0200 Subject: [PATCH 5/6] x86: move i386 and x86_64 Kconfig files to x86 directory After a small change in kconfig Makefile we could move all x86 Kconfig files to x86 directory. Signed-off-by: Sam Ravnborg --- arch/{i386 => x86}/Kconfig.cpu | 0 arch/{i386/Kconfig => x86/Kconfig.i386} | 2 +- arch/{x86_64/Kconfig => x86/Kconfig.x86_64} | 0 scripts/kconfig/Makefile | 7 ++++++- 4 files changed, 7 insertions(+), 2 deletions(-) rename arch/{i386 => x86}/Kconfig.cpu (100%) rename arch/{i386/Kconfig => x86/Kconfig.i386} (99%) rename arch/{x86_64/Kconfig => x86/Kconfig.x86_64} (100%) diff --git a/arch/i386/Kconfig.cpu b/arch/x86/Kconfig.cpu similarity index 100% rename from arch/i386/Kconfig.cpu rename to arch/x86/Kconfig.cpu diff --git a/arch/i386/Kconfig b/arch/x86/Kconfig.i386 similarity index 99% rename from arch/i386/Kconfig rename to arch/x86/Kconfig.i386 index d24e3e207ea5..7331efe891a7 100644 --- a/arch/i386/Kconfig +++ b/arch/x86/Kconfig.i386 @@ -287,7 +287,7 @@ config ES7000_CLUSTERED_APIC default y depends on SMP && X86_ES7000 && MPENTIUMIII -source "arch/i386/Kconfig.cpu" +source "arch/x86/Kconfig.cpu" config HPET_TIMER bool "HPET Timer Support" diff --git a/arch/x86_64/Kconfig b/arch/x86/Kconfig.x86_64 similarity index 100% rename from arch/x86_64/Kconfig rename to arch/x86/Kconfig.x86_64 diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 3c9db073571c..59594126e8b6 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -4,7 +4,12 @@ PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config -Kconfig := arch/$(ARCH)/Kconfig +# If a arch/$(SRCARCH)/Kconfig.$(ARCH) file exist use it +ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/Kconfig.$(ARCH)),) + Kconfig := arch/$(SRCARCH)/Kconfig.$(ARCH) +else + Kconfig := arch/$(SRCARCH)/Kconfig +endif xconfig: $(obj)/qconf $< $(Kconfig) From 208652d6b2cb9d7155ca8ff8691c8ef88c8250af Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Thu, 25 Oct 2007 21:06:56 +0200 Subject: [PATCH 6/6] x86: kill the old i386 and x86_64 directories The last remaining bits were two .gitignore files. Deleting them and the directories are history. Signed-off-by: Sam Ravnborg --- arch/i386/.gitignore | 1 - arch/x86_64/.gitignore | 1 - 2 files changed, 2 deletions(-) delete mode 100644 arch/i386/.gitignore delete mode 100644 arch/x86_64/.gitignore diff --git a/arch/i386/.gitignore b/arch/i386/.gitignore deleted file mode 100644 index 36ef4c374d25..000000000000 --- a/arch/i386/.gitignore +++ /dev/null @@ -1 +0,0 @@ -boot diff --git a/arch/x86_64/.gitignore b/arch/x86_64/.gitignore deleted file mode 100644 index 36ef4c374d25..000000000000 --- a/arch/x86_64/.gitignore +++ /dev/null @@ -1 +0,0 @@ -boot