On Fri, Jun 20, 2025 at 11:17:03AM -0700, Will McVicker wrote: > 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@google-gs:~# rmmod exynos_mct > rmmod: ERROR: Module exynos_mct is in use > root@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@xxxxxxxxxx/ > > Cc: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> > Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > Cc: Donghoon Yu <hoony.yu@xxxxxxxxxxx> > Cc: Hosung Kim <hosung0.kim@xxxxxxxxxxx> > Cc: kernel-team@xxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: Rob Herring <robh@xxxxxxxxxx> > Cc: Saravana Kannan <saravanak@xxxxxxxxxx> > Cc: John Stultz <jstultz@xxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Youngmin Nam <youngmin.nam@xxxxxxxxxxx> > Cc: Peter Griffin <peter.griffin@xxxxxxxxxx> > Cc: Tudor Ambarus <tudor.ambarus@xxxxxxxxxx> > Cc: André Draszik <andre.draszik@xxxxxxxxxx> > Cc: Will Deacon <will@xxxxxxxxxx> > Cc: Conor Dooley <conor+dt@xxxxxxxxxx> > Cc: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > Cc: linux-samsung-soc@xxxxxxxxxxxxxxx > > --- > 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. > --- Applied, thanks -- Daniel -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog