]> Git Repo - linux.git/commitdiff
Merge commit 'v2.6.35' into kbuild/kbuild
authorMichal Marek <[email protected]>
Wed, 4 Aug 2010 11:59:13 +0000 (13:59 +0200)
committerMichal Marek <[email protected]>
Wed, 4 Aug 2010 11:59:13 +0000 (13:59 +0200)
Conflicts:
arch/powerpc/Makefile

1  2 
Makefile
arch/blackfin/Makefile
arch/ia64/Makefile
arch/mips/Makefile
arch/powerpc/Makefile
arch/s390/Makefile
lib/Kconfig.debug
scripts/mod/file2alias.c
scripts/mod/modpost.c

diff --combined Makefile
index 7af9d54794611fb2c1d9c2607f3d16a67dad3566,141da26fda4b87870ba19237f61ced915d0cebcb..968ac2af763bcdc76dcef5f298236a65a0677b0a
+++ b/Makefile
@@@ -1,8 -1,8 +1,8 @@@
  VERSION = 2
  PATCHLEVEL = 6
- SUBLEVEL = 33
- EXTRAVERSION = -rc6
- NAME = Man-Eating Seals of Antiquity
+ SUBLEVEL = 35
+ EXTRAVERSION =
+ NAME = Sheep on Meth
  
  # *DOCUMENTATION*
  # To see a list of typical targets execute "make help"
@@@ -332,9 -332,10 +332,9 @@@ CHECK             = spars
  
  CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
                  -Wbitwise -Wno-return-void $(CF)
 -MODFLAGS      = -DMODULE
 -CFLAGS_MODULE   = $(MODFLAGS)
 -AFLAGS_MODULE   = $(MODFLAGS)
 -LDFLAGS_MODULE  = -T $(srctree)/scripts/module-common.lds
 +CFLAGS_MODULE   =
 +AFLAGS_MODULE   =
 +LDFLAGS_MODULE  =
  CFLAGS_KERNEL =
  AFLAGS_KERNEL =
  CFLAGS_GCOV   = -fprofile-arcs -ftest-coverage
@@@ -353,12 -354,7 +353,12 @@@ KBUILD_CFLAGS   := -Wall -Wundef -Wstri
                   -Werror-implicit-function-declaration \
                   -Wno-format-security \
                   -fno-delete-null-pointer-checks
 +KBUILD_AFLAGS_KERNEL :=
 +KBUILD_CFLAGS_KERNEL :=
  KBUILD_AFLAGS   := -D__ASSEMBLY__
 +KBUILD_AFLAGS_MODULE  := -DMODULE
 +KBUILD_CFLAGS_MODULE  := -DMODULE
 +KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
  
  # Read KERNELRELEASE from include/config/kernel.release (if it exists)
  KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
@@@ -373,8 -369,6 +373,8 @@@ export HOSTCXX HOSTCXXFLAGS LDFLAGS_MOD
  export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
  export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV
  export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
 +export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
 +export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
  
  # When compiling out-of-tree modules, put MODVERDIR in the module
  # tree rather than in the kernel tree. The kernel tree might
@@@ -420,7 -414,7 +420,7 @@@ endi
  no-dot-config-targets := clean mrproper distclean \
                         cscope TAGS tags help %docs check% \
                         include/linux/version.h headers_% \
 -                       kernelrelease kernelversion
 +                       kernelversion
  
  config-targets := 0
  mixed-targets  := 0
@@@ -563,10 -557,6 +563,10 @@@ KBUILD_CFLAGS    += -
  KBUILD_AFLAGS += -gdwarf-2
  endif
  
 +ifdef CONFIG_DEBUG_INFO_REDUCED
 +KBUILD_CFLAGS         += $(call cc-option, -femit-struct-debug-baseonly)
 +endif
 +
  ifdef CONFIG_FUNCTION_TRACER
  KBUILD_CFLAGS += -pg
  endif
@@@ -613,7 -603,7 +613,7 @@@ endi
  # Use --build-id when available.
  LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
                              $(call cc-ldoption, -Wl$(comma)--build-id,))
 -LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
 +KBUILD_LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
  LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
  
  ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
@@@ -894,11 -884,9 +894,9 @@@ $(vmlinux-dirs): prepare script
        $(Q)$(MAKE) $(build)=$@
  
  # Store (new) KERNELRELASE string in include/config/kernel.release
- localversion = $(shell $(CONFIG_SHELL) \
-              $(srctree)/scripts/setlocalversion $(srctree))
  include/config/kernel.release: include/config/auto.conf FORCE
        $(Q)rm -f $@
-       $(Q)echo $(KERNELVERSION)$(localversion) > $@
+       $(Q)echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" > $@
  
  
  # Things we need to do before we recursively start building the kernel
@@@ -1037,7 -1025,7 +1035,7 @@@ all: module
  #     using awk while concatenating to the final file.
  
  PHONY += modules
- modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
+ modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
        $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
        @$(kecho) '  Building modules, stage 2.';
        $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
@@@ -1059,7 -1047,7 +1057,7 @@@ PHONY += modules_instal
  modules_install: _modinst_ _modinst_post
  
  PHONY += _modinst_
- _modinst_: modules.builtin
+ _modinst_:
        @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
                echo "Warning: you may need to install module-init-tools"; \
                echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
