07 Jul, 2015

1 commit


01 Apr, 2015

1 commit

  • This option was for simpler migration to the clock events code.
    Most architectures have been converted and the option has been
    disfunctional as a standalone option for quite some time. Remove
    it.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Rafael J. Wysocki
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/5021859.jl9OC1medj@vostro.rjw.lan
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

24 Jul, 2014

2 commits

  • The only user of the cycle_last validation is the x86 TSC. In order to
    provide NMI safe accessor functions for clock monotonic and
    monotonic_raw we need to do that in the core.

    We can't do the TSC specific

    if (now < cycle_last)
    now = cycle_last;

    for the other wrapping around clocksources, but TSC has
    CLOCKSOURCE_MASK(64) which actually does not mask out anything so if
    now is less than cycle_last the subtraction will give a negative
    result. So we can check for that in clocksource_delta() and return 0
    for that case.

    Implement and enable it for x86

    Signed-off-by: Thomas Gleixner
    Signed-off-by: John Stultz

    Thomas Gleixner
     
  • The non-scalar ktime_t implementation is basically a timespec
    which has to be changed to support dates past 2038 on 32bit
    systems.

    This patch removes the non-scalar ktime_t implementation, forcing
    the scalar s64 nanosecond version on all architectures.

    This may have additional performance overhead on some 32bit
    systems when converting between ktime_t and timespec structures,
    however the majority of 32bit systems (arm and i386) were already
    using scalar ktime_t, so no performance regressions will be seen
    on those platforms.

    On affected platforms, I'm open to finding optimizations, including
    avoiding converting to timespecs where possible.

    [ tglx: We can now cleanup the ktime_t.tv64 mess, but thats a
    different issue and we can throw a coccinelle script at it ]

    Signed-off-by: John Stultz
    Signed-off-by: Thomas Gleixner
    Signed-off-by: John Stultz

    John Stultz
     

15 Feb, 2014

1 commit

  • This bit of information is in the Kconfig help text:

    "Note the boot CPU will still be kept outside the range to
    handle the timekeeping duty."

    However neither the variable NO_HZ_FULL_ALL, or the prompt
    convey this important detail, so lets add it to the prompt
    to make it more explicitly obvious to the average user.

    Acked-by: Paul E. McKenney
    Signed-off-by: Paul Gortmaker
    Cc: Ingo Molnar
    Cc: Paul Gortmaker
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1391711781-7466-1-git-send-email-paul.gortmaker@windriver.com
    Signed-off-by: Frederic Weisbecker

    Paul Gortmaker
     

30 Sep, 2013

2 commits

  • The CONFIG_64BIT requirement on vtime can finally be removed
    since we now depend on HAVE_VIRT_CPU_ACCOUNTING_GEN which
    already takes care of the arch ability to handle nsecs based
    cputime_t safely.

    Signed-off-by: Kevin Hilman
    Cc: Ingo Molnar
    Cc: Russell King
    Cc: Paul E. McKenney
    Cc: Arm Linux
    Signed-off-by: Frederic Weisbecker

    Kevin Hilman
     
  • With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit. In order
    to use that feature, arch code should be audited to ensure there are no
    races in concurrent read/write of cputime_t. For example,
    reading/writing 64-bit cputime_t on some 32-bit arches may require
    multiple accesses for low and high value parts, so proper locking
    is needed to protect against concurrent accesses.

    Therefore, add CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN which arches can
    enable after they've been audited for potential races.

    This option is automatically enabled on 64-bit platforms.

    Feature requested by Frederic Weisbecker.

    Signed-off-by: Kevin Hilman
    Cc: Ingo Molnar
    Cc: Russell King
    Cc: Paul E. McKenney
    Cc: Arm Linux
    Signed-off-by: Frederic Weisbecker

    Kevin Hilman
     

05 Sep, 2013

