]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Merge commit 'v2.6.35-rc4' into perf/core
authorIngo Molnar <mingo@elte.hu>
Mon, 5 Jul 2010 06:30:55 +0000 (08:30 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 5 Jul 2010 06:30:58 +0000 (08:30 +0200)
Merge reason: Pick up the latest perf fixes

Signed-off-by: Ingo Molnar <mingo@elte.hu>
1  2 
MAINTAINERS
Makefile
arch/arm/kernel/perf_event.c
init/main.c
kernel/sched.c
scripts/package/Makefile

diff --combined MAINTAINERS
index f9730fa0b24c242b130dd91068fcc896ca236f54,a07a49deb47bb725c701cdf0320377bf9702e153..9f90de2e00f85b7edc2bac01fbc2a169f6f59c9b
@@@ -896,11 -896,13 +896,13 @@@ S:      Maintaine
  
  ARM/SAMSUNG ARM ARCHITECTURES
  M:    Ben Dooks <ben-linux@fluff.org>
+ M:    Kukjin Kim <kgene.kim@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
- F:    arch/arm/plat-s3c/
+ F:    arch/arm/plat-samsung/
  F:    arch/arm/plat-s3c24xx/
+ F:    arch/arm/plat-s5p/
  
  ARM/S3C2410 ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
@@@ -1148,7 -1150,7 +1150,7 @@@ F:      drivers/mmc/host/atmel-mci.
  F:    drivers/mmc/host/atmel-mci-regs.h
  
  ATMEL AT91 / AT32 SERIAL DRIVER
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
+ M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
  F:    drivers/serial/atmel_serial.c
  
@@@ -1160,18 -1162,18 +1162,18 @@@ F:   drivers/video/atmel_lcdfb.
  F:    include/video/atmel_lcdc.h
  
  ATMEL MACB ETHERNET DRIVER
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
+ M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
  F:    drivers/net/macb.*
  
  ATMEL SPI DRIVER
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
+ M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
  F:    drivers/spi/atmel_spi.*
  
  ATMEL USBA UDC DRIVER
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
- L:    kernel@avr32linux.org
+ M:    Nicolas Ferre <nicolas.ferre@atmel.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
  S:    Supported
  F:    drivers/usb/gadget/atmel_usba_udc.*
@@@ -2109,11 -2111,18 +2111,18 @@@ F:   drivers/edac/i5000_edac.
  
  EDAC-I5400
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
- L:    bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
+ L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
+ EDAC-I7CORE
+ M:    Mauro Carvalho Chehab <mchehab@redhat.com>
+ L:    linux-edac@vger.kernel.org
+ W:    bluesmoke.sourceforge.net
+ S:    Maintained
+ F:    drivers/edac/i7core_edac.c linux/edac_mce.h drivers/edac/edac_mce.c
  EDAC-I82975X
  M:    Ranganathan Desikan <ravi@jetztechnologies.com>
  M:    "Arvind R." <arvind@jetztechnologies.com>
@@@ -3369,11 -3378,18 +3378,11 @@@ F:   include/linux/kmemleak.
  F:    mm/kmemleak.c
  F:    mm/kmemleak-test.c
  
 -KMEMTRACE
 -M:    Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
 -S:    Maintained
 -F:    Documentation/trace/kmemtrace.txt
 -F:    include/linux/kmemtrace.h
 -F:    kernel/trace/kmemtrace.c
 -
  KPROBES
  M:    Ananth N Mavinakayanahalli <ananth@in.ibm.com>
  M:    Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
  M:    "David S. Miller" <davem@davemloft.net>
- M:    Masami Hiramatsu <mhiramat@redhat.com>
+ M:    Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
  S:    Maintained
  F:    Documentation/kprobes.txt
  F:    include/linux/kprobes.h
@@@ -4621,6 -4637,12 +4630,12 @@@ M:    Robert Jarzmik <robert.jarzmik@free.
  L:    rtc-linux@googlegroups.com
  S:    Maintained
  
+ QLOGIC QLA1280 SCSI DRIVER
+ M:    Michael Reed <mdr@sgi.com>
+ L:    linux-scsi@vger.kernel.org
+ S:    Maintained
+ F:    drivers/scsi/qla1280.[ch]
  QLOGIC QLA2XXX FC-SCSI DRIVER
  M:    Andrew Vasquez <andrew.vasquez@qlogic.com>
  M:    linux-driver@qlogic.com
diff --combined Makefile
index f6c206a5b01a7ccdf9e0493782253d1673b55308,914e5f514888b6a2170ac9a137aa588c93af2f13..0a20cd413b02cc6f4a0aee32076583178461b5b1
+++ b/Makefile
@@@ -1,7 -1,7 +1,7 @@@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 35
- EXTRAVERSION = -rc3
+ EXTRAVERSION = -rc4
  NAME = Sheep on Meth
  
  # *DOCUMENTATION*
@@@ -414,7 -414,7 +414,7 @@@ endi
  no-dot-config-targets := clean mrproper distclean \
                         cscope TAGS tags help %docs check% \
                         include/linux/version.h headers_% \
 -                       kernelrelease kernelversion
 +                       kernelrelease kernelversion %src-pkg
  
  config-targets := 0
  mixed-targets  := 0
@@@ -883,80 -883,10 +883,10 @@@ PHONY += $(vmlinux-dirs
  $(vmlinux-dirs): prepare scripts
        $(Q)$(MAKE) $(build)=$@
  
- # Build the kernel release string
- #
- # The KERNELRELEASE value built here is stored in the file
- # include/config/kernel.release, and is used when executing several
- # make targets, such as "make install" or "make modules_install."
- #
- # The eventual kernel release string consists of the following fields,
- # shown in a hierarchical format to show how smaller parts are concatenated
- # to form the larger and final value, with values coming from places like
- # the Makefile, kernel config options, make command line options and/or
- # SCM tag information.
- #
- #     $(KERNELVERSION)
- #       $(VERSION)                    eg, 2
- #       $(PATCHLEVEL)                 eg, 6
- #       $(SUBLEVEL)                   eg, 18
- #       $(EXTRAVERSION)               eg, -rc6
- #     $(localver-full)
- #       $(localver)
- #         localversion*               (files without backups, containing '~')
- #         $(CONFIG_LOCALVERSION)      (from kernel config setting)
- #       $(LOCALVERSION)               (from make command line, if provided)
- #       $(localver-extra)
- #         $(scm-identifier)           (unique SCM tag, if one exists)
- #           ./scripts/setlocalversion (only with CONFIG_LOCALVERSION_AUTO)
- #           .scmversion               (only with CONFIG_LOCALVERSION_AUTO)
- #         +                           (only without CONFIG_LOCALVERSION_AUTO
- #                                      and without LOCALVERSION= and
- #                                      repository is at non-tagged commit)
- #
- # For kernels without CONFIG_LOCALVERSION_AUTO compiled from an SCM that has
- # been revised beyond a tagged commit, `+' is appended to the version string
- # when not overridden by using "make LOCALVERSION=".  This indicates that the
- # kernel is not a vanilla release version and has been modified.
- pattern = ".*/localversion[^~]*"
- string  = $(shell cat /dev/null \
-          `find $(objtree) $(srctree) -maxdepth 1 -regex $(pattern) | sort -u`)
- localver = $(subst $(space),, $(string) \
-                             $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
- # scripts/setlocalversion is called to create a unique identifier if the source
- # is managed by a known SCM and the repository has been revised since the last
- # tagged (release) commit.  The format of the identifier is determined by the
- # SCM's implementation.
- #
- # .scmversion is used when generating rpm packages so we do not loose
- # the version information from the SCM when we do the build of the kernel
- # from the copied source
- ifeq ($(wildcard .scmversion),)
-         scm-identifier = $(shell $(CONFIG_SHELL) \
-                          $(srctree)/scripts/setlocalversion $(srctree))
- else
-         scm-identifier = $(shell cat .scmversion 2> /dev/null)
- endif
- ifdef CONFIG_LOCALVERSION_AUTO
-       localver-extra = $(scm-identifier)
- else
-       ifneq ($(scm-identifier),)
-               ifeq ("$(origin LOCALVERSION)", "undefined")
-                       localver-extra = +
-               endif
-       endif
- endif
- localver-full = $(localver)$(LOCALVERSION)$(localver-extra)
  # Store (new) KERNELRELASE string in include/config/kernel.release
- kernelrelease = $(KERNELVERSION)$(localver-full)
  include/config/kernel.release: include/config/auto.conf FORCE
        $(Q)rm -f $@
-       $(Q)echo $(kernelrelease) > $@
+       $(Q)echo "$(KERNELVERSION)$$($(CONFIG_SHELL) scripts/setlocalversion $(srctree))" > $@
  
  
  # Things we need to do before we recursively start building the kernel
@@@ -1228,8 -1158,6 +1158,8 @@@ distclean: mrprope
  # rpm target kept for backward compatibility
  package-dir   := $(srctree)/scripts/package
  
 +%src-pkg: FORCE
 +      $(Q)$(MAKE) $(build)=$(package-dir) $@
  %pkg: include/config/kernel.release FORCE
        $(Q)$(MAKE) $(build)=$(package-dir) $@
  rpm: include/config/kernel.release FORCE
index 5b7cfafc0720550e7bab62eb9d1ab2e912029fb4,de12536d687f69a6fa246038afe9754936d223d9..417c392ddf1cb55066fa5f99e83e77514bd89901
@@@ -164,20 -164,20 +164,20 @@@ armpmu_event_set_period(struct perf_eve
                        struct hw_perf_event *hwc,
                        int idx)
  {
 -      s64 left = atomic64_read(&hwc->period_left);
 +      s64 left = local64_read(&hwc->period_left);
        s64 period = hwc->sample_period;
        int ret = 0;
  
        if (unlikely(left <= -period)) {
                left = period;
 -              atomic64_set(&hwc->period_left, left);
 +              local64_set(&hwc->period_left, left);
                hwc->last_period = period;
                ret = 1;
        }
  
        if (unlikely(left <= 0)) {
                left += period;
 -              atomic64_set(&hwc->period_left, left);
 +              local64_set(&hwc->period_left, left);
                hwc->last_period = period;
                ret = 1;
        }
        if (left > (s64)armpmu->max_period)
                left = armpmu->max_period;
  
 -      atomic64_set(&hwc->prev_count, (u64)-left);
 +      local64_set(&hwc->prev_count, (u64)-left);
  
        armpmu->write_counter(idx, (u64)(-left) & 0xffffffff);
  
@@@ -201,21 -201,21 +201,21 @@@ armpmu_event_update(struct perf_event *
  {
        int shift = 64 - 32;
        s64 prev_raw_count, new_raw_count;
-       s64 delta;
+       u64 delta;
  
  again:
 -      prev_raw_count = atomic64_read(&hwc->prev_count);
 +      prev_raw_count = local64_read(&hwc->prev_count);
        new_raw_count = armpmu->read_counter(idx);
  
 -      if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count,
 +      if (local64_cmpxchg(&hwc->prev_count, prev_raw_count,
                             new_raw_count) != prev_raw_count)
                goto again;
  
        delta = (new_raw_count << shift) - (prev_raw_count << shift);
        delta >>= shift;
  
 -      atomic64_add(delta, &event->count);
 -      atomic64_sub(delta, &hwc->period_left);
 +      local64_add(delta, &event->count);
 +      local64_sub(delta, &hwc->period_left);
  
        return new_raw_count;
  }
@@@ -478,7 -478,7 +478,7 @@@ __hw_perf_event_init(struct perf_event 
        if (!hwc->sample_period) {
                hwc->sample_period  = armpmu->max_period;
                hwc->last_period    = hwc->sample_period;
 -              atomic64_set(&hwc->period_left, hwc->sample_period);
 +              local64_set(&hwc->period_left, hwc->sample_period);
        }
  
        err = 0;
diff --combined init/main.c
index e407a05adc2937bc444be42b2a982bc4419103ef,a42fdf4aeba91ada21882d86d552ed722c00eb5a..4ab5124a29520d6cf35614ab58ab302cf3253939
  #include <linux/ftrace.h>
  #include <linux/async.h>
  #include <linux/kmemcheck.h>
 -#include <linux/kmemtrace.h>
  #include <linux/sfi.h>
  #include <linux/shmem_fs.h>
  #include <linux/slab.h>
 -#include <trace/boot.h>
  
  #include <asm/io.h>
  #include <asm/bugs.h>
@@@ -422,18 -424,26 +422,26 @@@ static void __init setup_command_line(c
   * gcc-3.4 accidentally inlines this function, so use noinline.
   */
  
+ static __initdata DECLARE_COMPLETION(kthreadd_done);
  static noinline void __init_refok rest_init(void)
        __releases(kernel_lock)
  {
        int pid;
  
        rcu_scheduler_starting();
+       /*
+        * We need to spawn init first so that it obtains pid 1, however
+        * the init task will end up wanting to create kthreads, which, if
+        * we schedule it before we create kthreadd, will OOPS.
+        */
        kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
        numa_default_policy();
        pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
        rcu_read_lock();
        kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);
        rcu_read_unlock();
+       complete(&kthreadd_done);
        unlock_kernel();
  
        /*
@@@ -653,6 -663,7 +661,6 @@@ asmlinkage void __init start_kernel(voi
  #endif
        page_cgroup_init();
        enable_debug_pagealloc();
 -      kmemtrace_init();
        kmemleak_init();
        debug_objects_mem_init();
        idr_init_cache();
@@@ -714,33 -725,38 +722,33 @@@ int initcall_debug
  core_param(initcall_debug, initcall_debug, bool, 0644);
  
  static char msgbuf[64];
 -static struct boot_trace_call call;
 -static struct boot_trace_ret ret;
  
  int do_one_initcall(initcall_t fn)
  {
        int count = preempt_count();
        ktime_t calltime, delta, rettime;
 +      unsigned long long duration;
 +      int ret;
  
        if (initcall_debug) {
 -              call.caller = task_pid_nr(current);
 -              printk("calling  %pF @ %i\n", fn, call.caller);
 +              printk("calling  %pF @ %i\n", fn, task_pid_nr(current));
                calltime = ktime_get();
 -              trace_boot_call(&call, fn);
 -              enable_boot_trace();
        }
  
 -      ret.result = fn();
 +      ret = fn();
  
        if (initcall_debug) {
 -              disable_boot_trace();
                rettime = ktime_get();
                delta = ktime_sub(rettime, calltime);
 -              ret.duration = (unsigned long long) ktime_to_ns(delta) >> 10;
 -              trace_boot_ret(&ret, fn);
 -              printk("initcall %pF returned %d after %Ld usecs\n", fn,
 -                      ret.result, ret.duration);
 +              duration = (unsigned long long) ktime_to_ns(delta) >> 10;
 +              printk("initcall %pF returned %d after %lld usecs\n", fn,
 +                      ret, duration);
        }
  
        msgbuf[0] = 0;
  
 -      if (ret.result && ret.result != -ENODEV && initcall_debug)
 -              sprintf(msgbuf, "error code %d ", ret.result);
 +      if (ret && ret != -ENODEV && initcall_debug)
 +              sprintf(msgbuf, "error code %d ", ret);
  
        if (preempt_count() != count) {
                strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf));
                printk("initcall %pF returned with %s\n", fn, msgbuf);
        }
  
 -      return ret.result;
 +      return ret;
  }
  
  
@@@ -849,6 -865,10 +857,10 @@@ static noinline int init_post(void
  
  static int __init kernel_init(void * unused)
  {
+       /*
+        * Wait until kthreadd is all set-up.
+        */
+       wait_for_completion(&kthreadd_done);
        lock_kernel();
  
        /*
        smp_prepare_cpus(setup_max_cpus);
  
        do_pre_smp_initcalls();
 -      start_boot_trace();
  
        smp_init();
        sched_init_smp();
diff --combined kernel/sched.c
index 8c473adbf2230b78cad7b87dd4b3b453a1d4ec21,f52a8801b7a285fb252ecc6935b55f525813881b..265cf3a2b5d898e89d714535c04af312831d79c8
@@@ -2873,9 -2873,9 +2873,9 @@@ unsigned long nr_iowait(void
        return sum;
  }
  
- unsigned long nr_iowait_cpu(void)
+ unsigned long nr_iowait_cpu(int cpu)
  {
-       struct rq *this = this_rq();
+       struct rq *this = cpu_rq(cpu);
        return atomic_read(&this->nr_iowait);
  }
  
@@@ -3726,7 -3726,7 +3726,7 @@@ int mutex_spin_on_owner(struct mutex *l
   * off of preempt_enable. Kernel preemptions off return from interrupt
   * occur there and call schedule directly.
   */
 -asmlinkage void __sched preempt_schedule(void)
 +asmlinkage void __sched notrace preempt_schedule(void)
  {
        struct thread_info *ti = current_thread_info();
  
                return;
  
        do {
 -              add_preempt_count(PREEMPT_ACTIVE);
 +              add_preempt_count_notrace(PREEMPT_ACTIVE);
                schedule();
 -              sub_preempt_count(PREEMPT_ACTIVE);
 +              sub_preempt_count_notrace(PREEMPT_ACTIVE);
  
                /*
                 * Check again in case we missed a preemption opportunity
diff --combined scripts/package/Makefile
index 18513b0191db2cfeb2e208e2ddf66c96af6089e1,3a681ef25306ba0a98cfaedf7412c24c9af11adb..cea12744a6712541ae42e1ec6c27d2e2d0054cf1
@@@ -44,7 -44,7 +44,7 @@@ rpm-pkg rpm: $(objtree)/kernel.spec FOR
        fi
        $(MAKE) clean
        $(PREV) ln -sf $(srctree) $(KERNELPATH)
-       $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion
+       $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --scm-only > $(objtree)/.scmversion
        $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
        $(PREV) rm $(KERNELPATH)
        rm -f $(objtree)/.scmversion
@@@ -111,38 -111,13 +111,38 @@@ tar%pkg: FORC
  clean-dirs += $(objtree)/tar-install/
  
  
 +# perf-pkg - generate a source tarball with perf source
 +# ---------------------------------------------------------------------------
 +
 +perf-tar=perf-$(KERNELVERSION)
 +
 +quiet_cmd_perf_tar = TAR
 +      cmd_perf_tar = \
 +git archive --prefix=$(perf-tar)/ HEAD^{tree}                       \
 +      $$(cat $(srctree)/tools/perf/MANIFEST) -o $(perf-tar).tar;  \
 +mkdir -p $(perf-tar);                                               \
 +git rev-parse HEAD > $(perf-tar)/HEAD;                              \
 +tar rf $(perf-tar).tar $(perf-tar)/HEAD;                            \
 +rm -r $(perf-tar);                                                  \
 +$(if $(findstring tar-src,$@),,                                     \
 +$(if $(findstring bz2,$@),bzip2,                                    \
 +$(if $(findstring gz,$@),gzip,                                      \
 +$(error unknown target $@)))                                       \
 +      -f -9 $(perf-tar).tar)
 +
 +perf-%pkg: FORCE
 +      $(call cmd,perf_tar)
 +
  # Help text displayed when executing 'make help'
  # ---------------------------------------------------------------------------
  help: FORCE
 -      @echo '  rpm-pkg         - Build both source and binary RPM kernel packages'
 -      @echo '  binrpm-pkg      - Build only the binary kernel package'
 -      @echo '  deb-pkg         - Build the kernel as an deb package'
 -      @echo '  tar-pkg         - Build the kernel as an uncompressed tarball'
 -      @echo '  targz-pkg       - Build the kernel as a gzip compressed tarball'
 -      @echo '  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball'
 +      @echo '  rpm-pkg             - Build both source and binary RPM kernel packages'
 +      @echo '  binrpm-pkg          - Build only the binary kernel package'
 +      @echo '  deb-pkg             - Build the kernel as an deb package'
 +      @echo '  tar-pkg             - Build the kernel as an uncompressed tarball'
 +      @echo '  targz-pkg           - Build the kernel as a gzip compressed tarball'
 +      @echo '  tarbz2-pkg          - Build the kernel as a bzip2 compressed tarball'
 +      @echo '  perf-tar-src-pkg    - Build $(perf-tar).tar source tarball'
 +      @echo '  perf-targz-src-pkg  - Build $(perf-tar).tar.gz source tarball'
 +      @echo '  perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'