mbox series

[v2,00/14] meson: Deprecate 32-bit host support

Message ID 20250203031821.741477-1-richard.henderson@linaro.org
Headers show
Series meson: Deprecate 32-bit host support | expand

Message

Richard Henderson Feb. 3, 2025, 3:18 a.m. UTC
v1: 20250128004254.33442-1-richard.henderson@linaro.org

For v2, immediately disable 64-on-32 TCG.

I *suspect* that we should disable 64-on-32 for *all* accelerators.
The idea that an i686 binary on an x86_64 host may be used to spawn
an x86_64 guest via kvm is silly and a bit more than niche.
Similarly for mips32 spawning mips64 and ppc32 spawning ppc64.

But in the meantime, jump through a couple of hoops to keep these
kvm and xen cases building, while disabling tcg in the same binaries.


Richard Henderson (14):
  meson: Drop tcg as a module
  tcg: Move stubs in tcg/perf.h to tcg/perf-stubs.c
  plugins: Uninline qemu_plugin_add_opts
  meson: Introduce CONFIG_TCG_TARGET
  tcg: Link only when required in system mode
  plugins: Link only when required in system mode
  accel/stubs: Expand stubs for TCG
  target/mips: Protect objects with CONFIG_TCG
  gitlab: Replace aarch64 with arm in cross-i686-tci build
  configure: Define TARGET_LONG_BITS in configs/targets/*.mak
  target/*: Remove TARGET_LONG_BITS from cpu-param.h
  meson: Disallow 64-bit on 32-bit TCG emulation
  meson: Deprecate 32-bit host support
  tcg: Remove TCG_OVERSIZED_GUEST

 include/qemu/atomic.h                       | 18 ++------
 include/qemu/osdep.h                        |  7 +++
 include/qemu/plugin.h                       |  9 +---
 include/tcg/oversized-guest.h               | 23 ----------
 include/tcg/perf.h                          | 23 ----------
 target/alpha/cpu-param.h                    |  2 -
 target/arm/cpu-param.h                      |  2 -
 target/avr/cpu-param.h                      |  1 -
 target/hexagon/cpu-param.h                  |  1 -
 target/hppa/cpu-param.h                     |  2 -
 target/i386/cpu-param.h                     |  2 -
 target/loongarch/cpu-param.h                |  1 -
 target/m68k/cpu-param.h                     |  1 -
 target/microblaze/cpu-param.h               |  2 -
 target/mips/cpu-param.h                     |  5 ---
 target/openrisc/cpu-param.h                 |  1 -
 target/ppc/cpu-param.h                      |  2 -
 target/riscv/cpu-param.h                    |  2 -
 target/rx/cpu-param.h                       |  1 -
 target/s390x/cpu-param.h                    |  1 -
 target/sh4/cpu-param.h                      |  1 -
 target/sparc/cpu-param.h                    |  2 -
 target/tricore/cpu-param.h                  |  1 -
 target/xtensa/cpu-param.h                   |  1 -
 accel/stubs/tcg-stub.c                      | 24 ++++++++++
 accel/tcg/cputlb.c                          |  7 ---
 accel/tcg/tcg-all.c                         |  9 ++--
 plugins/loader.c                            |  7 ++-
 plugins/stubs.c                             | 49 +++++++++++++++++++++
 target/arm/ptw.c                            | 34 --------------
 target/riscv/cpu_helper.c                   | 13 +-----
 tcg/perf-stubs.c                            | 26 +++++++++++
 .gitlab-ci.d/crossbuilds.yml                |  2 +-
 accel/tcg/meson.build                       | 11 ++---
 configs/targets/aarch64-bsd-user.mak        |  1 +
 configs/targets/aarch64-linux-user.mak      |  1 +
 configs/targets/aarch64-softmmu.mak         |  1 +
 configs/targets/aarch64_be-linux-user.mak   |  1 +
 configs/targets/alpha-linux-user.mak        |  1 +
 configs/targets/alpha-softmmu.mak           |  1 +
 configs/targets/arm-bsd-user.mak            |  1 +
 configs/targets/arm-linux-user.mak          |  1 +
 configs/targets/arm-softmmu.mak             |  1 +
 configs/targets/armeb-linux-user.mak        |  1 +
 configs/targets/avr-softmmu.mak             |  1 +
 configs/targets/hexagon-linux-user.mak      |  1 +
 configs/targets/hppa-linux-user.mak         |  2 +
 configs/targets/hppa-softmmu.mak            |  1 +
 configs/targets/i386-bsd-user.mak           |  1 +
 configs/targets/i386-linux-user.mak         |  1 +
 configs/targets/i386-softmmu.mak            |  1 +
 configs/targets/loongarch64-linux-user.mak  |  1 +
 configs/targets/loongarch64-softmmu.mak     |  1 +
 configs/targets/m68k-linux-user.mak         |  1 +
 configs/targets/m68k-softmmu.mak            |  1 +
 configs/targets/microblaze-linux-user.mak   |  1 +
 configs/targets/microblaze-softmmu.mak      |  3 ++
 configs/targets/microblazeel-linux-user.mak |  1 +
 configs/targets/microblazeel-softmmu.mak    |  3 ++
 configs/targets/mips-linux-user.mak         |  1 +
 configs/targets/mips-softmmu.mak            |  1 +
 configs/targets/mips64-linux-user.mak       |  1 +
 configs/targets/mips64-softmmu.mak          |  1 +
 configs/targets/mips64el-linux-user.mak     |  1 +
 configs/targets/mips64el-softmmu.mak        |  1 +
 configs/targets/mipsel-linux-user.mak       |  1 +
 configs/targets/mipsel-softmmu.mak          |  1 +
 configs/targets/mipsn32-linux-user.mak      |  1 +
 configs/targets/mipsn32el-linux-user.mak    |  1 +
 configs/targets/or1k-linux-user.mak         |  1 +
 configs/targets/or1k-softmmu.mak            |  1 +
 configs/targets/ppc-linux-user.mak          |  1 +
 configs/targets/ppc-softmmu.mak             |  1 +
 configs/targets/ppc64-linux-user.mak        |  1 +
 configs/targets/ppc64-softmmu.mak           |  1 +
 configs/targets/ppc64le-linux-user.mak      |  1 +
 configs/targets/riscv32-linux-user.mak      |  1 +
 configs/targets/riscv32-softmmu.mak         |  1 +
 configs/targets/riscv64-bsd-user.mak        |  1 +
 configs/targets/riscv64-linux-user.mak      |  1 +
 configs/targets/riscv64-softmmu.mak         |  1 +
 configs/targets/rx-softmmu.mak              |  1 +
 configs/targets/s390x-linux-user.mak        |  1 +
 configs/targets/s390x-softmmu.mak           |  1 +
 configs/targets/sh4-linux-user.mak          |  1 +
 configs/targets/sh4-softmmu.mak             |  1 +
 configs/targets/sh4eb-linux-user.mak        |  1 +
 configs/targets/sh4eb-softmmu.mak           |  1 +
 configs/targets/sparc-linux-user.mak        |  1 +
 configs/targets/sparc-softmmu.mak           |  1 +
 configs/targets/sparc32plus-linux-user.mak  |  1 +
 configs/targets/sparc64-linux-user.mak      |  1 +
 configs/targets/sparc64-softmmu.mak         |  1 +
 configs/targets/tricore-softmmu.mak         |  1 +
 configs/targets/x86_64-bsd-user.mak         |  1 +
 configs/targets/x86_64-linux-user.mak       |  1 +
 configs/targets/x86_64-softmmu.mak          |  1 +
 configs/targets/xtensa-linux-user.mak       |  1 +
 configs/targets/xtensa-softmmu.mak          |  1 +
 configs/targets/xtensaeb-linux-user.mak     |  1 +
 configs/targets/xtensaeb-softmmu.mak        |  1 +
 docs/about/deprecated.rst                   |  7 +++
 docs/devel/multi-thread-tcg.rst             |  1 -
 meson.build                                 | 47 +++++++++-----------
 plugins/meson.build                         |  5 ++-
 target/mips/tcg/meson.build                 |  4 +-
 target/mips/tcg/system/meson.build          |  6 +--
 tcg/meson.build                             |  8 +++-
 108 files changed, 241 insertions(+), 202 deletions(-)
 delete mode 100644 include/tcg/oversized-guest.h
 create mode 100644 plugins/stubs.c
 create mode 100644 tcg/perf-stubs.c

Comments

Paolo Bonzini Feb. 3, 2025, 12:54 p.m. UTC | #1
On 2/3/25 04:18, Richard Henderson wrote:
> v1: 20250128004254.33442-1-richard.henderson@linaro.org
> 
> For v2, immediately disable 64-on-32 TCG.
> 
> I *suspect* that we should disable 64-on-32 for *all* accelerators.
> The idea that an i686 binary on an x86_64 host may be used to spawn
> an x86_64 guest via kvm is silly and a bit more than niche.

At least Xen used to be commonly used with 32-bit dom0, because it saved 
memory and dom0 would map in guest buffers as needed.  I'm not sure how 
common that is these days, perhaps Stefano knows.

For KVM however I don't think anyone cares.

Paolo

> Similarly for mips32 spawning mips64 and ppc32 spawning ppc64.
> 
> But in the meantime, jump through a couple of hoops to keep these
> kvm and xen cases building, while disabling tcg in the same binaries.
> 
> 
> Richard Henderson (14):
>    meson: Drop tcg as a module
>    tcg: Move stubs in tcg/perf.h to tcg/perf-stubs.c
>    plugins: Uninline qemu_plugin_add_opts
>    meson: Introduce CONFIG_TCG_TARGET
>    tcg: Link only when required in system mode
>    plugins: Link only when required in system mode
>    accel/stubs: Expand stubs for TCG
>    target/mips: Protect objects with CONFIG_TCG
>    gitlab: Replace aarch64 with arm in cross-i686-tci build
>    configure: Define TARGET_LONG_BITS in configs/targets/*.mak
>    target/*: Remove TARGET_LONG_BITS from cpu-param.h
>    meson: Disallow 64-bit on 32-bit TCG emulation
>    meson: Deprecate 32-bit host support
>    tcg: Remove TCG_OVERSIZED_GUEST
> 
>   include/qemu/atomic.h                       | 18 ++------
>   include/qemu/osdep.h                        |  7 +++
>   include/qemu/plugin.h                       |  9 +---
>   include/tcg/oversized-guest.h               | 23 ----------
>   include/tcg/perf.h                          | 23 ----------
>   target/alpha/cpu-param.h                    |  2 -
>   target/arm/cpu-param.h                      |  2 -
>   target/avr/cpu-param.h                      |  1 -
>   target/hexagon/cpu-param.h                  |  1 -
>   target/hppa/cpu-param.h                     |  2 -
>   target/i386/cpu-param.h                     |  2 -
>   target/loongarch/cpu-param.h                |  1 -
>   target/m68k/cpu-param.h                     |  1 -
>   target/microblaze/cpu-param.h               |  2 -
>   target/mips/cpu-param.h                     |  5 ---
>   target/openrisc/cpu-param.h                 |  1 -
>   target/ppc/cpu-param.h                      |  2 -
>   target/riscv/cpu-param.h                    |  2 -
>   target/rx/cpu-param.h                       |  1 -
>   target/s390x/cpu-param.h                    |  1 -
>   target/sh4/cpu-param.h                      |  1 -
>   target/sparc/cpu-param.h                    |  2 -
>   target/tricore/cpu-param.h                  |  1 -
>   target/xtensa/cpu-param.h                   |  1 -
>   accel/stubs/tcg-stub.c                      | 24 ++++++++++
>   accel/tcg/cputlb.c                          |  7 ---
>   accel/tcg/tcg-all.c                         |  9 ++--
>   plugins/loader.c                            |  7 ++-
>   plugins/stubs.c                             | 49 +++++++++++++++++++++
>   target/arm/ptw.c                            | 34 --------------
>   target/riscv/cpu_helper.c                   | 13 +-----
>   tcg/perf-stubs.c                            | 26 +++++++++++
>   .gitlab-ci.d/crossbuilds.yml                |  2 +-
>   accel/tcg/meson.build                       | 11 ++---
>   configs/targets/aarch64-bsd-user.mak        |  1 +
>   configs/targets/aarch64-linux-user.mak      |  1 +
>   configs/targets/aarch64-softmmu.mak         |  1 +
>   configs/targets/aarch64_be-linux-user.mak   |  1 +
>   configs/targets/alpha-linux-user.mak        |  1 +
>   configs/targets/alpha-softmmu.mak           |  1 +
>   configs/targets/arm-bsd-user.mak            |  1 +
>   configs/targets/arm-linux-user.mak          |  1 +
>   configs/targets/arm-softmmu.mak             |  1 +
>   configs/targets/armeb-linux-user.mak        |  1 +
>   configs/targets/avr-softmmu.mak             |  1 +
>   configs/targets/hexagon-linux-user.mak      |  1 +
>   configs/targets/hppa-linux-user.mak         |  2 +
>   configs/targets/hppa-softmmu.mak            |  1 +
>   configs/targets/i386-bsd-user.mak           |  1 +
>   configs/targets/i386-linux-user.mak         |  1 +
>   configs/targets/i386-softmmu.mak            |  1 +
>   configs/targets/loongarch64-linux-user.mak  |  1 +
>   configs/targets/loongarch64-softmmu.mak     |  1 +
>   configs/targets/m68k-linux-user.mak         |  1 +
>   configs/targets/m68k-softmmu.mak            |  1 +
>   configs/targets/microblaze-linux-user.mak   |  1 +
>   configs/targets/microblaze-softmmu.mak      |  3 ++
>   configs/targets/microblazeel-linux-user.mak |  1 +
>   configs/targets/microblazeel-softmmu.mak    |  3 ++
>   configs/targets/mips-linux-user.mak         |  1 +
>   configs/targets/mips-softmmu.mak            |  1 +
>   configs/targets/mips64-linux-user.mak       |  1 +
>   configs/targets/mips64-softmmu.mak          |  1 +
>   configs/targets/mips64el-linux-user.mak     |  1 +
>   configs/targets/mips64el-softmmu.mak        |  1 +
>   configs/targets/mipsel-linux-user.mak       |  1 +
>   configs/targets/mipsel-softmmu.mak          |  1 +
>   configs/targets/mipsn32-linux-user.mak      |  1 +
>   configs/targets/mipsn32el-linux-user.mak    |  1 +
>   configs/targets/or1k-linux-user.mak         |  1 +
>   configs/targets/or1k-softmmu.mak            |  1 +
>   configs/targets/ppc-linux-user.mak          |  1 +
>   configs/targets/ppc-softmmu.mak             |  1 +
>   configs/targets/ppc64-linux-user.mak        |  1 +
>   configs/targets/ppc64-softmmu.mak           |  1 +
>   configs/targets/ppc64le-linux-user.mak      |  1 +
>   configs/targets/riscv32-linux-user.mak      |  1 +
>   configs/targets/riscv32-softmmu.mak         |  1 +
>   configs/targets/riscv64-bsd-user.mak        |  1 +
>   configs/targets/riscv64-linux-user.mak      |  1 +
>   configs/targets/riscv64-softmmu.mak         |  1 +
>   configs/targets/rx-softmmu.mak              |  1 +
>   configs/targets/s390x-linux-user.mak        |  1 +
>   configs/targets/s390x-softmmu.mak           |  1 +
>   configs/targets/sh4-linux-user.mak          |  1 +
>   configs/targets/sh4-softmmu.mak             |  1 +
>   configs/targets/sh4eb-linux-user.mak        |  1 +
>   configs/targets/sh4eb-softmmu.mak           |  1 +
>   configs/targets/sparc-linux-user.mak        |  1 +
>   configs/targets/sparc-softmmu.mak           |  1 +
>   configs/targets/sparc32plus-linux-user.mak  |  1 +
>   configs/targets/sparc64-linux-user.mak      |  1 +
>   configs/targets/sparc64-softmmu.mak         |  1 +
>   configs/targets/tricore-softmmu.mak         |  1 +
>   configs/targets/x86_64-bsd-user.mak         |  1 +
>   configs/targets/x86_64-linux-user.mak       |  1 +
>   configs/targets/x86_64-softmmu.mak          |  1 +
>   configs/targets/xtensa-linux-user.mak       |  1 +
>   configs/targets/xtensa-softmmu.mak          |  1 +
>   configs/targets/xtensaeb-linux-user.mak     |  1 +
>   configs/targets/xtensaeb-softmmu.mak        |  1 +
>   docs/about/deprecated.rst                   |  7 +++
>   docs/devel/multi-thread-tcg.rst             |  1 -
>   meson.build                                 | 47 +++++++++-----------
>   plugins/meson.build                         |  5 ++-
>   target/mips/tcg/meson.build                 |  4 +-
>   target/mips/tcg/system/meson.build          |  6 +--
>   tcg/meson.build                             |  8 +++-
>   108 files changed, 241 insertions(+), 202 deletions(-)
>   delete mode 100644 include/tcg/oversized-guest.h
>   create mode 100644 plugins/stubs.c
>   create mode 100644 tcg/perf-stubs.c
>
Richard Henderson Feb. 3, 2025, 9:55 p.m. UTC | #2
On 2/3/25 04:54, Paolo Bonzini wrote:
> On 2/3/25 04:18, Richard Henderson wrote:
>> v1: 20250128004254.33442-1-richard.henderson@linaro.org
>>
>> For v2, immediately disable 64-on-32 TCG.
>>
>> I *suspect* that we should disable 64-on-32 for *all* accelerators.
>> The idea that an i686 binary on an x86_64 host may be used to spawn
>> an x86_64 guest via kvm is silly and a bit more than niche.
> 
> At least Xen used to be commonly used with 32-bit dom0, because it saved memory and dom0 
> would map in guest buffers as needed.  I'm not sure how common that is these days, perhaps 
> Stefano knows.

As a data-point, debian does not ship libxen-dev for i686.
We cannot build-test this configuration at all.

I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's unclear 
whether x86_64-softmmu and aarch64-softmmu are relevant or useful for an armhf host, or as 
an armhf binary running on an aarch64 host.


r~
Stefano Stabellini Feb. 3, 2025, 10:43 p.m. UTC | #3
+Xen maintainers


On Mon, 3 Feb 2025, Richard Henderson wrote:
> On 2/3/25 04:54, Paolo Bonzini wrote:
> > On 2/3/25 04:18, Richard Henderson wrote:
> > > v1: 20250128004254.33442-1-richard.henderson@linaro.org
> > > 
> > > For v2, immediately disable 64-on-32 TCG.
> > > 
> > > I *suspect* that we should disable 64-on-32 for *all* accelerators.
> > > The idea that an i686 binary on an x86_64 host may be used to spawn
> > > an x86_64 guest via kvm is silly and a bit more than niche.
> > 
> > At least Xen used to be commonly used with 32-bit dom0, because it saved
> > memory and dom0 would map in guest buffers as needed.  I'm not sure how
> > common that is these days, perhaps Stefano knows.
> 
> As a data-point, debian does not ship libxen-dev for i686.
> We cannot build-test this configuration at all.
> 
> I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's
> unclear whether x86_64-softmmu and aarch64-softmmu are relevant or useful for
> an armhf host, or as an armhf binary running on an aarch64 host.


On the Xen side, there are two different use cases: x86 32-bit and ARM
32-bit.  

For x86 32-bit, while it was a very important use case in the past, I
believe it is far less so now. I will let the x86 maintainers comment on
how important it is today. 

For ARM 32-bit, I do not think we ever had many deployments, as most are
64-bit. Even when there are deployments, they do not typically use QEMU,
as QEMU is less important for Xen on ARM compared to x86. Therefore, I
would not block your cleanup and deprecation because of that. I will let
the other ARM maintainers chime in.
Daniel P. Berrangé Feb. 4, 2025, 8:12 a.m. UTC | #4
On Mon, Feb 03, 2025 at 02:43:05PM -0800, Stefano Stabellini wrote:
> +Xen maintainers
> 
> 
> On Mon, 3 Feb 2025, Richard Henderson wrote:
> > On 2/3/25 04:54, Paolo Bonzini wrote:
> > > On 2/3/25 04:18, Richard Henderson wrote:
> > > > v1: 20250128004254.33442-1-richard.henderson@linaro.org
> > > > 
> > > > For v2, immediately disable 64-on-32 TCG.
> > > > 
> > > > I *suspect* that we should disable 64-on-32 for *all* accelerators.
> > > > The idea that an i686 binary on an x86_64 host may be used to spawn
> > > > an x86_64 guest via kvm is silly and a bit more than niche.
> > > 
> > > At least Xen used to be commonly used with 32-bit dom0, because it saved
> > > memory and dom0 would map in guest buffers as needed.  I'm not sure how
> > > common that is these days, perhaps Stefano knows.
> > 
> > As a data-point, debian does not ship libxen-dev for i686.
> > We cannot build-test this configuration at all.
> > 
> > I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's
> > unclear whether x86_64-softmmu and aarch64-softmmu are relevant or useful for
> > an armhf host, or as an armhf binary running on an aarch64 host.
> 
> 
> On the Xen side, there are two different use cases: x86 32-bit and ARM
> 32-bit.  
> 
> For x86 32-bit, while it was a very important use case in the past, I
> believe it is far less so now. I will let the x86 maintainers comment on
> how important it is today.

If the Xen project needs an excuse to justify stopping 32-bit host
support, QEMU would be happy to act as the excuse :-)

With regards,
Daniel
Juergen Gross Feb. 4, 2025, 8:19 a.m. UTC | #5
On 03.02.25 23:43, Stefano Stabellini wrote:
> +Xen maintainers
> 
> 
> On Mon, 3 Feb 2025, Richard Henderson wrote:
>> On 2/3/25 04:54, Paolo Bonzini wrote:
>>> On 2/3/25 04:18, Richard Henderson wrote:
>>>> v1: 20250128004254.33442-1-richard.henderson@linaro.org
>>>>
>>>> For v2, immediately disable 64-on-32 TCG.
>>>>
>>>> I *suspect* that we should disable 64-on-32 for *all* accelerators.
>>>> The idea that an i686 binary on an x86_64 host may be used to spawn
>>>> an x86_64 guest via kvm is silly and a bit more than niche.
>>>
>>> At least Xen used to be commonly used with 32-bit dom0, because it saved
>>> memory and dom0 would map in guest buffers as needed.  I'm not sure how
>>> common that is these days, perhaps Stefano knows.
>>
>> As a data-point, debian does not ship libxen-dev for i686.
>> We cannot build-test this configuration at all.
>>
>> I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's
>> unclear whether x86_64-softmmu and aarch64-softmmu are relevant or useful for
>> an armhf host, or as an armhf binary running on an aarch64 host.
> 
> 
> On the Xen side, there are two different use cases: x86 32-bit and ARM
> 32-bit.
> 
> For x86 32-bit, while it was a very important use case in the past, I
> believe it is far less so now. I will let the x86 maintainers comment on
> how important it is today.

As dom0 on x86 is a PV guest per default and Linux doesn't support running as a
32-bit PV guest since a few years now, I guess there is no need to support qemu
as 32-bit on x86 for Xen.


Juergen
Jan Beulich Feb. 4, 2025, 9:11 a.m. UTC | #6
On 04.02.2025 09:19, Juergen Gross wrote:
> On 03.02.25 23:43, Stefano Stabellini wrote:
>> +Xen maintainers
>>
>>
>> On Mon, 3 Feb 2025, Richard Henderson wrote:
>>> On 2/3/25 04:54, Paolo Bonzini wrote:
>>>> On 2/3/25 04:18, Richard Henderson wrote:
>>>>> v1: 20250128004254.33442-1-richard.henderson@linaro.org
>>>>>
>>>>> For v2, immediately disable 64-on-32 TCG.
>>>>>
>>>>> I *suspect* that we should disable 64-on-32 for *all* accelerators.
>>>>> The idea that an i686 binary on an x86_64 host may be used to spawn
>>>>> an x86_64 guest via kvm is silly and a bit more than niche.
>>>>
>>>> At least Xen used to be commonly used with 32-bit dom0, because it saved
>>>> memory and dom0 would map in guest buffers as needed.  I'm not sure how
>>>> common that is these days, perhaps Stefano knows.
>>>
>>> As a data-point, debian does not ship libxen-dev for i686.
>>> We cannot build-test this configuration at all.
>>>
>>> I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's
>>> unclear whether x86_64-softmmu and aarch64-softmmu are relevant or useful for
>>> an armhf host, or as an armhf binary running on an aarch64 host.
>>
>>
>> On the Xen side, there are two different use cases: x86 32-bit and ARM
>> 32-bit.
>>
>> For x86 32-bit, while it was a very important use case in the past, I
>> believe it is far less so now. I will let the x86 maintainers comment on
>> how important it is today.
> 
> As dom0 on x86 is a PV guest per default and Linux doesn't support running as a
> 32-bit PV guest since a few years now, I guess there is no need to support qemu
> as 32-bit on x86 for Xen.

Yet then, just to mention it, you can run a 64-bit PV Dom0 kernel underneath
an otherwise 32-bit distro. I've been doing this successfully for very many
years (with a very small kernel adjustment, just to work around an apparent
shortcoming in system init scripts).

Jan
Philippe Mathieu-Daudé Feb. 4, 2025, 10:44 a.m. UTC | #7
Hi Jan,

On 4/2/25 10:11, Jan Beulich wrote:
> On 04.02.2025 09:19, Juergen Gross wrote:
>> On 03.02.25 23:43, Stefano Stabellini wrote:
>>> +Xen maintainers
>>>
>>>
>>> On Mon, 3 Feb 2025, Richard Henderson wrote:
>>>> On 2/3/25 04:54, Paolo Bonzini wrote:
>>>>> On 2/3/25 04:18, Richard Henderson wrote:
>>>>>> v1: 20250128004254.33442-1-richard.henderson@linaro.org
>>>>>>
>>>>>> For v2, immediately disable 64-on-32 TCG.
>>>>>>
>>>>>> I *suspect* that we should disable 64-on-32 for *all* accelerators.
>>>>>> The idea that an i686 binary on an x86_64 host may be used to spawn
>>>>>> an x86_64 guest via kvm is silly and a bit more than niche.
>>>>>
>>>>> At least Xen used to be commonly used with 32-bit dom0, because it saved
>>>>> memory and dom0 would map in guest buffers as needed.  I'm not sure how
>>>>> common that is these days, perhaps Stefano knows.
>>>>
>>>> As a data-point, debian does not ship libxen-dev for i686.
>>>> We cannot build-test this configuration at all.
>>>>
>>>> I can build-test Xen for armhf, and I guess it would use i386-softmmu; it's
>>>> unclear whether x86_64-softmmu and aarch64-softmmu are relevant or useful for
>>>> an armhf host, or as an armhf binary running on an aarch64 host.
>>>
>>>
>>> On the Xen side, there are two different use cases: x86 32-bit and ARM
>>> 32-bit.
>>>
>>> For x86 32-bit, while it was a very important use case in the past, I
>>> believe it is far less so now. I will let the x86 maintainers comment on
>>> how important it is today.
>>
>> As dom0 on x86 is a PV guest per default and Linux doesn't support running as a
>> 32-bit PV guest since a few years now, I guess there is no need to support qemu
>> as 32-bit on x86 for Xen.

This community disconnection between QEMU and Xen communities is a bit
unfortunate, as apparently we have been maintaining for some time
something that isn't used.

> Yet then, just to mention it, you can run a 64-bit PV Dom0 kernel underneath
> an otherwise 32-bit distro. I've been doing this successfully for very many
> years (with a very small kernel adjustment, just to work around an apparent
> shortcoming in system init scripts).

This discussion is about what is maintained by the mainstream projects.

We don't want to make fork's life harder. If you believe your use case
is worthwhile, please get it incorporated mainstream so we can test it.
Otherwise it is too much burden to maintain things we can not even test.

Regards,

Phil.