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