1 commit

  • Pull timers/nohz changes from Ingo Molnar:
    "It mostly contains fixes and full dynticks off-case optimizations, by
    Frederic Weisbecker"

    * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
    nohz: Include local CPU in full dynticks global kick
    nohz: Optimize full dynticks's sched hooks with static keys
    nohz: Optimize full dynticks state checks with static keys
    nohz: Rename a few state variables
    vtime: Always debug check snapshot source _before_ updating it
    vtime: Always scale generic vtime accounting results
    vtime: Optimize full dynticks accounting off case with static keys
    vtime: Describe overriden functions in dedicated arch headers
    m68k: hardirq_count() only need preempt_mask.h
    hardirq: Split preempt count mask definitions
    context_tracking: Split low level state headers
    vtime: Fix racy cputime delta update
    vtime: Remove a few unneeded generic vtime state checks
    context_tracking: User/kernel broundary cross trace events
    context_tracking: Optimize context switch off case with static keys
    context_tracking: Optimize guest APIs off case with static key
    context_tracking: Optimize main APIs off case with static key
    context_tracking: Ground setup for static key use
    context_tracking: Remove full dynticks' hacky dependency on wide context tracking
    nohz: Only enable context tracking on full dynticks CPUs
    ...

    Linus Torvalds
     

01 Sep, 2013

1 commit

  • This commit adds the state machine that takes the per-CPU idle data
    as input and produces a full-system-idle indication as output. This
    state machine is driven out of RCU's quiescent-state-forcing
    mechanism, which invokes rcu_sysidle_check_cpu() to collect per-CPU
    idle state and then rcu_sysidle_report() to drive the state machine.

    The full-system-idle state is sampled using rcu_sys_is_idle(), which
    also drives the state machine if RCU is idle (and does so by forcing
    RCU to become non-idle). This function returns true if all but the
    timekeeping CPU (tick_do_timer_cpu) are idle and have been idle long
    enough to avoid memory contention on the full_sysidle_state state
    variable. The rcu_sysidle_force_exit() may be called externally
    to reset the state machine back into non-idle state.

    For large systems the state machine is driven out of RCU's
    force-quiescent-state logic, which provides good scalability at the price
    of millisecond-scale latencies on the transition to full-system-idle
    state. This is not so good for battery-powered systems, which are usually
    small enough that they don't need to care about scalability, but which
    do care deeply about energy efficiency. Small systems therefore drive
    the state machine directly out of the idle-entry code. The number of
    CPUs in a "small" system is defined by a new NO_HZ_FULL_SYSIDLE_SMALL
    Kconfig parameter, which defaults to 8. Note that this is a build-time
    definition.

    Signed-off-by: Paul E. McKenney
    Cc: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Lai Jiangshan
    [ paulmck: Use true and false for boolean constants per Lai Jiangshan. ]
    Reviewed-by: Josh Triplett
    [ paulmck: Simplify logic and provide better comments for memory barriers,
    based on review comments and questions by Lai Jiangshan. ]

    Paul E. McKenney
     

19 Aug, 2013

1 commit

  • At least one CPU must keep the scheduling-clock tick running for
    timekeeping purposes whenever there is a non-idle CPU. However, with
    the new nohz_full adaptive-idle machinery, it is difficult to distinguish
    between all CPUs really being idle as opposed to all non-idle CPUs being
    in adaptive-ticks mode. This commit therefore adds a Kconfig parameter
    as a first step towards enabling a scalable detection of full-system
    idle state.

    Signed-off-by: Paul E. McKenney
    Cc: Frederic Weisbecker
    Cc: Steven Rostedt
    [ paulmck: Update help text per Frederic Weisbecker. ]
    Reviewed-by: Josh Triplett

    Paul E. McKenney
     

13 Aug, 2013

1 commit

  • Now that the full dynticks subsystem only enables the context tracking
    on full dynticks CPUs, lets remove the dependency on CONTEXT_TRACKING_FORCE

    This dependency was a hack to enable the context tracking widely for the
    full dynticks susbsystem until the latter becomes able to enable it in a
    more CPU-finegrained fashion.

    Now CONTEXT_TRACKING_FORCE only stands for testing on archs that
    work on support for the context tracking while full dynticks can't be
    used yet due to unmet dependencies. It simulates a system where all CPUs
    are full dynticks so that RCU user extended quiescent states and dynticks
    cputime accounting can be tested on the given arch.

    Signed-off-by: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Paul E. McKenney
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Borislav Petkov
    Cc: Li Zhong
    Cc: Mike Galbraith
    Cc: Kevin Hilman

    Frederic Weisbecker
     

