7.0 broken on e4500
Alan Cox
alc at cs.rice.edu
Sun Nov 4 16:33:09 PST 2007
Kris Kennaway wrote:
> Marius Strobl wrote:
>
>> On Sun, Nov 04, 2007 at 11:19:31PM +0100, Kris Kennaway wrote:
>>
>>>
>>>>
>>> Another runtime panic from a u60:
>>>
>>> panic() at panic+0x204
>>> _mtx_assert() at _mtx_assert+0xac
>>> pmap_page_is_mapped() at pmap_page_is_mapped+0x38
>>> vm_page_free_toq() at vm_page_free_toq+0x4c
>>> vm_page_free() at vm_page_free+0x10
>>> uma_small_free() at uma_small_free+0x1c
>>> zone_drain() at zone_drain+0x2d0
>>> zone_foreach() at zone_foreach+0x6c
>>> uma_reclaim() at uma_reclaim+0x20
>>> vm_pageout() at vm_pageout+0x9b8
>>> fork_exit() at fork_exit+0x9c
>>> fork_trampoline() at fork_trampoline+0x8
>>>
>>
>> Have you asked alc@ about these?
>>
>> Marius
>>
>>
>
> I have now :)
>
Let's deal with the latter case first. This case was supposed to be
fixed by this change:
alc 2007-10-07 18:03:04 UTC
FreeBSD src repository
Modified files:
sys/sparc64/sparc64 pmap.c
sys/vm vm_page.c
Log:
Correct a lock assertion failure in sparc64's pmap_page_is_mapped() that is
a consequence of sparc64/sparc64/vm_machdep.c revision 1.76. It occurs
when uma_small_free() frees a page. The solution has two parts: (1) Mark
pages allocated with VM_ALLOC_NOOBJ as PG_UNMANAGED. (2) Defer the lock
assertion in pmap_page_is_mapped() until after PG_UNMANAGED is tested.
This is safe because both PG_UNMANAGED and PG_FICTITIOUS are immutable
flags, i.e., they do not change state between the time that a page is
allocated and freed.
Approved by: re (kensmith)
PR: 116794
Revision Changes Path
1.166 +1 -1 src/sys/sparc64/sparc64/pmap.c
1.356 +1 -1 src/sys/vm/vm_page.c
Do you have this change?
Alan
More information about the freebsd-sparc64
mailing list