Commit afdf2a6c authored by Peng Liang's avatar Peng Liang Committed by Zheng Zengkai
Browse files

kabi: Add reserved page and gfp flags for future extension

euleros inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I4OELI


CVE: NA

-------------------------------------------------

24 page flags are used in 32-bit architectures and 27 page flags are
used in 64-bit ones currently.  And 23 gfp flags are used currently.
Add 2 reserved page and gfp flags for internal extension.  For the
new flags which backported from kernel upstream, place them behind the
reserved flags.

Signed-off-by: default avatarPeng Liang <liangpeng10@huawei.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 7623fa5d
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -39,8 +39,10 @@ struct vm_area_struct;
#define ___GFP_HARDWALL		0x100000u
#define ___GFP_THISNODE		0x200000u
#define ___GFP_ACCOUNT		0x400000u
#define ___GFP_RESERVE_0	0x800000u
#define ___GFP_RESERVE_1	0x1000000u
#ifdef CONFIG_LOCKDEP
#define ___GFP_NOLOCKDEP	0x800000u
#define ___GFP_NOLOCKDEP	0x2000000u
#else
#define ___GFP_NOLOCKDEP	0
#endif
@@ -223,8 +225,12 @@ struct vm_area_struct;
/* Disable lockdep for GFP context tracking */
#define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP)

/* Reserve 2 flags for future usage */
#define __GFP_RESERVE_0 ((__force gfp_t)___GFP_RESERVE_0)
#define __GFP_RESERVE_1 ((__force gfp_t)___GFP_RESERVE_1)

/* Room for N __GFP_FOO bits */
#define __GFP_BITS_SHIFT (23 + IS_ENABLED(CONFIG_LOCKDEP))
#define __GFP_BITS_SHIFT (25 + IS_ENABLED(CONFIG_LOCKDEP))
#define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))

/**
+8 −0
Original line number Diff line number Diff line
@@ -139,6 +139,14 @@ enum pageflags {
#ifdef CONFIG_64BIT
	PG_arch_2,
#endif

	/* Add reserved page flags for internal extension. For the new page
	 * flags which backported from kernel upstream, please place them
	 * behind the reserved page flags.
	 */
	PG_reserve_pgflag_0,
	PG_reserve_pgflag_1,

	__NR_PAGEFLAGS,

	/* Filesystems */
+6 −2
Original line number Diff line number Diff line
@@ -48,7 +48,9 @@
	{(unsigned long)__GFP_WRITE,		"__GFP_WRITE"},		\
	{(unsigned long)__GFP_RECLAIM,		"__GFP_RECLAIM"},	\
	{(unsigned long)__GFP_DIRECT_RECLAIM,	"__GFP_DIRECT_RECLAIM"},\
	{(unsigned long)__GFP_KSWAPD_RECLAIM,	"__GFP_KSWAPD_RECLAIM"}\
	{(unsigned long)__GFP_KSWAPD_RECLAIM,	"__GFP_KSWAPD_RECLAIM"},\
	{(unsigned long)__GFP_RESERVE_0,	"__GFP_RESERVE_0"},	\
	{(unsigned long)__GFP_RESERVE_1,	"__GFP_RESERVE_1"}	\

#define show_gfp_flags(flags)						\
	(flags) ? __print_flags(flags, "|",				\
@@ -112,7 +114,9 @@ IF_HAVE_PG_UNCACHED(PG_uncached, "uncached" ) \
IF_HAVE_PG_HWPOISON(PG_hwpoison,	"hwpoison"	)		\
IF_HAVE_PG_IDLE(PG_young,		"young"		)		\
IF_HAVE_PG_IDLE(PG_idle,		"idle"		)		\
IF_HAVE_PG_ARCH_2(PG_arch_2,		"arch_2"	)
IF_HAVE_PG_ARCH_2(PG_arch_2,		"arch_2"	),		\
	{1UL << PG_reserve_pgflag_0,	"reserve_pgflag_0"},		\
	{1UL << PG_reserve_pgflag_1,	"reserve_pgflag_1"}

#define show_page_flags(flags)						\
	(flags) ? __print_flags(flags, "|",				\
+2 −0
Original line number Diff line number Diff line
@@ -660,6 +660,8 @@ static const struct {
	{ "__GFP_RECLAIM",		"R" },
	{ "__GFP_DIRECT_RECLAIM",	"DR" },
	{ "__GFP_KSWAPD_RECLAIM",	"KR" },
	{ "__GFP_RESERVE_0",		"RE0" },
	{ "__GFP_RESERVE_1",		"RE1" },
};

static size_t max_gfp_len;