Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1237943 > unrolled thread

[PATCH 0/3] page-flags updates

Started by"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
First post2015-10-02 07:50 +0200
Last post2015-10-02 07:50 +0200
Articles 3 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/3] page-flags updates "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> - 2015-10-02 07:50 +0200
    [PATCH 2/3] page-flags: add documentation for policies "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> - 2015-10-02 07:50 +0200
    [PATCH 3/3] page-flags: hide PF_* validation check under separate config option "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> - 2015-10-02 07:50 +0200

#1237943 — [PATCH 0/3] page-flags updates

From"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Date2015-10-02 07:50 +0200
Subject[PATCH 0/3] page-flags updates
Message-ID<qf1od-2Go-3@gated-at.bofh.it>
Few updates based on Andrew's feedback.

Kirill A. Shutemov (3):
  page-flags: do not corrupt caller 'page' in PF_NO_TAIL
  page-flags: add documentation for policies
  page-flags: hide PF_* validation check under separate config option

 include/linux/mmdebug.h    |  6 ++++++
 include/linux/page-flags.h | 30 +++++++++++++++++++++---------
 lib/Kconfig.debug          |  8 ++++++++
 3 files changed, 35 insertions(+), 9 deletions(-)

-- 
2.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1237945 — [PATCH 2/3] page-flags: add documentation for policies

From"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Date2015-10-02 07:50 +0200
Subject[PATCH 2/3] page-flags: add documentation for policies
Message-ID<qf1oe-2Go-7@gated-at.bofh.it>
In reply to#1237943
The patch adds description for page flags policies.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
---
 include/linux/page-flags.h | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 465ca42af633..19e4129f00e5 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -133,7 +133,23 @@ enum pageflags {
 
 #ifndef __GENERATING_BOUNDS_H
 
-/* Page flags policies wrt compound pages */
+/*
+ * Page flags policies wrt compound pages
+ *
+ * PF_ANY:
+ *     the page flag is relevant for small, head and tail pages.
+ *
+ * PF_HEAD:
+ *     for compound page all operations related to the page flag applied to
+ *     head page.
+ *
+ * PF_NO_TAIL:
+ *     modifications of the page flag must be done on small or head pages,
+ *     checks can be done on tail pages too.
+ *
+ * PF_NO_COMPOUND:
+ *     the page flag is not relevant for compound pages.
+ */
 #define PF_ANY(page, enforce)	page
 #define PF_HEAD(page, enforce)	compound_head(page)
 #define PF_NO_TAIL(page, enforce) ({					\
-- 
2.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1237946 — [PATCH 3/3] page-flags: hide PF_* validation check under separate config option

From"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Date2015-10-02 07:50 +0200
Subject[PATCH 3/3] page-flags: hide PF_* validation check under separate config option
Message-ID<qf1oe-2Go-9@gated-at.bofh.it>
In reply to#1237943
VM_BUG_ONs in PF_NO_TAIL() and PF_NO_COMPOUND() add 4+ KiB to
mm/build-in.o for DEBUG_VM kernel.

Let's hide them under new config option -- CONFIG_DEBUG_VM_PGFLAGS.
With the option enabled VM_BUG_ON_PGFLAGS() is equal to VM_BUG_ON_PAGE.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
---
 include/linux/mmdebug.h    | 6 ++++++
 include/linux/page-flags.h | 8 +++-----
 lib/Kconfig.debug          | 8 ++++++++
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h
index 877ef226f90f..c447d8055e50 100644
--- a/include/linux/mmdebug.h
+++ b/include/linux/mmdebug.h
@@ -55,4 +55,10 @@ void dump_mm(const struct mm_struct *mm);
 #define VIRTUAL_BUG_ON(cond) do { } while (0)
 #endif
 
+#ifdef CONFIG_DEBUG_VM_PGFLAGS
+#define VM_BUG_ON_PGFLAGS(cond, page) VM_BUG_ON_PAGE(cond, page)
+#else
+#define VM_BUG_ON_PGFLAGS(cond, page) BUILD_BUG_ON_INVALID(cond)
+#endif
+
 #endif
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 19e4129f00e5..8d6e4e9a98af 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -153,12 +153,10 @@ enum pageflags {
 #define PF_ANY(page, enforce)	page
 #define PF_HEAD(page, enforce)	compound_head(page)
 #define PF_NO_TAIL(page, enforce) ({					\
-		if (enforce)						\
-			VM_BUG_ON_PAGE(PageTail(page), page);		\
+		VM_BUG_ON_PGFLAGS(enforce && PageTail(page), page);	\
 		compound_head(page);})
-#define PF_NO_COMPOUND(page, enforce) ({					\
-		if (enforce)						\
-			VM_BUG_ON_PAGE(PageCompound(page), page);	\
+#define PF_NO_COMPOUND(page, enforce) ({				\
+		VM_BUG_ON_PGFLAGS(enforce && PageCompound(page), page);	\
 		page;})
 
 /*
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index e2894b23efb6..0d12bfa429de 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -570,6 +570,14 @@ config DEBUG_VM_RB
 
 	  If unsure, say N.
 
+config DEBUG_VM_PGFLAGS
+	bool "Debug page-flags operations"
+	depends on DEBUG_VM
+	help
+	  Enables extra validation on page flags operations.
+
+	  If unsure, say N.
+
 config DEBUG_VIRTUAL
 	bool "Debug VM translations"
 	depends on DEBUG_KERNEL && X86
-- 
2.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web