[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 8/9] meson: Disallow 64-bit on 32-bit emulation
From: |
Richard Henderson |
Subject: |
[PATCH v4 8/9] meson: Disallow 64-bit on 32-bit emulation |
Date: |
Fri, 7 Feb 2025 13:06:54 -0800 |
For system mode, we can rarely support the amount of RAM that
the guest requires. TCG emulation is restricted to round-robin
mode, which solves many of the atomicity issues, but not those
associated with virtio. In any case, round-robin does nothing
to help the speed of emulation.
For user mode, most emulation does not succeed at all. Most
of the time we cannot even load 64-bit non-PIE binaries due
to lack of a 64-bit address space. Threads are run in
parallel, not round-robin, which means that atomicity
is not handled.
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
meson.build | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/meson.build b/meson.build
index 85317cd63f..ec51827f40 100644
--- a/meson.build
+++ b/meson.build
@@ -3185,6 +3185,9 @@ if host_os == 'windows'
endif
endif
+# Detect host pointer size for the target configuration loop.
+host_long_bits = cc.sizeof('void *') * 8
+
########################
# Target configuration #
########################
@@ -3277,8 +3280,14 @@ foreach target : target_dirs
}
endif
+ config_target += keyval.load('configs/targets' / target + '.mak')
+
target_kconfig = []
foreach sym: accelerators
+ # Disallow 64-bit on 32-bit emulation and virtualization
+ if host_long_bits < config_target['TARGET_LONG_BITS'].to_int()
+ continue
+ endif
if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
config_target += { sym: 'y' }
config_all_accel += { sym: 'y' }
@@ -3292,9 +3301,6 @@ foreach target : target_dirs
error('No accelerator available for target @0@'.format(target))
endif
- config_target += keyval.load('configs/targets' / target + '.mak')
- config_target += { 'TARGET_' + config_target['TARGET_ARCH'].to_upper(): 'y' }
-
if 'TARGET_NEED_FDT' in config_target and not fdt.found()
if default_targets
warning('Disabling ' + target + ' due to missing libfdt')
@@ -3307,6 +3313,7 @@ foreach target : target_dirs
actual_target_dirs += target
# Add default keys
+ config_target += { 'TARGET_' + config_target['TARGET_ARCH'].to_upper(): 'y' }
if 'TARGET_BASE_ARCH' not in config_target
config_target += {'TARGET_BASE_ARCH': config_target['TARGET_ARCH']}
endif
--
2.43.0
- [PATCH v4 0/9] meson: Deprecate 32-bit host support, Richard Henderson, 2025/02/07
- [PATCH v4 1/9] meson: Drop tcg as a module, Richard Henderson, 2025/02/07
- [PATCH v4 3/9] meson: Disallow 64-bit on 32-bit Xen emulation, Richard Henderson, 2025/02/07
- [PATCH v4 2/9] meson: Disallow 64-bit on 32-bit KVM emulation, Richard Henderson, 2025/02/07
- [PATCH v4 4/9] meson: Disallow 64-bit on 32-bit HVF/NVMM/WHPX emulation, Richard Henderson, 2025/02/07
- [PATCH v4 5/9] gitlab-ci: Replace aarch64 with arm in cross-i686-tci build, Richard Henderson, 2025/02/07
- [PATCH v4 7/9] target/*: Remove TARGET_LONG_BITS from cpu-param.h, Richard Henderson, 2025/02/07
- [PATCH v4 8/9] meson: Disallow 64-bit on 32-bit emulation,
Richard Henderson <=
- [PATCH v4 6/9] configure: Define TARGET_LONG_BITS in configs/targets/*.mak, Richard Henderson, 2025/02/07
- [PATCH v4 9/9] meson: Deprecate 32-bit host support, Richard Henderson, 2025/02/07