diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2023-06-26 08:38:19 +0200 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2023-06-26 08:38:19 +0200 |
| commit | f9925abbda1c324d901d8e7fe63bad09a35ae740 (patch) | |
| tree | 18c2af50822bf8974eff8be3bea177190e01ebdf /hw/ppc/spapr.c | |
| parent | 79dbd910c9ea6ca38f8e1b2616b1e5e885b85bd3 (diff) | |
| parent | 5eb63b88d0ac259c2f49e62b6dcc6527a5caf255 (diff) | |
| download | focaccia-qemu-f9925abbda1c324d901d8e7fe63bad09a35ae740.tar.gz focaccia-qemu-f9925abbda1c324d901d8e7fe63bad09a35ae740.zip | |
Merge tag 'pull-ppc-20230626' of https://github.com/legoater/qemu into staging
ppc queue: * New maintainers * Nested implementation cleanups * Various cleanups of the CPU implementation * SMT support for pseries * Improvements of the XIVE2 TIMA modeling * Extra avocado tests for pseries # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmSZKF8ACgkQUaNDx8/7 # 7KGSiBAAlHC4S9J5ujzTIojaWY72d2ZinkC+WpBus9Wr91DqaUSUd/JbzDxQCvXh # dBWEbcyQ+abb8M3OQ3fMq9TfD2/LhxxXb+uwHIJ+ylITBnsRVCQv/4/gi3EkpRid # h4q3wYH8OYNfCQd/cWYXNgCSNj1nS9sRrEKFXaB0JeQWHzHxriJS/SoIhilqvUru # LFEytWNb3bxRkEkt8oAetOa9+DNLowUQ9IdzswqGcib09po3b1k4+ThfcvzU9nAc # ek31/h1W6cJbOJcgRO2dhWUZYp7cfmcnOa02E84tGFvvY/kYbjzPZZnoniSXD4uf # YWFCoB3VxUoZ/YKCT/pDKHVdXmLLrfckNbo9vQNEcwmjr8m0Q3d1ewD5O9oNRpgN # H0QMENfsdojztosOm3KPQ20aqNf1R7rQegYTiWf3B2fKZ6PIqnn3tBPxaEDkH7NC # GTAKnBhF48lcHSF/4XOfGdmqhGgPRWX/Tv0wia7RY/A4NEfiIImIu+nYSGNBbu3y # 7xlmtcumTlsRityOZnYI3bN5ubv++XPwU5NIJPACqvAbhif2rf1vQ9rMkkK785GL # ciJ/5f6zXsLU7DfWP+qbTBizchQgigXnRZEEc7Seo6Bwtru22oxug0qQZ5QCgyXl # Fg5Xuoq/6T4JC75pvxh1BjVlZc3Okzbfmsj+aZNrXO581HVJ2JI= # =XLtJ # -----END PGP SIGNATURE----- # gpg: Signature made Mon 26 Jun 2023 07:55:43 AM CEST # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@kaod.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-ppc-20230626' of https://github.com/legoater/qemu: (30 commits) tests/avocado: ppc test VOF bios Linux boot pnv/xive2: Check TIMA special ops against a dedicated array for P10 pnv/xive2: Add a get_config() method on the presenter class tests/avocado: Add ppc64 pseries multiprocessor boot tests tests/avocado: boot ppc64 pseries to Linux VFS mount spapr: TCG allow up to 8-thread SMT on POWER8 and newer CPUs hw/ppc/spapr: Test whether TCG is enabled with tcg_enabled() target/ppc: Add msgsnd/p and DPDES SMT support target/ppc: Add support for SMT CTRL register target/ppc: Add initial flags and helpers for SMT support target/ppc: Fix sc instruction handling of LEV field target/ppc: Better CTRL SPR implementation target/ppc: Add ISA v3.1 LEV indication in SRR1 for system call interrupts target/ppc: Implement HEIR SPR target/ppc: Add SRR1 prefix indication to interrupt handlers target/ppc: Change partition-scope translate interface target/ppc: Fix instruction loading endianness in alignment interrupt ppc/spapr: Move spapr nested HV to a new file ppc/spapr: load and store l2 state with helper functions ppc/spapr: Add a nested state struct ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'hw/ppc/spapr.c')
| -rw-r--r-- | hw/ppc/spapr.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index dcb7f1c70a..54dbfd7fe9 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -61,6 +61,7 @@ #include "hw/ppc/fdt.h" #include "hw/ppc/spapr.h" +#include "hw/ppc/spapr_nested.h" #include "hw/ppc/spapr_vio.h" #include "hw/ppc/vof.h" #include "hw/qdev-properties.h" @@ -2524,10 +2525,19 @@ static void spapr_set_vsmt_mode(SpaprMachineState *spapr, Error **errp) int ret; unsigned int smp_threads = ms->smp.threads; - if (!kvm_enabled() && (smp_threads > 1)) { - error_setg(errp, "TCG cannot support more than 1 thread/core " - "on a pseries machine"); - return; + if (tcg_enabled()) { + if (smp_threads > 1 && + !ppc_type_check_compat(ms->cpu_type, CPU_POWERPC_LOGICAL_2_07, 0, + spapr->max_compat_pvr)) { + error_setg(errp, "TCG only supports SMT on POWER8 or newer CPUs"); + return; + } + + if (smp_threads > 8) { + error_setg(errp, "TCG cannot support more than 8 threads/core " + "on a pseries machine"); + return; + } } if (!is_power_of_2(smp_threads)) { error_setg(errp, "Cannot support %d threads/core on a pseries " |