Date: Sat, 21 Nov 2015 06:03:47 +0000 (UTC) From: Justin Hibbits <jhibbits@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r291122 - head/sys/powerpc/booke Message-ID: <201511210603.tAL63loY085365@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhibbits Date: Sat Nov 21 06:03:46 2015 New Revision: 291122 URL: https://svnweb.freebsd.org/changeset/base/291122 Log: trunc_page() goes through unsigned long, which is too short. sizeof(unsigned long) < sizeof(vm_paddr_t) on Book-E, which uses 36-bit addressing. With this, a CCSR with a physical address above 4GB successfully maps. Sponsored by: Alex Perez/Inertial Computing Modified: head/sys/powerpc/booke/pmap.c Modified: head/sys/powerpc/booke/pmap.c ============================================================================== --- head/sys/powerpc/booke/pmap.c Sat Nov 21 02:49:33 2015 (r291121) +++ head/sys/powerpc/booke/pmap.c Sat Nov 21 06:03:46 2015 (r291122) @@ -3298,7 +3298,7 @@ pmap_early_io_map(vm_paddr_t pa, vm_size return (tlb1[i].virt + (pa - tlb1[i].phys)); } - pa_base = trunc_page(pa); + pa_base = rounddown(pa, PAGE_SIZE); size = roundup(size + (pa - pa_base), PAGE_SIZE); tlb1_map_base = roundup2(tlb1_map_base, 1 << (ilog2(size) & ~1)); va = tlb1_map_base + (pa - pa_base);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201511210603.tAL63loY085365>