03 Jul, 2019

1 commit


26 Jun, 2019

1 commit

  • Exynos SoCs based on CA7/CA15 have 2 timer interfaces: custom Exynos MCT
    (Multi Core Timer) and standard ARM Architected Timers.

    There are use cases, where both timer interfaces are used simultanously.
    One of such examples is using Exynos MCT for the main system timer and
    ARM Architected Timers for the KVM and virtualized guests (KVM requires
    arch timers).

    Exynos Multi-Core Timer driver (exynos_mct) must be however started
    before ARM Architected Timers (arch_timer), because they both share some
    common hardware blocks (global system counter) and turning on MCT is
    needed to get ARM Architected Timer working properly.

    To ensure selecting Exynos MCT as the main system timer, increase MCT
    timer rating. To ensure proper starting order of both timers during
    suspend/resume cycle, increase MCT hotplug priority over ARM Archictected
    Timers.

    Signed-off-by: Marek Szyprowski
    Reviewed-by: Krzysztof Kozlowski
    Reviewed-by: Chanwoo Choi
    Signed-off-by: Daniel Lezcano

    Marek Szyprowski
     

19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

23 Feb, 2019

5 commits

  • The driver does not use sched.h and platform_device.h.

    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Daniel Lezcano

    Krzysztof Kozlowski
     
  • While freeing interrupt handlers in error path, don't assume that all
    requested interrupts are per-processor interrupts and properly release
    standard interrupts too.

    Reported-by: Krzysztof Kozlowski
    Fixes: 56a94f13919c ("clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier")
    Signed-off-by: Marek Szyprowski
    Reviewed-by: Krzysztof Kozlowski
    Reviewed-by: Chanwoo Choi
    Signed-off-by: Daniel Lezcano

    Marek Szyprowski
     
  • Exynos Multi-Core Timer driver is used only on device-tree based
    systems, so remove non-dt related code. In case of !CONFIG_OF
    the code is anyway equal because of_irq_count() has a stub
    returning 0. Device node pointer is always provided when driver
    has been probed from device tree.

    Signed-off-by: Marek Szyprowski
    Reviewed-by: Krzysztof Kozlowski
    Reviewed-by: Chanwoo Choi
    Signed-off-by: Daniel Lezcano

    Marek Szyprowski
     
  • When shutting down the timer, ensure that after we have stopped the
    timer any pending interrupts are cleared. This fixes a problem when
    suspending, as interrupts are disabled before the timer is stopped,
    so the timer interrupt may still be asserted, preventing the system
    entering a low power state when the wfi is executed.

    Signed-off-by: Stuart Menefy
    Reviewed-by: Krzysztof Kozlowski
    Tested-by: Marek Szyprowski
    Cc: # v4.3+
    Signed-off-by: Daniel Lezcano

    Stuart Menefy
     
  • When a timer tick occurs and the clock is in one-shot mode, the timer
    needs to be stopped to prevent it triggering subsequent interrupts.
    Currently this code is in exynos4_mct_tick_clear(), but as it is
    only needed when an ISR occurs move it into exynos4_mct_tick_isr(),
    leaving exynos4_mct_tick_clear() just doing what its name suggests it
    should.

    Signed-off-by: Stuart Menefy
    Reviewed-by: Krzysztof Kozlowski
    Tested-by: Marek Szyprowski
    Cc: stable@vger.kernel.org # v4.3+
    Signed-off-by: Daniel Lezcano

    Stuart Menefy
     

14 Jun, 2017

1 commit

  • The CLOCKSOURCE_OF_DECLARE macro is used widely for the timers to declare the
    clocksource at early stage. However, this macro is also used to initialize
    the clockevent if any, or the clockevent only.

    It was originally suggested to declare another macro to initialize a
    clockevent, so in order to separate the two entities even they belong to the
    same IP. This was not accepted because of the impact on the DT where splitting
    a clocksource/clockevent definition does not make sense as it is a Linux
    concept not a hardware description.

    On the other side, the clocksource has not interrupt declared while the
    clockevent has, so it is easy from the driver to know if the description is
    for a clockevent or a clocksource, IOW it could be implemented at the driver
    level.

    So instead of dealing with a named clocksource macro, let's use a more generic
    one: TIMER_OF_DECLARE.

    The patch has not functional changes.

    Signed-off-by: Daniel Lezcano
    Acked-by: Heiko Stuebner
    Acked-by: Neil Armstrong
    Acked-by: Arnd Bergmann
    Acked-by: Matthias Brugger
    Reviewed-by: Linus Walleij

    Daniel Lezcano
     

