RE: [PATCH 4/5] KVM: PPC: BOOKE: Clear guest dbsr in userspace exit KVM_EXIT_DEBUG

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Tuesday, August 05, 2014 4:17 AM
> To: Bhushan Bharat-R65777
> Cc: agraf@xxxxxxx; kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; Yoder Stuart-
> B08248
> Subject: Re: [PATCH 4/5] KVM: PPC: BOOKE: Clear guest dbsr in userspace exit
> KVM_EXIT_DEBUG
> 
> On Mon, 2014-08-04 at 13:22 +0530, Bharat Bhushan wrote:
> > Dbsr is not visible to userspace and we do not think any need to
> > expose this to userspace because:
> >   Userspace cannot inject debug interrupt to guest (as this
> >   does not know guest ability to handle debug interrupt), so
> >   userspace will always clear DBSR.
> >   Now if userspace has to always clear DBSR in KVM_EXIT_DEBUG
> >   handling then clearing dbsr in kernel looks simple as this
> >   avoid doing SET_SREGS/set_one_reg() to clear DBSR
> >
> > Signed-off-by: Bharat Bhushan <Bharat.Bhushan@xxxxxxxxxxxxx>
> > ---
> >  arch/powerpc/kvm/booke.c | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index
> > 322da7d..5c2e26a 100644
> > --- a/arch/powerpc/kvm/booke.c
> > +++ b/arch/powerpc/kvm/booke.c
> > @@ -735,6 +735,17 @@ static int kvmppc_handle_debug(struct kvm_run *run,
> struct kvm_vcpu *vcpu)
> >  	struct debug_reg *dbg_reg = &(vcpu->arch.shadow_dbg_reg);
> >  	u32 dbsr = vcpu->arch.dbsr;
> >
> > +	/* Clear guest dbsr (vcpu->arch.dbsr).
> > +	 * dbsr is not visible to userspace and we do not think any
> > +	 * need to expose this to userspace because:
> > +	 * Userspace cannot inject debug interrupt to guest (as this does
> > +	 * not know guest ability to handle debug interrupt), so userspace
> > +	 * will always clear DBSR.
> > +	 * Now if userspace has to always clear DBSR in KVM_EXIT_DEBUG
> > +	 * handling then clearing here looks simple as this
> > +	 * avoid doing SET_SREGS/set_one_reg() to clear DBSR
> > +	 */
> > +	vcpu->arch.dbsr = 0;
> >  	run->debug.arch.status = 0;
> >  	run->debug.arch.address = vcpu->arch.pc;
> >
> 
> I think the changelog is adequate -- I don't think we need to be so verbose in
> the code itself.  The question was just whether this was a userspace-visible
> change, and it isn't.

Ok, will make a small comment.

> 
> FWIW, I think dbsr should be visible to userspace in general (regardless of
> whether it's cleared here), because all guest registers should be visible to
> userspace.  I may be debugging a guest through means that don't require owning
> debug resources, such as stopping and inspecting a guest that has hung or
> crashed.

Do you mean that we should also add a one-reg interface for DBSR ?

Thanks
-Bharat

> 
> -Scott
> 

��.n��������+%������w��{.n�����o�^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux