1. 09 Oct, 2012 3 commits
  2. 28 Sep, 2012 2 commits
    • John Stultz's avatar
      Merge branch 'arnds-jiffies-fix' into fortglx/3.7/time · 28f2b02b
      John Stultz authored
      Sort out conflict with Arnd's patch that preserves
      the unconditional LATCH value.
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      28f2b02b
    • Arnd Bergmann's avatar
      time/jiffies: bring back unconditional LATCH definition · 015a830d
      Arnd Bergmann authored
      Patch a7ea3bbf "time/jiffies: Allow CLOCK_TICK_RATE to be undefined"
      breaks the compilation of targets that rely on the LATCH definition,
      because of recursive header file inclusion not defining CLOCK_TICK_RATE
      before it is checked here.
      
      This fixes the problem by moving LATCH back to where it was, but it
      seems that there are still cases where SHIFTED_HZ is defined incorrectly
      because of the same problem. Need to investigate further.
      
      Without this patch, building h7201_defconfig results in:
      
      arch/arm/mach-h720x/common.c: In function 'h720x_gettimeoffset':
      arch/arm/mach-h720x/common.c:50:73: error: 'LATCH' undeclared (first use in this function)
      arch/arm/mach-h720x/common.c:50:73: note: each undeclared identifier is reported only once for each function it appears in
      arch/arm/mach-h720x/common.c:51:1: warning: control reaches end of non-void function [-Wreturn-type]
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      015a830d
  3. 24 Sep, 2012 12 commits
    • John Stultz's avatar
      time: Convert x86_64 to using new update_vsyscall · 650ea024
      John Stultz authored
      Switch x86_64 to using sub-ns precise vsyscall
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      650ea024
    • John Stultz's avatar
      time: Only do nanosecond rounding on GENERIC_TIME_VSYSCALL_OLD systems · 92bb1fcf
      John Stultz authored
      We only do rounding to the next nanosecond so we don't see minor
      1ns inconsistencies in the vsyscall implementations. Since we're
      changing the vsyscall implementations to avoid this, conditionalize
      the rounding only to the GENERIC_TIME_VSYSCALL_OLD architectures.
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      92bb1fcf
    • John Stultz's avatar
      time: Introduce new GENERIC_TIME_VSYSCALL · 576094b7
      John Stultz authored
      Now that we moved everyone over to GENERIC_TIME_VSYSCALL_OLD,
      introduce the new declaration and config option for the new
      update_vsyscall method.
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      576094b7
    • John Stultz's avatar
      time: Convert CONFIG_GENERIC_TIME_VSYSCALL to CONFIG_GENERIC_TIME_VSYSCALL_OLD · 70639421
      John Stultz authored
      To help migrate archtectures over to the new update_vsyscall method,
      redfine CONFIG_GENERIC_TIME_VSYSCALL as CONFIG_GENERIC_TIME_VSYSCALL_OLD
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      70639421
    • John Stultz's avatar
      time: Move update_vsyscall definitions to timekeeper_internal.h · 189374ae
      John Stultz authored
      Since users will need to include timekeeper_internal.h, move
      update_vsyscall definitions to timekeeper_internal.h.
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      189374ae
    • John Stultz's avatar
      time: Move timekeeper structure to timekeeper_internal.h for vsyscall changes · d7b4202e
      John Stultz authored
      We're going to need to access the timekeeper in update_vsyscall,
      so make the structure available for those who need it.
      
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Andy Lutomirski <luto@amacapital.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      d7b4202e
    • John Stultz's avatar
      jiffies: Remove compile time assumptions about CLOCK_TICK_RATE · b3c869d3
      John Stultz authored
      CLOCK_TICK_RATE is used to accurately caclulate exactly how
      a tick will be at a given HZ.
      
      This is useful, because while we'd expect NSEC_PER_SEC/HZ,
      the underlying hardware will have some granularity limit,
      so we won't be able to have exactly HZ ticks per second.
      
      This slight error can cause timekeeping quality problems
      when using the jiffies or other jiffies driven clocksources.
      Thus we currently use compile time CLOCK_TICK_RATE value to
      generate SHIFTED_HZ and NSEC_PER_JIFFIES, which we then use
      to adjust the jiffies clocksource to correct this error.
      
      Unfortunately though, since CLOCK_TICK_RATE is a compile
      time value, and the jiffies clocksource is registered very
      early during boot, there are a number of cases where there
      are different possible hardware timers that have different
      tick rates. This causes problems in cases like ARM where
      there are numerous different types of hardware, each having
      their own compile-time CLOCK_TICK_RATE, making it hard to
      accurately support different hardware with a single kernel.
      
      For the most part, this doesn't matter all that much, as not
      too many systems actually utilize the jiffies or jiffies driven
      clocksource. Usually there are other highres clocksources
      who's granularity error is negligable.
      
      Even so, we have some complicated calcualtions that we do
      everywhere to handle these edge cases.
      
      This patch removes the compile time SHIFTED_HZ value, and
      introduces a register_refined_jiffies() function. This results
      in the default jiffies clock as being assumed a perfect HZ
      freq, and allows archtectures that care about jiffies accuracy
      to call register_refined_jiffies() with the tick rate, specified
      dynamically at boot.
      
      This allows us, where necessary, to not have a compile time
      CLOCK_TICK_RATE constant, simplifies the jiffies code, and
      still provides a way to have an accurate jiffies clock.
      
      NOTE: Since this patch does not add register_refinied_jiffies()
      calls for every arch, it may cause time quality regressions
      in some cases. Its likely these will not be noticable, but
      if they are an issue, adding the following to the end of
      setup_arch() should resolve the regression:
      	register_refinied_jiffies(CLOCK_TICK_RATE)
      
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      b3c869d3
    • John Stultz's avatar
      jiffies: Kill unused TICK_USEC_TO_NSEC · 7916a1f1
      John Stultz authored
      No one is using TICK_USEC_TO_NSEC, so kill it.
      
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Richard Cochran <richardcochran@gmail.com>
      Cc: Prarit Bhargava <prarit@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      7916a1f1
    • John Stultz's avatar
      alarmtimer: Rename alarmtimer_remove to alarmtimer_dequeue · a65bcc12
      John Stultz authored
      Now that alarmtimer_remove has been simplified, change
      its name to _dequeue to better match its paired _enqueue
      function.
      
      Cc: Arve Hjønnevåg <arve@android.com>
      Cc: Colin Cross <ccross@android.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      a65bcc12
    • John Stultz's avatar
      alarmtimer: Remove unused helpers & defines · a269eb50
      John Stultz authored
      No one is using these alarmtimer state helpers, so yank them.
      
      Cc: Arve Hjønnevåg <arve@android.com>
      Cc: Colin Cross <ccross@android.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      a269eb50
    • John Stultz's avatar
      alarmtimer: Use hrtimer per-alarm instead of per-base · dae373be
      John Stultz authored
      Arve Hjønnevåg reported numerous crashes from the
      "BUG_ON(timer->state != HRTIMER_STATE_CALLBACK)" check
      in __run_hrtimer after it called alarmtimer_fired.
      
      It ends up the alarmtimer code was not properly handling
      possible failures of hrtimer_try_to_cancel, and because
      these faulres occur when the underlying base hrtimer is
      being run, this limits the ability to properly handle
      modifications to any alarmtimers on that base.
      
      Because much of the logic duplicates the hrtimer logic,
      it seems that we might as well have a per-alarmtimer
      hrtimer, and avoid the extra complextity of trying to
      multiplex many alarmtimers off of one hrtimer.
      
      Thus this patch moves the hrtimer to the alarm structure
      and simplifies the management logic.
      
      Changelog:
      v2:
      * Includes a fix for double alarm_start calls found by
        Arve
      
      Cc: Arve Hjønnevåg <arve@android.com>
      Cc: Colin Cross <ccross@android.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Reported-by: default avatarArve Hjønnevåg <arve@android.com>
      Tested-by: default avatarArve Hjønnevåg <arve@android.com>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      dae373be
    • Todd Poynor's avatar
      alarmtimer: Implement minimum alarm interval for allowing suspend · 59a93c27
      Todd Poynor authored
      alarmtimer suspend return -EBUSY if the next alarm will fire in less
      than 2 seconds.  This allows one RTC seconds tick to occur subsequent
      to this check before the alarm wakeup time is set, ensuring the wakeup
      time is still in the future (assuming the RTC does not tick one more
      second prior to setting the alarm).
      
      If suspend is rejected due to an imminent alarm, hold a wakeup source
      for 2 seconds to process the alarm prior to reattempting suspend.
      
      If setting the alarm incurs an -ETIME for an alarm set in the past,
      or any other problem setting the alarm, abort suspend and hold a
      wakelock for 1 second while the alarm is allowed to be serviced or
      other hopefully transient conditions preventing the alarm clear up.
      Signed-off-by: default avatarTodd Poynor <toddpoynor@google.com>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      59a93c27
  4. 13 Sep, 2012 1 commit
  5. 11 Sep, 2012 8 commits
    • Linus Torvalds's avatar
      Merge branch 'for-3.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 0bd1189e
      Linus Torvalds authored
      Pull workqueue fixes from Tejun Heo:
       "It's later than I'd like but well the timing just didn't work out this
        time.
      
        There are three bug fixes.  One from before 3.6-rc1 and two from the
        new CPU hotplug code.  Kudos to Lai for discovering all of them and
        providing fixes.
      
         * Atomicity bug when clearing a flag and setting another.  The two
           operation should have been atomic but wasn't.  This bug has existed
           for a long time but is unlikely to have actually happened.  Fix is
           safe.  Marked for -stable.
      
         * If CPU hotplug cycles happen back-to-back before workers finish the
           previous cycle, the states could get out of sync and it could get
           stuck.  Fixed by waiting for workers to complete before finishing
           hotplug cycle.
      
         * While CPU hotplug is in progress, idle workers could be depleted
           which can then lead to deadlock.  I think both happening together
           is highly unlikely but still better to fix it and the fix isn't too
           scary.
      
        There's another workqueue related regression which reported a few days
        ago:
      
          https://bugzilla.kernel.org/show_bug.cgi?id=47301
      
        It's a bit of head scratcher but there is a semi-reliable reproduce
        case, so I'm hoping to resolve it soonish."
      
      * 'for-3.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: fix possible idle worker depletion across CPU hotplug
        workqueue: restore POOL_MANAGING_WORKERS
        workqueue: fix possible deadlock in idle worker rebinding
        workqueue: move WORKER_REBIND clearing in rebind_workers() to the end of the function
        workqueue: UNBOUND -> REBIND morphing in rebind_workers() should be atomic
      0bd1189e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 274a2f5d
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes the authenc self-test crash as well as a missing export of
        a symbol used by a module."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: authenc - Fix crash with zero-length assoc data
        crypto/caam: Export gen_split_key symbol for other modules
      274a2f5d
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin · 2a1497c3
      Linus Torvalds authored
      Pull blackfin updates from Bob Liu:
       "One kbuild and a smp build fix."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin:
        kbuild: add symbol prefix arg to kallsyms
        blackfin: smp: adapt to generic smp helpers
      2a1497c3
    • Herbert Xu's avatar
      crypto: authenc - Fix crash with zero-length assoc data · 9b2f4cb6
      Herbert Xu authored
      The authenc code doesn't deal with zero-length associated data
      correctly and ends up constructing a zero-length sg entry which
      causes a crash when it's fed into the crypto system.
      
      This patch fixes this by avoiding the code-path that triggers
      the SG construction if we have no associated data.
      
      This isn't the most optimal fix as it means that we'll end up
      using the fallback code-path even when we could still execute
      the digest function.  However, this isn't a big deal as nobody
      but the test path would supply zero-length associated data.
      Reported-by: default avatarRomain Francoise <romain@orebokech.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Tested-by: default avatarRomain Francoise <romain@orebokech.com>
      9b2f4cb6
    • James Hogan's avatar
      kbuild: add symbol prefix arg to kallsyms · 6895f97e
      James Hogan authored
      Commit 1f2bfbd0 ("kbuild: link of
      vmlinux moved to a script") introduced in v3.5-rc1 broke kallsyms on
      architectures which have symbol prefixes.
      
      The --symbol-prefix argument used to be added to the KALLSYMS command
      line from the architecture Makefile, however this isn't picked up by the
      new scripts/link-vmlinux.sh. This resulted in symbols like
      kallsyms_addresses being added which weren't correctly overriding the
      weak symbols such as _kallsyms_addresses. These could then trigger
      BUG_ONs in kallsyms code.
      
      This is fixed by removing the KALLSYMS addition from the architecture
      Makefile, and using CONFIG_SYMBOL_PREFIX in the link-vmlinux.sh script
      to determine whether to add the --symbol-prefix argument.
      Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Signed-off-by: default avatarBob Liu <lliubbo@gmail.com>
      6895f97e
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 1a95620f
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "I had actually prepared this fix set before I left for KS + Plumbers,
        so it's been incubating much longer than it should have.  I'll be
        picking up my three week backlog this week, so more fixes will then be
        forthcoming
      
        This set consist of three minor and one fairly major (the device not
        ready causing offlining problem which is a serious regression
        introduced by the media change update) fixes.
      
        Signed-off-by: James Bottomley <JBottomley@Parallels.com>"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        [SCSI] Fix 'Device not ready' issue on mpt2sas
        [SCSI] scsi_lib: fix scsi_io_completion's SG_IO error propagation
        [SCSI] megaraid_sas: Move poll_aen_lock initializer
        [SCSI] mpt2sas: Fix for Driver oops, when loading driver with max_queue_depth command line option to a very small value
      1a95620f
    • Linus Torvalds's avatar
      Merge tag 'kvm-3.6-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm · ffc29649
      Linus Torvalds authored
      Pull KVM updates from Avi Kivity:
       "A trio of KVM fixes: incorrect lookup of guest cpuid, an uninitialized
        variable fix, and error path cleanup fix."
      
      * tag 'kvm-3.6-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: fix error paths for failed gfn_to_page() calls
        KVM: x86: Check INVPCID feature bit in EBX of leaf 7
        KVM: PIC: fix use of uninitialised variable.
      ffc29649
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 44346cfe
      Linus Torvalds authored
      Pull FUSE fixes from Miklos Szeredi:
       "This contains bugfixes for FUSE and CUSE and a compile warning fix."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: fix retrieve length
        fuse: mark variables uninitialized
        cuse: kill connection on initialization error
        cuse: fix fuse_conn_kill()
      44346cfe
  6. 10 Sep, 2012 10 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.samba.org/sfrench/cifs-2.6 · e9bd8f16
      Linus Torvalds authored
      Pull CIFS fixes from Steve French.
      
      * 'for-linus' of git://git.samba.org/sfrench/cifs-2.6:
        CIFS: Fix endianness conversion
        CIFS: Fix error handling in cifs_push_mandatory_locks
      e9bd8f16
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · 1b0a9069
      Linus Torvalds authored
      Pull UDF and ext3 fixes from Jan Kara:
       "One UDF data corruption fix and one ext3 fix where we didn't write
        everything to disk on fsync in one corner case."
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        udf: Fix data corruption for files in ICB
        ext3: Fix fdatasync() for files with only i_size changes
      1b0a9069
    • Linus Torvalds's avatar
      Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 6562271a
      Linus Torvalds authored
      Pull i2c subsystem fixes from Jean Delvare.
      
      * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        i2c-core: Fix for lockdep validator
        i2c-designware: Fix build error if CONFIG_I2C_DESIGNWARE_PLATFORM=y && CONFIG_I2C_DESIGNWARE_PCI=y
        i2c-i801: Add Device IDs for Intel Lynx Point-LP PCH
      6562271a
    • Lai Jiangshan's avatar
      workqueue: fix possible idle worker depletion across CPU hotplug · ee378aa4
      Lai Jiangshan authored
      To simplify both normal and CPU hotplug paths, worker management is
      prevented while CPU hoplug is in progress.  This is achieved by CPU
      hotplug holding the same exclusion mechanism used by workers to ensure
      there's only one manager per pool.
      
      If someone else seems to be performing the manager role, workers
      proceed to execute work items.  CPU hotplug using the same mechanism
      can lead to idle worker depletion because all workers could proceed to
      execute work items while CPU hotplug is in progress and CPU hotplug
      itself wouldn't actually perform the worker management duty - it
      doesn't guarantee that there's an idle worker left when it releases
      management.
      
      This idle worker depletion, under extreme circumstances, can break
      forward-progress guarantee and thus lead to deadlock.
      
      This patch fixes the bug by using separate mechanisms for manager
      exclusion among workers and hotplug exclusion.  For manager exclusion,
      POOL_MANAGING_WORKERS which was restored by the previous patch is
      used.  pool->manager_mutex is now only used for exclusion between the
      elected manager and CPU hotplug.  The elected manager won't proceed
      without holding pool->manager_mutex.
      
      This ensures that the worker which won the manager position can't skip
      managing while CPU hotplug is in progress.  It will block on
      manager_mutex and perform management after CPU hotplug is complete.
      
      Note that hotplug may happen while waiting for manager_mutex.  A
      manager isn't either on idle or busy list and thus the hoplug code
      can't unbind/rebind it.  Make the manager handle its own un/rebinding.
      
      tj: Updated comment and description.
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      ee378aa4
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 5d67f2e8
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Just noticed I hadn't send these out, nothing majorly urgent, I know
        AMD guys have some regression fixes coming soon.
      
        This contains:
         2 nouveau fixes so it loads on the retina MBP systems properly,
         2 vmwgfx fixes to load the driver earlier, and allow distros config it
         1 error->debug fix in ast
        and Keith was playing with 32-on-64 and decided we may as well stick
        the compat ioctl in all the drivers.  It fixes udl for him."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/vmwgfx: add MODULE_DEVICE_TABLE so vmwgfx loads at boot
        drm/vmwgfx: allow a kconfig option to choose if fbcon is enabled
        drm: use drm_compat_ioctl for 32-bit apps
        drm/ast: drop debug level on error printk
        drm/nv50-/gpio: initialise to vbios defaults during init
        drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs
      5d67f2e8
    • Lai Jiangshan's avatar
      workqueue: restore POOL_MANAGING_WORKERS · 552a37e9
      Lai Jiangshan authored
      This patch restores POOL_MANAGING_WORKERS which was replaced by
      pool->manager_mutex by 60373152 "workqueue: use mutex for global_cwq
      manager exclusion".
      
      There's a subtle idle worker depletion bug across CPU hotplug events
      and we need to distinguish an actual manager and CPU hotplug
      preventing management.  POOL_MANAGING_WORKERS will be used for the
      former and manager_mutex the later.
      
      This patch just lays POOL_MANAGING_WORKERS on top of the existing
      manager_mutex and doesn't introduce any synchronization changes.  The
      next patch will update it.
      
      Note that this patch fixes a non-critical anomaly where
      too_many_workers() may return %true spuriously while CPU hotplug is in
      progress.  While the issue could schedule idle timer spuriously, it
      didn't trigger any actual misbehavior.
      
      tj: Rewrote patch description.
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      552a37e9
    • Xiao Guangrong's avatar
      KVM: fix error paths for failed gfn_to_page() calls · 4484141a
      Xiao Guangrong authored
      This bug was triggered:
      [ 4220.198458] BUG: unable to handle kernel paging request at fffffffffffffffe
      [ 4220.203907] IP: [<ffffffff81104d85>] put_page+0xf/0x34
      ......
      [ 4220.237326] Call Trace:
      [ 4220.237361]  [<ffffffffa03830d0>] kvm_arch_destroy_vm+0xf9/0x101 [kvm]
      [ 4220.237382]  [<ffffffffa036fe53>] kvm_put_kvm+0xcc/0x127 [kvm]
      [ 4220.237401]  [<ffffffffa03702bc>] kvm_vcpu_release+0x18/0x1c [kvm]
      [ 4220.237407]  [<ffffffff81145425>] __fput+0x111/0x1ed
      [ 4220.237411]  [<ffffffff8114550f>] ____fput+0xe/0x10
      [ 4220.237418]  [<ffffffff81063511>] task_work_run+0x5d/0x88
      [ 4220.237424]  [<ffffffff8104c3f7>] do_exit+0x2bf/0x7ca
      
      The test case:
      
      	printf(fmt, ##args);		\
      	exit(-1);} while (0)
      
      static int create_vm(void)
      {
      	int sys_fd, vm_fd;
      
      	sys_fd = open("/dev/kvm", O_RDWR);
      	if (sys_fd < 0)
      		die("open /dev/kvm fail.\n");
      
      	vm_fd = ioctl(sys_fd, KVM_CREATE_VM, 0);
      	if (vm_fd < 0)
      		die("KVM_CREATE_VM fail.\n");
      
      	return vm_fd;
      }
      
      static int create_vcpu(int vm_fd)
      {
      	int vcpu_fd;
      
      	vcpu_fd = ioctl(vm_fd, KVM_CREATE_VCPU, 0);
      	if (vcpu_fd < 0)
      		die("KVM_CREATE_VCPU ioctl.\n");
      	printf("Create vcpu.\n");
      	return vcpu_fd;
      }
      
      static void *vcpu_thread(void *arg)
      {
      	int vm_fd = (int)(long)arg;
      
      	create_vcpu(vm_fd);
      	return NULL;
      }
      
      int main(int argc, char *argv[])
      {
      	pthread_t thread;
      	int vm_fd;
      
      	(void)argc;
      	(void)argv;
      
      	vm_fd = create_vm();
      	pthread_create(&thread, NULL, vcpu_thread, (void *)(long)vm_fd);
      	printf("Exit.\n");
      	return 0;
      }
      
      It caused by release kvm->arch.ept_identity_map_addr which is the
      error page.
      
      The parent thread can send KILL signal to the vcpu thread when it was
      exiting which stops faulting pages and potentially allocating memory.
      So gfn_to_pfn/gfn_to_page may fail at this time
      
      Fixed by checking the page before it is used
      Signed-off-by: default avatarXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
      Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
      4484141a
    • Jean Delvare's avatar
      i2c-core: Fix for lockdep validator · 390946b1
      Jean Delvare authored
      If kernel is compiled with CONFIG_PROVE_LOCKING the
      validator raises an error when a multiplexer is removed
      via sysfs and sub-clients are connected to it. This is a
      false positive.
      Documentation/lockdep-design.txt recommends to handle this
      via calls to mutex_lock_nested().
      
      Based on an earlier fix from Michael Lawnick.
      
      Note that the extra code resolves to nothing unless
      CONFIG_DEBUG_LOCK_ALLOC=y.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Michael Lawnick <ml.lawnick@gmx.de>
      390946b1
    • Axel Lin's avatar
      i2c-designware: Fix build error if CONFIG_I2C_DESIGNWARE_PLATFORM=y && CONFIG_I2C_DESIGNWARE_PCI=y · e68bb91b
      Axel Lin authored
      This patch adds config I2C_DESIGNWARE_CORE in Kconfig, and let
      I2C_DESIGNWARE_PLATFORM and I2C_DESIGNWARE_PCI select I2C_DESIGNWARE_CORE.
      
      Because both I2C_DESIGNWARE_PLATFORM and I2C_DESIGNWARE_PCI can be built as
      built-in or module, we also need to export the functions in i2c-designware-core.
      
      This fixes below build error when CONFIG_I2C_DESIGNWARE_PLATFORM=y &&
      CONFIG_I2C_DESIGNWARE_PCI=y:
      
        LD      drivers/i2c/busses/built-in.o
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_clear_int':
      i2c-designware-core.c:(.text+0xa10): multiple definition of `i2c_dw_clear_int'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x928): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_init':
      i2c-designware-core.c:(.text+0x178): multiple definition of `i2c_dw_init'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x90): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `dw_readl':
      i2c-designware-core.c:(.text+0xe8): multiple definition of `dw_readl'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x0): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_isr':
      i2c-designware-core.c:(.text+0x724): multiple definition of `i2c_dw_isr'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x63c): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_xfer':
      i2c-designware-core.c:(.text+0x4b0): multiple definition of `i2c_dw_xfer'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x3c8): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_is_enabled':
      i2c-designware-core.c:(.text+0x9d4): multiple definition of `i2c_dw_is_enabled'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8ec): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `dw_writel':
      i2c-designware-core.c:(.text+0x124): multiple definition of `dw_writel'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x3c): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_xfer_msg':
      i2c-designware-core.c:(.text+0x2e8): multiple definition of `i2c_dw_xfer_msg'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x200): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_enable':
      i2c-designware-core.c:(.text+0x9c8): multiple definition of `i2c_dw_enable'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8e0): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_read_comp_param':
      i2c-designware-core.c:(.text+0xa24): multiple definition of `i2c_dw_read_comp_param'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x93c): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_disable':
      i2c-designware-core.c:(.text+0x9dc): multiple definition of `i2c_dw_disable'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8f4): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_func':
      i2c-designware-core.c:(.text+0x710): multiple definition of `i2c_dw_func'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x628): first defined here
      drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_disable_int':
      i2c-designware-core.c:(.text+0xa18): multiple definition of `i2c_dw_disable_int'
      drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x930): first defined here
      make[3]: *** [drivers/i2c/busses/built-in.o] Error 1
      make[2]: *** [drivers/i2c/busses] Error 2
      make[1]: *** [drivers/i2c] Error 2
      make: *** [drivers] Error 2
      Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Tested-by: default avatarJiri Slaby <jslaby@suse.cz>
      Cc: stable@vger.kernel.org [3.2+]
      e68bb91b
    • James Ralston's avatar
      i2c-i801: Add Device IDs for Intel Lynx Point-LP PCH · 4a8f1ddd
      James Ralston authored
      Add the SMBus Device IDs for the Intel Lynx Point-LP PCH.
      Signed-off-by: default avatarJames Ralston <james.d.ralston@intel.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      4a8f1ddd
  7. 09 Sep, 2012 1 commit
  8. 08 Sep, 2012 3 commits
    • Linus Torvalds's avatar
      Linux 3.6-rc5 · 55d512e2
      Linus Torvalds authored
      55d512e2
    • Linus Torvalds's avatar
      Merge branch 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping · 32d687ca
      Linus Torvalds authored
      Pull DMA-mapping fixes from Marek Szyprowski:
       "Another set of fixes for ARM dma-mapping subsystem.
      
        Commit e9da6e99 replaced custom consistent buffer remapping code
        with generic vmalloc areas.  It however introduced some regressions
        caused by limited support for allocations in atomic context.  This
        series contains fixes for those regressions.
      
        For some subplatforms the default, pre-allocated pool for atomic
        allocations turned out to be too small, so a function for setting its
        size has been added.
      
        Another set of patches adds support for atomic allocations to
        IOMMU-aware DMA-mapping implementation.
      
        The last part of this pull request contains two fixes for Contiguous
        Memory Allocator, which relax too strict requirements."
      
      * 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
        ARM: dma-mapping: IOMMU allocates pages from atomic_pool with GFP_ATOMIC
        ARM: dma-mapping: Introduce __atomic_get_pages() for __iommu_get_pages()
        ARM: dma-mapping: Refactor out to introduce __in_atomic_pool
        ARM: dma-mapping: atomic_pool with struct page **pages
        ARM: Kirkwood: increase atomic coherent pool size
        ARM: DMA-Mapping: print warning when atomic coherent allocation fails
        ARM: DMA-Mapping: add function for setting coherent pool size from platform code
        ARM: relax conditions required for enabling Contiguous Memory Allocator
        mm: cma: fix alignment requirements for contiguous regions
      32d687ca
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 11be4bc6
      Linus Torvalds authored
      Pull input subsystem updates from Dmitry Torokhov.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: wacom - add support for EMR on Cintiq 24HD touch
        Input: i8042 - add Gigabyte T1005 series netbooks to noloop table
        Input: imx_keypad - reset the hardware before enabling
        Input: edt-ft5x06 - fix build error when compiling wthout CONFIG_DEBUG_FS
      11be4bc6