From: Philippe Mathieu-Daudé Date: Wed, 7 Jan 2026 13:08:03 +0000 (+0100) Subject: target/s390x: Un-inline s390_is_pv() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4a009cbdc6b32e1cc9eca07a23cb278c99eb746;p=thirdparty%2Fqemu.git target/s390x: Un-inline s390_is_pv() Inlining a method which use a static variable is really a bad idea, as it totally defeats the point of both concepts. Currently we have 12 + 4 = 16 static 'ccw' variables...: $ git grep -wl target/s390x/kvm/pv.h | fgrep .h hw/s390x/ipl.h $ git grep -wl target/s390x/kvm/pv.h | fgrep .c | wc -l 12 $ git grep -wl hw/s390x/ipl.h | fgrep .c | wc -l 4 Fixes: c3347ed0d2e ("s390x: protvirt: Support unpack facility") Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Thomas Huth Message-ID: <20260107130807.69870-16-philmd@linaro.org> Signed-off-by: Thomas Huth --- diff --git a/target/s390x/kvm/pv.c b/target/s390x/kvm/pv.c index 2bc916a545..3d508165f3 100644 --- a/target/s390x/kvm/pv.c +++ b/target/s390x/kvm/pv.c @@ -25,6 +25,24 @@ #include "target/s390x/kvm/kvm_s390x.h" #include "target/s390x/kvm/pv.h" +bool s390_is_pv(void) +{ + static S390CcwMachineState *ccw; + Object *obj; + + if (ccw) { + return ccw->pv; + } + + /* we have to bail out for the "none" machine */ + obj = object_dynamic_cast(qdev_get_machine(), TYPE_S390_CCW_MACHINE); + if (!obj) { + return false; + } + ccw = S390_CCW_MACHINE(obj); + return ccw->pv; +} + static bool info_valid; static struct kvm_s390_pv_info_vm info_vm; static struct kvm_s390_pv_info_dump info_dump; diff --git a/target/s390x/kvm/pv.h b/target/s390x/kvm/pv.h index 94e885e933..e266fc3d54 100644 --- a/target/s390x/kvm/pv.h +++ b/target/s390x/kvm/pv.h @@ -12,8 +12,6 @@ #ifndef HW_S390_PV_H #define HW_S390_PV_H -#include "qapi/error.h" -#include "system/kvm.h" #include "hw/s390x/s390-virtio-ccw.h" struct S390PVResponse { @@ -23,27 +21,7 @@ struct S390PVResponse { }; #ifdef CONFIG_KVM -#include "cpu.h" - -static inline bool s390_is_pv(void) -{ - static S390CcwMachineState *ccw; - Object *obj; - - if (ccw) { - return ccw->pv; - } - - /* we have to bail out for the "none" machine */ - obj = object_dynamic_cast(qdev_get_machine(), - TYPE_S390_CCW_MACHINE); - if (!obj) { - return false; - } - ccw = S390_CCW_MACHINE(obj); - return ccw->pv; -} - +bool s390_is_pv(void); int s390_pv_query_info(void); int s390_pv_vm_enable(void); void s390_pv_vm_disable(void);