From 08af4faa0f0eac4622e52e699729bd157d6d806a Mon Sep 17 00:00:00 2001 From: Patrice Chotard Date: Mon, 6 Jul 2026 18:06:08 +0200 Subject: [PATCH 1/2] cyclic: replace uint64_t by u64 suggested by b4 For new patch, b4 is suggested to replace type 'uint64_t' by 'u64' : CHECK: Prefer kernel type 'u64' over 'uint64_t' Update cyclic.c accordingly in order to be coherent with following commit. Signed-off-by: Patrice Chotard Reviewed-by: Marek Vasut --- common/cyclic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/cyclic.c b/common/cyclic.c index ec952a01ee1..b37cd6d8ff0 100644 --- a/common/cyclic.c +++ b/common/cyclic.c @@ -41,7 +41,7 @@ static bool cyclic_is_registered(const struct cyclic_info *cyclic) } void cyclic_register(struct cyclic_info *cyclic, cyclic_func_t func, - uint64_t delay_us, const char *name) + u64 delay_us, const char *name) { cyclic_unregister(cyclic); @@ -67,7 +67,7 @@ static void cyclic_run(void) { struct cyclic_info *cyclic; struct hlist_node *tmp; - uint64_t now, cpu_time; + u64 now, cpu_time; /* Prevent recursion */ if (gd->flags & GD_FLG_CYCLIC_RUNNING) From 9c1b13b3fd271500cd8a61f86816d822e4852a90 Mon Sep 17 00:00:00 2001 From: Patrice Chotard Date: Mon, 6 Jul 2026 18:06:09 +0200 Subject: [PATCH 2/2] cyclic: reduce get_timer_us() calls inside hlist_for_each_entry_safe() On STM32MP157C-DK2, when using the "ums" command, in sleep_thread(), ctrlc() is called every ~640ms which doesn't allows high reactivity when user press CTRL+C in U-Boot console. In sleep_thread() loop, ctrlc() is called every 200000 iterations. But schedule is called on each loop iteration. Optimize cyclic_run() in order to not call get_timer_us() on each entry. This allow to save computation time : _ before : ctrlc() is called every ~640ms _ after : ctrlc() is called every ~230ms Signed-off-by: Rasmus Villemoes Signed-off-by: Patrice Chotard Cc: Marek Vasut --- common/cyclic.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/cyclic.c b/common/cyclic.c index b37cd6d8ff0..573e715587d 100644 --- a/common/cyclic.c +++ b/common/cyclic.c @@ -67,26 +67,28 @@ static void cyclic_run(void) { struct cyclic_info *cyclic; struct hlist_node *tmp; - u64 now, cpu_time; + u64 now, after, cpu_time; /* Prevent recursion */ if (gd->flags & GD_FLG_CYCLIC_RUNNING) return; gd->flags |= GD_FLG_CYCLIC_RUNNING; + now = get_timer_us(0); hlist_for_each_entry_safe(cyclic, tmp, cyclic_get_list(), list) { /* * Check if this cyclic function needs to get called, e.g. * do not call the cyclic func too often */ - now = get_timer_us(0); if (time_after_eq64(now, cyclic->next_call)) { /* Call cyclic function and account it's cpu-time */ cyclic->next_call = now + cyclic->delay_us; cyclic->func(cyclic); + after = get_timer_us(0); cyclic->run_cnt++; - cpu_time = get_timer_us(0) - now; + cpu_time = after - now; cyclic->cpu_time_us += cpu_time; + now = after; /* Check if cpu-time exceeds max allowed time */ if ((cpu_time > CONFIG_CYCLIC_MAX_CPU_TIME_US) &&