From: Frederic Weisbecker <fweisbec@gmail.com>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linuxtronix.de>,
Mike Galbraith <efault@gmx.de>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Paul Mackerras <paulus@samba.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Anton Blanchard <anton@samba.org>, Li Zefan <lizf@cn.fujitsu.com>,
Zhaolei <zhaolei@cn.fujitsu.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
"K . Prasad" <prasad@linux.vnet.ibm.com>,
Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [RFC][PATCH 1/5] hw-breakpoints: Make kernel breakpoints API truly generic
Date: Sat, 25 Jul 2009 04:37:25 +0200 [thread overview]
Message-ID: <20090725023723.GB5100@nowhere> (raw)
In-Reply-To: <20090720172748.GA27660@Krystal>
On Mon, Jul 20, 2009 at 01:27:48PM -0400, Mathieu Desnoyers wrote:
> * Frederic Weisbecker (fweisbec@gmail.com) wrote:
> [...]
> > diff --git a/kernel/hw_breakpoint.c b/kernel/hw_breakpoint.c
> > index c1f64e6..015fec6 100644
> > --- a/kernel/hw_breakpoint.c
> > +++ b/kernel/hw_breakpoint.c
> > @@ -297,15 +297,21 @@ EXPORT_SYMBOL_GPL(unregister_user_hw_breakpoint);
> > /**
> > * register_kernel_hw_breakpoint - register a hardware breakpoint for kernel space
> > * @bp: the breakpoint structure to register
> > - *
> > - * @bp.info->name or @bp.info->address, @bp.info->len, @bp.info->type and
> > + * @addr: the address where we want to set the breakpoint
> > + * @len: length of the value in memory to break in
> > + * @type: the type of the breakpoint (read/write/execute)
> > * @bp->triggered must be set properly before invocation
>
> Hi Frederic,
>
> I think one of the great addition in this patchset is to allow using
> breakpoints from arch-agnostic code.
>
> It becomes important to document the error values which can be returned
> by register_kernel_hw_breakpoint, so this will serve as guidelines for
> architecture-specific arch_fill_hw_breakpoint() implementation. This
> will become increasingly important, as this abstraction layer will
> basically be responsible for either:
>
> - Finding the best support the architecture can provide for a given hw
> breakpoint.
Indeed, and that's the biggest problem it has to face because supported
hardware breakpoint features are very differents from one architecture
to another.
> - Failing with an explicit error value telling the in-kernel user why it
> failed (e.g. if it must use a fallback, or return the error to the
> user).
Yeah, nice point, I'll send another iteration which better documents the error
return values, at least once I get a mostly agreed core implementation :-)
> Maybe we should think of a more flexible breakpoint type mapping too,
> e.g.:
>
> monitor _strictly_ execute operation on address 0x...
> -> would fail if the architecture does not support execution access
> monitoring
> monitor (at least) execute operations on address 0x...
> -> would be allowed to use a more general monitor (e.g. RWX) if the
> architecture does not support "execute only" monitor.
>
> (same for read and write)
>
> Mathieu
Well, I'm not sure the problem mostly resides in the hardware implementation
of strict exec breakpoint types. But I guess your point is not limiting to
that. Yeah for example, x86 doesn't support read-only breakpoints.
But I guess that can be simulated using software artifacts, for example using
READ-WRITE breakpoints + the x86 decoder API, recently submitted by Masami,
to find the nature of the current instruction.
Anyway, your point is indeed important: return common error values for unsupported
breakpoint operations.
Thanks.
>
> > *
> > */
> > -int register_kernel_hw_breakpoint(struct hw_breakpoint *bp)
> > +int register_kernel_hw_breakpoint(struct hw_breakpoint *bp, unsigned long addr,
> > + int len, enum breakpoint_type type)
> > {
> > int rc;
> >
> > + rc = arch_fill_hw_breakpoint(bp, addr, len, type);
> > + if (rc)
> > + return rc;
> > +
> > rc = arch_validate_hwbkpt_settings(bp, NULL);
> > if (rc)
> > return rc;
> --
> Mathieu Desnoyers
> OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2009-07-25 2:37 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-20 17:08 [RFC][PATCH 0/5] hw-breakpoints: Make the API generic + support for perfcounters Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 1/5] hw-breakpoints: Make kernel breakpoints API truly generic Frederic Weisbecker
2009-07-20 17:27 ` Mathieu Desnoyers
2009-07-25 2:37 ` Frederic Weisbecker [this message]
2009-07-25 15:38 ` Mathieu Desnoyers
2009-07-28 1:35 ` Frederic Weisbecker
2009-07-21 11:15 ` K.Prasad
2009-07-25 2:56 ` Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 2/5] hw-breakpoints: Pull up the target symbol in a generic field Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 3/5] hw-breakpoints: Make user breakpoints API truly generic Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 4/5] perfcounter: Grow the event number to 64 bits Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 5/5] perfcounter: Add support for kernel hardware breakpoints Frederic Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-21 7:11 ` Frédéric Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-21 7:19 ` Frédéric Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-20 21:22 ` Frédéric Weisbecker
2009-07-24 20:20 ` Masami Hiramatsu
2009-07-23 13:08 ` Peter Zijlstra
2009-07-23 17:45 ` Peter Zijlstra
2009-07-23 19:56 ` Alan Stern
2009-07-24 14:02 ` Frédéric Weisbecker
2009-07-24 14:26 ` Peter Zijlstra
2009-07-24 17:47 ` Frederic Weisbecker
2009-07-25 10:56 ` Peter Zijlstra
2009-07-25 14:19 ` Frederic Weisbecker
2009-07-25 15:51 ` Mathieu Desnoyers
2009-07-25 16:27 ` Peter Zijlstra
2009-07-25 16:22 ` Peter Zijlstra
2009-07-25 23:57 ` K.Prasad
2009-07-27 8:53 ` Peter Zijlstra
2009-07-28 1:03 ` Frederic Weisbecker
2009-07-28 7:24 ` Peter Zijlstra
2009-07-28 14:04 ` Mathieu Desnoyers
2009-07-28 14:42 ` Peter Zijlstra
2009-07-29 0:36 ` Frederic Weisbecker
2009-07-29 8:28 ` Peter Zijlstra
2009-07-29 14:03 ` Frederic Weisbecker
2009-07-28 16:12 ` K.Prasad
2009-07-28 16:41 ` Peter Zijlstra
2009-07-29 6:37 ` K.Prasad
2009-07-29 9:22 ` Peter Zijlstra
2009-07-29 14:57 ` Arnaldo Carvalho de Melo
2009-07-28 0:18 ` Frederic Weisbecker
2009-07-28 7:26 ` Peter Zijlstra
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=20090725023723.GB5100@nowhere \
--to=fweisbec@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=anton@samba.org \
--cc=efault@gmx.de \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=prasad@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linuxtronix.de \
--cc=zhaolei@cn.fujitsu.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.