mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Gerald Schaefer <gerald.schaefer@de.ibm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Andi Kleen <ak@linux.intel.com>, Hugh Dickins <hughd@google.com>,
	Hillf Danton <dhillf@gmail.com>
Cc: linux-kernel@vger.kernel.org,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Gerald Schaefer <gerald.schaefer@de.ibm.com>
Subject: [RFC v2 PATCH 6/7] thp, s390: disable thp for kvm host on s390
Date: Wed, 29 Aug 2012 17:33:03 +0200	[thread overview]
Message-ID: <1346254384-30046-7-git-send-email-gerald.schaefer@de.ibm.com> (raw)
In-Reply-To: <1346254384-30046-1-git-send-email-gerald.schaefer@de.ibm.com>

This patch is part of the architecture backend for thp on s390.
It disables thp for kvm hosts, because there is no kvm host hugepage
support so far. Existing thp mappings are split by follow_page() with
FOLL_SPLIT, and future thp mappings are prevented by setting
VM_NOHUGEPAGE in mm->def_flags.

Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
---
 arch/s390/mm/pgtable.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index 3168fbd..7846072 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -787,6 +787,30 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)
 		tlb_table_flush(tlb);
 }
 
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+void thp_split_vma(struct vm_area_struct *vma)
+{
+	unsigned long addr;
+	struct page *page;
+
+	for (addr = vma->vm_start; addr < vma->vm_end; addr += PAGE_SIZE) {
+		page = follow_page(vma, addr, FOLL_SPLIT);
+	}
+}
+
+void thp_split_mm(struct mm_struct *mm)
+{
+	struct vm_area_struct *vma = mm->mmap;
+
+	while (vma != NULL) {
+		thp_split_vma(vma);
+		vma->vm_flags &= ~VM_HUGEPAGE;
+		vma->vm_flags |= VM_NOHUGEPAGE;
+		vma = vma->vm_next;
+	}
+}
+#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
+
 /*
  * switch on pgstes for its userspace process (for kvm)
  */
@@ -824,6 +848,12 @@ int s390_enable_sie(void)
 	if (!mm)
 		return -ENOMEM;
 
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+	/* split thp mappings and disable thp for future mappings */
+	thp_split_mm(mm);
+	mm->def_flags |= VM_NOHUGEPAGE;
+#endif
+
 	/* Now lets check again if something happened */
 	task_lock(tsk);
 	if (!tsk->mm || atomic_read(&tsk->mm->mm_users) > 1 ||
-- 
1.7.11.5


  parent reply	other threads:[~2012-08-29 15:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-29 15:32 [RFC v2 PATCH 0/7] thp: transparent hugepages " Gerald Schaefer
2012-08-29 15:32 ` [RFC v2 PATCH 1/7] thp: remove assumptions on pgtable_t type Gerald Schaefer
2012-08-31  5:29   ` Aneesh Kumar K.V
2012-08-31  7:10     ` Martin Schwidefsky
2012-09-04 22:56   ` Andrea Arcangeli
2012-09-05 17:12     ` Gerald Schaefer
2012-08-29 15:32 ` [RFC v2 PATCH 2/7] thp: introduce pmdp_invalidate() Gerald Schaefer
2012-08-29 15:33 ` [RFC v2 PATCH 3/7] thp: make MADV_HUGEPAGE check for mm->def_flags Gerald Schaefer
2012-08-29 15:33 ` [RFC v2 PATCH 4/7] thp, s390: thp splitting backend for s390 Gerald Schaefer
2012-08-29 15:33 ` [RFC v2 PATCH 5/7] thp, s390: thp pagetable pre-allocation " Gerald Schaefer
2012-08-29 15:33 ` Gerald Schaefer [this message]
2012-08-29 15:33 ` [RFC v2 PATCH 7/7] thp, s390: architecture backend for thp on s390 Gerald Schaefer
2012-08-30 19:54 ` [RFC v2 PATCH 0/7] thp: transparent hugepages " Andrew Morton
2012-08-31  7:07   ` Martin Schwidefsky
2012-08-31 19:47     ` Andrew Morton
2012-09-04 22:40       ` Andrea Arcangeli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1346254384-30046-7-git-send-email-gerald.schaefer@de.ibm.com \
    --to=gerald.schaefer@de.ibm.com \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhillf@gmail.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schwidefsky@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome