Author: luporl Date: Thu Feb 7 17:30:44 2019 New Revision: 343872 URL: https://svnweb.freebsd.org/changeset/base/343872
Log: [ppc64] fix /dev/kmem For direct mapped kernel addresses, ppc64 function was not performing the dmap to physical conversion, before jumping to the code that fetched the value from physical memory. Reviewed by: jhibbits Differential Revision: https://reviews.freebsd.org/D19086 Modified: head/sys/powerpc/powerpc/mem.c Modified: head/sys/powerpc/powerpc/mem.c ============================================================================== --- head/sys/powerpc/powerpc/mem.c Thu Feb 7 14:40:28 2019 (r343871) +++ head/sys/powerpc/powerpc/mem.c Thu Feb 7 17:30:44 2019 (r343872) @@ -112,9 +112,9 @@ memrw(struct cdev *dev, struct uio *uio, int flags) continue; } if (dev2unit(dev) == CDEV_MINOR_MEM) { -kmem_direct_mapped: v = uio->uio_offset; + v = uio->uio_offset; - off = uio->uio_offset & PAGE_MASK; +kmem_direct_mapped: off = v & PAGE_MASK; cnt = PAGE_SIZE - ((vm_offset_t)iov->iov_base & PAGE_MASK); cnt = min(cnt, PAGE_SIZE - off); @@ -137,8 +137,10 @@ kmem_direct_mapped: v = uio->uio_offset; else if (dev2unit(dev) == CDEV_MINOR_KMEM) { va = uio->uio_offset; - if ((va < VM_MIN_KERNEL_ADDRESS) || (va > virtual_end)) + if ((va < VM_MIN_KERNEL_ADDRESS) || (va > virtual_end)) { + v = DMAP_TO_PHYS(va); goto kmem_direct_mapped; + } va = trunc_page(uio->uio_offset); eva = round_page(uio->uio_offset _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"