svn commit: r312394 - in stable/11/sys: amd64/amd64 arm/arm arm64/arm64 i386/i386 mips/mips powerpc/powerpc sparc64/sparc64
John Baldwin
jhb at FreeBSD.org
Wed Jan 18 19:38:55 UTC 2017
Author: jhb
Date: Wed Jan 18 19:38:53 2017
New Revision: 312394
URL: https://svnweb.freebsd.org/changeset/base/312394
Log:
MFC 307332,312086: Drop support for using mmap() with /dev/kmem.
307332:
Drop support for using mmap() with /dev/kmem.
Using the device pager with /dev/kmem is not stable since KVA mappings
are transient, but the device pager caches the PA associated with a
given offset forever. Interestingly, mips' implementation of
memmap() already refused requests for /dev/kmem.
Note that kvm_read/kvm_write do not use mmap, but use read and write on
/dev/kmem, so this should not affect libkvm users.
312086:
Trim a few comments on platforms that did not implement mmap of /dev/kmem.
After r307332, no platforms implement mmap for /dev/kmem, so the lack of
it for these platforms is no longer unique.
Modified:
stable/11/sys/amd64/amd64/mem.c
stable/11/sys/arm/arm/mem.c
stable/11/sys/arm64/arm64/mem.c
stable/11/sys/i386/i386/mem.c
stable/11/sys/mips/mips/mem.c
stable/11/sys/powerpc/powerpc/mem.c
stable/11/sys/sparc64/sparc64/mem.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/amd64/amd64/mem.c
==============================================================================
--- stable/11/sys/amd64/amd64/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/amd64/amd64/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -172,10 +172,9 @@ memmmap(struct cdev *dev, vm_ooffset_t o
if (offset > cpu_getmaxphyaddr())
return (-1);
*paddr = offset;
- } else if (dev2unit(dev) == CDEV_MINOR_KMEM)
- *paddr = vtophys(offset);
- /* else panic! */
- return (0);
+ return (0);
+ }
+ return (-1);
}
/*
Modified: stable/11/sys/arm/arm/mem.c
==============================================================================
--- stable/11/sys/arm/arm/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/arm/arm/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -161,10 +161,9 @@ int
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
int prot __unused, vm_memattr_t *memattr __unused)
{
- if (dev2unit(dev) == CDEV_MINOR_MEM)
+ if (dev2unit(dev) == CDEV_MINOR_MEM) {
*paddr = offset;
- else if (dev2unit(dev) == CDEV_MINOR_KMEM)
- *paddr = vtophys(offset);
- /* else panic! */
- return (0);
+ return (0);
+ }
+ return (-1);
}
Modified: stable/11/sys/arm64/arm64/mem.c
==============================================================================
--- stable/11/sys/arm64/arm64/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/arm64/arm64/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -123,10 +123,9 @@ int
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
int prot __unused, vm_memattr_t *memattr __unused)
{
- if (dev2unit(dev) == CDEV_MINOR_MEM)
+ if (dev2unit(dev) == CDEV_MINOR_MEM) {
*paddr = offset;
- else if (dev2unit(dev) == CDEV_MINOR_KMEM)
- *paddr = vtophys(offset);
- /* else panic! */
- return (0);
+ return (0);
+ }
+ return (-1);
}
Modified: stable/11/sys/i386/i386/mem.c
==============================================================================
--- stable/11/sys/i386/i386/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/i386/i386/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -168,10 +168,9 @@ memmmap(struct cdev *dev, vm_ooffset_t o
if (offset > cpu_getmaxphyaddr())
return (-1);
*paddr = offset;
- } else if (dev2unit(dev) == CDEV_MINOR_KMEM)
- *paddr = vtophys(offset);
- /* else panic! */
- return (0);
+ return (0);
+ }
+ return (-1);
}
/*
Modified: stable/11/sys/mips/mips/mem.c
==============================================================================
--- stable/11/sys/mips/mips/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/mips/mips/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -151,12 +151,6 @@ int
memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
int prot, vm_memattr_t *memattr)
{
- /*
- * /dev/mem is the only one that makes sense through this
- * interface. For /dev/kmem any physaddr we return here
- * could be transient and hence incorrect or invalid at
- * a later time.
- */
if (dev2unit(dev) != CDEV_MINOR_MEM)
return (-1);
Modified: stable/11/sys/powerpc/powerpc/mem.c
==============================================================================
--- stable/11/sys/powerpc/powerpc/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/powerpc/powerpc/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -179,8 +179,6 @@ memmmap(struct cdev *dev, vm_ooffset_t o
if (dev2unit(dev) == CDEV_MINOR_MEM)
*paddr = offset;
- else if (dev2unit(dev) == CDEV_MINOR_KMEM)
- *paddr = vtophys(offset);
else
return (EFAULT);
Modified: stable/11/sys/sparc64/sparc64/mem.c
==============================================================================
--- stable/11/sys/sparc64/sparc64/mem.c Wed Jan 18 18:16:57 2017 (r312393)
+++ stable/11/sys/sparc64/sparc64/mem.c Wed Jan 18 19:38:53 2017 (r312394)
@@ -43,7 +43,7 @@ __FBSDID("$FreeBSD$");
/*
* Memory special file
*
- * NOTE: other architectures support mmap()'ing the mem and kmem devices; this
+ * NOTE: other architectures support mmap()'ing the mem device; this
* might cause illegal aliases to be created for the locked kernel page(s), so
* it is not implemented.
*/
More information about the svn-src-stable-11
mailing list