diff options
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2022.04.0/0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch')
-rw-r--r-- | configs/platform-v7a/patches/barebox-2022.04.0/0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch | 492 |
1 files changed, 0 insertions, 492 deletions
diff --git a/configs/platform-v7a/patches/barebox-2022.04.0/0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch b/configs/platform-v7a/patches/barebox-2022.04.0/0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch deleted file mode 100644 index 8610985..0000000 --- a/configs/platform-v7a/patches/barebox-2022.04.0/0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch +++ /dev/null @@ -1,492 +0,0 @@ -From 4c82930465ae4652ca5eb8cb808873858c1120a2 Mon Sep 17 00:00:00 2001 -From: Ahmad Fatoum <a.fatoum@pengutronix.de> -Date: Fri, 22 Apr 2022 17:22:32 +0200 -Subject: [PATCH 3/5] clocksource: assign non-zero priorities to all - clocksources - -Most barebox clocksources have a zero priority and if multiple of them -exist, but no higher priority ones, the first to call init_clock wins. - -Some supported boards like the Raspberry Pi additionally depended on -initcall ordering to favor one zero-priority clocksource over another. -With the move to deep probe and with Commit b641580deb8c ("of: platform: -Ensure timers are probed early"), device tree blob iteration order could -now dictate which clocksource is ultimately used. This led to a 20 times -slower clock source being chosen on the Raspberry Pi, because the ARM -architected timer was taken instead of the bcm2835 timer. - -Fix the root cause by assigning priorities to all clocksource drivers. -Priorities chosen are: - - 50: device_initcall - 60: coredevice_initcall - 70: postcore_initcall - 80: core_initcall - -These priorities are all below 100, which was previously the lowest -positive priority and as they are positive, they win against the dummy -clocksource. This should ensure no priority inversion happens. - -Fixes: b641580deb8c ("of: platform: Ensure timers are probed early") -Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> ---- - arch/arm/mach-at91/at91rm9200_time.c | 1 + - arch/arm/mach-davinci/time.c | 1 + - arch/arm/mach-ep93xx/clocksource.c | 1 + - arch/arm/mach-mxs/clocksource-imx23.c | 1 + - arch/arm/mach-mxs/clocksource-imx28.c | 1 + - arch/arm/mach-pxa/clocksource.c | 1 + - arch/arm/mach-samsung/s3c-timer.c | 1 + - arch/arm/mach-tegra/tegra20-timer.c | 1 + - arch/arm/mach-versatile/core.c | 1 + - arch/mips/lib/csrc-r4k.c | 1 + - arch/mips/mach-xburst/csrc-jz4750.c | 1 + - arch/openrisc/lib/clock.c | 1 + - arch/powerpc/mach-mpc5xxx/time.c | 1 + - arch/powerpc/mach-mpc85xx/time.c | 1 + - arch/sandbox/board/clock.c | 1 + - drivers/clocksource/amba-sp804.c | 1 + - drivers/clocksource/arm_architected_timer.c | 1 + - drivers/clocksource/arm_global_timer.c | 1 + - drivers/clocksource/arm_smp_twd.c | 1 + - drivers/clocksource/armv7m_systick.c | 1 + - drivers/clocksource/bcm2835.c | 1 + - drivers/clocksource/clps711x.c | 1 + - drivers/clocksource/digic.c | 1 + - drivers/clocksource/dw_apb_timer.c | 1 + - drivers/clocksource/efi.c | 1 + - drivers/clocksource/kvx_timer.c | 1 + - drivers/clocksource/mvebu.c | 1 + - drivers/clocksource/nomadik.c | 1 + - drivers/clocksource/orion.c | 1 + - drivers/clocksource/rk_timer.c | 1 + - drivers/clocksource/timer-atmel-pit.c | 1 + - drivers/clocksource/timer-imx-gpt.c | 1 + - drivers/clocksource/timer-ti-32k.c | 1 + - drivers/clocksource/timer-ti-dm.c | 1 + - drivers/clocksource/uemd.c | 1 + - 35 files changed, 35 insertions(+) - -diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c -index ccbefbbc33a2..110d77088169 100644 ---- a/arch/arm/mach-at91/at91rm9200_time.c -+++ b/arch/arm/mach-at91/at91rm9200_time.c -@@ -35,6 +35,7 @@ static struct clocksource cs = { - .mask = CLOCKSOURCE_MASK(20), - .read = at91rm9200_clocksource_read, - .shift = 10, -+ .priority = 80, - }; - - static int clocksource_init (void) -diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c -index 52b3ac3e6823..c54e49470b72 100644 ---- a/arch/arm/mach-davinci/time.c -+++ b/arch/arm/mach-davinci/time.c -@@ -96,6 +96,7 @@ static uint64_t davinci_cs_read(void) - static struct clocksource davinci_cs = { - .read = davinci_cs_read, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 80, - }; - - static int timer32_config(struct timer_s *t) -diff --git a/arch/arm/mach-ep93xx/clocksource.c b/arch/arm/mach-ep93xx/clocksource.c -index 1f3ff7f8f20a..e2a3a397803f 100644 ---- a/arch/arm/mach-ep93xx/clocksource.c -+++ b/arch/arm/mach-ep93xx/clocksource.c -@@ -37,6 +37,7 @@ static struct clocksource cs = { - .read = ep93xx_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/arm/mach-mxs/clocksource-imx23.c b/arch/arm/mach-mxs/clocksource-imx23.c -index 0a6716f87958..ba5aad9f30dc 100644 ---- a/arch/arm/mach-mxs/clocksource-imx23.c -+++ b/arch/arm/mach-mxs/clocksource-imx23.c -@@ -34,6 +34,7 @@ static struct clocksource cs = { - .read = imx23_clocksource_read, - .mask = CLOCKSOURCE_MASK(16), - .shift = 10, -+ .priority = 80, - }; - - static int imx23_clocksource_clock_change(struct notifier_block *nb, unsigned long event, void *data) -diff --git a/arch/arm/mach-mxs/clocksource-imx28.c b/arch/arm/mach-mxs/clocksource-imx28.c -index ea6d4b514630..65d8155ad244 100644 ---- a/arch/arm/mach-mxs/clocksource-imx28.c -+++ b/arch/arm/mach-mxs/clocksource-imx28.c -@@ -39,6 +39,7 @@ static struct clocksource imx28_cs = { - .read = imx28_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 17, -+ .priority = 80, - }; - - static int imx28_clocksource_init(void) -diff --git a/arch/arm/mach-pxa/clocksource.c b/arch/arm/mach-pxa/clocksource.c -index ebfe6f1c330f..3bc95827d88d 100644 ---- a/arch/arm/mach-pxa/clocksource.c -+++ b/arch/arm/mach-pxa/clocksource.c -@@ -28,6 +28,7 @@ static struct clocksource cs = { - .read = pxa_clocksource_read, - .mask = 0xffffffff, - .shift = 20, -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/arm/mach-samsung/s3c-timer.c b/arch/arm/mach-samsung/s3c-timer.c -index 6f38df395851..38bcebc7c4cb 100644 ---- a/arch/arm/mach-samsung/s3c-timer.c -+++ b/arch/arm/mach-samsung/s3c-timer.c -@@ -101,6 +101,7 @@ static struct clocksource cs = { - .read = s3c_clocksource_read, - .mask = CLOCKSOURCE_MASK(TIMER_WIDTH), - .shift = TIMER_SHIFT, -+ .priority = 80, - }; - - static int s3c_clk_src_init(void) -diff --git a/arch/arm/mach-tegra/tegra20-timer.c b/arch/arm/mach-tegra/tegra20-timer.c -index 34d34f772331..8ca8cb24fad5 100644 ---- a/arch/arm/mach-tegra/tegra20-timer.c -+++ b/arch/arm/mach-tegra/tegra20-timer.c -@@ -41,6 +41,7 @@ static uint64_t tegra20_timer_cs_read(void) - static struct clocksource cs = { - .read = tegra20_timer_cs_read, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 80, - }; - - static int tegra20_timer_probe(struct device_d *dev) -diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c -index eb94a07dc907..9a2a9cad80cc 100644 ---- a/arch/arm/mach-versatile/core.c -+++ b/arch/arm/mach-versatile/core.c -@@ -92,6 +92,7 @@ static struct clocksource vpb_cs = { - .read = vpb_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 80, - }; - - /* From Linux v2.6.35 -diff --git a/arch/mips/lib/csrc-r4k.c b/arch/mips/lib/csrc-r4k.c -index 9facf04bd3e9..35fba3a29ca6 100644 ---- a/arch/mips/lib/csrc-r4k.c -+++ b/arch/mips/lib/csrc-r4k.c -@@ -23,6 +23,7 @@ static uint64_t c0_hpt_read(void) - static struct clocksource cs = { - .read = c0_hpt_read, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 70, - }; - - static int clocksource_init(void) -diff --git a/arch/mips/mach-xburst/csrc-jz4750.c b/arch/mips/mach-xburst/csrc-jz4750.c -index 302709e59747..43135ac4987e 100644 ---- a/arch/mips/mach-xburst/csrc-jz4750.c -+++ b/arch/mips/mach-xburst/csrc-jz4750.c -@@ -23,6 +23,7 @@ static uint64_t jz4750_cs_read(void) - static struct clocksource jz4750_cs = { - .read = jz4750_cs_read, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/openrisc/lib/clock.c b/arch/openrisc/lib/clock.c -index 5ff978e8411a..651b163f13cb 100644 ---- a/arch/openrisc/lib/clock.c -+++ b/arch/openrisc/lib/clock.c -@@ -28,6 +28,7 @@ static struct clocksource cs = { - .read = openrisc_clocksource_read, - .mask = 0xffffffff, - .shift = 12, -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/powerpc/mach-mpc5xxx/time.c b/arch/powerpc/mach-mpc5xxx/time.c -index 8981b14eeb7d..d690d50f0d5a 100644 ---- a/arch/powerpc/mach-mpc5xxx/time.c -+++ b/arch/powerpc/mach-mpc5xxx/time.c -@@ -29,6 +29,7 @@ static struct clocksource cs = { - .read = ppc_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 15, -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/powerpc/mach-mpc85xx/time.c b/arch/powerpc/mach-mpc85xx/time.c -index 067bce8ea64e..5981995ac2ae 100644 ---- a/arch/powerpc/mach-mpc85xx/time.c -+++ b/arch/powerpc/mach-mpc85xx/time.c -@@ -28,6 +28,7 @@ static uint64_t ppc_clocksource_read(void) - static struct clocksource cs = { - .read = ppc_clocksource_read, - .mask = CLOCKSOURCE_MASK(64), -+ .priority = 80, - }; - - static int clocksource_init(void) -diff --git a/arch/sandbox/board/clock.c b/arch/sandbox/board/clock.c -index b005e71633ff..1787fb578626 100644 ---- a/arch/sandbox/board/clock.c -+++ b/arch/sandbox/board/clock.c -@@ -28,6 +28,7 @@ static struct clocksource cs = { - .read = linux_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 80, - }; - - static int clocksource_init (void) -diff --git a/drivers/clocksource/amba-sp804.c b/drivers/clocksource/amba-sp804.c -index a22e567301b2..fcb2b0254bc3 100644 ---- a/drivers/clocksource/amba-sp804.c -+++ b/drivers/clocksource/amba-sp804.c -@@ -26,6 +26,7 @@ static struct clocksource sp804_clksrc = { - .read = sp804_read, - .shift = 20, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 60, - }; - - static int sp804_probe(struct amba_device *dev, const struct amba_id *id) -diff --git a/drivers/clocksource/arm_architected_timer.c b/drivers/clocksource/arm_architected_timer.c -index 16e40a1a0b3b..d5948fe9482c 100644 ---- a/drivers/clocksource/arm_architected_timer.c -+++ b/drivers/clocksource/arm_architected_timer.c -@@ -19,6 +19,7 @@ static struct clocksource cs = { - .read = arm_arch_clocksource_read, - .mask = CLOCKSOURCE_MASK(64), - .shift = 0, -+ .priority = 70, - }; - - static int arm_arch_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/arm_global_timer.c b/drivers/clocksource/arm_global_timer.c -index f18c6e4152f9..65bfca355855 100644 ---- a/drivers/clocksource/arm_global_timer.c -+++ b/drivers/clocksource/arm_global_timer.c -@@ -60,6 +60,7 @@ static struct clocksource cs = { - .read = arm_global_clocksource_read, - .mask = CLOCKSOURCE_MASK(64), - .shift = 0, -+ .priority = 70, - }; - - static int arm_global_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/arm_smp_twd.c b/drivers/clocksource/arm_smp_twd.c -index bc0c4a00b2f9..1ad754bb2b7a 100644 ---- a/drivers/clocksource/arm_smp_twd.c -+++ b/drivers/clocksource/arm_smp_twd.c -@@ -35,6 +35,7 @@ static struct clocksource smp_twd_clksrc = { - .read = smp_twd_read, - .shift = 20, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 60, - }; - - #define SMP_TWD_MAX_FREQ (25 *1000 * 1000) -diff --git a/drivers/clocksource/armv7m_systick.c b/drivers/clocksource/armv7m_systick.c -index 5f9222c50b8a..16d89c23bde5 100644 ---- a/drivers/clocksource/armv7m_systick.c -+++ b/drivers/clocksource/armv7m_systick.c -@@ -34,6 +34,7 @@ static struct clocksource cs = { - .read = armv7m_systick_clocksource_read, - .mask = CLOCKSOURCE_MASK(24), - .shift = 0, -+ .priority = 70, - }; - - static int armv7m_systick_probe(struct device_d *dev) -diff --git a/drivers/clocksource/bcm2835.c b/drivers/clocksource/bcm2835.c -index 5134b349157c..d84341fc4083 100644 ---- a/drivers/clocksource/bcm2835.c -+++ b/drivers/clocksource/bcm2835.c -@@ -28,6 +28,7 @@ static uint64_t stc_read_cycles(void) - static struct clocksource bcm2835_stc = { - .read = stc_read_cycles, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 80, - }; - - static int bcm2835_cs_probe(struct device_d *dev) -diff --git a/drivers/clocksource/clps711x.c b/drivers/clocksource/clps711x.c -index cd099604786e..1fe7f6c89114 100644 ---- a/drivers/clocksource/clps711x.c -+++ b/drivers/clocksource/clps711x.c -@@ -19,6 +19,7 @@ static uint64_t clps711x_cs_read(void) - static struct clocksource clps711x_cs = { - .read = clps711x_cs_read, - .mask = CLOCKSOURCE_MASK(16), -+ .priority = 60, - }; - - static int clps711x_cs_probe(struct device_d *dev) -diff --git a/drivers/clocksource/digic.c b/drivers/clocksource/digic.c -index 1a335582b733..234985aece44 100644 ---- a/drivers/clocksource/digic.c -+++ b/drivers/clocksource/digic.c -@@ -26,6 +26,7 @@ static uint64_t digic_cs_read(void) - static struct clocksource digic_cs = { - .read = digic_cs_read, - .mask = CLOCKSOURCE_MASK(16), -+ .priority = 60, - }; - - static int digic_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/dw_apb_timer.c b/drivers/clocksource/dw_apb_timer.c -index aef4f16d1494..251089cf7e16 100644 ---- a/drivers/clocksource/dw_apb_timer.c -+++ b/drivers/clocksource/dw_apb_timer.c -@@ -94,6 +94,7 @@ static struct clocksource dw_apb_clksrc = { - .read = dw_apb_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 0, -+ .priority = 50, - }; - - static int dw_apb_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/efi.c b/drivers/clocksource/efi.c -index 5c8c5fd46b1e..9df5226573bc 100644 ---- a/drivers/clocksource/efi.c -+++ b/drivers/clocksource/efi.c -@@ -93,6 +93,7 @@ static struct clocksource efi_cs = { - .mask = CLOCKSOURCE_MASK(64), - .shift = 0, - .init = efi_cs_init, -+ .priority = 80, - }; - - static int efi_cs_probe(struct device_d *dev) -diff --git a/drivers/clocksource/kvx_timer.c b/drivers/clocksource/kvx_timer.c -index 2a05d8deedce..259755eacdda 100644 ---- a/drivers/clocksource/kvx_timer.c -+++ b/drivers/clocksource/kvx_timer.c -@@ -21,6 +21,7 @@ static struct clocksource kvx_clksrc = { - .read = kvx_pm_read, - .mask = CLOCKSOURCE_MASK(64), - .shift = 0, -+ .priority = 70, - }; - - static int kvx_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/mvebu.c b/drivers/clocksource/mvebu.c -index eb5246e4e79b..d3214955dc8f 100644 ---- a/drivers/clocksource/mvebu.c -+++ b/drivers/clocksource/mvebu.c -@@ -42,6 +42,7 @@ static struct clocksource cs = { - .read = mvebu_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - static int mvebu_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/nomadik.c b/drivers/clocksource/nomadik.c -index d71d9da6b8c0..7cf10352eac7 100644 ---- a/drivers/clocksource/nomadik.c -+++ b/drivers/clocksource/nomadik.c -@@ -71,6 +71,7 @@ static struct clocksource nmdk_clksrc = { - .read = nmdk_read_timer, - .shift = 20, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 60, - }; - - static void nmdk_timer_reset(void) -diff --git a/drivers/clocksource/orion.c b/drivers/clocksource/orion.c -index d40b09e5debc..4a5684980064 100644 ---- a/drivers/clocksource/orion.c -+++ b/drivers/clocksource/orion.c -@@ -31,6 +31,7 @@ static struct clocksource clksrc = { - .read = orion_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - static int orion_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/rk_timer.c b/drivers/clocksource/rk_timer.c -index 5cc8d32b601b..e94103077103 100644 ---- a/drivers/clocksource/rk_timer.c -+++ b/drivers/clocksource/rk_timer.c -@@ -32,6 +32,7 @@ static struct clocksource rkcs = { - .read = rockchip_get_ticks, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 80, - }; - - static int rockchip_timer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/timer-atmel-pit.c b/drivers/clocksource/timer-atmel-pit.c -index bbbc81788ce4..a133e384d74c 100644 ---- a/drivers/clocksource/timer-atmel-pit.c -+++ b/drivers/clocksource/timer-atmel-pit.c -@@ -36,6 +36,7 @@ static struct clocksource cs = { - .read = at91sam9_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - static void at91_pit_stop(void) -diff --git a/drivers/clocksource/timer-imx-gpt.c b/drivers/clocksource/timer-imx-gpt.c -index 28f90d967d3f..7ca879f4f008 100644 ---- a/drivers/clocksource/timer-imx-gpt.c -+++ b/drivers/clocksource/timer-imx-gpt.c -@@ -64,6 +64,7 @@ static struct clocksource cs = { - .read = imx_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - static int imx_clocksource_clock_change(struct notifier_block *nb, unsigned long event, void *data) -diff --git a/drivers/clocksource/timer-ti-32k.c b/drivers/clocksource/timer-ti-32k.c -index 1f3f15561e09..21cb68636954 100644 ---- a/drivers/clocksource/timer-ti-32k.c -+++ b/drivers/clocksource/timer-ti-32k.c -@@ -47,6 +47,7 @@ static struct clocksource s32k_cs = { - .read = s32k_clocksource_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - /** -diff --git a/drivers/clocksource/timer-ti-dm.c b/drivers/clocksource/timer-ti-dm.c -index d43609ad1967..cdd297f10c91 100644 ---- a/drivers/clocksource/timer-ti-dm.c -+++ b/drivers/clocksource/timer-ti-dm.c -@@ -62,6 +62,7 @@ static struct clocksource dmtimer_cs = { - .read = dmtimer_read, - .mask = CLOCKSOURCE_MASK(32), - .shift = 10, -+ .priority = 70, - }; - - static int omap_dmtimer_probe(struct device_d *dev) -diff --git a/drivers/clocksource/uemd.c b/drivers/clocksource/uemd.c -index 342260c5644b..a763eadc0c86 100644 ---- a/drivers/clocksource/uemd.c -+++ b/drivers/clocksource/uemd.c -@@ -52,6 +52,7 @@ static uint64_t uemd_timer_cs_read(void) - static struct clocksource uemd_cs = { - .read = uemd_timer_cs_read, - .mask = CLOCKSOURCE_MASK(32), -+ .priority = 60, - }; - - static int uemd_timer_probe(struct device_d *dev) --- -2.30.2 - |