Nadav Amit
468e0ffac8
vmw_balloon: Fix offline page marking with compaction
The compaction code already marks pages as offline when it enqueues
pages in the ballooned page list, and removes the mapping when the pages
are removed from the list. VMware balloon also updates the flags,
instead of letting the balloon-compaction logic handle it, which causes
the assertion VM_BUG_ON_PAGE(!PageOffline(page)) to fire, when
__ClearPageOffline is called the second time. This causes the following
crash.
[ 487.104520] kernel BUG at include/linux/page-flags.h:749!
[ 487.106364] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
[ 487.107681] CPU: 7 PID: 1106 Comm: kworker/7:3 Not tainted 5.3.0-rc5balloon #227
[ 487.109196] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 12/12/2018
[ 487.111452] Workqueue: events_freezable vmballoon_work [vmw_balloon]
[ 487.112779] RIP: 0010:vmballoon_release_page_list+0xaa/0x100 [vmw_balloon]
[ 487.114200] Code: fe 48 c1 e7 06 4c 01 c7 8b 47 30 41 89 c1 41 81 e1 00 01 00 f0 41 81 f9 00 00 00 f0 74 d3 48 c7 c6 08 a1 a1 c0 e8 06 0d e7 ea <0f> 0b 44 89 f6 4c 89 c7 e8 49 9c e9 ea 49 8d 75 08 49 8b 45 08 4d
[ 487.118033] RSP: 0018:ffffb82f012bbc98 EFLAGS: 00010246
[ 487.119135] RAX: 0000000000000037 RBX: 0000000000000001 RCX: 0000000000000006
[ 487.120601] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff9a85b6bd7620
[ 487.122071] RBP: ffffb82f012bbcc0 R08: 0000000000000001 R09: 0000000000000000
[ 487.123536] R10: 0000000000000000 R11: 0000000000000000 R12: ffffb82f012bbd00
[ 487.125002] R13: ffffe97f4598d9c0 R14: 0000000000000000 R15: ffffb82f012bbd34
[ 487.126463] FS: 0000000000000000(0000) GS:ffff9a85b6bc0000(0000) knlGS:0000000000000000
[ 487.128110] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 487.129316] CR2: 00007ffe6e413ea0 CR3: 0000000230b18001 CR4: 00000000003606e0
[ 487.130812] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 487.132283] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 487.133749] Call Trace:
[ 487.134333] vmballoon_deflate+0x22c/0x390 [vmw_balloon]
[ 487.135468] vmballoon_work+0x6e7/0x913 [vmw_balloon]
[ 487.136711] ? process_one_work+0x21a/0x5e0
[ 487.138581] process_one_work+0x298/0x5e0
[ 487.139926] ? vmballoon_migratepage+0x310/0x310 [vmw_balloon]
[ 487.141610] ? process_one_work+0x298/0x5e0
[ 487.143053] worker_thread+0x41/0x400
[ 487.144389] kthread+0x12b/0x150
[ 487.145582] ? process_one_work+0x5e0/0x5e0
[ 487.146937] ? kthread_create_on_node+0x60/0x60
[ 487.148637] ret_from_fork+0x3a/0x50
Fix it by updating the PageOffline indication only when a 2MB page is
enqueued and dequeued. The 4KB pages will be handled correctly by the
balloon compaction logic.
Fixes: 83a8afa72e ("vmw_balloon: Compaction support")
Cc: David Hildenbrand <david@redhat.com>
Reported-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Nadav Amit <namit@vmware.com>
Link: https://lore.kernel.org/r/20190820160121.452-1-namit@vmware.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
2019-08-28 22:57:07 +02:00 |
| .. |
|
altera-stapl
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61
|
2019-05-24 17:36:45 +02:00 |
|
c2port
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cardreader
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234
|
2019-06-19 17:09:07 +02:00 |
|
cb710
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
cxl
|
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
|
2019-07-19 10:42:02 -07:00 |
|
echo
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 176
|
2019-05-30 11:29:19 -07:00 |
|
eeprom
|
at24 fixes for v5.3-rc3
|
2019-08-01 14:05:17 +02:00 |
|
genwqe
|
Driver Core and debugfs changes for 5.3-rc1
|
2019-07-12 12:24:03 -07:00 |
|
habanalabs
|
habanalabs: fix device IRQ unmasking for BE host
|
2019-08-12 09:01:10 +03:00 |
|
ibmasm
|
Merge branch 'work.mount0' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
|
2019-07-19 10:42:02 -07:00 |
|
lis3lv02d
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
|
2019-06-05 17:37:07 +02:00 |
|
lkdtm
|
lkdtm/bugs: fix build error in lkdtm_EXHAUST_STACK
|
2019-08-28 22:33:44 +02:00 |
|
mei
|
mei: me: add Tiger Lake point LP device ID
|
2019-08-28 22:30:15 +02:00 |
|
mic
|
Driver Core and debugfs changes for 5.3-rc1
|
2019-07-12 12:24:03 -07:00 |
|
ocxl
|
powerpc updates for 5.3
|
2019-07-13 16:08:36 -07:00 |
|
sgi-gru
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
|
2019-05-30 11:26:35 -07:00 |
|
sgi-xp
|
misc: sgi-xp: Properly initialize buf in xpc_get_rsvd_page_pa
|
2019-05-24 19:00:54 +02:00 |
|
ti-st
|
Driver Core and debugfs changes for 5.3-rc1
|
2019-07-12 12:24:03 -07:00 |
|
vmw_vmci
|
VMCI: Release resource if the work is already queued
|
2019-08-28 22:57:07 +02:00 |
|
ad525x_dpot-i2c.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149
|
2019-05-30 11:25:18 -07:00 |
|
ad525x_dpot-spi.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149
|
2019-05-30 11:25:18 -07:00 |
|
ad525x_dpot.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149
|
2019-05-30 11:25:18 -07:00 |
|
ad525x_dpot.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149
|
2019-05-30 11:25:18 -07:00 |
|
apds990x.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
|
2019-06-05 17:37:07 +02:00 |
|
apds9802als.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167
|
2019-05-30 11:26:39 -07:00 |
|
atmel-ssc.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
atmel_tclib.c
|
treewide: Add SPDX license identifier for missed files
|
2019-05-21 10:50:45 +02:00 |
|
bh1770glc.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
|
2019-06-05 17:37:07 +02:00 |
|
cs5535-mfgpt.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
|
2019-05-30 11:29:53 -07:00 |
|
ds1682.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
dummy-irq.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
enclosure.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 176
|
2019-05-30 11:29:19 -07:00 |
|
fastrpc.c
|
Merge 5.1-rc6 into char-misc-next
|
2019-04-21 23:14:47 +02:00 |
|
hmc6352.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167
|
2019-05-30 11:26:39 -07:00 |
|
hpilo.c
|
|
|
|
hpilo.h
|
|
|
|
ibmvmc.c
|
|
|
|
ibmvmc.h
|
|
|
|
ics932s401.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
|
2019-05-30 11:26:35 -07:00 |
|
ioc4.c
|
drivers: Remove explicit invocations of mmiowb()
|
2019-04-08 12:01:02 +01:00 |
|
isl29003.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61
|
2019-05-24 17:36:45 +02:00 |
|
isl29020.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167
|
2019-05-30 11:26:39 -07:00 |
|
Kconfig
|
misc: xilinx-sdfec: fix dependency and build error
|
2019-08-15 18:10:25 +02:00 |
|
kgdbts.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
|
2019-06-05 17:37:06 +02:00 |
|
lattice-ecp3-config.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
Makefile
|
misc: fsa9480: Delete this driver
|
2019-07-03 09:51:08 +02:00 |
|
pch_phub.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167
|
2019-05-30 11:26:39 -07:00 |
|
pci_endpoint_test.c
|
dmaengine updates for v5.3-rc1
|
2019-07-17 09:55:43 -07:00 |
|
phantom.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
pti.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174
|
2019-05-30 11:26:41 -07:00 |
|
pvpanic.c
|
|
|
|
qcom-coincell.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284
|
2019-06-05 17:36:37 +02:00 |
|
spear13xx_pcie_gadget.c
|
|
|
|
sram-exec.c
|
|
|
|
sram.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1
|
2019-05-21 11:28:39 +02:00 |
|
sram.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
tifm_7xx1.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
tifm_core.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
|
2019-06-19 17:09:55 +02:00 |
|
tsl2550.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61
|
2019-05-24 17:36:45 +02:00 |
|
vexpress-syscfg.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174
|
2019-05-30 11:26:41 -07:00 |
|
vmw_balloon.c
|
vmw_balloon: Fix offline page marking with compaction
|
2019-08-28 22:57:07 +02:00 |
|
xilinx_sdfec.c
|
misc: xilinx_sdfec: Add CCF support
|
2019-06-21 16:12:53 +02:00 |