Thread (64 messages) 64 messages, 13 authors, 2016-12-15

Re: [RFC, PATCHv1 24/28] x86/mm: add sync_global_pgds() for configuration with 5-level paging

From: Andy Lutomirski <luto@amacapital.net>
Date: 2016-12-08 18:42:45
Also in: linux-arch, lkml

On Thu, Dec 8, 2016 at 8:21 AM, Kirill A. Shutemov
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
This basically restores slightly modified version of original
sync_global_pgds() which we had before foldedl p4d was introduced.

The only modification is protection against 'address' overflow.

Signed-off-by: Kirill A. Shutemov <redacted>
---
 arch/x86/mm/init_64.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index a991f5c4c2c4..d637893ac8c2 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -92,6 +92,52 @@ __setup("noexec32=", nonx32_setup);
  * When memory was added/removed make sure all the processes MM have
  * suitable PGD entries in the local PGD level page.
  */
+#ifdef CONFIG_X86_5LEVEL
+void sync_global_pgds(unsigned long start, unsigned long end, int removed)
+{
+        unsigned long address;
+
+       for (address = start; address <= end && address >= start;
+                       address += PGDIR_SIZE) {
+                const pgd_t *pgd_ref = pgd_offset_k(address);
+                struct page *page;
+
+                /*
+                 * When it is called after memory hot remove, pgd_none()
+                 * returns true. In this case (removed == 1), we must clear
+                 * the PGD entries in the local PGD level page.
+                 */
+                if (pgd_none(*pgd_ref) && !removed)
+                        continue;
This isn't quite specific to your patch, but can we assert that, if
removed=1, then we're not operating on the vmalloc range?  Because if
we do, this will be racy is nasty ways.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help