17 Jan, 2017

1 commit

  • When a CPU goes offline a potentially pending timer interrupt is not
    cleared. When the CPU comes online again then the pending interrupt is
    delivered before the per cpu clockevent device is initialized. As a
    consequence the tick interrupt handler dereferences a NULL pointer.

    [ 51.251378] Unable to handle kernel NULL pointer dereference at virtual address 00000040
    [ 51.289348] task: ee942d00 task.stack: ee960000
    [ 51.293861] PC is at tick_periodic+0x38/0xb0
    [ 51.298102] LR is at tick_handle_periodic+0x1c/0x90

    Clear the pending interrupt in the cpu dying path.

    Fixes: 56a94f13919c ("clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier")
    Reported-by: Seung-Woo Kim
    Signed-off-by: Joonyoung Shim
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: cw00.choi@samsung.com
    Cc: daniel.lezcano@linaro.org
    Cc: stable@vger.kernel.org
    Cc: javier@osg.samsung.com
    Cc: kgene@kernel.org
    Cc: krzk@kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1484628876-22065-1-git-send-email-jy0922.shim@samsung.com
    Signed-off-by: Thomas Gleixner

    Joonyoung Shim
     

26 Dec, 2016

1 commit

  • Pull timer type cleanups from Thomas Gleixner:
    "This series does a tree wide cleanup of types related to
    timers/timekeeping.

    - Get rid of cycles_t and use a plain u64. The type is not really
    helpful and caused more confusion than clarity

    - Get rid of the ktime union. The union has become useless as we use
    the scalar nanoseconds storage unconditionally now. The 32bit
    timespec alike storage got removed due to the Y2038 limitations
    some time ago.

    That leaves the odd union access around for no reason. Clean it up.

    Both changes have been done with coccinelle and a small amount of
    manual mopping up"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    ktime: Get rid of ktime_equal()
    ktime: Cleanup ktime_set() usage
    ktime: Get rid of the union
    clocksource: Use a plain u64 instead of cycle_t

    Linus Torvalds
     

25 Dec, 2016

2 commits

  • There is no point in having an extra type for extra confusion. u64 is
    unambiguous.

    Conversion was done with the following coccinelle script:

    @rem@
    @@
    -typedef u64 cycle_t;

    @fix@
    typedef cycle_t;
    @@
    -cycle_t
    +u64

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: John Stultz

    Thomas Gleixner
     
  • When the state names got added a script was used to add the extra argument
    to the calls. The script basically converted the state constant to a
    string, but the cleanup to convert these strings into meaningful ones did
    not happen.

    Replace all the useless strings with 'subsys/xxx/yyy:state' strings which
    are used in all the other places already.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Sebastian Siewior
    Link: http://lkml.kernel.org/r/20161221192112.085444152@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

16 Sep, 2016

1 commit

  • This patch allows building and compile-testing the driver also for
    ARM64. The delay_timer is only supported on ARMv7.

    Cc: Daniel Lezcano
    Cc: Thomas Gleixner
    Cc: Kukjin Kim
    Cc: Krzysztof Kozlowski
    Signed-off-by: Chanwoo Choi
    Acked-by: Daniel Lezcano
    [k.kozlowski: Adjusted commit msg]
    Signed-off-by: Krzysztof Kozlowski

    Chanwoo Choi
     

15 Jul, 2016

1 commit

  • Install the callbacks via the state machine and let the core invoke
    the callbacks on the already online CPUs.

    Signed-off-by: Richard Cochran
    Signed-off-by: Anna-Maria Gleixner
    Reviewed-by: Sebastian Andrzej Siewior
    Cc: Daniel Lezcano
    Cc: Krzysztof Kozlowski
    Cc: Kukjin Kim
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: rt@linutronix.de
    Link: http://lkml.kernel.org/r/20160713153338.147940411@linutronix.de
    Signed-off-by: Ingo Molnar

    Richard Cochran
     

28 Jun, 2016

