diff mbox series

[1/2] docs/about: Deprecate 32-bit x86 hosts and qemu-system-i386

Message ID 20230227111050.54083-2-thuth@redhat.com
State New
Headers show
Series Deprecate support for 32-bit x86 and arm hosts | expand

Commit Message

Thomas Huth Feb. 27, 2023, 11:10 a.m. UTC
Hardly anybody still uses 32-bit x86 hosts today, so we should
start deprecating them to finally have less test efforts.
With regards to 32-bit KVM support in the x86 Linux kernel,
the developers confirmed that they do not need a recent
qemu-system-i386 binary here:

 https://lore.kernel.org/kvm/Y%2ffkTs5ajFy0hP1U@google.com/

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 docs/about/deprecated.rst | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Daniel P. Berrangé Feb. 27, 2023, 11:50 a.m. UTC | #1
On Mon, Feb 27, 2023 at 12:10:49PM +0100, Thomas Huth wrote:
> Hardly anybody still uses 32-bit x86 hosts today, so we should
> start deprecating them to finally have less test efforts.
> With regards to 32-bit KVM support in the x86 Linux kernel,
> the developers confirmed that they do not need a recent
> qemu-system-i386 binary here:
> 
>  https://lore.kernel.org/kvm/Y%2ffkTs5ajFy0hP1U@google.com/
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  docs/about/deprecated.rst | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 15084f7bea..98517f5187 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -196,6 +196,19 @@ CI coverage support may bitrot away before the deprecation process
>  completes. The little endian variants of MIPS (both 32 and 64 bit) are
>  still a supported host architecture.
>  
> +32-bit x86 hosts and ``qemu-system-i386`` (since 8.0)
> +'''''''''''''''''''''''''''''''''''''''''''''''''''''
> +
> +Testing 32-bit x86 host OS support takes a lot of precious time during the
> +QEMU contiguous integration tests, and considering that most OS vendors
> +stopped shipping 32-bit variants of their x86 OS distributions and most
> +x86 hardware from the past >10 years is capable of 64-bit, keeping the
> +32-bit support alive is an inadequate burden for the QEMU project. Thus
> +QEMU will soon drop the support for 32-bit x86 host systems and the
> +``qemu-system-i386`` binary. Use ``qemu-system-x86_64`` (which is a proper
> +superset of ``qemu-system-i386``) on a 64-bit host machine instead.

I feel like we should have separate deprecation entries for the
i686 host support, and for qemu-system-i386 emulator binary, as
although they're related they are independant features with
differing impact. eg removing qemu-system-i386 affects all
host architectures, not merely 32-bit x86 host, so I think we
can explain the impact more clearly if we separate them.

How about something like....


32-bit x86 hosts
''''''''''''''''

Support for 32-bit x86 host deployments is increasingly uncommon in
mainstream Linux distributions given the widespread availability of
64-bit x86 hardware. The QEMU project no longer considers 32-bit
x86 support to be an effective use of its limited resources, and
thus intends to discontinue it.

Current users of QEMU on 32-bit x86 hosts should either continue
using existing releases of QEMU, with the caveat that they will
no longer get security fixes, or migrate to a 64-bit platform
which remains capable of running 32-bit guests if needed.

