From f7d676de772511a8cbba4ce93fd01671895f3f97 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Thu, 4 Sep 2025 12:20:42 +0200 Subject: [PATCH] Fix hrtimer new interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hrtimer_init() is now done via hrtimer_setup() with the callback function as argument. See: https://lwn.net/Articles/996598/ Reviewed-by: Aleix Boné --- pkgs/amd-uprof/driver.nix | 2 +- pkgs/amd-uprof/hrtimer.patch | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 pkgs/amd-uprof/hrtimer.patch diff --git a/pkgs/amd-uprof/driver.nix b/pkgs/amd-uprof/driver.nix index 7fdc16f..e69ef2c 100644 --- a/pkgs/amd-uprof/driver.nix +++ b/pkgs/amd-uprof/driver.nix @@ -19,7 +19,7 @@ in stdenv.mkDerivation { ''; hardeningDisable = [ "pic" "format" ]; nativeBuildInputs = kernel.moduleBuildDependencies; - patches = [ ./makefile.patch ]; + patches = [ ./makefile.patch ./hrtimer.patch ]; makeFlags = [ "KERNEL_VERSION=${kernel.modDirVersion}" "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" diff --git a/pkgs/amd-uprof/hrtimer.patch b/pkgs/amd-uprof/hrtimer.patch new file mode 100644 index 0000000..24befa3 --- /dev/null +++ b/pkgs/amd-uprof/hrtimer.patch @@ -0,0 +1,31 @@ +--- a/src/PmcTimerConfig.c 2025-09-04 12:17:16.771707049 +0200 ++++ b/src/PmcTimerConfig.c 2025-09-04 12:17:04.878515468 +0200 +@@ -99,7 +99,7 @@ static void PmcInitTimer(void* pInfo) + + DRVPRINT("pTimerConfig(%p)", pTimerConfig); + +- hrtimer_init(&pTimerConfig->m_hrTimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); ++ hrtimer_setup(&pTimerConfig->m_hrTimer, PmcTimerCallback, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); + } + + int PmcSetupTimer(ClientContext* pClientCtx) +@@ -157,7 +157,6 @@ int PmcSetupTimer(ClientContext* pClient + { + /* Interval in ms */ + pTimerConfig->m_time = ktime_set(interval / 1000, interval * 1000000); +- pTimerConfig->m_hrTimer.function = PmcTimerCallback; + + DRVPRINT("retVal(%d) m_time(%lld)", retVal, (long long int) pTimerConfig->m_time); + } +--- a/src/PwrProfTimer.c 2025-09-04 12:18:08.750544327 +0200 ++++ b/src/PwrProfTimer.c 2025-09-04 12:18:28.557863382 +0200 +@@ -573,8 +573,7 @@ void InitHrTimer(uint32 cpu) + pCoreClientData = &per_cpu(g_coreClientData, cpu); + + // initialize HR timer +- hrtimer_init(&pCoreClientData->m_hrTimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); +- pCoreClientData->m_hrTimer.function = &HrTimerCallback; ++ hrtimer_setup(&pCoreClientData->m_hrTimer, &HrTimerCallback, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); + + return; + } // InitHrTimer