On Sat, Oct 26, 2019 at 11:23:59AM +0800, Zhenzhong Duan wrote: > Ensure pool time is longer than block_ns, so there is a margin to > avoid vCPU get into block state unnecessorily. > > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@xxxxxxxxxx> > --- > drivers/cpuidle/governors/haltpoll.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/cpuidle/governors/haltpoll.c b/drivers/cpuidle/governors/haltpoll.c > index 4b00d7a..59eadaf 100644 > --- a/drivers/cpuidle/governors/haltpoll.c > +++ b/drivers/cpuidle/governors/haltpoll.c > @@ -81,9 +81,9 @@ static void adjust_poll_limit(struct cpuidle_device *dev, unsigned int block_us) > u64 block_ns = block_us*NSEC_PER_USEC; > > /* Grow cpu_halt_poll_us if > - * cpu_halt_poll_us < block_ns < guest_halt_poll_us > + * cpu_halt_poll_us <= block_ns < guest_halt_poll_us > */ > - if (block_ns > dev->poll_limit_ns && block_ns <= guest_halt_poll_ns) { > + if (block_ns >= dev->poll_limit_ns && block_ns < guest_halt_poll_ns) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If block_ns == guest_halt_poll_ns, you won't allow dev->poll_limit_ns to grow. Why is that? > @@ -101,7 +101,7 @@ static void adjust_poll_limit(struct cpuidle_device *dev, unsigned int block_us) > val = guest_halt_poll_ns; > > dev->poll_limit_ns = val; > - } else if (block_ns > guest_halt_poll_ns && > + } else if (block_ns >= guest_halt_poll_ns && > guest_halt_poll_allow_shrink) { > unsigned int shrink = guest_halt_poll_shrink; And here you shrink if block_ns == guest_halt_poll_ns. Not sure why that makes sense either.