File tree 2 files changed +19
-5
lines changed
2 files changed +19
-5
lines changed Original file line number Diff line number Diff line change @@ -72,14 +72,20 @@ extern struct kobj_attribute shmem_enabled_attr;
72
72
#define THP_ORDERS_ALL_ANON ((BIT(PMD_ORDER + 1) - 1) & ~(BIT(0) | BIT(1)))
73
73
74
74
/*
75
- * Mask of all large folio orders supported for file THP.
75
+ * Mask of all large folio orders supported for file THP. Folios in a DAX
76
+ * file is never split and the MAX_PAGECACHE_ORDER limit does not apply to
77
+ * it.
76
78
*/
77
- #define THP_ORDERS_ALL_FILE (BIT(PMD_ORDER) | BIT(PUD_ORDER))
79
+ #define THP_ORDERS_ALL_FILE_DAX \
80
+ (BIT(PMD_ORDER) | BIT(PUD_ORDER))
81
+ #define THP_ORDERS_ALL_FILE_DEFAULT \
82
+ ((BIT(MAX_PAGECACHE_ORDER + 1) - 1) & ~BIT(0))
78
83
79
84
/*
80
85
* Mask of all large folio orders supported for THP.
81
86
*/
82
- #define THP_ORDERS_ALL (THP_ORDERS_ALL_ANON | THP_ORDERS_ALL_FILE)
87
+ #define THP_ORDERS_ALL \
88
+ (THP_ORDERS_ALL_ANON | THP_ORDERS_ALL_FILE_DAX | THP_ORDERS_ALL_FILE_DEFAULT)
83
89
84
90
#define TVA_SMAPS (1 << 0) /* Will be used for procfs */
85
91
#define TVA_IN_PF (1 << 1) /* Page fault handler */
Original file line number Diff line number Diff line change @@ -88,9 +88,17 @@ unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma,
88
88
bool smaps = tva_flags & TVA_SMAPS ;
89
89
bool in_pf = tva_flags & TVA_IN_PF ;
90
90
bool enforce_sysfs = tva_flags & TVA_ENFORCE_SYSFS ;
91
+ unsigned long supported_orders ;
92
+
91
93
/* Check the intersection of requested and supported orders. */
92
- orders &= vma_is_anonymous (vma ) ?
93
- THP_ORDERS_ALL_ANON : THP_ORDERS_ALL_FILE ;
94
+ if (vma_is_anonymous (vma ))
95
+ supported_orders = THP_ORDERS_ALL_ANON ;
96
+ else if (vma_is_dax (vma ))
97
+ supported_orders = THP_ORDERS_ALL_FILE_DAX ;
98
+ else
99
+ supported_orders = THP_ORDERS_ALL_FILE_DEFAULT ;
100
+
101
+ orders &= supported_orders ;
94
102
if (!orders )
95
103
return 0 ;
96
104
You can’t perform that action at this time.
0 commit comments