From owner-freebsd-arm@freebsd.org Thu Oct 15 05:35:00 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7F9FBA1592C for ; Thu, 15 Oct 2015 05:35:00 +0000 (UTC) (envelope-from mattia.rossi.mate@gmail.com) Received: from mail-wi0-x22d.google.com (mail-wi0-x22d.google.com [IPv6:2a00:1450:400c:c05::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DEE64D7D for ; Thu, 15 Oct 2015 05:34:59 +0000 (UTC) (envelope-from mattia.rossi.mate@gmail.com) Received: by wicll6 with SMTP id ll6so24265827wic.0 for ; Wed, 14 Oct 2015 22:34:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:reply-to:subject:references:to:message-id:date:user-agent :mime-version:in-reply-to:content-type; bh=3AVgcqfn7x/dUqYWTb3rBv9utpdvggjUHTtNr1U4cVM=; b=WErC2EjtBvoTle6ozooC5vzxldaSuFgh+NrVlEY9aH90+/pIiKkRhkBleOlWi2N1Zx GcI23D9TYbvCDZWoaSbQuqrepqeFeIjg7D4KqefhIgdtfJP0ULvwWDTnhnOmbANCmef3 dpaPPXaKwbydU4yp4tpRci/wF9kznelp148zTy+Gxgh8eOJzxbtM1Z+J1/x0oODTmKVH 3pMLqLS0SewV7A0gu149+UgR4w5iEl+8HLupd/qol2/Xs2hH631uPPXcfeE0qa7PaYpr QnXlga2TW/c5LGqePSe2GqVThEujAyDtg5as3EXFviK4jU0mSznAy6ObZ+sqoSrPBy3w jiXA== X-Received: by 10.194.87.198 with SMTP id ba6mr8190256wjb.6.1444887298424; Wed, 14 Oct 2015 22:34:58 -0700 (PDT) Received: from [192.168.0.10] (178-83-152-199.dynamic.hispeed.ch. [178.83.152.199]) by smtp.googlemail.com with ESMTPSA id xa5sm14131164wjc.20.2015.10.14.22.34.57 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 14 Oct 2015 22:34:57 -0700 (PDT) From: Mattia Rossi X-Google-Original-From: Mattia Rossi Reply-To: mattia.rossi.mate@gmail.com Subject: Re: testing of busdma updates for armv5 References: <561AA64C.5010001@gmail.com> <561B679D.8020501@gmail.com> <561CEBE4.7060304@gmail.com> <561CEE85.1000301@gmail.com> <561E1312.1030908@gmail.com> To: Jason Harmening , ARM Message-ID: <561F3B00.80404@gmail.com> Date: Thu, 15 Oct 2015 07:34:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Oct 2015 05:35:00 -0000 Hi Jason, sorry, I don't think your patch has anything to do with it. Since I updated the source tree from scratch after the previous patch mess, I must have deleted some patch that I had applied and was using for hte last year or so, because currently I simply can't get the system to boot anymore. Something to do with mounting my ufs root fs... Fatal kernel mode data abort: 'Alignment Fault 1' trapframe: 0xd733a720 FSR=00000001, FAR=0000012b, spsr=60000013 r0 =00000000, r1 =000081a4, r2 =00000127, r3 =00000000 r4 =00000000, r5 =000081a4, r6 =00000100, r7 =00000000 r8 =00004080, r9 =00000001, r10=00000000, r11=d733a7d0 r12=d733a824, ssp=d733a7b0, slr=c0d46d60, pc =c0b70768 [ thread pid 36 tid 100050 ] Stopped at vaccess+0x54: ldr r0, [r2, #0x004] db> bt Tracing pid 36 tid 100050 td 0xc3c8f350 db_trace_self() at db_trace_self pc = 0xc0d85054 lr = 0xc094836c (db_hex2dec+0x1dc) sp = 0xd733a420 fp = 0xd733a438 db_hex2dec() at db_hex2dec+0x1dc pc = 0xc094836c lr = 0xc0947fc4 (db_command_loop+0x2dc) sp = 0xd733a440 fp = 0xd733a4e0 r4 = 0x00000001 r5 = 0x00000000 r6 = 0xc0f3776f r10 = 0xc0ec8f38 db_command_loop() at db_command_loop+0x2dc pc = 0xc0947fc4 lr = 0xc0947d34 (db_command_loop+0x4c) sp = 0xd733a4e8 fp = 0xd733a4f8 r4 = 0xc0ddc953 r5 = 0xc0dfad18 r6 = 0xc0f37758 r7 = 0xc0ec924c r8 = 0xc0f2b420 r9 = 0xc0f2b424 r10 = 0x00000013 db_command_loop() at db_command_loop+0x4c pc = 0xc0947d34 lr = 0xc094a948 (db_fetch_ksymtab+0x298) sp = 0xd733a500 fp = 0xd733a618 r4 = 0x00000000 r5 = 0xc0f37764 r6 = 0xc0f2b440 r10 = 0x00000013 db_fetch_ksymtab() at db_fetch_ksymtab+0x298 pc = 0xc094a948 lr = 0xc0b05dd8 (kdb_trap+0xc0) sp = 0xd733a620 fp = 0xd733a640 r4 = 0x00000000 r5 = 0x00000001 r6 = 0xc0f2b440 r7 = 0xc0ec924c kdb_trap() at kdb_trap+0xc0 pc = 0xc0b05dd8 lr = 0xc0d96d34 (abort_handler+0x79c) sp = 0xd733a648 fp = 0xd733a660 r4 = 0xd733a720 r5 = 0x00000001 r6 = 0x600000d3 r7 = 0x0000012b r8 = 0x0000012b r9 = 0x00000001 r10 = 0x00000013 abort_handler() at abort_handler+0x79c pc = 0xc0d96d34 lr = 0xc0d96edc (badaddr_read+0x140) sp = 0xd733a668 fp = 0xd733a678 r4 = 0xd733a720 r5 = 0xc3c8f350 r6 = 0xc0d96e6c r7 = 0x00000000 badaddr_read() at badaddr_read+0x140 pc = 0xc0d96edc lr = 0xc0d968a4 (abort_handler+0x30c) sp = 0xd733a680 fp = 0xd733a718 r4 = 0xd733a720 r5 = 0xc3c8f350 abort_handler() at abort_handler+0x30c pc = 0xc0d968a4 lr = 0xc0d86694 (exception_exit) sp = 0xd733a720 fp = 0xd733a7d0 r4 = 0xffffffff r5 = 0xffff1004 r6 = 0x00000100 r7 = 0x00000000 r8 = 0x00004080 r9 = 0x00000001 r10 = 0x00000000 exception_exit() at exception_exit pc = 0xc0d86694 lr = 0xc0d46d60 (ufs_vinit+0x490) sp = 0xd733a7b0 fp = 0xd733a7d0 r0 = 0x00000000 r1 = 0x000081a4 r2 = 0x00000127 r3 = 0x00000000 r4 = 0x00000000 r5 = 0x000081a4 r6 = 0x00000100 r7 = 0x00000000 r8 = 0x00004080 r9 = 0x00000001 r10 = 0x00000000 r12 = 0xd733a824 vaccess() at vaccess+0x58 pc = 0xc0b7076c lr = 0xc0d46d60 (ufs_vinit+0x490) sp = 0xd733a7d8 fp = 0xd733a7f8 r4 = 0x00000000 r5 = 0x00000100 r6 = 0x00000127 r7 = 0xc3c8f350 r8 = 0x00000127 r9 = 0x00000000 r10 = 0x00000100 ufs_vinit() at ufs_vinit+0x490 pc = 0xc0d46d60 lr = 0xc0db2124 (VOP_ACCESSX_APV+0xd4) sp = 0xd733a800 fp = 0xd733a810 r4 = 0xd733a81c r5 = 0xc0f07360 r6 = 0x00000000 r10 = 0x00000100 VOP_ACCESSX_APV() at VOP_ACCESSX_APV+0xd4 pc = 0xc0db2124 lr = 0xc0b5e130 (vop_stdaccess+0x4c) sp = 0xd733a818 fp = 0xd733a838 r4 = 0xc0f0a9e4 r5 = 0xc0ef32ac r6 = 0x00000000 r10 = 0x00000100 vop_stdaccess() at vop_stdaccess+0x4c pc = 0xc0b5e130 lr = 0xc0db2018 (VOP_ACCESS_APV+0xd4) sp = 0xd733a840 fp = 0xd733a850 r4 = 0xd733a88c r10 = 0x00000100 VOP_ACCESS_APV() at VOP_ACCESS_APV+0xd4 pc = 0xc0db2018 lr = 0xc0b7c16c (vn_open_vnode+0xf4) sp = 0xd733a858 fp = 0xd733a8c0 r4 = 0xc3db27e0 r5 = 0x00000101 r6 = 0x00000014 r10 = 0x00000100 vn_open_vnode() at vn_open_vnode+0xf4 pc = 0xc0b7c16c lr = 0xc0b7be28 (vn_open_cred+0x2fc) sp = 0xd733a8c8 fp = 0xd733a9b8 r4 = 0xd733a9d8 r5 = 0xc3db27e0 r6 = 0xd733a9d8 r7 = 0x00000101 r8 = 0x00000000 r9 = 0x00000000 r10 = 0x00000000 vn_open_cred() at vn_open_cred+0x2fc pc = 0xc0b7be28 lr = 0xc3dea978 (kobj_open_file+0xa0) sp = 0xd733a9c0 fp = 0xd733aa98 r4 = 0xc3fdcd80 r5 = 0x00000000 r6 = 0xd733a9d8 r7 = 0xc3c8f350 r8 = 0xc0f09928 r9 = 0xd733abb8 r10 = 0xc3d11c00 kobj_open_file() at kobj_open_file+0xa0 pc = 0xc3dea978 lr = 0xc3e7fc78 (spa_config_load+0x3c) sp = 0xd733aaa0 fp = 0xd733aac8 r4 = 0x027b0000 r5 = 0xc3d12400 r6 = 0xc3f94cb0 r7 = 0x1f7f0000 r8 = 0x00000003 r10 = 0xc3d11c00 spa_config_load() at spa_config_load+0x3c pc = 0xc3e7fc78 lr = 0xc3e86550 (spa_init+0x144) sp = 0xd733aad0 fp = 0xd733aae8 r4 = 0x027b0000 r5 = 0xc3f94cfc r6 = 0xc3f94cb0 r7 = 0x1f7f0000 r8 = 0x00000003 r9 = 0xd733abb8 spa_init() at spa_init+0x144 pc = 0xc3e86550 lr = 0xc3ed5324 ($a.37+0x78) sp = 0xd733aaf0 fp = 0xd733ab20 r4 = 0xc3fd72d4 r5 = 0xc3fd72f0 r6 = 0xc3f8d150 r7 = 0xc3f70bce r8 = 0xc0f39178 r10 = 0xc3d11c00 $a.37() at $a.37+0x78 pc = 0xc3ed5324 lr = 0xc0ab8c78 (module_register_init+0xb0) sp = 0xd733ab28 fp = 0xd733ab48 r4 = 0xc0f39150 r5 = 0xc3ceec80 r6 = 0xc3f8d150 r7 = 0xc3f70bce r8 = 0xc0f39178 r10 = 0xc3d11c00 module_register_init() at module_register_init+0xb0 pc = 0xc0ab8c78 lr = 0xc0aad0dc (linker_reference_module+0xd1c) sp = 0xd733ab50 fp = 0xd733ada0 r4 = 0xc0f39178 r5 = 0xc3f73660 r6 = 0xc3f8d17c r7 = 0xc3cd1780 r8 = 0xc3ceec80 r9 = 0xd733abb8 linker_reference_module() at linker_reference_module+0xd1c pc = 0xc0aad0dc lr = 0xc0aae784 (kern_kldload+0xbc) sp = 0xd733ada8 fp = 0xd733adc0 r4 = 0xd733adcc r5 = 0xc3d11c00 r6 = 0xc3d11c00 r7 = 0x00000000 r8 = 0xd733adf8 r9 = 0xbfbff9ec r10 = 0x00000000 kern_kldload() at kern_kldload+0xbc pc = 0xc0aae784 lr = 0xc0aae850 (sys_kldload+0x60) sp = 0xd733adc8 fp = 0xd733ade0 r4 = 0xc3c8f350 r5 = 0xc3d11c00 r6 = 0x00000000 r7 = 0x00000000 sys_kldload() at sys_kldload+0x60 pc = 0xc0aae850 lr = 0xc0d96278 (swi_handler+0x26c) sp = 0xd733ade8 fp = 0xd733ae48 r4 = 0xc3c8f350 r5 = 0xc3c94700 r6 = 0x60000013 r10 = 0x00000000 swi_handler() at swi_handler+0x26c pc = 0xc0d96278 lr = 0xc0d86624 (swi_exit) sp = 0xd733ae50 fp = 0xbfbffe28 r4 = 0xbfbfff54 r5 = 0x00000000 r6 = 0x00000000 r7 = 0x00000130 r8 = 0x00000001 r9 = 0xbfbff9ec r10 = 0xbfbff970 swi_exit() at swi_exit pc = 0xc0d86624 lr = 0xc0d86624 (swi_exit) sp = 0xd733ae50 fp = 0xbfbffe28 db> On 14/10/15 18:58, Jason Harmening wrote: > Oops, that's an assertion I put in _bus_dmamap_load_buffer() to > prevent data corruption if my assumptions on page layout turned out to > be wrong. > But it looks like that assertion is too aggressive and is catching > something that isn't a bug for armv5 (it would be a bug for armv7 though). > > Can you try this patch instead? > > On Wed, Oct 14, 2015 at 3:32 AM, Mattia Rossi > > wrote: > > Hi Mat, > > No worries, it's not that big of a hurry. In fact, here is an > updated > patch, which adds a check (ported from x86 busdma) to prevent > overflow > of the temporary mappings used for bounce buffers. > > Hi Jason, > > the kernel seems not to be too happy about your patch - this > happens immediately after trying to mountroot: > > panic: Non-contiguous vm_page_t at addr 0x135c000 > KDB: enter: panic > [ thread pid 13 tid 100029 ] > Stopped at kdb_enter+0x48: ldrb r15, [r15, r15, ror r15]! > db> bt > Tracing pid 13 tid 100029 td 0xc397c000 > db_trace_self() at db_trace_self > pc = 0xc0d84a68 lr = 0xc094836c (db_hex2dec+0x1dc) > sp = 0xd5f958e8 fp = 0xd5f95900 > db_hex2dec() at db_hex2dec+0x1dc > pc = 0xc094836c lr = 0xc0947fc4 (db_command_loop+0x2dc) > sp = 0xd5f95908 fp = 0xd5f959a8 > r4 = 0x00000001 r5 = 0x00000000 > r6 = 0xc0f3326f r10 = 0xc0ec88b8 > db_command_loop() at db_command_loop+0x2dc > pc = 0xc0947fc4 lr = 0xc0947d34 (db_command_loop+0x4c) > sp = 0xd5f959b0 fp = 0xd5f959c0 > r4 = 0xc0ddc3cf r5 = 0xc0dfa794 > r6 = 0xc0f33258 r7 = 0xc0ec8bcc > r8 = 0xc0f27420 r9 = 0xc0f27424 > r10 = 0xc0b0568c > db_command_loop() at db_command_loop+0x4c > pc = 0xc0947d34 lr = 0xc094a948 (db_fetch_ksymtab+0x298) > sp = 0xd5f959c8 fp = 0xd5f95ae0 > r4 = 0x00000000 r5 = 0xc0f33264 > r6 = 0xc0f27440 r10 = 0xc0b0568c > db_fetch_ksymtab() at db_fetch_ksymtab+0x298 > pc = 0xc094a948 lr = 0xc0b05dd8 (kdb_trap+0xc0) > sp = 0xd5f95ae8 fp = 0xd5f95b08 > r4 = 0x00000000 r5 = 0x00000001 > r6 = 0xc0f27440 r7 = 0xc0ec8bcc > kdb_trap() at kdb_trap+0xc0 > pc = 0xc0b05dd8 lr = 0xc0d971c4 (undefinedinstruction+0x2f8) > sp = 0xd5f95b10 fp = 0xd5f95b80 > r4 = 0x00000000 r5 = 0x00000000 > r6 = 0xc0d96e1c r7 = 0xe7ffffff > r8 = 0xc397c000 r9 = 0xd5f95b88 > r10 = 0xc0b0568c > undefinedinstruction() at undefinedinstruction+0x2f8 > pc = 0xc0d971c4 lr = 0xc0d860a8 (exception_exit) > sp = 0xd5f95b88 fp = 0xd5f95c20 > r4 = 0xffffffff r5 = 0xffff1004 > r6 = 0xc0e30bd3 r7 = 0xc0f34d78 > r8 = 0xc0f19548 r9 = 0xc397c000 > r10 = 0x0135c000 > exception_exit() at exception_exit > pc = 0xc0d860a8 lr = 0xc0b05680 (kdb_enter+0x3c) > sp = 0xd5f95c18 fp = 0xd5f95c20 > r0 = 0xc0f27434 r1 = 0x00000000 > r2 = 0xc0dfe674 r3 = 0xc0dfe2cd > r4 = 0xc0dfa6f1 r5 = 0xd5f95c64 > r6 = 0xc0e30bd3 r7 = 0xc0f34d78 > r8 = 0xc0f19548 r9 = 0xc397c000 > r10 = 0x0135c000 r12 = 0x00000000 > kdb_enter() at kdb_enter+0x4c > pc = 0xc0b05690 lr = 0xc0acf358 (vpanic+0xb8) > sp = 0xd5f95c28 fp = 0xd5f95c40 > r4 = 0x00000100 r10 = 0x0135c000 > vpanic() at vpanic+0xb8 > pc = 0xc0acf358 lr = 0xc0acf270 (kassert_panic+0x110) > sp = 0xd5f95c48 fp = 0xd5f95c5c > r4 = 0xc0e30bd3 r5 = 0xd5f95c64 > r6 = 0xc3cb4000 r7 = 0xd3f1f000 > r8 = 0xd3f1f000 r9 = 0x00001000 > kassert_panic() at kassert_panic+0x110 > pc = 0xc0acf270 lr = 0xc0d82238 > (_bus_dmamap_load_buffer+0x1bc) > sp = 0xd5f95c70 fp = 0xd5f95ca8 > r4 = 0x00001000 r5 = 0x00001000 > r6 = 0xc3cb4000 r10 = 0x0135c000 > _bus_dmamap_load_buffer() at _bus_dmamap_load_buffer+0x1bc > pc = 0xc0d82238 lr = 0xc0aff960 (bus_dmamap_load+0x94) > sp = 0xd5f95cb0 fp = 0xd5f95cf0 > r4 = 0x00002000 r5 = 0xd3f1e000 > r6 = 0xc3cd9460 r7 = 0xc3cbe680 > r8 = 0xc09af25c r9 = 0xc3ca2c20 > r10 = 0x00000000 > bus_dmamap_load() at bus_dmamap_load+0x94 > pc = 0xc0aff960 lr = 0xc09af244 (usb_pc_load_mem+0x134) > sp = 0xd5f95cf8 fp = 0xd5f95d18 > r4 = 0x00002000 r5 = 0xc3ca2c20 > r6 = 0x00000000 r7 = 0x00000000 > r8 = 0xc3ca1000 r9 = 0xc3ca1440 > r10 = 0x00000001 > usb_pc_load_mem() at usb_pc_load_mem+0x134 > pc = 0xc09af244 lr = 0xc09af70c (usb_bdma_work_loop+0x28c) > sp = 0xd5f95d20 fp = 0xd5f95d48 > r4 = 0xc3ca101c r5 = 0x00000003 > r6 = 0xc3ca1cd0 r7 = 0xc3ca10ac > usb_bdma_work_loop() at usb_bdma_work_loop+0x28c > pc = 0xc09af70c lr = 0xc09c8548 (usb_command_wrapper+0x104) > sp = 0xd5f95d50 fp = 0xd5f95d58 > r4 = 0xc3ca101c r5 = 0x00000000 > r6 = 0x00002000 r7 = 0x00000010 > r8 = 0xc3721ee0 r9 = 0x00000001 > r10 = 0x00000000 > usb_command_wrapper() at usb_command_wrapper+0x104 > pc = 0xc09c8548 lr = 0xc09c813c (usbd_transfer_submit+0x628) > sp = 0xd5f95d60 fp = 0xd5f95d80 > r4 = 0xc3ca1440 r5 = 0xc3721c78 > usbd_transfer_submit() at usbd_transfer_submit+0x628 > pc = 0xc09c813c lr = 0xc09acc60 > (usb_proc_explore_unlock+0x2178) > sp = 0xd5f95d88 fp = 0xd5f95da8 > r4 = 0xc3c6e400 r5 = 0xc3ca1440 > r6 = 0x00002000 r7 = 0x00002000 > r8 = 0xc3ca1440 r10 = 0x00000000 > usb_proc_explore_unlock() at usb_proc_explore_unlock+0x2178 > pc = 0xc09acc60 lr = 0xc09c74d8 (usbd_transfer_setup+0xcb4) > sp = 0xd5f95db0 fp = 0xd5f95de8 > r4 = 0xc3ca1030 r5 = 0xc3ca14f3 > r6 = 0x00000000 r7 = 0xc3ca1000 > usbd_transfer_setup() at usbd_transfer_setup+0xcb4 > pc = 0xc09c74d8 lr = 0xc09c8548 (usb_command_wrapper+0x104) > sp = 0xd5f95df0 fp = 0xd5f95df8 > r4 = 0xc3ca1030 r5 = 0x00000000 > r6 = 0xc3721d0c r7 = 0xc3ca1058 > r8 = 0x00000000 r9 = 0x00000001 > r10 = 0x00000000 > usb_command_wrapper() at usb_command_wrapper+0x104 > pc = 0xc09c8548 lr = 0xc09c76f4 (usbd_transfer_setup+0xed0) > sp = 0xd5f95e00 fp = 0xd5f95e08 > r4 = 0xc0de5e81 r5 = 0xc3ca1000 > usbd_transfer_setup() at usbd_transfer_setup+0xed0 > pc = 0xc09c76f4 lr = 0xc09c2e20 (usb_proc_create+0x198) > sp = 0xd5f95e10 fp = 0xd5f95e28 > r4 = 0xc3721cfc r5 = 0xc3721d04 > usb_proc_create() at usb_proc_create+0x198 > pc = 0xc09c2e20 lr = 0xc0aa032c (fork_exit+0x84) > sp = 0xd5f95e30 fp = 0xd5f95e48 > r4 = 0xc397c000 r5 = 0xc36a7000 > r6 = 0xc09c2d78 r7 = 0xc0f09258 > r8 = 0xd5f95e50 r9 = 0xc3721cfc > fork_exit() at fork_exit+0x84 > pc = 0xc0aa032c lr = 0xc0d86038 (swi_exit) > sp = 0xd5f95e50 fp = 0x00000000 > r4 = 0xc09c2d78 r5 = 0xc3721cfc > r6 = 0x00000000 r7 = 0x00000000 > r8 = 0x00000000 r9 = 0x00000000 > swi_exit() at swi_exit > pc = 0xc0d86038 lr = 0xc0d86038 (swi_exit) > sp = 0xd5f95e50 fp = 0x00000000 > db> > > >