mirror-linux/drivers/misc
David Hildenbrand 15504b1163 mm/balloon_compaction: convert balloon_page_delete() to balloon_page_finalize()
Let's move the removal of the page from the balloon list into the single
caller, to remove the dependency on the PG_isolated flag and clarify
locking requirements.

Note that for now, balloon_page_delete() was used on two paths:

(1) Removing a page from the balloon for deflation through
    balloon_page_list_dequeue()
(2) Removing an isolated page from the balloon for migration in the
    per-driver migration handlers. Isolated pages were already removed from
    the balloon list during isolation.

So instead of relying on the flag, we can just distinguish both cases
directly and handle it accordingly in the caller.

We'll shuffle the operations a bit such that they logically make more
sense (e.g., remove from the list before clearing flags).

In balloon migration functions we can now move the balloon_page_finalize()
out of the balloon lock and perform the finalization just before dropping
the balloon reference.

Document that the page lock is currently required when modifying the
movability aspects of a page; hopefully we can soon decouple this from the
page lock.

Link: https://lkml.kernel.org/r/20250704102524.326966-3-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Brendan Jackman <jackmanb@google.com>
Cc: Byungchul Park <byungchul@sk.com>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Eugenio Pé rez <eperezma@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Gregory Price <gourry@gourry.net>
Cc: Harry Yoo <harry.yoo@oracle.com>
Cc: "Huang, Ying" <ying.huang@linux.alibaba.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Jerrin Shaji George <jerrin.shaji-george@broadcom.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Mathew Brost <matthew.brost@intel.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Peter Xu <peterx@redhat.com>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Rakie Kim <rakie.kim@sk.com>
Cc: Rik van Riel <riel@surriel.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: xu xin <xu.xin16@zte.com.cn>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-07-13 16:38:25 -07:00
..
altera-stapl move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
amd-sbi misc: amd-sbi: Add support for register xfer 2025-05-21 14:44:41 +02:00
bcm-vk treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
c2port misc: c2port: Constify 'struct bin_attribute' 2024-12-24 09:36:02 +01:00
cardreader treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
cb710
eeprom misc: eeprom/idt_89hpesx: use per-client debugfs directory 2025-04-15 16:14:30 +02:00
genwqe
ibmasm
keba misc: keba: Fix kernfs warning on module unload 2025-01-10 10:16:39 +01:00
lis3lv02d misc: lis3lv02d: Fix correct sysfs directory path for lis3lv02d 2025-05-21 14:44:12 +02:00
lkdtm lkdtm: use SLAB_NO_MERGE instead of an empty constructor 2025-04-28 10:32:43 -07:00
mchp_pci1xxxx misc: microchip: pci1xxxx: Add GPIO Wakeup Support 2025-05-21 14:44:20 +02:00
mei mei: vsc: Cast tx_buf to (__be32 *) when passed to cpu_to_be32_array() 2025-05-21 14:51:46 +02:00
ocxl ocxl: Constify 'struct bin_attribute' 2024-12-24 09:36:01 +01:00
pvpanic
sgi-gru misc: sgi-gru: Don't disable preemption in GRU driver 2024-10-09 12:47:01 -07:00
sgi-xp treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
uacce uacce: Remove unnecessary IOMMU_DEV_FEAT_IOPF 2025-04-28 13:04:34 +02:00
vmw_vmci VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify 2025-05-21 14:52:38 +02:00
Kconfig Char/Misc/IIO pull request for 6.16-rc1 2025-06-06 11:50:47 -07:00
Makefile Char/Misc/IIO pull request for 6.16-rc1 2025-06-06 11:50:47 -07:00
ad525x_dpot-i2c.c
ad525x_dpot-spi.c
ad525x_dpot.c
ad525x_dpot.h
apds990x.c misc: apds990x: Fix missing pm_runtime_disable() 2024-10-13 17:10:53 +02:00
apds9802als.c
atmel-ssc.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
bh1770glc.c
cs5535-mfgpt.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
ds1682.c misc: ds1682: Constify 'struct bin_attribute' 2024-12-24 09:36:02 +01:00
dummy-irq.c
dw-xdata-pcie.c
enclosure.c
fastrpc.c misc: fastrpc: Add meaningful labels for exit paths 2025-04-15 16:12:50 +02:00
gehc-achc.c
hi6421v600-irq.c misc: hi6421-spmi-pmic: Switch to irq_domain_create_simple() 2025-05-16 21:06:10 +02:00
hisi_hikey_usb.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hmc6352.c
hpilo.c
hpilo.h
ibmvmc.c
ibmvmc.h
ics932s401.c
isl29003.c
isl29020.c misc: isl29020: Fix the wrong format specifier 2024-11-12 12:54:53 +01:00
kgdbts.c
lan966x_pci.c misc: Add support for LAN966x PCI device 2024-10-24 12:09:33 +02:00
lan966x_pci.dtso misc: lan966x_pci: Fix dtc warn 'Missing interrupt-parent' 2024-11-04 14:34:25 +01:00
lattice-ecp3-config.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
misc_minor_kunit.c Revert "char: misc: add test cases" 2025-05-01 16:23:34 +02:00
mrvl_cn10k_dpi.c
nsm.c
ntsync.c ntsync: Check wait count based on byte size. 2025-02-21 11:57:33 +01:00
open-dice.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
pch_phub.c misc: pch_phub: Constify 'struct bin_attribute' 2024-12-24 09:36:02 +01:00
pci_endpoint_test.c misc: pci_endpoint_test: Defer IRQ allocation until ioctl(PCITEST_SET_IRQTYPE) 2025-04-23 17:04:48 -05:00
phantom.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
qcom-coincell.c
rpmb-core.c rpmb: Remove some useless locking 2024-10-13 17:11:51 +02:00
smpro-errmon.c
smpro-misc.c
sram-exec.c
sram.c misc: sram: constify 'struct bin_attribute' 2024-12-24 09:36:02 +01:00
sram.h
ti_fpc202.c i2c: atr: add static flag 2025-05-22 11:07:05 +02:00
tifm_7xx1.c
tifm_core.c
tps6594-esm.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tps6594-pfsm.c misc: tps6594-pfsm: Add NULL pointer check in tps6594_pfsm_probe() 2025-04-15 16:13:55 +02:00
tsl2550.c misc: tsl2550: replace simple_strtoul to kstrtoul 2024-09-03 12:34:31 +02:00
vcpu_stall_detector.c misc: vcpu_stall_detector: Switch to use hrtimer_setup() 2025-02-18 11:19:04 +01:00
vmw_balloon.c mm/balloon_compaction: convert balloon_page_delete() to balloon_page_finalize() 2025-07-13 16:38:25 -07:00
xilinx_sdfec.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
xilinx_tmr_inject.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
xilinx_tmr_manager.c