MSR accesses that slows down the hypervisor/host

Wei Hu weh at microsoft.com
Thu Sep 17 05:34:29 UTC 2020


> From: Konstantin Belousov <kostikbel at gmail.com>
> Sent: Wednesday, September 16, 2020 9:57 PM
> To: Wei Hu <weh at microsoft.com>
> Cc: freebsd-hackers at freebsd.org
> Subject: Re: MSR accesses that slows down the hypervisor/host
> 
> Where do you see accesses to MSR_LS_CFG ?  I can only find manipulations of
> that MSR in init_amd(), and then it is all under check that we are not
> virtualized.
> 
Yes, it is only accessed in init_amd() at boot time. So it is less concerned. MSR_AMDK8_IPM
is accessed in cpu_idle() all the time, so it is the key place to optimize.

> For MSR_AMDK8_IPM access in cpu_idle(), it seems that the workaround was
> applied too wide. It might be that we do not need to do it on recent CPUs, but I
> need to spent more time looking at datasheets to confirm/deny.
> 
> But, do you (hypervisor) indeed allow guest to initiate C1 or deeper idle state ?
> If not, perhaps as the first measure, we can avoid manipulating
> MSR_AMDK8_IPM under hypervisor at all.

You are right a guest cannot initiate C1 or deeper idle state when running on Hyper-V.
So skipping the read of MSR_AMDK8_IPM when running under this hypervisor would 
Be a viable solution. 

Thanks,
Wei


More information about the freebsd-hackers mailing list