KVM: PowerPC: Disarm old guest debug interface
Subsystems (3)
PATCH 1/1 KVM: PowerPC: Disarm old guest debug interface
[Take this as a band-aid, I guess the PowerPC people can do better.]
Until PowerPC is updated to the new guest debugging interface, we have to remove the current implementation. This should also unbreak the build.
---
arch/powerpc/kvm/44x.c | 20 -------------------- arch/powerpc/kvm/powerpc.c | 20 +------------------- 2 files changed, 1 insertions(+), 39 deletions(-)
arch/powerpc/kvm/44x.c +0 -20
@@ -55,7 +55,6 @@ void kvmppc_core_load_host_debugstate(struct kvm_vcpu *vcpu)void kvmppc_core_load_guest_debugstate (struct kvm_vcpu *vcpu) { -struct kvm_guest_debug *dbg = &vcpu->guest_debug;u32 dbcr0 =0 ; vcpu->arch.host_msr =mfmsr ();
@@ -70,25 +69,6 @@ void kvmppc_core_load_guest_debugstate(struct kvm_vcpu *vcpu) vcpu->arch.host_dbcr1 =mfspr (SPRN_DBCR1 ); vcpu->arch.host_dbcr2 =mfspr (SPRN_DBCR2 ); -/* set registers up for guest */ - -if (dbg->bp[0 ]) { -mtspr (SPRN_IAC1 , dbg->bp[0 ]); - dbcr0 |=DBCR0_IAC1 |DBCR0_IDM ; - } -if (dbg->bp[1 ]) { -mtspr (SPRN_IAC2 , dbg->bp[1 ]); - dbcr0 |=DBCR0_IAC2 |DBCR0_IDM ; - } -if (dbg->bp[2 ]) { -mtspr (SPRN_IAC3 , dbg->bp[2 ]); - dbcr0 |=DBCR0_IAC3 |DBCR0_IDM ; - } -if (dbg->bp[3 ]) { -mtspr (SPRN_IAC4 , dbg->bp[3 ]); - dbcr0 |=DBCR0_IAC4 |DBCR0_IDM ; - } -mtspr (SPRN_DBCR0 , dbcr0);mtspr (SPRN_DBCR1 ,0 );mtspr (SPRN_DBCR2 ,0 );
arch/powerpc/kvm/powerpc.c +1 -19
@@ -216,36 +216,18 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)void kvm_arch_vcpu_load (struct kvm_vcpu *vcpu,int cpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_guest_debugstate (vcpu); -kvmppc_core_vcpu_load (vcpu, cpu); }void kvm_arch_vcpu_put (struct kvm_vcpu *vcpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_host_debugstate (vcpu); -kvmppc_core_vcpu_put (vcpu); }int kvm_arch_vcpu_ioctl_set_guest_debug (struct kvm_vcpu *vcpu,struct kvm_guest_debug *dbg) { -int i; - - vcpu->guest_debug.enabled = dbg->enabled; -if (vcpu->guest_debug.enabled) { -for (i=0 ; i <ARRAY_SIZE (vcpu->guest_debug.bp); i++) { -if (dbg->breakpoints[i].enabled) - vcpu->guest_debug.bp[i] = dbg->breakpoints[i].address; -else - vcpu->guest_debug.bp[i] =0 ; - } - } - -return 0 ; +return -EINVAL ; } static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
Quoted 7 lines · Jan Kiszka
[Take this as a band-aid, I guess the PowerPC people can do better.]
Until PowerPC is updated to the new guest debugging interface, we have to remove the current implementation. This should also unbreak the build.
Hollis? Want this or a real fix?
Signature · 1 line
error compiling committee.c: too many arguments to function
Quoted 10 lines · Avi Kivity
Quoted 7 lines · Jan Kiszka
[Take this as a band-aid, I guess the PowerPC people can do better.]
Until PowerPC is updated to the new guest debugging interface, we have to remove the current implementation. This should also unbreak the build.
Hollis? Want this or a real fix?
I was trying to come up with a real fix, but unfortunately I don't have time to reimplement and retest features like this.
kvm: ppc: remove debug support broken by KVM debug rewrite
After the rewrite of KVM's debug support, this code doesn't even build any more.
arch/powerpc/include/asm/kvm_host.h +0 -11
@@ -118,11 +118,6 @@ struct kvm_arch {struct kvm_vcpu_arch {u32 host_stack;u32 host_pid; -u32 host_dbcr0; -u32 host_dbcr1; -u32 host_dbcr2; -u32 host_iac[4 ]; -u32 host_msr;u64 fpr[32 ];ulong gpr[32 ];
@@ -200,10 +195,4 @@ struct kvm_vcpu_arch { unsigned long pending_exceptions; }; -struct kvm_guest_debug { -int enabled; -unsigned long bp[4 ]; -int singlestep; -}; -#endif /* __POWERPC_KVM_HOST_H__ */
arch/powerpc/include/asm/kvm_ppc.h +0 -3
@@ -71,9 +71,6 @@ extern int kvmppc_core_vcpu_translate(stextern void kvmppc_core_vcpu_load (struct kvm_vcpu *vcpu,int cpu);extern void kvmppc_core_vcpu_put (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_guest_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_host_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_deliver_interrupts (struct kvm_vcpu *vcpu);extern int kvmppc_core_pending_dec (struct kvm_vcpu *vcpu);extern void kvmppc_core_queue_program (struct kvm_vcpu *vcpu);
arch/powerpc/kvm/44x.c +0 -66
72 lines not on this page · raw message
arch/powerpc/kvm/powerpc.c +2 -20
@@ -216,36 +216,18 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpvoid kvm_arch_vcpu_load (struct kvm_vcpu *vcpu,int cpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_guest_debugstate (vcpu); -kvmppc_core_vcpu_load (vcpu, cpu); }void kvm_arch_vcpu_put (struct kvm_vcpu *vcpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_host_debugstate (vcpu); -kvmppc_core_vcpu_put (vcpu); }int kvm_arch_vcpu_ioctl_set_guest_debug (struct kvm_vcpu *vcpu, -struct kvm_guest_debug *dbg) +struct kvm_guest_debug *dbg) { -int i; - - vcpu->guest_debug.enabled = dbg->enabled; -if (vcpu->guest_debug.enabled) { -for (i=0 ; i <ARRAY_SIZE (vcpu->guest_debug.bp); i++) { -if (dbg->breakpoints[i].enabled) - vcpu->guest_debug.bp[i] = dbg->breakpoints[i].address; -else - vcpu->guest_debug.bp[i] =0 ; - } - } - -return 0 ; +return -EINVAL ; } static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
Signature · 2 lines
Hollis Blanchard IBM Linux Technology Center
Quoted 157 lines · Hollis Blanchard
kvm: ppc: remove debug support broken by KVM debug rewrite
After the rewrite of KVM's debug support, this code doesn't even build any more.
Signed-off-by Hollis Blanchard <hollisb-r/[email protected]>arch/powerpc/include/asm/kvm_host.h +0
-11@@ -118,11 +118,6 @@ struct kvm_arch {struct kvm_vcpu_arch {u32 host_stack;u32 host_pid; -u32 host_dbcr0; -u32 host_dbcr1; -u32 host_dbcr2; -u32 host_iac[4 ]; -u32 host_msr;u64 fpr[32 ];ulong gpr[32 ];@@ -200,10 +195,4 @@ struct kvm_vcpu_arch { unsigned long pending_exceptions; }; -struct kvm_guest_debug { -int enabled; -unsigned long bp[4 ]; -int singlestep; -}; -#endif /* __POWERPC_KVM_HOST_H__ */ arch/powerpc/include/asm/kvm_ppc.h +0
-3@@ -71,9 +71,6 @@ extern int kvmppc_core_vcpu_translate(stextern void kvmppc_core_vcpu_load (struct kvm_vcpu *vcpu,int cpu);extern void kvmppc_core_vcpu_put (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_guest_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_host_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_deliver_interrupts (struct kvm_vcpu *vcpu);extern int kvmppc_core_pending_dec (struct kvm_vcpu *vcpu);extern void kvmppc_core_queue_program (struct kvm_vcpu *vcpu);arch/powerpc/kvm/44x.c +0
-66@@ -28,72 +28,6 @@#include "44x_tlb.h" -/* Note: clearing MSR[DE] just means that the debug interrupt will not be -* delivered *immediately*. Instead, it simply sets the appropriate DBSR bits. -* If those DBSR bits are still set when MSR[DE] is re-enabled, the interrupt -* will be delivered as an "imprecise debug event" (which is indicated by -* DBSR[IDE]. -*/ -static void kvm44x_disable_debug_interrupts (void ) -{ -mtmsr (mfmsr () & ~MSR_DE ); -} - -void kvmppc_core_load_host_debugstate (struct kvm_vcpu *vcpu) -{ -kvm44x_disable_debug_interrupts (); - -mtspr (SPRN_IAC1 , vcpu->arch.host_iac[0 ]); -mtspr (SPRN_IAC2 , vcpu->arch.host_iac[1 ]); -mtspr (SPRN_IAC3 , vcpu->arch.host_iac[2 ]); -mtspr (SPRN_IAC4 , vcpu->arch.host_iac[3 ]); -mtspr (SPRN_DBCR1 , vcpu->arch.host_dbcr1); -mtspr (SPRN_DBCR2 , vcpu->arch.host_dbcr2); -mtspr (SPRN_DBCR0 , vcpu->arch.host_dbcr0); -mtmsr (vcpu->arch.host_msr); -} - -void kvmppc_core_load_guest_debugstate (struct kvm_vcpu *vcpu) -{ -struct kvm_guest_debug *dbg = &vcpu->guest_debug; -u32 dbcr0 =0 ; - - vcpu->arch.host_msr =mfmsr (); -kvm44x_disable_debug_interrupts (); - -/* Save host debug register state. */ - vcpu->arch.host_iac[0 ] =mfspr (SPRN_IAC1 ); - vcpu->arch.host_iac[1 ] =mfspr (SPRN_IAC2 ); - vcpu->arch.host_iac[2 ] =mfspr (SPRN_IAC3 ); - vcpu->arch.host_iac[3 ] =mfspr (SPRN_IAC4 ); - vcpu->arch.host_dbcr0 =mfspr (SPRN_DBCR0 ); - vcpu->arch.host_dbcr1 =mfspr (SPRN_DBCR1 ); - vcpu->arch.host_dbcr2 =mfspr (SPRN_DBCR2 ); - -/* set registers up for guest */ - -if (dbg->bp[0 ]) { -mtspr (SPRN_IAC1 , dbg->bp[0 ]); - dbcr0 |=DBCR0_IAC1 |DBCR0_IDM ; - } -if (dbg->bp[1 ]) { -mtspr (SPRN_IAC2 , dbg->bp[1 ]); - dbcr0 |=DBCR0_IAC2 |DBCR0_IDM ; - } -if (dbg->bp[2 ]) { -mtspr (SPRN_IAC3 , dbg->bp[2 ]); - dbcr0 |=DBCR0_IAC3 |DBCR0_IDM ; - } -if (dbg->bp[3 ]) { -mtspr (SPRN_IAC4 , dbg->bp[3 ]); - dbcr0 |=DBCR0_IAC4 |DBCR0_IDM ; - } - -mtspr (SPRN_DBCR0 , dbcr0); -mtspr (SPRN_DBCR1 ,0 ); -mtspr (SPRN_DBCR2 ,0 ); -} -void kvmppc_core_vcpu_load (struct kvm_vcpu *vcpu,int cpu) {kvmppc_44x_tlb_load (vcpu);arch/powerpc/kvm/powerpc.c +1
-14@@ -216,36 +216,18 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpvoid kvm_arch_vcpu_load (struct kvm_vcpu *vcpu,int cpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_guest_debugstate (vcpu); -kvmppc_core_vcpu_load (vcpu, cpu); }void kvm_arch_vcpu_put (struct kvm_vcpu *vcpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_host_debugstate (vcpu); -kvmppc_core_vcpu_put (vcpu); }int kvm_arch_vcpu_ioctl_set_guest_debug (struct kvm_vcpu *vcpu, -struct kvm_guest_debug *dbg) +struct kvm_guest_debug *dbg) { -int i; - - vcpu->guest_debug.enabled = dbg->enabled; -if (vcpu->guest_debug.enabled) { -for (i=0 ; i <ARRAY_SIZE (vcpu->guest_debug.bp); i++) { -if (dbg->breakpoints[i].enabled) - vcpu->guest_debug.bp[i] = dbg->breakpoints[i].address;
arch/powerpc/kvm/powerpc.c void kvm_arch_vcpu_uninit(struct kvm_vcp · line 233
Quoted 10 lines
arch/powerpc/kvm/powerpc.c +1
-6-else - vcpu->guest_debug.bp[i] =0 ; - } - } - -return 0 ; +return -EINVAL ; } static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
This doesn't apply. What was it diffed against?
Signature · 6 lines
error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 KVM: PowerPC: Disarm old guest debug interface
Quoted 2 lines · Avi Kivity
This doesn't apply. What was it diffed against?
Hmm, looks like a slightly older tree. This should apply.
kvm: ppc: remove debug support broken by KVM debug rewrite
After the rewrite of KVM's debug support, this code doesn't even build any more.
arch/powerpc/include/asm/kvm_host.h +0 -5
@@ -111,11 +111,6 @@ struct kvm_arch {struct kvm_vcpu_arch {u32 host_stack;u32 host_pid; -u32 host_dbcr0; -u32 host_dbcr1; -u32 host_dbcr2; -u32 host_iac[4 ]; -u32 host_msr;u64 fpr[32 ];ulong gpr[32 ];
arch/powerpc/include/asm/kvm_ppc.h +0 -3
@@ -77,9 +77,6 @@ extern int kvmppc_core_vcpu_translate(struct kvm_vcpu *vcpu,extern void kvmppc_core_vcpu_load (struct kvm_vcpu *vcpu,int cpu);extern void kvmppc_core_vcpu_put (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_guest_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_load_host_debugstate (struct kvm_vcpu *vcpu); -extern void kvmppc_core_deliver_interrupts (struct kvm_vcpu *vcpu);extern int kvmppc_core_pending_dec (struct kvm_vcpu *vcpu);extern void kvmppc_core_queue_program (struct kvm_vcpu *vcpu);
arch/powerpc/kvm/44x.c +0 -66
72 lines not on this page · raw message
arch/powerpc/kvm/powerpc.c +2 -25
@@ -217,41 +217,18 @@ void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)void kvm_arch_vcpu_load (struct kvm_vcpu *vcpu,int cpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_guest_debugstate (vcpu); -kvmppc_core_vcpu_load (vcpu, cpu); }void kvm_arch_vcpu_put (struct kvm_vcpu *vcpu) { -if (vcpu->guest_debug.enabled) -kvmppc_core_load_host_debugstate (vcpu); - -/* Don't leave guest TLB entries resident when being de-scheduled. */ -/* XXX It would be nice to differentiate between heavyweight exit and -* sched_out here, since we could avoid the TLB flush for heavyweight -* exits. */ -_tlbil_all ();kvmppc_core_vcpu_put (vcpu); }int kvm_arch_vcpu_ioctl_set_guest_debug (struct kvm_vcpu *vcpu, -struct kvm_guest_debug *dbg) +struct kvm_guest_debug *dbg) { -int i; - - vcpu->guest_debug.enabled = dbg->enabled; -if (vcpu->guest_debug.enabled) { -for (i=0 ; i <ARRAY_SIZE (vcpu->guest_debug.bp); i++) { -if (dbg->breakpoints[i].enabled) - vcpu->guest_debug.bp[i] = dbg->breakpoints[i].address; -else - vcpu->guest_debug.bp[i] =0 ; - } - } - -return 0 ; +return -EINVAL ; } static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
Signature · 2 lines
Hollis Blanchard IBM Linux Technology Center
Avi Kivity
AppliedQuoted 7 lines
kvm: ppc: remove debug support broken by KVM debug rewrite
After the rewrite of KVM's debug support, this code doesn't even build any more.
Applied, thanks.
Signature · 6 lines
error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html