16 May, 2013

1 commit

  • Pull timer fixes from Thomas Gleixner:

    - Cure for not using zalloc in the first place, which leads to random
    crashes with CPUMASK_OFF_STACK.

    - Revert a user space visible change which broke udev

    - Add a missing cpu_online early return introduced by the new full
    dyntick conversions

    - Plug a long standing race in the timer wheel cpu hotplug code.
    Sigh...

    - Cleanup NOHZ per cpu data on cpu down to prevent stale data on cpu
    up.

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    time: Revert ALWAYS_USE_PERSISTENT_CLOCK compile time optimizaitons
    timer: Don't reinitialize the cpu base lock during CPU_UP_PREPARE
    tick: Don't invoke tick_nohz_stop_sched_tick() if the cpu is offline
    tick: Cleanup NOHZ per cpu data on cpu down
    tick: Use zalloc_cpumask_var for allocating offstack cpumasks

    Linus Torvalds
     

15 May, 2013

1 commit

  • Kay Sievers noted that the ALWAYS_USE_PERSISTENT_CLOCK config,
    which enables some minor compile time optimization to avoid
    uncessary code in mostly the suspend/resume path could cause
    problems for userland.

    In particular, the dependency for RTC_HCTOSYS on
    !ALWAYS_USE_PERSISTENT_CLOCK, which avoids setting the time
    twice and simplifies suspend/resume, has the side effect
    of causing the /sys/class/rtc/rtcN/hctosys flag to always be
    zero, and this flag is commonly used by udev to setup the
    /dev/rtc symlink to /dev/rtcN, which can cause pain for
    older applications.

    While the udev rules could use some work to be less fragile,
    breaking userland should strongly be avoided. Additionally
    the compile time optimizations are fairly minor, and the code
    being optimized is likely to be reworked in the future, so
    lets revert this change.

    Reported-by: Kay Sievers
    Signed-off-by: John Stultz
    Cc: stable #3.9
    Cc: Feng Tang
    Cc: Jason Gunthorpe
    Link: http://lkml.kernel.org/r/1366828376-18124-1-git-send-email-john.stultz@linaro.org
    Signed-off-by: Thomas Gleixner

    John Stultz
     

04 May, 2013

1 commit

  • Commit 0637e029392386e6996f5d6574aadccee8315efa
    ("nohz: Select wide RCU nocb for full dynticks") intended
    to force CONFIG_RCU_NOCB_CPU_ALL=y when full dynticks is
    enabled.

    However this option is part of a choice menu and Kconfig's
    "select" instruction has no effect on such targets.

    Fix this by using reverse dependencies on the targets we
    don't want instead.

    Reviewed-by: Paul E. McKenney
    Signed-off-by: Frederic Weisbecker
    Cc: Christoph Lameter
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

27 Apr, 2013

1 commit

  • Turn the full dynticks passive dependency on VIRT_CPU_ACCOUNTING_GEN
    to an active one.

    The full dynticks Kconfig is currently hidden behind the full dynticks
    cputime accounting, which is an awkward and counter-intuitive layout:
    the user first has to select the dynticks cputime accounting in order
    to make the full dynticks feature to be visible.

    We definetly want it the other way around. The usual way to perform
    this kind of active dependency is use "select" on the depended target.
    Now we can't use the Kconfig "select" instruction when the target is
    a "choice".

    So this patch inspires on how the RCU subsystem Kconfig interact
    with its dependencies on SMP and PREEMPT: we make sure that cputime
    accounting can't propose another option than VIRT_CPU_ACCOUNTING_GEN
    when NO_HZ_FULL is selected by using the right "depends on" instruction
    for each cputime accounting choices.

    v2: Keep full dynticks cputime accounting available even without
    full dynticks, as per Paul McKenney's suggestion.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Christoph Lameter
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

24 Apr, 2013

1 commit

  • Remove the dependency on (TREE_RCU || TREE_PREEMPT_RCU). The full
    dynticks option already depends on SMP which implies
    (whatever flavour of) RCU tree config anyway.

    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Oleg Nesterov
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

23 Apr, 2013