@@@ -1405,9 -1393,9 +1403,9 @@@ checkstack
        $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
        $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
  
 -kernelrelease:
 -      $(if $(wildcard include/config/kernel.release), $(Q)echo $(KERNELRELEASE), \
 -      $(error kernelrelease not valid - run 'make prepare' to update it))
 +kernelrelease: include/config/kernel.release
 +      @echo $(KERNELRELEASE)
 +
  kernelversion:
        @echo $(KERNELVERSION)
  
@@@ -1484,7 -1472,6 +1482,7 @@@ cmd_crmodverdir = $(Q)mkdir -p $(MODVER
                    $(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)
  
  a_flags = -Wp,-MD,$(depfile) $(KBUILD_AFLAGS) $(AFLAGS_KERNEL) \
 +        $(KBUILD_AFLAGS_KERNEL)                              \
          $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(KBUILD_CPPFLAGS) \
          $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(basetarget).o)
  
diff --combined arch/blackfin/Makefile
index f7ef923297fc1814956adbf6a58aa371ae2efd09,5a97a31d4bbd55f7d16b1f3e78def86a19a66906..9d5ffaf5492a2f749bd9d9a880956db46a0022f2
@@@ -14,9 -14,12 +14,12 @@@ OBJCOPYFLAGS     := -O binary -R .note 
  GZFLAGS          := -9
  
  KBUILD_CFLAGS           += $(call cc-option,-mno-fdpic)
+ ifeq ($(CONFIG_ROMKERNEL),y)
+ KBUILD_CFLAGS           += -mlong-calls
+ endif
  KBUILD_AFLAGS           += $(call cc-option,-mno-fdpic)
 -CFLAGS_MODULE    += -mlong-calls
 -LDFLAGS_MODULE   += -m elf32bfin
 +KBUILD_CFLAGS_MODULE    += -mlong-calls
 +KBUILD_LDFLAGS_MODULE   += -m elf32bfin
  KALLSYMS         += --symbol-prefix=_
  
  KBUILD_DEFCONFIG := BF537-STAMP_defconfig
@@@ -130,7 -133,6 +133,6 @@@ KBUILD_CFLAGS += -Iarch/$(ARCH)/mach-$(
  KBUILD_CPPFLAGS       += $(patsubst %,-I$(srctree)/%include,$(machdirs))
  
  CLEAN_FILES += \
-       arch/$(ARCH)/include/asm/asm-offsets.h \
        arch/$(ARCH)/kernel/asm-offsets.s \
  
  archclean:
  
  INSTALL_PATH ?= /tftpboot
  boot := arch/$(ARCH)/boot
- BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma
+ BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.xip
  PHONY += $(BOOT_TARGETS) install
  KBUILD_IMAGE := $(boot)/vmImage
  
@@@ -156,6 -158,7 +158,7 @@@ define archhel
    echo  '  vmImage.bz2     - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bz2)'
    echo  '* vmImage.gz      - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)'
    echo  '  vmImage.lzma    - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)'
+   echo  '  vmImage.xip     - XIP Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.xip)'
    echo  '  install         - Install kernel using'
    echo  '                     (your) ~/bin/$(INSTALLKERNEL) or'
    echo  '                     (distribution) PATH: $(INSTALLKERNEL) or'
diff --combined arch/ia64/Makefile
index 62b10f5f2540361609e4ccf9ec2b569bd8d20dce,8ae0d2604ce1201bfe4156b70cc5a47344e8eff7..be7bfa12b7053263e903dd70e247a365fd05f917
@@@ -22,13 -22,13 +22,13 @@@ CHECKFLAGS += -m64 -D__ia64=1 -D__ia64_
  
  OBJCOPYFLAGS  := --strip-all
  LDFLAGS_vmlinux       := -static
 -LDFLAGS_MODULE        += -T $(srctree)/arch/ia64/module.lds
 -AFLAGS_KERNEL := -mconstant-gp
 +KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/ia64/module.lds
 +KBUILD_AFLAGS_KERNEL := -mconstant-gp
  EXTRA         :=
  
  cflags-y      := -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f12-f15,f32-f127 \
                   -falign-functions=32 -frename-registers -fno-optimize-sibling-calls
 -CFLAGS_KERNEL := -mconstant-gp
 +KBUILD_CFLAGS_KERNEL := -mconstant-gp
  
  GAS_STATUS    = $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
  KBUILD_CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
@@@ -46,7 -46,6 +46,6 @@@ head-y := arch/ia64/kernel/head.o arch/
  
  libs-y                                += arch/ia64/lib/
  core-y                                += arch/ia64/kernel/ arch/ia64/mm/
- core-$(CONFIG_IA32_SUPPORT)   += arch/ia64/ia32/
  core-$(CONFIG_IA64_DIG)       += arch/ia64/dig/
  core-$(CONFIG_IA64_DIG_VTD)   += arch/ia64/dig/
  core-$(CONFIG_IA64_GENERIC)   += arch/ia64/dig/
diff --combined arch/mips/Makefile
index a77dcf35c14e92d2bc0a4d2e2e55341eafa7f164,0b9c01add0a06d91b49ff813f8eb127c70ae112a..f7139b2dfed15be1498d54790013e82ddfec91fd
@@@ -93,8 -93,7 +93,8 @@@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmli
  cflags-y                      += -G 0 -mno-abicalls -fno-pic -pipe
  cflags-y                      += -msoft-float
  LDFLAGS_vmlinux                       += -G 0 -static -n -nostdlib
 -MODFLAGS                      += -mlong-calls
 +KBUILD_AFLAGS_MODULE          += -mlong-calls
 +KBUILD_CFLAGS_MODULE          += -mlong-calls
  
  cflags-y += -ffreestanding
  
@@@ -137,6 -136,19 +137,19 @@@ cflags-$(CONFIG_CPU_LOONGSON2E) += 
        $(call cc-option,-march=loongson2e,-march=r4600)
  cflags-$(CONFIG_CPU_LOONGSON2F) += \
        $(call cc-option,-march=loongson2f,-march=r4600)
+ # enable the workarounds for loongson2f
+ ifdef CONFIG_CPU_LOONGSON2F_WORKAROUNDS
+   ifeq ($(call as-option,-Wa$(comma)-mfix-loongson2f-nop,),)
+     $(error only binutils >= 2.20.2 have needed option -mfix-loongson2f-nop)
+   else
+     cflags-$(CONFIG_CPU_NOP_WORKAROUNDS) += -Wa$(comma)-mfix-loongson2f-nop
+   endif
+   ifeq ($(call as-option,-Wa$(comma)-mfix-loongson2f-jump,),)
+     $(error only binutils >= 2.20.2 have needed option -mfix-loongson2f-jump)
+   else
+     cflags-$(CONFIG_CPU_JUMP_WORKAROUNDS) += -Wa$(comma)-mfix-loongson2f-jump
+   endif
+ endif
  
  cflags-$(CONFIG_CPU_MIPS32_R1)        += $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
                        -Wa,-mips32 -Wa,--trap
@@@ -173,8 -185,7 +186,8 @@@ cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS)     
  
  ifdef CONFIG_CPU_SB1
  ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
 -MODFLAGS      += -msb1-pass1-workarounds
 +KBUILD_AFLAGS_MODULE += -msb1-pass1-workarounds
 +KBUILD_CFLAGS_MODULE += -msb1-pass1-workarounds
  endif
  endif
  
