linux-kernelorg-stable/drivers
Christoph Hellwig 27674ef6c7 mm: remove the extra ZONE_DEVICE struct page refcount
ZONE_DEVICE struct pages have an extra reference count that complicates
the code for put_page() and several places in the kernel that need to
check the reference count to see that a page is not being used (gup,
compaction, migration, etc.). Clean up the code so the reference count
doesn't need to be treated specially for ZONE_DEVICE pages.

Note that this excludes the special idle page wakeup for fsdax pages,
which still happens at refcount 1.  This is a separate issue and will
be sorted out later.  Given that only fsdax pages require the
notifiacation when the refcount hits 1 now, the PAGEMAP_OPS Kconfig
symbol can go away and be replaced with a FS_DAX check for this hook
in the put_page fastpath.

Based on an earlier patch from Ralph Campbell <rcampbell@nvidia.com>.

Link: https://lkml.kernel.org/r/20220210072828.2930359-8-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Reviewed-by: Ralph Campbell <rcampbell@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
Tested-by: "Sierra Guiza, Alejandro (Alex)" <alex.sierra@amd.com>

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Chaitanya Kulkarni <kch@nvidia.com>
Cc: Christian Knig <christian.koenig@amd.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: "Pan, Xinhui" <Xinhui.Pan@amd.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
2022-03-03 12:47:33 -05:00
..
accessibility speakup-dectlk: Restore pitch setting 2022-02-08 12:15:04 +01:00
acpi arm64 fixes: 2022-02-11 11:55:26 -08:00
amba
android
ata ata: libata-core: Disable TRIM on M88V29 2022-02-08 17:06:14 +09:00
atm
auxdisplay
base PM: s2idle: ACPI: Fix wakeup interrupts handling 2022-02-07 21:02:31 +01:00
bcma
block loop: revert "make autoclear operation asynchronous" 2022-02-11 05:51:23 -07:00
bluetooth
bus bus: mhi: pci_generic: Add mru_default for Cinterion MV31-W 2022-02-06 13:19:46 +01:00
cdrom
char random: only call crng_finalize_init() for primary_crng 2022-02-04 19:22:32 +01:00
clk
clocksource Fixes for omaps 2022-02-07 17:42:44 +01:00
comedi
connector connector/cn_proc: Use task_is_in_init_pid_ns() 2022-01-26 18:57:09 -08:00
counter counter: fix an IS_ERR() vs NULL bug 2022-01-26 19:40:33 +01:00
cpufreq
cpuidle
crypto crypto: octeontx2 - Avoid stack variable overflow 2022-01-31 11:22:53 +11:00
cxl
dax
dca
devfreq
dio
dma
dma-buf dma-buf: heaps: Fix potential spectre v1 gadget 2022-02-01 13:18:09 +05:30
edac EDAC/xgene: Fix deferred probing 2022-01-30 01:06:35 +01:00
eisa
extcon
firewire
firmware efi: runtime: avoid EFIv2 runtime services on Apple x86 machines 2022-01-23 10:31:27 +01:00
fpga
fsi
gnss
gpio gpio: sim: fix hogs with custom chip labels 2022-02-09 11:41:29 +01:00
gpu mm: remove the extra ZONE_DEVICE struct page refcount 2022-03-03 12:47:33 -05:00
greybus
hid HID: amd_sfh: Add interrupt handler to process interrupts 2022-02-14 16:28:51 +01:00
hsi
hv Drivers: hv: utils: Make use of the helper macro LIST_HEAD() 2022-02-09 14:33:21 +00:00
hwmon hwmon: (nct6775) Fix crash in clear_caseopen 2022-01-24 14:32:47 -08:00
hwspinlock
hwtracing
i2c
i3c
idle
iio iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL 2022-02-11 12:13:22 +01:00
infiniband mm: don't include <linux/memremap.h> in <linux/mm.h> 2022-03-03 12:47:33 -05:00
input ASoC: Fixes for v5.17 2022-02-01 16:52:54 +01:00
interconnect
iommu iommu/amd: Fix loop timeout issue in iommu_ga_log_enable() 2022-02-04 12:57:26 +01:00
ipack
irqchip irqchip/sifive-plic: Add missing thead,c900-plic match string 2022-02-02 10:49:29 +00:00
isdn
leds
macintosh
mailbox
mcb
md md: fix NULL pointer deref with nowait but no mddev->queue 2022-02-02 10:14:07 -08:00
media bitmap patches for 5.17-rc1 2022-01-23 06:20:44 +02:00
memory
memstick
message
mfd
misc eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX 2022-02-04 16:27:44 +01:00
mmc mmc: block: fix read single on recovery logic 2022-02-08 16:04:49 +01:00
most
mtd
mux
net USB fixes for 5.17-rc4 2022-02-12 09:56:18 -08:00
nfc
ntb
nubus
nvdimm mm: don't include <linux/memremap.h> in <linux/mm.h> 2022-03-03 12:47:33 -05:00
nvme mm: don't include <linux/memremap.h> in <linux/mm.h> 2022-03-03 12:47:33 -05:00
nvmem
of
opp
parisc parisc: Fix sglist access in ccio-dma.c 2022-01-28 10:15:34 +01:00
parport
pci hyperv-fixes for 5.17-rc5 2022-02-15 09:05:01 -08:00
pcmcia
perf
phy phy: dphy: Correct clk_pre parameter 2022-02-02 10:33:04 +05:30
pinctrl pinctrl: microchip-sgpio: Fix support for regmap 2022-01-31 12:07:31 +01:00
platform platform/x86: thinkpad_acpi: Fix incorrect use of platform profile on AMD platforms 2022-02-01 15:37:00 +01:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator regulator: core: fix false positive in regulator_late_cleanup() 2022-02-08 13:37:48 +00:00
remoteproc
reset
rpmsg rpmsg fixes for v5.17-rc1 2022-01-27 11:23:26 +02:00
rtc
s390 s390/cio: verify the driver availability for path_event call 2022-02-09 22:55:01 +01:00
sbus
scsi scsi: lpfc: Reduce log messages seen after firmware download 2022-02-07 23:45:02 -05:00
sh
siox
slimbus
soc soc: aspeed: lpc-ctrl: Block error printing on probe defer cases 2022-02-08 09:52:59 +01:00
soundwire
spi spi: Fixes for v5.17 2022-02-01 12:39:37 -08:00
spmi
ssb
staging staging: fbtft: Fix error path in fbtft_driver_module_init() 2022-01-25 16:36:49 +01:00
target scsi: target: iscsi: Make sure the np under each tpg is unique 2022-01-24 23:30:24 -05:00
tc
tee OP-TE fixes for v5.17 2022-02-08 09:48:44 +01:00
thermal
thunderbolt
tty tty: n_tty: do not look ahead for EOL character past the end of the buffer 2022-02-16 10:13:23 -08:00
uio
usb Revert "usb: dwc2: drd: fix soft connect when gadget is unconfigured" 2022-02-12 10:08:54 +01:00
vdpa
vfio
vhost
video * drm/panel: simple: Fix assignments from panel_dpi_probe() 2022-02-11 12:06:15 +10:00
virt bitmap patches for 5.17-rc1 2022-01-23 06:20:44 +02:00
virtio
visorbus
vlynq
vme
w1
watchdog
xen xen/pci: Make use of the helper macro LIST_HEAD() 2022-02-10 11:10:23 +01:00
zorro
Kconfig
Makefile