2 commits

  • All the clocksource drivers's init function are now converted to return
    an error code. CLOCKSOURCE_OF_DECLARE is no longer used as well as the
    clksrc-of table.

    Let's convert back the names:
    - CLOCKSOURCE_OF_DECLARE_RET => CLOCKSOURCE_OF_DECLARE
    - clksrc-of-ret => clksrc-of

    Signed-off-by: Daniel Lezcano

    For exynos_mct and samsung_pwm_timer:
    Acked-by: Krzysztof Kozlowski

    For arch/arc:
    Acked-by: Vineet Gupta

    For mediatek driver:
    Acked-by: Matthias Brugger

    For the Rockchip-part
    Acked-by: Heiko Stuebner

    For STi :
    Acked-by: Patrice Chotard

    For the mps2-timer.c and versatile.c changes:
    Acked-by: Liviu Dudau

    For the OXNAS part :
    Acked-by: Neil Armstrong

    For LPC32xx driver:
    Acked-by: Sylvain Lemieux

    For Broadcom Kona timer change:
    Acked-by: Ray Jui

    For Sun4i and Sun5i:
    Acked-by: Chen-Yu Tsai

    For Meson6:
    Acked-by: Carlo Caione

    For Keystone:
    Acked-by: Santosh Shilimkar

    For NPS:
    Acked-by: Noam Camus

    For bcm2835:
    Acked-by: Eric Anholt

    Daniel Lezcano
     
  • The init functions do not return any error. They behave as the following:

    - panic, thus leading to a kernel crash while another timer may work and
    make the system boot up correctly

    or

    - print an error and let the caller unaware if the state of the system

    Change that by converting the init functions to return an error conforming
    to the CLOCKSOURCE_OF_RET prototype.

    Proper error handling (rollback, errno value) will be changed later case
    by case, thus this change just return back an error or success in the init
    function.

    Signed-off-by: Daniel Lezcano
    Reviewed-by: Krzysztof Kozlowski

    Daniel Lezcano
     

25 Feb, 2016

1 commit

  • set_state_oneshot_stopped() is called by the clkevt core, when the next
    event is required at an expiry time of 'KTIME_MAX'. This normally
    happens with NO_HZ_{IDLE|FULL} in both LOWRES/HIGHRES modes.

    This patch makes the clockevent device to stop on such an event, to
    avoid spurious interrupts, as explained by: commit 8fff52fd5093
    ("clockevents: Introduce CLOCK_EVT_STATE_ONESHOT_STOPPED state").

    Signed-off-by: Viresh Kumar
    Signed-off-by: Daniel Lezcano

    Viresh Kumar
     

15 Oct, 2015

1 commit

  • Since evt structure is embedded in per-CPU mevt structure it's
    definitely faster to use container_of() to get access to mevt
    if we have evt (for example as incoming function argument) instead
    of more expensive approach with this_cpu_ptr(&percpu_mct_tick).
    this_cpu_ptr() on per-CPU mevt structure leads to access to cp15
    to get cpu id and arithmetic operations.
    Container_of() is cheaper since it's just one asm instruction.
    This should work if used evt pointer is correct and owned by
    local mevt structure.

    For example, before this patch set_state_shutdown() looks like:

    4a4: e92d4010 push {r4, lr}
    4a8: e3004000 movw r4, #0
    4ac: ebfffffe bl 0
    4b0: e3003000 movw r3, #0
    4b4: e3404000 movt r4, #0
    4b8: e3403000 movt r3, #0
    4bc: e7933100 ldr r3, [r3, r0, lsl #2]
    4c0: e0844003 add r4, r4, r3
    4c4: e59400c0 ldr r0, [r4, #192] ; 0xc0
    4c8: ebffffd4 bl 420
    4cc: e3a00000 mov r0, #0
    4d0: e8bd8010 pop {r4, pc}

    With this patch:

    4a4: e92d4010 push {r4, lr}
    4a8: e59000c0 ldr r0, [r0, #192] ; 0xc0
    4ac: ebffffdb bl 420
    4b0: e3a00000 mov r0, #0
    4b4: e8bd8010 pop {r4, pc}

    Also, for me size of exynos_mct.o decreased from 84588 bytes
    to 83956.

    Signed-off-by: Alexey Klimov
    Signed-off-by: Daniel Lezcano
    Reviewed-by: Krzysztof Kozlowski

    Alexey Klimov
     

10 Aug, 2015

2 commits


27 Jun, 2015

1 commit

  • Whilst testing cpu hotplug events on kernel configured with
    DEBUG_PREEMPT and DEBUG_ATOMIC_SLEEP we get following BUG message,
    caused by calling request_irq() and free_irq() in the context of
    hotplug notification (which is in this case atomic context).

    [ 40.785859] CPU1: Software reset
    [ 40.786660] BUG: sleeping function called from invalid context at mm/slub.c:1241
    [ 40.786668] in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/1
    [ 40.786678] Preemption disabled at:[< (null)>] (null)
    [ 40.786681]
    [ 40.786692] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.19.0-rc4-00024-g7dca860 #36
    [ 40.786698] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    [ 40.786728] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [ 40.786747] [] (show_stack) from [] (dump_stack+0x70/0xbc)
    [ 40.786767] [] (dump_stack) from [] (kmem_cache_alloc+0xd8/0x170)
    [ 40.786785] [] (kmem_cache_alloc) from [] (request_threaded_irq+0x64/0x128)
    [ 40.786804] [] (request_threaded_irq) from [] (exynos4_local_timer_setup+0xc0/0x13c)
    [ 40.786820] [] (exynos4_local_timer_setup) from [] (exynos4_mct_cpu_notify+0x30/0xa8)
    [ 40.786838] [] (exynos4_mct_cpu_notify) from [] (notifier_call_chain+0x44/0x84)
    [ 40.786857] [] (notifier_call_chain) from [] (__cpu_notify+0x28/0x44)
    [ 40.786873] [] (__cpu_notify) from [] (secondary_start_kernel+0xec/0x150)
    [ 40.786886] [] (secondary_start_kernel) from [] (0x40008764)

    Interrupts cannot be requested/freed in the CPU_STARTING/CPU_DYING
    notifications which run on the hotplugged cpu with interrupts and
    preemption disabled.

    To avoid the issue, request the interrupts for all possible cpus in
    the boot code. The interrupts are marked NO_AUTOENABLE to avoid a racy
    request_irq/disable_irq() sequence. The flag prevents the
    request_irq() code from enabling the interrupt immediately.

    The interrupt is then enabled in the CPU_STARTING notifier of the
    hotplugged cpu and again disabled with disable_irq_nosync() in the
    CPU_DYING notifier.

    [ tglx: Massaged changelog to match the patch ]

    Fixes: 7114cd749a12 ("clocksource: exynos_mct: use (request/free)_irq calls for local timer registration")
    Reported-by: Krzysztof Kozlowski
    Reviewed-by: Krzysztof Kozlowski
    Tested-by: Krzysztof Kozlowski
    Tested-by: Marcin Jabrzyk
    Signed-off-by: Damian Eppel
    Cc: m.szyprowski@samsung.com
    Cc: kyungmin.park@samsung.com
    Cc: daniel.lezcano@linaro.org
    Cc: kgene@kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1435324984-7328-1-git-send-email-d.eppel@samsung.com
    Signed-off-by: Thomas Gleixner
    Cc:

    Damian Eppel
     

02 Jun, 2015

3 commits


05 Jan, 2015

1 commit

  • EXYNOS4_MCT_L_MASK is defined as 0xffffff00, so applying this bitmask
    produces a number outside the range 0x00 to 0xff, which always results
    in execution of the default switch statement.

    Obviously this is wrong and git history shows that the bitmask inversion
    was incorrectly set during a refactoring of the MCT code.

    Fix this by putting the inversion at the correct position again.

    Cc: stable@vger.kernel.org
    Acked-by: Kukjin Kim
    Reported-by: GP Orcullo
    Reviewed-by: Doug Anderson
    Signed-off-by: Tobias Jakobi
    Signed-off-by: Daniel Lezcano

    Tobias Jakobi
     

23 Jul, 2014

2 commits

  • The MCT has a nice 64-bit counter. That means that we _can_ register
    as a 64-bit clocksource and sched_clock. ...but that doesn't mean we
    should.

    The 64-bit counter is read by reading two 32-bit registers. That
    means reading needs to be something like:
    - Read upper half
    - Read lower half
    - Read upper half and confirm that it hasn't changed.

    That wouldn't be terrible, but:
    - THe MCT isn't very fast to access (hundreds of nanoseconds).
    - The clocksource is queried _all the time_.

    In total system profiles of real workloads on ChromeOS, we've seen
    exynos_frc_read() taking 2% or more of CPU time even after optimizing
    the 3 reads above to 2 (see below).

    The MCT is clocked at ~24MHz on all known systems. That means that
    the 32-bit half of the counter rolls over every ~178 seconds. This
    inspired an optimization in ChromeOS to cache the upper half between
    calls, moving 3 reads to 2. ...but we can do better! Having a 32-bit
    timer that flips every 178 seconds is more than sufficient for Linux.
    Let's just use the lower half of the MCT.

    Times on 5420 to do 1000000 gettimeofday() calls from userspace:
    * Original code: 1323852 us
    * ChromeOS cache upper half: 1173084 us
    * ChromeOS + ldmia to optimize: 1045674 us
    * Use lower 32-bit only (this code): 1014429 us

    As you can see, the time used doesn't increase linearly with the
    number of reads and we can make 64-bit work almost as fast as 32-bit
    with a bit of assembly code. But since there's no real gain for
    64-bit, let's go with the simplest and fastest implementation.

    Note: with this change roughly half the time for gettimeofday() is
    spent in exynos_frc_read(). The rest is timer / system call overhead.

    Also note: this patch disables the use of the MCT on ARM64 systems
    until we've sorted out how to make "cycles_t" always 32-bit. Really
    ARM64 systems should be using arch timers anyway.

    Signed-off-by: Doug Anderson
    Acked-by Vincent Guittot
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     
  • Using the __raw functions is discouraged. Update the file to
    consistently use the proper functions.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim
    Signed-off-by: Daniel Lezcano

    Doug Anderson
     

05 Jul, 2014

2 commits

  • This patch registers the exynos mct clocksource as the current timer
    as it has constant clock rate. This will generate correct udelay for
    the exynos platform and avoid using unnecessary calibrated
    jiffies. This change has been tested on exynos5420 based board and
    udelay is very close to expected.

    Without this patch udelay() on exynos5400 / exynos5800 is wildly
    inaccurate due to big.LITTLE not adjusting loops_per_jiffy correctly.
    Also without this patch udelay() on exynos5250 can be innacruate
    during transitions between frequencies < 800 MHz (you'll go 200 MHz ->
    800 MHz -> 300 MHz and will run at 800 MHz for a time with the wrong
    loops_per_jiffy).

    [dianders: reworked and created version 3]

    Signed-off-by: Amit Daniel Kachhap
    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Amit Daniel Kachhap
     
  • In (93bfb76 clocksource: exynos_mct: register sched_clock callback) we
    supported using the MCT as a scheduler clock. We properly marked
    exynos4_read_sched_clock() as notrace. However, we then went and
    called another function that _wasn't_ notrace. That means if you do:

    cd /sys/kernel/debug/tracing/
    echo function_graph > current_tracer

    You'll get a crash.

    Fix this (but still let other readers of the MCT be trace-enabled) by
    adding an extra function. It's important to keep other users of MCT
    traceable because the MCT is actually quite slow to access and we want
    exynos4_frc_read() to show up in ftrace profiles if it's the
    bottleneck.

    Signed-off-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Doug Anderson
     

16 Jun, 2014

1 commit

  • Unfortunately on some exynos systems, resetting the mct counter also
    resets the architected timer counter. This can cause problems if the
    architected timer driver has already been initialized because the kernel
    will think that the counter has wrapped around, causing a big jump in
    printk timestamps and delaying any scheduled clock events until the
    counter reaches the value it had before it was reset.

    The kernel code makes no assumptions about the initial value of the mct
    counter so there is no reason from a software perspective to clear the
    counter before starting it. This also fixes the problems described in
    the previous paragraph.

    Cc: Olof Johansson
    Cc: Tomasz Figa
    Signed-off-by: Chirantan Ekbote
    Reviewed-by: Doug Anderson
    Tested-by: Doug Anderson
    Signed-off-by: Kukjin Kim

    Chirantan Ekbote
     

22 May, 2014

1 commit


02 May, 2014

1 commit


18 Apr, 2014

2 commits

  • After hotplugging CPU1 the first call of interrupt handler for CPU1
    oneshot timer was called on CPU0 because it fired before setting IRQ
    affinity. Affected are SoCs where Multi Core Timer interrupts are
    shared (SPI), e.g. Exynos 4210.

    During setup of the MCT timers the clock event device should be
    registered after setting the affinity for interrupt. This will prevent
    starting the timer too early.

    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Thomas Gleixner
    Cc: Kyungmin Park
    Cc: Marek Szyprowski
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Tomasz Figa ,
    Cc: Daniel Lezcano ,
    Cc: Kukjin Kim
    Cc: linux-arm-kernel@lists.infradead.org,
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140416143316.299247848@linutronix.de
    Signed-off-by: Thomas Gleixner

    Krzysztof Kozlowski
     
  • The starting cpu is not yet in the online mask so irq_set_affinity()
    fails which results in per cpu timers for this cpu ending up on some
    other online cpu, ususally cpu 0.

    Use irq_force_affinity() which disables the online mask check and
    makes things work.

    Signed-off-by: Thomas Gleixner
    Tested-by: Krzysztof Kozlowski
    Cc: Kyungmin Park
    Cc: Marek Szyprowski
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Tomasz Figa ,
    Cc: Daniel Lezcano ,
    Cc: Kukjin Kim
    Cc: linux-arm-kernel@lists.infradead.org,
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140416143316.106665251@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

06 Apr, 2014

1 commit

  • Pull ARM SoC cleanups from Arnd Bergmann:
    "These cleanup patches are mainly move stuff around and should all be
    harmless. They are mainly split out so that other branches can be
    based on top to avoid conflicts.

    Notable changes are:

    - We finally remove all mach/timex.h, after CLOCK_TICK_RATE is no
    longer used (Uwe Kleine-König)
    - The Qualcomm MSM platform is split out into legacy mach-msm and
    new-style mach-qcom, to allow easier maintainance of the new
    hardware support without regressions (Kumar Gala)
    - A rework of some of the Kconfig logic to simplify multiplatform
    support (Rob Herring)
    - Samsung Exynos gets closer to supporting multiplatform (Sachin
    Kamat and others)
    - mach-bcm3528 gets merged into mach-bcm (Stephen Warren)
    - at91 gains some common clock framework support (Alexandre Belloni,
    Jean-Jacques Hiblot and other French people)"

    * tag 'cleanup-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (89 commits)
    ARM: hisi: select HAVE_ARM_SCU only for SMP
    ARM: efm32: allow uncompress debug output
    ARM: prima2: build reset code standalone
    ARM: at91: add PWM clock
    ARM: at91: move sam9261 SoC to common clk
    ARM: at91: prepare common clk transition for sam9261 SoC
    ARM: at91: updated the at91_dt_defconfig with support for the ADS7846
    ARM: at91: dt: sam9261: Device Tree support for the at91sam9261ek
    ARM: at91: dt: defconfig: Added the sam9261 to the list of DT-enabled SOCs
    ARM: at91: dt: Add at91sam9261 dt SoC support
    ARM: at91: switch sam9rl to common clock framework
    ARM: at91/dt: define main clk frequency of at91sam9rlek
    ARM: at91/dt: define at91sam9rl clocks
    ARM: at91: prepare common clk transition for sam9rl SoCs
    ARM: at91: prepare sam9 dt boards transition to common clk
    ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
    ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
    ARM: at91: Add at91sam9rl DT SoC support
    ARM: at91: prepare at91sam9rl DT transition
    ARM: at91/defconfig: refresh at91sam9260_9g20_defconfig
    ...

    Linus Torvalds
     

12 Mar, 2014

1 commit


14 Feb, 2014

1 commit


16 Dec, 2013

1 commit


26 Sep, 2013

1 commit

  • Some variants of Exynos MCT, namely exynos4210-mct at the moment, use
    normal, shared interrupts for local timers. This means that each
    interrupt must have correct affinity set to fire only on CPU
    corresponding to given local timer.

    However after recent conversion of clocksource drivers to not use the
    local timer API for local timer initialization any more, the point of
    time when local timers get initialized changed and irq_set_affinity()
    fails because the CPU is not marked as online yet.

    This patch fixes this by moving the call to irq_set_affinity() to
    CPU_ONLINE notification, so the affinity is being set when the CPU goes
    online.

    This fixes a regression introduced by commit
    ee98d27df6 ARM: EXYNOS4: Divorce mct from local timer API
    which rendered all Exynos4210 based boards unbootable due to
    failing irq_set_affinity() making local timers inoperatible.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Acked-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano

    Tomasz Figa