``qemu-system-i386`` binary removal
'''''''''''''''''''''''''''''''''''

The ``qemu-system-x86_64`` binary can be used to run 32-bit guests
by selecting a 32-bit CPU model, including KVM support on x86_64
hosts. Once support for the 32-bit x86 host platform is discontinued,
the ``qemu-system-i386`` binary will be redundant. Current users are
recommended to reconfigure their systems to use the ``qemu-system-x86_64``
binary.



Same point for the next patch about 32-bit arm vs qemu-system-arm
binary.

With regards,
Daniel
Michael S. Tsirkin Feb. 27, 2023, 8:12 p.m. UTC | #2
On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> I feel like we should have separate deprecation entries for the
> i686 host support, and for qemu-system-i386 emulator binary, as
> although they're related they are independant features with
> differing impact. eg removing qemu-system-i386 affects all
> host architectures, not merely 32-bit x86 host, so I think we
> can explain the impact more clearly if we separate them.

Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
a superset.

Removing support for building on 32 bit systems seems like a pity - it's
one of a small number of ways to run 64 bit binaries on 32 bit systems,
and the maintainance overhead is quite small.

In fact, keeping this support around forces correct use of
posix APIs such as e.g. PRIx64 which makes the code base
more future-proof.
Richard Henderson Feb. 27, 2023, 8:21 p.m. UTC | #3
On 2/27/23 10:12, Michael S. Tsirkin wrote:
> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>> I feel like we should have separate deprecation entries for the
>> i686 host support, and for qemu-system-i386 emulator binary, as
>> although they're related they are independant features with
>> differing impact. eg removing qemu-system-i386 affects all
>> host architectures, not merely 32-bit x86 host, so I think we
>> can explain the impact more clearly if we separate them.
> 
> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> a superset.
> 
> Removing support for building on 32 bit systems seems like a pity - it's
> one of a small number of ways to run 64 bit binaries on 32 bit systems,
> and the maintainance overhead is quite small.

It's not that small.  It only works for single-threaded system mode.  It silently does not 
honor atomicity for user-only mode, which is perhaps worse not working at all.


r~
Richard Henderson Feb. 27, 2023, 8:25 p.m. UTC | #4
On 2/27/23 01:50, Daniel P. Berrangé wrote:
> On Mon, Feb 27, 2023 at 12:10:49PM +0100, Thomas Huth wrote:
>> Hardly anybody still uses 32-bit x86 hosts today, so we should
>> start deprecating them to finally have less test efforts.
>> With regards to 32-bit KVM support in the x86 Linux kernel,
>> the developers confirmed that they do not need a recent
>> qemu-system-i386 binary here:
>>
>>   https://lore.kernel.org/kvm/Y%2ffkTs5ajFy0hP1U@google.com/
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   docs/about/deprecated.rst | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>> index 15084f7bea..98517f5187 100644
>> --- a/docs/about/deprecated.rst
>> +++ b/docs/about/deprecated.rst
>> @@ -196,6 +196,19 @@ CI coverage support may bitrot away before the deprecation process
>>   completes. The little endian variants of MIPS (both 32 and 64 bit) are
>>   still a supported host architecture.
>>   
>> +32-bit x86 hosts and ``qemu-system-i386`` (since 8.0)
>> +'''''''''''''''''''''''''''''''''''''''''''''''''''''
>> +
>> +Testing 32-bit x86 host OS support takes a lot of precious time during the
>> +QEMU contiguous integration tests, and considering that most OS vendors
>> +stopped shipping 32-bit variants of their x86 OS distributions and most
>> +x86 hardware from the past >10 years is capable of 64-bit, keeping the
>> +32-bit support alive is an inadequate burden for the QEMU project. Thus
>> +QEMU will soon drop the support for 32-bit x86 host systems and the
>> +``qemu-system-i386`` binary. Use ``qemu-system-x86_64`` (which is a proper
>> +superset of ``qemu-system-i386``) on a 64-bit host machine instead.
> 
> I feel like we should have separate deprecation entries for the
> i686 host support, and for qemu-system-i386 emulator binary, as
> although they're related they are independant features with
> differing impact.

Agreed.

> 32-bit x86 hosts
> ''''''''''''''''
> 
> Support for 32-bit x86 host deployments is increasingly uncommon in
> mainstream Linux distributions given the widespread availability of
> 64-bit x86 hardware. The QEMU project no longer considers 32-bit
> x86 support to be an effective use of its limited resources, and
> thus intends to discontinue it.
> 
> Current users of QEMU on 32-bit x86 hosts should either continue
> using existing releases of QEMU, with the caveat that they will
> no longer get security fixes, or migrate to a 64-bit platform
> which remains capable of running 32-bit guests if needed.
Ack.

> 
> ``qemu-system-i386`` binary removal
> '''''''''''''''''''''''''''''''''''
> 
> The ``qemu-system-x86_64`` binary can be used to run 32-bit guests
> by selecting a 32-bit CPU model, including KVM support on x86_64
> hosts. Once support for the 32-bit x86 host platform is discontinued,
> the ``qemu-system-i386`` binary will be redundant.

Missing "kvm" in this last sentence?  It is otherwise untrue for tcg.


> Current users are
> recommended to reconfigure their systems to use the ``qemu-system-x86_64``
> binary.

Ack.

> Same point for the next patch about 32-bit arm vs qemu-system-arm
> binary.

Ack.


r~
Philippe Mathieu-Daudé Feb. 27, 2023, 10:32 p.m. UTC | #5
On 27/2/23 21:12, Michael S. Tsirkin wrote:
> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>> I feel like we should have separate deprecation entries for the
>> i686 host support, and for qemu-system-i386 emulator binary, as
>> although they're related they are independant features with
>> differing impact. eg removing qemu-system-i386 affects all
>> host architectures, not merely 32-bit x86 host, so I think we
>> can explain the impact more clearly if we separate them.
> 
> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> a superset.

Doesn't qemu-system-i386 start the CPU in a different mode that
qemu-system-x86_64? Last time we discussed it, we mention adding
-32 and -64 CLI flags to maintain compat, and IIRC this flag would
add boot code to switch the CPU in 32-b. But then maybe I misunderstood.
Thomas said, "CPUs must start in the same mode they start in HW".

> Removing support for building on 32 bit systems seems like a pity - it's
> one of a small number of ways to run 64 bit binaries on 32 bit systems,
> and the maintainance overhead is quite small.
> 
> In fact, keeping this support around forces correct use of
> posix APIs such as e.g. PRIx64 which makes the code base
> more future-proof.
>
Thomas Huth Feb. 28, 2023, 7:43 a.m. UTC | #6
On 27/02/2023 23.32, Philippe Mathieu-Daudé wrote:
> On 27/2/23 21:12, Michael S. Tsirkin wrote:
>> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>>> I feel like we should have separate deprecation entries for the
>>> i686 host support, and for qemu-system-i386 emulator binary, as
>>> although they're related they are independant features with
>>> differing impact. eg removing qemu-system-i386 affects all
>>> host architectures, not merely 32-bit x86 host, so I think we
>>> can explain the impact more clearly if we separate them.
>>
>> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
>> a superset.
> 
> Doesn't qemu-system-i386 start the CPU in a different mode that
> qemu-system-x86_64? Last time we discussed it, we mention adding
> -32 and -64 CLI flags to maintain compat, and IIRC this flag would
> add boot code to switch the CPU in 32-b. But then maybe I misunderstood.
> Thomas said, "CPUs must start in the same mode they start in HW".

