From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, Thomas Huth <thuth@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
devel@lists.libvirt.org,
Richard Henderson <richard.henderson@linaro.org>,
Eduardo Habkost <eduardo@habkost.net>
Subject: Re: [PATCH-for-9.0 v2] hw/i386/pc: Deprecate 64-bit CPUs on ISA-only PC machine
Date: Thu, 28 Mar 2024 15:15:57 +0000 [thread overview]
Message-ID: <ZgWJrTfMl6iQYepJ@redhat.com> (raw)
In-Reply-To: <20240327165456.34716-1-philmd@linaro.org>
On Wed, Mar 27, 2024 at 05:54:56PM +0100, Philippe Mathieu-Daudé wrote:
> Per Daniel suggestion [*]:
>
> > isapc could arguably be restricted to just 32-bit CPU models,
> > because we should not need it to support any feature that didn't
> > exist prior to circa 1995. eg refuse to start with isapc, if 'lm'
> > is present in the CPU model for example.
>
> Display a warning when such CPU is used:
>
> $ qemu-system-x86_64 -monitor stdio -S -M isapc -cpu Westmere
> qemu-system-x86_64: warning: Use of 64-bit CPU 'Westmere' is deprecated on the ISA-only PC machine
> QEMU 8.2.91 monitor - type 'help' for more information
> (qemu) q
>
> $ qemu-system-x86_64 -monitor stdio -S -M isapc -cpu athlon
> QEMU 8.2.91 monitor - type 'help' for more information
> (qemu) q
I've thought of a possible problem here..
$ qemu-system-x86_64 -monitor stdio -S -M isapc -cpu max
is going to enable 'lm' (and a bazillion other new features)
for 'isapc', which is a shame, as 'max' is something we want
to be usable in general. I'm not sure how to square that
circle.
I might suggest that 'isapc' instead only makes sense in the
context of qemu-system-i386, since that only has 32-bit CPUs.
We wanted to kill that binary in favour of qemu-system-x86_64
for both 32 & 64 bit though, so we can't block 'isapc' from
qemu-system-x86_64.
>
> [*] https://lore.kernel.org/qemu-devel/ZgQkS4RPmSt5Xa08@redhat.com/
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> docs/about/deprecated.rst | 7 +++++++
> include/hw/i386/pc.h | 1 +
> hw/i386/pc_piix.c | 14 ++++++++++++++
> 3 files changed, 22 insertions(+)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 7b548519b5..345c35507f 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -208,6 +208,13 @@ is no longer packaged in any distro making it harder to run the
> ``check-tcg`` tests. Unless we can improve the testing situation there
> is a chance the code will bitrot without anyone noticing.
>
> +64-bit (x86_64) CPUs on the ``isapc`` machine (since 9.0)
> +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> +
> +The ``isapc`` machine aims to emulate old PC machine without PCI was
> +generalized, so hardware available around 1995, before 64-bit intel
> +CPUs were produced.
> +
> System emulator machines
> ------------------------
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 27a68071d7..2d202b9549 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -96,6 +96,7 @@ struct PCMachineClass {
> const char *default_south_bridge;
>
> /* Compat options: */
> + bool deprecate_64bit_cpu; /* Specific to the 'isapc' machine */
>
> /* Default CPU model version. See x86_cpu_set_default_version(). */
> int default_cpu_version;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 18ba076609..2e5b2efc33 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -182,7 +182,20 @@ static void pc_init1(MachineState *machine, const char *pci_type)
> }
>
> pc_machine_init_sgx_epc(pcms);
> +
> x86_cpus_init(x86ms, pcmc->default_cpu_version);
> + if (pcmc->deprecate_64bit_cpu) {
> + X86CPU *cpu = X86_CPU(first_cpu);
> +
> + if (cpu->env.features[FEAT_8000_0001_EDX] & CPUID_EXT2_LM) {
> + const char *cpu_type = object_get_typename(OBJECT(first_cpu));
> + int cpu_len = strlen(cpu_type) - strlen(X86_CPU_TYPE_SUFFIX);
> +
> + warn_report("Use of 64-bit CPU '%.*s' is deprecated"
> + " on the ISA-only PC machine",
> + cpu_len, cpu_type);
> + }
> + }
>
> if (kvm_enabled()) {
> kvmclock_create(pcmc->kvmclock_create_always);
> @@ -918,6 +931,7 @@ static void isapc_machine_options(MachineClass *m)
> pcmc->gigabyte_align = false;
> pcmc->smbios_legacy_mode = true;
> pcmc->has_reserved_memory = false;
> + pcmc->deprecate_64bit_cpu = true;
> m->default_nic = "ne2k_isa";
> m->default_cpu_type = X86_CPU_TYPE_NAME("486");
> m->no_parallel = !module_object_class_by_name(TYPE_ISA_PARALLEL);
> --
> 2.41.0
>
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 :|
prev parent reply other threads:[~2024-03-28 15:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-27 16:54 [PATCH-for-9.0 v2] hw/i386/pc: Deprecate 64-bit CPUs on ISA-only PC machine Philippe Mathieu-Daudé
2024-03-27 17:29 ` Marcin Juszkiewicz
2024-03-27 18:29 ` Philippe Mathieu-Daudé
2024-03-28 15:12 ` Mark Cave-Ayland
2024-03-28 15:39 ` Thomas Huth
2024-03-29 10:26 ` Philippe Mathieu-Daudé
2024-03-28 15:15 ` Daniel P. Berrangé [this message]
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=ZgWJrTfMl6iQYepJ@redhat.com \
--to=berrange@redhat.com \
--cc=devel@lists.libvirt.org \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.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.