Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
authorLinus Torvalds <torvalds@g5.osdl.org>
Mon, 26 Jun 2006 18:05:15 +0000 (11:05 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 26 Jun 2006 18:05:15 +0000 (11:05 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits)
  kbuild: trivial fixes in Makefile
  kbuild: adding symbols in Kconfig and defconfig to TAGS
  kbuild: replace abort() with exit(1)
  kbuild: support for %.symtypes files
  kbuild: fix silentoldconfig recursion
  kbuild: add option for stripping modules while installing them
  kbuild: kill some false positives from modpost
  kbuild: export-symbol usage report generator
  kbuild: fix make -rR breakage
  kbuild: append -dirty for updated but uncommited changes
  kbuild: append git revision for all untagged commits
  kbuild: fix module.symvers parsing in modpost
  kbuild: ignore make's built-in rules & variables
  kbuild: bugfix with initramfs
  kbuild: modpost build fix
  kbuild: check license compatibility when building modules
  kbuild: export-type enhancement to modpost.c
  kbuild: add dependency on kernel.release to the package targets
  kbuild: `make kernelrelease' speedup
  kconfig: KCONFIG_OVERWRITECONFIG
  ...

1  2 
Makefile
arch/arm/Makefile
drivers/mtd/Kconfig
drivers/mtd/maps/Kconfig
drivers/scsi/Kconfig
init/Kconfig
kernel/module.c
sound/oss/Kconfig

diff --combined Makefile
+++ b/Makefile
@@@ -1,7 -1,7 +1,7 @@@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 17
 -EXTRAVERSION =-rc6
 +EXTRAVERSION =
  NAME=Crazed Snow-Weasel
  
  # *DOCUMENTATION*
@@@ -71,7 -71,7 +71,7 @@@ endi
  # In both cases the working directory must be the root of the kernel src.
  # 1) O=
  # Use "make O=dir/to/store/output/files/"
- # 
+ #
  # 2) Set KBUILD_OUTPUT
  # Set the environment variable KBUILD_OUTPUT to point to the directory
  # where the output files shall be placed.
@@@ -178,18 -178,20 +178,20 @@@ CROSS_COMPILE   ?
  # Architecture as present in compile.h
  UTS_MACHINE := $(ARCH)
  
+ KCONFIG_CONFIG        ?= .config
  # SHELL used by kbuild
  CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
          else if [ -x /bin/bash ]; then echo /bin/bash; \
          else echo sh; fi ; fi)
  
- HOSTCC        = gcc
- HOSTCXX       = g++
- HOSTCFLAGS    = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
- HOSTCXXFLAGS  = -O2
+ HOSTCC       = gcc
+ HOSTCXX      = g++
+ HOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+ HOSTCXXFLAGS = -O2
  
- #     Decide whether to build built-in, modular, or both.
- #     Normally, just do built-in.
+ # Decide whether to build built-in, modular, or both.
+ # Normally, just do built-in.
  
  KBUILD_MODULES :=
  KBUILD_BUILTIN := 1
  #     If we have only "make modules", don't compile built-in objects.
  #     When we're building modules with modversions, we need to consider
  #     the built-in objects during the descend as well, in order to
- #     make sure the checksums are uptodate before we record them.
+ #     make sure the checksums are up to date before we record them.
  
  ifeq ($(MAKECMDGOALS),modules)
    KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
@@@ -230,7 -232,7 +232,7 @@@ export KBUILD_CHECKSRC KBUILD_SRC KBUIL
  #
  # If $(quiet) is empty, the whole command will be printed.
  # If it is set to "quiet_", only the short version will be printed. 
- # If it is set to "silent_", nothing wil be printed at all, since
+ # If it is set to "silent_", nothing will be printed at all, since
  # the variable $(silent_cmd_cc_o_c) doesn't exist.
  #
  # A simple variant is to prefix commands with $(Q) - that's useful
@@@ -265,10 -267,9 +267,9 @@@ MAKEFLAGS += --include-dir=$(srctree
  # We need some generic definitions
  include  $(srctree)/scripts/Kbuild.include
  
- # For maximum performance (+ possibly random breakage, uncomment
- # the following)
- #MAKEFLAGS += -rR
+ # Do not use make's built-in rules and variables
+ # This increases performance and avoid hard-to-debug behavour
+ MAKEFLAGS += -rR
  
  # Make variables (CC, etc...)
  
@@@ -305,21 -306,21 +306,21 @@@ LINUXINCLUDE    := -Iinclude 
  
  CPPFLAGS        := -D__KERNEL__ $(LINUXINCLUDE)
  
- CFLAGS                := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-                  -fno-strict-aliasing -fno-common
- AFLAGS                := -D__ASSEMBLY__
+ CFLAGS          := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+                    -fno-strict-aliasing -fno-common
+ AFLAGS          := -D__ASSEMBLY__
  
- # Read KERNELRELEASE from .kernelrelease (if it exists)
- KERNELRELEASE = $(shell cat .kernelrelease 2> /dev/null)
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+ KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
  KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
  
- export        VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION \
-       ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
-       CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
      HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
+ export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
+ export ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
+ export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
  
  export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
- export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE 
+ export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
  export AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
  
  # When compiling out-of-tree modules, put MODVERDIR in the module
@@@ -357,12 -358,13 +358,13 @@@ endi
  # catch them early, and hand them over to scripts/kconfig/Makefile
  # It is allowed to specify more targets when calling make, including
  # mixing *config targets and build targets.
- # For example 'make oldconfig all'. 
+ # For example 'make oldconfig all'.
  # Detect when mixed targets is specified, and make a second invocation
  # of make so .config is not included in this case either (for *config).
  
  no-dot-config-targets := clean mrproper distclean \
-                        cscope TAGS tags help %docs check%
+                        cscope TAGS tags help %docs check% \
+                        kernelrelease kernelversion
  
  config-targets := 0
  mixed-targets  := 0
@@@ -404,9 -406,8 +406,8 @@@ include $(srctree)/arch/$(ARCH)/Makefil
  export KBUILD_DEFCONFIG
  
  config %config: scripts_basic outputmakefile FORCE
-       $(Q)mkdir -p include/linux
+       $(Q)mkdir -p include/linux include/config
        $(Q)$(MAKE) $(build)=scripts/kconfig $@
-       $(Q)$(MAKE) -C $(srctree) KBUILD_SRC= .kernelrelease
  
  else
  # ===========================================================================
  ifeq ($(KBUILD_EXTMOD),)
  # Additional helpers built in scripts/
  # Carefully list dependencies so we do not try to build scripts twice
- # in parrallel
+ # in parallel
  PHONY += scripts
- scripts: scripts_basic include/config/MARKER
+ scripts: scripts_basic include/config/auto.conf
        $(Q)$(MAKE) $(build)=$(@)
  
- scripts_basic: include/linux/autoconf.h
  # Objects we will link into vmlinux / subdirs we need to visit
  init-y                := init/
  drivers-y     := drivers/ sound/
@@@ -436,31 -435,32 +435,32 @@@ ifeq ($(dot-config),1
  
  # Read in dependencies to all Kconfig* files, make sure to run
  # oldconfig if changes are detected.
- -include .kconfig.d
+ -include include/config/auto.conf.cmd
+ -include include/config/auto.conf
  
- include .config
- # If .config needs to be updated, it will be done via the dependency
- # that autoconf has on .config.
  # To avoid any implicit rule to kick in, define an empty command
.config .kconfig.d: ;
$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
  
- # If .config is newer than include/linux/autoconf.h, someone tinkered
+ # If .config is newer than include/config/auto.conf, someone tinkered
  # with it and forgot to run make oldconfig.
- # If kconfig.d is missing then we are probarly in a cleaned tree so
+ # if auto.conf.cmd is missing then we are probably in a cleaned tree so
  # we execute the config step to be sure to catch updated Kconfig files
- include/linux/autoconf.h: .kconfig.d .config
-       $(Q)mkdir -p include/linux
+ include/config/auto.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
+ ifeq ($(KBUILD_EXTMOD),)
        $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
+ else
+       $(error kernel configuration not valid - run 'make prepare' in $(srctree) to update it)
+ endif
  else
  # Dummy target needed, because used as prerequisite
- include/linux/autoconf.h: ;
+ include/config/auto.conf: ;
  endif
  
  # The all: target is the default when no target is given on the
  # command line.
  # This allow a user to issue only 'make' to build a kernel including modules
- # Defaults vmlinux but it is usually overriden in the arch makefile
+ # Defaults vmlinux but it is usually overridden in the arch makefile
  all: vmlinux
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
@@@ -492,11 -492,11 +492,11 @@@ CHECKFLAGS     += $(NOSTDINC_FLAGS
  # warn about C99 declaration after statement
  CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
  
- # disable pointer signedness warnings in gcc 4.0
+ # disable pointer signed / unsigned warnings in gcc 4.0
  CFLAGS += $(call cc-option,-Wno-pointer-sign,)
  
  # Default kernel image to build when no specific target is given.
- # KBUILD_IMAGE may be overruled on the commandline or
+ # KBUILD_IMAGE may be overruled on the command line or
  # set in the environment
  # Also any assignments in arch/$(ARCH)/Makefile take precedence over
  # this default value
@@@ -510,12 -510,29 +510,29 @@@ export  INSTALL_PATH ?= /boo
  #
  # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory
  # relocations required by build roots.  This is not defined in the
- # makefile but the arguement can be passed to make if needed.
+ # makefile but the argument can be passed to make if needed.
  #
  
  MODLIB        = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
  export MODLIB
  
+ #
+ #  INSTALL_MOD_STRIP, if defined, will cause modules to be
+ #  stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
+ #  the default option --strip-debug will be used.  Otherwise,
+ #  INSTALL_MOD_STRIP will used as the options to the strip command.
+ ifdef INSTALL_MOD_STRIP
+ ifeq ($(INSTALL_MOD_STRIP),1)
+ mod_strip_cmd = $STRIP) --strip-debug
+ else
+ mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
+ endif # INSTALL_MOD_STRIP=1
+ else
+ mod_strip_cmd = true
+ endif # INSTALL_MOD_STRIP
+ export mod_strip_cmd
  
  ifeq ($(KBUILD_EXTMOD),)
  core-y                += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
@@@ -539,7 -556,7 +556,7 @@@ libs-y             := $(libs-y1) $(libs-y2
  
  # Build vmlinux
  # ---------------------------------------------------------------------------
- # vmlinux is build from the objects selected by $(vmlinux-init) and
+ # vmlinux is built from the objects selected by $(vmlinux-init) and
  # $(vmlinux-main). Most are built-in.o files from top-level directories
  # in the kernel tree, others are specified in arch/$(ARCH)Makefile.
  # Ordering when linking is important, and $(vmlinux-init) must be first.
@@@ -590,7 -607,7 +607,7 @@@ quiet_cmd_vmlinux_version = GEN     .ve
        $(MAKE) $(build)=init
  
  # Generate System.map
- quiet_cmd_sysmap = SYSMAP 
+ quiet_cmd_sysmap = SYSMAP
        cmd_sysmap = $(CONFIG_SHELL) $(srctree)/scripts/mksysmap
  
  # Link of vmlinux
@@@ -719,7 -736,7 +736,7 @@@ $(vmlinux-dirs): prepare script
        $(Q)$(MAKE) $(build)=$@
  
  # Build the kernel release string
- # The KERNELRELEASE is stored in a file named .kernelrelease
+ # The KERNELRELEASE is stored in a file named include/config/kernel.release
  # to be used when executing for example make install or make modules_install
  #
  # Take the contents of any files called localversion* and the config
@@@ -737,10 -754,10 +754,10 @@@ _localver = $(foreach f, $(__localver)
  localver = $(subst $(space),, \
           $(shell cat /dev/null $(_localver)) \
           $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
-              
  # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called
  # and if the SCM is know a tag from the SCM is appended.
- # The appended tag is determinded by the SCM used.
+ # The appended tag is determined by the SCM used.
  #
  # Currently, only git is supported.
  # Other SCMs can edit scripts/setlocalversion and add the appropriate
@@@ -753,9 -770,9 +770,9 @@@ endi
  
  localver-full = $(localver)$(localver-auto)
  
- # Store (new) KERNELRELASE string in .kernelrelease
+ # Store (new) KERNELRELASE string in include/config/kernel.release
  kernelrelease = $(KERNELVERSION)$(localver-full)
.kernelrelease: FORCE
include/config/kernel.release: include/config/auto.conf FORCE
        $(Q)rm -f $@
        $(Q)echo $(kernelrelease) > $@
  
@@@ -776,10 -793,10 +793,10 @@@ PHONY += prepare-al
  # and if so do:
  # 1) Check that make has not been executed in the kernel src $(srctree)
  # 2) Create the include2 directory, used for the second asm symlink
- prepare3: .kernelrelease
+ prepare3: include/config/kernel.release
  ifneq ($(KBUILD_SRC),)
        @echo '  Using $(srctree) as source for kernel'
-       $(Q)if [ -f $(srctree)/.config ]; then \
+       $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
                echo "  $(srctree) is not clean, please run 'make mrproper'";\
                echo "  in the '$(srctree)' directory.";\
                /bin/false; \
@@@ -792,7 -809,7 +809,7 @@@ endi
  prepare2: prepare3 outputmakefile
  
  prepare1: prepare2 include/linux/version.h include/asm \
-                    include/config/MARKER
+                    include/config/auto.conf
  ifneq ($(KBUILD_MODULES),)
        $(Q)mkdir -p $(MODVERDIR)
        $(Q)rm -f $(MODVERDIR)/*
@@@ -806,27 -823,20 +823,20 @@@ prepare0: archprepare FORC
  # All the preparing..
  prepare prepare-all: prepare0
  
- #     Leave this as default for preprocessing vmlinux.lds.S, which is now
- #     done in arch/$(ARCH)/kernel/Makefile
+ # Leave this as default for preprocessing vmlinux.lds.S, which is now
+ # done in arch/$(ARCH)/kernel/Makefile
  
  export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
  
- #     FIXME: The asm symlink changes when $(ARCH) changes. That's
- #     hard to detect, but I suppose "make mrproper" is a good idea
- #     before switching between archs anyway.
+ # FIXME: The asm symlink changes when $(ARCH) changes. That's
+ # hard to detect, but I suppose "make mrproper" is a good idea
+ # before switching between archs anyway.
  
  include/asm:
        @echo '  SYMLINK $@ -> include/asm-$(ARCH)'
        $(Q)if [ ! -d include ]; then mkdir -p include; fi;
        @ln -fsn asm-$(ARCH) $@
  
- #     Split autoconf.h into include/linux/config/*
- include/config/MARKER: scripts/basic/split-include include/linux/autoconf.h
-       @echo '  SPLIT   include/linux/autoconf.h -> include/config/*'
-       @scripts/basic/split-include include/linux/autoconf.h include/config
-       @touch $@
  # Generate some files
  # ---------------------------------------------------------------------------
  
@@@ -846,7 -856,7 +856,7 @@@ define filechk_version.
        )
  endef
  
- include/linux/version.h: $(srctree)/Makefile .config .kernelrelease FORCE
+ include/linux/version.h: $(srctree)/Makefile include/config/kernel.release FORCE
        $(call filechk,version.h)
  
  # ---------------------------------------------------------------------------
@@@ -860,7 -870,7 +870,7 @@@ depend dep
  
  ifdef CONFIG_MODULES
  
- #     By default, build modules as well
+ # By default, build modules as well
  
  all: modules
  
@@@ -942,7 -952,7 +952,7 @@@ CLEAN_FILES +=     vmlinux System.map 
  MRPROPER_DIRS  += include/config include2
  MRPROPER_FILES += .config .config.old include/asm .version .old_version \
                    include/linux/autoconf.h include/linux/version.h \
-                 .kernelrelease Module.symvers tags TAGS cscope*
+                 Module.symvers tags TAGS cscope*
  
  # clean - Delete most, but leave enough to build external modules
  #
@@@ -958,8 -968,9 +968,9 @@@ clean: archclean $(clean-dirs
        $(call cmd,rmdirs)
        $(call cmd,rmfiles)
        @find . $(RCS_FIND_IGNORE) \
-               \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
-               -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
+               \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
+               -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
+               -o -name '*.symtypes' \) \
                -type f -print | xargs rm -f
  
  # mrproper - Delete all generated files, including .config
@@@ -982,9 -993,9 +993,9 @@@ PHONY += distclea
  
  distclean: mrproper
        @find $(srctree) $(RCS_FIND_IGNORE) \
-               \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
+               \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
                -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-               -o -name '.*.rej' -o -size 0 \
+               -o -name '.*.rej' -o -size 0 \
                -o -name '*%' -o -name '.*.cmd' -o -name 'core' \) \
                -type f -print | xargs rm -f
  
  # rpm target kept for backward compatibility
  package-dir   := $(srctree)/scripts/package
  
- %pkg: FORCE
+ %pkg: include/config/kernel.release FORCE
        $(Q)$(MAKE) $(build)=$(package-dir) $@
- rpm: FORCE
+ rpm: include/config/kernel.release FORCE
        $(Q)$(MAKE) $(build)=$(package-dir) $@
  
  
@@@ -1077,7 -1088,7 +1088,7 @@@ else # KBUILD_EXTMO
  # make M=dir modules   Make all modules in specified dir
  # make M=dir         Same as 'make M=dir modules'
  # make M=dir modules_install
- #                      Install the modules build in the module directory
+ #                      Install the modules built in the module directory
  #                      Assumes install directory is already created
  
  # We are always building modules
@@@ -1136,7 -1147,7 +1147,7 @@@ clean:  rm-dirs := $(MODVERDIR
  clean: $(clean-dirs)
        $(call cmd,rmdirs)
        @find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \
-               \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
+               \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
                -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \
                -type f -print | xargs rm -f
  
  ALLINCLUDE_ARCHS := $(ARCH)
  endif
  else
- #Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behaviour.
+ #Allow user to specify only ALLSOURCE_PATHS on the command line, keeping existing behavour.
  ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS)
  endif
  
  ALLSOURCE_ARCHS := $(ARCH)
  
- define all-sources
-       ( find $(__srctree) $(RCS_FIND_IGNORE) \
+ define find-sources
+         ( find $(__srctree) $(RCS_FIND_IGNORE) \
               \( -name include -o -name arch \) -prune -o \
-              -name '*.[chS]' -print; \
+              -name $1 -print; \
          for ARCH in $(ALLSOURCE_ARCHS) ; do \
               find $(__srctree)arch/$${ARCH} $(RCS_FIND_IGNORE) \
-                   -name '*.[chS]' -print; \
+                   -name $1 -print; \
          done ; \
          find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \
-              -name '*.[chS]' -print; \
+              -name $1 -print; \
          find $(__srctree)include $(RCS_FIND_IGNORE) \
               \( -name config -o -name 'asm-*' \) -prune \
-              -o -name '*.[chS]' -print; \
+              -o -name $1 -print; \
          for ARCH in $(ALLINCLUDE_ARCHS) ; do \
               find $(__srctree)include/asm-$${ARCH} $(RCS_FIND_IGNORE) \
-                   -name '*.[chS]' -print; \
+                   -name $1 -print; \
          done ; \
          find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
-              -name '*.[chS]' -print )
+              -name $1 -print )
+ endef
+ define all-sources
+       $(call find-sources,'*.[chS]')
+ endef
+ define all-kconfigs
+       $(call find-sources,'Kconfig*')
+ endef
+ define all-defconfigs
+       $(call find-sources,'defconfig')
  endef
  
  quiet_cmd_cscope-file = FILELST cscope.files
@@@ -1219,7 -1240,13 +1240,13 @@@ define cmd_TAG
                  echo "-I __initdata,__exitdata,__acquires,__releases  \
                        -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL              \
                        --extra=+f --c-kinds=+px"`;                     \
-                 $(all-sources) | xargs etags $$ETAGSF -a
+                 $(all-sources) | xargs etags $$ETAGSF -a;             \
+       if test "x$$ETAGSF" = x; then                                 \
+               $(all-kconfigs) | xargs etags -a                      \
+               --regex='/^config[ \t]+\([a-zA-Z0-9_]+\)/\1/';        \
+               $(all-defconfigs) | xargs etags -a                    \
+               --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/';     \
+       fi
  endef
  
  TAGS: FORCE
@@@ -1259,14 -1286,14 +1286,14 @@@ namespacecheck
  endif #ifeq ($(config-targets),1)
  endif #ifeq ($(mixed-targets),1)
  
- PHONY += checkstack
+ PHONY += checkstack kernelrelease kernelversion
  checkstack:
        $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
        $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
  
  kernelrelease:
-       $(if $(wildcard .kernelrelease), $(Q)echo $(KERNELRELEASE), \
-       $(error kernelrelease not valid - run 'make *config' to update it))
+       $(if $(wildcard include/config/kernel.release), $(Q)echo $(KERNELRELEASE), \
+       $(error kernelrelease not valid - run 'make prepare' to update it))
  kernelversion:
        @echo $(KERNELVERSION)
  
@@@ -1301,6 -1328,8 +1328,8 @@@ endi
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  %.o: %.S prepare scripts FORCE
        $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+ %.symtypes: %.c prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  
  # Modules
  / %/: prepare scripts FORCE
diff --combined arch/arm/Makefile
@@@ -116,8 -116,6 +116,8 @@@ endi
   machine-$(CONFIG_ARCH_REALVIEW)   := realview
   machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200
   machine-$(CONFIG_ARCH_EP93XX)     := ep93xx
 + machine-$(CONFIG_ARCH_PNX4008)    := pnx4008
 + machine-$(CONFIG_ARCH_NETX)       := netx
  
  ifeq ($(CONFIG_ARCH_EBSA110),y)
  # This is what happens if you forget the IOCS16 line.
@@@ -177,7 -175,7 +177,7 @@@ boot := arch/arm/boo
  #     them changed.  We use .arch to indicate when they were updated
  #     last, otherwise make uses the target directory mtime.
  
- include/asm-arm/.arch: $(wildcard include/config/arch/*.h) include/config/MARKER
+ include/asm-arm/.arch: $(wildcard include/config/arch/*.h) include/config/auto.conf
        @echo '  SYMLINK include/asm-arm/arch -> include/asm-arm/$(INCDIR)'
  ifneq ($(KBUILD_SRC),)
        $(Q)mkdir -p include/asm-arm
diff --combined drivers/mtd/Kconfig
@@@ -78,7 -78,7 +78,7 @@@ config MTD_REDBOOT_DIRECTORY_BLOC
          option.
  
          The option specifies which Flash sectors holds the RedBoot
 -        partition table.  A zero or positive value gives an absolete
 +        partition table.  A zero or positive value gives an absolute
          erase block number. A negative value specifies a number of
          sectors before the end of the device.
  
          block and "-2" means the penultimate block.
  
  config MTD_REDBOOT_PARTS_UNALLOCATED
-       bool "  Include unallocated flash regions"
+       bool "Include unallocated flash regions"
        depends on MTD_REDBOOT_PARTS
        help
          If you need to register each unallocated flash region as a MTD
          'partition', enable this option.
  
  config MTD_REDBOOT_PARTS_READONLY
-       bool "  Force read-only for RedBoot system images"
+       bool "Force read-only for RedBoot system images"
        depends on MTD_REDBOOT_PARTS
        help
          If you need to force read-only for 'RedBoot', 'RedBoot Config' and
@@@ -103,7 -103,7 +103,7 @@@ config MTD_CMDLINE_PART
        bool "Command line partition table parsing"
        depends on MTD_PARTITIONS = "y"
        ---help---
 -        Allow generic configuration of the MTD paritition tables via the kernel
 +        Allow generic configuration of the MTD partition tables via the kernel
          command line. Multiple flash resources are supported for hardware where
          different kinds of flash memory are available.
  
diff --combined drivers/mtd/maps/Kconfig
@@@ -37,7 -37,7 +37,7 @@@ config MTD_PHYSMAP_STAR
  config MTD_PHYSMAP_LEN
        hex "Physical length of flash mapping"
        depends on MTD_PHYSMAP
 -      default "0x4000000"
 +      default "0"
        help
          This is the total length of the mapping of the flash chips on
          your particular board. If there is space, or aliases, in the
@@@ -78,7 -78,7 +78,7 @@@ config MTD_PNC200
  
  config MTD_SC520CDP
        tristate "CFI Flash device mapped on AMD SC520 CDP"
 -      depends on X86 && MTD_CFI
 +      depends on X86 && MTD_CFI && MTD_CONCAT
        help
          The SC520 CDP board has two banks of CFI-compliant chips and one
          Dual-in-line JEDEC chip. This 'mapping' driver supports that
@@@ -109,7 -109,7 +109,7 @@@ config MTD_TS550
          mtd1 allows you to reprogram your BIOS. BE VERY CAREFUL.
  
          Note that jumper 3 ("Write Enable Drive A") must be set
 -        otherwise detection won't succeeed.
 +        otherwise detection won't succeed.
  
  config MTD_SBC_GXX
        tristate "CFI Flash device mapped on Arcom SBC-GXx boards"
@@@ -200,8 -200,8 +200,8 @@@ config MTD_TSUNAM
          Support for the flash chip on Tsunami TIG bus.
  
  config MTD_LASAT
 -      tristate "Flash chips on LASAT board"
 -      depends on LASAT
 +      tristate "LASAT flash device"
 +      depends on LASAT && MTD_CFI
        help
          Support for the flash chips on the Lasat 100 and 200 boards.
  
@@@ -212,7 -212,7 +212,7 @@@ config MTD_NETte
          Support for flash chips on NETtel/SecureEdge/SnapGear boards.
  
  config MTD_ALCHEMY
-       tristate '  AMD Alchemy Pb1xxx/Db1xxx/RDK MTD support'
+       tristate "AMD Alchemy Pb1xxx/Db1xxx/RDK MTD support"
        depends on SOC_AU1X00
        help
          Flash memory access on AMD Alchemy Pb/Db/RDK Reference Boards
@@@ -561,6 -561,7 +561,6 @@@ config MTD_PCMCI
  config MTD_PCMCIA_ANONYMOUS
        bool "Use PCMCIA MTD drivers for anonymous PCMCIA cards"
        depends on MTD_PCMCIA
 -      default N
        help
          If this option is enabled, PCMCIA cards which do not report
          anything about themselves are assumed to be MTD cards.
diff --combined drivers/scsi/Kconfig
@@@ -531,16 -531,6 +531,16 @@@ config SCSI_PDC_ADM
          This option enables support for Pacific Digital ADMA controllers
  
          If unsure, say N.
 +
 +config SCSI_HPTIOP
 +      tristate "HighPoint RocketRAID 3xxx Controller support"
 +      depends on SCSI && PCI
 +      help
 +        This option enables support for HighPoint RocketRAID 3xxx
 +        controllers.
 +
 +        To compile this driver as a module, choose M here; the module
 +        will be called hptiop. If unsure, say N.
  
  config SCSI_SATA_QSTOR
        tristate "Pacific Digital SATA QStor support"
@@@ -1169,7 -1159,7 +1169,7 @@@ config SCSI_NCR_Q72
          you do not have this SCSI card, so say N.
  
  config SCSI_NCR53C8XX_DEFAULT_TAGS
-       int "  default tagged command queue depth"
+       int "default tagged command queue depth"
        depends on SCSI_ZALON || SCSI_NCR_Q720
        default "8"
        ---help---
          There is no safe option other than using good SCSI devices.
  
  config SCSI_NCR53C8XX_MAX_TAGS
-       int "  maximum number of queued commands"
+       int "maximum number of queued commands"
        depends on SCSI_ZALON || SCSI_NCR_Q720
        default "32"
        ---help---
          There is no safe option and the default answer is recommended.
  
  config SCSI_NCR53C8XX_SYNC
-       int "  synchronous transfers frequency in MHz"
+       int "synchronous transfers frequency in MHz"
        depends on SCSI_ZALON || SCSI_NCR_Q720
        default "20"
        ---help---
          terminations and SCSI conformant devices.
  
  config SCSI_NCR53C8XX_PROFILE
-       bool "  enable profiling"
+       bool "enable profiling"
        depends on SCSI_ZALON || SCSI_NCR_Q720
        help
          This option allows you to enable profiling information gathering.
          The normal answer therefore is N.
  
  config SCSI_NCR53C8XX_NO_DISCONNECT
-       bool "  not allow targets to disconnect"
+       bool "not allow targets to disconnect"
        depends on (SCSI_ZALON || SCSI_NCR_Q720) && SCSI_NCR53C8XX_DEFAULT_TAGS=0
        help
          This option is only provided for safety if you suspect some SCSI
diff --combined init/Kconfig
@@@ -1,3 -1,11 +1,11 @@@
+ config DEFCONFIG_LIST
+       string
+       option defconfig_list
+       default "/lib/modules/$UNAME_RELEASE/.config"
+       default "/etc/kernel-config"
+       default "/boot/config-$UNAME_RELEASE"
+       default "arch/$ARCH/defconfig"
  menu "Code maturity level options"
  
  config EXPERIMENTAL
@@@ -151,8 -159,7 +159,8 @@@ config BSD_PROCESS_ACCT_V
          at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>.
  
  config SYSCTL
 -      bool "Sysctl support"
 +      bool "Sysctl support" if EMBEDDED
 +      default y
        ---help---
          The sysctl interface provides a means of dynamically changing
          certain kernel parameters and variables on the fly without requiring
@@@ -183,8 -190,7 +191,8 @@@ config AUDITSYSCAL
        help
          Enable low-overhead system-call auditing infrastructure that
          can be used independently or with another kernel subsystem,
 -        such as SELinux.
 +        such as SELinux.  To use audit's filesystem watch feature, please
 +        ensure that INOTIFY is configured.
  
  config IKCONFIG
        bool "Kernel .config support"
@@@ -236,6 -242,16 +244,6 @@@ config UID1
        help
          This enables the legacy 16-bit UID syscall wrappers.
  
 -config VM86
 -      depends X86
 -      default y
 -      bool "Enable VM86 support" if EMBEDDED
 -      help
 -          This option is required by programs like DOSEMU to run 16-bit legacy
 -        code on X86 processors. It also may be needed by software like
 -          XFree86 to initialize some video cards via BIOS. Disabling this
 -          option saves about 6k.
 -
  config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size (Look out for broken compilers!)"
        default y
@@@ -381,6 -397,9 +389,6 @@@ config SLO
        default !SLAB
        bool
  
 -config OBSOLETE_INTERMODULE
 -      tristate
 -
  menu "Loadable module support"
  
  config MODULES
diff --combined kernel/module.c
  #include <linux/string.h>
  #include <linux/sched.h>
  #include <linux/mutex.h>
 +#include <linux/unwind.h>
  #include <asm/uaccess.h>
  #include <asm/semaphore.h>
  #include <asm/cacheflush.h>
+ #include <linux/license.h>
  
  #if 0
  #define DEBUGP printk
@@@ -1052,8 -1052,6 +1053,8 @@@ static void free_module(struct module *
        remove_sect_attrs(mod);
        mod_kobject_remove(mod);
  
 +      unwind_remove_table(mod->unwind_info, 0);
 +
        /* Arch-specific cleanup. */
        module_arch_cleanup(mod);
  
@@@ -1251,16 -1249,6 +1252,6 @@@ static void layout_sections(struct modu
        }
  }
  
- static inline int license_is_gpl_compatible(const char *license)
- {
-       return (strcmp(license, "GPL") == 0
-               || strcmp(license, "GPL v2") == 0
-               || strcmp(license, "GPL and additional rights") == 0
-               || strcmp(license, "Dual BSD/GPL") == 0
-               || strcmp(license, "Dual MIT/GPL") == 0
-               || strcmp(license, "Dual MPL/GPL") == 0);
- }
  static void set_license(struct module *mod, const char *license)
  {
        if (!license)
@@@ -1329,7 -1317,7 +1320,7 @@@ int is_exported(const char *name, cons
        if (!mod && lookup_symbol(name, __start___ksymtab, __stop___ksymtab))
                return 1;
        else
 -              if (lookup_symbol(name, mod->syms, mod->syms + mod->num_syms))
 +              if (mod && lookup_symbol(name, mod->syms, mod->syms + mod->num_syms))
                        return 1;
                else
                        return 0;
@@@ -1415,7 -1403,7 +1406,7 @@@ static struct module *load_module(void 
        unsigned int i, symindex = 0, strindex = 0, setupindex, exindex,
                exportindex, modindex, obsparmindex, infoindex, gplindex,
                crcindex, gplcrcindex, versindex, pcpuindex, gplfutureindex,
 -              gplfuturecrcindex;
 +              gplfuturecrcindex, unwindex = 0;
        struct module *mod;
        long err = 0;
        void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */
        versindex = find_sec(hdr, sechdrs, secstrings, "__versions");
        infoindex = find_sec(hdr, sechdrs, secstrings, ".modinfo");
        pcpuindex = find_pcpusec(hdr, sechdrs, secstrings);
 +#ifdef ARCH_UNWIND_SECTION_NAME
 +      unwindex = find_sec(hdr, sechdrs, secstrings, ARCH_UNWIND_SECTION_NAME);
 +#endif
  
        /* Don't keep modinfo section */
        sechdrs[infoindex].sh_flags &= ~(unsigned long)SHF_ALLOC;
        sechdrs[symindex].sh_flags |= SHF_ALLOC;
        sechdrs[strindex].sh_flags |= SHF_ALLOC;
  #endif
 +      if (unwindex)
 +              sechdrs[unwindex].sh_flags |= SHF_ALLOC;
  
        /* Check module struct version now, before we try to use module. */
        if (!check_modstruct_version(sechdrs, versindex, mod)) {
                goto arch_cleanup;
        add_sect_attrs(mod, hdr->e_shnum, secstrings, sechdrs);
  
 +      /* Size of section 0 is 0, so this works well if no unwind info. */
 +      mod->unwind_info = unwind_add_table(mod,
 +                                          (void *)sechdrs[unwindex].sh_addr,
 +                                          sechdrs[unwindex].sh_size);
 +
        /* Get rid of temporary copy */
        vfree(hdr);
  
@@@ -1849,7 -1827,6 +1840,7 @@@ sys_init_module(void __user *umod
        mod->state = MODULE_STATE_LIVE;
        /* Drop initial reference. */
        module_put(mod);
 +      unwind_remove_table(mod->unwind_info, 1);
        module_free(mod, mod->module_init);
        mod->module_init = NULL;
        mod->init_size = 0;
diff --combined sound/oss/Kconfig
@@@ -98,8 -98,8 +98,8 @@@ config SOUND_HAL
        tristate "SGI HAL2 sound (EXPERIMENTAL)"
        depends on SOUND_PRIME && SGI_IP22 && EXPERIMENTAL
        help
 -        Say Y or M if you have an SGI Indy system and want to be able to
 -        use it's on-board A2 audio system.
 +        Say Y or M if you have an SGI Indy or Indigo2 system and want to be able to
 +        use its on-board A2 audio system.
  
  config SOUND_IT8172
        tristate "IT8172G Sound"
@@@ -114,9 -114,8 +114,9 @@@ config SOUND_VRC547
          with the AC97 codec.
  
  config SOUND_AU1550_AC97
 -      tristate "Au1550 AC97 Sound"
 -      depends on SOUND_PRIME && SOC_AU1550
 +      tristate "Au1550/Au1200 AC97 Sound"
 +      select SND_AC97_CODEC
 +      depends on SOUND_PRIME && (SOC_AU1550 || SOC_AU1200)
  
  config SOUND_TRIDENT
        tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core"
@@@ -839,6 -838,6 +839,6 @@@ config SOUND_SH_DAC_AUDI
        depends on SOUND_PRIME && CPU_SH3
  
  config SOUND_SH_DAC_AUDIO_CHANNEL
-       int "    DAC channel"
+       int "DAC channel"
        default "1"
        depends on SOUND_SH_DAC_AUDIO