Date: Tue, 28 Apr 2015 09:32:14 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-arm@FreeBSD.org Subject: [Bug 199739] with ARM_NEW_PMAP ptrace syscalls do not achieve icache consistency Message-ID: <bug-199739-7-fxo3xaw7yF@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-199739-7@https.bugs.freebsd.org/bugzilla/> References: <bug-199739-7@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199739 onwahe@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |onwahe@gmail.com --- Comment #1 from onwahe@gmail.com --- Thank you for your patch. While fixing it, I'm adding some tweaks. Someone with commit bit, commit it please. Index: sys/arm/arm/pmap-v6-new.c =================================================================== --- sys/arm/arm/pmap-v6-new.c (revision 282129) +++ sys/arm/arm/pmap-v6-new.c (working copy) @@ -6094,13 +6094,13 @@ /* - * Clean L1 data cache range on a single page, which is not mapped yet. + * Clean L1 data cache range by physical address. + * The range must be within a single page. */ static void pmap_dcache_wb_pou(vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) { struct sysmaps *sysmaps; - vm_offset_t va; KASSERT(((pa & PAGE_MASK) + size) <= PAGE_SIZE, ("%s: not on single page", __func__)); @@ -6111,9 +6111,8 @@ if (*sysmaps->CMAP3) panic("%s: CMAP3 busy", __func__); pte2_store(sysmaps->CMAP3, PTE2_KERN_NG(pa, PTE2_AP_KRW, ma)); - va = (vm_offset_t)sysmaps->CADDR3; - tlb_flush_local(va); - dcache_wb_pou(va, size); + tlb_flush_local((vm_offset_t)sysmaps->CADDR3); + dcache_wb_pou((vm_offset_t)sysmaps->CADDR3 + (pa & PAGE_MASK), size); pte2_clear(sysmaps->CMAP3); sched_unpin(); mtx_unlock(&sysmaps->lock); -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-199739-7-fxo3xaw7yF>