From: Jens Freimann Date: Mon, 1 Dec 2014 15:43:40 +0000 (+0100) Subject: KVM: s390: use atomic bitops to access pending_irqs bitmap X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=9185124e8754e54f3ae03ef3b3eab628aa066ef6;p=openwrt%2Fstaging%2Fblogic.git KVM: s390: use atomic bitops to access pending_irqs bitmap Currently we use a mixture of atomic/non-atomic bitops and the local_int spin lock to protect the pending_irqs bitmap and interrupt payload data. We need to use atomic bitops for the pending_irqs bitmap everywhere and in addition acquire the local_int lock where interrupt data needs to be protected. Signed-off-by: Jens Freimann Reviewed-by: David Hildenbrand Signed-off-by: Christian Borntraeger --- diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 6c0d14b5fec5..86bc89a2c6e6 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -929,7 +929,7 @@ static int __inject_prog(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int; li->irq.pgm = irq->u.pgm; - __set_bit(IRQ_PEND_PROG, &li->pending_irqs); + set_bit(IRQ_PEND_PROG, &li->pending_irqs); return 0; } @@ -995,7 +995,7 @@ int __inject_extcall(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) irq->u.extcall.code, 0, 2); *extcall = irq->u.extcall; - __set_bit(IRQ_PEND_EXT_EXTERNAL, &li->pending_irqs); + set_bit(IRQ_PEND_EXT_EXTERNAL, &li->pending_irqs); atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); return 0; }