No, I think you misunderstood something here. x86 CPUs always start in 
16-bit mode, as far as I know, and the firmware / OS then has to switch to 
32-bit or 64-bit mode as desired.

  Thomas
Thomas Huth Feb. 28, 2023, 7:49 a.m. UTC | #7
On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>> I feel like we should have separate deprecation entries for the
>> i686 host support, and for qemu-system-i386 emulator binary, as
>> although they're related they are independant features with
>> differing impact. eg removing qemu-system-i386 affects all
>> host architectures, not merely 32-bit x86 host, so I think we
>> can explain the impact more clearly if we separate them.
> 
> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> a superset.
> 
> Removing support for building on 32 bit systems seems like a pity - it's
> one of a small number of ways to run 64 bit binaries on 32 bit systems,
> and the maintainance overhead is quite small.

Note: We're talking about 32-bit *x86* hosts here. Do you really think that 
someone is still using QEMU usermode emulation
to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!

> In fact, keeping this support around forces correct use of
> posix APIs such as e.g. PRIx64 which makes the code base
> more future-proof.

If you're concerned about PRIx64 and friends: We still continue to do 
compile testing with 32-bit MIPS cross-compilers and Windows 32-bit 
cross-compilers for now. The only thing we'd lose is the 32-bit "make check" 
run in the CI.

  Thomas
