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"

Reply via email to