[Top] [All Lists]

Re: replacing synthesized tlb handlers with older ones

To: "Prasad Boddupalli" <>, <>
Subject: Re: replacing synthesized tlb handlers with older ones
From: "Kevin D. Kissell" <>
Date: Fri, 2 Jun 2006 21:13:11 +0200
Original-recipient: rfc822;
References: <>
The TLB refill handler behavior for 1 CPU is fundamentally
different than for SMP.  In the uniprocessor case, the page
table origin is implicit, whereas in SMP it needs to be indexed
by some per-CPU value, typically maintained in the Context
register.  Pre-synthesed kernels set up up so that the Context
value would be shifted left 23 bits, then right by 2 bits, to generate
an offset.  The newer system eliminates the right shift by ensuring
that the CPU index is stored in a pre-scaled form, and that bits
23 and 24 are zero.  So you can't just drop the old code into
the newer kernel, unless you also change the setup of Context.
A single CPU would work, because 0 == 0, otherwise...
Try nuking those right shifts.


            Kevin K.
----- Original Message ----- 
From: "Prasad Boddupalli" <>
To: <>
Sent: Friday, June 02, 2006 8:39 PM
Subject: replacing synthesized tlb handlers with older ones

> Hi,
> To embed some additional functionality in the tlb refill handler, I
> replaced the synthesized refill handlers in 2.6.16 linux with those
> from 2.6.6 (for example tlb-r4k.S under arch/mips/mm-32). Everything
> seem ok when I bring up one CPU, but causes unrecoverable exceptions
> in the kernel when I bring up multiple CPUs. I explored if that could
> be because of unflushed icaches on other CPUs. but that doesn't seem
> to be the case.
> Have anyone run into similar problem ?
> thank you,
> Prasad.

<Prev in Thread] Current Thread [Next in Thread>