Lines Matching refs:gi
285 static inline u8 gisa_get_ipm_or_restore_iam(struct kvm_s390_gisa_interrupt *gi) in gisa_get_ipm_or_restore_iam() argument
291 word = READ_ONCE(gi->origin->u64.word[0]); in gisa_get_ipm_or_restore_iam()
292 alert_mask = READ_ONCE(gi->alert.mask); in gisa_get_ipm_or_restore_iam()
297 } while (cmpxchg(&gi->origin->u64.word[0], word, _word) != word); in gisa_get_ipm_or_restore_iam()
338 struct kvm_s390_gisa_interrupt *gi = &vcpu->kvm->arch.gisa_int; in pending_irqs() local
342 if (gi->origin) in pending_irqs()
343 pending_mask |= gisa_get_ipm(gi->origin) << IRQ_PEND_IO_ISC_7; in pending_irqs()
1172 struct kvm_s390_gisa_interrupt *gi = &vcpu->kvm->arch.gisa_int; in __deliver_io() local
1215 if (gi->origin && gisa_tac_ipm_gisc(gi->origin, isc)) { in __deliver_io()
1305 struct kvm_s390_gisa_interrupt *gi = &vcpu->kvm->arch.gisa_int; in kvm_s390_handle_wait() local
1319 if (gi->origin && in kvm_s390_handle_wait()
1320 (gisa_get_ipm_or_restore_iam(gi) & in kvm_s390_handle_wait()
1741 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in get_top_gisa_isc() local
1747 if (!gi->origin) in get_top_gisa_isc()
1750 active_mask = (isc_mask & gisa_get_ipm(gi->origin) << 24) << 32; in get_top_gisa_isc()
1753 if (gisa_tac_ipm_gisc(gi->origin, isc)) in get_top_gisa_isc()
1776 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_get_io_int() local
1794 gisa_set_ipm_gisc(gi->origin, isc); in kvm_s390_get_io_int()
1806 gisa_set_ipm_gisc(gi->origin, isc); in kvm_s390_get_io_int()
1897 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in __inject_io() local
1911 if (gi->origin && inti->type & KVM_S390_INT_IO_AI_MASK) { in __inject_io()
1913 gisa_set_ipm_gisc(gi->origin, isc); in __inject_io()
2244 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in get_all_floating_irqs() local
2268 if (gi->origin && gisa_get_ipm(gi->origin)) { in get_all_floating_irqs()
2275 if (gisa_tac_ipm_gisc(gi->origin, i)) { in get_all_floating_irqs()
3063 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in __airqs_kick_single_vcpu() local
3074 if (test_and_set_bit(vcpu_idx, gi->kicked_mask)) in __airqs_kick_single_vcpu()
3084 struct kvm_s390_gisa_interrupt *gi = in gisa_vcpu_kicker() local
3087 container_of(gi->origin, struct sie_page2, gisa)->kvm; in gisa_vcpu_kicker()
3090 pending_mask = gisa_get_ipm_or_restore_iam(gi); in gisa_vcpu_kicker()
3093 hrtimer_forward_now(timer, ns_to_ktime(gi->expires)); in gisa_vcpu_kicker()
3106 struct kvm_s390_gisa_interrupt *gi; in process_gib_alert_list() local
3139 gi = &kvm->arch.gisa_int; in process_gib_alert_list()
3140 if (hrtimer_active(&gi->timer)) in process_gib_alert_list()
3141 hrtimer_cancel(&gi->timer); in process_gib_alert_list()
3142 hrtimer_start(&gi->timer, 0, HRTIMER_MODE_REL); in process_gib_alert_list()
3150 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisa_clear() local
3152 if (!gi->origin) in kvm_s390_gisa_clear()
3154 gisa_clear_ipm(gi->origin); in kvm_s390_gisa_clear()
3155 VM_EVENT(kvm, 3, "gisa 0x%pK cleared", gi->origin); in kvm_s390_gisa_clear()
3160 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisa_init() local
3164 gi->origin = &kvm->arch.sie_page2->gisa; in kvm_s390_gisa_init()
3165 gi->alert.mask = 0; in kvm_s390_gisa_init()
3166 spin_lock_init(&gi->alert.ref_lock); in kvm_s390_gisa_init()
3167 gi->expires = 50 * 1000; /* 50 usec */ in kvm_s390_gisa_init()
3168 hrtimer_init(&gi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in kvm_s390_gisa_init()
3169 gi->timer.function = gisa_vcpu_kicker; in kvm_s390_gisa_init()
3170 memset(gi->origin, 0, sizeof(struct kvm_s390_gisa)); in kvm_s390_gisa_init()
3171 gi->origin->next_alert = (u32)(u64)gi->origin; in kvm_s390_gisa_init()
3172 VM_EVENT(kvm, 3, "gisa 0x%pK initialized", gi->origin); in kvm_s390_gisa_init()
3177 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisa_enable() local
3182 if (gi->origin) in kvm_s390_gisa_enable()
3200 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisa_destroy() local
3201 struct kvm_s390_gisa *gisa = gi->origin; in kvm_s390_gisa_destroy()
3203 if (!gi->origin) in kvm_s390_gisa_destroy()
3205 if (gi->alert.mask) in kvm_s390_gisa_destroy()
3207 kvm, gi->alert.mask); in kvm_s390_gisa_destroy()
3208 while (gisa_in_alert_list(gi->origin)) in kvm_s390_gisa_destroy()
3210 hrtimer_cancel(&gi->timer); in kvm_s390_gisa_destroy()
3211 gi->origin = NULL; in kvm_s390_gisa_destroy()
3217 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisa_disable() local
3221 if (!gi->origin) in kvm_s390_gisa_disable()
3252 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisc_register() local
3254 if (!gi->origin) in kvm_s390_gisc_register()
3259 spin_lock(&gi->alert.ref_lock); in kvm_s390_gisc_register()
3260 gi->alert.ref_count[gisc]++; in kvm_s390_gisc_register()
3261 if (gi->alert.ref_count[gisc] == 1) { in kvm_s390_gisc_register()
3262 gi->alert.mask |= 0x80 >> gisc; in kvm_s390_gisc_register()
3263 gisa_set_iam(gi->origin, gi->alert.mask); in kvm_s390_gisc_register()
3265 spin_unlock(&gi->alert.ref_lock); in kvm_s390_gisc_register()
3291 struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int; in kvm_s390_gisc_unregister() local
3294 if (!gi->origin) in kvm_s390_gisc_unregister()
3299 spin_lock(&gi->alert.ref_lock); in kvm_s390_gisc_unregister()
3300 if (gi->alert.ref_count[gisc] == 0) { in kvm_s390_gisc_unregister()
3304 gi->alert.ref_count[gisc]--; in kvm_s390_gisc_unregister()
3305 if (gi->alert.ref_count[gisc] == 0) { in kvm_s390_gisc_unregister()
3306 gi->alert.mask &= ~(0x80 >> gisc); in kvm_s390_gisc_unregister()
3307 gisa_set_iam(gi->origin, gi->alert.mask); in kvm_s390_gisc_unregister()
3310 spin_unlock(&gi->alert.ref_lock); in kvm_s390_gisc_unregister()
3318 struct kvm_s390_gisa_interrupt *gi; in aen_host_forward() local
3332 gi = &kvm->arch.gisa_int; in aen_host_forward()
3334 if (!(gi->origin->g1.simm & AIS_MODE_MASK(gaite->gisc)) || in aen_host_forward()
3335 !(gi->origin->g1.nimm & AIS_MODE_MASK(gaite->gisc))) { in aen_host_forward()
3336 gisa_set_ipm_gisc(gi->origin, gaite->gisc); in aen_host_forward()
3337 if (hrtimer_active(&gi->timer)) in aen_host_forward()
3338 hrtimer_cancel(&gi->timer); in aen_host_forward()
3339 hrtimer_start(&gi->timer, 0, HRTIMER_MODE_REL); in aen_host_forward()