From: "K.Prasad" <prasad@linux.vnet.ibm.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [RFC Patch 2/2][Bugfix][x86][hw-breakpoint] Fix return-code to notifier chain in hw_breakpoint_handler
Date: Fri, 1 Jan 2010 00:32:17 +0530 [thread overview]
Message-ID: <20091231190217.GC3676@in.ibm.com> (raw)
In-Reply-To: <20091231003808.GC23808@nowhere>
On Thu, Dec 31, 2009 at 01:38:09AM +0100, Frederic Weisbecker wrote:
> On Sat, Dec 26, 2009 at 11:58:33PM +0530, K.Prasad wrote:
> > The hw-breakpoint handler will return NOTIFY_DONE for user-space breakpoints
> > to generate SIGTRAP signal (and not for kernel-space addresses).
> >
> > Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com>
> > ---
> > arch/x86/kernel/hw_breakpoint.c | 9 +++++++--
> > 1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > Index: linux-2.6-tip/arch/x86/kernel/hw_breakpoint.c
> > ===================================================================
> > --- linux-2.6-tip.orig/arch/x86/kernel/hw_breakpoint.c
> > +++ linux-2.6-tip/arch/x86/kernel/hw_breakpoint.c
> > @@ -502,8 +502,6 @@ static int __kprobes hw_breakpoint_handl
> > rcu_read_lock();
> >
> > bp = per_cpu(bp_per_reg[i], cpu);
> > - if (bp)
> > - rc = NOTIFY_DONE;
> > /*
> > * Reset the 'i'th TRAP bit in dr6 to denote completion of
> > * exception handling
> > @@ -517,6 +515,13 @@ static int __kprobes hw_breakpoint_handl
> > rcu_read_unlock();
> > break;
> > }
> > + /*
> > + * Further processing in do_debug() is needed for a) user-space
> > + * breakpoints (to generate signals) and b) when the system has
> > + * taken exception due to multiple causes
> > + */
> > + if (bp->attr.bp_addr < TASK_SIZE)
> > + rc = NOTIFY_DONE;
> >
> > perf_bp_event(bp, args->regs);
> >
> >
>
>
> Oh and now that I see this patch, the previous one indeed makes sense
> with this check:
>
> if (dr6 & (~DR_TRAP_BITS))
> rc = NOTIFY_DONE;
>
> That said, it means thread.debugreg6 won't get the reserved bits anymore.
> I see some use of them from kvm (it restores the reserved bits on guest<->host
> switch). Not sure if this inconsistency could affect kvm...
>
Can you point me to the relevant code?
Anyway will copy this to Jan Kiszka <jan.kiszka@web.de> to hear what
this change means to KVM...on a similar note, will be happy to be
re-assured by Roland/Oleg about the patch's harmlessness to the
user-space (ptrace/utrace).
Hi Jan,
Patch 20091226182725.GB9494@in.ibm.com introduces a change that
Patch 1/2: Clears the arch-reserved bits from debug status register.
This helps easy bitwise operations - such as the check for non-trap bits in
hw_breakpoint_handler. A check for the same using
"if (dr6 & (~DR_TRAP_BITS))" throws incorrect results due to the
presence of preset reserved bits.
Let us know if you foresee any harm from the said change to the
behaviour seen under KVM.
Thanks,
K.Prasad
next prev parent reply other threads:[~2009-12-31 19:02 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20091226175533.149765731@linux.vnet.ibm.com>
2009-12-26 18:27 ` [RFC Patch 1/2][Bugfix][x86][hw-breakpoint] Clear reserved bits of DR6 in do_debug() K.Prasad
2009-12-30 23:45 ` Frederic Weisbecker
2009-12-31 18:49 ` K.Prasad
2010-01-10 3:22 ` Frederic Weisbecker
2009-12-26 18:28 ` [RFC Patch 2/2][Bugfix][x86][hw-breakpoint] Fix return-code to notifier chain in hw_breakpoint_handler K.Prasad
2009-12-31 0:33 ` Frederic Weisbecker
2009-12-31 0:38 ` Frederic Weisbecker
2009-12-31 19:02 ` K.Prasad [this message]
2010-01-10 3:18 ` Frederic Weisbecker
2010-01-11 19:15 ` Jan Kiszka
2010-01-16 19:41 ` K.Prasad
2010-01-20 6:01 ` K.Prasad
2010-01-22 9:14 ` Jan Kiszka
2010-01-22 9:21 ` K.Prasad
2010-01-25 22:21 ` Frederic Weisbecker
2010-01-27 10:29 ` K.Prasad
2009-12-31 0:44 ` Frederic Weisbecker
2010-01-25 22:11 ` Frederic Weisbecker
2010-01-27 10:28 ` K.Prasad
2010-01-27 16:11 ` Frederic Weisbecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091231190217.GC3676@in.ibm.com \
--to=prasad@linux.vnet.ibm.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox