01 Oct, 2015

1 commit


06 Aug, 2015

1 commit


24 Apr, 2015

1 commit

  • Pull initial ACPI support for arm64 from Will Deacon:
    "This series introduces preliminary ACPI 5.1 support to the arm64
    kernel using the "hardware reduced" profile. We don't support any
    peripherals yet, so it's fairly limited in scope:

    - MEMORY init (UEFI)

    - ACPI discovery (RSDP via UEFI)

    - CPU init (FADT)

    - GIC init (MADT)

    - SMP boot (MADT + PSCI)

    - ACPI Kconfig options (dependent on EXPERT)

    ACPI for arm64 has been in development for a while now and hardware
    has been available that can boot with either FDT or ACPI tables. This
    has been made possible by both changes to the ACPI spec to cater for
    ARM-based machines (known as "hardware-reduced" in ACPI parlance) but
    also a Linaro-driven effort to get this supported on top of the Linux
    kernel. This pull request is the result of that work.

    These changes allow us to initialise the CPUs, interrupt controller,
    and timers via ACPI tables, with memory information and cmdline coming
    from EFI. We don't support a hybrid ACPI/FDT scheme. Of course,
    there is still plenty of work to do (a serial console would be nice!)
    but I expect that to happen on a per-driver basis after this core
    series has been merged.

    Anyway, the diff stat here is fairly horrible, but splitting this up
    and merging it via all the different subsystems would have been
    extremely painful. Instead, we've got all the relevant Acks in place
    and I've not seen anything other than trivial (Kconfig) conflicts in
    -next (for completeness, I've included my resolution below). Nearly
    half of the insertions fall under Documentation/.

    So, we'll see how this goes. Right now, it all depends on EXPERT and
    I fully expect people to use FDT by default for the immediate future"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (31 commits)
    ARM64 / ACPI: make acpi_map_gic_cpu_interface() as void function
    ARM64 / ACPI: Ignore the return error value of acpi_map_gic_cpu_interface()
    ARM64 / ACPI: fix usage of acpi_map_gic_cpu_interface
    ARM64: kernel: acpi: honour acpi=force command line parameter
    ARM64: kernel: acpi: refactor ACPI tables init and checks
    ARM64: kernel: psci: let ACPI probe PSCI version
    ARM64: kernel: psci: factor out probe function
    ACPI: move arm64 GSI IRQ model to generic GSI IRQ layer
    ARM64 / ACPI: Don't unflatten device tree if acpi=force is passed
    ARM64 / ACPI: additions of ACPI documentation for arm64
    Documentation: ACPI for ARM64
    ARM64 / ACPI: Enable ARM64 in Kconfig
    XEN / ACPI: Make XEN ACPI depend on X86
    ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64
    clocksource / arch_timer: Parse GTDT to initialize arch timer
    irqchip: Add GICv2 specific ACPI boot support
    ARM64 / ACPI: Introduce ACPI_IRQ_MODEL_GIC and register device's gsi
    ACPI / processor: Make it possible to get CPU hardware ID via GICC
    ACPI / processor: Introduce phys_cpuid_t for CPU hardware ID
    ARM64 / ACPI: Parse MADT for SMP initialization
    ...

    Linus Torvalds
     

31 Mar, 2015

1 commit

  • …needs_probing()' to reflect behaviour

    The arch_timer_probed() function returns whether the given time
    doesn't need to be probed. This can be the case when the timer
    has been probed already, but also when it has no corresponding
    enabled node in DT.

    Rename the function to arch_timer_needs_probing() and invert its
    return value to better reflect the function's purpose and
    behaviour.

    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1427796746-373-1-git-send-email-daniel.lezcano@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Laurent Pinchart
     

26 Mar, 2015

1 commit

  • Using the information presented by GTDT (Generic Timer Description Table)
    to initialize the arch timer (not memory-mapped).

    CC: Daniel Lezcano
    CC: Thomas Gleixner
    Originally-by: Amit Daniel Kachhap
    Tested-by: Suravee Suthikulpanit
    Tested-by: Yijing Wang
    Tested-by: Mark Langsdorf
    Tested-by: Jon Masters
    Tested-by: Timur Tabi
    Tested-by: Robert Richter
    Acked-by: Robert Richter
    Acked-by: Daniel Lezcano
    Reviewed-by: Grant Likely
    Signed-off-by: Hanjun Guo
    Signed-off-by: Will Deacon

    Hanjun Guo
     

07 Jan, 2015

2 commits


17 Dec, 2014

1 commit

  • Commit 0b46b8a718c6 (clocksource: arch_timer: Fix code to use physical
    timers when requested) introduces the use of physical counters in the
    ARM architected timer driver. However, he arm64 kernel uses CNTVCT in
    VDSO. When booting in EL2, the kernel switches to the physical timers to
    make things easier for KVM but it continues to use the virtual counter
    both in user and kernel. While in such scenario CNTVCT == CNTPCT (since
    CNTVOFF is initialised by the kernel to 0), we want to spot firmware
    bugs corrupting CNTVOFF early (which would affect CNTVCT).

    Signed-off-by: Catalin Marinas
    Tested-by: Yingjoe Chen
    Cc: Daniel Lezcano
    Signed-off-by: Arnd Bergmann

    Catalin Marinas
     

05 Dec, 2014

3 commits

  • * clocksource/physical-timers:
    clocksource: arch_timer: Allow the device tree to specify uninitialized timer registers
    clocksource: arch_timer: Fix code to use physical timers when requested

    Olof Johansson
     
  • Some 32-bit (ARMv7) systems are architected like this:

    * The firmware doesn't know and doesn't care about hypervisor mode and
    we don't want to add the complexity of hypervisor there.

    * The firmware isn't involved in SMP bringup or resume.

    * The ARCH timer come up with an uninitialized offset (CNTVOFF)
    between the virtual and physical counters. Each core gets a
    different random offset.

    * The device boots in "Secure SVC" mode.

    * Nothing has touched the reset value of CNTHCTL.PL1PCEN or
    CNTHCTL.PL1PCTEN (both default to 1 at reset)

    On systems like the above, it doesn't make sense to use the virtual
    counter. There's nobody managing the offset and each time a core goes
    down and comes back up it will get reinitialized to some other random
    value.

    This adds an optional property which can inform the kernel of this
    situation, and firmware is free to remove the property if it is going
    to initialize the CNTVOFF registers when each CPU comes out of reset.

    Currently, the best course of action in this case is to use the
    physical timer, which is why it is important that CNTHCTL hasn't been
    changed from its reset value and it's a reasonable assumption given
    that the firmware has never entered HYP mode.

    Note that it's been said that on ARMv8 systems the firmware and
    kernel really can't be architected as described above. That means
    using the physical timer like this really only makes sense for ARMv7
    systems.

    Signed-off-by: Doug Anderson
    Signed-off-by: Sonny Rao
    Reviewed-by: Mark Rutland
    Acked-by: Daniel Lezcano
    Acked-by: Catalin Marinas
    Signed-off-by: Olof Johansson

    Doug Anderson
     
  • This is a bug fix for using physical arch timers when
    the arch_timer_use_virtual boolean is false. It restores the
    arch_counter_get_cntpct() function after removal in

    0d651e4e "clocksource: arch_timer: use virtual counters"

    We need this on certain ARMv7 systems which are architected like this:

    * The firmware doesn't know and doesn't care about hypervisor mode and
    we don't want to add the complexity of hypervisor there.

    * The firmware isn't involved in SMP bringup or resume.

    * The ARCH timer come up with an uninitialized offset between the
    virtual and physical counters. Each core gets a different random
    offset.

    * The device boots in "Secure SVC" mode.

    * Nothing has touched the reset value of CNTHCTL.PL1PCEN or
    CNTHCTL.PL1PCTEN (both default to 1 at reset)

    One example of such as system is RK3288 where it is much simpler to
    use the physical counter since there's nobody managing the offset and
    each time a core goes down and comes back up it will get reinitialized
    to some other random value.

    Fixes: 0d651e4e65e9 ("clocksource: arch_timer: use virtual counters")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sonny Rao
    Acked-by: Catalin Marinas
    Acked-by: Daniel Lezcano
    Signed-off-by: Olof Johansson

    Sonny Rao
     

27 Oct, 2014

1 commit

  • Commit c387f07e6205 (clocksource: arm_arch_timer: Discard unavailable
    timers correctly) changed the way the driver makes sure both the memory
    and system-register timers have been probed before finalizing the probing.

    There is a interesting flaw in this logic that leads to this final step
    never to be executed. Things seems to work pretty well until something
    actually needs the data that is produced during this final stage.

    For example, KVM explodes on the first run of a guest when executed on
    a platform that has both memory and sysreg nodes (Juno, for example).

    Just fix the damned logic, and enjoy booting VMs again.

    Tested on a Juno system.

    Cc: Sudeep Holla
    Cc: Stephen Boyd
    Cc: Mark Rutland
    Cc: Daniel Lezcano
    Cc: Christoffer Dall
    Reported-by: Riku Voipio
    Acked-by: Mark Rutland
    Acked-by: Sudeep Holla
    Tested-by: Sudeep Holla
    Signed-off-by: Marc Zyngier
    Signed-off-by: Daniel Lezcano

    Marc Zyngier
     

29 Sep, 2014

4 commits

  • The arch_timer_evtstrm_enable hooks in arm and arm64 are substantially
    similar, the only difference being a CONFIG_COMPAT-conditional section
    which is relevant only for arm64. Copy the arm64 version to the
    driver, removing the arch-specific hooks.

    Signed-off-by: Nathan Lynch
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • The only difference between arm and arm64's implementations of
    arch_counter_set_user_access is that 32-bit ARM does not enable user
    access to the virtual counter. We want to enable this access for the
    32-bit ARM VDSO, so copy the arm64 version to the driver itself, and
    remove the arch-specific implementations.

    Signed-off-by: Nathan Lynch
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • The arm and arm64 VDSOs need CP15 access to the architected counter.
    If this is unavailable (which is allowed by ARM v7), indicate this by
    changing the clocksource name to "arch_mem_counter" before registering
    the clocksource.

    Suggested by Stephen Boyd.

    Signed-off-by: Nathan Lynch
    Reviewed-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Will Deacon

    Nathan Lynch
     
  • Currently we wait until both cp15 and mem timers are probed if we
    have both timer device nodes present in the device tree without
    checking if the device is actually available. If one of the timer
    device node present is disabled, the system locks up on the boot
    as no timer gets registered.

    This patch adds the check for the availability of the timer device
    so that unavailable timers are discarded correctly. It also adds
    the missing of_node_put.

    Signed-off-by: Sudeep Holla
    Reviewed-by: Stephen Boyd
    Acked-by: Mark Rutland
    Signed-off-by: Daniel Lezcano

    Sudeep Holla
     

29 Apr, 2014

1 commit

  • ARM arch timers are tightly coupled with the CPU logic and lose context
    on platform implementing HW power management when cores are powered
    down at run-time. Marking the arch timers as C3STOP regardless of power
    management capabilities causes issues on platforms with no power management,
    since in that case the arch timers cannot possibly enter states where the
    timer loses context at runtime and therefore can always be used as a high
    resolution clockevent device.

    In order to fix the C3STOP issue in a way compliant with how real HW
    works, this patch adds a boolean property to the arch timer bindings
    to define if the arch timer is managed by an always-on power domain.

    This power domain is present on all ARM platforms to date, and manages
    HW that must not be turned off, whatever the state of other HW
    components (eg power controller). On platforms with no power management
    capabilities, it is the only power domain present, which encompasses
    and manages power supply for all HW components in the system.

    If the timer is powered by the always-on power domain, the always-on
    property must be present in the bindings which means that the timer cannot
    be shutdown at runtime, so it is not a C3STOP clockevent device.
    If the timer binding does not contain the always-on property, the timer is
    assumed to be power-gateable, hence it must be defined as a C3STOP
    clockevent device.

    Cc: Daniel Lezcano
    Cc: Magnus Damm
    Cc: Marc Carino
    Cc: Mark Rutland
    Acked-by: Marc Zyngier
    Acked-by: Rob Herring
    Signed-off-by: Lorenzo Pieralisi
    Signed-off-by: Daniel Lezcano

    Lorenzo Pieralisi
     

12 Mar, 2014

1 commit


16 Oct, 2013

1 commit

  • Commit:

    65cd4f6 ("arch_timer: Move to generic sched_clock framework")

    added code to register the arch_sys_counter in arch_timer_register(),
    but it is already registered in arch_counter_register().

    This results in the timer being added to the clocksource list twice,
    therefore causing an infinite loop in the list.

    Remove the duplicate registration and register the scheduler
    clock after the original registration instead.

    This fixes a hang during boot on Tegra114 (Cortex-A15).

    [ While I've only tested this on Tegra114, I suspect the same hang
    during boot happens for all processors that use this clock source. ]

    Signed-off-by: Thierry Reding
    Acked-by: John Stultz
    Cc: Stephen Boyd
    Cc: Will Deacon
    Cc: Stephen Warren
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Daniel Lezcano
    Link: http://lkml.kernel.org/r/1381843911-31962-1-git-send-email-treding@nvidia.com
    Signed-off-by: Ingo Molnar

    Thierry Reding
     

10 Oct, 2013

2 commits

  • Pull more timekeeping items for v3.13 from John Stultz:

    * Small cleanup in the clocksource code.

    * Fix for rtc-pl031 to let it work with alarmtimers.

    * Move arm64 to using the generic sched_clock framework & resulting
    cleanup in the generic sched_clock code.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Register with the generic sched_clock framework now that it
    supports 64 bits. This fixes two problems with the current
    sched_clock support for machines using the architected timers.
    First off, we don't subtract the start value from subsequent
    sched_clock calls so we can potentially start off with
    sched_clock returning gigantic numbers. Second, there is no
    support for suspend/resume handling so problems such as discussed
    in 6a4dae5 (ARM: 7565/1: sched: stop sched_clock() during
    suspend, 2012-10-23) can happen without this patch. Finally, it
    allows us to move the sched_clock setup into drivers clocksource
    out of the arch ports.

    Cc: Christopher Covington
    Cc: Catalin Marinas
    Acked-by: Will Deacon
    Signed-off-by: Stephen Boyd
    Signed-off-by: John Stultz

    Stephen Boyd
     

03 Oct, 2013

1 commit

  • Adds support to configure the rate and enable the event stream for architected
    timer. The event streams can be used to impose a timeout on a wfe, to safeguard
    against any programming error in case an expected event is not generated or
    even to implement wfe-based timeouts for userspace locking implementations.
    This feature can be disabled(enabled by default).

    Since the timer control register is reset to zero on warm boot, CPU PM notifier
    is added to save and restore the value.

    Signed-off-by: Daniel Lezcano

    Daniel Lezcano
     

02 Oct, 2013

1 commit

  • The ARM architected timers keep counting during suspend so we can
    mark this clocksource with the CLOCK_SOURCE_SUSPEND_NONSTOP flag.
    This flag will indicate that this clocksource can be used for
    calculating suspend time and injecting sleep time into the
    timekeeping core. This should be more accurate than using an
    external RTC or architecture specific persistent clock.

    Cc: Mark Rutland
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano

    Stephen Boyd
     

26 Sep, 2013

2 commits

  • Few control settings done in architected timer as part of initialisation
    can be lost when CPU enters deeper power states. They need to be
    restored when the CPU is (warm)reset again.

    This patch adds CPU PM notifiers to save the counter control register
    when entering low power modes and restore it when CPU exits low power.

    Reviewed-by: Catalin Marinas
    Reviewed-by: Lorenzo Pieralisi
    Reviewed-by: Will Deacon
    Acked-by: Olof Johansson
    Signed-off-by: Sudeep KarkadaNagesha

    Sudeep KarkadaNagesha
     
  • The ARM architected timer can generate events (used for waking up
    CPUs executing the wfe instruction) at a frequency represented as a
    power-of-2 divisor of the clock rate.

    An event stream might be used:
    - To implement wfe-based timeouts for userspace locking implementations.
    - To impose a timeout on a wfe for safeguarding against any programming
    error in case an expected event is not generated.

    This patch computes the event stream frequency aiming for a period
    of 100us between events. It uses ARM/ARM64 specific backends to configure
    and enable the event stream.

    Cc: Lorenzo Pieralisi
    Reviewed-by: Catalin Marinas
    Acked-by: Olof Johansson
    Signed-off-by: Will Deacon
    [sudeep: moving ARM/ARM64 changes into separate patches
    and adding Kconfig option]
    Signed-off-by: Sudeep KarkadaNagesha

    Will Deacon
     

21 Aug, 2013

1 commit


01 Aug, 2013

4 commits

  • Add support for the memory mapped timers by filling in the
    read/write functions and adding some parsing code. Note that we
    only register one clocksource, preferring the cp15 based
    clocksource over the mmio one.

    To keep things simple we register one global clockevent. This
    covers the case of UP and SMP systems with only mmio hardware and
    systems where the memory mapped timers are used as the broadcast
    timer in low power modes.

    The DT binding allows for per-CPU memory mapped timers in case we
    want to support that in the future, but the code isn't added
    here. We also don't do much for hypervisor support, although it
    should be possible to support it by searching for at least two
    frames where one frame has the virtual capability and then
    updating KVM timers to support it.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Cc: Rob Herring
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • We're going to introduce support to read and write the memory
    mapped timer registers in the next patch, so push the cp15
    read/write functions one level deeper. This simplifies the next
    patch and makes it clearer what's going on.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • There isn't any reason why we don't pass the event here and we'll
    need it in the near future for memory mapped arch timers anyway.

    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     
  • Using an enum for the register we wish to access allows newer
    compilers to determine if we've forgotten a case in our switch
    statement. This allows us to remove the BUILD_BUG() instances in
    the arm64 port, avoiding problems where optimizations may not
    happen.

    To try and force better code generation we're currently marking
    the accessor functions as inline, but newer compilers can ignore
    the inline keyword unless it's marked __always_inline. Luckily on
    arm and arm64 inline is __always_inline, but let's make
    everything __always_inline to be explicit.

    Suggested-by: Thomas Gleixner
    Cc: Thomas Gleixner
    Cc: Mark Rutland
    Cc: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Daniel Lezcano
    Acked-by: Mark Rutland

    Stephen Boyd
     

15 Jul, 2013

1 commit

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    This removes all the drivers/clocksource and drivers/irqchip uses of
    the __cpuinit macros from all C files.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: John Stultz
    Cc: Thomas Gleixner
    Acked-by: Thomas Gleixner
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

07 Jun, 2013

1 commit

  • Switching between reading the virtual or physical counters is
    problematic, as some core code wants a view of time before we're fully
    set up. Using a function pointer and switching the source after the
    first read can make time appear to go backwards, and having a check in
    the read function is an unfortunate block on what we want to be a fast
    path.

    Instead, this patch makes us always use the virtual counters. If we're a
    guest, or don't have hyp mode, we'll use the virtual timers, and as such
    don't care about CNTVOFF as long as it doesn't change in such a way as
    to make time appear to travel backwards. As the guest will use the
    virtual timers, a (potential) KVM host must use the physical timers
    (which can wake up the host even if they fire while a guest is
    executing), and hence a host must have CNTVOFF set to zero so as to have
    a consistent view of time between the physical timers and virtual
    counters.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier
    Acked-by: Santosh Shilimkar
    Cc: Rob Herring

    Mark Rutland
     

27 Apr, 2013

1 commit

  • Hot-plugging with CONFIG_DEBUG_PREEMPT=y on a device with arm
    architected timers causes a slew of "using smp_processor_id() in
    preemptible" warnings:

    BUG: using smp_processor_id() in preemptible [00000000] code: sh/111
    caller is arch_timer_cpu_notify+0x14/0xc8

    This happens because sometimes the cpu notifier,
    arch_timer_cpu_notify(), is called in preemptible context and
    other times in non-preemptible context but we use this_cpu_ptr()
    to retrieve the clockevent in all cases. We're only going to
    actually use the pointer in non-preemptible context though, so
    push the this_cpu_ptr() access down into the cases to force the
    checks to occur only in non-preemptible contexts.

    Cc: John Stultz
    Cc: Thomas Gleixner
    Cc: Mark Rutland
    Acked-by: Marc Zyngier
    Signed-off-by: Stephen Boyd
    Signed-off-by: Olof Johansson

    Stephen Boyd
     

12 Apr, 2013

1 commit

  • This converts arm and arm64 to use CLKSRC_OF DT based initialization for
    the arch timer. A new function arch_timer_arch_init is added to allow for
    arch specific setup.

    This has a side effect of enabling sched_clock on omap5 and exynos5. There
    should not be any reason not to use the arch timers for sched_clock.

    Signed-off-by: Rob Herring
    Cc: Russell King
    Cc: Kukjin Kim
    Cc: Tony Lindgren
    Cc: Simon Horman
    Cc: Magnus Damm
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: John Stultz
    Cc: Thomas Gleixner
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: linux-omap@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Acked-by: Santosh Shilimkar

    Rob Herring
     

31 Jan, 2013

3 commits

  • If we're booted in HYP mode, it is possible that we'll run some
    kind of virtualized environment. In this case, it is a better to
    switch to the physical timers, and leave the virtual timers to
    guests.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas

    Marc Zyngier
     
  • The arch_timer driver supports a superset of the functionality of the
    arm_generic driver, and is not tied to a particular arch.

    This patch moves arm64 to use the arch_timer driver, gaining additional
    functionality in doing so, and removes the (now unused) arm_generic
    driver. Timer-related hooks specific to arm64 are moved into
    arch/arm64/kernel/time.c.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier
    Acked-by: Santosh Shilimkar

    Mark Rutland
     
  • The core functionality of the arch_timer driver is not directly tied to
    anything under arch/arm, and can be split out.

    This patch factors out the core of the arch_timer driver, so it can be
    shared with other architectures. A couple of functions are added so
    that architecture-specific code can interact with the driver without
    needing to touch its internals.

    The ARM_ARCH_TIMER config variable is moved out to
    drivers/clocksource/Kconfig, existing uses in arch/arm are replaced with
    HAVE_ARM_ARCH_TIMER, which selects it.

    Signed-off-by: Mark Rutland
    Acked-by: Catalin Marinas
    Acked-by: Marc Zyngier

    Mark Rutland