From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Subject: Re: [PATCH 2/2] KVM : powerpc/booke: Allow debug interrupt injection to guest Date: Tue, 01 Jul 2014 12:48:18 +0200 Message-ID: <53B291F2.2080707@suse.de> References: <1403850306-12394-1-git-send-email-Bharat.Bhushan@freescale.com> <1403850306-12394-3-git-send-email-Bharat.Bhushan@freescale.com> <1403893398.2435.111.camel@snotra.buserror.net> <120d75cc52bf4c2faa9b12523887f1c4@DM2PR03MB574.namprd03.prod.outlook.com> <1404159947.2435.170.camel@snotra.buserror.net> <819D42C0-A555-4B92-A951-2CF32F2AD170@suse.de> <53B2897F.2030001@suse.de> <8680485fcf45425a8a19099f0d544a75@DM2PR03MB574.namprd03.prod.outlook.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "kvm-ppc@vger.kernel.org" , "kvm@vger.kernel.org" To: "Bharat.Bhushan@freescale.com" , Scott Wood Return-path: In-Reply-To: <8680485fcf45425a8a19099f0d544a75@DM2PR03MB574.namprd03.prod.outlook.com> Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 01.07.14 12:30, Bharat.Bhushan@freescale.com wrote: > >> -----Original Message----- >> From: Alexander Graf [mailto:agraf@suse.de] >> Sent: Tuesday, July 01, 2014 3:42 PM >> To: Bhushan Bharat-R65777; Wood Scott-B07421 >> Cc: kvm-ppc@vger.kernel.org; kvm@vger.kernel.org >> Subject: Re: [PATCH 2/2] KVM : powerpc/booke: Allow debug interrupt injection to >> guest >> >> >> On 01.07.14 12:06, Bharat.Bhushan@freescale.com wrote: >>>> -----Original Message----- >>>> From: Alexander Graf [mailto:agraf@suse.de] >>>> Sent: Tuesday, July 01, 2014 11:53 AM >>>> To: Wood Scott-B07421 >>>> Cc: Bhushan Bharat-R65777; kvm-ppc@vger.kernel.org; >>>> kvm@vger.kernel.org >>>> Subject: Re: [PATCH 2/2] KVM : powerpc/booke: Allow debug interrupt >>>> injection to guest >>>> >>>> >>>> >>>>> Am 30.06.2014 um 22:25 schrieb Scott Wood : >>>>> >>>>>> On Sun, 2014-06-29 at 23:38 -0500, Bhushan Bharat-R65777 wrote: >>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Wood Scott-B07421 >>>>>>> Sent: Friday, June 27, 2014 11:53 PM >>>>>>> To: Bhushan Bharat-R65777 >>>>>>> Cc: agraf@suse.de; kvm-ppc@vger.kernel.org; kvm@vger.kernel.org >>>>>>> Subject: Re: [PATCH 2/2] KVM : powerpc/booke: Allow debug >>>>>>> interrupt injection to guest >>>>>>> >>>>>>>> On Fri, 2014-06-27 at 11:55 +0530, Bharat Bhushan wrote: >>>>>>>> - /* Force enable debug interrupts when user space wants to debug */ >>>>>>>> - if (vcpu->guest_debug) { >>>>>>>> + /* >>>>>>>> + * Force enable debug interrupts when user space wants to debug >>>>>>>> + * and there is no debug interrupt pending for guest to handle. >>>>>>>> + */ >>>>>>>> + if (vcpu->guest_debug && !kvmppc_core_pending_debug(vcpu)) { >>>>>>> Are you trying to allow the guest to be simultaneously debugged by >>>>>>> itself and by host userspace? How does this work? >>>>>> Not actually, Currently we are not partitioning debug resources >>>>>> between host userspace and guest. In fact we do not emulate debug >>>>>> registers for guest. But we want host userspace to pass the >>>>>> interrupt to guest if it is not able to handle. >>>>> I don't understand the logic here. A debug interrupt should be >>>>> injected when the programming model in the guest says that a debug >>>>> interrupt should happen. How can that occur currently? If the >>>>> guest didn't set up the debug registers and QEMU still can't handle >>>>> the debug interrupt, that's a bug in QEMU (or KVM, or the hardware...). >>>>> Injecting the interrupt into the guest just adds another bug on top of that. >>>> I don't think QEMU should be aware of these limitations. >>>> >>>>>>>> #ifdef CONFIG_KVM_BOOKE_HV >>>>>>>> /* >>>>>>>> * Since there is no shadow MSR, sync MSR_DE into the >>>>>>>> guest @@ >>>>>>>> -264,6 +272,16 @@ static void kvmppc_core_dequeue_watchdog(struct >>>>>>>> kvm_vcpu >>>>>>> *vcpu) >>>>>>>> clear_bit(BOOKE_IRQPRIO_WATCHDOG, >>>>>>>> &vcpu->arch.pending_exceptions); } >>>>>>>> >>>>>>>> +static void kvmppc_core_queue_debug(struct kvm_vcpu *vcpu) { >>>>>>>> + kvmppc_booke_queue_irqprio(vcpu, BOOKE_IRQPRIO_DEBUG); } >>>>>>>> + >>>>>>>> +static void kvmppc_core_dequeue_debug(struct kvm_vcpu *vcpu) { >>>>>>>> + clear_bit(BOOKE_IRQPRIO_DEBUG, >>>>>>>> +&vcpu->arch.pending_exceptions); } >>>>>>> Is there currently no support for a guest debugging itself (i.e. >>>>>>> guest_debug unset) on e500v2? >>>>>> Yes, It is not yet supported (IACx/DACx/DBCR/DBSR/DSRRx are not yet >>>> emulated). >>>>> How is it useful to inject a debug exception into the guest, until >>>>> these things are emulated? >>>> We don't have to touch QEMU later then ;). But I agree that it would >>>> make a lot of sense to enable guest debugging along the way - it can't be >> that hard, no? >>> Copy pasting my response in another email: >>> >>> " >>> Ok, Till we add support for guest to used debug resource, can we say that >> userspace will still try to inject debug interrupt (as it does not know guest >> capability) to guest but KVM will: >>> - clear guest dbsr >> Can we fake the value of DBSR that the guest sees? > Yes; we can hack the dbsr emulation with a comment :) > But why we want that? I guess I don't fully grasp what you're proposing :). Alex