Re: kvm-s390: Dont exit SIE on SIGP sense running
On 06/18/2010 12:16 AM, Christian Borntraeger wrote: Avi, Marcello, Newer (guest) kernels use sigp sense running in their spinlock implementation to check if the other cpu is running before yielding the processor. This revealed some wrong guest settings, causing unnecessary exits for every sigp sense running. Applied, thanks. void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); + clear_bit(63 - vcpu-vcpu_id, (unsigned long *)vcpu-kvm-arch.sca-mcn); if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == (__u64) vcpu-arch.sie_block) vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; Unrelated, do these VCPU_EVENTs want to become ftrace tracepoints? -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: kvm-s390: Dont exit SIE on SIGP sense running
Am Montag 21 Juni 2010, 10:27:50 schrieb Avi Kivity: [...] VCPU_EVENT(vcpu, 3, %s, free cpu); + clear_bit(63 - vcpu-vcpu_id, (unsigned long *)vcpu-kvm-arch.sca-mcn); if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == (__u64) vcpu-arch.sie_block) vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; Unrelated, do these VCPU_EVENTs want to become ftrace tracepoints? Hmm, dont know. Currently this calls into a s390 debug tracing facility (arch/s390/kernel/debug.c) which is heavily used by our service folks. There are commands for crash and lcrash to show these s390 debug traces from a dump. Maybe its worth to investigate if we should change some of these events to have both ftrace-tracepoints and the debug traces. Christian -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: kvm-s390: Dont exit SIE on SIGP sense running
On Monday 21 June 2010, Christian Borntraeger wrote: Hmm, dont know. Currently this calls into a s390 debug tracing facility (arch/s390/kernel/debug.c) which is heavily used by our service folks. There are commands for crash and lcrash to show these s390 debug traces from a dump. Maybe its worth to investigate if we should change some of these events to have both ftrace-tracepoints and the debug traces. I think that it would be worthwhile to convert the entire s390 debug code to become tracepoints, either one by one or making it a subclass with the existing interfaces. Arnd -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
kvm-s390: Dont exit SIE on SIGP sense running
Avi, Marcello, Newer (guest) kernels use sigp sense running in their spinlock implementation to check if the other cpu is running before yielding the processor. This revealed some wrong guest settings, causing unnecessary exits for every sigp sense running. Signed-off-by: Christian Borntraeger borntrae...@de.ibm.com --- arch/s390/include/asm/kvm_host.h |2 +- arch/s390/kvm/kvm-s390.c |4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) Index: kvm/arch/s390/include/asm/kvm_host.h === --- kvm.orig/arch/s390/include/asm/kvm_host.h +++ kvm/arch/s390/include/asm/kvm_host.h @@ -26,7 +26,7 @@ struct sca_entry { atomic_t scn; - __u64 reserved; + __u32 reserved; __u64 sda; __u64 reserved2[2]; } __attribute__((packed)); Index: kvm/arch/s390/kvm/kvm-s390.c === --- kvm.orig/arch/s390/kvm/kvm-s390.c +++ kvm/arch/s390/kvm/kvm-s390.c @@ -207,6 +207,7 @@ out_nokvm: void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { VCPU_EVENT(vcpu, 3, %s, free cpu); + clear_bit(63 - vcpu-vcpu_id, (unsigned long *) vcpu-kvm-arch.sca-mcn); if (vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda == (__u64) vcpu-arch.sie_block) vcpu-kvm-arch.sca-cpu[vcpu-vcpu_id].sda = 0; @@ -296,7 +297,7 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu { atomic_set(vcpu-arch.sie_block-cpuflags, CPUSTAT_ZARCH); set_bit(KVM_REQ_MMU_RELOAD, vcpu-requests); - vcpu-arch.sie_block-ecb = 2; + vcpu-arch.sie_block-ecb = 6; vcpu-arch.sie_block-eca = 0xC1002001U; vcpu-arch.sie_block-fac = (int) (long) facilities; hrtimer_init(vcpu-arch.ckc_timer, CLOCK_REALTIME, HRTIMER_MODE_ABS); @@ -329,6 +330,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st kvm-arch.sca-cpu[id].sda = (__u64) vcpu-arch.sie_block; vcpu-arch.sie_block-scaoh = (__u32)(((__u64)kvm-arch.sca) 32); vcpu-arch.sie_block-scaol = (__u32)(__u64)kvm-arch.sca; + set_bit(63 - id, (unsigned long *) kvm-arch.sca-mcn); spin_lock_init(vcpu-arch.local_int.lock); INIT_LIST_HEAD(vcpu-arch.local_int.list); -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html