linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Cc: Wei Zhang <wzam@amazon.com>, Matthew Wilcox <willy@infradead.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Gal Pressman <galpress@amazon.com>,
	peterx@redhat.com, Christoph Hellwig <hch@lst.de>,
	Andrea Arcangeli <aarcange@redhat.com>, Jan Kara <jack@suse.cz>,
	Kirill Shutemov <kirill@shutemov.name>,
	David Gibson <david@gibson.dropbear.id.au>,
	Mike Rapoport <rppt@linux.vnet.ibm.com>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Kirill Tkhai <ktkhai@virtuozzo.com>, Jann Horn <jannh@google.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH 0/4] mm/hugetlb: Early cow on fork, and a few cleanups
Date: Wed,  3 Feb 2021 16:08:28 -0500	[thread overview]
Message-ID: <20210203210832.113685-1-peterx@redhat.com> (raw)

As reported by Gal [1], we still miss the code clip to handle early cow for
hugetlb case, which is true.  Again, it still feels odd to fork() after using a
few huge pages, especially if they're privately mapped to me..  However I do
agree with Gal and Jason in that we should still have that since that'll
complete the early cow on fork effort at least, and it'll still fix issues
where buffers are not well under control and not easy to apply MADV_DONTFORK.

The first two patches (1-2) are some cleanups I noticed when reading into the
hugetlb reserve map code.  I think it's good to have but they're not necessary
for fixing the fork issue.

The last two patches (3-4) is the real fix.

I tested this with a fork() after some vfio-pci assignment, so I'm pretty sure
the page copy path could trigger well (page will be accounted right after the
fork()), but I didn't do data check since the card I assigned is some random
nic.  Gal, please feel free to try this if you have better way to verify the
series.

  https://github.com/xzpeter/linux/tree/fork-cow-pin-huge

Please review, thanks!

[1] https://lore.kernel.org/lkml/27564187-4a08-f187-5a84-3df50009f6ca@amazon.com/

Peter Xu (4):
  hugetlb: Dedup the code to add a new file_region
  hugetlg: Break earlier in add_reservation_in_range() when we can
  mm: Introduce page_needs_cow_for_dma() for deciding whether cow
  hugetlb: Do early cow when page pinned on src mm

 include/linux/mm.h |  21 ++++++++
 mm/huge_memory.c   |   8 +--
 mm/hugetlb.c       | 129 ++++++++++++++++++++++++++++++++++-----------
 mm/internal.h      |   5 --
 mm/memory.c        |   7 +--
 5 files changed, 123 insertions(+), 47 deletions(-)

-- 
2.26.2




             reply	other threads:[~2021-02-03 21:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-03 21:08 Peter Xu [this message]
2021-02-03 21:08 ` [PATCH 1/4] hugetlb: Dedup the code to add a new file_region Peter Xu
2021-02-03 23:01   ` Mike Kravetz
2021-02-04  1:59   ` Miaohe Lin
2021-02-03 21:08 ` [PATCH 2/4] hugetlg: Break earlier in add_reservation_in_range() when we can Peter Xu
2021-02-04  0:45   ` Mike Kravetz
2021-02-04  2:20   ` Miaohe Lin
2021-02-03 21:08 ` [PATCH 3/4] mm: Introduce page_needs_cow_for_dma() for deciding whether cow Peter Xu
2021-02-03 21:08 ` [PATCH 4/4] hugetlb: Do early cow when page pinned on src mm Peter Xu
2021-02-03 21:15   ` Linus Torvalds
2021-02-03 22:08     ` Peter Xu
2021-02-03 22:04   ` Mike Kravetz
2021-02-03 22:30     ` Peter Xu
2021-02-04 14:32 ` [PATCH 0/4] mm/hugetlb: Early cow on fork, and a few cleanups Gal Pressman

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=20210203210832.113685-1-peterx@redhat.com \
    --to=peterx@redhat.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=galpress@amazon.com \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=jannh@google.com \
    --cc=jgg@ziepe.ca \
    --cc=kirill@shutemov.name \
    --cc=ktkhai@virtuozzo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mike.kravetz@oracle.com \
    --cc=rppt@linux.vnet.ibm.com \
    --cc=torvalds@linux-foundation.org \
    --cc=willy@infradead.org \
    --cc=wzam@amazon.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