1 commit

  • It makes testing and implementation much easier as we
    know in advance that all CPUs are RCU nocbs.

    Also this prepares to remove the dynamic check for
    nohz_full= boot mask to be a subset of rcu_nocbs=

    Eventually this should also help removing the requirement
    for the boot CPU to be outside the full dynticks range.

    Suggested-by: Christoph Lameter
    Suggested-by: Paul E. McKenney
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Oleg Nesterov
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

21 Apr, 2013

1 commit


19 Apr, 2013

2 commits

  • Provide a new kernel config that defaults all CPUs to be part
    of the full dynticks range, except the boot one for timekeeping.

    This default setting is overriden by the nohz_full= boot option
    if passed by the user.

    This is helpful for those who don't need a finegrained range
    of full dynticks CPU and also for automated testing.

    Suggested-by: Ingo Molnar
    Reviewed-by: Paul E. McKenney
    Signed-off-by: Frederic Weisbecker
    Cc: Andrew Morton
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • Provide two new helpers in order to notify the full dynticks CPUs about
    some internal system changes against which they may reconsider the state
    of their tick. Some practical examples include: posix cpu timers, perf tick
    and sched clock tick.

    For now the notifying handler, implemented through IPIs, is a stub
    that will be implemented when we get the tick stop/restart infrastructure
    in.

    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Oleg Nesterov
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

16 Apr, 2013

4 commits

  • Remove the "single task" statement from CONFIG_NO_HZ_FULL
    title. The constraint can be invalidated when tasks from
    other sched classes than SCHED_FAIR are running. Moreover
    it's possible that hrtick join the party in the future.

    Also add a line about the dependency on SMP.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • Rename CONFIG_PERIODIC_HZ to CONFIG_HZ_PERIODIC in
    order to stay consistent with other tick implementation
    entries:

    CONFIG_HZ_PERIODIC
    CONFIG_NO_HZ_IDLE
    CONFIG_NO_HZ_FULL

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • "Extended nohz" was used as a naming base for the full dynticks
    API and Kconfig symbols. It reflects the fact the system tries
    to stop the tick in more places than just idle.

    But that "extended" name is a bit opaque and vague. Rename it to
    "full" makes it clearer what the system tries to do under this
    config: try to shutdown the tick anytime it can. The various
    constraints that prevent that to happen shouldn't be considered
    as fundamental properties of this feature but rather technical
    issues that may be solved in the future.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • In order to enforce backward compatibility with older
    config files, we want the new dynticks-idle Kconfig entry
    to default its value to the one of the old CONFIG_NO_HZ symbol
    if present.

    Namely we want:

    config NO_HZ # old obsolete dynticks idle symbol
    bool

    config NO_HZ_IDLE # new dynticks idle symbol
    default NO_HZ

    However Kconfig prevents this to work if the old symbol
    is not visible. And this is currently the case because
    NO_HZ lacks a title in order to show it in make oldconfig
    and alike.

    To fix this, bring a minimal title and help text to the
    obsolete Kconfig entry that explains its purpose. This
    makes the "defaulting" to work.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

03 Apr, 2013

