Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Sep 2012 16:02:27 +0300
From:      Aleksandr Rybalko <ray@dlink.ua>
To:        Alan Cox <alc@rice.edu>
Cc:        "arm@freebsd.org" <arm@freebsd.org>
Subject:   Re: armv6 pmap patch
Message-ID:  <20120928160227.99d2b126.ray@dlink.ua>
In-Reply-To: <504E1A1B.90101@rice.edu>
References:  <504BDC56.3060607@rice.edu> <20120910211817.2d8a340d@fubar.geek.nz> <504E1A1B.90101@rice.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 10 Sep 2012 11:49:31 -0500
Alan Cox <alc@rice.edu> wrote:

>> On 09/10/2012 04:18, Andrew Turner wrote:
>> > On Sat, 08 Sep 2012 19:01:26 -0500
>> > Alan Cox<alc@rice.edu>  wrote:
>> >
>> >> Can someone here please test this patch to the new armv6 pmap?  It
>> >> eliminates the use of the page queues lock and updates some
>> >> comments. Similar changes were recently made to the original arm
>> >> pmap.
>> >>
>> >> Thanks,
>> >> Alan
>> >>
>> > I have booted FreeBSD with the patch on a Pandaboard and it
>> > appears to work. Are there any tests you would like me to run?
>> >
>> 
>> Nothing in particular, since almost anything that you do on the
>> machine will exercise the changed code.
>> 
>> There appears to be a lot of unnecessary dropping and reacquiring of 
>> locks around UMA calls in both pmap.c and pmap-v6.c.  I will try to 
>> generate a patch to eliminate this later in the week.
>> 
>> Alan
>> 

Hi Alan and ARM hackers,

Don't know exact, but think it is related to current pmap work.
So here is two panics observed on R-Pi recently (HEAD @r240985), both
on attempt to untar ports.tar.gz :)

panic: _rw_wlock_hard: recursing but non-recursive rw pmap pv global
@ /usr/1/MIPS_FreeBSD/HEAD/head/sys/arm/arm/pmap-v6.c:837

KDB: enter: panic
[ thread pid 4 tid 100027 ]
Stopped at      kdb_enter+0x48: ldrb    r15, [r15, r15, ror r15]!
db> 
db> bt    
Tracing pid 4 tid 100027 td 0xc0f60c00
db_trace_self() at db_trace_self+0xc
scp=0xc03347c4 rlv=0xc0334810 (db_trace_thread+0x38)
        rsp=0xc74de9f8 rfp=0xc74dea04
db_trace_thread() at db_trace_thread+0xc
scp=0xc03347e4 rlv=0xc01293b8 (db_command_init+0x648)
        rsp=0xc74dea08 rfp=0xc74dea24
db_command_init() at db_command_init+0x570
scp=0xc01292e0 rlv=0xc0128a60 (db_skip_to_eol+0x4a0)
        rsp=0xc74dea28 rfp=0xc74deacc
        r5=0x00000000 r4=0xc03e105c
db_skip_to_eol() at db_skip_to_eol+0x1d4
scp=0xc0128794 rlv=0xc0128bcc (db_command_loop+0x60)
        rsp=0xc74dead0 rfp=0xc74deadc
        r10=0x600000d3 r8=0x00000001
        r7=0x00000000 r6=0x00000000 r5=0xc03e1324 r4=0xc74deae8
db_command_loop() at db_command_loop+0xc
scp=0xc0128b78 rlv=0xc012b06c (X_db_sym_numargs+0xf4)
        rsp=0xc74deae0 rfp=0xc74debfc
X_db_sym_numargs() at X_db_sym_numargs+0x14
scp=0xc012af8c rlv=0xc0207168 (kdb_trap+0xa4)
        rsp=0xc74dec00 rfp=0xc74dec24
        r4=0xc74deca8
kdb_trap() at kdb_trap+0xc
scp=0xc02070d0 rlv=0xc03437ec (undefinedinstruction+0x2d0)
        rsp=0xc74dec28 rfp=0xc74deca4
        r10=0xe7ffffff r8=0xe7ffffff
        r7=0xc74deca8 r6=0x00000000 r5=0x00000000 r4=0x00000000
undefinedinstruction() at undefinedinstruction+0xc
scp=0xc0343528 rlv=0xc0335fc8 (address_exception_entry+0x50)
        rsp=0xc74deca8 rfp=0xc74ded04
        r10=0x00000356 r9=0xc0617a08
        r8=0x000050db r7=0xc0f60c00 r6=0xc037bdf4 r5=0xc040cdd4
        r4=0xc037c610
