Re: [PATCH] cpuidle: haltpoll: Add trace points for guest_halt_poll_ns grow/shrink

From: Eiichi Tsukata
Date: Mon May 23 2022 - 07:34:31 EST




> On May 23, 2022, at 15:35, Eiichi Tsukata <eiichi.tsukata@xxxxxxxxxxx> wrote:
>
> Add trace points as are implemented in KVM host halt polling.
> This helps tune guest halt polling params.
>
> Signed-off-by: Eiichi Tsukata <eiichi.tsukata@xxxxxxxxxxx>
> ---
> drivers/cpuidle/governors/haltpoll.c | 7 +++++-
> include/trace/events/power.h | 33 ++++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpuidle/governors/haltpoll.c b/drivers/cpuidle/governors/haltpoll.c
> index cb2a96eafc02..9a6eca41a484 100644
> --- a/drivers/cpuidle/governors/haltpoll.c
> +++ b/drivers/cpuidle/governors/haltpoll.c
> @@ -19,6 +19,7 @@
> #include <linux/sched.h>
> #include <linux/module.h>
> #include <linux/kvm_para.h>
> +#include <trace/events/power.h>
>
> static unsigned int guest_halt_poll_ns __read_mostly = 200000;
> module_param(guest_halt_poll_ns, uint, 0644);
> @@ -77,13 +78,14 @@ static int haltpoll_select(struct cpuidle_driver *drv,
>
> static void adjust_poll_limit(struct cpuidle_device *dev, u64 block_ns)
> {
> - unsigned int val;
> + unsigned int val, old;
>
> /* Grow cpu_halt_poll_us if
> * cpu_halt_poll_us < block_ns < guest_halt_poll_us
> */
> if (block_ns > dev->poll_limit_ns && block_ns <= guest_halt_poll_ns) {
> val = dev->poll_limit_ns * guest_halt_poll_grow;
> + old = val;

This sets wrong old val. Will fix it in v2.

Eiichi