mbox series

[v2,0/6] Deprecate support for 32-bit x86 and arm hosts

Message ID 20230302163106.465559-1-thuth@redhat.com (mailing list archive)
Headers show
Series Deprecate support for 32-bit x86 and arm hosts | expand

Message

Thomas Huth March 2, 2023, 4:31 p.m. UTC
We're struggling quite badly with our CI minutes on the shared
gitlab runners, so we urgently need to think of ways to cut down
our supported build and target environments. qemu-system-i386 and
qemu-system-arm are not really required anymore, since nobody uses
KVM on the corresponding systems for production anymore, and the
-x86_64 and -arch64 variants are a proper superset of those binaries.
So it's time to deprecate them and the corresponding 32-bit host
environments now.

This is a follow-up patch series from the previous discussion here:

 https://lore.kernel.org/qemu-devel/20230130114428.1297295-1-thuth@redhat.com/

where people still mentioned that there is still interest in certain
support for 32-bit host hardware. But as far as I could see, there is
no real need for 32-bit x86 host support and for system emulation on
32-bit arm hosts anymore, so it should be fine if we drop these host
environments soon (these are also the two architectures that contribute
the most to the long test times in our CI, so we would benefit a lot by
dropping those).

v2:
- Split binary and host deprecation into separate patches
- Added patches to immediately drop the jobs from the CI

Thomas Huth (6):
  docs/about/deprecated: Deprecate the qemu-system-i386 binary
  docs/about/deprecated: Deprecate 32-bit x86 hosts
  gitlab-ci.d/crossbuilds: Drop the i386 jobs
  docs/about/deprecated: Deprecate the qemu-system-arm binary
  docs/about/deprecated: Deprecate 32-bit arm hosts
  gitlab-ci.d/crossbuilds: Drop the 32-bit arm system emulation jobs

 docs/about/deprecated.rst    | 43 ++++++++++++++++++++++++++++++++++++
 .gitlab-ci.d/crossbuilds.yml | 30 -------------------------
 2 files changed, 43 insertions(+), 30 deletions(-)

Comments

Philippe Mathieu-Daudé March 2, 2023, 10:07 p.m. UTC | #1
On 2/3/23 17:31, Thomas Huth wrote:
> We're struggling quite badly with our CI minutes on the shared
> gitlab runners, so we urgently need to think of ways to cut down
> our supported build and target environments. qemu-system-i386 and
> qemu-system-arm are not really required anymore, since nobody uses
> KVM on the corresponding systems for production anymore, and the
> -x86_64 and -arch64 variants are a proper superset of those binaries.
> So it's time to deprecate them and the corresponding 32-bit host
> environments now.
> 
> This is a follow-up patch series from the previous discussion here:
> 
>   https://lore.kernel.org/qemu-devel/20230130114428.1297295-1-thuth@redhat.com/
> 
> where people still mentioned that there is still interest in certain
> support for 32-bit host hardware. But as far as I could see, there is
> no real need for 32-bit x86 host support and for system emulation on
> 32-bit arm hosts anymore, so it should be fine if we drop these host
> environments soon (these are also the two architectures that contribute
> the most to the long test times in our CI, so we would benefit a lot by
> dropping those).

It is not clear from your cover that the deprecation only concern system
emulation on these hosts, not user emulation.

I wonder about tools. Apparently they depend on sysemu now. I was
building a 'configure --enable-tools --disable-system' but now it
is empty.
Thomas Huth March 3, 2023, 9:48 a.m. UTC | #2
On 02/03/2023 23.07, Philippe Mathieu-Daudé wrote:
> On 2/3/23 17:31, Thomas Huth wrote:
>> We're struggling quite badly with our CI minutes on the shared
>> gitlab runners, so we urgently need to think of ways to cut down
>> our supported build and target environments. qemu-system-i386 and
>> qemu-system-arm are not really required anymore, since nobody uses
>> KVM on the corresponding systems for production anymore, and the
>> -x86_64 and -arch64 variants are a proper superset of those binaries.
>> So it's time to deprecate them and the corresponding 32-bit host
>> environments now.
>>
>> This is a follow-up patch series from the previous discussion here:
>>
>>   
>> https://lore.kernel.org/qemu-devel/20230130114428.1297295-1-thuth@redhat.com/
>>
>> where people still mentioned that there is still interest in certain
>> support for 32-bit host hardware. But as far as I could see, there is
>> no real need for 32-bit x86 host support and for system emulation on
>> 32-bit arm hosts anymore, so it should be fine if we drop these host
>> environments soon (these are also the two architectures that contribute
>> the most to the long test times in our CI, so we would benefit a lot by
>> dropping those).
> 
> It is not clear from your cover that the deprecation only concern system
> emulation on these hosts, not user emulation.

