aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm
diff options
context:
space:
mode:
authorChristian Borntraeger <borntraeger@de.ibm.com>2015-07-10 09:27:20 -0400
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-07-29 05:02:33 -0400
commit71db35d26dbacd3d165522022ecb757ddc1529ea (patch)
tree8004e64773cf8cd1e340ab166e597a80ff2d530c /arch/s390/kvm
parent15e8b5daabe37b56e8117957ea1a10e99d380ac4 (diff)
KVM: s390: VCPU_EVENT cleanup for prefix changes
SPX (SET PREFIX) and SIGP (Set prefix) can change the prefix register of a CPU. As sigp set prefix may be handled in user space (KVM_CAP_S390_USER_SIGP), we would not log the changes triggered via SIGP in that case. Let's have just one VCPU_EVENT at the central location that tracks prefix changes. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r--arch/s390/kvm/interrupt.c1
-rw-r--r--arch/s390/kvm/kvm-s390.h2
-rw-r--r--arch/s390/kvm/priv.c2
-rw-r--r--arch/s390/kvm/sigp.c3
4 files changed, 2 insertions, 6 deletions
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index c98d89708e99..8b3a1178cb0b 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -427,7 +427,6 @@ static int __must_check __deliver_set_prefix(struct kvm_vcpu *vcpu)
427 clear_bit(IRQ_PEND_SET_PREFIX, &li->pending_irqs); 427 clear_bit(IRQ_PEND_SET_PREFIX, &li->pending_irqs);
428 spin_unlock(&li->lock); 428 spin_unlock(&li->lock);
429 429
430 VCPU_EVENT(vcpu, 4, "interrupt: set prefix to %x", prefix.address);
431 vcpu->stat.deliver_prefix_signal++; 430 vcpu->stat.deliver_prefix_signal++;
432 trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, 431 trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id,
433 KVM_S390_SIGP_SET_PREFIX, 432 KVM_S390_SIGP_SET_PREFIX,
diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h
index 81de2af28c9c..0ee5db11598b 100644
--- a/arch/s390/kvm/kvm-s390.h
+++ b/arch/s390/kvm/kvm-s390.h
@@ -65,6 +65,8 @@ static inline u32 kvm_s390_get_prefix(struct kvm_vcpu *vcpu)
65 65
66static inline void kvm_s390_set_prefix(struct kvm_vcpu *vcpu, u32 prefix) 66static inline void kvm_s390_set_prefix(struct kvm_vcpu *vcpu, u32 prefix)
67{ 67{
68 VCPU_EVENT(vcpu, 3, "set prefix of cpu %03u to 0x%x", vcpu->vcpu_id,
69 prefix);
68 vcpu->arch.sie_block->prefix = prefix >> GUEST_PREFIX_SHIFT; 70 vcpu->arch.sie_block->prefix = prefix >> GUEST_PREFIX_SHIFT;
69 kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu); 71 kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
70 kvm_make_request(KVM_REQ_MMU_RELOAD, vcpu); 72 kvm_make_request(KVM_REQ_MMU_RELOAD, vcpu);
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
index 1b95d2934472..2658a7919c5e 100644
--- a/arch/s390/kvm/priv.c
+++ b/arch/s390/kvm/priv.c
@@ -98,8 +98,6 @@ static int handle_set_prefix(struct kvm_vcpu *vcpu)
98 return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING); 98 return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
99 99
100 kvm_s390_set_prefix(vcpu, address); 100 kvm_s390_set_prefix(vcpu, address);
101
102 VCPU_EVENT(vcpu, 5, "setting prefix to %x", address);
103 trace_kvm_s390_handle_prefix(vcpu, 1, address); 101 trace_kvm_s390_handle_prefix(vcpu, 1, address);
104 return 0; 102 return 0;
105} 103}
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
index 72e58bd2bee7..5318ea3ad1d3 100644
--- a/arch/s390/kvm/sigp.c
+++ b/arch/s390/kvm/sigp.c
@@ -205,9 +205,6 @@ static int __sigp_set_prefix(struct kvm_vcpu *vcpu, struct kvm_vcpu *dst_vcpu,
205 *reg &= 0xffffffff00000000UL; 205 *reg &= 0xffffffff00000000UL;
206 *reg |= SIGP_STATUS_INCORRECT_STATE; 206 *reg |= SIGP_STATUS_INCORRECT_STATE;
207 return SIGP_CC_STATUS_STORED; 207 return SIGP_CC_STATUS_STORED;
208 } else if (rc == 0) {
209 VCPU_EVENT(vcpu, 4, "set prefix of cpu %02x to %x",
210 dst_vcpu->vcpu_id, irq.u.prefix.address);
211 } 208 }
212 209
213 return rc; 210 return rc;