From e5f95c8b7700a7bf1c2d24eedc677954d9aa0285 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sat, 2 Feb 2008 18:57:18 +0100 Subject: kbuild: print only total number of section mismatces found We have too many section mismatches detected at the moment. So silence modpost and prevent the option from being set in a typical allyesconfig build. Tell the user how to see all the deteils in the summary message from modpost. Signed-off-by: Sam Ravnborg --- lib/Kconfig.debug | 2 +- scripts/mod/modpost.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 0d8a5a4a789..d090d720108 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -81,7 +81,7 @@ config HEADERS_CHECK config DEBUG_SECTION_MISMATCH bool "Enable full Section mismatch analysis" - default n + depends on UNDEFINED help The section mismatch analysis checks if there are illegal references from one section to another section. diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index f8efc93eb70..c2e918e2cef 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -1125,15 +1125,15 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, to = to_is_func ? "function" : "variable"; to_p = to_is_func ? "()" : ""; + sec_mismatch_count++; + if (!sec_mismatch_verbose) + return; + fprintf(stderr, "WARNING: %s(%s+0x%llx): Section mismatch in" " reference from the %s %s%s to the %s %s:%s%s\n", modname, fromsec, fromaddr, from, fromsym, from_p, to, tosec, tosym, to_p); - sec_mismatch_count++; - if (!sec_mismatch_verbose) - return; - switch (mismatch) { case TEXT_TO_INIT: fprintf(stderr, @@ -1939,10 +1939,9 @@ int main(int argc, char **argv) write_dump(dump_write); if (sec_mismatch_count && !sec_mismatch_verbose) fprintf(stderr, "modpost: Found %d section mismatch(es).\n" - "To see additional details select \"Enable full " - "Section mismatch analysis\"\n" - "in the Kernel Hacking menu " - "(CONFIG_SECTION_MISMATCH).\n", sec_mismatch_count); + "To see full details build your kernel with:\n" + "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n", + sec_mismatch_count); return err; } -- cgit v1.2.3 From 470a81ae15ed8c037afa0466e2731566a111c134 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Wed, 30 Jan 2008 14:14:08 +0000 Subject: Remove __INIT_REFOK and __INITDATA_REFOK Commit 312b1485fb509c9bc32eda28ad29537896658cb8 made __INIT_REFOK expand into .section .section ".ref.text", "ax". Since the assembler doesn't tolerate stuttering in the source that broke all MIPS builds. Since with this change Sam downgraded __INIT_REFOK to just a backward compat thing and there being only a single use in the MIPS arch code the best solution is to delete both of __INIT_REFOK and __INITDATA_REFOK (which was equally broken) being unused anyway these can be deleted. Signed-off-by: Ralf Baechle Signed-off-by: Sam Ravnborg --- include/linux/init.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/linux/init.h b/include/linux/init.h index 2efbda01674..90cdbbbbe07 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -124,9 +124,6 @@ #define __REF .section ".ref.text", "ax" #define __REFDATA .section ".ref.data", "aw" #define __REFCONST .section ".ref.rodata", "aw" -/* backward compatibility */ -#define __INIT_REFOK .section __REF -#define __INITDATA_REFOK .section __REFDATA #ifndef __ASSEMBLY__ /* -- cgit v1.2.3 From d6fbfa4fce607254c081d7f58227281d08419d4c Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Wed, 30 Jan 2008 11:13:23 +0100 Subject: kbuild: Spelling/grammar fixes for config DEBUG_SECTION_MISMATCH Including additional fixes from Randy Dunlap Signed-off-by: Geert Uytterhoeven Signed-off-by: Sam Ravnborg --- lib/Kconfig.debug | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index d090d720108..0d385be682d 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -90,19 +90,19 @@ config DEBUG_SECTION_MISMATCH most likely result in an oops. In the code functions and variables are annotated with __init, __devinit etc. (see full list in include/linux/init.h) - which result in the code/data being placed in specific sections. - The section mismatch anaylsis are always done after a full - kernel build but enabling this options will in addition + which results in the code/data being placed in specific sections. + The section mismatch analysis is always done after a full + kernel build but enabling this option will in addition do the following: - Add the option -fno-inline-functions-called-once to gcc When inlining a function annotated __init in a non-init - function we would loose the section information and thus + function we would lose the section information and thus the analysis would not catch the illegal reference. - This options tell gcc to inline less but will also + This option tells gcc to inline less but will also result in a larger kernel. - Run the section mismatch analysis for each module/built-in.o When we run the section mismatch analysis on vmlinux.o we - looses valueable information about where the mismatch was + lose valueble information about where the mismatch was introduced. Running the analysis for each module/built-in.o file will tell where the mismatch happens much closer to the -- cgit v1.2.3 From 36ef805bd51ef831aa6ed66a23ea0dfbc60d0c3e Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sat, 2 Feb 2008 20:44:09 +0100 Subject: kconfig: mark config as changed when loading an alternate config Michal Zachar reported that menuconfig did not save the new config when loading an alternate config unless he altered it manually. Mark config as changed upon load of alternate config fixed this. Signed-off-by: Sam Ravnborg Roman Zippel --- scripts/kconfig/mconf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 50e61c411bc..734cf4f3131 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -821,6 +821,7 @@ static void conf_load(void) return; if (!conf_read(dialog_input_result)) { set_config_filename(dialog_input_result); + sym_set_change_count(1); return; } show_textbox(NULL, _("File does not exist!"), 5, 38); -- cgit v1.2.3 From 603d49885e023d1f68c627c2a2db599fb40eefec Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sat, 2 Feb 2008 21:09:57 +0100 Subject: kconfig: ignore select of unknown symbol We have had warnings for a long time about select of unknow symbol but the warnings does not really makes sense since we may select a symbol that is relevant and defined in one arch but not in another arch. And as long as we do not use a common set of Kconfig files for all archs lets just ignore this case. Previously we have used this to find bad uses of select but we need a more relaible method to do so. Signed-off-by: Sam Ravnborg Cc: Roman Zippel --- scripts/kconfig/menu.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index fdad17367f6..606ceb9e746 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -203,12 +203,9 @@ void sym_check_prop(struct symbol *sym) prop_warn(prop, "config symbol '%s' uses select, but is " "not boolean or tristate", sym->name); - else if (sym2->type == S_UNKNOWN) - prop_warn(prop, - "'select' used by config symbol '%s' " - "refers to undefined symbol '%s'", - sym->name, sym2->name); - else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE) + else if (sym2->type != S_UNKNOWN && + sym2->type != S_BOOLEAN && + sym2->type != S_TRISTATE) prop_warn(prop, "'%s' has wrong type. 'select' only " "accept arguments of boolean and " -- cgit v1.2.3 From c0ffa3a951668734a635cd1e26bf7583795854c5 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sat, 2 Feb 2008 15:10:32 -0500 Subject: Fix ARM to play nicely with generic Instrumentation menu The conflicting commit for move-kconfiginstrumentation-to-arch-kconfig-and-init-kconfig.patch is the ARM fix from Linus : commit 38ad9aebe70dc72df08851bbd1620d89329129ba He just seemed to agree that my approach (just putting the missing ARM config options in arch/arm/Kconfig) works too. The main advantage it has is that it is smaller, does not need a cleanup in the future and does not break the following patches unnecessarily. It's just been discussed here http://lkml.org/lkml/2008/1/15/267 However, Linus might prefer to stay with his own patch and I would totally understand it that late in the release cycle. Therefore I submit this for the next release cycle. Signed-off-by: Mathieu Desnoyers Cc: Jeff Dike Cc: David Howells Cc: Ananth N Mavinakayanahalli CC: Russell King Signed-off-by: Sam Ravnborg --- arch/arm/Kconfig | 19 +++++++++++- arch/arm/Kconfig.instrumentation | 62 ---------------------------------------- kernel/Kconfig.instrumentation | 2 +- 3 files changed, 19 insertions(+), 64 deletions(-) delete mode 100644 arch/arm/Kconfig.instrumentation diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4b1a8e3d292..623eaa1f308 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -135,6 +135,23 @@ config FIQ config ARCH_MTD_XIP bool +if OPROFILE + +config OPROFILE_ARMV6 + def_bool y + depends on CPU_V6 && !SMP + select OPROFILE_ARM11_CORE + +config OPROFILE_MPCORE + def_bool y + depends on CPU_V6 && SMP + select OPROFILE_ARM11_CORE + +config OPROFILE_ARM11_CORE + bool + +endif + config VECTORS_BASE hex default 0xffff0000 if MMU || CPU_HIGH_VECTOR @@ -1128,7 +1145,7 @@ endmenu source "fs/Kconfig" -source "arch/arm/Kconfig.instrumentation" +source "kernel/Kconfig.instrumentation" source "arch/arm/Kconfig.debug" diff --git a/arch/arm/Kconfig.instrumentation b/arch/arm/Kconfig.instrumentation deleted file mode 100644 index 453ad8e15d6..00000000000 --- a/arch/arm/Kconfig.instrumentation +++ /dev/null @@ -1,62 +0,0 @@ -menuconfig INSTRUMENTATION - bool "Instrumentation Support" - default y - ---help--- - Say Y here to get to see options related to performance measurement, - system-wide debugging, and testing. This option alone does not add any - kernel code. - - If you say N, all options in this submenu will be skipped and - disabled. If you're trying to debug the kernel itself, go see the - Kernel Hacking menu. - -if INSTRUMENTATION - -config PROFILING - bool "Profiling support (EXPERIMENTAL)" - help - Say Y here to enable the extended profiling support mechanisms used - by profilers such as OProfile. - -config OPROFILE - tristate "OProfile system profiling (EXPERIMENTAL)" - depends on PROFILING && !UML - help - OProfile is a profiling system capable of profiling the - whole system, include the kernel, kernel modules, libraries, - and applications. - - If unsure, say N. - -config OPROFILE_ARMV6 - bool - depends on OPROFILE && CPU_V6 && !SMP - default y - select OPROFILE_ARM11_CORE - -config OPROFILE_MPCORE - bool - depends on OPROFILE && CPU_V6 && SMP - default y - select OPROFILE_ARM11_CORE - -config OPROFILE_ARM11_CORE - bool - -config KPROBES - bool "Kprobes" - depends on KALLSYMS && MODULES && !UML && !XIP_KERNEL - help - Kprobes allows you to trap at almost any kernel address and - execute a callback function. register_kprobe() establishes - a probepoint and specifies the callback. Kprobes is useful - for kernel debugging, non-intrusive instrumentation and testing. - If in doubt, say "N". - -config MARKERS - bool "Activate markers" - help - Place an empty function call at each marker site. Can be - dynamically changed for a probe function. - -endif # INSTRUMENTATION diff --git a/kernel/Kconfig.instrumentation b/kernel/Kconfig.instrumentation index 468f47ad750..a00dcb61023 100644 --- a/kernel/Kconfig.instrumentation +++ b/kernel/Kconfig.instrumentation @@ -32,7 +32,7 @@ config OPROFILE config KPROBES bool "Kprobes" depends on KALLSYMS && MODULES && !UML - depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 + depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 || (ARM && !XIP_KERNEL) help Kprobes allows you to trap at almost any kernel address and execute a callback function. register_kprobe() establishes -- cgit v1.2.3 From fb32e03fdc170251a381449a8d9b82cf7e811a6f Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sat, 2 Feb 2008 15:10:33 -0500 Subject: Create arch/Kconfig Puts the content of arch/Kconfig in the "General setup" menu. Linus: > Should it come with a re-duplication of it's content into each > architecture, which was the case previously ? The oprofile and kprobes > menu entries were litteraly cut and pasted from one architecture to > another. Should we put its content in init/Kconfig then ? I don't think it's a good idea to go back to making it per-architecture, although that extensive "depends on " might indicate that there certainly is room for cleanup there. And I don't think it's wrong keeping it in kernel/Kconfig.xyz per se, I just think it's wrong to (a) lump the code together when it really doesn't necessarily need to and (b) show it to users as some kind of choice that is tied together (whether it then has common code or not). On the per-architecture side, I do think it would be better to *not* have internal architecture knowledge in a generic file, and as such a line like depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 really shouldn't exist in a file like kernel/Kconfig.instrumentation. It would be much better to do depends on ARCH_SUPPORTS_KPROBES in that generic file, and then architectures that do support it would just have a bool ARCH_SUPPORTS_KPROBES default y in *their* architecture files. That would seem to be much more logical, and is readable both for arch maintainers *and* for people who have no clue - and don't care - about which architecture is supposed to support which interface... Sam Ravnborg: Stuff it into a new file: arch/Kconfig We can then extend this file to include all the 'trailing' Kconfig things that are anyway equal for all ARCHs. But it should be kept clean - so if we introduce such a file then we should use ARCH_HAS_whatever in the arch specific Kconfig files to enable stuff that is not shared. [...] The above suggestion is actually not exactly the best way to do it... First the naming.. A quick grep shows following usage today (in Kconfig files) ARCH_HAS 51 ARCH_SUPPORTS 4 HAVE_ARCH 7 ARCH_HAS is the clear winner. In the common Kconfig file do: config FOO depends on ARCH_HAS_FOO bool "bla bla" config ARCH_HAS_FOO def_bool n In the arch specific Kconfig file in a suitable place do: config SUITABLE_OPTION select ARCH_HAS_FOO The naming of ARCH_HAS_ is fixed and shall be: ARCH_HAS_ Only a single line added pr. architecture. And we will end up with a (maybe even commented) list of trivial selects. - Yet another update : Moving to HAVE_* now. Signed-off-by: Mathieu Desnoyers Cc: Jeff Dike Cc: David Howells Cc: Ananth N Mavinakayanahalli Signed-off-by: Sam Ravnborg --- arch/Kconfig | 3 +++ init/Kconfig | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 arch/Kconfig diff --git a/arch/Kconfig b/arch/Kconfig new file mode 100644 index 00000000000..24917145058 --- /dev/null +++ b/arch/Kconfig @@ -0,0 +1,3 @@ +# +# General architecture dependent options +# diff --git a/init/Kconfig b/init/Kconfig index dcc96a8c8c6..8de6c48cfde 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -665,6 +665,8 @@ config SLOB endchoice +source "arch/Kconfig" + endmenu # General setup config SLABINFO -- cgit v1.2.3 From 42d4b839c82fd7dd8e412145eb6d9752468478e2 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sat, 2 Feb 2008 15:10:34 -0500 Subject: Add HAVE_OPROFILE Linus: On the per-architecture side, I do think it would be better to *not* have internal architecture knowledge in a generic file, and as such a line like depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 really shouldn't exist in a file like kernel/Kconfig.instrumentation. It would be much better to do depends on ARCH_SUPPORTS_KPROBES in that generic file, and then architectures that do support it would just have a bool ARCH_SUPPORTS_KPROBES default y in *their* architecture files. That would seem to be much more logical, and is readable both for arch maintainers *and* for people who have no clue - and don't care - about which architecture is supposed to support which interface... Changelog: Actually, I know I gave this as the magic incantation, but now that I see it, I realize that I should have told you to just use config ARCH_SUPPORTS_KPROBES def_bool y instead, which is a bit denser. We seem to use both kinds of syntax for these things, but this is really what "def_bool" is there for... Changelog : - Moving to HAVE_*. - Add AVR32 oprofile. Signed-off-by: Mathieu Desnoyers Cc: Andrew Morton Cc: Haavard Skinnemoen Cc: David Howells Cc: Jeff Dike Cc: Ananth N Mavinakayanahalli Signed-off-by: Sam Ravnborg --- arch/alpha/Kconfig | 1 + arch/arm/Kconfig | 1 + arch/avr32/Kconfig | 4 +--- arch/blackfin/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/m32r/Kconfig | 1 + arch/mips/Kconfig | 1 + arch/parisc/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/ppc/Kconfig | 1 + arch/s390/Kconfig | 1 + arch/sh/Kconfig | 1 + arch/sparc/Kconfig | 1 + arch/sparc64/Kconfig | 1 + arch/x86/Kconfig | 5 +---- kernel/Kconfig.instrumentation | 5 ++++- 16 files changed, 19 insertions(+), 8 deletions(-) diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index c613d5fb0da..0ff5572b3b0 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -5,6 +5,7 @@ config ALPHA bool default y + select HAVE_OPROFILE help The Alpha is a 64-bit general-purpose processor designed and marketed by the Digital Equipment Corporation of blessed memory, diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 623eaa1f308..3b3eb4ec318 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -10,6 +10,7 @@ config ARM default y select RTC_LIB select SYS_SUPPORTS_APM_EMULATION + select HAVE_OPROFILE help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index e34e2c9c94c..b46932c4f9f 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig @@ -10,6 +10,7 @@ config AVR32 # With EMBEDDED=n, we get lots of stuff automatically selected # that we usually don't need on AVR32. select EMBEDDED + select HAVE_OPROFILE help AVR32 is a high-performance 32-bit RISC microprocessor core, designed for cost-sensitive embedded applications, with particular @@ -54,9 +55,6 @@ config ARCH_HAS_ILOG2_U32 config ARCH_HAS_ILOG2_U64 def_bool n -config ARCH_SUPPORTS_OPROFILE - def_bool y - config GENERIC_HWEIGHT def_bool y diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 4802eb767dc..3ba89dc4329 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -24,6 +24,7 @@ config RWSEM_XCHGADD_ALGORITHM config BLACKFIN bool default y + select HAVE_OPROFILE config ZONE_DMA bool diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index c9307c99a1d..5e410f200c0 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -15,6 +15,7 @@ config IA64 select ACPI if (!IA64_HP_SIM) select PM if (!IA64_HP_SIM) select ARCH_SUPPORTS_MSI + select HAVE_OPROFILE default y help The Itanium Processor Family is Intel's 64-bit successor to diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index 49326e9d441..b93897d65ae 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig @@ -8,6 +8,7 @@ mainmenu "Linux/M32R Kernel Configuration" config M32R bool default y + select HAVE_OPROFILE config SBUS bool diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 36a4018f71d..eb8be5491c1 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -1,6 +1,7 @@ config MIPS bool default y + select HAVE_OPROFILE # Horrible source of confusion. Die, die, die ... select EMBEDDED select RTC_LIB diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 2b649c46631..e1a2f77d398 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -7,6 +7,7 @@ mainmenu "Linux/PA-RISC Kernel Configuration" config PARISC def_bool y + select HAVE_OPROFILE help The PA-RISC microprocessor is designed by Hewlett-Packard and used in many of their workstations & servers (HP9000 700 and 800 series, diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 4a22c992861..c3c29e7d281 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -87,6 +87,7 @@ config ARCH_NO_VIRT_TO_BUS config PPC bool default y + select HAVE_OPROFILE config EARLY_PRINTK bool diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index db5934cdafb..ea9eb4891b2 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig @@ -42,6 +42,7 @@ config GENERIC_CALIBRATE_DELAY config PPC bool default y + select HAVE_OPROFILE config PPC32 bool diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 6ef54d27fc0..c561f6fc3d7 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -51,6 +51,7 @@ mainmenu "Linux Kernel Configuration" config S390 def_bool y + select HAVE_OPROFILE source "init/Kconfig" diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index b30c4c376a8..f868691801b 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -8,6 +8,7 @@ mainmenu "Linux/SuperH Kernel Configuration" config SUPERH def_bool y select EMBEDDED + select HAVE_OPROFILE help The SuperH is a RISC processor targeted for use in embedded systems and consumer electronics; it was also used in the Sega Dreamcast diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 527adc808ad..3d9bc2f0b47 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -63,6 +63,7 @@ config NR_CPUS config SPARC bool default y + select HAVE_OPROFILE # Identify this as a Sparc32 build config SPARC32 diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 158522f51d3..ca14d880d62 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig @@ -8,6 +8,7 @@ mainmenu "Linux/UltraSPARC Kernel Configuration" config SPARC bool default y + select HAVE_OPROFILE config SPARC64 bool diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 7109037bdf7..65594884f32 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -18,6 +18,7 @@ config X86_64 ### Arch settings config X86 def_bool y + select HAVE_OPROFILE config GENERIC_LOCKBREAK def_bool n @@ -106,10 +107,6 @@ config GENERIC_TIME_VSYSCALL config HAVE_SETUP_PER_CPU_AREA def_bool X86_64 -config ARCH_SUPPORTS_OPROFILE - bool - default y - select HAVE_KVM config ARCH_HIBERNATION_POSSIBLE diff --git a/kernel/Kconfig.instrumentation b/kernel/Kconfig.instrumentation index a00dcb61023..d9d010a271d 100644 --- a/kernel/Kconfig.instrumentation +++ b/kernel/Kconfig.instrumentation @@ -21,7 +21,7 @@ config PROFILING config OPROFILE tristate "OProfile system profiling (EXPERIMENTAL)" depends on PROFILING && !UML - depends on ARCH_SUPPORTS_OPROFILE || ALPHA || ARM || BLACKFIN || IA64 || M32R || PARISC || PPC || S390 || SUPERH || SPARC + depends on HAVE_OPROFILE help OProfile is a profiling system capable of profiling the whole system, include the kernel, kernel modules, libraries, @@ -29,6 +29,9 @@ config OPROFILE If unsure, say N. +config HAVE_OPROFILE + def_bool n + config KPROBES bool "Kprobes" depends on KALLSYMS && MODULES && !UML -- cgit v1.2.3 From 3f550096dede4430f83b16457da83bf429155ac2 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sat, 2 Feb 2008 15:10:35 -0500 Subject: Add HAVE_KPROBES Linus: On the per-architecture side, I do think it would be better to *not* have internal architecture knowledge in a generic file, and as such a line like depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 really shouldn't exist in a file like kernel/Kconfig.instrumentation. It would be much better to do depends on ARCH_SUPPORTS_KPROBES in that generic file, and then architectures that do support it would just have a bool ARCH_SUPPORTS_KPROBES default y in *their* architecture files. That would seem to be much more logical, and is readable both for arch maintainers *and* for people who have no clue - and don't care - about which architecture is supposed to support which interface... Changelog: Actually, I know I gave this as the magic incantation, but now that I see it, I realize that I should have told you to just use config KPROBES_SUPPORT def_bool y instead, which is a bit denser. We seem to use both kinds of syntax for these things, but this is really what "def_bool" is there for... - Use HAVE_KPROBES - Use a select - Yet another update : Moving to HAVE_* now. - Update ARM for kprobes support. Signed-off-by: Mathieu Desnoyers Cc: Jeff Dike Cc: David Howells Cc: Ananth N Mavinakayanahalli Signed-off-by: Sam Ravnborg --- arch/arm/Kconfig | 1 + arch/avr32/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/ppc/Kconfig | 1 + arch/s390/Kconfig | 1 + arch/sparc64/Kconfig | 1 + arch/x86/Kconfig | 1 + kernel/Kconfig.instrumentation | 5 ++++- 9 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 3b3eb4ec318..ea45eefbf83 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -11,6 +11,7 @@ config ARM select RTC_LIB select SYS_SUPPORTS_APM_EMULATION select HAVE_OPROFILE + select HAVE_KPROBES if (!XIP_KERNEL) help The ARM series is a line of low-power-consumption RISC chip designs licensed by ARM Ltd and targeted at embedded applications and diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index b46932c4f9f..0e56e96a17a 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig @@ -11,6 +11,7 @@ config AVR32 # that we usually don't need on AVR32. select EMBEDDED select HAVE_OPROFILE + select HAVE_KPROBES help AVR32 is a high-performance 32-bit RISC microprocessor core, designed for cost-sensitive embedded applications, with particular diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 5e410f200c0..8db6324f7a8 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -16,6 +16,7 @@ config IA64 select PM if (!IA64_HP_SIM) select ARCH_SUPPORTS_MSI select HAVE_OPROFILE + select HAVE_KPROBES default y help The Itanium Processor Family is Intel's 64-bit successor to diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c3c29e7d281..c6f3eb58e4e 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -88,6 +88,7 @@ config PPC bool default y select HAVE_OPROFILE + select HAVE_KPROBES config EARLY_PRINTK bool diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index ea9eb4891b2..92e37f5b365 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig @@ -43,6 +43,7 @@ config PPC bool default y select HAVE_OPROFILE + select HAVE_KPROBES config PPC32 bool diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index c561f6fc3d7..272c6c80fd7 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -52,6 +52,7 @@ mainmenu "Linux Kernel Configuration" config S390 def_bool y select HAVE_OPROFILE + select HAVE_KPROBES source "init/Kconfig" diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index ca14d880d62..cbdc80d74bc 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig @@ -9,6 +9,7 @@ config SPARC bool default y select HAVE_OPROFILE + select HAVE_KPROBES config SPARC64 bool diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 65594884f32..72db31c7866 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -19,6 +19,7 @@ config X86_64 config X86 def_bool y select HAVE_OPROFILE + select HAVE_KPROBES config GENERIC_LOCKBREAK def_bool n diff --git a/kernel/Kconfig.instrumentation b/kernel/Kconfig.instrumentation index d9d010a271d..2195b654457 100644 --- a/kernel/Kconfig.instrumentation +++ b/kernel/Kconfig.instrumentation @@ -35,7 +35,7 @@ config HAVE_OPROFILE config KPROBES bool "Kprobes" depends on KALLSYMS && MODULES && !UML - depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 || (ARM && !XIP_KERNEL) + depends on HAVE_KPROBES help Kprobes allows you to trap at almost any kernel address and execute a callback function. register_kprobe() establishes @@ -43,6 +43,9 @@ config KPROBES for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". +config HAVE_KPROBES + def_bool n + config MARKERS bool "Activate markers" help -- cgit v1.2.3 From 125e564582cbce6219397fc64556438420efae4c Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sat, 2 Feb 2008 15:10:36 -0500 Subject: Move Kconfig.instrumentation to arch/Kconfig and init/Kconfig Move the instrumentation Kconfig to arch/Kconfig for architecture dependent options - oprofile - kprobes and init/Kconfig for architecture independent options - profiling - markers Remove the "Instrumentation Support" menu. Everything moves to "General setup". Delete the kernel/Kconfig.instrumentation file. Signed-off-by: Mathieu Desnoyers Cc: Linus Torvalds Cc: Signed-off-by: Sam Ravnborg --- arch/Kconfig | 28 +++++++++++++++++++++ arch/alpha/Kconfig | 2 -- arch/arm/Kconfig | 2 -- arch/blackfin/Kconfig | 2 -- arch/cris/Kconfig | 2 -- arch/frv/Kconfig | 2 -- arch/h8300/Kconfig | 2 -- arch/ia64/Kconfig | 2 -- arch/m32r/Kconfig | 2 -- arch/m68k/Kconfig | 2 -- arch/m68knommu/Kconfig | 2 -- arch/mips/Kconfig | 2 -- arch/parisc/Kconfig | 2 -- arch/powerpc/Kconfig | 2 -- arch/ppc/Kconfig | 2 -- arch/s390/Kconfig | 2 -- arch/sh/Kconfig | 2 -- arch/sparc/Kconfig | 2 -- arch/sparc64/Kconfig | 2 -- arch/um/Kconfig | 2 -- arch/v850/Kconfig | 2 -- arch/x86/Kconfig | 2 -- arch/xtensa/Kconfig | 2 -- init/Kconfig | 12 +++++++++ kernel/Kconfig.instrumentation | 55 ------------------------------------------ 25 files changed, 40 insertions(+), 99 deletions(-) delete mode 100644 kernel/Kconfig.instrumentation diff --git a/arch/Kconfig b/arch/Kconfig index 24917145058..3d72dc3fc8f 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -1,3 +1,31 @@ # # General architecture dependent options # + +config OPROFILE + tristate "OProfile system profiling (EXPERIMENTAL)" + depends on PROFILING + depends on HAVE_OPROFILE + help + OProfile is a profiling system capable of profiling the + whole system, include the kernel, kernel modules, libraries, + and applications. + + If unsure, say N. + +config HAVE_OPROFILE + def_bool n + +config KPROBES + bool "Kprobes" + depends on KALLSYMS && MODULES + depends on HAVE_KPROBES + help + Kprobes allows you to trap at almost any kernel address and + execute a callback function. register_kprobe() establishes + a probepoint and specifies the callback. Kprobes is useful + for kernel debugging, non-intrusive instrumentation and testing. + If in doubt, say "N". + +config HAVE_KPROBES + def_bool n diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 0ff5572b3b0..9abcd5fd896 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -650,8 +650,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/alpha/Kconfig.debug" # DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ea45eefbf83..36176f40dfd 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1147,8 +1147,6 @@ endmenu source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/arm/Kconfig.debug" source "security/Kconfig" diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 3ba89dc4329..ba21e33b8b1 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -974,8 +974,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/blackfin/Kconfig.debug" source "security/Kconfig" diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 222da1501f4..7f0be4cd5e9 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -213,8 +213,6 @@ source "drivers/pci/Kconfig" source "drivers/usb/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/cris/Kconfig.debug" source "security/Kconfig" diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index e3f965c91e2..68380cb2ff8 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig @@ -375,8 +375,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/frv/Kconfig.debug" source "security/Kconfig" diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index ff6a8712bd6..dc61222e112 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig @@ -223,8 +223,6 @@ endmenu source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/h8300/Kconfig.debug" source "security/Kconfig" diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 8db6324f7a8..a0740fbd94d 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -602,8 +602,6 @@ config IRQ_PER_CPU source "arch/ia64/hp/sim/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/ia64/Kconfig.debug" source "security/Kconfig" diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index b93897d65ae..12259759a2f 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig @@ -427,8 +427,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/m32r/Kconfig.debug" source "security/Kconfig" diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 24e6bc09e7a..8236e42ef71 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -678,8 +678,6 @@ endmenu source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/m68k/Kconfig.debug" source "security/Kconfig" diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index bd9213749ac..6abbbb8aac5 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -711,8 +711,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/m68knommu/Kconfig.debug" source "security/Kconfig" diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index eb8be5491c1..d38ebd3b120 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2096,8 +2096,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/mips/Kconfig.debug" source "security/Kconfig" diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index e1a2f77d398..25c10fa6964 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -273,8 +273,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/parisc/Kconfig.debug" source "security/Kconfig" diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c6f3eb58e4e..b94d4502a47 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -715,8 +715,6 @@ source "arch/powerpc/sysdev/qe_lib/Kconfig" source "lib/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/powerpc/Kconfig.debug" source "security/Kconfig" diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index 92e37f5b365..531156f8919 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig @@ -1258,8 +1258,6 @@ endmenu source "lib/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/ppc/Kconfig.debug" source "security/Kconfig" diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 272c6c80fd7..974f9c3e89d 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -528,8 +528,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/s390/Kconfig.debug" source "security/Kconfig" diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index f868691801b..bfbd54a22bd 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -897,8 +897,6 @@ source "drivers/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/sh/Kconfig.debug" source "security/Kconfig" diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 3d9bc2f0b47..51008a2ba5b 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -321,8 +321,6 @@ endmenu source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/sparc/Kconfig.debug" source "security/Kconfig" diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index cbdc80d74bc..a7739b507b7 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig @@ -467,8 +467,6 @@ source "drivers/sbus/char/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/sparc64/Kconfig.debug" source "security/Kconfig" diff --git a/arch/um/Kconfig b/arch/um/Kconfig index dd1689b814c..55945db1313 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -289,6 +289,4 @@ config INPUT bool default n -source "kernel/Kconfig.instrumentation" - source "arch/um/Kconfig.debug" diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig index b6a50b8b38d..ace479ab273 100644 --- a/arch/v850/Kconfig +++ b/arch/v850/Kconfig @@ -331,8 +331,6 @@ source "sound/Kconfig" source "drivers/usb/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/v850/Kconfig.debug" source "security/Kconfig" diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 72db31c7866..3162cb467ab 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1595,8 +1595,6 @@ source "drivers/firmware/Kconfig" source "fs/Kconfig" -source "kernel/Kconfig.instrumentation" - source "arch/x86/Kconfig.debug" source "security/Kconfig" diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index 844721e8e3d..5d5546ce88f 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -246,8 +246,6 @@ config EMBEDDED_RAMDISK_IMAGE provide one yourself. endmenu -source "kernel/Kconfig.instrumentation" - source "arch/xtensa/Kconfig.debug" source "security/Kconfig" diff --git a/init/Kconfig b/init/Kconfig index 8de6c48cfde..b2acdeb2d31 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -665,6 +665,18 @@ config SLOB endchoice +config PROFILING + bool "Profiling support (EXPERIMENTAL)" + help + Say Y here to enable the extended profiling support mechanisms used + by profilers such as OProfile. + +config MARKERS + bool "Activate markers" + help + Place an empty function call at each marker site. Can be + dynamically changed for a probe function. + source "arch/Kconfig" endmenu # General setup diff --git a/kernel/Kconfig.instrumentation b/kernel/Kconfig.instrumentation deleted file mode 100644 index 2195b654457..00000000000 --- a/kernel/Kconfig.instrumentation +++ /dev/null @@ -1,55 +0,0 @@ -menuconfig INSTRUMENTATION - bool "Instrumentation Support" - default y - ---help--- - Say Y here to get to see options related to performance measurement, - system-wide debugging, and testing. This option alone does not add any - kernel code. - - If you say N, all options in this submenu will be skipped and - disabled. If you're trying to debug the kernel itself, go see the - Kernel Hacking menu. - -if INSTRUMENTATION - -config PROFILING - bool "Profiling support (EXPERIMENTAL)" - help - Say Y here to enable the extended profiling support mechanisms used - by profilers such as OProfile. - -config OPROFILE - tristate "OProfile system profiling (EXPERIMENTAL)" - depends on PROFILING && !UML - depends on HAVE_OPROFILE - help - OProfile is a profiling system capable of profiling the - whole system, include the kernel, kernel modules, libraries, - and applications. - - If unsure, say N. - -config HAVE_OPROFILE - def_bool n - -config KPROBES - bool "Kprobes" - depends on KALLSYMS && MODULES && !UML - depends on HAVE_KPROBES - help - Kprobes allows you to trap at almost any kernel address and - execute a callback function. register_kprobe() establishes - a probepoint and specifies the callback. Kprobes is useful - for kernel debugging, non-intrusive instrumentation and testing. - If in doubt, say "N". - -config HAVE_KPROBES - def_bool n - -config MARKERS - bool "Activate markers" - help - Place an empty function call at each marker site. Can be - dynamically changed for a probe function. - -endif # INSTRUMENTATION -- cgit v1.2.3 From fa95eb1f17a5fe7b3593cff4bf27dbe9ae6cac89 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sat, 2 Feb 2008 23:30:22 +0100 Subject: kbuild: do not warn about __*init/__*exit symbols being exported We have several legitimate uses where we export symbols annotated with one of: __devinit, __cpuinit, __meminit and their exit counterpart. So let's stop warning about those being exported in favour of adding all sorts of workaround to silence the warning. Signed-off-by: Sam Ravnborg --- scripts/mod/modpost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index c2e918e2cef..5d546466e6b 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -870,7 +870,7 @@ const struct sectioncheck sectioncheck[] = { /* Do not export init/exit functions or data */ { .fromsec = { "__ksymtab*", NULL }, - .tosec = { ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }, + .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL }, .mismatch = EXPORT_TO_INIT_EXIT } }; -- cgit v1.2.3 From ba3d05fb6369e617aee4f16bfce7ba5cbd30f26b Mon Sep 17 00:00:00 2001 From: Bryan Wu Date: Sun, 3 Feb 2008 14:13:26 +0800 Subject: kbuild: add svn revision information to setlocalversion follow git and mercurial style, include uncommitted changes detect Cc: Frans Pop Signed-off-by: Bryan Wu Signed-off-by: Sam Ravnborg --- scripts/setlocalversion | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) mode change 100644 => 100755 scripts/setlocalversion diff --git a/scripts/setlocalversion b/scripts/setlocalversion old mode 100644 new mode 100755 index 52f032e409a..1c1bdaf7348 --- a/scripts/setlocalversion +++ b/scripts/setlocalversion @@ -45,3 +45,19 @@ if hgid=`hg id 2>/dev/null`; then # All done with mercurial exit fi + +# Check for svn and a svn repo. +if rev=`svn info 2>/dev/null | grep '^Revision'`; then + rev=`echo $rev | awk '{print $NF}'` + changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l` + + # Are there uncommitted changes? + if [ $changes != 0 ]; then + printf -- '-svn%s%s%s' "$rev" -dirty "$changes" + else + printf -- '-svn%s' "$rev" + fi + + # All done with svn + exit +fi -- cgit v1.2.3 From 8891fec65ac5b5a74b50c705e31b66c92c3eddeb Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sun, 3 Feb 2008 21:55:49 +0100 Subject: scsi: fix dependency bug in aic7 Makefile Building the aic7xxx driver includes the copy of an .h file from a _shipped file. In a highly parallel build Ingo saw that the build sometimes failed (included distcc usage). It was tracked down to a missing dependency from the .c source file to the generated .h file. We started to build the .c file before the copy (cat) operation of the .h file completed and we then only got half of the definitions from the copied .h file. Add an explicit dependency from the .c files to the generated .h files so make knows all dependencies and finsih the build of the .h files before it starts building the .o files. Ingo tested this fix and reported: good news: hundreds of successful kernel builds and no failures overnight. Signed-off-by: Sam Ravnborg Acked-by: Ingo Molnar Acked-by: James Bottomley --- drivers/scsi/aic7xxx/Makefile | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/aic7xxx/Makefile b/drivers/scsi/aic7xxx/Makefile index e4f70c563bc..4c549540a35 100644 --- a/drivers/scsi/aic7xxx/Makefile +++ b/drivers/scsi/aic7xxx/Makefile @@ -44,13 +44,8 @@ clean-files += aic79xx_seq.h aic79xx_reg.h aic79xx_reg_print.c # Dependencies for generated files need to be listed explicitly -$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_seq.h -$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_reg.h -$(obj)/aic79xx_core.o: $(obj)/aic79xx_seq.h -$(obj)/aic79xx_core.o: $(obj)/aic79xx_reg.h - -$(addprefix $(obj)/,$(aic7xxx-y)): $(obj)/aic7xxx_seq.h -$(addprefix $(obj)/,$(aic79xx-y)): $(obj)/aic79xx_seq.h +$(addprefix $(src)/,$(aic7xxx-y:.o=.c)): $(obj)/aic7xxx_seq.h $(obj)/aic7xxx_reg.h +$(addprefix $(src)/,$(aic79xx-y:.o=.c)): $(obj)/aic79xx_seq.h $(obj)/aic79xx_reg.h aic7xxx-gen-$(CONFIG_AIC7XXX_BUILD_FIRMWARE) := $(obj)/aic7xxx_reg.h aic7xxx-gen-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) += $(obj)/aic7xxx_reg_print.c -- cgit v1.2.3