Page MenuHomeFreeBSD

D26467.id.diff
No OneTemporary

D26467.id.diff

Index: head/sys/amd64/include/vmparam.h
===================================================================
--- head/sys/amd64/include/vmparam.h
+++ head/sys/amd64/include/vmparam.h
@@ -254,6 +254,11 @@
#define VM_BATCHQUEUE_SIZE 31
/*
+ * The pmap can create non-transparent large page mappings.
+ */
+#define PMAP_HAS_LARGEPAGES 1
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/arm/include/vmparam.h
===================================================================
--- head/sys/arm/include/vmparam.h
+++ head/sys/arm/include/vmparam.h
@@ -194,6 +194,11 @@
#define DEVMAP_MAX_VADDR ARM_VECTORS_HIGH
/*
+ * No non-transparent large page support in the pmap.
+ */
+#define PMAP_HAS_LARGEPAGES 0
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/arm64/include/vmparam.h
===================================================================
--- head/sys/arm64/include/vmparam.h
+++ head/sys/arm64/include/vmparam.h
@@ -244,6 +244,11 @@
#define DEVMAP_MAX_VADDR VM_MAX_KERNEL_ADDRESS
/*
+ * The pmap can create non-transparent large page mappings.
+ */
+#define PMAP_HAS_LARGEPAGES 1
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/i386/include/vmparam.h
===================================================================
--- head/sys/i386/include/vmparam.h
+++ head/sys/i386/include/vmparam.h
@@ -241,6 +241,11 @@
#define DMAP_TO_PHYS(x) ({ panic("No direct map exists"); 0; })
/*
+ * No non-transparent large page support in the pmap.
+ */
+#define PMAP_HAS_LARGEPAGES 0
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/kern/uipc_shm.c
===================================================================
--- head/sys/kern/uipc_shm.c
+++ head/sys/kern/uipc_shm.c
@@ -1067,10 +1067,8 @@
return (EINVAL);
largepage = (shmflags & SHM_LARGEPAGE) != 0;
-#if !defined(__amd64__)
- if (largepage)
+ if (largepage && !PMAP_HAS_LARGEPAGES)
return (ENOTTY);
-#endif
/*
* Currently only F_SEAL_SEAL may be set when creating or opening shmfd.
Index: head/sys/mips/include/vmparam.h
===================================================================
--- head/sys/mips/include/vmparam.h
+++ head/sys/mips/include/vmparam.h
@@ -198,6 +198,11 @@
#define DMAP_TO_PHYS(x) MIPS_DIRECT_TO_PHYS(x)
/*
+ * No non-transparent large page support in the pmap.
+ */
+#define PMAP_HAS_LARGEPAGES 0
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/powerpc/include/vmparam.h
===================================================================
--- head/sys/powerpc/include/vmparam.h
+++ head/sys/powerpc/include/vmparam.h
@@ -327,4 +327,9 @@
KASSERT(hw_direct_map, ("Direct map not provided by PMAP")); \
(x) &~ DMAP_BASE_ADDRESS; })
+/*
+ * No non-transparent large page support in the pmap.
+ */
+#define PMAP_HAS_LARGEPAGES 0
+
#endif /* _MACHINE_VMPARAM_H_ */
Index: head/sys/riscv/include/vmparam.h
===================================================================
--- head/sys/riscv/include/vmparam.h
+++ head/sys/riscv/include/vmparam.h
@@ -237,6 +237,11 @@
#define DEVMAP_MAX_VADDR VM_MAX_KERNEL_ADDRESS
/*
+ * No non-transparent large page support in the pmap.
+ */
+#define PMAP_HAS_LARGEPAGES 0
+
+/*
* Need a page dump array for minidump.
*/
#define MINIDUMP_PAGE_TRACKING 1
Index: head/sys/vm/vm_fault.c
===================================================================
--- head/sys/vm/vm_fault.c
+++ head/sys/vm/vm_fault.c
@@ -487,6 +487,8 @@
* populate only busies the first page in superpage run.
*/
if (bdry_idx != 0) {
+ KASSERT(PMAP_HAS_LARGEPAGES,
+ ("missing pmap support for large pages"));
m = vm_page_lookup(fs->first_object, pager_first);
vm_fault_populate_check_page(m);
VM_OBJECT_WUNLOCK(fs->first_object);

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 19, 1:30 PM (18 m, 21 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29965172
Default Alt Text
D26467.id.diff (3 KB)

Event Timeline