mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-12 08:45:11 +08:00
KVM: s390: remove kvm_s390_ from gisa static inline functions
This will shorten the length of code lines. All GISA related static inline functions are local to interrupt.c. Signed-off-by: Michael Mueller <mimu@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Pierre Morel <pmorel@linux.ibm.com> Reviewed-by: Halil Pasic <pasic@linux.ibm.com> Message-Id: <20190131085247.13826-7-mimu@linux.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
96723d323a
commit
bb2fb8cdcf
@ -217,22 +217,22 @@ static inline u8 int_word_to_isc(u32 int_word)
|
|||||||
*/
|
*/
|
||||||
#define IPM_BIT_OFFSET (offsetof(struct kvm_s390_gisa, ipm) * BITS_PER_BYTE)
|
#define IPM_BIT_OFFSET (offsetof(struct kvm_s390_gisa, ipm) * BITS_PER_BYTE)
|
||||||
|
|
||||||
static inline void kvm_s390_gisa_set_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
static inline void gisa_set_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
||||||
{
|
{
|
||||||
set_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
set_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u8 kvm_s390_gisa_get_ipm(struct kvm_s390_gisa *gisa)
|
static inline u8 gisa_get_ipm(struct kvm_s390_gisa *gisa)
|
||||||
{
|
{
|
||||||
return READ_ONCE(gisa->ipm);
|
return READ_ONCE(gisa->ipm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void kvm_s390_gisa_clear_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
static inline void gisa_clear_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
||||||
{
|
{
|
||||||
clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int kvm_s390_gisa_tac_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
static inline int gisa_tac_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
|
||||||
{
|
{
|
||||||
return test_and_clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
return test_and_clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
|
||||||
}
|
}
|
||||||
@ -246,7 +246,7 @@ static inline unsigned long pending_irqs_no_gisa(struct kvm_vcpu *vcpu)
|
|||||||
static inline unsigned long pending_irqs(struct kvm_vcpu *vcpu)
|
static inline unsigned long pending_irqs(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
return pending_irqs_no_gisa(vcpu) |
|
return pending_irqs_no_gisa(vcpu) |
|
||||||
kvm_s390_gisa_get_ipm(vcpu->kvm->arch.gisa) << IRQ_PEND_IO_ISC_7;
|
gisa_get_ipm(vcpu->kvm->arch.gisa) << IRQ_PEND_IO_ISC_7;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int isc_to_irq_type(unsigned long isc)
|
static inline int isc_to_irq_type(unsigned long isc)
|
||||||
@ -999,7 +999,7 @@ static int __must_check __deliver_io(struct kvm_vcpu *vcpu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vcpu->kvm->arch.gisa &&
|
if (vcpu->kvm->arch.gisa &&
|
||||||
kvm_s390_gisa_tac_ipm_gisc(vcpu->kvm->arch.gisa, isc)) {
|
gisa_tac_ipm_gisc(vcpu->kvm->arch.gisa, isc)) {
|
||||||
/*
|
/*
|
||||||
* in case an adapter interrupt was not delivered
|
* in case an adapter interrupt was not delivered
|
||||||
* in SIE context KVM will handle the delivery
|
* in SIE context KVM will handle the delivery
|
||||||
@ -1541,10 +1541,10 @@ static int get_top_gisa_isc(struct kvm *kvm, u64 isc_mask, u32 schid)
|
|||||||
if (!kvm->arch.gisa)
|
if (!kvm->arch.gisa)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
active_mask = (isc_mask & kvm_s390_gisa_get_ipm(kvm->arch.gisa) << 24) << 32;
|
active_mask = (isc_mask & gisa_get_ipm(kvm->arch.gisa) << 24) << 32;
|
||||||
while (active_mask) {
|
while (active_mask) {
|
||||||
isc = __fls(active_mask) ^ (BITS_PER_LONG - 1);
|
isc = __fls(active_mask) ^ (BITS_PER_LONG - 1);
|
||||||
if (kvm_s390_gisa_tac_ipm_gisc(kvm->arch.gisa, isc))
|
if (gisa_tac_ipm_gisc(kvm->arch.gisa, isc))
|
||||||
return isc;
|
return isc;
|
||||||
clear_bit_inv(isc, &active_mask);
|
clear_bit_inv(isc, &active_mask);
|
||||||
}
|
}
|
||||||
@ -1584,7 +1584,7 @@ struct kvm_s390_interrupt_info *kvm_s390_get_io_int(struct kvm *kvm,
|
|||||||
/* both types of interrupts present */
|
/* both types of interrupts present */
|
||||||
if (int_word_to_isc(inti->io.io_int_word) <= isc) {
|
if (int_word_to_isc(inti->io.io_int_word) <= isc) {
|
||||||
/* classical IO int with higher priority */
|
/* classical IO int with higher priority */
|
||||||
kvm_s390_gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
gisa_out:
|
gisa_out:
|
||||||
@ -1596,7 +1596,7 @@ gisa_out:
|
|||||||
kvm_s390_reinject_io_int(kvm, inti);
|
kvm_s390_reinject_io_int(kvm, inti);
|
||||||
inti = tmp_inti;
|
inti = tmp_inti;
|
||||||
} else
|
} else
|
||||||
kvm_s390_gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
||||||
out:
|
out:
|
||||||
return inti;
|
return inti;
|
||||||
}
|
}
|
||||||
@ -1694,7 +1694,7 @@ static int __inject_io(struct kvm *kvm, struct kvm_s390_interrupt_info *inti)
|
|||||||
|
|
||||||
if (kvm->arch.gisa && inti->type & KVM_S390_INT_IO_AI_MASK) {
|
if (kvm->arch.gisa && inti->type & KVM_S390_INT_IO_AI_MASK) {
|
||||||
VM_EVENT(kvm, 4, "%s isc %1u", "inject: I/O (AI/gisa)", isc);
|
VM_EVENT(kvm, 4, "%s isc %1u", "inject: I/O (AI/gisa)", isc);
|
||||||
kvm_s390_gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
gisa_set_ipm_gisc(kvm->arch.gisa, isc);
|
||||||
kfree(inti);
|
kfree(inti);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2025,15 +2025,14 @@ static int get_all_floating_irqs(struct kvm *kvm, u8 __user *usrbuf, u64 len)
|
|||||||
|
|
||||||
max_irqs = len / sizeof(struct kvm_s390_irq);
|
max_irqs = len / sizeof(struct kvm_s390_irq);
|
||||||
|
|
||||||
if (kvm->arch.gisa &&
|
if (kvm->arch.gisa && gisa_get_ipm(kvm->arch.gisa)) {
|
||||||
kvm_s390_gisa_get_ipm(kvm->arch.gisa)) {
|
|
||||||
for (i = 0; i <= MAX_ISC; i++) {
|
for (i = 0; i <= MAX_ISC; i++) {
|
||||||
if (n == max_irqs) {
|
if (n == max_irqs) {
|
||||||
/* signal userspace to try again */
|
/* signal userspace to try again */
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto out_nolock;
|
goto out_nolock;
|
||||||
}
|
}
|
||||||
if (kvm_s390_gisa_tac_ipm_gisc(kvm->arch.gisa, i)) {
|
if (gisa_tac_ipm_gisc(kvm->arch.gisa, i)) {
|
||||||
irq = (struct kvm_s390_irq *) &buf[n];
|
irq = (struct kvm_s390_irq *) &buf[n];
|
||||||
irq->type = KVM_S390_INT_IO(1, 0, 0, 0);
|
irq->type = KVM_S390_INT_IO(1, 0, 0, 0);
|
||||||
irq->u.io.io_int_word = isc_to_int_word(i);
|
irq->u.io.io_int_word = isc_to_int_word(i);
|
||||||
|
Loading…
Reference in New Issue
Block a user