From ae2a3a1d8078cbbc4655310828006a239de66616 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Tue, 9 Oct 2018 13:22:46 +0200
Subject: [PATCH] kernel: enable memory compaction

Compaction is the only memory management component to form high order (larger
physically contiguous) memory blocks reliably. The page allocator relies on
compaction heavily and the lack of the feature can lead to unexpected OOM
killer invocations for high order memory requests. You shouldn't disable this
option unless there really is a strong reason for it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Michal Hrusecky <michal.hrusecky@nic.cz>
---
 target/linux/armvirt/config-4.14             | 1 +
 target/linux/at91/config-4.9                 | 1 -
 target/linux/generic/config-4.14             | 2 +-
 target/linux/generic/config-4.9              | 2 +-
 target/linux/layerscape/armv8_32b/config-4.9 | 1 -
 target/linux/layerscape/armv8_64b/config-4.9 | 1 -
 target/linux/mediatek/mt7623/config-4.14     | 1 -
 target/linux/octeontx/config-4.14            | 1 -
 target/linux/oxnas/config-4.14               | 1 -
 target/linux/sunxi/config-4.14               | 1 -
 target/linux/sunxi/config-4.9                | 1 -
 target/linux/x86/64/config-default           | 1 +
 target/linux/x86/generic/config-default      | 1 +
 13 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/target/linux/armvirt/config-4.14 b/target/linux/armvirt/config-4.14
index 64444d72fd9..a2d8bb4f20b 100644
--- a/target/linux/armvirt/config-4.14
+++ b/target/linux/armvirt/config-4.14
@@ -18,6 +18,7 @@ CONFIG_ARM_GIC_V2M=y
 CONFIG_ARM_GIC_V3=y
 CONFIG_ARM_PSCI_FW=y
 # CONFIG_ARM_SP805_WATCHDOG is not set
+CONFIG_BALLOON_COMPACTION=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLKSRC_OF=y
diff --git a/target/linux/at91/config-4.9 b/target/linux/at91/config-4.9
index e483d0f76d9..59a092b8569 100644
--- a/target/linux/at91/config-4.9
+++ b/target/linux/at91/config-4.9
@@ -71,7 +71,6 @@ CONFIG_CMA_AREAS=7
 CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw"
 CONFIG_COMMON_CLK=y
 CONFIG_COMMON_CLK_AT91=y
-CONFIG_COMPACTION=y
 CONFIG_COMPAT_BRK=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_CONSOLE_TRANSLATIONS=y
diff --git a/target/linux/generic/config-4.14 b/target/linux/generic/config-4.14
index aa227ec6bfb..96916c0e43e 100644
--- a/target/linux/generic/config-4.14
+++ b/target/linux/generic/config-4.14
@@ -813,7 +813,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_VERSATILE is not set
 # CONFIG_COMMON_CLK_XGENE is not set
 # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
-# CONFIG_COMPACTION is not set
+CONFIG_COMPACTION=y
 # CONFIG_COMPAL_LAPTOP is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_COMPILE_TEST is not set
diff --git a/target/linux/generic/config-4.9 b/target/linux/generic/config-4.9
index 83abfdc8ff1..53955d9ae7f 100644
--- a/target/linux/generic/config-4.9
+++ b/target/linux/generic/config-4.9
@@ -766,7 +766,7 @@ CONFIG_CMDLINE=""
 # CONFIG_COMMON_CLK_SI5351 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
 # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
-# CONFIG_COMPACTION is not set
+CONFIG_COMPACTION=y
 # CONFIG_COMPAL_LAPTOP is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_COMPILE_TEST is not set
diff --git a/target/linux/layerscape/armv8_32b/config-4.9 b/target/linux/layerscape/armv8_32b/config-4.9
index 1ee8fdb0d75..44662a23831 100644
--- a/target/linux/layerscape/armv8_32b/config-4.9
+++ b/target/linux/layerscape/armv8_32b/config-4.9
@@ -185,7 +185,6 @@ CONFIG_COMMON_CLK_MAX77686=y
 # CONFIG_COMMON_CLK_PALMAS is not set
 # CONFIG_COMMON_CLK_RK808 is not set
 # CONFIG_COMMON_CLK_S2MPS11 is not set
-CONFIG_COMPACTION=y
 CONFIG_COMPAT_BRK=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_CONSOLE_TRANSLATIONS=y
diff --git a/target/linux/layerscape/armv8_64b/config-4.9 b/target/linux/layerscape/armv8_64b/config-4.9
index 20758d41e2f..26c59dffe8a 100644
--- a/target/linux/layerscape/armv8_64b/config-4.9
+++ b/target/linux/layerscape/armv8_64b/config-4.9
@@ -204,7 +204,6 @@ CONFIG_COMMON_CLK_RK808=y
 CONFIG_COMMON_CLK_S2MPS11=y
 CONFIG_COMMON_CLK_VERSATILE=y
 CONFIG_COMMON_CLK_XGENE=y
