[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off
From: |
Sean Christopherson |
Subject: |
Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off |
Date: |
Thu, 30 May 2024 07:53:49 -0700 |
On Thu, May 30, 2024, Igor Mammedov wrote:
> On Thu, 30 May 2024 21:54:47 +0800 Zhao Liu <zhao1.liu@intel.com> wrote:
...
> > > >> following, CPUID_EXT_MONITOR is set after x86_cpu_filter_features(), so
> > > >> that it doesn't have a chance to check MWAIT against host features and
> > > >> will be advertised to the guest regardless of whether it's supported by
> > > >> the host or not.
> > > >>
> > > >> x86_cpu_realizefn()
> > > >> x86_cpu_filter_features()
> > > >> cpu_exec_realizefn()
> > > >> kvm_cpu_realizefn
> > > >> host_cpu_realizefn
> > > >> host_cpu_enable_cpu_pm
> > > >> env->features[FEAT_1_ECX] |= CPUID_EXT_MONITOR;
> > > >>
> > > >>
> > > >> If it's not supported by the host, executing MONITOR or MWAIT
> > > >> instructions from the guest triggers #UD, no matter MWAIT_EXITING
> > > >> control is set or not.
> > > >
> > > > If I recall right, kvm was able to emulate mwait/monitor.
> > > > So question is why it leads to exception instead?
Because KVM doesn't emulated MONITOR/MWAIT on #UD.
> > > KVM can come to play only iff it can trigger MWAIT/MONITOR VM exits. I
> > > didn't find explicit proof from Intel SDM that #UD exceptions take
> > > precedence over MWAIT/MONITOR VM exits, but this is my speculation.
Yeah, typically #UD takes priority over VM-Exit interception checks. AMD's APM
is much more explicit and states that all exceptions are checked on
MONITOR/MWAIT
before the interception check.
> > > For example, in ancient machines which don't support MWAIT yet, the only
> > > way it can do is #UD, not MWAIT VM exit?
Not really relevant, because such CPUs wouldn't have MWAIT-exiting.
> > For the Host which doesn't support MWAIT, it shouldn't have the VMX
> > control bit for mwait exit either, right?
> >
> > Could you pls check this on your machine? If VMX doesn't support this
> > exit event, then triggering an exception will make sense.
>
> My assumption (probably wrong) was that KVM would emulate mwait if it's
> unavailable,
Nope. In order to limit the attack surface of the emulator on modern CPUs, KVM
only emulates select instructions in response to a #UD.
But even if KVM did emulate MONITOR/MWAIT on #UD, this is inarguably a QEMU bug,
e.g. QEMU will effectively coerce the guest into using a idle-polling mechanism.
Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Igor Mammedov, 2024/05/28
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Chen, Zide, 2024/05/28
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Igor Mammedov, 2024/05/29
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Chen, Zide, 2024/05/29
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Zhao Liu, 2024/05/30
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Igor Mammedov, 2024/05/30
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off,
Sean Christopherson <=
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Igor Mammedov, 2024/05/30
- Re: [PATCH V2 0/3] improve -overcommit cpu-pm=on|off, Chen, Zide, 2024/05/30