Unverified Commit aa96030b authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!4557 Add ZONE_EXTMEM to avoid kabi broken

Merge Pull Request from: @ci-robot 
 
PR sync from: Liu Shixin <liushixin2@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/72KBTL3OKYKEVLMUBJ3BCSWSJXQON4LW/ 
NUMA.remote may need a new zone to manage memory. Add ZONE_EXTMEM for
future using to avoid kabi broken.

Liu Shixin (2):
  mm: add ZONE_EXTMEM for future extension to avoid kabi broken
  openeuler_defconfig: enable CONFIG_ZONE_EXTMEM for arm64


-- 
2.25.1
 
https://gitee.com/openeuler/kernel/issues/I91BZS 
 
Link:https://gitee.com/openeuler/kernel/pulls/4557

 

Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: default avatarLiu Chao <liuchao173@huawei.com>
Reviewed-by: default avatarXu Kuohai <xukuohai@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parents 596cbbdb 394f5bdc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1139,6 +1139,7 @@ CONFIG_ARCH_HAS_ZONE_DMA_SET=y
CONFIG_ZONE_DMA=y
CONFIG_ZONE_DMA32=y
CONFIG_ZONE_DEVICE=y
CONFIG_ZONE_EXTMEM=y
CONFIG_HMM_MIRROR=y
CONFIG_GET_FREE_REGION=y
CONFIG_DEVICE_PRIVATE=y
+16 −8
Original line number Diff line number Diff line
@@ -98,15 +98,21 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
#endif

#if GFP_ZONES_SHIFT >= 3
#define TABLE_TYPE(X)	((uint64_t)X)
#else
#define TABLE_TYPE(X)	X
#endif

#define GFP_ZONE_TABLE ( \
	(ZONE_NORMAL << 0 * GFP_ZONES_SHIFT)				       \
	| (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT)		       \
	| (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT)	       \
	| (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT)		       \
	| (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT)		       \
	| (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT)    \
	| (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT)\
	| (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT)\
	(TABLE_TYPE(ZONE_NORMAL) << 0 * GFP_ZONES_SHIFT)					\
	| (TABLE_TYPE(OPT_ZONE_DMA) << ___GFP_DMA * GFP_ZONES_SHIFT)				\
	| (TABLE_TYPE(OPT_ZONE_HIGHMEM) << ___GFP_HIGHMEM * GFP_ZONES_SHIFT)			\
	| (TABLE_TYPE(OPT_ZONE_DMA32) << ___GFP_DMA32 * GFP_ZONES_SHIFT)			\
	| (TABLE_TYPE(ZONE_NORMAL) << ___GFP_MOVABLE * GFP_ZONES_SHIFT)				\
	| (TABLE_TYPE(OPT_ZONE_DMA) << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT)		\
	| (TABLE_TYPE(ZONE_MOVABLE) << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT)	\
	| (TABLE_TYPE(OPT_ZONE_DMA32) << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT)	\
)

/*
@@ -143,6 +149,8 @@ static inline enum zone_type gfp_zone(gfp_t flags)
	return z;
}

#undef TABLE_TYPE

/*
 * There is only one page-allocator function, and two main namespaces to
 * it. The alloc_page*() variants return 'struct page *' and as such
+3 −0
Original line number Diff line number Diff line
@@ -777,6 +777,9 @@ enum zone_type {
	 * access.
	 */
	ZONE_HIGHMEM,
#endif
#ifdef CONFIG_ZONE_EXTMEM
	ZONE_EXTMEM,
#endif
	/*
	 * ZONE_MOVABLE is similar to ZONE_NORMAL, except that it contains
+7 −0
Original line number Diff line number Diff line
@@ -275,11 +275,18 @@ IF_HAVE_VM_USWAP(VM_USWAP, "userswap" ) \
#define IFDEF_ZONE_HIGHMEM(X)
#endif

#ifdef CONFIG_ZONE_EXTMEM
#define IFDEF_ZONE_EXTMEM(X) X
#else
#define IFDEF_ZONE_EXTMEM(X)
#endif

#define ZONE_TYPE						\
	IFDEF_ZONE_DMA(		EM (ZONE_DMA,	 "DMA"))	\
	IFDEF_ZONE_DMA32(	EM (ZONE_DMA32,	 "DMA32"))	\
				EM (ZONE_NORMAL, "Normal")	\
	IFDEF_ZONE_HIGHMEM(	EM (ZONE_HIGHMEM,"HighMem"))	\
	IFDEF_ZONE_EXTMEM(	EM (ZONE_EXTMEM, "ExtMem"))	\
				EMe(ZONE_MOVABLE,"Movable")

#define LRU_NAMES		\
+12 −0
Original line number Diff line number Diff line
@@ -1060,6 +1060,18 @@ config ZONE_DEVICE

	  If FS_DAX is enabled, then say Y.

config ZONE_EXTMEM
	bool "Extension memory hotplug support"
	default n
	depends on MEMORY_HOTPLUG
	depends on MEMORY_HOTREMOVE
	depends on ARM64
	help
	  Extension memory hotplug support allows for customizing memory
	  policy such as UB or CXL memory, mirroring memory, etc.

	  If unsure, say N.

#
# Helpers to mirror range of the CPU page tables of a process into device page
# tables.
Loading