3 commits

  • Now the user has the choice between three implementations of
    the timer tick:

    * Static periodic tick
    * Idle dynticks
    * Full dynticks

    At least for now, these are mutually exclusive choices, so
    let's rely on the proper Kconfig feature to display these
    to the user.

    A new entry CONFIG_NO_HZ_IDLE is created and the old
    CONFIG_NO_HZ maps to it for config file backward compatibility.
    The old name was too general now that we have more
    granular dynticks implementations.

    While at it, add some explanation to help the user on
    his decision between the 3 entries.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Andrew Morton
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Namhyung Kim
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • We are planning to convert the dynticks Kconfig options layout
    into a choice menu. The user must be able to easily pick
    any of the following implementations: constant periodic tick,
    idle dynticks, full dynticks.

    As this implies a mutual exclusion, the two dynticks implementions
    need to converge on the selection of a common Kconfig option in order
    to ease the sharing of a common infrastructure.

    It would thus seem pretty natural to reuse CONFIG_NO_HZ to
    that end. It already implements all the idle dynticks code
    and the full dynticks depends on all that code for now.
    So ideally the choice menu would propose CONFIG_NO_HZ_IDLE and
    CONFIG_NO_HZ_EXTENDED then both would select CONFIG_NO_HZ.

    On the other hand we want to stay backward compatible: if
    CONFIG_NO_HZ is set in an older config file, we want to
    enable CONFIG_NO_HZ_IDLE by default.

    But we can't afford both at the same time or we run into
    a circular dependency:

    1) CONFIG_NO_HZ_IDLE and CONFIG_NO_HZ_EXTENDED both select
    CONFIG_NO_HZ
    2) If CONFIG_NO_HZ is set, we default to CONFIG_NO_HZ_IDLE

    We might be able to support that from Kconfig/Kbuild but it
    may not be wise to introduce such a confusing behaviour.

    So to solve this, create a new CONFIG_NO_HZ_COMMON option
    which gathers the common code between idle and full dynticks
    (that common code for now is simply the idle dynticks code)
    and select it from their referring Kconfig.

    Then we'll later create CONFIG_NO_HZ_IDLE and map CONFIG_NO_HZ
    to it for backward compatibility.

    Signed-off-by: Frederic Weisbecker
    Cc: Andrew Morton
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Namhyung Kim
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     
  • The full dynticks feature only shows up when all its
    Kconfig dependencies are met (RCU nocbs, RCU user mode, ...)

    This is far from being user friendly as those who want to
    activate this feature need to look into the Kconfig files
    and iterate through each dependency then activate these
    by hand in order to show and select the full dynticks
    Kconfig option.

    So process the other way around: show up the Kconfig option
    if the minimal low level dependencies are met and activate
    the high level ones when we enable the feature.

    Note there is one exception in the picture:
    CONFIG_VIRT_CPU_ACCOUNTING_GEN is part of a Kconfig choice
    menu and it appears we can't select it from another Kconfig
    selection when it's under such layout. So for now this
    particular item stays as a passive dependency.

    Reported-by: Ingo Molnar
    Signed-off-by: Frederic Weisbecker
    Cc: Andrew Morton
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Namhyung Kim
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

21 Mar, 2013

