public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Apparent kernel bug with GDB on ppc405
@ 2007-10-24 19:46 Matt Mackall
  2007-10-24 20:28 ` Grant Likely
                   ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Matt Mackall @ 2007-10-24 19:46 UTC (permalink / raw)
  To: linuxppc-embedded; +Cc: gdb

I'm trying to debug a trivial statically-linked hello world program on
a Xilinx PPC 405 and I'm seeing the following behavior:

With direct gdb on target, I can set a breakpoint at main, run, and
the breakpoint is triggered.

With gdbserver and gdb with "target remote localhost:1234", the above
still works.

With gdb on target redirected to a PC and tunneled back
to the target, everything still works.

With gdb on a PC, execution continues past the breakpoint. Comparing
the gdb protocol streams here and and on the previous (working) case
are identical up to the point of hitting the breakpoint (which never
happens in the latter case).

Raising the load on the PC to 4 and running gdb under nice -n 19 makes
things work again. So this begins to look like a kernel cache or
timing bug rather than a problem with the PC tool. It appears that the
breakpoint written to the executable at continue time is not visible
to the CPU at execute time.

My first suspicion was a dcache/icache coherency issue in
copy_to_user_page, so I added flush_dcache_icache_page(page) here to
no avail. On closer inspection, it looks like both icache and dcache
are already being flushed by flush_icache_user_range().

Adding printk(".") (or any printk) in this function here fixes things
(serial console at 115k), while printk("") and udelay(100) do not.
Which still suggests an icache bug..?

Any suggestions?

-- 
 "Love the dolphins," she advised him. "Write by W.A.S.T.E.." 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 19:46 Apparent kernel bug with GDB on ppc405 Matt Mackall
@ 2007-10-24 20:28 ` Grant Likely
  2007-10-24 20:42   ` Matt Mackall
  2007-10-24 20:34 ` David Daney
  2007-10-26  1:47 ` Benjamin Herrenschmidt
  2 siblings, 1 reply; 23+ messages in thread
From: Grant Likely @ 2007-10-24 20:28 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> I'm trying to debug a trivial statically-linked hello world program on
> a Xilinx PPC 405 and I'm seeing the following behavior:
>
<snip>
>
> Any suggestions?

http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202

I was fighting with a similar problem almost 2 years ago.  Looks like
it might be related.  At some point the problem seemed to go away and
I determined what the root cause was.  :-(

I haven't been using gdb lately, so I don't know if it's the same
problem.  Nobody I had talked to had seen the issue on other 405
platforms.  It could very well be something virtex-specific.

That's not much help, but maybe it will give you some clues.

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 19:46 Apparent kernel bug with GDB on ppc405 Matt Mackall
  2007-10-24 20:28 ` Grant Likely
@ 2007-10-24 20:34 ` David Daney
  2007-10-26  1:52   ` Benjamin Herrenschmidt
  2007-10-26  1:47 ` Benjamin Herrenschmidt
  2 siblings, 1 reply; 23+ messages in thread
From: David Daney @ 2007-10-24 20:34 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

Matt Mackall wrote:
> I'm trying to debug a trivial statically-linked hello world program on
> a Xilinx PPC 405 and I'm seeing the following behavior:
> 
> With direct gdb on target, I can set a breakpoint at main, run, and
> the breakpoint is triggered.
> 
> With gdbserver and gdb with "target remote localhost:1234", the above
> still works.
> 
> With gdb on target redirected to a PC and tunneled back
> to the target, everything still works.
> 
> With gdb on a PC, execution continues past the breakpoint. Comparing
> the gdb protocol streams here and and on the previous (working) case
> are identical up to the point of hitting the breakpoint (which never
> happens in the latter case).
> 
> Raising the load on the PC to 4 and running gdb under nice -n 19 makes
> things work again. So this begins to look like a kernel cache or
> timing bug rather than a problem with the PC tool. It appears that the
> breakpoint written to the executable at continue time is not visible
> to the CPU at execute time.
> 
> My first suspicion was a dcache/icache coherency issue in
> copy_to_user_page, so I added flush_dcache_icache_page(page) here to
> no avail. On closer inspection, it looks like both icache and dcache
> are already being flushed by flush_icache_user_range().
> 

First of all I have never used a similar configuration so this may be 
totally off base.  But...

If the icache is virtually indexed, then I think there are only two ways 
to invalidate it.  The first is from the context of the debugged process 
where the page is mapped at the location the target program will see it. 
   If you try to invalidate from the context of the debugger, the page 
will most likely not be mapped at the virtual address of the target 
program so you might have to invalidate the *entire* icache.

David Daney



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 20:28 ` Grant Likely
@ 2007-10-24 20:42   ` Matt Mackall
  2007-10-24 20:46     ` Grant Likely
  2007-10-24 21:54     ` Matt Mackall
  0 siblings, 2 replies; 23+ messages in thread
From: Matt Mackall @ 2007-10-24 20:42 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-embedded, gdb

On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > I'm trying to debug a trivial statically-linked hello world program on
> > a Xilinx PPC 405 and I'm seeing the following behavior:
> >
> <snip>
> >
> > Any suggestions?
> 
> http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> 
> I was fighting with a similar problem almost 2 years ago.  Looks like
> it might be related.  At some point the problem seemed to go away and
> I determined what the root cause was.  :-(
> 
> I haven't been using gdb lately, so I don't know if it's the same
> problem.  Nobody I had talked to had seen the issue on other 405
> platforms.  It could very well be something virtex-specific.

Could be the same problem, but I'm seeing only your symptom 3 so far.

I've tried throwing some larger hammers at the problem. Flushing all
of the dcache and icache (flush_dcache_all and
flush_instruction_cache) isn't helping. But printk(".") does!

-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 20:42   ` Matt Mackall
@ 2007-10-24 20:46     ` Grant Likely
  2007-10-24 21:54     ` Matt Mackall
  1 sibling, 0 replies; 23+ messages in thread
