From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, Jason Wang <jasowang@redhat.com>,
Hanna Reitz <hreitz@redhat.com>,
Dmitry Fleytman <dmitry.fleytman@gmail.com>,
qemu-block@nongnu.org, Fam Zheng <fam@euphon.net>,
Paolo Bonzini <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Zhao Liu <zhao1.liu@intel.com>,
Yanan Wang <wangyanan55@huawei.com>,
Kevin Wolf <kwolf@redhat.com>,
Eduardo Habkost <eduardo@habkost.net>,
Richard Henderson <richard.henderson@linaro.org>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Gerd Hoffmann <kraxel@redhat.com>, John Snow <jsnow@redhat.com>
Subject: Re: [PATCH 06/21] target/i386/cpu: Pass Error** to x86_cpu_filter_features()
Date: Thu, 16 Jan 2025 09:51:13 +0000 [thread overview]
Message-ID: <Z4jWkf8LxTTMCTkk@redhat.com> (raw)
In-Reply-To: <20250115232247.30364-7-philmd@linaro.org>
On Thu, Jan 16, 2025 at 12:22:32AM +0100, Philippe Mathieu-Daudé wrote:
> Simplify x86_cpu_realizefn() by passing an Error**
> argument to x86_cpu_filter_features().
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> target/i386/cpu.c | 26 +++++++++-----------------
> 1 file changed, 9 insertions(+), 17 deletions(-)
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 42227643126..c48241fb902 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -5896,7 +5896,7 @@ static void x86_cpu_parse_featurestr(const char *typename, char *features,
> }
> }
>
> -static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose);
> +static bool x86_cpu_filter_features(X86CPU *cpu, Error **errp);
>
> /* Build a list with the name of all features on a feature word array */
> static void x86_cpu_list_feature_names(FeatureWordArray features,
> @@ -6084,7 +6084,7 @@ static void x86_cpu_class_check_missing_features(X86CPUClass *xcc,
> error_free(err);
> }
>
> - x86_cpu_filter_features(xc, false);
> + x86_cpu_filter_features(xc, NULL);
>
> x86_cpu_list_feature_names(xc->filtered_features, tail);
>
> @@ -7650,7 +7650,7 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
> *
> * Returns: true if any flag is not supported by the host, false otherwise.
> */
> -static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose)
> +static bool x86_cpu_filter_features(X86CPU *cpu, Error **errp)
> {
> CPUX86State *env = &cpu->env;
> FeatureWord w;
> @@ -7660,7 +7660,7 @@ static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose)
> uint32_t eax_0, ebx_0, ecx_0, edx_0;
> uint32_t eax_1, ebx_1, ecx_1, edx_1;
>
> - if (verbose) {
> + if (errp) {
> prefix = accel_uses_host_cpuid()
> ? "host doesn't support requested feature"
> : "TCG doesn't support requested feature";
> @@ -7712,15 +7712,13 @@ static bool x86_cpu_filter_features(X86CPU *cpu, bool verbose)
> uint8_t version = ebx_0 & 0xff;
>
> if (version < env->avx10_version) {
> - if (prefix) {
> - warn_report("%s: avx10.%d. Adjust to avx10.%d",
> - prefix, env->avx10_version, version);
> - }
> + error_setg(errp, "%s: avx10.%d. Adjust to avx10.%d",
> + prefix, env->avx10_version, version);
> env->avx10_version = version;
> have_filtered_features = true;
This doesn't look right. Previously it was correct to carry on and
set 'env->avx10_version = version' or 'have_filtered_features',
because it was upto the caller whether this was an error scenario
or just a warning.
With your change though, we're unambiguously treating this as an
error condition. So we should return from this method immediately
after calling 'error_setg' now.
> }
> } else if (env->avx10_version && prefix) {
> - warn_report("%s: avx10.%d.", prefix, env->avx10_version);
> + error_setg(errp, "%s: avx10.%d.", prefix, env->avx10_version);
> have_filtered_features = true;
Same here, needs a 'return'
> }
>
> @@ -7822,14 +7820,8 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
> }
> }
>
> - if (x86_cpu_filter_features(cpu, cpu->enforce_cpuid)) {
> - if (cpu->enforce_cpuid) {
> - error_setg(&local_err,
> - accel_uses_host_cpuid() ?
> - "Host doesn't support requested features" :
> - "TCG doesn't support requested features");
> - goto out;
> - }
> + if (x86_cpu_filter_features(cpu, cpu->enforce_cpuid ? &local_err : NULL)) {
> + goto out;
> }
>
> /* On AMD CPUs, some CPUID[8000_0001].EDX bits must match the bits on
> --
> 2.47.1
>
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2025-01-16 9:52 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-15 23:22 [PATCH 00/21] hw/i386/pc: Remove deprecated 2.4 and 2.5 PC machines Philippe Mathieu-Daudé
2025-01-15 23:22 ` [PATCH 01/21] hw/i386/pc: Remove unused pc_compat_2_3 declarations Philippe Mathieu-Daudé
2025-01-16 9:06 ` Daniel P. Berrangé
2025-01-16 18:06 ` Richard Henderson
2025-01-17 8:52 ` Thomas Huth
2025-01-30 9:59 ` Michael Tokarev
2025-01-30 10:27 ` Philippe Mathieu-Daudé
2025-01-15 23:22 ` [PATCH 02/21] hw/i386/pc: Remove deprecated pc-q35-2.4 and pc-i440fx-2.4 machines Philippe Mathieu-Daudé
2025-01-16 9:29 ` Daniel P. Berrangé
2025-01-16 10:33 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 03/21] hw/i386/pc: Remove PCMachineClass::broken_reserved_end field Philippe Mathieu-Daudé
2025-01-16 9:38 ` Daniel P. Berrangé
2025-01-17 8:55 ` Thomas Huth
2025-01-15 23:22 ` [PATCH 04/21] hw/i386/pc: Remove pc_compat_2_4[] array Philippe Mathieu-Daudé
2025-01-16 9:39 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 05/21] target/i386/cpu: Remove X86CPU::check_cpuid field Philippe Mathieu-Daudé
2025-01-16 9:46 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 06/21] target/i386/cpu: Pass Error** to x86_cpu_filter_features() Philippe Mathieu-Daudé
2025-01-16 9:51 ` Daniel P. Berrangé [this message]
2025-01-15 23:22 ` [PATCH 07/21] hw/core/machine: Remove hw_compat_2_4[] array Philippe Mathieu-Daudé
2025-01-16 9:53 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 08/21] hw/net/e1000: Remove unused E1000_FLAG_MAC flag Philippe Mathieu-Daudé
2025-01-16 9:57 ` Daniel P. Berrangé
2025-01-17 8:58 ` Thomas Huth
2025-01-17 16:41 ` Philippe Mathieu-Daudé
2025-01-17 19:00 ` Thomas Huth
2025-01-15 23:22 ` [PATCH 09/21] hw/virtio/virtio-pci: Remove VIRTIO_PCI_FLAG_MIGRATE_EXTRA definition Philippe Mathieu-Daudé
2025-01-16 10:01 ` Daniel P. Berrangé
2025-01-17 9:06 ` Thomas Huth
2025-04-29 13:50 ` Philippe Mathieu-Daudé
2025-01-15 23:22 ` [PATCH 10/21] hw/virtio/virtio-pci: Remove VIRTIO_PCI_FLAG_DISABLE_PCIE definition Philippe Mathieu-Daudé
2025-01-16 10:06 ` Daniel P. Berrangé
2025-01-17 9:08 ` Thomas Huth
2025-01-17 16:43 ` Philippe Mathieu-Daudé
2025-01-17 18:43 ` Thomas Huth
2025-01-15 23:22 ` [PATCH 11/21] hw/i386/pc: Remove deprecated pc-q35-2.5 and pc-i440fx-2.5 machines Philippe Mathieu-Daudé
2025-01-16 10:34 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 12/21] hw/i386/x86: Remove X86MachineClass::save_tsc_khz field Philippe Mathieu-Daudé
2025-01-16 10:08 ` Daniel P. Berrangé
2025-01-17 9:09 ` Thomas Huth
2025-01-15 23:22 ` [PATCH 13/21] hw/nvram/fw_cfg: Remove legacy FW_CFG_ORDER_OVERRIDE Philippe Mathieu-Daudé
2025-01-16 10:13 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 14/21] hw/core/machine: Remove hw_compat_2_5[] array Philippe Mathieu-Daudé
2025-01-16 10:16 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 15/21] hw/block/fdc-isa: Remove 'fallback' property Philippe Mathieu-Daudé
2025-01-16 10:16 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 16/21] hw/scsi/vmw_pvscsi: Remove PVSCSI_COMPAT_OLD_PCI_CONFIGURATION definition Philippe Mathieu-Daudé
2025-01-16 10:17 ` Daniel P. Berrangé
2025-01-17 9:16 ` Thomas Huth
2025-04-29 13:56 ` Philippe Mathieu-Daudé
2025-01-15 23:22 ` [PATCH 17/21] hw/scsi/vmw_pvscsi: Remove PVSCSI_COMPAT_DISABLE_PCIE_BIT definition Philippe Mathieu-Daudé
2025-01-16 10:18 ` Daniel P. Berrangé
2025-01-17 9:21 ` Thomas Huth
2025-04-29 14:04 ` Philippe Mathieu-Daudé
2025-01-17 9:24 ` Thomas Huth
2025-01-15 23:22 ` [PATCH 18/21] hw/scsi/vmw_pvscsi: Convert DeviceRealize -> InstanceInit Philippe Mathieu-Daudé
2025-01-16 10:19 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 19/21] hw/net/vmxnet3: Remove VMXNET3_COMPAT_FLAG_OLD_MSI_OFFSETS definition Philippe Mathieu-Daudé
2025-01-16 10:19 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 20/21] hw/net/vmxnet3: Remove VMXNET3_COMPAT_FLAG_DISABLE_PCIE definition Philippe Mathieu-Daudé
2025-01-16 10:20 ` Daniel P. Berrangé
2025-01-15 23:22 ` [PATCH 21/21] hw/net/vmxnet3: Merge DeviceRealize in InstanceInit Philippe Mathieu-Daudé
2025-01-16 10:20 ` Daniel P. Berrangé
2025-01-17 10:37 ` [PATCH 00/21] hw/i386/pc: Remove deprecated 2.4 and 2.5 PC machines Michael S. Tsirkin
2025-01-17 16:46 ` Philippe Mathieu-Daudé
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=Z4jWkf8LxTTMCTkk@redhat.com \
--to=berrange@redhat.com \
--cc=dmitry.fleytman@gmail.com \
--cc=eduardo@habkost.net \
--cc=fam@euphon.net \
--cc=hreitz@redhat.com \
--cc=jasowang@redhat.com \
--cc=jsnow@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.