From owner-freebsd-arm@FreeBSD.ORG Fri Sep 28 13:02:20 2012 Return-Path: Delivered-To: arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D2118106566B for ; Fri, 28 Sep 2012 13:02:20 +0000 (UTC) (envelope-from ray@dlink.ua) Received: from smtp.dlink.ua (smtp.dlink.ua [193.138.187.146]) by mx1.freebsd.org (Postfix) with ESMTP id 1B5A98FC1E for ; Fri, 28 Sep 2012 13:02:19 +0000 (UTC) Received: from terran.dlink.ua (unknown [192.168.10.90]) (Authenticated sender: ray) by smtp.dlink.ua (Postfix) with ESMTPSA id 61A4CC4930; Fri, 28 Sep 2012 16:02:13 +0300 (EEST) Date: Fri, 28 Sep 2012 16:02:27 +0300 From: Aleksandr Rybalko To: Alan Cox 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> Organization: D-Link X-Mailer: Sylpheed 2.7.1 (GTK+ 2.20.1; i386-portbld-freebsd8.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "arm@freebsd.org" Subject: Re: armv6 pmap patch X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Sep 2012 13:02:20 -0000 On Mon, 10 Sep 2012 11:49:31 -0500 Alan Cox wrote: >> On 09/10/2012 04:18, Andrew Turner wrote: >> > On Sat, 08 Sep 2012 19:01:26 -0500 >> > Alan Cox 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 aka Alex RAY