From: Zhao Liu <zhao1.liu@intel.com>
To: Zide Chen <zide.chen@intel.com>
Cc: qemu-devel@nongnu.org, pbonzini@redhat.com, mst@redhat.com,
thuth@redhat.com, cfontana@suse.de, xiaoyao.li@intel.com,
qemu-trivial@nongnu.org
Subject: Re: [PATCH V2 2/3] target/i386: call cpu_exec_realizefn before x86_cpu_filter_features
Date: Fri, 31 May 2024 14:30:56 +0800 [thread overview]
Message-ID: <ZlluoKXUF6ctecVt@intel.com> (raw)
In-Reply-To: <20240524200017.150339-3-zide.chen@intel.com>
Hi Zide,
On Fri, May 24, 2024 at 01:00:16PM -0700, Zide Chen wrote:
> Date: Fri, 24 May 2024 13:00:16 -0700
> From: Zide Chen <zide.chen@intel.com>
> Subject: [PATCH V2 2/3] target/i386: call cpu_exec_realizefn before
> x86_cpu_filter_features
> X-Mailer: git-send-email 2.34.1
>
> cpu_exec_realizefn which calls the accel-specific realizefn may expand
> features. e.g., some accel-specific options may require extra features
> to be enabled, and it's appropriate to expand these features in accel-
> specific realizefn.
>
> One such example is the cpu-pm option, which may add CPUID_EXT_MONITOR.
>
> Thus, call cpu_exec_realizefn before x86_cpu_filter_features to ensure
> that it won't expose features not supported by the host.
>
> Fixes: 662175b91ff2 ("i386: reorder call to cpu_exec_realizefn")
> Suggested-by: Xiaoyao Li <xiaoyao.li@intel.com>
> Signed-off-by: Zide Chen <zide.chen@intel.com>
> ---
> target/i386/cpu.c | 24 ++++++++++++------------
> target/i386/kvm/kvm-cpu.c | 1 -
> 2 files changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index bc2dceb647fa..a1c1c785bd2f 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -7604,6 +7604,18 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
> }
> }
>
> + /*
> + * note: the call to the framework needs to happen after feature expansion,
> + * but before the checks/modifications to ucode_rev, mwait, phys_bits.
> + * These may be set by the accel-specific code,
> + * and the results are subsequently checked / assumed in this function.
> + */
> + cpu_exec_realizefn(cs, &local_err);
> + if (local_err != NULL) {
> + error_propagate(errp, local_err);
> + return;
> + }
> +
> x86_cpu_filter_features(cpu, cpu->check_cpuid || cpu->enforce_cpuid);
For your case, which sets cpu-pm=on via overcommit, then
x86_cpu_filter_features() will complain that mwait is not supported.
Such warning is not necessary, because the purpose of overcommit (from
code) is only to support mwait when possible, not to commit to support
mwait in Guest.
Additionally, I understand x86_cpu_filter_features() is primarily
intended to filter features configured by the user, and the changes of
CPUID after x86_cpu_filter_features() should by default be regarded like
"QEMU knows what it is doing".
I feel adding a check for the CPUID mwait bit in host_cpu_realizefn()
is enough, after all, this bit should be present if host supports mwait
and enable_cpu_pm (in kvm_arch_get_supported_cpuid()).
Thanks,
Zhao
next prev parent reply other threads:[~2024-05-31 6:16 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-24 20:00 [PATCH V2 0/3] improve -overcommit cpu-pm=on|off Zide Chen
2024-05-24 20:00 ` [PATCH V2 1/3] vl: Allow multiple -overcommit commands Zide Chen
2024-05-27 5:19 ` Thomas Huth
2024-05-30 14:01 ` Zhao Liu
2024-05-31 4:57 ` Thomas Huth
2024-06-03 8:44 ` Markus Armbruster
2024-05-30 13:39 ` Zhao Liu
2024-05-24 20:00 ` [PATCH V2 2/3] target/i386: call cpu_exec_realizefn before x86_cpu_filter_features Zide Chen
2024-05-31 6:30 ` Zhao Liu [this message]
2024-05-31 17:13 ` Chen, Zide
2024-06-01 15:26 ` Zhao Liu
2024-06-03 9:30 ` Igor Mammedov
2024-06-03 21:29 ` Chen, Zide
2024-06-05 15:07 ` Igor Mammedov
2024-06-05 17:58 ` Chen, Zide
2024-06-03 21:29 ` Chen, Zide
2024-05-24 20:00 ` [PATCH V2 3/3] target/i386: Move host_cpu_enable_cpu_pm into kvm_cpu_realizefn() Zide Chen
2024-05-31 6:53 ` Zhao Liu
2024-05-31 17:13 ` Chen, Zide
2024-05-28 9:23 ` [PATCH V2 0/3] improve -overcommit cpu-pm=on|off Igor Mammedov
2024-05-28 18:16 ` Chen, Zide
2024-05-29 12:46 ` Igor Mammedov
2024-05-29 17:31 ` Chen, Zide
2024-05-30 13:54 ` Zhao Liu
2024-05-30 14:34 ` Igor Mammedov
2024-05-30 14:53 ` Sean Christopherson
2024-05-30 14:49 ` Igor Mammedov
2024-06-02 21:54 ` Michael S. Tsirkin
2024-05-30 16:15 ` Chen, Zide
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZlluoKXUF6ctecVt@intel.com \
--to=zhao1.liu@intel.com \
--cc=cfontana@suse.de \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=thuth@redhat.com \
--cc=xiaoyao.li@intel.com \
--cc=zide.chen@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).