[PATCH v4 0/6] Add module support for Arm64 Exynos MCT driver
Will McVicker
willmcvicker at google.com
Fri Jun 20 11:17:03 PDT 2025
This series adds support to build the Arm64 Exynos MCT driver as a module.
This is only possible on Arm64 SoCs since they can use the Arm architected
timer as the clocksource. Once the Exynos MCT module is loaded and the
device probes, the MCT is used as the wakeup source for the arch_timer to
ensure the device can wakeup from the "c2" idle state.
These patches are originally from the downstream Pixel 6 (gs101) kernel
found at [1] and have been adapted for upstream. Not only has the Exynos MCT
driver been shipping as a module in the field with Android, but I've also
tested this series with the upstream kernel on my Pixel 6 Pro.
In addition, I verified that the Exynos MCT module cannot be unloaded on my
Pixel 6. This is due to /sys/module/exynos_mct/refcnt > 0. So if you try,
you'll get this:
root at google-gs:~# rmmod exynos_mct
rmmod: ERROR: Module exynos_mct is in use
root at google-gs:~# cat /sys/module/exynos_mct/refcnt
9
Thanks,
Will
Note1, instructions to build and flash a Pixel 6 device with the upstream
kernel can be found at [2].
Note2, this series is based off of krzk/for-next commit a15edf91668b ("Merge
branch 'next/dt64' into for-next") with [3] on top.
[1] https://android.googlesource.com/kernel/gs/+log/refs/heads/android-gs-raviole-5.10-android12-d1
[2] https://git.codelinaro.org/linaro/googlelt/pixelscripts/-/blob/clo/main/README.md?ref_type=heads
[3] https://lore.kernel.org/linux-arm-kernel/20250602151853.1942521-1-daniel.lezcano@linaro.org/
Cc: Alim Akhtar <alim.akhtar at samsung.com>
Cc: Daniel Lezcano <daniel.lezcano at linaro.org>
Cc: Donghoon Yu <hoony.yu at samsung.com>
Cc: Hosung Kim <hosung0.kim at samsung.com>
Cc: kernel-team at android.com
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-kernel at vger.kernel.org
Cc: Rob Herring <robh at kernel.org>
Cc: Saravana Kannan <saravanak at google.com>
Cc: John Stultz <jstultz at google.com>
Cc: Thomas Gleixner <tglx at linutronix.de>
Cc: Youngmin Nam <youngmin.nam at samsung.com>
Cc: Peter Griffin <peter.griffin at linaro.org>
Cc: Tudor Ambarus <tudor.ambarus at linaro.org>
Cc: André Draszik <andre.draszik at linaro.org>
Cc: Will Deacon <will at kernel.org>
Cc: Conor Dooley <conor+dt at kernel.org>
Cc: Krzysztof Kozlowski <krzk at kernel.org>
Cc: linux-samsung-soc at vger.kernel.org
---
Changes in v4:
- Missed the "v3" string in the previous series for the actual patches
- Re-generated patches with --base a15edf91668beefdb5171c53fa698c9b43dd1e0d
for kernel test robot.
Changes in v3:
- Rebased on top of Daniel's timer modularization prep series [3] and
krzk/for-next commit a15edf91668b ("Merge branch 'next/dt64' into
for-next")
- Added owner references to Exynos MCT clocksource and clockevent objects.
- Dropped #ifdef MODULE conditional section in favor of just using
module_platform_driver() which will properly handle setting up the
of_device_id table based on if the driver is built-in or a module.
- Update commit message for patch 2 based on John's feedback.
- Dropped DT change from v2 as it was picked up by Krzysztof for CPU Idle.
Changes in v2:
- Re-worked patch v1 5 based on Rob Herring's review to use the compatible
data for retrieving the mct_init function pointer.
- Updated the Kconfig logic to disallow building the Exynos MCT driver as
a module for ARM32 configurations based on Krzysztof Kozlowski's findings.
- Added comments and clarified commit messages in patches 1 and 2 based on
reviews from John Stultz and Youngmin Nam.
- Fixed an issue found during testing that resulted in the device getting
stuck on boot. This is included in v2 as patch 5.
- Collected *-by tags
- Rebased to the latest linux-next/master.
---
Donghoon Yu (1):
clocksource/drivers/exynos_mct: Add module support
Hosung Kim (1):
clocksource/drivers/exynos_mct: Set local timer interrupts as percpu
Will McVicker (4):
of/irq: Export of_irq_count for modules
clocksource/drivers/exynos_mct: Don't register as a sched_clock on
arm64
clocksource/drivers/exynos_mct: Fix uninitialized irq name warning
arm64: exynos: Drop select CLKSRC_EXYNOS_MCT
arch/arm64/Kconfig.platforms | 1 -
drivers/clocksource/Kconfig | 3 +-
drivers/clocksource/exynos_mct.c | 75 ++++++++++++++++++++++++++------
drivers/of/irq.c | 1 +
4 files changed, 64 insertions(+), 16 deletions(-)
base-commit: a15edf91668beefdb5171c53fa698c9b43dd1e0d
prerequisite-patch-id: 0c5b7e9fb27295e0c125c537ac80d1eb16cef60d
prerequisite-patch-id: 6a9b683baee83ddc2b2fada31479b27b53469759
prerequisite-patch-id: b9cbd59ff2f4c905001ecb02868d20fb004034cc
prerequisite-patch-id: cdde1a76624089aa818cb35e612f880107bdc073
prerequisite-patch-id: cec67e07038c7aa93a2b53879781626d738cd199
prerequisite-patch-id: 8fda377fcaf407026f04f2a547086cf1ecf4efc9
prerequisite-patch-id: dce925ac224bb361c74fdb23126fab53e7c5c26b
--
2.50.0.rc2.761.g2dc52ea45b-goog
More information about the linux-arm-kernel
mailing list