Clearing DBSR and DBCR0 in host handler.

Bhushan Bharat-R65777 R65777 at freescale.com
Thu Apr 4 04:33:12 EST 2013



> -----Original Message-----
> From: Kumar Gala [mailto:galak at kernel.crashing.org]
> Sent: Wednesday, April 03, 2013 9:41 PM
> To: Bhushan Bharat-R65777
> Cc: linuxppc-dev at lists.ozlabs.org; Benjamin Herrenschmidt; Alexander Graf; Wood
> Scott-B07421
> Subject: Re: Clearing DBSR and DBCR0 in host handler.
> 
> 
> On Apr 3, 2013, at 10:24 AM, Bhushan Bharat-R65777 wrote:
> 
> > Hi All,
> >
> > The kernel exception handling code for 32 bit (transfer_to_handler in
> entry_32.S) clear DBSR and load DBCR0 with 0 (global_dbcr0 variable, which is
> zero) if user space used debug (DBCR0.IDM set).
> >
> > But I do not same (clearing DBCR0 and DBSR) in 64bit exception handler. Is
> this an issue or I am missing something?
> >
> > Thanks
> > -Bharat
> 
> Are you having a problem with debug w/the 64-bit kernel?

No not any issue, I was looking into code where it saves/restores of debug register. I observed the above said inconsistency in 32 bit and 64 bit.

>  The 32-bit kernel
> supports several kernel level debug features that the 64-bit doesn't support.

I am talking about the a user process debugging:
	-  A user process is under debugging using gdb. So the h/w debug register will have thread context.
	-  An interrupt/exception happens in user process.
	-  Now on 32 bit we clear the DBSR (pending events) and DBCR0 (so no new events get captured). But on 64bit we do not follow same, Why it is so?
	   Are we doing something extra on 32 bit or something is missing on 64 bit? 
	   Can it happen that on 64 bit some more debug events get captured and debug interrupts get fired if MSR.DE is set, which is undesired. 

Or I am missing something here ?

Thanks
-Bharat

> So if you are having an issue that might be more helpful to convey that just
> asking about exception code path.
> 
> - k



More information about the Linuxppc-dev mailing list