diff options
author | thompsa <thompsa@FreeBSD.org> | 2009-06-18 20:42:37 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2009-06-18 20:42:37 +0000 |
commit | f3a1b951fc132d7220b5d5bdb2890f68143a229f (patch) | |
tree | fcb8769e53ae7f9a45ff483fe9ee1aa93674e156 /sys/vm/vm_phys.c | |
parent | 32a3828c705bbe3ff21c3fd2241f6cf76f1e441f (diff) | |
download | FreeBSD-src-f3a1b951fc132d7220b5d5bdb2890f68143a229f.zip FreeBSD-src-f3a1b951fc132d7220b5d5bdb2890f68143a229f.tar.gz |
Track the kernel mapping of a physical page by a new entry in vm_page
structure. When the page is shared, the kernel mapping becomes a special
type of managed page to force the cache off the page mappings. This is
needed to avoid stale entries on all ARM VIVT caches, and VIPT caches
with cache color issue.
Submitted by: Mark Tinguely
Reviewed by: alc
Tested by: Grzegorz Bernacki, thompsa
Diffstat (limited to 'sys/vm/vm_phys.c')
-rw-r--r-- | sys/vm/vm_phys.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c index 9c140a5..b6d1cb3 100644 --- a/sys/vm/vm_phys.c +++ b/sys/vm/vm_phys.c @@ -382,8 +382,7 @@ vm_phys_paddr_to_vm_page(vm_paddr_t pa) if (pa >= seg->start && pa < seg->end) return (&seg->first_page[atop(pa - seg->start)]); } - panic("vm_phys_paddr_to_vm_page: paddr %#jx is not in any segment", - (uintmax_t)pa); + return (NULL); } /* |