kdb_enter() at kdb_enter+0xc
scp=0xc0206c4c rlv=0xc01d44f4 (panic+0xe8)
        rsp=0xc74ded08 rfp=0xc74ded1c
        r4=0x00000100
panic() at panic+0x10
scp=0xc01d441c rlv=0xc01d2cc0 (_rw_wlock_hard+0x84)
        rsp=0xc74ded30 rfp=0xc74ded54
_rw_wlock_hard() at _rw_wlock_hard+0xc
scp=0xc01d2c48 rlv=0xc01d2ec4 (_rw_wlock+0xcc)
        rsp=0xc74ded58 rfp=0xc74ded74
        r8=0x000050db r7=0x00000008
        r6=0x00000000 r5=0xc03a0a54 r4=0x00000345
_rw_wlock() at _rw_wlock+0xc
scp=0xc01d2e04 rlv=0xc033be9c (pmap_fault_fixup+0x324)
        rsp=0xc74ded78 rfp=0xc74deda4
        r6=0xc0617a08 r5=0x00000000
        r4=0xc0617a08
pmap_fault_fixup() at pmap_fault_fixup+0x308
scp=0xc033be80 rlv=0xc033c0e4 (pmap_remove_write+0x60)
        rsp=0xc74deda8 rfp=0xc74dedb8
        r10=0x00000356 r9=0xc0505c24
        r8=0x000050db r7=0xc0617a08 r6=0xc0617a08 r5=0x00000000
        r4=0xc0617a08
pmap_remove_write() at pmap_remove_write+0xc
scp=0xc033c090 rlv=0xc033c23c (pmap_remove_all+0x4c)
        rsp=0xc74dedbc rfp=0xc74dede0
        r4=0xc039e270
pmap_remove_all() at pmap_remove_all+0xc
scp=0xc033c1fc rlv=0xc03291c8 (vm_pageout_grow_cache+0x19c8)
        rsp=0xc74dede4 rfp=0xc74dee84
        r10=0x00000356 r8=0x000050db
        r7=0xc0617a08 r6=0x00000000 r5=0x00000000 r4=0xc039e270
vm_pageout_grow_cache() at vm_pageout_grow_cache+0xde0
scp=0xc03285e0 rlv=0xc01ab8d4 (fork_exit+0x94)
        rsp=0xc74dee88 rfp=0xc74deea8
        r10=0x00000000 r9=0x00001770
        r8=0xc74deeac r7=0x00000000 r6=0xc03285d4 r5=0xc0ff6000
        r4=0xc0f60c00
fork_exit() at fork_exit+0xc
scp=0xc01ab84c rlv=0xc0341cc4 (fork_trampoline+0x14)
        rsp=0xc74deeac rfp=0x00000000
        r8=0x00000104 r7=0xecefbfda
        r6=0xa7efeeb3 r5=0x00000000 r4=0xc03285d4
db> 

----------------------------------------------------------------------------

panic: _rw_wlock_hard: recursing but non-recursive rw pmap pv global
@ /usr/1/MIPS_FreeBSD/HEAD/head/sys/arm/arm/pmap-v6.c:837

KDB: enter: panic
[ thread pid 4 tid 100027 ]
Stopped at      kdb_enter+0x48: ldrb    r15, [r15, r15, ror r15]!
db> bt
Tracing pid 4 tid 100027 td 0xc0f60c00
db_trace_self() at db_trace_self+0xc
scp=0xc03347c4 rlv=0xc0334810 (db_trace_thread+0x38)
        rsp=0xc74de9f8 rfp=0xc74dea04
db_trace_thread() at db_trace_thread+0xc
scp=0xc03347e4 rlv=0xc01293b8 (db_command_init+0x648)
        rsp=0xc74dea08 rfp=0xc74dea24
db_command_init() at db_command_init+0x570
scp=0xc01292e0 rlv=0xc0128a60 (db_skip_to_eol+0x4a0)
        rsp=0xc74dea28 rfp=0xc74deacc
        r5=0x00000000 r4=0xc03e105c
db_skip_to_eol() at db_skip_to_eol+0x1d4
scp=0xc0128794 rlv=0xc0128bcc (db_command_loop+0x60)
        rsp=0xc74dead0 rfp=0xc74deadc
        r10=0x600000d3 r8=0x00000001
        r7=0x00000000 r6=0x00000000 r5=0xc03e1324 r4=0xc74deae8
