svn commit: r343872 - head/sys/powerpc/powerpc
Leandro Lupori
luporl at FreeBSD.org
Thu Feb 7 17:30:45 UTC 2019
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
More information about the svn-src-head
mailing list