Panic with latest pmap lock changes.

Alan Cox alc at rice.edu
Tue Jul 10 22:22:42 UTC 2012


On 7/10/2012 3:23 PM, Andreas Tobler wrote:
> On 10.07.12 22:00, Alan Cox wrote:
>> On Sun, Jul 8, 2012 at 3:55 PM, Andreas Tobler <andreast-list at fgznet.ch
>> <mailto:andreast-list at fgznet.ch>> wrote:
>>
>>     On 07.07.12 19:39, Alan Cox wrote:
>>
>>         On 07/07/2012 09:20, Justin Hibbits wrote:
>>
>>             Looks like I spoke too soon about the pmap lock changes
>>             working on my
>>             G4.  After about 24 hours of uptime, it panicked with the
>>             following:
>>
>>             _rw_wlock_hard: recursing but non-recursive rw pmap pv 
>> global
>>             @ /home/chmeee/freebsd/src/sys/__powerpc/aim/mmu_oea.c:2301
>>
>>             I think the attached patch should fix it (Untested, 
>> except for
>>             compiling).
>>
>>
>>         Ugh.  Sorry.
>>
>>         The attached patch eliminates the lock recursion.  While I 
>> was doing
>>         that, I noticed that the pmap_ts_referenced() implementations on
>>         powerpc
>>         have the wrong return type.  Oddly, the comments in mmu_if.h
>>         have the
>>         return type correct, but the code two or three lines later has
>>         it wrong.
>>
>>
>>     Fyi, I'm building world with the patch mentioned in this thread and
>>     the kernel updated to 238258. (G5-SMP 32-bit)
>>
>>     So far it looks promising.
>>
>>     Before 238258 I got reliable machine locks/freeze w/o any idea what
>>     was happening.
>>
>>     If I reverted mmu_oea.c back to 238158, one before the commit from
>>     you Alan, I was able to get a successful full world/kernel build 
>> cycle.
>>     Yes, I confirmed that it booted, but I was not able to run a full
>>     world/kernel cycle since I lost my GEOM_APM config ;).
>>
>>     Anyway, as said, it looks promising and it will take some hours to
>>     complete.
>>
>>
>> Should I commit the patch?
>
> Hmmm, I had three successful world/kernel builds with this patch. All 
> with a GENERIC kernel. But I also had one freeze, no info/panic 
> nothing, with a kernel where I disabled the WITNESS/INVARIANTS stuff.
>
> I think the patch is an improvement. I need to figure why I do not get 
> any info when the machine freezes/locks whatever. But this can be done 
> with the committed patch. Maybe we get bigger testing audience when it 
> is committed.
>

A combined effect of this and the previous patch is that there will be a 
little more concurrency within the VM system on 32-bit aim/oea systems.  
This might have exposed a race in the machine-dependent code.  The state 
of the locking on 32-bit aim/oea systems is now comparable to i386 and 
sparc64, but behind amd64 and aim/oea64.

Alan



More information about the freebsd-ppc mailing list