1 commit

  • For extreme usecases such as Real Time or HPC, having
    the ability to shutdown the tick when a single task runs
    on a CPU is a desired feature:

    * Reducing the amount of interrupts improves throughput
    for CPU-bound tasks. The CPU is less distracted from its
    real job, from an execution time and from the cache point
    of views.

    * This also improve latency response as we have less critical
    sections.

    Start with introducing a very simple interface to define
    full dynticks CPU: use a boot time option defined cpumask
    through the "nohz_extended=" kernel parameter. CPUs that
    are part of this range will have their tick shutdown
    whenever possible: provided they run a single task and
    they don't do kernel activity that require the periodic
    tick. These details will be later documented in
    Documentation/*

    An online CPU must be kept outside this range to handle the
    timekeeping.

    Suggested-by: Paul E. McKenney
    Signed-off-by: Frederic Weisbecker
    Cc: Andrew Morton
    Cc: Chris Metcalf
    Cc: Christoph Lameter
    Cc: Geoff Levand
    Cc: Gilad Ben Yossef
    Cc: Hakan Akkan
    Cc: Ingo Molnar
    Cc: Kevin Hilman
    Cc: Li Zhong
    Cc: Namhyung Kim
    Cc: Paul E. McKenney
    Cc: Paul Gortmaker
    Cc: Peter Zijlstra
    Cc: Steven Rostedt
    Cc: Thomas Gleixner

    Frederic Weisbecker
     

04 Feb, 2013

1 commit


01 Feb, 2013

1 commit

  • Currently, the timer broadcast mechanism is defined by a function
    pointer on struct clock_event_device. As the fundamental mechanism for
    broadcast is architecture-specific, this means that clock_event_device
    drivers cannot be shared across multiple architectures.

    This patch adds an (optional) architecture-specific function for timer
    tick broadcast, allowing drivers which may require broadcast
    functionality to be shared across multiple architectures.

    Signed-off-by: Mark Rutland
    Reviewed-by: Santosh Shilimkar
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: nico@linaro.org
    Cc: Will.Deacon@arm.com
    Cc: Marc.Zyngier@arm.com
    Cc: john.stultz@linaro.org
    Link: http://lkml.kernel.org/r/1358183124-28461-3-git-send-email-mark.rutland@arm.com
    Tested-by: Santosh Shilimkar
    Reviewed-by: Stephen Boyd
    Signed-off-by: Thomas Gleixner

    Mark Rutland
     

30 Jan, 2013

1 commit


16 Jan, 2013

1 commit

  • Make the persistent clock check a kernel config option, so that some
    platform can explicitely select it, also make CONFIG_RTC_HCTOSYS and
    RTC_SYSTOHC depend on its non-existence, which could prevent the
    persistent clock and RTC code from doing similar thing twice during
    system's init/suspend/resume phases.

    If the CONFIG_HAS_PERSISTENT_CLOCK=n, then no change happens for kernel
    which still does the persistent clock check in timekeeping_init().

    Cc: Thomas Gleixner
    Suggested-by: John Stultz
    Signed-off-by: Feng Tang
    [jstultz: Added dependency for RTC_SYSTOHC as well]
    Signed-off-by: John Stultz

    Feng Tang
     

25 Sep, 2012

2 commits

  • 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
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Andy Lutomirski
    Cc: Martin Schwidefsky
    Cc: Paul Turner
    Cc: Steven Rostedt
    Cc: Richard Cochran
    Cc: Prarit Bhargava
    Cc: Thomas Gleixner
    Signed-off-by: John Stultz

    John Stultz
     
  • 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
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Andy Lutomirski
    Cc: Martin Schwidefsky
    Cc: Paul Turner
    Cc: Steven Rostedt
    Cc: Richard Cochran
    Cc: Prarit Bhargava
    Cc: Thomas Gleixner
    Signed-off-by: John Stultz

    John Stultz
     

22 May, 2012

1 commit

  • Sigh, I missed to check which architecture Kconfig files actually
    include the core Kconfig file. There are a few which did not. So we
    broke them.

    Instead of adding the includes to those, we are better off to move the
    include to init/Kconfig like we did already with irqs and others.

    This does not change anything for the architectures using the old
    style periodic timer mode. It just solves the build wreckage there.

    For those architectures which use the clock events infrastructure it
    moves the include of the core Kconfig file to "General setup" which is
    a way more logical place than having it at random locations specified
    by the architecture specific Kconfigs.

    Reported-by: Ingo Molnar
    Cc: Anna-Maria Gleixner
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

21 May, 2012

1 commit

  • We really don't want all the arch code defining stuff
    over and over.

    [ anna-maria: Added missing GENERIC_CMOS_UPDATE switch ]

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Anna-Maria Gleixner
    Cc: Paul Mundt
    Link: http://lkml.kernel.org/r/1337529587.3208.2.camel@dionysos
    Acked-by: Sam Ravnborg

    Thomas Gleixner
     

31 Mar, 2012

1 commit

  • This option has been selected from arch code as it was assumed that
    it's necessary to support oneshot mode clockevent devices. But it's
    just a core internal helper to compile tick-oneshot.c if NOHZ or
    HIG_RES_TIMERS are selected.

    Reported-by: Russell King
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

29 Nov, 2011

1 commit


08 Sep, 2011

1 commit

  • The automatic increase of the min_delta_ns of a clockevents device
    should be done in the clockevents code as the minimum delay is an
    attribute of the clockevents device.

    In addition not all architectures want the automatic adjustment, on a
    massively virtualized system it can happen that the programming of a
    clock event fails several times in a row because the virtual cpu has
    been rescheduled quickly enough. In that case the minimum delay will
    erroneously be increased with no way back. The new config symbol
    GENERIC_CLOCKEVENTS_MIN_ADJUST is used to enable the automatic
    adjustment. The config option is selected only for x86.

    Signed-off-by: Martin Schwidefsky
    Cc: john stultz
    Link: http://lkml.kernel.org/r/20110823133142.494157493@de.ibm.com
    Signed-off-by: Thomas Gleixner

    Martin Schwidefsky
     

27 Jul, 2010

1 commit

  • Now that all arches have been converted over to use generic time via
    clocksources or arch_gettimeoffset(), we can remove the GENERIC_TIME
    config option and simplify the generic code.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz