Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 04 Nov 2007 18:01:52 -0600
From:      Alan Cox <alc@cs.rice.edu>
To:        Kris Kennaway <kris@FreeBSD.org>
Cc:        alc@FreeBSD.org, freebsd-sparc64@FreeBSD.org, John Baldwin <jhb@FreeBSD.org>, Marius Strobl <marius@alchemy.franken.de>
Subject:   Re: 7.0 broken on e4500
Message-ID:  <472E5D70.3020009@cs.rice.edu>
In-Reply-To: <472E54D0.8070807@FreeBSD.org>
References:  <46FEADFD.8020105@FreeBSD.org> <20071003132944.GA17342@alchemy.franken.de> <200710060222.31023.jhb@freebsd.org> <20071006132620.GF24840@alchemy.franken.de> <472DFC18.3080000@FreeBSD.org> <472E4573.3090708@FreeBSD.org> <20071104224618.GD36824@alchemy.franken.de> <472E54D0.8070807@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?472E5D70.3020009>