Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f2444d3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull core timer updates from Thomas Gleixner:
 "Timers and timekeeping updates:

   - A large overhaul of the posix CPU timer code which is a preparation
     for moving the CPU timer expiry out into task work so it can be
     properly accounted on the task/process.

     An update to the bogus permission checks will come later during the
     merge window as feedback was not complete before heading of for
     travel.

   - Switch the timerqueue code to use cached rbtrees and get rid of the
     homebrewn caching of the leftmost node.

   - Consolidate hrtimer_init() + hrtimer_init_sleeper() calls into a
     single function

   - Implement the separation of hrtimers to be forced to expire in hard
     interrupt context even when PREEMPT_RT is enabled and mark the
     affected timers accordingly.

   - Implement a mechanism for hrtimers and the timer wheel to protect
     RT against priority inversion and live lock issues when a (hr)timer
     which should be canceled is currently executing the callback.
     Instead of infinitely spinning, the task which tries to cancel the
     timer blocks on a per cpu base expiry lock which is held and
     released by the (hr)timer expiry code.

   - Enable the Hyper-V TSC page based sched_clock for Hyper-V guests
     resulting in faster access to timekeeping functions.

   - Updates to various clocksource/clockevent drivers and their device
     tree bindings.

   - The usual small improvements all over the place"

* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (101 commits)
  posix-cpu-timers: Fix permission check regression
  posix-cpu-timers: Always clear head pointer on dequeue
  hrtimer: Add a missing bracket and hide `migration_base' on !SMP
  posix-cpu-timers: Make expiry_active check actually work correctly
  posix-timers: Unbreak CONFIG_POSIX_TIMERS=n build
  tick: Mark sched_timer to expire in hard interrupt context
  hrtimer: Add kernel doc annotation for HRTIMER_MODE_HARD
  x86/hyperv: Hide pv_ops access for CONFIG_PARAVIRT=n
  posix-cpu-timers: Utilize timerqueue for storage
  posix-cpu-timers: Move state tracking to struct posix_cputimers
  posix-cpu-timers: Deduplicate rlimit handling
  posix-cpu-timers: Remove pointless comparisons
  posix-cpu-timers: Get rid of 64bit divisions
  posix-cpu-timers: Consolidate timer expiry further
  posix-cpu-timers: Get rid of zero checks
  rlimit: Rewrite non-sensical RLIMIT_CPU comment
  posix-cpu-timers: Respect INFINITY for hard RTTIME limit
  posix-cpu-timers: Switch thread group sampling to array
  posix-cpu-timers: Restructure expiry array
  posix-cpu-timers: Remove cputime_expires
  ...
parents c5f12fdb 77b4b542
Loading
Loading
Loading
Loading
+102 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/timer/allwinner,sun4i-a10-timer.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A10 Timer Device Tree Bindings

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <maxime.ripard@bootlin.com>

properties:
  compatible:
    enum:
      - allwinner,sun4i-a10-timer
      - allwinner,sun8i-a23-timer
      - allwinner,sun8i-v3s-timer
      - allwinner,suniv-f1c100s-timer

  reg:
    maxItems: 1

  interrupts:
    description:
      List of timers interrupts

  clocks:
    maxItems: 1

allOf:
  - if:
      properties:
        compatible:
          items:
            const: allwinner,sun4i-a10-timer

    then:
      properties:
        interrupts:
          minItems: 6
          maxItems: 6

  - if:
      properties:
        compatible:
          items:
            const: allwinner,sun8i-a23-timer

    then:
      properties:
        interrupts:
          minItems: 2
          maxItems: 2

  - if:
      properties:
        compatible:
          items:
            const: allwinner,sun8i-v3s-timer

    then:
      properties:
        interrupts:
          minItems: 3
          maxItems: 3

  - if:
      properties:
        compatible:
          items:
            const: allwinner,suniv-f1c100s-timer

    then:
      properties:
        interrupts:
          minItems: 3
          maxItems: 3

required:
  - compatible
  - reg
  - interrupts
  - clocks

additionalProperties: false

examples:
  - |
    timer {
        compatible = "allwinner,sun4i-a10-timer";
        reg = <0x01c20c00 0x400>;
        interrupts = <22>,
                     <23>,
                     <24>,
                     <25>,
                     <67>,
                     <68>;
        clocks = <&osc>;
    };

...
+0 −19
Original line number Diff line number Diff line
Allwinner A1X SoCs Timer Controller

Required properties:

- compatible : should be one of the following:
              "allwinner,sun4i-a10-timer"
              "allwinner,suniv-f1c100s-timer"
- reg : Specifies base physical address and size of the registers.
- interrupts : The interrupt of the first timer
- clocks: phandle to the source clock (usually a 24 MHz fixed clock)

Example:

timer {
	compatible = "allwinner,sun4i-a10-timer";
	reg = <0x01c20c00 0x400>;
	interrupts = <22>;
	clocks = <&osc>;
};
+0 −26
Original line number Diff line number Diff line
Allwinner SoCs High Speed Timer Controller

Required properties:

- compatible :	should be "allwinner,sun5i-a13-hstimer" or
		"allwinner,sun7i-a20-hstimer"
- reg : Specifies base physical address and size of the registers.
- interrupts :	The interrupts of these timers (2 for the sun5i IP, 4 for the sun7i
		one)
- clocks: phandle to the source clock (usually the AHB clock)

Optional properties:
- resets: phandle to a reset controller asserting the timer

Example:

timer@1c60000 {
	compatible = "allwinner,sun7i-a20-hstimer";
	reg = <0x01c60000 0x1000>;
	interrupts = <0 51 1>,
		     <0 52 1>,
		     <0 53 1>,
		     <0 54 1>;
	clocks = <&ahb1_gates 19>;
	resets = <&ahb1rst 19>;
};
+79 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/timer/allwinner,sun5i-a13-hstimer.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A13 High-Speed Timer Device Tree Bindings

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <maxime.ripard@bootlin.com>

properties:
  compatible:
    oneOf:
      - const: allwinner,sun5i-a13-hstimer
      - const: allwinner,sun7i-a20-hstimer
      - items:
          - const: allwinner,sun6i-a31-hstimer
          - const: allwinner,sun7i-a20-hstimer

  reg:
    maxItems: 1

  interrupts:
    minItems: 2
    maxItems: 4
    items:
      - description: Timer 0 Interrupt
      - description: Timer 1 Interrupt
      - description: Timer 2 Interrupt
      - description: Timer 3 Interrupt

  clocks:
    maxItems: 1

  resets:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks

if:
  properties:
    compatible:
      items:
        const: allwinner,sun5i-a13-hstimer

then:
  properties:
    interrupts:
      minItems: 2
      maxItems: 2

else:
  properties:
    interrupts:
      minItems: 4
      maxItems: 4

additionalProperties: false

examples:
  - |
    timer@1c60000 {
        compatible = "allwinner,sun7i-a20-hstimer";
        reg = <0x01c60000 0x1000>;
        interrupts = <0 51 1>,
                     <0 52 1>,
                     <0 53 1>,
                     <0 54 1>;
        clocks = <&ahb1_gates 19>;
        resets = <&ahb1rst 19>;
    };

...
+23 −17
Original line number Diff line number Diff line
@@ -12,16 +12,13 @@ datasheets.
Required Properties:

  - compatible: must contain one or more of the following:
    - "renesas,cmt-48-sh73a0" for the sh73A0 48-bit CMT
		(CMT1)
    - "renesas,cmt-48-r8a7740" for the r8a7740 48-bit CMT
		(CMT1)
    - "renesas,cmt-48" for all non-second generation 48-bit CMT
		(CMT1 on sh73a0 and r8a7740)
		This is a fallback for the above renesas,cmt-48-* entries.

    - "renesas,r8a73a4-cmt0" for the 32-bit CMT0 device included in r8a73a4.
    - "renesas,r8a73a4-cmt1" for the 48-bit CMT1 device included in r8a73a4.
    - "renesas,r8a7740-cmt0" for the 32-bit CMT0 device included in r8a7740.
    - "renesas,r8a7740-cmt1" for the 48-bit CMT1 device included in r8a7740.
    - "renesas,r8a7740-cmt2" for the 32-bit CMT2 device included in r8a7740.
    - "renesas,r8a7740-cmt3" for the 32-bit CMT3 device included in r8a7740.
    - "renesas,r8a7740-cmt4" for the 32-bit CMT4 device included in r8a7740.
    - "renesas,r8a7743-cmt0" for the 32-bit CMT0 device included in r8a7743.
    - "renesas,r8a7743-cmt1" for the 48-bit CMT1 device included in r8a7743.
    - "renesas,r8a7744-cmt0" for the 32-bit CMT0 device included in r8a7744.
@@ -31,29 +28,38 @@ Required Properties:
    - "renesas,r8a77470-cmt0" for the 32-bit CMT0 device included in r8a77470.
    - "renesas,r8a77470-cmt1" for the 48-bit CMT1 device included in r8a77470.
    - "renesas,r8a774a1-cmt0" for the 32-bit CMT0 device included in r8a774a1.
    - "renesas,r8a774a1-cmt1" for the 48-bit CMT1 device included in r8a774a1.
    - "renesas,r8a774a1-cmt1" for the 48-bit CMT devices included in r8a774a1.
    - "renesas,r8a774c0-cmt0" for the 32-bit CMT0 device included in r8a774c0.
    - "renesas,r8a774c0-cmt1" for the 48-bit CMT1 device included in r8a774c0.
    - "renesas,r8a774c0-cmt1" for the 48-bit CMT devices included in r8a774c0.
    - "renesas,r8a7790-cmt0" for the 32-bit CMT0 device included in r8a7790.
    - "renesas,r8a7790-cmt1" for the 48-bit CMT1 device included in r8a7790.
    - "renesas,r8a7791-cmt0" for the 32-bit CMT0 device included in r8a7791.
    - "renesas,r8a7791-cmt1" for the 48-bit CMT1 device included in r8a7791.
    - "renesas,r8a7792-cmt0" for the 32-bit CMT0 device included in r8a7792.
    - "renesas,r8a7792-cmt1" for the 48-bit CMT1 device included in r8a7792.
    - "renesas,r8a7793-cmt0" for the 32-bit CMT0 device included in r8a7793.
    - "renesas,r8a7793-cmt1" for the 48-bit CMT1 device included in r8a7793.
    - "renesas,r8a7794-cmt0" for the 32-bit CMT0 device included in r8a7794.
    - "renesas,r8a7794-cmt1" for the 48-bit CMT1 device included in r8a7794.
    - "renesas,r8a7795-cmt0" for the 32-bit CMT0 device included in r8a7795.
    - "renesas,r8a7795-cmt1" for the 48-bit CMT1 device included in r8a7795.
    - "renesas,r8a7795-cmt1" for the 48-bit CMT devices included in r8a7795.
    - "renesas,r8a7796-cmt0" for the 32-bit CMT0 device included in r8a7796.
    - "renesas,r8a7796-cmt1" for the 48-bit CMT1 device included in r8a7796.
    - "renesas,r8a7796-cmt1" for the 48-bit CMT devices included in r8a7796.
    - "renesas,r8a77965-cmt0" for the 32-bit CMT0 device included in r8a77965.
    - "renesas,r8a77965-cmt1" for the 48-bit CMT1 device included in r8a77965.
    - "renesas,r8a77965-cmt1" for the 48-bit CMT devices included in r8a77965.
    - "renesas,r8a77970-cmt0" for the 32-bit CMT0 device included in r8a77970.
    - "renesas,r8a77970-cmt1" for the 48-bit CMT1 device included in r8a77970.
    - "renesas,r8a77970-cmt1" for the 48-bit CMT devices included in r8a77970.
    - "renesas,r8a77980-cmt0" for the 32-bit CMT0 device included in r8a77980.
    - "renesas,r8a77980-cmt1" for the 48-bit CMT1 device included in r8a77980.
    - "renesas,r8a77980-cmt1" for the 48-bit CMT devices included in r8a77980.
    - "renesas,r8a77990-cmt0" for the 32-bit CMT0 device included in r8a77990.
    - "renesas,r8a77990-cmt1" for the 48-bit CMT1 device included in r8a77990.
    - "renesas,r8a77990-cmt1" for the 48-bit CMT devices included in r8a77990.
    - "renesas,r8a77995-cmt0" for the 32-bit CMT0 device included in r8a77995.
    - "renesas,r8a77995-cmt1" for the 48-bit CMT devices included in r8a77995.
    - "renesas,sh73a0-cmt0" for the 32-bit CMT0 device included in sh73a0.
    - "renesas,sh73a0-cmt1" for the 48-bit CMT1 device included in sh73a0.
    - "renesas,sh73a0-cmt2" for the 32-bit CMT2 device included in sh73a0.
    - "renesas,sh73a0-cmt3" for the 32-bit CMT3 device included in sh73a0.
    - "renesas,sh73a0-cmt4" for the 32-bit CMT4 device included in sh73a0.

    - "renesas,rcar-gen2-cmt0" for 32-bit CMT0 devices included in R-Car Gen2
		and RZ/G1.
@@ -63,7 +69,7 @@ Required Properties:
		listed above.
    - "renesas,rcar-gen3-cmt0" for 32-bit CMT0 devices included in R-Car Gen3
		and RZ/G2.
    - "renesas,rcar-gen3-cmt1" for 48-bit CMT1 devices included in R-Car Gen3
    - "renesas,rcar-gen3-cmt1" for 48-bit CMT devices included in R-Car Gen3
		and RZ/G2.
		These are fallbacks for R-Car Gen3 and RZ/G2 entries listed
		above.
Loading