linux/arch/powerpc
Alistair Popple ef23345089 mm: free device private pages have zero refcount
Since 27674ef6c7 ("mm: remove the extra ZONE_DEVICE struct page
refcount") device private pages have no longer had an extra reference
count when the page is in use.  However before handing them back to the
owning device driver we add an extra reference count such that free pages
have a reference count of one.

This makes it difficult to tell if a page is free or not because both free
and in use pages will have a non-zero refcount.  Instead we should return
pages to the drivers page allocator with a zero reference count.  Kernel
code can then safely use kernel functions such as get_page_unless_zero().

Link: https://lkml.kernel.org/r/cf70cf6f8c0bdb8aaebdbfb0d790aea4c683c3c6.1664366292.git-series.apopple@nvidia.com
Signed-off-by: Alistair Popple <apopple@nvidia.com>
Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Alex Sierra <alex.sierra@amd.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: "Huang, Ying" <ying.huang@intel.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Yang Shi <shy828301@gmail.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2022-10-12 18:51:49 -07:00
..
boot powerpc/85xx: P2020: Add law_trgt_if property to PCIe DT nodes 2022-07-28 16:22:14 +10:00
configs mm: memcontrol: drop dead CONFIG_MEMCG_SWAP config symbol 2022-10-03 14:03:36 -07:00
crypto powerpc: Fix all occurences of duplicate words 2022-07-25 12:05:15 +10:00
include KVM: Rename mmu_notifier_* to mmu_invalidate_* 2022-08-19 04:05:41 -04:00
kernel powerpc: remove mmap linked list walks 2022-09-26 19:46:19 -07:00
kexec powerpc/kexec: Fix build failure from uninitialised variable 2022-08-10 15:55:20 +10:00
kvm mm: free device private pages have zero refcount 2022-10-12 18:51:49 -07:00
lib powerpc/ppc-opcode: Define and use PPC_RAW_SETB() 2022-07-27 21:36:05 +10:00
math-emu
mm powerpc: remove mmap linked list walks 2022-09-26 19:46:19 -07:00
net powerpc/bpf/32: Add instructions for atomic_[cmp]xchg 2022-06-29 19:37:08 +10:00
perf powerpc/perf: Include caps feature for power10 DD1 version 2022-08-01 22:21:18 +10:00
platforms powerpc updates for 6.0 2022-08-06 16:38:17 -07:00
purgatory powerpc/purgatory: Omit use of bin2c 2022-07-27 21:36:03 +10:00
sysdev powerpc/xive: Fix refcount leak in xive_get_max_prio 2022-08-01 22:21:18 +10:00
tools powerpc/64: Add UADDR64 relocation support 2022-03-09 21:47:53 +11:00
xmon powerpc/ppc-opcode: Define and use PPC_RAW_TRAP() and PPC_RAW_TW() 2022-07-27 21:36:05 +10:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig arch: mm: rename FORCE_MAX_ZONEORDER to ARCH_FORCE_MAX_ORDER 2022-09-11 20:25:56 -07:00
Kconfig.debug powerpc: Kconfig.debug: Remove extra empty line 2022-06-29 19:43:16 +10:00
Makefile powerpc/64e: Fix build failure with GCC 12 (unrecognized opcode: `wrteei') 2022-07-27 21:36:06 +10:00
Makefile.postlink