Message ID | 1362024796-4237-3-git-send-email-bharat.bhushan@freescale.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/27/2013 10:13:11 PM, Bharat Bhushan wrote: > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index 8b553c0..a41cd6d 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu > *vcpu, struct kvm_one_reg *reg) > case KVM_REG_PPC_TSR: > r = put_user(vcpu->arch.tsr, (u32 __user > *)(long)reg->addr); > break; > + case KVM_REG_PPC_DEBUG_INST: { > + u32 opcode = KVMPPC_INST_EHPRIV; > + r = copy_to_user((u32 __user *)(long)reg->addr, > + &opcode, sizeof(u32)); > + break; > + } We're using ehpriv even for PR-mode KVM (e.g. e500v2)? -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 28.02.2013, at 17:23, Scott Wood wrote: > On 02/27/2013 10:13:11 PM, Bharat Bhushan wrote: >> diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c >> index 8b553c0..a41cd6d 100644 >> --- a/arch/powerpc/kvm/booke.c >> +++ b/arch/powerpc/kvm/booke.c >> @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) >> case KVM_REG_PPC_TSR: >> r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); >> break; >> + case KVM_REG_PPC_DEBUG_INST: { >> + u32 opcode = KVMPPC_INST_EHPRIV; >> + r = copy_to_user((u32 __user *)(long)reg->addr, >> + &opcode, sizeof(u32)); >> + break; >> + } > > We're using ehpriv even for PR-mode KVM (e.g. e500v2)? If it's a reserved instruction, that should work. Since we need to use a single instruction to replace the debugged one with, any reserved opcode should be as good as any other, right? Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: kvm-ppc-owner@vger.kernel.org [mailto:kvm-ppc- > owner@vger.kernel.org] On Behalf Of Alexander Graf > Sent: Thursday, February 28, 2013 10:22 PM > To: Wood Scott-B07421 > Cc: Bhushan Bharat-R65777; kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; > Bhushan Bharat-R65777 > Subject: Re: [PATCH 2/7] Added ONE_REG interface for debug instruction > > > On 28.02.2013, at 17:23, Scott Wood wrote: > > > On 02/27/2013 10:13:11 PM, Bharat Bhushan wrote: > >> diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > >> index 8b553c0..a41cd6d 100644 > >> --- a/arch/powerpc/kvm/booke.c > >> +++ b/arch/powerpc/kvm/booke.c > >> @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu > *vcpu, struct kvm_one_reg *reg) > >> case KVM_REG_PPC_TSR: > >> r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); > >> break; > >> + case KVM_REG_PPC_DEBUG_INST: { > >> + u32 opcode = KVMPPC_INST_EHPRIV; > >> + r = copy_to_user((u32 __user *)(long)reg->addr, > >> + &opcode, sizeof(u32)); > >> + break; > >> + } > > > > We're using ehpriv even for PR-mode KVM (e.g. e500v2)? > > If it's a reserved instruction, that should work. Since we need to use a > single instruction to replace the debugged one with, any reserved opcode > should be as good as any other, right? Right, that has been the idea here. Thanks -Bharat > > > Alex > > -- > To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the > body of a message to majordomo@vger.kernel.org More majordomo info at > http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 28.02.2013, at 05:13, Bharat Bhushan wrote: > This patch adds the one_reg interface to get the special instruction > to be used for setting software breakpoint from userspace. > > Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> > --- > Documentation/virtual/kvm/api.txt | 1 + > arch/powerpc/include/asm/kvm_book3s.h | 1 + > arch/powerpc/include/asm/kvm_booke.h | 2 ++ > arch/powerpc/include/uapi/asm/kvm.h | 4 ++++ > arch/powerpc/kvm/book3s.c | 6 ++++++ > arch/powerpc/kvm/booke.c | 6 ++++++ > 6 files changed, 20 insertions(+), 0 deletions(-) > > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt > index cce500a..dbfcc04 100644 > --- a/Documentation/virtual/kvm/api.txt > +++ b/Documentation/virtual/kvm/api.txt > @@ -1766,6 +1766,7 @@ registers, find a list below: > PPC | KVM_REG_PPC_TSR | 32 > PPC | KVM_REG_PPC_OR_TSR | 32 > PPC | KVM_REG_PPC_CLEAR_TSR | 32 > + PPC | KVM_REG_PPC_DEBUG_INST| 32 > > 4.69 KVM_GET_ONE_REG > > diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h > index 5a56e1c..36164cc 100644 > --- a/arch/powerpc/include/asm/kvm_book3s.h > +++ b/arch/powerpc/include/asm/kvm_book3s.h > @@ -458,6 +458,7 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) > #define OSI_SC_MAGIC_R4 0x77810F9B > > #define INS_DCBZ 0x7c0007ec > +#define INS_TW 0x7c000008 This one should be "trap", so TO needs to be 31. The instruction as it's here is a nop if I read the spec correctly. Alex > > /* LPIDs we support with this build -- runtime limit may be lower */ > #define KVMPPC_NR_LPIDS (LPID_RSVD + 1) > diff --git a/arch/powerpc/include/asm/kvm_booke.h b/arch/powerpc/include/asm/kvm_booke.h > index b7cd335..d3c1eb3 100644 > --- a/arch/powerpc/include/asm/kvm_booke.h > +++ b/arch/powerpc/include/asm/kvm_booke.h > @@ -26,6 +26,8 @@ > /* LPIDs we support with this build -- runtime limit may be lower */ > #define KVMPPC_NR_LPIDS 64 > > +#define KVMPPC_INST_EHPRIV 0x7c00021c > + > static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val) > { > vcpu->arch.gpr[num] = val; > diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h > index ef072b1..c2ff99c 100644 > --- a/arch/powerpc/include/uapi/asm/kvm.h > +++ b/arch/powerpc/include/uapi/asm/kvm.h > @@ -422,4 +422,8 @@ struct kvm_get_htab_header { > #define KVM_REG_PPC_CLEAR_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88) > #define KVM_REG_PPC_TCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89) > #define KVM_REG_PPC_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a) > + > +/* Debugging: Special instruction for software breakpoint */ > +#define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b) > + > #endif /* __LINUX_KVM_POWERPC_H */ > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c > index a4b6452..975a401 100644 > --- a/arch/powerpc/kvm/book3s.c > +++ b/arch/powerpc/kvm/book3s.c > @@ -530,6 +530,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) > val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]); > break; > #endif /* CONFIG_ALTIVEC */ > + case KVM_REG_PPC_DEBUG_INST: { > + u32 opcode = INS_TW; > + r = copy_to_user((u32 __user *)(long)reg->addr, > + &opcode, sizeof(u32)); > + break; > + } > default: > r = -EINVAL; > break; > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index 8b553c0..a41cd6d 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) > case KVM_REG_PPC_TSR: > r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); > break; > + case KVM_REG_PPC_DEBUG_INST: { > + u32 opcode = KVMPPC_INST_EHPRIV; > + r = copy_to_user((u32 __user *)(long)reg->addr, > + &opcode, sizeof(u32)); > + break; > + } > default: > break; > } > -- > 1.7.0.4 > > > -- > To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Alexander Graf [mailto:agraf@suse.de] > Sent: Thursday, March 07, 2013 6:38 PM > To: Bhushan Bharat-R65777 > Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan > Bharat-R65777 > Subject: Re: [PATCH 2/7] Added ONE_REG interface for debug instruction > > > On 28.02.2013, at 05:13, Bharat Bhushan wrote: > > > This patch adds the one_reg interface to get the special instruction > > to be used for setting software breakpoint from userspace. > > > > Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> > > --- > > Documentation/virtual/kvm/api.txt | 1 + > > arch/powerpc/include/asm/kvm_book3s.h | 1 + > > arch/powerpc/include/asm/kvm_booke.h | 2 ++ > > arch/powerpc/include/uapi/asm/kvm.h | 4 ++++ > > arch/powerpc/kvm/book3s.c | 6 ++++++ > > arch/powerpc/kvm/booke.c | 6 ++++++ > > 6 files changed, 20 insertions(+), 0 deletions(-) > > > > diff --git a/Documentation/virtual/kvm/api.txt > > b/Documentation/virtual/kvm/api.txt > > index cce500a..dbfcc04 100644 > > --- a/Documentation/virtual/kvm/api.txt > > +++ b/Documentation/virtual/kvm/api.txt > > @@ -1766,6 +1766,7 @@ registers, find a list below: > > PPC | KVM_REG_PPC_TSR | 32 > > PPC | KVM_REG_PPC_OR_TSR | 32 > > PPC | KVM_REG_PPC_CLEAR_TSR | 32 > > + PPC | KVM_REG_PPC_DEBUG_INST| 32 > > > > 4.69 KVM_GET_ONE_REG > > > > diff --git a/arch/powerpc/include/asm/kvm_book3s.h > > b/arch/powerpc/include/asm/kvm_book3s.h > > index 5a56e1c..36164cc 100644 > > --- a/arch/powerpc/include/asm/kvm_book3s.h > > +++ b/arch/powerpc/include/asm/kvm_book3s.h > > @@ -458,6 +458,7 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu > *vcpu) > > #define OSI_SC_MAGIC_R4 0x77810F9B > > > > #define INS_DCBZ 0x7c0007ec > > +#define INS_TW 0x7c000008 > > This one should be "trap", so TO needs to be 31. The instruction as it's here is > a nop if I read the spec correctly. Yes I missed this. BTW rather than setting TO = 31, what if we set TO = 2 as RA and RB is same here. -Bharat > > Alex > > > > > /* LPIDs we support with this build -- runtime limit may be lower */ > > #define KVMPPC_NR_LPIDS (LPID_RSVD + 1) > > diff --git a/arch/powerpc/include/asm/kvm_booke.h > > b/arch/powerpc/include/asm/kvm_booke.h > > index b7cd335..d3c1eb3 100644 > > --- a/arch/powerpc/include/asm/kvm_booke.h > > +++ b/arch/powerpc/include/asm/kvm_booke.h > > @@ -26,6 +26,8 @@ > > /* LPIDs we support with this build -- runtime limit may be lower */ > > #define KVMPPC_NR_LPIDS 64 > > > > +#define KVMPPC_INST_EHPRIV 0x7c00021c > > + > > static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, > > ulong val) { > > vcpu->arch.gpr[num] = val; > > diff --git a/arch/powerpc/include/uapi/asm/kvm.h > > b/arch/powerpc/include/uapi/asm/kvm.h > > index ef072b1..c2ff99c 100644 > > --- a/arch/powerpc/include/uapi/asm/kvm.h > > +++ b/arch/powerpc/include/uapi/asm/kvm.h > > @@ -422,4 +422,8 @@ struct kvm_get_htab_header { > > #define KVM_REG_PPC_CLEAR_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88) > > #define KVM_REG_PPC_TCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89) > > #define KVM_REG_PPC_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a) > > + > > +/* Debugging: Special instruction for software breakpoint */ > > +#define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b) > > + > > #endif /* __LINUX_KVM_POWERPC_H */ > > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c > > index a4b6452..975a401 100644 > > --- a/arch/powerpc/kvm/book3s.c > > +++ b/arch/powerpc/kvm/book3s.c > > @@ -530,6 +530,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, > struct kvm_one_reg *reg) > > val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]); > > break; > > #endif /* CONFIG_ALTIVEC */ > > + case KVM_REG_PPC_DEBUG_INST: { > > + u32 opcode = INS_TW; > > + r = copy_to_user((u32 __user *)(long)reg->addr, > > + &opcode, sizeof(u32)); > > + break; > > + } > > default: > > r = -EINVAL; > > break; > > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index > > 8b553c0..a41cd6d 100644 > > --- a/arch/powerpc/kvm/booke.c > > +++ b/arch/powerpc/kvm/booke.c > > @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, > struct kvm_one_reg *reg) > > case KVM_REG_PPC_TSR: > > r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); > > break; > > + case KVM_REG_PPC_DEBUG_INST: { > > + u32 opcode = KVMPPC_INST_EHPRIV; > > + r = copy_to_user((u32 __user *)(long)reg->addr, > > + &opcode, sizeof(u32)); > > + break; > > + } > > default: > > break; > > } > > -- > > 1.7.0.4 > > > > > > -- > > To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in > > the body of a message to majordomo@vger.kernel.org More majordomo info > > at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 14.03.2013, at 05:30, Bhushan Bharat-R65777 wrote: > > >> -----Original Message----- >> From: Alexander Graf [mailto:agraf@suse.de] >> Sent: Thursday, March 07, 2013 6:38 PM >> To: Bhushan Bharat-R65777 >> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org; Wood Scott-B07421; Bhushan >> Bharat-R65777 >> Subject: Re: [PATCH 2/7] Added ONE_REG interface for debug instruction >> >> >> On 28.02.2013, at 05:13, Bharat Bhushan wrote: >> >>> This patch adds the one_reg interface to get the special instruction >>> to be used for setting software breakpoint from userspace. >>> >>> Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> >>> --- >>> Documentation/virtual/kvm/api.txt | 1 + >>> arch/powerpc/include/asm/kvm_book3s.h | 1 + >>> arch/powerpc/include/asm/kvm_booke.h | 2 ++ >>> arch/powerpc/include/uapi/asm/kvm.h | 4 ++++ >>> arch/powerpc/kvm/book3s.c | 6 ++++++ >>> arch/powerpc/kvm/booke.c | 6 ++++++ >>> 6 files changed, 20 insertions(+), 0 deletions(-) >>> >>> diff --git a/Documentation/virtual/kvm/api.txt >>> b/Documentation/virtual/kvm/api.txt >>> index cce500a..dbfcc04 100644 >>> --- a/Documentation/virtual/kvm/api.txt >>> +++ b/Documentation/virtual/kvm/api.txt >>> @@ -1766,6 +1766,7 @@ registers, find a list below: >>> PPC | KVM_REG_PPC_TSR | 32 >>> PPC | KVM_REG_PPC_OR_TSR | 32 >>> PPC | KVM_REG_PPC_CLEAR_TSR | 32 >>> + PPC | KVM_REG_PPC_DEBUG_INST| 32 >>> >>> 4.69 KVM_GET_ONE_REG >>> >>> diff --git a/arch/powerpc/include/asm/kvm_book3s.h >>> b/arch/powerpc/include/asm/kvm_book3s.h >>> index 5a56e1c..36164cc 100644 >>> --- a/arch/powerpc/include/asm/kvm_book3s.h >>> +++ b/arch/powerpc/include/asm/kvm_book3s.h >>> @@ -458,6 +458,7 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu >> *vcpu) >>> #define OSI_SC_MAGIC_R4 0x77810F9B >>> >>> #define INS_DCBZ 0x7c0007ec >>> +#define INS_TW 0x7c000008 >> >> This one should be "trap", so TO needs to be 31. The instruction as it's here is >> a nop if I read the spec correctly. > > Yes I missed this. > BTW rather than setting TO = 31, what if we set TO = 2 as RA and RB is same here. Well, the unconditional "trap" instruction is simply defined as TO = 31, so I'd stick to that :) Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index cce500a..dbfcc04 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt @@ -1766,6 +1766,7 @@ registers, find a list below: PPC | KVM_REG_PPC_TSR | 32 PPC | KVM_REG_PPC_OR_TSR | 32 PPC | KVM_REG_PPC_CLEAR_TSR | 32 + PPC | KVM_REG_PPC_DEBUG_INST| 32 4.69 KVM_GET_ONE_REG diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h index 5a56e1c..36164cc 100644 --- a/arch/powerpc/include/asm/kvm_book3s.h +++ b/arch/powerpc/include/asm/kvm_book3s.h @@ -458,6 +458,7 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) #define OSI_SC_MAGIC_R4 0x77810F9B #define INS_DCBZ 0x7c0007ec +#define INS_TW 0x7c000008 /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS (LPID_RSVD + 1) diff --git a/arch/powerpc/include/asm/kvm_booke.h b/arch/powerpc/include/asm/kvm_booke.h index b7cd335..d3c1eb3 100644 --- a/arch/powerpc/include/asm/kvm_booke.h +++ b/arch/powerpc/include/asm/kvm_booke.h @@ -26,6 +26,8 @@ /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS 64 +#define KVMPPC_INST_EHPRIV 0x7c00021c + static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val) { vcpu->arch.gpr[num] = val; diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h index ef072b1..c2ff99c 100644 --- a/arch/powerpc/include/uapi/asm/kvm.h +++ b/arch/powerpc/include/uapi/asm/kvm.h @@ -422,4 +422,8 @@ struct kvm_get_htab_header { #define KVM_REG_PPC_CLEAR_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88) #define KVM_REG_PPC_TCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89) #define KVM_REG_PPC_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a) + +/* Debugging: Special instruction for software breakpoint */ +#define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b) + #endif /* __LINUX_KVM_POWERPC_H */ diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index a4b6452..975a401 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -530,6 +530,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]); break; #endif /* CONFIG_ALTIVEC */ + case KVM_REG_PPC_DEBUG_INST: { + u32 opcode = INS_TW; + r = copy_to_user((u32 __user *)(long)reg->addr, + &opcode, sizeof(u32)); + break; + } default: r = -EINVAL; break; diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index 8b553c0..a41cd6d 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c @@ -1448,6 +1448,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) case KVM_REG_PPC_TSR: r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); break; + case KVM_REG_PPC_DEBUG_INST: { + u32 opcode = KVMPPC_INST_EHPRIV; + r = copy_to_user((u32 __user *)(long)reg->addr, + &opcode, sizeof(u32)); + break; + } default: break; }
This patch adds the one_reg interface to get the special instruction to be used for setting software breakpoint from userspace. Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> --- Documentation/virtual/kvm/api.txt | 1 + arch/powerpc/include/asm/kvm_book3s.h | 1 + arch/powerpc/include/asm/kvm_booke.h | 2 ++ arch/powerpc/include/uapi/asm/kvm.h | 4 ++++ arch/powerpc/kvm/book3s.c | 6 ++++++ arch/powerpc/kvm/booke.c | 6 ++++++ 6 files changed, 20 insertions(+), 0 deletions(-)