db_command_loop() at db_command_loop+0xc
scp=0xc0128b78 rlv=0xc012b06c (X_db_sym_numargs+0xf4)
        rsp=0xc74deae0 rfp=0xc74debfc
X_db_sym_numargs() at X_db_sym_numargs+0x14
scp=0xc012af8c rlv=0xc0207168 (kdb_trap+0xa4)
        rsp=0xc74dec00 rfp=0xc74dec24
        r4=0xc74deca8
kdb_trap() at kdb_trap+0xc
scp=0xc02070d0 rlv=0xc03437ec (undefinedinstruction+0x2d0)
        rsp=0xc74dec28 rfp=0xc74deca4
        r10=0xe7ffffff r8=0xe7ffffff
        r7=0xc74deca8 r6=0x00000000 r5=0x00000000 r4=0x00000000
undefinedinstruction() at undefinedinstruction+0xc
scp=0xc0343528 rlv=0xc0335fc8 (address_exception_entry+0x50)
        rsp=0xc74deca8 rfp=0xc74ded04
        r10=0x000003ba r9=0xc0638bf4
        r8=0x00004fe5 r7=0xc0f60c00 r6=0xc037bdf4 r5=0xc040cdd4
        r4=0xc037c610
kdb_enter() at kdb_enter+0xc
scp=0xc0206c4c rlv=0xc01d44f4 (panic+0xe8)
        rsp=0xc74ded08 rfp=0xc74ded1c
        r4=0x00000100
panic() at panic+0x10
scp=0xc01d441c rlv=0xc01d2cc0 (_rw_wlock_hard+0x84)
        rsp=0xc74ded30 rfp=0xc74ded54
_rw_wlock_hard() at _rw_wlock_hard+0xc
scp=0xc01d2c48 rlv=0xc01d2ec4 (_rw_wlock+0xcc)
        rsp=0xc74ded58 rfp=0xc74ded74
        r8=0x00004fe5 r7=0x00000008
        r6=0x00000000 r5=0xc03a0a54 r4=0x00000345
_rw_wlock() at _rw_wlock+0xc
scp=0xc01d2e04 rlv=0xc033be9c (pmap_fault_fixup+0x324)
        rsp=0xc74ded78 rfp=0xc74deda4
        r6=0xc0638bf4 r5=0x00000000
        r4=0xc0638bf4
pmap_fault_fixup() at pmap_fault_fixup+0x308
scp=0xc033be80 rlv=0xc033c0e4 (pmap_remove_write+0x60)
        rsp=0xc74deda8 rfp=0xc74dedb8
        r10=0x000003ba r9=0xc11b1000
        r8=0x00004fe5 r7=0xc0638bf4 r6=0xc0638bf4 r5=0x00000000
        r4=0xc0638bf4
pmap_remove_write() at pmap_remove_write+0xc
scp=0xc033c090 rlv=0xc033c23c (pmap_remove_all+0x4c)
        rsp=0xc74dedbc rfp=0xc74dede0
        r4=0xc039e270
pmap_remove_all() at pmap_remove_all+0xc
scp=0xc033c1fc rlv=0xc03291c8 (vm_pageout_grow_cache+0x19c8)
        rsp=0xc74dede4 rfp=0xc74dee84
        r10=0x000003ba r8=0x00004fe5
        r7=0xc0638bf4 r6=0x00000000 r5=0x00000000 r4=0xc039e270
vm_pageout_grow_cache() at vm_pageout_grow_cache+0xde0
scp=0xc03285e0 rlv=0xc01ab8d4 (fork_exit+0x94)
        rsp=0xc74dee88 rfp=0xc74deea8
        r10=0x00000000 r9=0x00001770
        r8=0xc74deeac r7=0x00000000 r6=0xc03285d4 r5=0xc0ff6000
        r4=0xc0f60c00
fork_exit() at fork_exit+0xc
scp=0xc01ab84c rlv=0xc0341cc4 (fork_trampoline+0x14)
        rsp=0xc74deeac rfp=0x00000000
        r8=0x00000104 r7=0xc0341cc4
        r6=0xc74deeac r5=0x00000000 r4=0xc03285d4
db> 
----------------------------------------------------------------------------

Thanks!

WBW
-- 
Alexandr Rybalko <ray@dlink.ua> 
aka Alex RAY <ray@ddteam.net>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120928160227.99d2b126.ray>