This function will be used by the GISA init and the GISA
clear operation. Thus it gets factored out here.

Signed-off-by: Michael Mueller <m...@linux.ibm.com>
Reviewed-by: Pierre Morel <pmo...@linux.ibm.com>
Reviewed-by: Janosch Frank <fran...@linux.ibm.com>
Reviewed-by: Cornelia Huck <coh...@redhat.com>
Reviewed-by: David Hildenbrand <da...@redhat.com>
---
 arch/s390/kvm/interrupt.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 9a3aed608914..c3a8b2fbbcf2 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -2884,12 +2884,17 @@ int kvm_s390_get_irq_state(struct kvm_vcpu *vcpu, __u8 
__user *buf, int len)
        return n;
 }
 
+static void nullify_gisa(struct kvm_s390_gisa *gisa)
+{
+       memset(gisa, 0, sizeof(struct kvm_s390_gisa));
+       gisa->next_alert = (u32)(u64)gisa;
+}
+
 void kvm_s390_gisa_clear(struct kvm *kvm)
 {
        if (!kvm->arch.gisa)
                return;
-       memset(kvm->arch.gisa, 0, sizeof(struct kvm_s390_gisa));
-       kvm->arch.gisa->next_alert = (u32)(u64)kvm->arch.gisa;
+       nullify_gisa(kvm->arch.gisa);
        VM_EVENT(kvm, 3, "gisa 0x%pK cleared", kvm->arch.gisa);
 }
 
@@ -2898,8 +2903,8 @@ void kvm_s390_gisa_init(struct kvm *kvm)
        if (!css_general_characteristics.aiv)
                return;
        kvm->arch.gisa = &kvm->arch.sie_page2->gisa;
+       nullify_gisa(kvm->arch.gisa);
        VM_EVENT(kvm, 3, "gisa 0x%pK initialized", kvm->arch.gisa);
-       kvm_s390_gisa_clear(kvm);
 }
 
 void kvm_s390_gisa_destroy(struct kvm *kvm)
-- 
2.13.4

Reply via email to