kernel_optimize_test/arch/arm/configs
Minchan Kim e91d8d7823 mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING
While I was doing zram testing, I found sometimes decompression failed
since the compression buffer was corrupted.  With investigation, I found
below commit calls cond_resched unconditionally so it could make a
problem in atomic context if the task is reschedule.

  BUG: sleeping function called from invalid context at mm/vmalloc.c:108
  in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 946, name: memhog
  3 locks held by memhog/946:
   #0: ffff9d01d4b193e8 (&mm->mmap_lock#2){++++}-{4:4}, at: __mm_populate+0x103/0x160
   #1: ffffffffa3d53de0 (fs_reclaim){+.+.}-{0:0}, at: __alloc_pages_slowpath.constprop.0+0xa98/0x1160
   #2: ffff9d01d56b8110 (&zspage->lock){.+.+}-{3:3}, at: zs_map_object+0x8e/0x1f0
  CPU: 0 PID: 946 Comm: memhog Not tainted 5.9.3-00011-gc5bfc0287345-dirty #316
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1 04/01/2014
  Call Trace:
    unmap_kernel_range_noflush+0x2eb/0x350
    unmap_kernel_range+0x14/0x30
    zs_unmap_object+0xd5/0xe0
    zram_bvec_rw.isra.0+0x38c/0x8e0
    zram_rw_page+0x90/0x101
    bdev_write_page+0x92/0xe0
    __swap_writepage+0x94/0x4a0
    pageout+0xe3/0x3a0
    shrink_page_list+0xb94/0xd60
    shrink_inactive_list+0x158/0x460

We can fix this by removing the ZSMALLOC_PGTABLE_MAPPING feature (which
contains the offending calling code) from zsmalloc.

Even though this option showed some amount improvement(e.g., 30%) in
some arm32 platforms, it has been headache to maintain since it have
abused APIs[1](e.g., unmap_kernel_range in atomic context).

Since we are approaching to deprecate 32bit machines and already made
the config option available for only builtin build since v5.8, lastly it
has been not default option in zsmalloc, it's time to drop the option
for better maintenance.

[1] http://lore.kernel.org/linux-mm/20201105170249.387069-1-minchan@kernel.org