@@@ -186,6 -197,15 +199,15 @@@ libs-$(CONFIG_CFE)               += arch/mips/fw/cfe
  libs-$(CONFIG_SNIPROM)                += arch/mips/fw/sni/
  libs-y                                += arch/mips/fw/lib/
  
+ #
+ # Kernel compression
+ #
+ ifdef SYS_SUPPORTS_ZBOOT
+ COMPRESSION_FNAME             = vmlinuz
+ else
+ COMPRESSION_FNAME             = vmlinux
+ endif
  #
  # Board-dependent options and extra files
  #
@@@ -334,11 -354,11 +356,11 @@@ load-$(CONFIG_WR_PPMC)          += 0xffffffff80
  #
  # Loongson family
  #
- core-$(CONFIG_MACH_LOONGSON) +=arch/mips/loongson/
+ core-$(CONFIG_MACH_LOONGSON) += arch/mips/loongson/
  cflags-$(CONFIG_MACH_LOONGSON) += -I$(srctree)/arch/mips/include/asm/mach-loongson \
                      -mno-branch-likely
- load-$(CONFIG_LEMOTE_FULOONG2E) +=0xffffffff80100000
- load-$(CONFIG_LEMOTE_MACH2F) +=0xffffffff80200000
+ load-$(CONFIG_LEMOTE_FULOONG2E) += 0xffffffff80100000
+ load-$(CONFIG_LEMOTE_MACH2F) += 0xffffffff80200000
  
  #
  # MIPS Malta board
  core-$(CONFIG_MIPS_MALTA)     += arch/mips/mti-malta/
  cflags-$(CONFIG_MIPS_MALTA)   += -I$(srctree)/arch/mips/include/asm/mach-malta
  load-$(CONFIG_MIPS_MALTA)     += 0xffffffff80100000
- all-$(CONFIG_MIPS_MALTA)      := vmlinuz.bin
+ all-$(CONFIG_MIPS_MALTA)      := $(COMPRESSION_FNAME).bin
  
  #
  # MIPS SIM
@@@ -596,7 -616,7 +618,7 @@@ load-$(CONFIG_SNI_RM)              += 0xffffffff806
  else
  load-$(CONFIG_SNI_RM)         += 0xffffffff80030000
  endif
- all-$(CONFIG_SNI_RM)          := vmlinuz.ecoff
+ all-$(CONFIG_SNI_RM)          := $(COMPRESSION_FNAME).ecoff
  
  #
  # Common TXx9
diff --combined arch/powerpc/Makefile
index b68a83853e1cb36b4af59a3e190afc7a04cdd483,77cfe7a29e2574a3601c0db1c9a58b96bedfd101..5d42f5eae70f43792d9c3e84ac0a0bb0e5833bcf
@@@ -92,10 -92,10 +92,10 @@@ endi
  else
        KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
  endif
- else
- KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
  endif
  
 -LDFLAGS_MODULE        += arch/powerpc/lib/crtsavres.o
++KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
  ifeq ($(CONFIG_TUNE_CELL),y)
        KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
  endif