From: Grant Likely @ 2007-10-24 20:46 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > I'm trying to debug a trivial statically-linked hello world program on
> > > a Xilinx PPC 405 and I'm seeing the following behavior:
> > >
> > <snip>
> > >
> > > Any suggestions?
> >
> > http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> >
> > I was fighting with a similar problem almost 2 years ago.  Looks like
> > it might be related.  At some point the problem seemed to go away and
> > I determined what the root cause was.  :-(
> >
> > I haven't been using gdb lately, so I don't know if it's the same
> > problem.  Nobody I had talked to had seen the issue on other 405
> > platforms.  It could very well be something virtex-specific.
>
> Could be the same problem, but I'm seeing only your symptom 3 so far.
>
> I've tried throwing some larger hammers at the problem. Flushing all
> of the dcache and icache (flush_dcache_all and
> flush_instruction_cache) isn't helping. But printk(".") does!

It's really true; printk *is* the most valuable tool kernel hackers
have for debugging.

g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 20:42   ` Matt Mackall
  2007-10-24 20:46     ` Grant Likely
@ 2007-10-24 21:54     ` Matt Mackall
  2007-10-24 22:28       ` Grant Likely
  1 sibling, 1 reply; 23+ messages in thread
From: Matt Mackall @ 2007-10-24 21:54 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-embedded, gdb

On Wed, Oct 24, 2007 at 03:42:16PM -0500, Matt Mackall wrote:
> On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > I'm trying to debug a trivial statically-linked hello world program on
> > > a Xilinx PPC 405 and I'm seeing the following behavior:
> > >
> > <snip>
> > >
> > > Any suggestions?
> > 
> > http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> > 
> > I was fighting with a similar problem almost 2 years ago.  Looks like
> > it might be related.  At some point the problem seemed to go away and
> > I determined what the root cause was.  :-(
> > 
> > I haven't been using gdb lately, so I don't know if it's the same
> > problem.  Nobody I had talked to had seen the issue on other 405
> > platforms.  It could very well be something virtex-specific.
> 
> Could be the same problem, but I'm seeing only your symptom 3 so far.
> 
> I've tried throwing some larger hammers at the problem. Flushing all
> of the dcache and icache (flush_dcache_all and
> flush_instruction_cache) isn't helping. But printk(".") does!

Well there was one remaining cache - the TLB. This patch seems to make
things work, but don't ask me why:

--- include/asm-ppc/cacheflush.h        (revision 10439)
+++ include/asm-ppc/cacheflush.h        (working copy)
@@ -11,6 +11,7 @@
 #define _PPC_CACHEFLUSH_H

 #include <linux/mm.h>
+#include <asm/tlbflush.h>

 /*
  * No cache flushing is required when address mappings are
@@ -35,10 +36,23 @@
 extern void flush_icache_user_range(struct vm_area_struct *vma,
                struct page *page, unsigned long addr, int len);

 #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
 do { memcpy(dst, src, len); \
      flush_icache_user_range(vma, page, vaddr, len); \
+     _tlbia(); \
 } while (0)

-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 21:54     ` Matt Mackall
@ 2007-10-24 22:28       ` Grant Likely
  2007-10-24 22:33         ` Matt Mackall
  0 siblings, 1 reply; 23+ messages in thread
From: Grant Likely @ 2007-10-24 22:28 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> On Wed, Oct 24, 2007 at 03:42:16PM -0500, Matt Mackall wrote:
> > On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> > > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > > I'm trying to debug a trivial statically-linked hello world program on
> > > > a Xilinx PPC 405 and I'm seeing the following behavior:
> > > >
> > > <snip>
> > > >
> > > > Any suggestions?
> > >
> > > http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> > >
> > > I was fighting with a similar problem almost 2 years ago.  Looks like
> > > it might be related.  At some point the problem seemed to go away and
> > > I determined what the root cause was.  :-(
> > >
> > > I haven't been using gdb lately, so I don't know if it's the same
> > > problem.  Nobody I had talked to had seen the issue on other 405
> > > platforms.  It could very well be something virtex-specific.
> >
> > Could be the same problem, but I'm seeing only your symptom 3 so far.
> >
> > I've tried throwing some larger hammers at the problem. Flushing all
> > of the dcache and icache (flush_dcache_all and
> > flush_instruction_cache) isn't helping. But printk(".") does!
>
> Well there was one remaining cache - the TLB. This patch seems to make
> things work, but don't ask me why:
>
> --- include/asm-ppc/cacheflush.h        (revision 10439)
> +++ include/asm-ppc/cacheflush.h        (working copy)
> @@ -11,6 +11,7 @@
>  #define _PPC_CACHEFLUSH_H
>
>  #include <linux/mm.h>
> +#include <asm/tlbflush.h>
>
>  /*
>   * No cache flushing is required when address mappings are
> @@ -35,10 +36,23 @@
>  extern void flush_icache_user_range(struct vm_area_struct *vma,
>                 struct page *page, unsigned long addr, int len);
>
>  #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
>  do { memcpy(dst, src, len); \
>       flush_icache_user_range(vma, page, vaddr, len); \
> +     _tlbia(); \
>  } while (0)

Hmmm; thinking out loud here...

- so tlbia invalidates all TLB entries
- When gdb inserts a breakpoint the .text pages are marked as read
only, so the kernel does a copy on write so that gdb can modify the
instruction.  The kernel also updates the page tables so that the test
process now uses the new page.
- This means that there are now 2 pages for that one section of
executable code; the original and the one with the breakpoint.
- However, the program is still in memory, and there is probably
already a TLB entry pointing to the original page for that range of
addresses.

Could it be that the kernel page tables are getting updated to the new
page; but active set of TLB entries is not getting updated?

If so, then printk(".") probably solves the problem simply because it
touches enough pages in its execution path that the old TLB entry gets
overwritten?  There are only 64 TLB entries afterall.

Thoughts?

g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:28       ` Grant Likely
@ 2007-10-24 22:33         ` Matt Mackall
  2007-10-24 22:39           ` Grant Likely
  2007-10-24 22:41           ` Daniel Jacobowitz
  0 siblings, 2 replies; 23+ messages in thread
From: Matt Mackall @ 2007-10-24 22:33 UTC (permalink / raw)
  To: Grant Likely; +Cc: linuxppc-embedded, gdb

On Wed, Oct 24, 2007 at 04:27:52PM -0600, Grant Likely wrote:
> On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > On Wed, Oct 24, 2007 at 03:42:16PM -0500, Matt Mackall wrote:
> > > On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> > > > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > > > I'm trying to debug a trivial statically-linked hello world program on
> > > > > a Xilinx PPC 405 and I'm seeing the following behavior:
> > > > >
> > > > <snip>
> > > > >
> > > > > Any suggestions?
> > > >
> > > > http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> > > >
> > > > I was fighting with a similar problem almost 2 years ago.  Looks like
> > > > it might be related.  At some point the problem seemed to go away and
> > > > I determined what the root cause was.  :-(
> > > >
> > > > I haven't been using gdb lately, so I don't know if it's the same
> > > > problem.  Nobody I had talked to had seen the issue on other 405
> > > > platforms.  It could very well be something virtex-specific.
> > >
> > > Could be the same problem, but I'm seeing only your symptom 3 so far.
> > >
> > > I've tried throwing some larger hammers at the problem. Flushing all
> > > of the dcache and icache (flush_dcache_all and
> > > flush_instruction_cache) isn't helping. But printk(".") does!
> >
> > Well there was one remaining cache - the TLB. This patch seems to make
> > things work, but don't ask me why:
> >
> > --- include/asm-ppc/cacheflush.h        (revision 10439)
> > +++ include/asm-ppc/cacheflush.h        (working copy)
> > @@ -11,6 +11,7 @@
> >  #define _PPC_CACHEFLUSH_H
> >
> >  #include <linux/mm.h>
> > +#include <asm/tlbflush.h>
> >
> >  /*
> >   * No cache flushing is required when address mappings are
> > @@ -35,10 +36,23 @@
> >  extern void flush_icache_user_range(struct vm_area_struct *vma,
> >                 struct page *page, unsigned long addr, int len);
> >
> >  #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
> >  do { memcpy(dst, src, len); \
> >       flush_icache_user_range(vma, page, vaddr, len); \
> > +     _tlbia(); \
> >  } while (0)
> 
> Hmmm; thinking out loud here...
> 
> - so tlbia invalidates all TLB entries
> - When gdb inserts a breakpoint the .text pages are marked as read
> only, so the kernel does a copy on write so that gdb can modify the
> instruction.  The kernel also updates the page tables so that the test
> process now uses the new page.
> - This means that there are now 2 pages for that one section of
> executable code; the original and the one with the breakpoint.
> - However, the program is still in memory, and there is probably
> already a TLB entry pointing to the original page for that range of
> addresses.
> 
> Could it be that the kernel page tables are getting updated to the new
> page; but active set of TLB entries is not getting updated?
> 
> If so, then printk(".") probably solves the problem simply because it
> touches enough pages in its execution path that the old TLB entry gets
> overwritten?  There are only 64 TLB entries afterall.
> 
> Thoughts?

Not completely implausible, but a) why isn't this seen on basically
every machine with software TLB? b) why does -local- GDB, which is
presumably doing much less work than gdbserver + network stack, not fail?

-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:33         ` Matt Mackall
@ 2007-10-24 22:39           ` Grant Likely
  2007-10-24 22:40             ` Grant Likely
  2007-10-24 22:41           ` Daniel Jacobowitz
  1 sibling, 1 reply; 23+ messages in thread
From: Grant Likely @ 2007-10-24 22:39 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> On Wed, Oct 24, 2007 at 04:27:52PM -0600, Grant Likely wrote:
> > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > On Wed, Oct 24, 2007 at 03:42:16PM -0500, Matt Mackall wrote:
> > > > On Wed, Oct 24, 2007 at 02:28:14PM -0600, Grant Likely wrote:
> > > > > On 10/24/07, Matt Mackall <mpm@selenic.com> wrote:
> > > > > > I'm trying to debug a trivial statically-linked hello world program on
> > > > > > a Xilinx PPC 405 and I'm seeing the following behavior:
> > > > > >
> > > > > <snip>
> > > > > >
> > > > > > Any suggestions?
> > > > >
> > > > > http://thread.gmane.org/gmane.linux.ports.ppc.embedded/11202
> > > > >
> > > > > I was fighting with a similar problem almost 2 years ago.  Looks like
> > > > > it might be related.  At some point the problem seemed to go away and
> > > > > I determined what the root cause was.  :-(
> > > > >
> > > > > I haven't been using gdb lately, so I don't know if it's the same
> > > > > problem.  Nobody I had talked to had seen the issue on other 405
> > > > > platforms.  It could very well be something virtex-specific.
> > > >
> > > > Could be the same problem, but I'm seeing only your symptom 3 so far.
> > > >
> > > > I've tried throwing some larger hammers at the problem. Flushing all
> > > > of the dcache and icache (flush_dcache_all and
> > > > flush_instruction_cache) isn't helping. But printk(".") does!
> > >
> > > Well there was one remaining cache - the TLB. This patch seems to make
> > > things work, but don't ask me why:
> > >
> > > --- include/asm-ppc/cacheflush.h        (revision 10439)
> > > +++ include/asm-ppc/cacheflush.h        (working copy)
> > > @@ -11,6 +11,7 @@
> > >  #define _PPC_CACHEFLUSH_H
> > >
> > >  #include <linux/mm.h>
> > > +#include <asm/tlbflush.h>
> > >
> > >  /*
> > >   * No cache flushing is required when address mappings are
> > > @@ -35,10 +36,23 @@
> > >  extern void flush_icache_user_range(struct vm_area_struct *vma,
> > >                 struct page *page, unsigned long addr, int len);
> > >
> > >  #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
> > >  do { memcpy(dst, src, len); \
> > >       flush_icache_user_range(vma, page, vaddr, len); \
> > > +     _tlbia(); \
> > >  } while (0)
> >
> > Hmmm; thinking out loud here...
> >
> > - so tlbia invalidates all TLB entries
> > - When gdb inserts a breakpoint the .text pages are marked as read
> > only, so the kernel does a copy on write so that gdb can modify the
> > instruction.  The kernel also updates the page tables so that the test
> > process now uses the new page.
> > - This means that there are now 2 pages for that one section of
> > executable code; the original and the one with the breakpoint.
> > - However, the program is still in memory, and there is probably
> > already a TLB entry pointing to the original page for that range of
> > addresses.
> >
> > Could it be that the kernel page tables are getting updated to the new
> > page; but active set of TLB entries is not getting updated?
> >
> > If so, then printk(".") probably solves the problem simply because it
> > touches enough pages in its execution path that the old TLB entry gets
> > overwritten?  There are only 64 TLB entries afterall.
> >
> > Thoughts?
>
> Not completely implausible, but a) why isn't this seen on basically
> every machine with software TLB? b) why does -local- GDB, which is
> presumably doing much less work than gdbserver + network stack, not fail?

a) I don't know.... very odd.

b) gdb is big.  It probably touches far more pages (via library calls)
than gdbserver.  The network stack is also big, but it's probably more
localized too.

Niceing down the host also makes sense because if the PC is being slow
then the target may go off and run other things while between setting
the breakpoint and getting the 'go' command.

Can you grab a snapshot of the TLB before and after setting the breakpoint?

g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:39           ` Grant Likely
@ 2007-10-24 22:40             ` Grant Likely
  2007-10-26  1:51               ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 23+ messages in thread
From: Grant Likely @ 2007-10-24 22:40 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb

On 10/24/07, Grant Likely <grant.likely@secretlab.ca> wrote:
> > Not completely implausible, but a) why isn't this seen on basically
> > every machine with software TLB? b) why does -local- GDB, which is
> > presumably doing much less work than gdbserver + network stack, not fail?
>
> a) I don't know.... very odd.
>
> b) gdb is big.  It probably touches far more pages (via library calls)
> than gdbserver.  The network stack is also big, but it's probably more
> localized too.
>
> Niceing down the host also makes sense because if the PC is being slow
> then the target may go off and run other things while between setting
> the breakpoint and getting the 'go' command.
>
> Can you grab a snapshot of the TLB before and after setting the breakpoint?

Or; probably more relevant, before and after the page copy?

g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:33         ` Matt Mackall
  2007-10-24 22:39           ` Grant Likely
@ 2007-10-24 22:41           ` Daniel Jacobowitz
  2007-10-26  1:51             ` Benjamin Herrenschmidt
  1 sibling, 1 reply; 23+ messages in thread
From: Daniel Jacobowitz @ 2007-10-24 22:41 UTC (permalink / raw)
  To: Matt Mackall; +Cc: Grant Likely, linuxppc-embedded, gdb

On Wed, Oct 24, 2007 at 05:32:50PM -0500, Matt Mackall wrote:
> Not completely implausible, but a) why isn't this seen on basically
> every machine with software TLB? b) why does -local- GDB, which is
> presumably doing much less work than gdbserver + network stack, not fail?

You said it yourself.  Local gdb does more work -> blows through more
TLB entries.

I can't answer you about the other half, but I'm pretty sure TLB
invalidation is already supposed to be happening... somewhere.

-- 
Daniel Jacobowitz
CodeSourcery

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 19:46 Apparent kernel bug with GDB on ppc405 Matt Mackall
  2007-10-24 20:28 ` Grant Likely
  2007-10-24 20:34 ` David Daney
@ 2007-10-26  1:47 ` Benjamin Herrenschmidt
  2007-10-26  2:45   ` Grant Likely
  2 siblings, 1 reply; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-26  1:47 UTC (permalink / raw)
  To: Matt Mackall; +Cc: linuxppc-embedded, gdb


On Wed, 2007-10-24 at 14:46 -0500, Matt Mackall wrote:
> 
> My first suspicion was a dcache/icache coherency issue in
> copy_to_user_page, so I added flush_dcache_icache_page(page) here to
> no avail. On closer inspection, it looks like both icache and dcache
> are already being flushed by flush_icache_user_range().
> 
> Adding printk(".") (or any printk) in this function here fixes things
> (serial console at 115k), while printk("") and udelay(100) do not.
> Which still suggests an icache bug..?
> 
> Any suggestions?

I think you're hitting a known bug of 44x support. Those CPUs have a
crazy virtually tagged icache and the kernel doesn't deal with it at all
(pretty much...). We just are lucky things generally work :-)

That means among other things that flush_icache_* will not work because
they kmap pages and use that mapping. The only way to flush icache user
pages with 44x is to actually flush with the user virtual address
(meaning you have to be in the current context, and you probably need to
have a TLB entry there... yuck)... or just blow the whole icache away.

Try sticking an iccci in there and let me know if that helps.

Ben

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:41           ` Daniel Jacobowitz
@ 2007-10-26  1:51             ` Benjamin Herrenschmidt
  2007-10-26 20:41               ` Josh Boyer
  0 siblings, 1 reply; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-26  1:51 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Matt Mackall, gdb, linuxppc-embedded


On Wed, 2007-10-24 at 18:41 -0400, Daniel Jacobowitz wrote:
> On Wed, Oct 24, 2007 at 05:32:50PM -0500, Matt Mackall wrote:
> > Not completely implausible, but a) why isn't this seen on basically
> > every machine with software TLB? b) why does -local- GDB, which is
> > presumably doing much less work than gdbserver + network stack, not fail?
> 
> You said it yourself.  Local gdb does more work -> blows through more
> TLB entries.
> 
> I can't answer you about the other half, but I'm pretty sure TLB
> invalidation is already supposed to be happening... somewhere.

Yes. do_wp_page() -> ptep_clear_flush() -> flush_tlb_page()

Ben.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 22:40             ` Grant Likely
@ 2007-10-26  1:51               ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-26  1:51 UTC (permalink / raw)
  To: Grant Likely; +Cc: Matt Mackall, gdb, linuxppc-embedded


On Wed, 2007-10-24 at 16:40 -0600, Grant Likely wrote:
> On 10/24/07, Grant Likely <grant.likely@secretlab.ca> wrote:
> > > Not completely implausible, but a) why isn't this seen on basically
> > > every machine with software TLB? b) why does -local- GDB, which is
> > > presumably doing much less work than gdbserver + network stack, not fail?
> >
> > a) I don't know.... very odd.
> >
> > b) gdb is big.  It probably touches far more pages (via library calls)
> > than gdbserver.  The network stack is also big, but it's probably more
> > localized too.
> >
> > Niceing down the host also makes sense because if the PC is being slow
> > then the target may go off and run other things while between setting
> > the breakpoint and getting the 'go' command.
> >
> > Can you grab a snapshot of the TLB before and after setting the breakpoint?
> 
> Or; probably more relevant, before and after the page copy?

COW does ptep_clear_flush before setting the new TLB which does a
flush_tlb_page() so that should work.

Ben.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-24 20:34 ` David Daney
@ 2007-10-26  1:52   ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-26  1:52 UTC (permalink / raw)
  To: David Daney; +Cc: Matt Mackall, gdb, linuxppc-embedded


On Wed, 2007-10-24 at 13:34 -0700, David Daney wrote:
> First of all I have never used a similar configuration so this may be 
> totally off base.  But...
> 
> If the icache is virtually indexed, then I think there are only two
> ways 
> to invalidate it.  The first is from the context of the debugged
> process 
> where the page is mapped at the location the target program will see
> it. 
>    If you try to invalidate from the context of the debugger, the
> page 
> will most likely not be mapped at the virtual address of the target 
> program so you might have to invalidate the *entire* icache.

Yup, sounds likely. We don't handle that virtual icache well at all in
linux. Things tend to work by mere luck. I have various ideas to fix
that but haven't actually implemented them.

Ben.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26  1:47 ` Benjamin Herrenschmidt
@ 2007-10-26  2:45   ` Grant Likely
  2007-10-26  3:23     ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 23+ messages in thread
From: Grant Likely @ 2007-10-26  2:45 UTC (permalink / raw)
  To: benh; +Cc: Matt Mackall, gdb, linuxppc-embedded

On 10/25/07, Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
>
> On Wed, 2007-10-24 at 14:46 -0500, Matt Mackall wrote:
> >
> > My first suspicion was a dcache/icache coherency issue in
> > copy_to_user_page, so I added flush_dcache_icache_page(page) here to
> > no avail. On closer inspection, it looks like both icache and dcache
> > are already being flushed by flush_icache_user_range().
> >
> > Adding printk(".") (or any printk) in this function here fixes things
> > (serial console at 115k), while printk("") and udelay(100) do not.
> > Which still suggests an icache bug..?
> >
> > Any suggestions?
>
> I think you're hitting a known bug of 44x support. Those CPUs have a
> crazy virtually tagged icache and the kernel doesn't deal with it at all
> (pretty much...). We just are lucky things generally work :-)
>
> That means among other things that flush_icache_* will not work because
> they kmap pages and use that mapping. The only way to flush icache user
> pages with 44x is to actually flush with the user virtual address
> (meaning you have to be in the current context, and you probably need to
> have a TLB entry there... yuck)... or just blow the whole icache away.

This is actually 405.  Does that have the same issue?

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely@secretlab.ca
(403) 399-0195

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26  2:45   ` Grant Likely
@ 2007-10-26  3:23     ` Benjamin Herrenschmidt
  2007-10-26 14:42       ` Matt Mackall
  0 siblings, 1 reply; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-26  3:23 UTC (permalink / raw)
  To: Grant Likely; +Cc: Matt Mackall, gdb, linuxppc-embedded


> This is actually 405.  Does that have the same issue?

hrm... I don't remember :-) There -is- something fishy about the icache
on 405 but I don't remember for sure. Try sticking an iccci in there and
tell us if that helps.

Ben.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26  3:23     ` Benjamin Herrenschmidt
@ 2007-10-26 14:42       ` Matt Mackall
  2007-10-27  1:31         ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 23+ messages in thread
From: Matt Mackall @ 2007-10-26 14:42 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Grant Likely, gdb, linuxppc-embedded

On Fri, Oct 26, 2007 at 01:23:25PM +1000, Benjamin Herrenschmidt wrote:
> 
> > This is actually 405.  Does that have the same issue?
> 
> hrm... I don't remember :-) There -is- something fishy about the icache
> on 405 but I don't remember for sure. Try sticking an iccci in there and
> tell us if that helps.

I did. I stuck an iccci -and- a dccci loop in. I threw in the tlbia
when I ran out of other ideas. And the tlbia + existing
flush_icache_range appears to be sufficient (tested on a non-trivial
app).

According to my docs, the 405fx's icache is virtually
indexed/physically mapped, while the dcache is phys/phys.

-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26  1:51             ` Benjamin Herrenschmidt
@ 2007-10-26 20:41               ` Josh Boyer
  2007-10-27  1:36                 ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 23+ messages in thread
From: Josh Boyer @ 2007-10-26 20:41 UTC (permalink / raw)
  To: benh; +Cc: Daniel Jacobowitz, gdb, linuxppc-embedded, Matt Mackall

On Fri, 26 Oct 2007 11:51:22 +1000
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:

> 
> On Wed, 2007-10-24 at 18:41 -0400, Daniel Jacobowitz wrote:
> > On Wed, Oct 24, 2007 at 05:32:50PM -0500, Matt Mackall wrote:
> > > Not completely implausible, but a) why isn't this seen on basically
> > > every machine with software TLB? b) why does -local- GDB, which is
> > > presumably doing much less work than gdbserver + network stack, not fail?
> > 
> > You said it yourself.  Local gdb does more work -> blows through more
> > TLB entries.
> > 
> > I can't answer you about the other half, but I'm pretty sure TLB
> > invalidation is already supposed to be happening... somewhere.
> 
> Yes. do_wp_page() -> ptep_clear_flush() -> flush_tlb_page()

Aren't there cases in do_wp_page that don't call ptep_clear_flush?
Seems anonymous pages, and possibly shared writeable pages skip that
step if reuse is true.

josh

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26 14:42       ` Matt Mackall
@ 2007-10-27  1:31         ` Benjamin Herrenschmidt
       [not found]           ` <1193470322.18243.63.camel@pasglop>
  0 siblings, 1 reply; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-27  1:31 UTC (permalink / raw)
  To: Matt Mackall; +Cc: Grant Likely, gdb, linuxppc-embedded


On Fri, 2007-10-26 at 09:41 -0500, Matt Mackall wrote:
> On Fri, Oct 26, 2007 at 01:23:25PM +1000, Benjamin Herrenschmidt
> wrote:
> > 
> > > This is actually 405.  Does that have the same issue?
> > 
> > hrm... I don't remember :-) There -is- something fishy about the
> icache
> > on 405 but I don't remember for sure. Try sticking an iccci in there
> and
> > tell us if that helps.
> 
> I did. I stuck an iccci -and- a dccci loop in. I threw in the tlbia
> when I ran out of other ideas. And the tlbia + existing
> flush_icache_range appears to be sufficient (tested on a non-trivial
> app).
> 
> According to my docs, the 405fx's icache is virtually
> indexed/physically mapped, while the dcache is phys/phys.

I think there is a bug in the 40x/44x support at this stage, it only
doing invalidations for the current PID. That means that a process
trying to invalidate TLB entries of another address space will fail to
do so ... oops.

That can be fixed by adding a pid argument to to _tlbie, and using it in
the assembly. In the 40x case, probably by switching SPRN_PID to that
and then back, in the 44x case, by using that value instead of SPRN_PID
for the MMUCR register.

It's part of a patche I have around taking dirt that rework signficantly
the 44x (though not the 40x yet) TLB handling, cleaning things and
fixing bugs (such as this one, I remember it now). I need to spend a bit
of time to clean it up, remove some experimental stuff from it, and
submit it.

I'll try to do that early next week, and maybe come up with a fix for
that specific bug today or tomorrow.

Ben.



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-26 20:41               ` Josh Boyer
@ 2007-10-27  1:36                 ` Benjamin Herrenschmidt
  2007-10-27  1:40                   ` Josh Boyer
  0 siblings, 1 reply; 23+ messages in thread
From: Benjamin Herrenschmidt @ 2007-10-27  1:36 UTC (permalink / raw)
  To: Josh Boyer; +Cc: Daniel Jacobowitz, gdb, linuxppc-embedded, Matt Mackall


On Fri, 2007-10-26 at 15:41 -0500, Josh Boyer wrote:
> On Fri, 26 Oct 2007 11:51:22 +1000
> Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> 
> > 
> > On Wed, 2007-10-24 at 18:41 -0400, Daniel Jacobowitz wrote:
> > > On Wed, Oct 24, 2007 at 05:32:50PM -0500, Matt Mackall wrote:
> > > > Not completely implausible, but a) why isn't this seen on basically
> > > > every machine with software TLB? b) why does -local- GDB, which is
> > > > presumably doing much less work than gdbserver + network stack, not fail?
> > > 
> > > You said it yourself.  Local gdb does more work -> blows through more
> > > TLB entries.
> > > 
> > > I can't answer you about the other half, but I'm pretty sure TLB
> > > invalidation is already supposed to be happening... somewhere.
> > 
> > Yes. do_wp_page() -> ptep_clear_flush() -> flush_tlb_page()
> 
> Aren't there cases in do_wp_page that don't call ptep_clear_flush?
> Seems anonymous pages, and possibly shared writeable pages skip that
> step if reuse is true.

Nah, if that was broken, everybody would be in bad shape. I think I know
what's up, see my other email.

Cheers,
Ben.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Apparent kernel bug with GDB on ppc405
  2007-10-27  1:36                 ` Benjamin Herrenschmidt
@ 2007-10-27  1:40                   ` Josh Boyer
  0 siblings, 0 replies; 23+ messages in thread
From: Josh Boyer @ 2007-10-27  1:40 UTC (permalink / raw)
  To: benh; +Cc: Daniel Jacobowitz, gdb, linuxppc-embedded, Matt Mackall

On Sat, 2007-10-27 at 11:36 +1000, Benjamin Herrenschmidt wrote:
> On Fri, 2007-10-26 at 15:41 -0500, Josh Boyer wrote:
> > On Fri, 26 Oct 2007 11:51:22 +1000
> > Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> > 
> > > 
> > > On Wed, 2007-10-24 at 18:41 -0400, Daniel Jacobowitz wrote:
> > > > On Wed, Oct 24, 2007 at 05:32:50PM -0500, Matt Mackall wrote:
> > > > > Not completely implausible, but a) why isn't this seen on basically
> > > > > every machine with software TLB? b) why does -local- GDB, which is
> > > > > presumably doing much less work than gdbserver + network stack, not fail?
> > > > 
> > > > You said it yourself.  Local gdb does more work -> blows through more
> > > > TLB entries.
> > > > 
> > > > I can't answer you about the other half, but I'm pretty sure TLB
> > > > invalidation is already supposed to be happening... somewhere.
> > > 
> > > Yes. do_wp_page() -> ptep_clear_flush() -> flush_tlb_page()
> > 
> > Aren't there cases in do_wp_page that don't call ptep_clear_flush?
> > Seems anonymous pages, and possibly shared writeable pages skip that
> > step if reuse is true.
> 
> Nah, if that was broken, everybody would be in bad shape. I think I know
> what's up, see my other email.

Yeah, I figured that out after I sent this anyway.  In those cases it
should likely get flushed from ptep_set_access_flags.

josh

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH/RFC] powerpc: Pass PID argument to _tlbie (WAS: Apparent kernel bug with GDB on ppc405)
       [not found]                 ` <1193690106.9928.32.camel@pasglop>
@ 2007-10-29 21:19                   ` Matt Mackall
  0 siblings, 0 replies; 23+ messages in thread
From: Matt Mackall @ 2007-10-29 21:19 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: Josh Boyer, linuxppc-dev list, linuxppc-embedded, Kumar Gala, gdb

[adding back gdb list]

On Tue, Oct 30, 2007 at 07:35:06AM +1100, Benjamin Herrenschmidt wrote:
> 
> > Did a boot test on my ebony board with this patch included.  It seems
> > to be happy about things so far.  If Matt gets around to trying this
> > out and it works, we should probably look at getting this into 2.6.24.
> > 
> > Oh, and I'd need a signed-off-by for it Ben :)
> 
> Sure, I'll send you a cleaned up version (the version I posted for test
> breaks 64 bits builds :-)
> 
> But I'm also waiting for Matt to test first.

Ok, just backported the 405 bits of this to my client's sad sad MV
2.6.10 kernel and it appears to work fine. Only tricky bit was
context.id -> context. So:

Tested-by: Matt Mackall <mpm@selenic.com>

And here's my backported patch, just for reference:

Index: k/arch/ppc/kernel/misc.S
===================================================================
--- k.orig/arch/ppc/kernel/misc.S	2007-10-29 15:33:03.000000000 -0500
+++ k/arch/ppc/kernel/misc.S	2007-10-29 15:34:29.000000000 -0500
@@ -496,7 +496,13 @@ _GLOBAL(_tlbia)
  */
 _GLOBAL(_tlbie)
 #if defined(CONFIG_40x)
+	mfmsr	r5
+	mfspr	r6,SPRN_PID
+	wrteei	0
+	mtspr	SPRN_PID,r4
 	tlbsx.	r3, 0, r3
+	mtspr	SPRN_PID,r6
+	wrtee	r5
 	bne	10f
 	sync
 	/* There are only 64 TLB entries, so r3 < 64, which means bit 25 is clear.
Index: k/arch/ppc/mm/fault.c
===================================================================
--- k.orig/arch/ppc/mm/fault.c	2007-10-29 15:30:04.000000000 -0500
+++ k/arch/ppc/mm/fault.c	2007-10-29 16:11:10.000000000 -0500
@@ -234,7 +234,7 @@ good_area:
 				set_bit(PG_arch_1, &page->flags);
 			}
 			pte_update(ptep, 0, _PAGE_HWEXEC);
-			_tlbie(address);
+			_tlbie(address, mm->context);
 			pte_unmap(ptep);
 			up_read(&mm->mmap_sem);
 			ltt_ev_trap_exit();
Index: k/arch/ppc/mm/mmu_decl.h
===================================================================
--- k.orig/arch/ppc/mm/mmu_decl.h	2007-10-29 15:34:48.000000000 -0500
+++ k/arch/ppc/mm/mmu_decl.h	2007-10-29 16:11:25.000000000 -0500
@@ -54,7 +54,7 @@ extern unsigned int num_tlbcam_entries;
 #define mmu_mapin_ram()		(0UL)
 
 #elif defined(CONFIG_4xx)
-#define flush_HPTE(X, va, pg)	_tlbie(va)
+#define flush_HPTE(pid, va, pg)	_tlbie(va, pid)
 extern void MMU_init_hw(void);
 extern unsigned long mmu_mapin_ram(void);
 
Index: k/include/asm-ppc/tlbflush.h
===================================================================
--- k.orig/include/asm-ppc/tlbflush.h	2007-10-29 15:31:29.000000000 -0500
+++ k/include/asm-ppc/tlbflush.h	2007-10-29 16:11:32.000000000 -0500
@@ -13,7 +13,7 @@
 #include <linux/config.h>
 #include <linux/mm.h>
 
-extern void _tlbie(unsigned long address);
+extern void _tlbie(unsigned long address, unsigned int pid);
 extern void _tlbia(void);
 
 #if defined(CONFIG_4xx)
@@ -28,10 +28,10 @@ static inline void flush_tlb_mm(struct m
 	{ __tlbia(); }
 static inline void flush_tlb_page(struct vm_area_struct *vma,
 				unsigned long vmaddr)
-	{ _tlbie(vmaddr); }
+	{ _tlbie(vmaddr, vma->vm_mm->context); }
 static inline void flush_tlb_page_nohash(struct vm_area_struct *vma,
 					 unsigned long vmaddr)
-	{ _tlbie(vmaddr); }
+	{ _tlbie(vmaddr, vma->vm_mm->context); }
 static inline void flush_tlb_range(struct vm_area_struct *vma,
 				unsigned long start, unsigned long end)
 	{ __tlbia(); }


-- 
Mathematics is the supreme nostalgia of our time.

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2007-10-29 21:19 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-10-24 19:46 Apparent kernel bug with GDB on ppc405 Matt Mackall
2007-10-24 20:28 ` Grant Likely
2007-10-24 20:42   ` Matt Mackall
2007-10-24 20:46     ` Grant Likely
2007-10-24 21:54     ` Matt Mackall
2007-10-24 22:28       ` Grant Likely
2007-10-24 22:33         ` Matt Mackall
2007-10-24 22:39           ` Grant Likely
2007-10-24 22:40             ` Grant Likely
2007-10-26  1:51               ` Benjamin Herrenschmidt
2007-10-24 22:41           ` Daniel Jacobowitz
2007-10-26  1:51             ` Benjamin Herrenschmidt
2007-10-26 20:41               ` Josh Boyer
2007-10-27  1:36                 ` Benjamin Herrenschmidt
2007-10-27  1:40                   ` Josh Boyer
2007-10-24 20:34 ` David Daney
2007-10-26  1:52   ` Benjamin Herrenschmidt
2007-10-26  1:47 ` Benjamin Herrenschmidt
2007-10-26  2:45   ` Grant Likely
2007-10-26  3:23     ` Benjamin Herrenschmidt
2007-10-26 14:42       ` Matt Mackall
2007-10-27  1:31         ` Benjamin Herrenschmidt
     [not found]           ` <1193470322.18243.63.camel@pasglop>
     [not found]             ` <20071029070824.72854629@weaponx.rchland.ibm.com>
     [not found]               ` <20071029151546.5af0e843@weaponx.rchland.ibm.com>
     [not found]                 ` <1193690106.9928.32.camel@pasglop>
2007-10-29 21:19                   ` [PATCH/RFC] powerpc: Pass PID argument to _tlbie (WAS: Apparent kernel bug with GDB on ppc405) Matt Mackall

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).