Date: Fri, 28 Sep 2012 12:06:14 -0500 From: Alan Cox <alc@rice.edu> To: Aleksandr Rybalko <ray@dlink.ua> Cc: "arm@freebsd.org" <arm@freebsd.org>, Alan Cox <alc@rice.edu> Subject: Re: armv6 pmap patch Message-ID: <5065D906.1040602@rice.edu> In-Reply-To: <20120928160227.99d2b126.ray@dlink.ua> References: <504BDC56.3060607@rice.edu> <20120910211817.2d8a340d@fubar.geek.nz> <504E1A1B.90101@rice.edu> <20120928160227.99d2b126.ray@dlink.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On 09/28/2012 08:02, Aleksandr Rybalko wrote: > 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 :) Yes, the problem is clear from the stack trace. I should have time to prepare a patch later today. Alan > 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5065D906.1040602>