linux/drivers
Michal Hocko 6c5ab6511f mm: support __GFP_REPEAT in kvmalloc_node for >32kB
vhost code uses __GFP_REPEAT when allocating vhost_virtqueue resp.
vhost_vsock because it would really like to prefer kmalloc to the
vmalloc fallback - see 23cc5a991c ("vhost-net: extend device
allocation to vmalloc") for more context.  Michael Tsirkin has also
noted:

 "__GFP_REPEAT overhead is during allocation time. Using vmalloc means
  all accesses are slowed down. Allocation is not on data path, accesses
  are."

The similar applies to other vhost_kvzalloc users.

Let's teach kvmalloc_node to handle __GFP_REPEAT properly.  There are
two things to be careful about.  First we should prevent from the OOM
killer and so have to involve __GFP_NORETRY by default and secondly
override __GFP_REPEAT for !costly order requests as the __GFP_REPEAT is
ignored for !costly orders.

Supporting __GFP_REPEAT like semantic for !costly request is possible it
would require changes in the page allocator.  This is out of scope of
this patch.

This patch shouldn't introduce any functional change.

Link: http://lkml.kernel.org/r/20170306103032.2540-3-mhocko@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2017-05-08 17:15:12 -07:00
..
accessibility
acpi libnvdimm for 4.12 2017-05-05 18:49:20 -07:00
amba
android
ata Merge branch 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2017-05-01 13:34:49 -07:00
atm
auxdisplay Merge branch 'for-4.11/libnvdimm' into for-4.12/dax 2017-04-12 21:59:01 -07:00
base DeviceTree for 4.12: 2017-05-05 19:33:07 -07:00
bcma
block Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2017-05-06 11:25:08 -07:00
bluetooth Bluetooth: hci_ldisc: Add protocol check to hci_uart_tx_wakeup() 2017-04-30 12:22:14 +02:00
bus
cdrom scsi: introduce a result field in struct scsi_request 2017-04-20 12:16:10 -06:00
char char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
clk MMC core: 2017-05-02 17:34:32 -07:00
clocksource Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-05-01 16:15:18 -07:00
connector
cpufreq Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-05-01 19:12:53 -07:00
cpuidle Merge branches 'pm-cpuidle', 'pm-core', 'pm-domains', 'pm-avs' and 'pm-devfreq' 2017-04-28 23:15:34 +02:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-05-02 15:53:46 -07:00
dax libnvdimm for 4.12 2017-05-05 18:49:20 -07:00
dca
devfreq
dio
dma
dma-buf dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro 2017-04-20 13:47:46 +05:30
edac EDAC, ghes: Do not enable it by default 2017-04-27 14:15:38 +02:00
eisa
extcon
firewire
firmware arm64 updates for 4.12: 2017-05-05 12:11:37 -07:00
fmc
fpga fpga fr br: update supported version numbers 2017-04-26 11:38:56 +02:00
fsi
gpio char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
gpu media updates for v4.12-rc1 2017-05-05 17:34:57 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2017-05-02 19:09:35 -07:00
hsi HSI: ssi_protocol: double free in ssip_pn_xmit() 2017-04-21 17:58:45 +02:00
hv char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
hwmon hwmon: (twl4030-madc) drop driver 2017-04-30 11:45:31 -07:00
hwspinlock
hwtracing char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
i2c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2017-05-03 12:38:20 -07:00
ide ide-pm: always pass 0 error to ide_complete_rq in ide_do_devset 2017-04-26 07:53:35 -06:00
idle
iio Staging/IIO patches for 4.12-rc1 2017-05-05 18:16:23 -07:00
infiniband char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
input char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
iommu extra pull request because I missed tegra. 2017-05-05 17:18:44 -07:00
ipack
irqchip irqchip/mbigen: Fix return value check in mbigen_device_probe() 2017-04-30 11:21:16 +02:00
isdn
leds leds: pca9532: Extend pca9532 device tree support 2017-04-19 20:27:50 +02:00
lguest
lightnvm lightnvm: fix bad back free on error path 2017-05-04 07:53:04 -06:00
macintosh DeviceTree for 4.12: 2017-05-05 19:33:07 -07:00
mailbox mailbox: handle empty message in tx_tick 2017-04-27 16:20:04 +05:30
mcb
md mm: introduce kv[mz]alloc helpers 2017-05-08 17:15:12 -07:00
media Staging/IIO patches for 4.12-rc1 2017-05-05 18:16:23 -07:00
memory - New Drivers 2017-05-03 12:16:25 -07:00
memstick
message scsi: mpt: Move scsi_remove_host() out of mptscsih_remove_host() 2017-04-24 18:21:17 -04:00
mfd mfd: axp20x: Support AXP803 variant 2017-04-27 11:54:49 +01:00
misc drivers/misc/c2port/c2port-duramar2150.c: checking for NULL instead of IS_ERR() 2017-05-08 17:15:10 -07:00
mmc MMC core: 2017-05-02 17:34:32 -07:00
mtd Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2017-05-06 11:25:08 -07:00
net qede: Fix possible misconfiguration of advertised autoneg value. 2017-05-04 12:31:03 -04:00
nfc nfc: fix get_unaligned_...() misuses 2017-04-17 00:42:22 +02:00
ntb
nubus nubus: Clean up whitespace 2017-04-20 09:54:24 +02:00
nvdimm libnvdimm for 4.12 2017-05-05 18:49:20 -07:00
nvme lightnvm: create cmd before allocating request 2017-05-04 07:53:04 -06:00
nvmem
of DeviceTree for 4.12: 2017-05-05 19:33:07 -07:00
oprofile
parisc
parport
pci main drm pull request for 4.12 kernel 2017-05-03 11:44:24 -07:00
pcmcia
perf
phy
pinctrl Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2017-05-02 19:09:35 -07:00
platform char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
pnp
power ACPI updates for v4.12-rc1 2017-05-01 14:13:28 -07:00
powercap
pps
ps3
ptp Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-05-01 16:15:18 -07:00
pwm
rapidio char/misc patches for 4.12-rc1 2017-05-04 19:15:35 -07:00
ras
regulator Merge remote-tracking branch 'regulator/topic/vctrl' into regulator-next 2017-04-30 22:17:44 +09:00
remoteproc
reset
rpmsg
rtc
s390 libnvdimm for 4.12 2017-05-05 18:49:20 -07:00
sbus
scsi Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2017-05-06 11:25:08 -07:00
sfi
sh
sn
soc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-05-02 16:40:27 -07:00
spi Merge remote-tracking branches 'spi/topic/ti-qspi' and 'spi/topic/xlp' into spi-next 2017-04-26 15:58:22 +01:00
spmi
ssb
staging Staging/IIO patches for 4.12-rc1 2017-05-05 18:16:23 -07:00
target Merge branch 'for-4.12/block' of git://git.kernel.dk/linux-block 2017-05-01 10:39:57 -07:00
tc
thermal - New Drivers 2017-05-03 12:16:25 -07:00
thunderbolt
tty DeviceTree for 4.12: 2017-05-05 19:33:07 -07:00
uio
usb DeviceTree for 4.12: 2017-05-05 19:33:07 -07:00
uwb
vfio powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
vhost mm: support __GFP_REPEAT in kvmalloc_node for >32kB 2017-05-08 17:15:12 -07:00
video - New Drivers 2017-05-03 12:11:44 -07:00
virt drivers/virt/fsl_hypervisor.c: use get_user_pages_unlocked() 2017-05-08 17:15:10 -07:00
virtio
vlynq
vme
w1
watchdog watchdog: iTCO_wdt: Add PMC specific noreboot update api 2017-04-28 21:51:28 +03:00
xen xen: Implement EFI reset_system callback 2017-05-02 12:06:50 +02:00
zorro
Kconfig
Makefile libnvdimm for 4.12 2017-05-05 18:49:20 -07:00