PPC upstream kernel ignored DABR bug
Geoff Levand
geoffrey.levand at am.sony.com
Thu Nov 29 09:59:36 EST 2007
Arnd Bergmann wrote:
> On Monday 26 November 2007, Jan Kratochvil wrote:
>> Hi,
>>
>> this testcase:
>> http://people.redhat.com/jkratoch/dabr-lost.c
>>
>> reproduces a PPC DABR kernel bug. The variable `variable' should not get
>> modified as the thread modifying it should be caught by its DABR:
>>
>> $ ./dabr-lost
>> TID 30914: DABR 0x10012a77 NIP 0x80f6ebb318
>> TID 30915: DABR 0x10012a77 NIP 0x80f6ebb318
>> TID 30916: DABR 0x10012a77 NIP 0x80f6ebb318
>> TID 30914: hitting the variable
>> TID 30915: hitting the variable
>> TID 30916: hitting the variable
>> variable found = 30916, caught TID = 30914
>> TID 30916: DABR 0x10012a77
>> Variable got modified by a thread which has DABR still set!
>>
>
> This sounds like a bug recently reported by Uli Weigand. BenH
> said he'd take a look, but it probably fell under the table.
> The problem found by Uli is that on certain processors (Cell/B.E.
> in his case), the DABRX register needs to be set in order for
> the DABR to take effect.
Just as a note, the PS3's lv1_set_dabr(), which we used for
ppc_md.set_dabr sets up both the DABRX and DABR registers.
-Geoff
More information about the Linuxppc-dev
mailing list