Thomas Huth Feb. 28, 2023, 7:52 a.m. UTC | #8
On 27/02/2023 21.25, Richard Henderson wrote:
> On 2/27/23 01:50, Daniel P. Berrangé wrote:
>> On Mon, Feb 27, 2023 at 12:10:49PM +0100, Thomas Huth wrote:
>>> Hardly anybody still uses 32-bit x86 hosts today, so we should
>>> start deprecating them to finally have less test efforts.
>>> With regards to 32-bit KVM support in the x86 Linux kernel,
>>> the developers confirmed that they do not need a recent
>>> qemu-system-i386 binary here:
>>>
>>>   https://lore.kernel.org/kvm/Y%2ffkTs5ajFy0hP1U@google.com/
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>>   docs/about/deprecated.rst | 13 +++++++++++++
>>>   1 file changed, 13 insertions(+)
>>>
>>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>>> index 15084f7bea..98517f5187 100644
>>> --- a/docs/about/deprecated.rst
>>> +++ b/docs/about/deprecated.rst
>>> @@ -196,6 +196,19 @@ CI coverage support may bitrot away before the 
>>> deprecation process
>>>   completes. The little endian variants of MIPS (both 32 and 64 bit) are
>>>   still a supported host architecture.
>>> +32-bit x86 hosts and ``qemu-system-i386`` (since 8.0)
>>> +'''''''''''''''''''''''''''''''''''''''''''''''''''''
>>> +
>>> +Testing 32-bit x86 host OS support takes a lot of precious time during the
>>> +QEMU contiguous integration tests, and considering that most OS vendors
>>> +stopped shipping 32-bit variants of their x86 OS distributions and most
>>> +x86 hardware from the past >10 years is capable of 64-bit, keeping the
>>> +32-bit support alive is an inadequate burden for the QEMU project. Thus
>>> +QEMU will soon drop the support for 32-bit x86 host systems and the
>>> +``qemu-system-i386`` binary. Use ``qemu-system-x86_64`` (which is a proper
>>> +superset of ``qemu-system-i386``) on a 64-bit host machine instead.
>>
>> I feel like we should have separate deprecation entries for the
>> i686 host support, and for qemu-system-i386 emulator binary, as
>> although they're related they are independant features with
>> differing impact.
> 
> Agreed.

OK, fair, I'll rework my patch according to your suggestion, Daniel.

>> 32-bit x86 hosts
>> ''''''''''''''''
>>
>> Support for 32-bit x86 host deployments is increasingly uncommon in
>> mainstream Linux distributions given the widespread availability of
>> 64-bit x86 hardware. The QEMU project no longer considers 32-bit
>> x86 support to be an effective use of its limited resources, and
>> thus intends to discontinue it.
>>
>> Current users of QEMU on 32-bit x86 hosts should either continue
>> using existing releases of QEMU, with the caveat that they will
>> no longer get security fixes, or migrate to a 64-bit platform
>> which remains capable of running 32-bit guests if needed.
> Ack.
> 
>>
>> ``qemu-system-i386`` binary removal
>> '''''''''''''''''''''''''''''''''''
>>
>> The ``qemu-system-x86_64`` binary can be used to run 32-bit guests
>> by selecting a 32-bit CPU model, including KVM support on x86_64
>> hosts. Once support for the 32-bit x86 host platform is discontinued,
>> the ``qemu-system-i386`` binary will be redundant.
> 
> Missing "kvm" in this last sentence?  It is otherwise untrue for tcg.

I assume that Daniel only thought of 32-bit x86 hosts here, but indeed, it's 
untrue for non-x86 32-bit hosts. So this really should refer to KVM on 
32-bit x86 hosts instead. I'll rephrase it in v2.

  Thomas
Michael S. Tsirkin Feb. 28, 2023, 8:19 a.m. UTC | #9
On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
> On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > I feel like we should have separate deprecation entries for the
> > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > although they're related they are independant features with
> > > differing impact. eg removing qemu-system-i386 affects all
> > > host architectures, not merely 32-bit x86 host, so I think we
> > > can explain the impact more clearly if we separate them.
> > 
> > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > a superset.
> > 
> > Removing support for building on 32 bit systems seems like a pity - it's
> > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > and the maintainance overhead is quite small.
> 
> Note: We're talking about 32-bit *x86* hosts here. Do you really think that
> someone is still using QEMU usermode emulation
> to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!

I don't know - why x86 specifically? One can build a 32 bit binary on any host.
I think 32 bit x86 environments are just more common in the cloud.

> > In fact, keeping this support around forces correct use of
> > posix APIs such as e.g. PRIx64 which makes the code base
> > more future-proof.
> 
> If you're concerned about PRIx64 and friends: We still continue to do
> compile testing with 32-bit MIPS cross-compilers and Windows 32-bit
> cross-compilers for now. The only thing we'd lose is the 32-bit "make check"
> run in the CI.
> 
>  Thomas

Yes - fundamentally 32 bit does not seem that different from e.g.
windows builds - we presumably support these but AFAIK CI does not
test these.
Michael S. Tsirkin Feb. 28, 2023, 8:59 a.m. UTC | #10
On Mon, Feb 27, 2023 at 10:21:14AM -1000, Richard Henderson wrote:
> On 2/27/23 10:12, Michael S. Tsirkin wrote:
> > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > I feel like we should have separate deprecation entries for the
> > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > although they're related they are independant features with
> > > differing impact. eg removing qemu-system-i386 affects all
> > > host architectures, not merely 32-bit x86 host, so I think we
> > > can explain the impact more clearly if we separate them.
> > 
> > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > a superset.
> > 
> > Removing support for building on 32 bit systems seems like a pity - it's
> > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > and the maintainance overhead is quite small.
> 
> It's not that small.  It only works for single-threaded system mode.  It
> silently does not honor atomicity for user-only mode, which is perhaps worse
> not working at all.

We should probably block multi-threading on 32 bit then.
Daniel P. Berrangé Feb. 28, 2023, 8:59 a.m. UTC | #11
On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
> On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
> > On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> > > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > > I feel like we should have separate deprecation entries for the
> > > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > > although they're related they are independant features with
> > > > differing impact. eg removing qemu-system-i386 affects all
> > > > host architectures, not merely 32-bit x86 host, so I think we
> > > > can explain the impact more clearly if we separate them.
> > > 
> > > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > > a superset.
> > > 
> > > Removing support for building on 32 bit systems seems like a pity - it's
> > > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > > and the maintainance overhead is quite small.
> > 
> > Note: We're talking about 32-bit *x86* hosts here. Do you really think that
> > someone is still using QEMU usermode emulation
> > to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
> 
> I don't know - why x86 specifically? One can build a 32 bit binary on any host.
> I think 32 bit x86 environments are just more common in the cloud.

Can you point to anything that backs up that assertion. Clouds I've
seen always give you a 64-bit environment, and many OS no longer
even ship 32-bit installable media. I would be surprised if 32-bit
is above very very low single digits usage compared to x86_64.

> > > In fact, keeping this support around forces correct use of
> > > posix APIs such as e.g. PRIx64 which makes the code base
> > > more future-proof.
> > 
> > If you're concerned about PRIx64 and friends: We still continue to do
> > compile testing with 32-bit MIPS cross-compilers and Windows 32-bit
> > cross-compilers for now. The only thing we'd lose is the 32-bit "make check"
> > run in the CI.
> > 
> >  Thomas
> 
> Yes - fundamentally 32 bit does not seem that different from e.g.
> windows builds - we presumably support these but AFAIK CI does not
> test these.

We do compile test windows in CI via mingw, and we also do build
and unit tests via msys.

Even Windows has dropped 32-bit support though, and so the only
reason we keep 32-bit Windows around is because of Windows 10.
Once a Windows 12 comes along, we'll not need to support 32-bit
Windows either.

With regards,
Daniel
Michael S. Tsirkin Feb. 28, 2023, 9 a.m. UTC | #12
On Mon, Feb 27, 2023 at 10:21:14AM -1000, Richard Henderson wrote:
> > Removing support for building on 32 bit systems seems like a pity - it's
> > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > and the maintainance overhead is quite small.
> 
> It's not that small.

Meaning there are lots of ways to run 64 bit binaries on 32 bit systems?
Michael S. Tsirkin Feb. 28, 2023, 9:03 a.m. UTC | #13
On Tue, Feb 28, 2023 at 08:59:52AM +0000, Daniel P. Berrangé wrote:
> On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
> > On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
> > > On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> > > > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > > > I feel like we should have separate deprecation entries for the
> > > > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > > > although they're related they are independant features with
> > > > > differing impact. eg removing qemu-system-i386 affects all
> > > > > host architectures, not merely 32-bit x86 host, so I think we
> > > > > can explain the impact more clearly if we separate them.
> > > > 
> > > > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > > > a superset.
> > > > 
> > > > Removing support for building on 32 bit systems seems like a pity - it's
> > > > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > > > and the maintainance overhead is quite small.
> > > 
> > > Note: We're talking about 32-bit *x86* hosts here. Do you really think that
> > > someone is still using QEMU usermode emulation
> > > to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
> > 
> > I don't know - why x86 specifically? One can build a 32 bit binary on any host.
> > I think 32 bit x86 environments are just more common in the cloud.
> 
> Can you point to anything that backs up that assertion. Clouds I've
> seen always give you a 64-bit environment, and many OS no longer
> even ship 32-bit installable media.


Sorry about being unclear. I meant that it seems easier to run CI in the
cloud in a 32 bit x64 environment than get a 32 bit ARM environment.

> I would be surprised if 32-bit
> is above very very low single digits usage compared to x86_64.

Absolutely.

> > > > In fact, keeping this support around forces correct use of
> > > > posix APIs such as e.g. PRIx64 which makes the code base
> > > > more future-proof.
> > > 
> > > If you're concerned about PRIx64 and friends: We still continue to do
> > > compile testing with 32-bit MIPS cross-compilers and Windows 32-bit
> > > cross-compilers for now. The only thing we'd lose is the 32-bit "make check"
> > > run in the CI.
> > > 
> > >  Thomas
> > 
> > Yes - fundamentally 32 bit does not seem that different from e.g.
> > windows builds - we presumably support these but AFAIK CI does not
> > test these.
> 
> We do compile test windows in CI via mingw, and we also do build
> and unit tests via msys.
> 
> Even Windows has dropped 32-bit support though, and so the only
> reason we keep 32-bit Windows around is because of Windows 10.
> Once a Windows 12 comes along, we'll not need to support 32-bit
> Windows either.
> 
> With regards,
> Daniel

Or maybe we'll just rely on WSL.

> -- 
> |: 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 :|
Thomas Huth Feb. 28, 2023, 9:14 a.m. UTC | #14
On 28/02/2023 10.03, Michael S. Tsirkin wrote:
> On Tue, Feb 28, 2023 at 08:59:52AM +0000, Daniel P. Berrangé wrote:
>> On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
>>> On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
>>>> On 27/02/2023 21.12, Michael S. Tsirkin wrote:
>>>>> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>>>>>> I feel like we should have separate deprecation entries for the
>>>>>> i686 host support, and for qemu-system-i386 emulator binary, as
>>>>>> although they're related they are independant features with
>>>>>> differing impact. eg removing qemu-system-i386 affects all
>>>>>> host architectures, not merely 32-bit x86 host, so I think we
>>>>>> can explain the impact more clearly if we separate them.
>>>>>
>>>>> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
>>>>> a superset.
>>>>>
>>>>> Removing support for building on 32 bit systems seems like a pity - it's
>>>>> one of a small number of ways to run 64 bit binaries on 32 bit systems,
>>>>> and the maintainance overhead is quite small.
>>>>
>>>> Note: We're talking about 32-bit *x86* hosts here. Do you really think that
>>>> someone is still using QEMU usermode emulation
>>>> to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
>>>
>>> I don't know - why x86 specifically? One can build a 32 bit binary on any host.
>>> I think 32 bit x86 environments are just more common in the cloud.
>>
>> Can you point to anything that backs up that assertion. Clouds I've
>> seen always give you a 64-bit environment, and many OS no longer
>> even ship 32-bit installable media.
> 
> Sorry about being unclear. I meant that it seems easier to run CI in the
> cloud in a 32 bit x64 environment than get a 32 bit ARM environment.

It's still doable ... but for how much longer? We're currently depending on 
Fedora, but they also slowly drop more and more support for this 
environment, see e.g.:

  https://www.theregister.com/2022/03/10/fedora_inches_closer_to_dropping/

  Thomas
Daniel P. Berrangé Feb. 28, 2023, 9:40 a.m. UTC | #15
On Tue, Feb 28, 2023 at 10:14:52AM +0100, Thomas Huth wrote:
> On 28/02/2023 10.03, Michael S. Tsirkin wrote:
> > On Tue, Feb 28, 2023 at 08:59:52AM +0000, Daniel P. Berrangé wrote:
> > > On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
> > > > On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
> > > > > On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> > > > > > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > > > > > I feel like we should have separate deprecation entries for the
> > > > > > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > > > > > although they're related they are independant features with
> > > > > > > differing impact. eg removing qemu-system-i386 affects all
> > > > > > > host architectures, not merely 32-bit x86 host, so I think we
> > > > > > > can explain the impact more clearly if we separate them.
> > > > > > 
> > > > > > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > > > > > a superset.
> > > > > > 
> > > > > > Removing support for building on 32 bit systems seems like a pity - it's
> > > > > > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > > > > > and the maintainance overhead is quite small.
> > > > > 
> > > > > Note: We're talking about 32-bit *x86* hosts here. Do you really think that
> > > > > someone is still using QEMU usermode emulation
> > > > > to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
> > > > 
> > > > I don't know - why x86 specifically? One can build a 32 bit binary on any host.
> > > > I think 32 bit x86 environments are just more common in the cloud.
> > > 
> > > Can you point to anything that backs up that assertion. Clouds I've
> > > seen always give you a 64-bit environment, and many OS no longer
> > > even ship 32-bit installable media.
> > 
> > Sorry about being unclear. I meant that it seems easier to run CI in the
> > cloud in a 32 bit x64 environment than get a 32 bit ARM environment.
> 
> It's still doable ... but for how much longer? We're currently depending on
> Fedora, but they also slowly drop more and more support for this
> environment, see e.g.:

FWIW, we should cull our fedora-i386-cross.docker dockerfile and
replace it with a debian i686 dockerfile generated by lcitool.
There's no compelling reason why i686 should be different from
all our other cross builds which are based on Debian. The Debian
lcitool generated container would have access to a wider range
of deps than our hand written Fedora one.

>  https://www.theregister.com/2022/03/10/fedora_inches_closer_to_dropping/

With regards,
Daniel
Michael S. Tsirkin Feb. 28, 2023, 10:11 a.m. UTC | #16
On Tue, Feb 28, 2023 at 09:40:49AM +0000, Daniel P. Berrangé wrote:
> On Tue, Feb 28, 2023 at 10:14:52AM +0100, Thomas Huth wrote:
> > On 28/02/2023 10.03, Michael S. Tsirkin wrote:
> > > On Tue, Feb 28, 2023 at 08:59:52AM +0000, Daniel P. Berrangé wrote:
> > > > On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
> > > > > On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
> > > > > > On 27/02/2023 21.12, Michael S. Tsirkin wrote:
> > > > > > > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
> > > > > > > > I feel like we should have separate deprecation entries for the
> > > > > > > > i686 host support, and for qemu-system-i386 emulator binary, as
> > > > > > > > although they're related they are independant features with
> > > > > > > > differing impact. eg removing qemu-system-i386 affects all
> > > > > > > > host architectures, not merely 32-bit x86 host, so I think we
> > > > > > > > can explain the impact more clearly if we separate them.
> > > > > > > 
> > > > > > > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
> > > > > > > a superset.
> > > > > > > 
> > > > > > > Removing support for building on 32 bit systems seems like a pity - it's
> > > > > > > one of a small number of ways to run 64 bit binaries on 32 bit systems,
> > > > > > > and the maintainance overhead is quite small.
> > > > > > 
> > > > > > Note: We're talking about 32-bit *x86* hosts here. Do you really think that
> > > > > > someone is still using QEMU usermode emulation
> > > > > > to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
> > > > > 
> > > > > I don't know - why x86 specifically? One can build a 32 bit binary on any host.
> > > > > I think 32 bit x86 environments are just more common in the cloud.
> > > > 
> > > > Can you point to anything that backs up that assertion. Clouds I've
> > > > seen always give you a 64-bit environment, and many OS no longer
> > > > even ship 32-bit installable media.
> > > 
> > > Sorry about being unclear. I meant that it seems easier to run CI in the
> > > cloud in a 32 bit x64 environment than get a 32 bit ARM environment.
> > 
> > It's still doable ... but for how much longer? We're currently depending on
> > Fedora, but they also slowly drop more and more support for this
> > environment, see e.g.:
> 
> FWIW, we should cull our fedora-i386-cross.docker dockerfile and
> replace it with a debian i686 dockerfile generated by lcitool.
> There's no compelling reason why i686 should be different from
> all our other cross builds which are based on Debian. The Debian
> lcitool generated container would have access to a wider range
> of deps than our hand written Fedora one.
> 
> >  https://www.theregister.com/2022/03/10/fedora_inches_closer_to_dropping/
> 
> With regards,
> Daniel

... and is closer to where 32 bit is likely to be deployed which is
systems like e.g. raspberry pi os which until recently was only
32 bit.
Markus Armbruster Feb. 28, 2023, 10:39 a.m. UTC | #17
"Michael S. Tsirkin" <mst@redhat.com> writes:

> On Tue, Feb 28, 2023 at 09:40:49AM +0000, Daniel P. Berrangé wrote:
>> On Tue, Feb 28, 2023 at 10:14:52AM +0100, Thomas Huth wrote:
>> > On 28/02/2023 10.03, Michael S. Tsirkin wrote:
>> > > On Tue, Feb 28, 2023 at 08:59:52AM +0000, Daniel P. Berrangé wrote:
>> > > > On Tue, Feb 28, 2023 at 03:19:20AM -0500, Michael S. Tsirkin wrote:
>> > > > > On Tue, Feb 28, 2023 at 08:49:09AM +0100, Thomas Huth wrote:
>> > > > > > On 27/02/2023 21.12, Michael S. Tsirkin wrote:
>> > > > > > > On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>> > > > > > > > I feel like we should have separate deprecation entries for the
>> > > > > > > > i686 host support, and for qemu-system-i386 emulator binary, as
>> > > > > > > > although they're related they are independant features with
>> > > > > > > > differing impact. eg removing qemu-system-i386 affects all
>> > > > > > > > host architectures, not merely 32-bit x86 host, so I think we
>> > > > > > > > can explain the impact more clearly if we separate them.
>> > > > > > > 
>> > > > > > > Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
>> > > > > > > a superset.
>> > > > > > > 
>> > > > > > > Removing support for building on 32 bit systems seems like a pity - it's
>> > > > > > > one of a small number of ways to run 64 bit binaries on 32 bit systems,
>> > > > > > > and the maintainance overhead is quite small.
>> > > > > > 
>> > > > > > Note: We're talking about 32-bit *x86* hosts here. Do you really think that
>> > > > > > someone is still using QEMU usermode emulation
>> > > > > > to run 64-bit binaries on a 32-bit x86 host?? ... If so, I'd be very surprised!
>> > > > > 
>> > > > > I don't know - why x86 specifically? One can build a 32 bit binary on any host.
>> > > > > I think 32 bit x86 environments are just more common in the cloud.
>> > > > 
>> > > > Can you point to anything that backs up that assertion. Clouds I've
>> > > > seen always give you a 64-bit environment, and many OS no longer
>> > > > even ship 32-bit installable media.
>> > > 
>> > > Sorry about being unclear. I meant that it seems easier to run CI in the
>> > > cloud in a 32 bit x64 environment than get a 32 bit ARM environment.
>> > 
>> > It's still doable ... but for how much longer? We're currently depending on
>> > Fedora, but they also slowly drop more and more support for this
>> > environment, see e.g.:
>> 
>> FWIW, we should cull our fedora-i386-cross.docker dockerfile and
>> replace it with a debian i686 dockerfile generated by lcitool.
>> There's no compelling reason why i686 should be different from
>> all our other cross builds which are based on Debian. The Debian
>> lcitool generated container would have access to a wider range
>> of deps than our hand written Fedora one.
>> 
>> >  https://www.theregister.com/2022/03/10/fedora_inches_closer_to_dropping/
>> 
>> With regards,
>> Daniel
>
> ... and is closer to where 32 bit is likely to be deployed which is
> systems like e.g. raspberry pi os which until recently was only
> 32 bit.

32 bit ARM.  How is that an argument for continued maintenance of 32 bit
x86?

If the argument goes like "32 bit x86 is easier to test in CI", then I
don't buy it.  Testing 64 bit ARM + 32 bit x86 does not magically
replace testing 32 bit ARM.

The question to answer: Is 32 bit x86 worth its upkeep?  Two
sub-questions: 1. Is it worth the human attention?  2. Is it worth
(scarce!) CI minutes?

I want to see an argument for benefits justifying the costs.

A benefit like "somebody out there might still want to use it" I'd value
at zero.
Michael S. Tsirkin Feb. 28, 2023, 10:51 a.m. UTC | #18
On Tue, Feb 28, 2023 at 11:39:39AM +0100, Markus Armbruster wrote:
> The question to answer: Is 32 bit x86 worth its upkeep?  Two
> sub-questions: 1. Is it worth the human attention?  2. Is it worth
> (scarce!) CI minutes?

3. Is it worth arguing about?
Thomas Huth Feb. 28, 2023, 11:12 a.m. UTC | #19
On 28/02/2023 11.51, Michael S. Tsirkin wrote:
> On Tue, Feb 28, 2023 at 11:39:39AM +0100, Markus Armbruster wrote:
>> The question to answer: Is 32 bit x86 worth its upkeep?  Two
>> sub-questions: 1. Is it worth the human attention?  2. Is it worth
>> (scarce!) CI minutes?
> 
> 3. Is it worth arguing about?

You are aware of the problems we're currently struggeling with, aren't you? 
Darn, we're having *SEVERE* problems with the CI, the QEMU project ran out 
of CI minutes for the second time this year, and you ask whether it's worth 
arguing about??? You're not serious with this question, are you?

  Thomas
Michael S. Tsirkin Feb. 28, 2023, 11:24 a.m. UTC | #20
On Tue, Feb 28, 2023 at 12:12:22PM +0100, Thomas Huth wrote:
> On 28/02/2023 11.51, Michael S. Tsirkin wrote:
> > On Tue, Feb 28, 2023 at 11:39:39AM +0100, Markus Armbruster wrote:
> > > The question to answer: Is 32 bit x86 worth its upkeep?  Two
> > > sub-questions: 1. Is it worth the human attention?  2. Is it worth
> > > (scarce!) CI minutes?
> > 
> > 3. Is it worth arguing about?
> 
> You are aware of the problems we're currently struggeling with, aren't you?
> Darn, we're having *SEVERE* problems with the CI, the QEMU project ran out
> of CI minutes for the second time this year, and you ask whether it's worth
> arguing about??? You're not serious with this question, are you?
> 
>  Thomas

Yah just couldn't resist. How many minutes do we use per month btw?
Daniel P. Berrangé Feb. 28, 2023, 11:27 a.m. UTC | #21
On Tue, Feb 28, 2023 at 06:24:02AM -0500, Michael S. Tsirkin wrote:
> On Tue, Feb 28, 2023 at 12:12:22PM +0100, Thomas Huth wrote:
> > On 28/02/2023 11.51, Michael S. Tsirkin wrote:
> > > On Tue, Feb 28, 2023 at 11:39:39AM +0100, Markus Armbruster wrote:
> > > > The question to answer: Is 32 bit x86 worth its upkeep?  Two
> > > > sub-questions: 1. Is it worth the human attention?  2. Is it worth
> > > > (scarce!) CI minutes?
> > > 
> > > 3. Is it worth arguing about?
> > 
> > You are aware of the problems we're currently struggeling with, aren't you?
> > Darn, we're having *SEVERE* problems with the CI, the QEMU project ran out
> > of CI minutes for the second time this year, and you ask whether it's worth
> > arguing about??? You're not serious with this question, are you?
> > 
> >  Thomas
> 
> Yah just couldn't resist. How many minutes do we use per month btw?

100,000 wall clock minutes lasted about 2+1/2 weeks this month, and
similar in Jan too. Last year we were managing to get through the
whole month on 100,000, but we got backlogged with merges due to
the xmas / new year shutdown, and catching up is exhausting our
allowance too quickly, as well as natural growth in amount of stuff
we're testing per job.

With regards,
Daniel
Markus Armbruster Feb. 28, 2023, 11:34 a.m. UTC | #22
"Michael S. Tsirkin" <mst@redhat.com> writes:

> On Tue, Feb 28, 2023 at 11:39:39AM +0100, Markus Armbruster wrote:
>> The question to answer: Is 32 bit x86 worth its upkeep?  Two
>> sub-questions: 1. Is it worth the human attention?  2. Is it worth
>> (scarce!) CI minutes?
>
> 3. Is it worth arguing about?

If it's not worth arguing, then we merge Thomas's patch.
Michael S. Tsirkin Feb. 28, 2023, 11:45 a.m. UTC | #23
On Tue, Feb 28, 2023 at 12:34:19PM +0100, Markus Armbruster wrote:
> If it's not worth arguing, then we merge Thomas's patch.

I don't mind but it's just a doc patch isn't it? If what we want to do
is to stop doing make check on a 32 bit container and just to do
make then let's patch the relevant yaml.  I'd ack this, easy.
Philippe Mathieu-Daudé Feb. 28, 2023, 12:26 p.m. UTC | #24
On 28/2/23 09:59, Michael S. Tsirkin wrote:
> On Mon, Feb 27, 2023 at 10:21:14AM -1000, Richard Henderson wrote:
>> On 2/27/23 10:12, Michael S. Tsirkin wrote:
>>> On Mon, Feb 27, 2023 at 11:50:07AM +0000, Daniel P. Berrangé wrote:
>>>> I feel like we should have separate deprecation entries for the
>>>> i686 host support, and for qemu-system-i386 emulator binary, as
>>>> although they're related they are independant features with
>>>> differing impact. eg removing qemu-system-i386 affects all
>>>> host architectures, not merely 32-bit x86 host, so I think we
>>>> can explain the impact more clearly if we separate them.
>>>
>>> Removing qemu-system-i386 seems ok to me - I think qemu-system-x86_64 is
>>> a superset.
>>>
>>> Removing support for building on 32 bit systems seems like a pity - it's
>>> one of a small number of ways to run 64 bit binaries on 32 bit systems,
>>> and the maintainance overhead is quite small.
>>
>> It's not that small.  It only works for single-threaded system mode.  It
>> silently does not honor atomicity for user-only mode, which is perhaps worse
>> not working at all.

Will the same occur with 64-bit hosts when we introduce a 128-bit 
target? If so, there is no much code we'll be able to drop,

> We should probably block multi-threading on 32 bit then.

so this sound a user experience fix.
Richard Henderson Feb. 28, 2023, 4:57 p.m. UTC | #25
On 2/27/23 23:00, Michael S. Tsirkin wrote:
> On Mon, Feb 27, 2023 at 10:21:14AM -1000, Richard Henderson wrote:
>>> Removing support for building on 32 bit systems seems like a pity - it's
>>> one of a small number of ways to run 64 bit binaries on 32 bit systems,
>>> and the maintainance overhead is quite small.
>>
>> It's not that small.
> 
> Meaning there are lots of ways to run 64 bit binaries on 32 bit systems?

No, meaning the maint overhead is large.


r~
diff mbox series

Patch

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 15084f7bea..98517f5187 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -196,6 +196,19 @@  CI coverage support may bitrot away before the deprecation process
 completes. The little endian variants of MIPS (both 32 and 64 bit) are
 still a supported host architecture.
 
+32-bit x86 hosts and ``qemu-system-i386`` (since 8.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+Testing 32-bit x86 host OS support takes a lot of precious time during the
+QEMU contiguous integration tests, and considering that most OS vendors
+stopped shipping 32-bit variants of their x86 OS distributions and most
+x86 hardware from the past >10 years is capable of 64-bit, keeping the
+32-bit support alive is an inadequate burden for the QEMU project. Thus
+QEMU will soon drop the support for 32-bit x86 host systems and the
+``qemu-system-i386`` binary. Use ``qemu-system-x86_64`` (which is a proper
+superset of ``qemu-system-i386``) on a 64-bit host machine instead.
+
+
 QEMU API (QAPI) events
 ----------------------