Thread (1 message) 1 message, 1 author, 2018-11-22

Re: [PATCH] mm: convert totalram_pages, totalhigh_pages and managed_pages to atomic.

From: Guo Ren <hidden>
Date: 2018-11-22 01:33:10
Also in: amd-gfx, ceph-devel, dm-devel, dri-devel, intel-gfx, kexec, linux-fsdevel, linux-mediatek, linux-mm, linux-pm, linux-um, linuxppc-dev, netfilter-devel

Possibly related (same subject, not in this thread)

On Mon, Oct 22, 2018 at 10:53:22PM +0530, Arun KS wrote:
quoted hunk
Remove managed_page_count_lock spinlock and instead use atomic
variables.

Suggested-by: Michal Hocko <mhocko-IBi9RG/b67k@public.gmane.org>
Suggested-by: Vlastimil Babka <redacted>
Signed-off-by: Arun KS <redacted>

---
As discussed here,
https://patchwork.kernel.org/patch/10627521/#22261253
---
---
 arch/csky/mm/init.c                           |  4 +-
 arch/powerpc/platforms/pseries/cmm.c          | 11 ++--
 arch/s390/mm/init.c                           |  2 +-
 arch/um/kernel/mem.c                          |  4 +-
 arch/x86/kernel/cpu/microcode/core.c          |  5 +-
 drivers/char/agp/backend.c                    |  4 +-
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c         |  2 +-
 drivers/gpu/drm/i915/i915_gem.c               |  2 +-
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |  4 +-
 drivers/hv/hv_balloon.c                       | 19 +++----
 drivers/md/dm-bufio.c                         |  5 +-
 drivers/md/dm-crypt.c                         |  4 +-
 drivers/md/dm-integrity.c                     |  4 +-
 drivers/md/dm-stats.c                         |  3 +-
 drivers/media/platform/mtk-vpu/mtk_vpu.c      |  3 +-
 drivers/misc/vmw_balloon.c                    |  2 +-
 drivers/parisc/ccio-dma.c                     |  5 +-
 drivers/parisc/sba_iommu.c                    |  5 +-
 drivers/staging/android/ion/ion_system_heap.c |  2 +-
 drivers/xen/xen-selfballoon.c                 |  7 +--
 fs/ceph/super.h                               |  3 +-
 fs/file_table.c                               |  9 ++--
 fs/fuse/inode.c                               |  4 +-
 fs/nfs/write.c                                |  3 +-
 fs/nfsd/nfscache.c                            |  3 +-
 fs/ntfs/malloc.h                              |  2 +-
 fs/proc/base.c                                |  3 +-
 include/linux/highmem.h                       |  2 +-
 include/linux/mm.h                            |  2 +-
 include/linux/mmzone.h                        | 10 +---
 include/linux/swap.h                          |  2 +-
 kernel/fork.c                                 |  6 +--
 kernel/kexec_core.c                           |  5 +-
 kernel/power/snapshot.c                       |  2 +-
 lib/show_mem.c                                |  3 +-
 mm/highmem.c                                  |  2 +-
 mm/huge_memory.c                              |  2 +-
 mm/kasan/quarantine.c                         |  4 +-
 mm/memblock.c                                 |  6 +--
 mm/memory_hotplug.c                           |  4 +-
 mm/mm_init.c                                  |  3 +-
 mm/oom_kill.c                                 |  2 +-
 mm/page_alloc.c                               | 75 ++++++++++++++-------------
 mm/shmem.c                                    | 12 +++--
 mm/slab.c                                     |  3 +-
 mm/swap.c                                     |  3 +-
 mm/util.c                                     |  2 +-
 mm/vmalloc.c                                  |  4 +-
 mm/vmstat.c                                   |  4 +-
 mm/workingset.c                               |  2 +-
 mm/zswap.c                                    |  2 +-
 net/dccp/proto.c                              |  6 +--
 net/decnet/dn_route.c                         |  2 +-
 net/ipv4/tcp_metrics.c                        |  2 +-
 net/netfilter/nf_conntrack_core.c             |  6 +--
 net/netfilter/xt_hashlimit.c                  |  4 +-
 net/sctp/protocol.c                           |  6 +--
 security/integrity/ima/ima_kexec.c            |  2 +-
 58 files changed, 171 insertions(+), 143 deletions(-)
diff --git a/arch/csky/mm/init.c b/arch/csky/mm/init.c
index dc07c07..3f4d35e 100644
--- a/arch/csky/mm/init.c
+++ b/arch/csky/mm/init.c
@@ -71,7 +71,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
 		ClearPageReserved(virt_to_page(start));
 		init_page_count(virt_to_page(start));
 		free_page(start);
-		totalram_pages++;
+		atomic_long_inc(&totalram_pages);
 	}
 }
 #endif
@@ -88,7 +88,7 @@ void free_initmem(void)
 		ClearPageReserved(virt_to_page(addr));
 		init_page_count(virt_to_page(addr));
 		free_page(addr);
-		totalram_pages++;
+		atomic_long_inc(&totalram_pages);
 		addr += PAGE_SIZE;
 	}
For csky part, it's OK.

 Guo Ren
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help