Index: sys/powerpc/powerpc/mem.c =================================================================== --- sys/powerpc/powerpc/mem.c +++ sys/powerpc/powerpc/mem.c @@ -137,7 +137,8 @@ else if (dev2unit(dev) == CDEV_MINOR_KMEM) { va = uio->uio_offset; - if ((va < VM_MIN_KERNEL_ADDRESS) || (va > virtual_end)) { + if (hw_direct_map && + ((va < VM_MIN_KERNEL_ADDRESS) || (va > virtual_end))) { v = DMAP_TO_PHYS(va); goto kmem_direct_mapped; } @@ -159,8 +160,9 @@ ? VM_PROT_READ : VM_PROT_WRITE; va = uio->uio_offset; - if (kernacc((void *) va, iov->iov_len, prot) - == FALSE) + + if (hw_direct_map && + kernacc((void *) va, iov->iov_len, prot) == FALSE) return (EFAULT); error = uiomove((void *)va, iov->iov_len, uio);