From: Ingo Molnar <mingo@elte.hu>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: prasad@linux.vnet.ibm.com,
Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Roland McGrath <roland@redhat.com>
Subject: Re: [patch 02/11] x86 architecture implementation of Hardware Breakpoint interfaces
Date: Tue, 10 Mar 2009 18:26:05 +0100 [thread overview]
Message-ID: <20090310172605.GA28767@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0903101244140.3979-100000@iolanthe.rowland.org>
* Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 10 Mar 2009, Ingo Molnar wrote:
>
> > > > why this redirection, why dont just use the structure as-is?
> > > > If there's any arch weirdness then that arch should have
> > > > arch-special accessors - not the generic code.
> > >
> > > These _are_ the arch-specific accessors. Look at the
> > > filename: arch/x86/include/asm/hw_breakpoint.h.
> >
> > I very well know which file this is, you need to read my reply
> > again.
> >
> > These are very generic-sounding fields and they should not be
> > hidden via pointless wrappers by the generic code. Dont let the
> > tail wag the dog. If there's architecture weirdness that does
> > not fit the generic code, then _that_ architecture should have
> > the ugliness - not the generic code. (note that these accessors
> > are used by the generic code so the uglification spreads there)
>
> Hm. I haven't been keeping careful track of all the updates
> Prasad has been making. In my fairly-old copy of the
> hw-breakpoint work, the accessors are _not_ used by the
> generic code. They are there for future users of the API, not
> for internal use by the API itself. Is there something I'm
> missing?
Right, they do seem unused at the moment. I was going over the
patches and this stuck out as wrong.
> I have the feeling that this doesn't really address your
> comment, but I'm not sure if that's because I don't understand
> your point or you don't understand mine...
Removing them addresses my comment.
> > These are very generic-sounding fields ...
>
> Would you be happier if the field names were changed to be
> less generic-sounding?
Not sure what to make of this kind of reply. This isnt about me
being happier. Generic-sounding accessors for generic-sounding
fields is an easily recognizable pattern for broken design.
> > > > > + int num_installed; /* Number of installed bps */ +
> > > > > unsigned gennum; /* update-generation number */
> > > >
> > > > i suspect the gennum we can get rid of if we get rid of the
> > > > notion of priorities, right?
> > >
> > > No. gennum has nothing to do with priorities.
> >
> > Well it's introduced because we have a priority-sorted list of
> > breakpoints not an array.
>
> More generally, it's there because kernel & userspace
> breakpoints can be installed and uninstalled while a task is
> running -- and yes, this is partially because breakpoints are
> prioritized. (Although it's worth pointing out that even your
> suggestion of always prioritizing kernel breakpoints above
> userspace breakpoints would have the same effect.) However
> the fact that the breakpoints are stored in a list rather than
> an array doesn't seem to be relevant.
>
> > A list needs to be maintained and when updated it's
> > reloaded.
>
> The same is true of an array.
Not if what we do what the previous code did: reloaded the full
array unconditionally. (it's just 4 entries)
> > I was thinking about possibly getting rid of that list
> > complication and go back to the simpler array. But it's hard
> > because the lifetime of a kernel space breakpoint spans
> > context-switches so there has to be separation.
>
> Yes, kernel breakpoints have to be kept separate from
> userspace breakpoints. But even if you focus just on
> userspace breakpoints, you still need to use a list because
> debuggers can try to register an arbitrarily large number of
> breakpoints.
That 'arbitrarily larg number of breakpoints' worries me. It's a
pretty broken concept for a 4-items resource that cannot be
time-shared and hence cannot be overcommitted.
Seems to me that much of the complexity of this patchset:
28 files changed, 2439 insertions(+), 199 deletions(-)
Could be eliminated via a very simple exclusive reservation
mechanism.
Ingo
next prev parent reply other threads:[~2009-03-10 17:26 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20090305043440.189041194@linux.vnet.ibm.com>
2009-03-05 4:37 ` [patch 01/11] Introducing generic hardware breakpoint handler interfaces prasad
2009-03-10 13:50 ` Ingo Molnar
2009-03-10 14:19 ` Alan Stern
2009-03-10 14:50 ` Ingo Molnar
2009-03-11 12:57 ` K.Prasad
2009-03-11 13:35 ` Ingo Molnar
2009-03-05 4:38 ` [patch 02/11] x86 architecture implementation of Hardware Breakpoint interfaces prasad
2009-03-10 14:09 ` Ingo Molnar
2009-03-10 14:59 ` Alan Stern
2009-03-10 15:18 ` Ingo Molnar
2009-03-10 17:11 ` Alan Stern
2009-03-10 17:26 ` Ingo Molnar [this message]
2009-03-10 20:30 ` Alan Stern
2009-03-11 12:12 ` Ingo Molnar
2009-03-11 12:50 ` K.Prasad
2009-03-11 13:10 ` Ingo Molnar
2009-03-14 3:46 ` Benjamin Herrenschmidt
2009-03-11 16:39 ` Alan Stern
2009-03-11 16:32 ` Alan Stern
2009-03-11 17:41 ` K.Prasad
2009-03-14 3:47 ` Benjamin Herrenschmidt
2009-03-14 3:43 ` Benjamin Herrenschmidt
2009-03-14 3:41 ` Benjamin Herrenschmidt
2009-03-14 3:40 ` Benjamin Herrenschmidt
2009-03-12 2:46 ` Roland McGrath
2009-03-13 3:43 ` Ingo Molnar
2009-03-13 14:04 ` Alan Stern
2009-03-13 14:13 ` Ingo Molnar
2009-03-13 19:01 ` K.Prasad
2009-03-13 21:21 ` Alan Stern
2009-03-14 12:24 ` Ingo Molnar
2009-03-14 16:10 ` Alan Stern
2009-03-14 16:39 ` Ingo Molnar
2009-03-14 3:51 ` Benjamin Herrenschmidt
2009-03-05 4:38 ` [patch 03/11] Modifying generic debug exception to use virtual debug registers prasad
2009-03-05 4:38 ` [patch 04/11] Introduce virtual debug register in thread_struct and wrapper-routines around process related functions prasad
2009-03-10 14:35 ` Ingo Molnar
2009-03-10 15:53 ` Alan Stern
2009-03-10 17:06 ` Ingo Molnar
2009-03-12 2:26 ` Roland McGrath
2009-03-05 4:38 ` [patch 05/11] Use wrapper routines around debug registers in processor " prasad
2009-03-05 4:40 ` [patch 06/11] Use virtual debug registers in process/thread handling code prasad
2009-03-10 14:49 ` Ingo Molnar
2009-03-10 16:05 ` Alan Stern
2009-03-10 16:58 ` Ingo Molnar
2009-03-10 17:07 ` Ingo Molnar
2009-03-10 20:10 ` Alan Stern
2009-03-11 11:53 ` Ingo Molnar
2009-03-05 4:40 ` [patch 07/11] Modify signal handling code to refrain from re-enabling HW Breakpoints prasad
2009-03-05 4:40 ` [patch 08/11] Modify Ptrace routines to access breakpoint registers prasad
2009-03-10 14:40 ` Ingo Molnar
2009-03-10 15:54 ` Alan Stern
2009-03-12 3:14 ` Roland McGrath
2009-03-05 4:41 ` [patch 09/11] Cleanup HW Breakpoint registers before kexec prasad
2009-03-10 14:42 ` Ingo Molnar
2009-03-05 4:41 ` [patch 10/11] Sample HW breakpoint over kernel data address prasad
2009-03-05 4:43 ` prasad
2009-03-05 4:43 ` [patch 11/11] ftrace plugin for kernel symbol tracing using HW Breakpoint interfaces prasad
2009-03-05 6:37 ` Frederic Weisbecker
2009-03-05 9:16 ` Ingo Molnar
2009-03-05 13:15 ` K.Prasad
2009-03-05 13:28 ` Ingo Molnar
2009-03-05 11:33 ` K.Prasad
2009-03-05 12:19 ` K.Prasad
2009-03-05 12:30 ` Frederic Weisbecker
2009-03-05 12:28 ` Frederic Weisbecker
2009-03-05 15:00 ` Steven Rostedt
2009-03-05 14:54 ` Steven Rostedt
[not found] <20090307045120.039324630@linux.vnet.ibm.com>
2009-03-07 5:05 ` [Patch 02/11] x86 architecture implementation of Hardware " prasad
[not found] <20090319234044.410725944@K.Prasad>
2009-03-19 23:48 ` K.Prasad
[not found] <20090324152028.754123712@K.Prasad>
2009-03-24 15:25 ` K.Prasad
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=20090310172605.GA28767@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=prasad@linux.vnet.ibm.com \
--cc=roland@redhat.com \
--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 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.