[PATCH] cpu-throttle: reset throttle_thread_scheduled when throttle_percentage is 0

jinyilingjyl@gmail.com posted 1 patch 2 years ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220507094340.33700-1-yilingjin@tencent.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>
softmmu/cpu-throttle.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] cpu-throttle: reset throttle_thread_scheduled when throttle_percentage is 0
Posted by jinyilingjyl@gmail.com 2 years ago
From: yilingjin <yilingjin@tencent.com>

The throttle_thread_scheduled flag is set to 1 in cpu_throttle_timer_tick()
when throttle_percentage isn't 0, and will reset back to 0 after sleeping
in cpu_throttle_thread(). Given that throttle_timer may tick with a slight delay,
the throttle_percentage may reset to 0 before schedule cpu_throttle_thread().
This results on cpu_throttle_thread() to return immediately without reset
throttle_thread_scheduled flag back to 0, so there is no longer any chances
for vCPU thread to sleep in cpu_throttle_thread().

Signed-off-by: yilingjin <yilingjin@tencent.com>
---
 softmmu/cpu-throttle.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/softmmu/cpu-throttle.c b/softmmu/cpu-throttle.c
index d9bb30a223..7c2fd26072 100644
--- a/softmmu/cpu-throttle.c
+++ b/softmmu/cpu-throttle.c
@@ -44,6 +44,7 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque)
     int64_t sleeptime_ns, endtime_ns;
 
     if (!cpu_throttle_get_percentage()) {
+        qatomic_set(&cpu->throttle_thread_scheduled, 0);
         return;
     }
 
-- 
2.27.0