diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2020-04-03 12:59:29 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2020-04-03 12:59:29 +0100 |
commit | 64a3b4d53d344bd494bcf969ee89467b560c7ce0 (patch) | |
tree | 6fc8f4031e84fe8e9014cd5df8849a21e6127d5d /target | |
parent | f2a8261110c32c4dccd84e774d8dd7a0524e00fb (diff) | |
parent | 5c30ef937f522a65df78dd9f496483fe4fc44d5e (diff) | |
download | qemu-64a3b4d53d344bd494bcf969ee89467b560c7ce0.zip qemu-64a3b4d53d344bd494bcf969ee89467b560c7ce0.tar.gz qemu-64a3b4d53d344bd494bcf969ee89467b560c7ce0.tar.bz2 |
Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20200403' into staging
- fix cpu number reporting in the stsi 3.2.2 block for kvm
- fix migration for old machines with odd ram sizes
# gpg: Signature made Fri 03 Apr 2020 10:11:06 BST
# gpg: using RSA key C3D0D66DC3624FF6A8C018CEDECF6B93C6F02FAF
# gpg: issuer "cohuck@redhat.com"
# gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>" [marginal]
# gpg: aka "Cornelia Huck <huckc@linux.vnet.ibm.com>" [full]
# gpg: aka "Cornelia Huck <cornelia.huck@de.ibm.com>" [full]
# gpg: aka "Cornelia Huck <cohuck@kernel.org>" [marginal]
# gpg: aka "Cornelia Huck <cohuck@redhat.com>" [marginal]
# Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0 18CE DECF 6B93 C6F0 2FAF
* remotes/cohuck/tags/s390x-20200403:
vl/s390x: fixup ram sizes for compat machines
s390x: kvm: Fix number of cpu reports for stsi 3.2.2
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target')
-rw-r--r-- | target/s390x/kvm.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index 1d6fd6a..7f7ebab 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -1768,8 +1768,10 @@ static int handle_tsch(S390CPU *cpu) static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) { + const MachineState *ms = MACHINE(qdev_get_machine()); + uint16_t conf_cpus = 0, reserved_cpus = 0; SysIB_322 sysib; - int del; + int del, i; if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { return; @@ -1789,6 +1791,19 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) memset(sysib.ext_names[del], 0, sizeof(sysib.ext_names[0]) * (sysib.count - del)); } + + /* count the cpus and split them into configured and reserved ones */ + for (i = 0; i < ms->possible_cpus->len; i++) { + if (ms->possible_cpus->cpus[i].cpu) { + conf_cpus++; + } else { + reserved_cpus++; + } + } + sysib.vm[0].total_cpus = conf_cpus + reserved_cpus; + sysib.vm[0].conf_cpus = conf_cpus; + sysib.vm[0].reserved_cpus = reserved_cpus; + /* Insert short machine name in EBCDIC, padded with blanks */ if (qemu_name) { memset(sysib.vm[0].name, 0x40, sizeof(sysib.vm[0].name)); |