linux/drivers/staging
Heesub Shin 0cd2dc4db3 staging: ion: shrink highmem pages on kswapd
ION system heap keeps pages in its pool for better performance. When the
system is under memory pressure, slab shrinker calls the callback
registered and then the pages pooled get freed.

When the shrinker is called, it checks gfp_mask and determines whether
the pages from highmem need to be freed or the pages from lowmem.
Usually, slab shrinker is invoked on kswapd context which gfp_mask is
always GFP_KERNEL, so only lowmem pages are released on kswapd context.
This means that highmem pages in the pool are never reclaimed until
direct reclaim occurs. This can be problematic when the page pool holds
excessive amounts of highmem.

For now, the shrinker callback cannot know exactly which zone should be
targeted for reclamation, as enough information are not passed to. Thus,
it makes sense to shrink both lowmem and highmem zone on kswapd context.

Reported-by: Wonseo Choi <wonseo.choi@samsung.com>
Signed-off-by: Heesub Shin <heesub.shin@samsung.com>
Reviewed-by: Mitchel Humpherys <mitchelh@codeaurora.org>
Tested-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-29 13:40:46 -07:00
..
android staging: ion: shrink highmem pages on kswapd 2014-05-29 13:40:46 -07:00
bcm drivers/staging: Remove useless return variables 2014-05-26 10:32:15 -07:00
ced1401
comedi staging: comedi: adl_pci9111: factor fifo handling out of pci9111_interrupt() 2014-05-28 14:28:56 -07:00
cptm1217
crystalhd Staging: crystalhd: Improve kzalloc calls in crystalhd_lnx.c 2014-04-18 16:22:15 -07:00
cxt1e1 staging: ctx1e1: remove checks for three macros 2014-05-26 20:19:26 -07:00
dgap staging: dgap: Use EIO instead of ENXIO 2014-05-28 14:35:09 -07:00
dgnc staging: dgnc: Use time_after_eq() 2014-05-25 11:53:44 -07:00
dgrp
et131x staging: et131x: Remove empty file Module.symvers 2014-05-23 20:43:47 +09:00
frontier Staging/frontier/tranzport: coding style fixes 2014-05-28 14:30:33 -07:00
ft1000 staging: ft1000: Remove useless return variables 2014-05-24 02:14:31 +09:00
fwserial drivers/staging: Use RCU_INIT_POINTER(x, NULL) in fwserial/fwserial.c 2014-04-25 14:01:40 -07:00
gdm72xx staging: gdm72xx: code cleanup 2014-05-24 07:23:15 +09:00
gdm724x
goldfish goldfish: clean up staging ifdefs 2014-05-15 13:20:41 -07:00
gs_fpgaboot staging: gs_fpgaboot: Fixed code style issues 2014-05-15 13:56:10 -07:00
iio Third round of new stuff for IIO in the 3.16 cycle. 2014-05-25 10:56:30 -07:00
imx-drm imx-hdmi: Make checkpatch happy 2014-05-23 20:44:43 +09:00
keucr staging: Convert __FUNCTION__ to __func__ 2014-05-25 11:05:07 -07:00
line6 staging/line6: blank line after declaration cleanup 2014-05-15 13:54:29 -07:00
lustre staging/lustre/llite: Remove unnecessary check for NULL before iput() 2014-05-26 10:33:49 -07:00
media staging: lirc: remove checks for CONFIG_LIRC_SERIAL_NSLU2 2014-05-26 20:19:26 -07:00
mt29f_spinand staging/mt29f_spinand: Terminate of match table 2014-05-25 10:59:52 -07:00
netlogic staging: netlogic: fix missing a blank line after declarations 2014-04-25 16:05:12 -07:00
nokia_h4p staging: nokia_h4p: Fix a coding style problem 2014-05-03 19:44:52 -04:00
nvec
octeon
octeon-usb staging: Convert __FUNCTION__ to __func__ 2014-05-25 11:05:07 -07:00
olpc_dcon staging/olpc_dcon: fix checkpatch warnings 2014-05-24 07:23:15 +09:00
ozwpan staging: ozwpan: Remove useless return variables 2014-05-23 21:11:57 +09:00
panel staging: panel: (coding style) Multiple assignments 2014-05-25 10:59:52 -07:00
phison
quickstart
rtl8188eu staging: rtl8188eu: Remove unneeded version.h inclusion 2014-05-28 14:30:32 -07:00
rtl8192e drivers/staging: Remove useless return variables 2014-05-26 10:32:15 -07:00
rtl8192ee rtl8192ee: btcoexist: remove undefined Kconfig macros 2014-05-28 14:33:03 -07:00
rtl8192u Staging: rtl8192u: r8192U_wx.c Added {} braces and newlines 2014-05-28 14:33:04 -07:00
rtl8712 staging: rtl8712: return -ENOMEM instead of -1 2014-05-27 11:55:29 -07:00
rtl8723au staging: rtl8723au: Remove redundant casting in usb_ops_linux.c 2014-05-28 14:36:05 -07:00
rtl8821ae staging: rtl8821ae: stats.c: Remove version specific code 2014-05-27 11:58:27 -07:00
rts5208 staging: rts5208: Use pci_device_id rather than DEFINE_PCI_DEVICE_TABLE 2014-05-24 02:14:31 +09:00
sep drivers/staging: Remove useless return variables 2014-05-26 10:32:15 -07:00
serqt_usb2 staging: serqt_usb2: Clean up initializations of variables 2014-05-03 20:16:39 -04:00
silicom staging: silicom/bypasslib/bp_ioctl.h: Fix erroneous global variable definitions 2014-05-26 10:36:07 -07:00
skein staging/skein: variable/member name cleanup 2014-05-21 11:17:42 +09:00
slicoss staging: slicoss: clean up use of dev_err 2014-05-25 10:59:53 -07:00
speakup Staging: speakup: don't die if accessing sysfs without synth 2014-05-27 17:35:50 -07:00
ste_rmi4
tidspbridge staging: tidspbridge: check for CONFIG_SND_OMAP_SOC_MCBSP 2014-05-26 20:19:26 -07:00
unisys Staging: unisys: visorchipset: Remove filexfer.c 2014-05-23 20:21:10 +09:00
usbip staging: Convert __FUNCTION__ to __func__ 2014-05-25 11:05:07 -07:00
vme Merge 3.15-rc2 into staging-next 2014-04-22 10:08:40 -07:00
vt6655 staging: vt6655: refactor iwctl_giwaplist() to avoid -Wframe-larger-than warn. 2014-05-28 14:10:46 -07:00
vt6656 staging: vt6656: rf.c replace DBG_PRT debug messages 2014-05-28 14:10:46 -07:00
winbond staging/winbond: fix a style error 2014-05-23 21:13:40 +09:00
wlags49_h2 staging: wlags49_h2: wl_priv: Remove useless return variables 2014-05-24 01:55:14 +09:00
wlags49_h25
wlan-ng drivers/staging: Remove useless return variables 2014-05-26 10:32:15 -07:00
xgifb Staging: xgifb: Fixed a code-style warning 2014-05-24 04:42:20 +09:00
xillybus staging: xillybus: Use devm_ API on probe and remove 2014-05-24 02:11:48 +09:00
Kconfig staging: remove rts5139 driver code 2014-05-23 20:46:41 +09:00
Makefile staging: remove rts5139 driver code 2014-05-23 20:46:41 +09:00
staging.c