x86 ==> deprecate both, user and system emulation support on
         32-bit hosts
arm ==> deprecate only system emulation on 32-bit hosts.

I tried to say it with the sentence "there is no real need for 32-bit x86 
host support and for system emulation on 32-bit arm hosts anymore, so it 
should be fine if we drop these host  environments soon" ... not sure why 
it's unclear, but if you have some better sentences, I'm open for suggestions.

> I wonder about tools. Apparently they depend on sysemu now. I was
> building a 'configure --enable-tools --disable-system' but now it
> is empty.

I just did a try in a fresh build directory, and for me it was working: it 
builds qemu-img, qemu-io, qemu-edid etc. just fine.

What was missing in your case?

  Thomas
John Paul Adrian Glaubitz March 3, 2023, 11:09 a.m. UTC | #3
Hello!

On Fri, 2023-03-03 at 10:48 +0100, Thomas Huth wrote:
> x86 ==> deprecate both, user and system emulation support on
>          32-bit hosts
> arm ==> deprecate only system emulation on 32-bit hosts.

I would recommend against dropping support for 32-bit hosts for qemu-user
as there are some cases where the emulation of 32-bit user code on 64-bit
hosts does not work properly [1].

Adrian

> [1] https://sourceware.org/bugzilla/show_bug.cgi?id=23960
Thomas Huth March 3, 2023, 11:22 a.m. UTC | #4
On 03/03/2023 12.09, John Paul Adrian Glaubitz wrote:
> Hello!
> 
> On Fri, 2023-03-03 at 10:48 +0100, Thomas Huth wrote:
>> x86 ==> deprecate both, user and system emulation support on
>>           32-bit hosts
>> arm ==> deprecate only system emulation on 32-bit hosts.
> 
> I would recommend against dropping support for 32-bit hosts for qemu-user
> as there are some cases where the emulation of 32-bit user code on 64-bit
> hosts does not work properly [1].
> 
> Adrian
> 
>> [1] https://sourceware.org/bugzilla/show_bug.cgi?id=23960

The ticket is very long and hard to read, but ... oh my, does that mean you 
need to compile qemu-user in 32-bit mode on a 64-bit x86 host to properly 
run 32-bit binaries from other architectures? ... uh, that's ugly ... and 
sounds like bug in QEMU's user mode emulation ... and what if you're running 
a distro (or different 64-bit host architecutre) that does not support 
32-bit userspace libraries anymore? Then you're lost?

  Thomas
Peter Maydell March 3, 2023, 11:24 a.m. UTC | #5
On Fri, 3 Mar 2023 at 11:09, John Paul Adrian Glaubitz
<glaubitz@physik.fu-berlin.de> wrote:
>
> Hello!
>
> On Fri, 2023-03-03 at 10:48 +0100, Thomas Huth wrote:
> > x86 ==> deprecate both, user and system emulation support on
> >          32-bit hosts
> > arm ==> deprecate only system emulation on 32-bit hosts.
>
> I would recommend against dropping support for 32-bit hosts for qemu-user
> as there are some cases where the emulation of 32-bit user code on 64-bit
> hosts does not work properly [1].
>
> Adrian
>
> > [1] https://sourceware.org/bugzilla/show_bug.cgi?id=23960

I failed entirely to get any traction with persuading the
kernel folks to provide an API to let QEMU work in that
"32-bit guest wants a 32-bit dirent but the kernel is
providing a 64-bit hash value as a dirent" case. Somebody kindly
wrote some kernel patches but they went absolutely nowhere.

It seems to only happen for certain kinds of 32-bit guest, where
the guest libc is not also using 64-bit dirents. So at least as
far as Arm guests are concerned the effective result was "the
older arm binaries that were built to need a 32-bit dirent are
just not around any more, so very few people run into the problem".
You can also work around it by using a different host filesystem
type, I think.

thanks
-- PMM
John Paul Adrian Glaubitz March 3, 2023, 11:57 a.m. UTC | #6
Hi Thomas!

On Fri, 2023-03-03 at 12:22 +0100, Thomas Huth wrote:
> The ticket is very long and hard to read, but ... oh my, does that mean you 
> need to compile qemu-user in 32-bit mode on a 64-bit x86 host to properly 
> run 32-bit binaries from other architectures? ... uh, that's ugly ... and 
> sounds like bug in QEMU's user mode emulation ... and what if you're running 
> a distro (or different 64-bit host architecutre) that does not support 
> 32-bit userspace libraries anymore? Then you're lost?

Perhaps the explanation here by Florian Weimer is a bit easier to understand:

> https://lore.kernel.org/lkml/87bm56vqg4.fsf@mid.deneb.enyo.de/

Adrian