|
@@ -34,15 +34,37 @@ static inline int current_is_kswapd(void)
|
|
|
* the type/offset into the pte as 5/27 as well.
|
|
|
*/
|
|
|
#define MAX_SWAPFILES_SHIFT 5
|
|
|
-#ifndef CONFIG_MIGRATION
|
|
|
-#define MAX_SWAPFILES (1 << MAX_SWAPFILES_SHIFT)
|
|
|
+
|
|
|
+/*
|
|
|
+ * Use some of the swap files numbers for other purposes. This
|
|
|
+ * is a convenient way to hook into the VM to trigger special
|
|
|
+ * actions on faults.
|
|
|
+ */
|
|
|
+
|
|
|
+/*
|
|
|
+ * NUMA node memory migration support
|
|
|
+ */
|
|
|
+#ifdef CONFIG_MIGRATION
|
|
|
+#define SWP_MIGRATION_NUM 2
|
|
|
+#define SWP_MIGRATION_READ (MAX_SWAPFILES + SWP_HWPOISON_NUM)
|
|
|
+#define SWP_MIGRATION_WRITE (MAX_SWAPFILES + SWP_HWPOISON_NUM + 1)
|
|
|
#else
|
|
|
-/* Use last two entries for page migration swap entries */
|
|
|
-#define MAX_SWAPFILES ((1 << MAX_SWAPFILES_SHIFT)-2)
|
|
|
-#define SWP_MIGRATION_READ MAX_SWAPFILES
|
|
|
-#define SWP_MIGRATION_WRITE (MAX_SWAPFILES + 1)
|
|
|
+#define SWP_MIGRATION_NUM 0
|
|
|
#endif
|
|
|
|
|
|
+/*
|
|
|
+ * Handling of hardware poisoned pages with memory corruption.
|
|
|
+ */
|
|
|
+#ifdef CONFIG_MEMORY_FAILURE
|
|
|
+#define SWP_HWPOISON_NUM 1
|
|
|
+#define SWP_HWPOISON MAX_SWAPFILES
|
|
|
+#else
|
|
|
+#define SWP_HWPOISON_NUM 0
|
|
|
+#endif
|
|
|
+
|
|
|
+#define MAX_SWAPFILES \
|
|
|
+ ((1 << MAX_SWAPFILES_SHIFT) - SWP_MIGRATION_NUM - SWP_HWPOISON_NUM)
|
|
|
+
|
|
|
/*
|
|
|
* Magic header for a swap area. The first part of the union is
|
|
|
* what the swap magic looks like for the old (limited to 128MB)
|