1. 10 6月, 2015 3 次提交
  2. 08 6月, 2015 1 次提交
  3. 02 6月, 2015 17 次提交
  4. 27 5月, 2015 1 次提交
  5. 23 5月, 2015 7 次提交
  6. 19 5月, 2015 10 次提交
    • T
      jiffies: Remove the extra indentation level · 4e3d9cb0
      Thomas Gleixner 提交于
      Somehow I missed to clean that up when applying the patches. Fix it up
      now.
      Reported-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Nicholas Mc Guire <der.herr@hofr.at>
      4e3d9cb0
    • V
      clockevents: Stop unused clockevent devices · d2540875
      Viresh Kumar 提交于
      To avoid getting spurious interrupts on a tickless CPU, clockevent
      device can now be stopped by switching to ONESHOT_STOPPED state.
      
      The natural place for handling this transition is tick_program_event().
      
      On 'expires == KTIME_MAX', we skip programming the event and so we need
      to fix such call sites as well, to always call tick_program_event()
      irrespective of the expires value.
      
      Once the clockevent device is required again, check if it was earlier
      put into ONESHOT_STOPPED state. If yes, switch its state to ONESHOT
      before programming its event.
      
      To make sure we haven't missed any corner case, add a WARN() for the
      case where we try to reprogram clockevent device while we aren't
      configured in ONESHOT_STOPPED state.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Cc: linaro-kernel@lists.linaro.org
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Kevin Hilman <khilman@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Preeti U Murthy <preeti@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/5146b07be7f0bc497e0ebae036590ec2fa73e540.1428031396.git.viresh.kumar@linaro.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      d2540875
    • V
      clockevents: Introduce CLOCK_EVT_STATE_ONESHOT_STOPPED state · 8fff52fd
      Viresh Kumar 提交于
      When no timers/hrtimers are pending, the expiry time is set to a
      special value: 'KTIME_MAX'. This normally happens with
      NO_HZ_{IDLE|FULL} in both LOWRES/HIGHRES modes.
      
      When 'expiry == KTIME_MAX', we either cancel the 'tick-sched' hrtimer
      (NOHZ_MODE_HIGHRES) or skip reprogramming clockevent device
      (NOHZ_MODE_LOWRES).  But, the clockevent device is already
      reprogrammed from the tick-handler for next tick.
      
      As the clock event device is programmed in ONESHOT mode it will at
      least fire one more time (unnecessarily). Timers on few
      implementations (like arm_arch_timer, etc.) only support PERIODIC mode
      and their drivers emulate ONESHOT over that. Which means that on these
      platforms we will get spurious interrupts periodically (at last
      programmed interval rate, normally tick rate).
      
      In order to avoid spurious interrupts, the clockevent device should be
      stopped or its interrupts should be masked.
      
      A simple (yet hacky) solution to get this fixed could be: update
      hrtimer_force_reprogram() to always reprogram clockevent device and
      update clockevent drivers to STOP generating events (or delay it to
      max time) when 'expires' is set to KTIME_MAX. But the drawback here is
      that every clockevent driver has to be hacked for this particular case
      and its very easy for new ones to miss this.
      
      However, Thomas suggested to add an optional state ONESHOT_STOPPED to
      solve this problem: lkml.org/lkml/2014/5/9/508.
      
      This patch adds support for ONESHOT_STOPPED state in clockevents
      core. It will only be available to drivers that implement the
      state-specific callbacks instead of the legacy ->set_mode() callback.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Reviewed-by: NPreeti U. Murthy <preeti@linux.vnet.ibm.com>
      Cc: linaro-kernel@lists.linaro.org
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Kevin Hilman <khilman@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/b8b383a03ac07b13312c16850b5106b82e4245b5.1428031396.git.viresh.kumar@linaro.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      8fff52fd
    • T
      Merge branch 'linus' into timers/core · c3b5d3ce
      Thomas Gleixner 提交于
      Make sure the upstream fixes are applied before adding further
      modifications.
      c3b5d3ce
    • N
      time: Allow gcc to fold constants when possible · daa67b4b
      Nicholas Mc Guire 提交于
      To allow constant folding in msecs_to_jiffies() conditionally calls
      the HZ dependent _msecs_to_jiffies() helpers or, when gcc can not
      figure out constant folding, __msecs_to_jiffies which is the renamed
      original msecs_to_jiffies() function.
      Signed-off-by: NNicholas Mc Guire <hofrat@osadl.org>
      Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Joe Perches <joe@perches.com>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Andrew Hunter <ahh@google.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Link: http://lkml.kernel.org/r/1431951554-5563-3-git-send-email-hofrat@osadl.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      daa67b4b
    • N
      time: Refactor msecs_to_jiffies · ca42aaf0
      Nicholas Mc Guire 提交于
      Refactor the msecs_to_jiffies conditional code part in time.c and 
      jiffies.h putting it into conditional functions rather than #ifdefs
      to improve readability.
      
      [ tglx: Verified that there is no binary code change ]
      Signed-off-by: NNicholas Mc Guire <hofrat@osadl.org>
      Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Joe Perches <joe@perches.com>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Andrew Hunter <ahh@google.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Link: http://lkml.kernel.org/r/1431951554-5563-2-git-send-email-hofrat@osadl.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      ca42aaf0
    • N
      time: Move timeconst.h into include/generated · 0a227985
      Nicholas Mc Guire 提交于
      kernel/time/timeconst.h is moved to include/generated/ and generated 
      by the top level Kbuild. This allows using timeconst.h in an earlier
      build stage.
      Signed-off-by: NNicholas Mc Guire <hofrat@osadl.org>
      Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Joe Perches <joe@perches.com>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Andrew Hunter <ahh@google.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Link: http://lkml.kernel.org/r/1431951554-5563-1-git-send-email-hofrat@osadl.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      0a227985
    • L
      Linux 4.1-rc4 · e2608180
      Linus Torvalds 提交于
      e2608180
    • P
      watchdog: Fix merge 'conflict' · ab992dc3
      Peter Zijlstra 提交于
      Two watchdog changes that came through different trees had a non
      conflicting conflict, that is, one changed the semantics of a variable
      but no actual code conflict happened. So the merge appeared fine, but
      the resulting code did not behave as expected.
      
      Commit 195daf66 ("watchdog: enable the new user interface of the
      watchdog mechanism") changes the semantics of watchdog_user_enabled,
      which thereafter is only used by the functions introduced by
      b3738d29 ("watchdog: Add watchdog enable/disable all functions").
      
      There further appears to be a distinct lack of serialization between
      setting and using watchdog_enabled, so perhaps we should wrap the
      {en,dis}able_all() things in watchdog_proc_mutex.
      
      This patch fixes a s2r failure reported by Michal; which I cannot
      readily explain. But this does make the code internally consistent
      again.
      Reported-and-tested-by: NMichal Hocko <mhocko@suse.cz>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ab992dc3
    • L
      Merge tag 'for-linus-20150516' of git://git.infradead.org/linux-mtd · 7cf7d424
      Linus Torvalds 提交于
      Pull MTD fixes from Brian Norris:
       "Two MTD fixes for 4.1:
      
         - readtest: the signal-handling code was clobbering the error codes
           we should be handling/reporting in this test, rendering it useless.
           Noticed by Coverity.
      
         - the common SPI NOR flash DT binding (merged for 4.1-rc1) is being
           revised, so let's change that before 4.1 is minted"
      
      * tag 'for-linus-20150516' of git://git.infradead.org/linux-mtd:
        Documentation: dt: mtd: replace "nor-jedec" binding with "jedec, spi-nor"
        mtd: readtest: don't clobber error reports
      7cf7d424
  7. 18 5月, 2015 1 次提交
    • P
      sched,perf: Fix periodic timers · 4cfafd30
      Peter Zijlstra 提交于
      In the below two commits (see Fixes) we have periodic timers that can
      stop themselves when they're no longer required, but need to be
      (re)-started when their idle condition changes.
      
      Further complications is that we want the timer handler to always do
      the forward such that it will always correctly deal with the overruns,
      and we do not want to race such that the handler has already decided
      to stop, but the (external) restart sees the timer still active and we
      end up with a 'lost' timer.
      
      The problem with the current code is that the re-start can come before
      the callback does the forward, at which point the forward from the
      callback will WARN about forwarding an enqueued timer.
      
      Now, conceptually its easy to detect if you're before or after the fwd
      by comparing the expiration time against the current time. Of course,
      that's expensive (and racy) because we don't have the current time.
      
      Alternatively one could cache this state inside the timer, but then
      everybody pays the overhead of maintaining this extra state, and that
      is undesired.
      
      The only other option that I could see is the external timer_active
      variable, which I tried to kill before. I would love a nicer interface
      for this seemingly simple 'problem' but alas.
      
      Fixes: 272325c4 ("perf: Fix mux_interval hrtimer wreckage")
      Fixes: 77a4d1a1 ("sched: Cleanup bandwidth timers")
      Cc: pjt@google.com
      Cc: tglx@linutronix.de
      Cc: klamm@yandex-team.ru
      Cc: mingo@kernel.org
      Cc: bsegall@google.com
      Cc: hpa@zytor.com
      Cc: Sasha Levin <sasha.levin@oracle.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20150514102311.GX21418@twins.programming.kicks-ass.net
      4cfafd30