diff --combined arch/s390/Makefile
index 83ef8724c83367f28f7f1884d73a079e32962cef,30c5f01f93b0017741bb9c18f5035925d7d3869d..0c9e6c6d2a645f7df5f2f4f7f9f07824a327c0d1
@@@ -14,6 -14,7 +14,7 @@@
  #
  
  ifndef CONFIG_64BIT
+ LD_BFD                := elf32-s390
  LDFLAGS               := -m elf_s390
  KBUILD_CFLAGS += -m31
  KBUILD_AFLAGS += -m31
@@@ -21,9 -22,9 +22,10 @@@ UTS_MACHINE  := s39
  STACK_SIZE    := 8192
  CHECKFLAGS    += -D__s390__ -msize-long
  else
+ LD_BFD                := elf64-s390
  LDFLAGS               := -m elf64_s390
 -MODFLAGS      += -fpic -D__PIC__
 +KBUILD_AFLAGS_MODULE += -fpic -D__PIC__
 +KBUILD_CFLAGS_MODULE += -fpic -D__PIC__
  KBUILD_CFLAGS += -m64
  KBUILD_AFLAGS += -m64
  UTS_MACHINE   := s390x
@@@ -31,6 -32,8 +33,8 @@@ STACK_SIZE    := 1638
  CHECKFLAGS    += -D__s390__ -D__s390x__
  endif
  
+ export LD_BFD
  cflags-$(CONFIG_MARCH_G5)   += $(call cc-option,-march=g5)
  cflags-$(CONFIG_MARCH_Z900) += $(call cc-option,-march=z900)
  cflags-$(CONFIG_MARCH_Z990) += $(call cc-option,-march=z990)
