[Qemu-devel] [PATCH] fixup! hw/s390x: Replace global smp variables with machine smp properties

Eduardo Habkost posted 1 patch 4 years, 10 months ago
Test checkpatch passed
Test s390x failed
Test asan passed
Test docker-mingw@fedora passed
Test FreeBSD passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190628183321.GE1862@habkost.net
Maintainers: David Hildenbrand <david@redhat.com>, Christian Borntraeger <borntraeger@de.ibm.com>, Richard Henderson <rth@twiddle.net>, Halil Pasic <pasic@linux.ibm.com>, Cornelia Huck <cohuck@redhat.com>
target/s390x/kvm.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
[Qemu-devel] [PATCH] fixup! hw/s390x: Replace global smp variables with machine smp properties
Posted by Eduardo Habkost 4 years, 10 months ago
On Sun, May 19, 2019 at 04:54:24AM +0800, Like Xu wrote:
> The global smp variables in s390x are replaced with smp machine properties.
> 
> A local variable of the same name would be introduced in the declaration
> phase if it's used widely in the context OR replace it on the spot if it's
> only used once. No semantic changes.
> 
> Signed-off-by: Like Xu <like.xu@linux.intel.com>

I'm applying the following fixup to address s390x build failures
on machine-next.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target/s390x/kvm.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index 0267c6c2f6..6e814c230b 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -119,8 +119,8 @@
  * Needs to be big enough to contain max_cpus emergency signals
  * and in addition NR_LOCAL_IRQS interrupts
  */
-#define VCPU_IRQ_BUF_SIZE (sizeof(struct kvm_s390_irq) * \
-                           (max_cpus + NR_LOCAL_IRQS))
+#define VCPU_IRQ_BUF_SIZE(max_cpus) (sizeof(struct kvm_s390_irq) * \
+                                     (max_cpus + NR_LOCAL_IRQS))
 
 static CPUWatchpoint hw_watchpoint;
 /*
@@ -362,9 +362,10 @@ unsigned long kvm_arch_vcpu_id(CPUState *cpu)
 
 int kvm_arch_init_vcpu(CPUState *cs)
 {
+    unsigned int max_cpus = MACHINE(qdev_get_machine())->smp.max_cpus;
     S390CPU *cpu = S390_CPU(cs);
     kvm_s390_set_cpu_state(cpu, cpu->env.cpu_state);
-    cpu->irqstate = g_malloc0(VCPU_IRQ_BUF_SIZE);
+    cpu->irqstate = g_malloc0(VCPU_IRQ_BUF_SIZE(max_cpus));
     return 0;
 }
 
@@ -1950,9 +1951,10 @@ int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state)
 
 void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu)
 {
+    unsigned int max_cpus = MACHINE(qdev_get_machine())->smp.max_cpus;
     struct kvm_s390_irq_state irq_state = {
         .buf = (uint64_t) cpu->irqstate,
-        .len = VCPU_IRQ_BUF_SIZE,
+        .len = VCPU_IRQ_BUF_SIZE(max_cpus),
     };
     CPUState *cs = CPU(cpu);
     int32_t bytes;
-- 
2.18.0.rc1.1.g3f1ff2140

-- 
Eduardo

Re: [Qemu-devel] [PATCH] fixup! hw/s390x: Replace global smp variables with machine smp properties
Posted by no-reply@patchew.org 4 years, 10 months ago
Patchew URL: https://patchew.org/QEMU/20190628183321.GE1862@habkost.net/



Hi,

This series failed build test on s390x host. Please find the details below.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e

echo
echo "=== ENV ==="
env

echo
echo "=== PACKAGES ==="
rpm -qa

echo
echo "=== UNAME ==="
uname -a

CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

  CC      s390x-softmmu/target/s390x/sigp.o
  CC      s390x-softmmu/target/s390x/kvm.o
/var/tmp/patchew-tester-tmp-3de3bowb/src/target/s390x/kvm.c: In function ‘kvm_arch_init_vcpu’:
/var/tmp/patchew-tester-tmp-3de3bowb/src/target/s390x/kvm.c:365:56: error: ‘MachineState’ {aka ‘struct MachineState’} has no member named ‘smp’
  365 |     unsigned int max_cpus = MACHINE(qdev_get_machine())->smp.max_cpus;
      |                                                        ^~
/var/tmp/patchew-tester-tmp-3de3bowb/src/target/s390x/kvm.c: In function ‘kvm_s390_vcpu_interrupt_pre_save’:
/var/tmp/patchew-tester-tmp-3de3bowb/src/target/s390x/kvm.c:1954:56: error: ‘MachineState’ {aka ‘struct MachineState’} has no member named ‘smp’
 1954 |     unsigned int max_cpus = MACHINE(qdev_get_machine())->smp.max_cpus;
      |                                                        ^~
make[1]: *** [/var/tmp/patchew-tester-tmp-3de3bowb/src/rules.mak:69: target/s390x/kvm.o] Error 1


The full log is available at
http://patchew.org/logs/20190628183321.GE1862@habkost.net/testing.s390x/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com