From: Peter Xu <peterx@redhat.com> To: linux-kernel@vger.kernel.org Cc: peterx@redhat.com, "Andrea Arcangeli" <aarcange@redhat.com>, "Andrew Morton" <akpm@linux-foundation.org>, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>, "Michal Hocko" <mhocko@suse.com>, "Zi Yan" <zi.yan@cs.rutgers.edu>, "Huang Ying" <ying.huang@intel.com>, "Dan Williams" <dan.j.williams@intel.com>, "Naoya Horiguchi" <n-horiguchi@ah.jp.nec.com>, "Jérôme Glisse" <jglisse@redhat.com>, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>, "Konstantin Khlebnikov" <khlebnikov@yandex-team.ru>, "Souptick Joarder" <jrdr.linux@gmail.com>, linux-mm@kvack.org Subject: [PATCH] mm: hugepage: mark splitted page dirty when needed Date: Tue, 4 Sep 2018 15:55:10 +0800 [thread overview] Message-ID: <20180904075510.22338-1-peterx@redhat.com> (raw) When splitting a huge page, we should set all small pages as dirty if the original huge page has the dirty bit set before. Otherwise we'll lose the original dirty bit. CC: Andrea Arcangeli <aarcange@redhat.com> CC: Andrew Morton <akpm@linux-foundation.org> CC: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> CC: Michal Hocko <mhocko@suse.com> CC: Zi Yan <zi.yan@cs.rutgers.edu> CC: Huang Ying <ying.huang@intel.com> CC: Dan Williams <dan.j.williams@intel.com> CC: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> CC: "Jérôme Glisse" <jglisse@redhat.com> CC: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> CC: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> CC: Souptick Joarder <jrdr.linux@gmail.com> CC: linux-mm@kvack.org CC: linux-kernel@vger.kernel.org Signed-off-by: Peter Xu <peterx@redhat.com> --- To the reviewers: I'm new to the mm world so sorry if this patch is making silly mistakes, however it did solve a problem for me when testing with a customized Linux tree mostly based on Andrea's userfault write-protect work. Without the change, my customized QEMU/tcg tree will not be able to do correct UFFDIO_WRITEPROTECT and then QEMU will get a SIGBUS when faulting multiple times. With the change (or of course disabling THP) then UFFDIO_WRITEPROTECT will be able to correctly resolve the write protections then it runs well. Any comment would be welcomed. TIA. --- mm/huge_memory.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index c3bc7e9c9a2a..0754a16923d5 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2176,6 +2176,8 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, entry = pte_mkold(entry); if (soft_dirty) entry = pte_mksoft_dirty(entry); + if (dirty) + entry = pte_mkdirty(entry); } pte = pte_offset_map(&_pmd, addr); BUG_ON(!pte_none(*pte)); -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Peter Xu <peterx@redhat.com> To: linux-kernel@vger.kernel.org Cc: peterx@redhat.com, "Andrea Arcangeli" <aarcange@redhat.com>, "Andrew Morton" <akpm@linux-foundation.org>, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>, "Michal Hocko" <mhocko@suse.com>, "Zi Yan" <zi.yan@cs.rutgers.edu>, "Huang Ying" <ying.huang@intel.com>, "Dan Williams" <dan.j.williams@intel.com>, "Naoya Horiguchi" <n-horiguchi@ah.jp.nec.com>, "Jérôme Glisse" <jglisse@redhat.com>, "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>, "Konstantin Khlebnikov" <khlebnikov@yandex-team.ru>, "Souptick Joarder" <jrdr.linux@gmail.com>, linux-mm@kvack.org Subject: [PATCH] mm: hugepage: mark splitted page dirty when needed Date: Tue, 4 Sep 2018 15:55:10 +0800 [thread overview] Message-ID: <20180904075510.22338-1-peterx@redhat.com> (raw) When splitting a huge page, we should set all small pages as dirty if the original huge page has the dirty bit set before. Otherwise we'll lose the original dirty bit. CC: Andrea Arcangeli <aarcange@redhat.com> CC: Andrew Morton <akpm@linux-foundation.org> CC: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> CC: Michal Hocko <mhocko@suse.com> CC: Zi Yan <zi.yan@cs.rutgers.edu> CC: Huang Ying <ying.huang@intel.com> CC: Dan Williams <dan.j.williams@intel.com> CC: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> CC: "JA(C)rA'me Glisse" <jglisse@redhat.com> CC: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> CC: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> CC: Souptick Joarder <jrdr.linux@gmail.com> CC: linux-mm@kvack.org CC: linux-kernel@vger.kernel.org Signed-off-by: Peter Xu <peterx@redhat.com> --- To the reviewers: I'm new to the mm world so sorry if this patch is making silly mistakes, however it did solve a problem for me when testing with a customized Linux tree mostly based on Andrea's userfault write-protect work. Without the change, my customized QEMU/tcg tree will not be able to do correct UFFDIO_WRITEPROTECT and then QEMU will get a SIGBUS when faulting multiple times. With the change (or of course disabling THP) then UFFDIO_WRITEPROTECT will be able to correctly resolve the write protections then it runs well. Any comment would be welcomed. TIA. --- mm/huge_memory.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index c3bc7e9c9a2a..0754a16923d5 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2176,6 +2176,8 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, entry = pte_mkold(entry); if (soft_dirty) entry = pte_mksoft_dirty(entry); + if (dirty) + entry = pte_mkdirty(entry); } pte = pte_offset_map(&_pmd, addr); BUG_ON(!pte_none(*pte)); -- 2.17.1
next reply other threads:[~2018-09-04 7:55 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-04 7:55 Peter Xu [this message] 2018-09-04 7:55 ` [PATCH] mm: hugepage: mark splitted page dirty when needed Peter Xu 2018-09-04 8:01 ` Kirill A. Shutemov 2018-09-04 14:00 ` Zi Yan 2018-09-05 7:30 ` Peter Xu 2018-09-05 12:49 ` Zi Yan 2018-09-06 11:43 ` Peter Xu 2018-09-06 11:43 ` Peter Xu 2018-09-05 12:55 ` Kirill A. Shutemov 2018-09-06 11:39 ` Peter Xu 2018-09-06 11:39 ` Peter Xu 2018-09-06 14:08 ` Kirill A. Shutemov 2018-09-07 4:35 ` Peter Xu 2018-09-07 4:35 ` Peter Xu 2018-09-07 17:54 ` Jerome Glisse 2018-09-07 17:54 ` Jerome Glisse 2018-09-10 4:07 ` Peter Xu 2018-09-06 14:17 ` Jerome Glisse 2018-09-06 14:17 ` Jerome Glisse
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=20180904075510.22338-1-peterx@redhat.com \ --to=peterx@redhat.com \ --cc=aarcange@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=aneesh.kumar@linux.vnet.ibm.com \ --cc=dan.j.williams@intel.com \ --cc=jglisse@redhat.com \ --cc=jrdr.linux@gmail.com \ --cc=khlebnikov@yandex-team.ru \ --cc=kirill.shutemov@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@suse.com \ --cc=n-horiguchi@ah.jp.nec.com \ --cc=ying.huang@intel.com \ --cc=zi.yan@cs.rutgers.edu \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.