-CONFIG_COMPACTION=y
 CONFIG_COMPAT=y
 CONFIG_COMPAT_BINFMT_ELF=y
 CONFIG_COMPAT_NETLINK_MESSAGES=y
diff --git a/target/linux/mediatek/mt7623/config-4.14 b/target/linux/mediatek/mt7623/config-4.14
index 9f709894102..05d99941cd3 100644
--- a/target/linux/mediatek/mt7623/config-4.14
+++ b/target/linux/mediatek/mt7623/config-4.14
@@ -75,7 +75,6 @@ CONFIG_COMMON_CLK_MT2701_VDECSYS=y
 # CONFIG_COMMON_CLK_MT7622 is not set
 # CONFIG_COMMON_CLK_MT8135 is not set
 # CONFIG_COMMON_CLK_MT8173 is not set
-CONFIG_COMPACTION=y
 CONFIG_COREDUMP=y
 # CONFIG_CPUFREQ_DT is not set
 CONFIG_CPU_32v6K=y
diff --git a/target/linux/octeontx/config-4.14 b/target/linux/octeontx/config-4.14
index fd627d6a261..09d22d517fe 100644
--- a/target/linux/octeontx/config-4.14
+++ b/target/linux/octeontx/config-4.14
@@ -120,7 +120,6 @@ CONFIG_COMMON_CLK=y
 CONFIG_COMMON_CLK_CS2000_CP=y
 # CONFIG_COMMON_CLK_VERSATILE is not set
 CONFIG_COMMON_CLK_XGENE=y
-CONFIG_COMPACTION=y
 CONFIG_COMPAT=y
 CONFIG_COMPAT_BINFMT_ELF=y
 CONFIG_COMPAT_NETLINK_MESSAGES=y
diff --git a/target/linux/oxnas/config-4.14 b/target/linux/oxnas/config-4.14
index 4d6943aea5e..56b54dd59d6 100644
--- a/target/linux/oxnas/config-4.14
+++ b/target/linux/oxnas/config-4.14
@@ -70,7 +70,6 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y
 CONFIG_CMDLINE_PARTITION=y
 CONFIG_COMMON_CLK=y
 CONFIG_COMMON_CLK_OXNAS=y
-CONFIG_COMPACTION=y
 CONFIG_COMPAT_BRK=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_CONTEXT_SWITCH_TRACER=y
diff --git a/target/linux/sunxi/config-4.14 b/target/linux/sunxi/config-4.14
index 197e099ab47..708917ec50f 100644
--- a/target/linux/sunxi/config-4.14
+++ b/target/linux/sunxi/config-4.14
@@ -76,7 +76,6 @@ CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLKSRC_MMIO=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_COMMON_CLK=y
-CONFIG_COMPACTION=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_CONNECTOR=y
 CONFIG_CONSOLE_TRANSLATIONS=y
diff --git a/target/linux/sunxi/config-4.9 b/target/linux/sunxi/config-4.9
index 4a74fd1f4fb..c9059be3fab 100644
--- a/target/linux/sunxi/config-4.9
+++ b/target/linux/sunxi/config-4.9
@@ -71,7 +71,6 @@ CONFIG_CLKSRC_OF=y
 CONFIG_CLKSRC_PROBE=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_COMMON_CLK=y
-CONFIG_COMPACTION=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_CONNECTOR=y
 CONFIG_CONSOLE_TRANSLATIONS=y
diff --git a/target/linux/x86/64/config-default b/target/linux/x86/64/config-default
index f55423e1c50..12932e4a2ae 100644
--- a/target/linux/x86/64/config-default
+++ b/target/linux/x86/64/config-default
@@ -49,6 +49,7 @@ CONFIG_AUDIT_ARCH=y
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_BACKLIGHT_GENERIC=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BALLOON_COMPACTION=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_MQ_VIRTIO=y
 # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
diff --git a/target/linux/x86/generic/config-default b/target/linux/x86/generic/config-default
index 327e7c647de..1e7cea801f3 100644
--- a/target/linux/x86/generic/config-default
+++ b/target/linux/x86/generic/config-default
@@ -47,6 +47,7 @@ CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_BACKLIGHT_GENERIC=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BALLOON_COMPACTION=y
 CONFIG_BLK_DEV_SR=y
 # CONFIG_BLK_DEV_SR_VENDOR is not set
 CONFIG_BLK_MQ_VIRTIO=y