[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251023205257.2029526-6-willmcvicker@google.com>
Date: Thu, 23 Oct 2025 20:52:47 +0000
From: Will McVicker <willmcvicker@...gle.com>
To: Russell King <linux@...linux.org.uk>, Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>, Daniel Lezcano <daniel.lezcano@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>, Krzysztof Kozlowski <krzk@...nel.org>,
Alim Akhtar <alim.akhtar@...sung.com>, Hosung Kim <hosung0.kim@...sung.com>,
Will McVicker <willmcvicker@...gle.com>, Ingo Molnar <mingo@...nel.org>,
Peter Griffin <peter.griffin@...aro.org>, Youngmin Nam <youngmin.nam@...sung.com>
Cc: Donghoon Yu <hoony.yu@...sung.com>, Rob Herring <robh@...nel.org>,
Saravana Kannan <saravanak@...gle.com>, John Stultz <jstultz@...gle.com>,
Tudor Ambarus <tudor.ambarus@...aro.org>,
"André Draszik" <andre.draszik@...aro.org>, Conor Dooley <conor+dt@...nel.org>,
Marek Szyprowski <m.szyprowski@...sung.com>, linux-samsung-soc@...r.kernel.org,
kernel-team@...roid.com, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v5 5/7] clocksource/drivers/exynos_mct: Fix uninitialized irq
name warning
The Exynos MCT driver doesn't set the clocksource name until the CPU
hotplug state is setup which happens after the IRQs are requested. This
results in an empty IRQ name which leads to the below warning at
proc_create() time. When this happens, the userdata partition fails to
mount and the device gets stuck in an endless loop printing the error:
root '/dev/disk/by-partlabel/userdata' doesn't exist or does not contain a /dev.
To fix this, we just need to initialize the name before requesting the
IRQs.
Warning from Pixel 6 kernel log:
[ T430] name len 0
[ T430] WARNING: CPU: 6 PID: 430 at fs/proc/generic.c:407 __proc_create+0x258/0x2b4
[ T430] Modules linked in: dwc3_exynos(E+)
[ T430] ufs_exynos(E+) phy_exynos_ufs(E)
[ T430] phy_exynos5_usbdrd(E) exynos_usi(E+) exynos_mct(E+) s3c2410_wdt(E)
[ T430] arm_dsu_pmu(E) simplefb(E)
[ T430] CPU: 6 UID: 0 PID: 430 Comm: (udev-worker) Tainted:
... 6.14.0-next-20250331-4k-00008-g59adf909e40e #1 ...
[ T430] Tainted: [W]=WARN, [E]=UNSIGNED_MODULE
[ T430] Hardware name: Raven (DT)
[...]
[ T430] Call trace:
[ T430] __proc_create+0x258/0x2b4 (P)
[ T430] proc_mkdir+0x40/0xa0
[ T430] register_handler_proc+0x118/0x140
[ T430] __setup_irq+0x460/0x6d0
[ T430] request_threaded_irq+0xcc/0x1b0
[ T430] mct_init_dt+0x244/0x604 [exynos_mct ...]
[ T430] mct_init_spi+0x18/0x34 [exynos_mct ...]
[ T430] exynos4_mct_probe+0x30/0x4c [exynos_mct ...]
[ T430] platform_probe+0x6c/0xe4
[ T430] really_probe+0xf4/0x38c
[...]
[ T430] driver_register+0x6c/0x140
[ T430] __platform_driver_register+0x28/0x38
[ T430] exynos4_mct_driver_init+0x24/0xfe8 [exynos_mct ...]
[ T430] do_one_initcall+0x84/0x3c0
[ T430] do_init_module+0x58/0x208
[ T430] load_module+0x1de0/0x2500
[ T430] init_module_from_file+0x8c/0xdc
Signed-off-by: Will McVicker <willmcvicker@...gle.com>
Reviewed-by: Peter Griffin <peter.griffin@...aro.org>
Reviewed-by: Youngmin Nam <youngmin.nam@...sung.com>
Tested-by: Youngmin Nam <youngmin.nam@...sung.com>
---
drivers/clocksource/exynos_mct.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index 1429b9d03a58..fece6bbc190e 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -465,8 +465,6 @@ static int exynos4_mct_starting_cpu(unsigned int cpu)
per_cpu_ptr(&percpu_mct_tick, cpu);
struct clock_event_device *evt = &mevt->evt;
- snprintf(mevt->name, sizeof(mevt->name), "mct_tick%d", cpu);
-
evt->name = mevt->name;
evt->cpumask = cpumask_of(cpu);
evt->set_next_event = exynos4_tick_set_next_event;
@@ -567,6 +565,14 @@ static int __init exynos4_timer_interrupts(struct device_node *np,
for (i = MCT_L0_IRQ; i < nr_irqs; i++)
mct_irqs[i] = irq_of_parse_and_map(np, i);
+ for_each_possible_cpu(cpu) {
+ struct mct_clock_event_device *mevt =
+ per_cpu_ptr(&percpu_mct_tick, cpu);
+
+ snprintf(mevt->name, sizeof(mevt->name), "mct_tick%d",
+ cpu);
+ }
+
if (mct_int_type == MCT_INT_PPI) {
err = request_percpu_irq(mct_irqs[MCT_L0_IRQ],
--
2.51.1.821.gb6fe4d2222-goog
Powered by blists - more mailing lists