@@@ -86,7 -89,9 +90,9 @@@ KBUILD_AFLAGS += $(aflags-y
  OBJCOPYFLAGS  := -O binary
  LDFLAGS_vmlinux := -e start
  
- head-y                := arch/s390/kernel/head.o arch/s390/kernel/init_task.o
+ head-y                := arch/s390/kernel/head.o
+ head-y                += arch/s390/kernel/$(if $(CONFIG_64BIT),head64.o,head31.o)
+ head-y                += arch/s390/kernel/init_task.o
  
  core-y                += arch/s390/mm/ arch/s390/kernel/ arch/s390/crypto/ \
                   arch/s390/appldata/ arch/s390/hypfs/ arch/s390/kvm/
@@@ -100,21 -105,28 +106,28 @@@ drivers-$(CONFIG_OPROFILE)      += arch/s390
  
  boot          := arch/s390/boot
  
- all: image
+ all: image bzImage
  
  install: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $@
  
- image: vmlinux
+ image bzImage: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
  
  zfcpdump:
        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
  
+ vdso_install:
+ ifeq ($(CONFIG_64BIT),y)
+       $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
+ endif
+       $(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso32 $@
  archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
  
  # Don't use tabs in echo arguments
  define archhelp
    echo  '* image           - Kernel image for IPL ($(boot)/image)'
+   echo        '* bzImage         - Compressed kernel image for IPL ($(boot)/bzImage)'
  endef
diff --combined lib/Kconfig.debug
index 2af5d84ec8249bb1fd67535c3eeaf71a1b5435be,e722e9d62221d40560176b5f8d2cabdcf74a5e2d..083b23d211d6747169bb548e8c6290cdde08e5bf
@@@ -103,7 -103,8 +103,8 @@@ config HEADERS_CHEC
  
  config DEBUG_SECTION_MISMATCH
        bool "Enable full Section mismatch analysis"
-       depends on UNDEFINED
+       depends on UNDEFINED || (BLACKFIN)
+       default y
        # This option is on purpose disabled for now.
        # It will be enabled when we are down to a reasonable number
        # of section mismatch warnings (< 10 for an allyesconfig build)
@@@ -355,7 -356,7 +356,7 @@@ config SLUB_STAT
  config DEBUG_KMEMLEAK
        bool "Kernel memory leak detector"
        depends on DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && \
-               (X86 || ARM || PPC || S390)
+               (X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE)
  
        select DEBUG_FS if SYSFS
        select STACKTRACE if STACKTRACE_SUPPORT
@@@ -499,6 -500,30 +500,30 @@@ config PROVE_LOCKIN
  
         For more details, see Documentation/lockdep-design.txt.
  
+ config PROVE_RCU
+       bool "RCU debugging: prove RCU correctness"
+       depends on PROVE_LOCKING
+       default n
+       help
+        This feature enables lockdep extensions that check for correct
+        use of RCU APIs.  This is currently under development.  Say Y
+        if you want to debug RCU usage or help work on the PROVE_RCU
+        feature.
+        Say N if you are unsure.
+ config PROVE_RCU_REPEATEDLY
+       bool "RCU debugging: don't disable PROVE_RCU on first splat"
+       depends on PROVE_RCU
+       default n
+       help
+        By itself, PROVE_RCU will disable checking upon issuing the
+        first warning (or "splat").  This feature prevents such
+        disabling, allowing multiple RCU-lockdep warnings to be printed
+        on a single reboot.
+        Say N if you are unsure.
  config LOCKDEP
        bool
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
@@@ -520,6 -545,14 +545,14 @@@ config LOCK_STA
  
         For more details, see Documentation/lockstat.txt
  
+        This also enables lock events required by "perf lock",
+        subcommand of perf.
+        If you want to use "perf lock", you also need to turn on
+        CONFIG_EVENT_TRACING.
+        CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
+        (CONFIG_LOCKDEP defines "acquire" and "release" events.)
  config DEBUG_LOCKDEP
        bool "Lock dependency engine debugging"
        depends on DEBUG_KERNEL && LOCKDEP
@@@ -595,19 -628,6 +628,19 @@@ config DEBUG_INF
  
          If unsure, say N.
  
 +config DEBUG_INFO_REDUCED
 +      bool "Reduce debugging information"
 +      depends on DEBUG_INFO
 +      help
 +        If you say Y here gcc is instructed to generate less debugging
 +        information for structure types. This means that tools that
 +        need full debugging information (like kgdb or systemtap) won't
 +        be happy. But if you merely need debugging information to
 +        resolve line numbers there is no loss. Advantage is that
 +        build directory object sizes shrink dramatically over a full
 +        DEBUG_INFO build and compile times are reduced too.
 +        Only works with newer gcc versions.
 +
  config DEBUG_VM
        bool "Debug VM"
        depends on DEBUG_KERNEL
@@@ -778,10 -798,22 +811,22 @@@ config RCU_CPU_STALL_DETECTO
          CPUs are delaying the current grace period, but only when
          the grace period extends for excessive time periods.
  
-         Say Y if you want RCU to perform such checks.
+         Say N if you want to disable such checks.
+         Say Y if you are unsure.
+ config RCU_CPU_STALL_VERBOSE
+       bool "Print additional per-task information for RCU_CPU_STALL_DETECTOR"
+       depends on RCU_CPU_STALL_DETECTOR && TREE_PREEMPT_RCU
+       default y
+       help
+         This option causes RCU to printk detailed per-task information
+         for any tasks that are stalling the current RCU grace period.
  
          Say N if you are unsure.
  
+         Say Y if you want to enable such checks.
  config KPROBES_SANITY_TEST
        bool "Kprobes sanity tests"
        depends on DEBUG_KERNEL
@@@ -853,8 -885,7 +898,7 @@@ config DEBUG_FORCE_WEAK_PER_CP
  
  config LKDTM
        tristate "Linux Kernel Dump Test Tool Module"
-       depends on DEBUG_KERNEL
-       depends on KPROBES
+       depends on DEBUG_FS
        depends on BLOCK
        default n
        help
        called lkdtm.
  
        Documentation on how to use the module can be found in
-       drivers/misc/lkdtm.c
+       Documentation/fault-injection/provoke-crashes.txt
+ config CPU_NOTIFIER_ERROR_INJECT
+       tristate "CPU notifier error injection module"
+       depends on HOTPLUG_CPU && DEBUG_KERNEL
+       help
+         This option provides a kernel module that can be used to test
+         the error handling of the cpu notifiers
+         To compile this code as a module, choose M here: the module will
+         be called cpu-notifier-error-inject.
+         If unsure, say N.
  
  config FAULT_INJECTION
        bool "Fault-injection framework"
@@@ -1008,10 -1051,10 +1064,10 @@@ config DYNAMIC_DEBU
  
          Usage:
  
-         Dynamic debugging is controlled via the 'dynamic_debug/ddebug' file,
+         Dynamic debugging is controlled via the 'dynamic_debug/control' file,
          which is contained in the 'debugfs' filesystem. Thus, the debugfs
          filesystem must first be mounted before making use of this feature.
-         We refer the control file as: <debugfs>/dynamic_debug/ddebug. This
+         We refer the control file as: <debugfs>/dynamic_debug/control. This
          file contains a list of the debug statements that can be enabled. The
          format for each line of the file is:
  
  
          From a live system:
  
-               nullarbor:~ # cat <debugfs>/dynamic_debug/ddebug
+               nullarbor:~ # cat <debugfs>/dynamic_debug/control
                # filename:lineno [module]function flags format
                fs/aio.c:222 [aio]__put_ioctx - "__put_ioctx:\040freeing\040%p\012"
                fs/aio.c:248 [aio]ioctx_alloc - "ENOMEM:\040nr_events\040too\040high\012"
  
                // enable the message at line 1603 of file svcsock.c
                nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
-                                               <debugfs>/dynamic_debug/ddebug
+                                               <debugfs>/dynamic_debug/control
  
                // enable all the messages in file svcsock.c
                nullarbor:~ # echo -n 'file svcsock.c +p' >
-                                               <debugfs>/dynamic_debug/ddebug
+                                               <debugfs>/dynamic_debug/control
  
                // enable all the messages in the NFS server module
                nullarbor:~ # echo -n 'module nfsd +p' >
-                                               <debugfs>/dynamic_debug/ddebug
+                                               <debugfs>/dynamic_debug/control
  
                // enable all 12 messages in the function svc_process()
                nullarbor:~ # echo -n 'func svc_process +p' >
-                                               <debugfs>/dynamic_debug/ddebug
+                                               <debugfs>/dynamic_debug/control
  
                // disable all 12 messages in the function svc_process()
                nullarbor:~ # echo -n 'func svc_process -p' >
-                                               <debugfs>/dynamic_debug/ddebug
+                                               <debugfs>/dynamic_debug/control
  
          See Documentation/dynamic-debug-howto.txt for additional information.
  
@@@ -1067,6 -1110,13 +1123,13 @@@ config DMA_API_DEBU
          This option causes a performance degredation.  Use only if you want
          to debug device drivers. If unsure, say N.
  
+ config ATOMIC64_SELFTEST
+       bool "Perform an atomic64_t self-test at boot"
+       help
+         Enable this option to test the atomic64_t functions at boot.
+         If unsure, say N.
  source "samples/Kconfig"
  
  source "lib/Kconfig.kgdb"
diff --combined scripts/mod/file2alias.c
index 33f436328f9aba0b6c41ea56d16a6f5abd5f3102,5758aab0d8bb6c8f401b8e2e8374432007ba172b..88f3f07205f88647e5665858f40fde875deec763
@@@ -796,6 -796,51 +796,51 @@@ static int do_platform_entry(const cha
        return 1;
  }
  
+ static int do_mdio_entry(const char *filename,
+                        struct mdio_device_id *id, char *alias)
+ {
+       int i;
+       alias += sprintf(alias, MDIO_MODULE_PREFIX);
+       for (i = 0; i < 32; i++) {
+               if (!((id->phy_id_mask >> (31-i)) & 1))
+                       *(alias++) = '?';
+               else if ((id->phy_id >> (31-i)) & 1)
+                       *(alias++) = '1';
+               else
+                       *(alias++) = '0';
+       }
+       /* Terminate the string */
+       *alias = 0;
+       return 1;
+ }
+ /* Looks like: zorro:iN. */
+ static int do_zorro_entry(const char *filename, struct zorro_device_id *id,
+                         char *alias)
+ {
+       id->id = TO_NATIVE(id->id);
+       strcpy(alias, "zorro:");
+       ADD(alias, "i", id->id != ZORRO_WILDCARD, id->id);
+       return 1;
+ }
+ /* looks like: "pnp:dD" */
+ static int do_isapnp_entry(const char *filename,
+                          struct isapnp_device_id *id, char *alias)
+ {
+       sprintf(alias, "pnp:d%c%c%c%x%x%x%x*",
+               'A' + ((id->vendor >> 2) & 0x3f) - 1,
+               'A' + (((id->vendor & 3) << 3) | ((id->vendor >> 13) & 7)) - 1,
+               'A' + ((id->vendor >> 8) & 0x1f) - 1,
+               (id->function >> 4) & 0x0f, id->function & 0x0f,
+               (id->function >> 12) & 0x0f, (id->function >> 8) & 0x0f);
+       return 1;
+ }
  /* Ignore any prefix, eg. some architectures prepend _ */
  static inline int sym_is(const char *symbol, const char *name)
  {
@@@ -839,16 -884,16 +884,16 @@@ void handle_moddevtable(struct module *
        char *zeros = NULL;
  
        /* We're looking for a section relative symbol */
 -      if (!sym->st_shndx || sym->st_shndx >= info->hdr->e_shnum)
 +      if (!sym->st_shndx || get_secindex(info, sym) >= info->num_sections)
                return;
  
        /* Handle all-NULL symbols allocated into .bss */
 -      if (info->sechdrs[sym->st_shndx].sh_type & SHT_NOBITS) {
 +      if (info->sechdrs[get_secindex(info, sym)].sh_type & SHT_NOBITS) {
                zeros = calloc(1, sym->st_size);
                symval = zeros;
        } else {
                symval = (void *)info->hdr
 -                      + info->sechdrs[sym->st_shndx].sh_offset
 +                      + info->sechdrs[get_secindex(info, sym)].sh_offset
                        + sym->st_value;
        }
  
                do_table(symval, sym->st_size,
                         sizeof(struct platform_device_id), "platform",
                         do_platform_entry, mod);
+       else if (sym_is(symname, "__mod_mdio_device_table"))
+               do_table(symval, sym->st_size,
+                        sizeof(struct mdio_device_id), "mdio",
+                        do_mdio_entry, mod);
+       else if (sym_is(symname, "__mod_zorro_device_table"))
+               do_table(symval, sym->st_size,
+                        sizeof(struct zorro_device_id), "zorro",
+                        do_zorro_entry, mod);
+       else if (sym_is(symname, "__mod_isapnp_device_table"))
+               do_table(symval, sym->st_size,
+                       sizeof(struct isapnp_device_id), "isa",
+                       do_isapnp_entry, mod);
        free(zeros);
  }
  
diff --combined scripts/mod/modpost.c
index 7249ab44f44ccf7c5854aea03cb6b4691a14f8f7,f6127b9f5acac16c10842fee3c53445fddfacd2a..c827309c29cf727bae89d42a4b6e38164b9d72a7
@@@ -253,7 -253,7 +253,7 @@@ static enum export export_no(const cha
        return export_unknown;
  }
  
 -static enum export export_from_sec(struct elf_info *elf, Elf_Section sec)
 +static enum export export_from_sec(struct elf_info *elf, unsigned int sec)
  {
        if (sec == elf->export_sec)
                return export_plain;
@@@ -373,8 -373,6 +373,8 @@@ static int parse_elf(struct elf_info *i
        Elf_Ehdr *hdr;
        Elf_Shdr *sechdrs;
        Elf_Sym  *sym;
 +      const char *secstrings;
 +      unsigned int symtab_idx = ~0U, symtab_shndx_idx = ~0U;
  
        hdr = grab_file(filename, &info->size);
        if (!hdr) {
                return 0;
        }
  
 +      if (hdr->e_shnum == 0) {
 +              /*
 +               * There are more than 64k sections,
 +               * read count from .sh_size.
 +               * note: it doesn't need shndx2secindex()
 +               */
 +              info->num_sections = TO_NATIVE(sechdrs[0].sh_size);
 +      }
 +      else {
 +              info->num_sections = hdr->e_shnum;
 +      }
 +      if (hdr->e_shstrndx == SHN_XINDEX) {
 +              info->secindex_strings =
 +                  shndx2secindex(TO_NATIVE(sechdrs[0].sh_link));
 +      }
 +      else {
 +              info->secindex_strings = hdr->e_shstrndx;
 +      }
 +
        /* Fix endianness in section headers */
 -      for (i = 0; i < hdr->e_shnum; i++) {
 +      for (i = 0; i < info->num_sections; i++) {
                sechdrs[i].sh_name      = TO_NATIVE(sechdrs[i].sh_name);
                sechdrs[i].sh_type      = TO_NATIVE(sechdrs[i].sh_type);
                sechdrs[i].sh_flags     = TO_NATIVE(sechdrs[i].sh_flags);
                sechdrs[i].sh_entsize   = TO_NATIVE(sechdrs[i].sh_entsize);
        }
        /* Find symbol table. */
 -      for (i = 1; i < hdr->e_shnum; i++) {
 -              const char *secstrings
 -                      = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
 +      secstrings = (void *)hdr + sechdrs[info->secindex_strings].sh_offset;
 +      for (i = 1; i < info->num_sections; i++) {
                const char *secname;
                int nobits = sechdrs[i].sh_type == SHT_NOBITS;
  
                else if (strcmp(secname, "__ksymtab_gpl_future") == 0)
                        info->export_gpl_future_sec = i;
  
 -              if (sechdrs[i].sh_type != SHT_SYMTAB)
 -                      continue;
 +              if (sechdrs[i].sh_type == SHT_SYMTAB) {
 +                      unsigned int sh_link_idx;
 +                      symtab_idx = i;
 +                      info->symtab_start = (void *)hdr +
 +                          sechdrs[i].sh_offset;
 +                      info->symtab_stop  = (void *)hdr +
 +                          sechdrs[i].sh_offset + sechdrs[i].sh_size;
 +                      sh_link_idx = shndx2secindex(sechdrs[i].sh_link);
 +                      info->strtab       = (void *)hdr +
 +                          sechdrs[sh_link_idx].sh_offset;
 +              }
  
 -              info->symtab_start = (void *)hdr + sechdrs[i].sh_offset;
 -              info->symtab_stop  = (void *)hdr + sechdrs[i].sh_offset
 -                                               + sechdrs[i].sh_size;
 -              info->strtab       = (void *)hdr +
 -                                   sechdrs[sechdrs[i].sh_link].sh_offset;
 +              /* 32bit section no. table? ("more than 64k sections") */
 +              if (sechdrs[i].sh_type == SHT_SYMTAB_SHNDX) {
 +                      symtab_shndx_idx = i;
 +                      info->symtab_shndx_start = (void *)hdr +
 +                          sechdrs[i].sh_offset;
 +                      info->symtab_shndx_stop  = (void *)hdr +
 +                          sechdrs[i].sh_offset + sechdrs[i].sh_size;
 +              }
        }
        if (!info->symtab_start)
                fatal("%s has no symtab?\n", filename);
                sym->st_value = TO_NATIVE(sym->st_value);
                sym->st_size  = TO_NATIVE(sym->st_size);
        }
 +
 +      if (symtab_shndx_idx != ~0U) {
 +              Elf32_Word *p;
 +              if (symtab_idx !=
 +                  shndx2secindex(sechdrs[symtab_shndx_idx].sh_link))
 +                      fatal("%s: SYMTAB_SHNDX has bad sh_link: %u!=%u\n",
 +                            filename,
 +                            shndx2secindex(sechdrs[symtab_shndx_idx].sh_link),
 +                            symtab_idx);
 +              /* Fix endianness */
 +              for (p = info->symtab_shndx_start; p < info->symtab_shndx_stop;
 +                   p++)
 +                      *p = TO_NATIVE(*p);
 +      }
 +
        return 1;
  }
  
@@@ -550,6 -503,11 +550,11 @@@ static int ignore_undef_symbol(struct e
                    strncmp(symname, "_rest32gpr_", sizeof("_rest32gpr_") - 1) == 0 ||
                    strncmp(symname, "_save32gpr_", sizeof("_save32gpr_") - 1) == 0)
                        return 1;
+       if (info->hdr->e_machine == EM_PPC64)
+               /* Special register function linked on all modules during final link of .ko */
+               if (strncmp(symname, "_restgpr0_", sizeof("_restgpr0_") - 1) == 0 ||
+                   strncmp(symname, "_savegpr0_", sizeof("_savegpr0_") - 1) == 0)
+                       return 1;
        /* Do not ignore this symbol */
        return 0;
  }
@@@ -561,7 -519,7 +566,7 @@@ static void handle_modversions(struct m
                               Elf_Sym *sym, const char *symname)
  {
        unsigned int crc;
 -      enum export export = export_from_sec(info, sym->st_shndx);
 +      enum export export = export_from_sec(info, get_secindex(info, sym));
  
        switch (sym->st_shndx) {
        case SHN_COMMON:
@@@ -703,19 -661,19 +708,19 @@@ static const char *sym_name(struct elf_
                return "(unknown)";
  }
  
 -static const char *sec_name(struct elf_info *elf, int shndx)
 +static const char *sec_name(struct elf_info *elf, int secindex)
  {
        Elf_Shdr *sechdrs = elf->sechdrs;
        return (void *)elf->hdr +
 -              elf->sechdrs[elf->hdr->e_shstrndx].sh_offset +
 -              sechdrs[shndx].sh_name;
 +              elf->sechdrs[elf->secindex_strings].sh_offset +
 +              sechdrs[secindex].sh_name;
  }
  
  static const char *sech_name(struct elf_info *elf, Elf_Shdr *sechdr)
  {
        return (void *)elf->hdr +
 -              elf->sechdrs[elf->hdr->e_shstrndx].sh_offset +
 -              sechdr->sh_name;
 +              elf->sechdrs[elf->secindex_strings].sh_offset +
 +              sechdr->sh_name;
  }
  
  /* if sym is empty or point to a string
@@@ -1094,14 -1052,11 +1099,14 @@@ static Elf_Sym *find_elf_symbol(struct 
        Elf_Sym *near = NULL;
        Elf64_Sword distance = 20;
        Elf64_Sword d;
 +      unsigned int relsym_secindex;
  
        if (relsym->st_name != 0)
                return relsym;
 +
 +      relsym_secindex = get_secindex(elf, relsym);
        for (sym = elf->symtab_start; sym < elf->symtab_stop; sym++) {
 -              if (sym->st_shndx != relsym->st_shndx)
 +              if (get_secindex(elf, sym) != relsym_secindex)
                        continue;
                if (ELF_ST_TYPE(sym->st_info) == STT_SECTION)
                        continue;
@@@ -1163,9 -1118,9 +1168,9 @@@ static Elf_Sym *find_elf_symbol2(struc
        for (sym = elf->symtab_start; sym < elf->symtab_stop; sym++) {
                const char *symsec;
  
 -              if (sym->st_shndx >= SHN_LORESERVE)
 +              if (is_shndx_special(sym->st_shndx))
                        continue;
 -              symsec = sec_name(elf, sym->st_shndx);
 +              symsec = sec_name(elf, get_secindex(elf, sym));
                if (strcmp(symsec, sec) != 0)
                        continue;
                if (!is_valid_name(elf, sym))
@@@ -1361,7 -1316,7 +1366,7 @@@ static void check_section_mismatch(cons
        const char *tosec;
        const struct sectioncheck *mismatch;
  
 -      tosec = sec_name(elf, sym->st_shndx);
 +      tosec = sec_name(elf, get_secindex(elf, sym));
        mismatch = section_mismatch(fromsec, tosec);
        if (mismatch) {
                Elf_Sym *to;
@@@ -1389,10 -1344,10 +1394,10 @@@ static unsigned int *reloc_location(str
                                    Elf_Shdr *sechdr, Elf_Rela *r)
  {
        Elf_Shdr *sechdrs = elf->sechdrs;
 -      int section = sechdr->sh_info;
 +      int section = shndx2secindex(sechdr->sh_info);
  
        return (void *)elf->hdr + sechdrs[section].sh_offset +
-               (r->r_offset - sechdrs[section].sh_addr);
+               r->r_offset - sechdrs[section].sh_addr;
  }
  
  static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
@@@ -1497,7 -1452,7 +1502,7 @@@ static void section_rela(const char *mo
                r.r_addend = TO_NATIVE(rela->r_addend);
                sym = elf->symtab_start + r_sym;
                /* Skip special sections */
 -              if (sym->st_shndx >= SHN_LORESERVE)
 +              if (is_shndx_special(sym->st_shndx))
                        continue;
                check_section_mismatch(modname, elf, &r, sym, fromsec);
        }
@@@ -1555,7 -1510,7 +1560,7 @@@ static void section_rel(const char *mod
                }
                sym = elf->symtab_start + r_sym;
                /* Skip special sections */
 -              if (sym->st_shndx >= SHN_LORESERVE)
 +              if (is_shndx_special(sym->st_shndx))
                        continue;
                check_section_mismatch(modname, elf, &r, sym, fromsec);
        }
@@@ -1580,7 -1535,7 +1585,7 @@@ static void check_sec_ref(struct modul
        Elf_Shdr *sechdrs = elf->sechdrs;
  
        /* Walk through all sections */
 -      for (i = 0; i < elf->hdr->e_shnum; i++) {
 +      for (i = 0; i < elf->num_sections; i++) {
                check_section(modname, elf, &elf->sechdrs[i]);
                /* We want to process only relocation sections and not .init */
                if (sechdrs[i].sh_type == SHT_RELA)
This page took 0.111771 seconds and 4 git commands to generate.