Fixes: e47110e905 ("mm/vunmap: add cond_resched() in vunmap_pmd_range")
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Harish Sriram <harish@linux.ibm.com>
Cc: Uladzislau Rezki <urezki@gmail.com>
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20201117202916.GA3856507@google.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-12-06 10:19:07 -08:00
..
am200epdkit_defconfig all arch: remove system call sys_sysctl 2020-08-14 19:56:56 -07:00
aspeed_g4_defconfig ARM: config: aspeed: Fix selection of media drivers 2020-09-11 15:25:24 +09:30
aspeed_g5_defconfig ARM: config: aspeed_g5: Enable IBM OP Panel driver 2020-09-11 15:25:24 +09:30
assabet_defconfig
at91_dt_defconfig ARM: configs: at91: enable sama5d4 compatible watchdog 2020-02-12 12:29:22 +01:00
axm55xx_defconfig arm: Remove KVM from config files 2020-03-24 10:55:50 +00:00
badge4_defconfig USB: rio500: Remove Rio 500 kernel driver 2019-10-04 10:53:36 +02:00
bcm2835_defconfig Enables fixed regulator in bcm2835_defconfig 2020-04-13 15:55:35 -07:00
cerfcube_defconfig
clps711x_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
cm_x300_defconfig
cns3420vb_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
colibri_pxa270_defconfig
colibri_pxa300_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
collie_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
corgi_defconfig USB: rio500: Remove Rio 500 kernel driver 2019-10-04 10:53:36 +02:00
davinci_all_defconfig drm/bridge: dumb-vga-dac: Rename driver to simple-bridge 2020-02-26 13:31:31 +02:00
dove_defconfig
dram_0x00000000.config
dram_0xc0000000.config
dram_0xd0000000.config
ebsa110_defconfig
efm32_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
ep93xx_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
eseries_pxa_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
exynos_defconfig ARM: exynos_defconfig: enable platform media drivers 2020-08-17 17:52:50 +02:00
ezx_defconfig media: arch/arm/configs: remove obsolete CONFIG_SOC_CAMERA* 2020-07-04 12:20:33 +02:00
footbridge_defconfig
gemini_defconfig ARM: defconfig: gemini: Update defconfig 2020-01-06 09:24:32 -08:00
h3600_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
h5000_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
hackkit_defconfig
hisi_defconfig
imote2_defconfig media: arch/arm/configs: remove obsolete CONFIG_SOC_CAMERA* 2020-07-04 12:20:33 +02:00
imx_v4_v5_defconfig ARM: imx_v4_v5_defconfig: Select CONFIG_GPIO_MXC 2020-10-27 07:45:43 +08:00
imx_v6_v7_defconfig ARM: imx_v6_v7_defconfig: Build in CONFIG_GPIO_MXC by default 2020-10-26 15:48:59 +08:00
integrator_defconfig ARM: configs: Update Integrator defconfig 2020-08-20 18:12:49 -07:00
iop32x_defconfig
ixp4xx_defconfig
jornada720_defconfig
keystone_defconfig net: ethernet: ti: Remove TI_CPTS_MOD workaround 2020-05-12 12:33:27 -07:00
lart_defconfig
lpc18xx_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
lpc32xx_defconfig sysctl: Remove the sysctl system call 2019-11-26 13:03:56 -06:00
lpd270_defconfig
lubbock_defconfig
magician_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
mainstone_defconfig
milbeaut_m10v_defconfig
mini2440_defconfig
mmp2_defconfig
moxart_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
mps2_defconfig
multi_v4t_defconfig ARM: defconfig: re-run savedefconfig on multi_v* configs 2019-12-05 13:20:18 -08:00
multi_v5_defconfig ARM: multi_v5_defconfig: Select CONFIG_GPIO_MXC 2020-10-27 07:45:43 +08:00
multi_v7_defconfig ARM: multi_v7_defconfig: Build in CONFIG_GPIO_MXC by default 2020-10-26 15:49:15 +08:00
mv78xx0_defconfig
mvebu_v5_defconfig
mvebu_v7_defconfig
mxs_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
neponset_defconfig
netwinder_defconfig
nhk8815_defconfig
omap1_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
omap2plus_defconfig mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING 2020-12-06 10:19:07 -08:00
orion5x_defconfig
oxnas_v6_defconfig
palmz72_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
pcm027_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
pleb_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
prima2_defconfig
pxa_defconfig media updates for v5.9-rc1 2020-08-07 13:00:53 -07:00
pxa3xx_defconfig
pxa168_defconfig
pxa255-idp_defconfig
pxa910_defconfig
qcom_defconfig ARM: qcom_defconfig: Enable QRTR 2020-03-09 13:13:02 -07:00
realview_defconfig ARM: configs: Update Realview defconfig 2020-09-13 11:15:24 -07:00
rpc_defconfig scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled 2020-02-24 14:59:01 -05:00
s3c2410_defconfig scsi: sr: remove references to BLK_DEV_SR_VENDOR, leave it enabled 2020-02-24 14:59:01 -05:00
s3c6400_defconfig
s5pv210_defconfig
sama5_defconfig media updates for v5.9-rc1 2020-08-07 13:00:53 -07:00
shannon_defconfig
shmobile_defconfig ARM: shmobile: defconfig: Enable CONFIG_PCIE_RCAR_HOST 2020-09-01 13:54:41 +02:00
simpad_defconfig
socfpga_defconfig ARM: socfpga_defconfig: Add back DEBUG_FS 2020-03-04 04:06:27 -06:00
spear3xx_defconfig
spear6xx_defconfig
spear13xx_defconfig
spitz_defconfig USB: rio500: Remove Rio 500 kernel driver 2019-10-04 10:53:36 +02:00
stm32_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
sunxi_defconfig ARM: configs: sunxi: Enable crypto related options 2020-07-07 12:52:46 +02:00
tango4_defconfig
tct_hammer_defconfig
tegra_defconfig ARM: tegra: Default configuration changes for v5.9-rc1 2020-07-20 17:16:51 +02:00
trizeps4_defconfig
u300_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
u8500_defconfig ARM: defconfig: u8500: Enable new drivers for ux500 2020-04-29 17:32:42 +02:00
versatile_defconfig ARM: configs: Update Versatile defconfig 2020-09-13 11:15:17 -07:00
vexpress_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
vf610m4_defconfig
viper_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
vt8500_v6_v7_defconfig
xcep_defconfig
zeus_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00
zx_defconfig ARM: configs: Cleanup old Kconfig options 2020-02-09 03:44:58 -08:00