All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <aarcange@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: Jerome Glisse <jglisse@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	kvm@vger.kernel.org, virtualization@lists.linux-foundation.org,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	peterx@redhat.com, linux-mm@kvack.org, Jan Kara <jack@suse.cz>
Subject: Re: [RFC PATCH V2 5/5] vhost: access vq metadata through kernel virtual address
Date: Fri, 8 Mar 2019 14:11:08 -0500	[thread overview]
Message-ID: <20190308191108.GA26923@redhat.com> (raw)
In-Reply-To: <671c4a98-4699-836e-79fc-0ce650c7f701@redhat.com>

On Fri, Mar 08, 2019 at 05:13:26PM +0800, Jason Wang wrote:
> Actually not wrapping around,  the pages for used ring was marked as 
> dirty after a round of virtqueue processing when we're sure vhost wrote 
> something there.

Thanks for the clarification. So we need to convert it to
set_page_dirty and move it to the mmu notifier invalidate but in those
cases where gup_fast was called with write=1 (1 out of 3).

If using ->invalidate_range the page pin also must be removed
immediately after get_user_pages returns (not ok to hold the pin in
vmap until ->invalidate_range is called) to avoid false positive gup
pin checks in things like KSM, or the pin must be released in
invalidate_range_start (which is called before the pin checks).

Here's why:

		/*
		 * Check that no O_DIRECT or similar I/O is in progress on the
		 * page
		 */
		if (page_mapcount(page) + 1 + swapped != page_count(page)) {
			set_pte_at(mm, pvmw.address, pvmw.pte, entry);
			goto out_unlock;
		}
		[..]
		set_pte_at_notify(mm, pvmw.address, pvmw.pte, entry);
			  ^^^^^^^ too late release the pin here, the
				  above already failed

->invalidate_range cannot be used with mutex anyway so you need to go
back with invalidate_range_start/end anyway, just the pin must be
released in _start at the latest in such case.

My prefer is generally to call gup_fast() followed by immediate
put_page() because I always want to drop FOLL_GET from gup_fast as a
whole to avoid 2 useless atomic ops per gup_fast.

I'll write more about vmap in answer to the other email.

Thanks,
Andrea

  parent reply	other threads:[~2019-03-08 19:11 UTC|newest]

Thread overview: 175+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-06  7:18 [RFC PATCH V2 0/5] vhost: accelerate metadata access through vmap() Jason Wang
2019-03-06  7:18 ` Jason Wang
2019-03-06  7:18 ` [RFC PATCH V2 1/5] vhost: generalize adding used elem Jason Wang
2019-03-06  7:18 ` Jason Wang
2019-03-06  7:18 ` [RFC PATCH V2 2/5] vhost: fine grain userspace memory accessors Jason Wang
2019-03-06 10:45   ` Christophe de Dinechin
2019-03-07  2:38     ` Jason Wang
2019-03-07  2:38       ` Jason Wang
2019-03-06 10:45   ` Christophe de Dinechin
2019-03-06  7:18 ` Jason Wang
2019-03-06  7:18 ` [RFC PATCH V2 3/5] vhost: rename vq_iotlb_prefetch() to vq_meta_prefetch() Jason Wang
2019-03-06  7:18 ` Jason Wang
2019-03-06  7:18 ` [RFC PATCH V2 4/5] vhost: introduce helpers to get the size of metadata area Jason Wang
2019-03-06 10:56   ` Christophe de Dinechin
2019-03-07  2:40     ` Jason Wang
2019-03-07  2:40     ` Jason Wang
2019-03-06 10:56   ` Christophe de Dinechin
2019-03-06 18:43   ` Souptick Joarder
2019-03-07  2:42     ` Jason Wang
2019-03-07  2:42     ` Jason Wang
2019-03-06  7:18 ` Jason Wang
2019-03-06  7:18 ` [RFC PATCH V2 5/5] vhost: access vq metadata through kernel virtual address Jason Wang
2019-03-06 16:31   ` Michael S. Tsirkin
2019-03-07  2:45     ` Jason Wang
2019-03-07  2:45     ` Jason Wang
2019-03-07 15:34       ` Michael S. Tsirkin
2019-03-07 19:09         ` Jerome Glisse
2019-03-07 19:38           ` Andrea Arcangeli
2019-03-07 19:38             ` Andrea Arcangeli
2019-03-07 20:17             ` Jerome Glisse
2019-03-07 20:17             ` Jerome Glisse
2019-03-07 21:27               ` Andrea Arcangeli
2019-03-08  9:13                 ` Jason Wang
2019-03-08  9:13                 ` Jason Wang
2019-03-08 19:11                   ` Andrea Arcangeli
2019-03-08 19:11                   ` Andrea Arcangeli [this message]
2019-03-11  7:21                     ` Jason Wang
2019-03-11  7:21                     ` Jason Wang
2019-03-11 14:45                 ` Jan Kara
2019-03-11 14:45                 ` Jan Kara
2019-03-07 21:27               ` Andrea Arcangeli
2019-03-07 19:09         ` Jerome Glisse
2019-03-08  8:31         ` Jason Wang
2019-03-08  8:31         ` Jason Wang
2019-03-07 15:34       ` Michael S. Tsirkin
2019-03-06 16:31   ` Michael S. Tsirkin
2019-03-07 15:47   ` Michael S. Tsirkin
2019-03-07 17:56     ` Michael S. Tsirkin
2019-03-07 17:56     ` Michael S. Tsirkin
2019-03-07 19:16       ` Andrea Arcangeli
2019-03-08  8:50         ` Jason Wang
2019-03-08  8:50           ` Jason Wang
2019-03-08 14:58           ` Jerome Glisse
2019-03-08 14:58           ` Jerome Glisse
2019-03-11  7:18             ` Jason Wang
2019-03-11  7:18             ` Jason Wang
2019-03-08 19:48           ` Andrea Arcangeli
2019-03-08 20:06             ` Jerome Glisse
2019-03-08 20:06             ` Jerome Glisse
2019-03-11  7:40             ` Jason Wang
2019-03-11  7:40               ` Jason Wang
2019-03-11 12:48               ` Michael S. Tsirkin
2019-03-11 12:48               ` Michael S. Tsirkin
2019-03-11 13:43                 ` Andrea Arcangeli
2019-03-12  2:56                   ` Jason Wang
2019-03-12  3:51                     ` Michael S. Tsirkin
2019-03-12  3:51                     ` Michael S. Tsirkin
2019-03-12  2:56                   ` Jason Wang
2019-03-11 13:43                 ` Andrea Arcangeli
2019-03-12  2:52                 ` Jason Wang
2019-03-12  2:52                   ` Jason Wang
2019-03-12  3:50                   ` Michael S. Tsirkin
2019-03-12  7:15                     ` Jason Wang
2019-03-12  7:15                     ` Jason Wang
2019-03-12  3:50                   ` Michael S. Tsirkin
2019-03-08 19:48           ` Andrea Arcangeli
2019-03-07 19:16       ` Andrea Arcangeli
2019-03-07 19:17       ` Jerome Glisse
2019-03-07 19:17       ` Jerome Glisse
2019-03-08  2:21         ` Michael S. Tsirkin
2019-03-08  2:21           ` Michael S. Tsirkin
2019-03-08  2:55           ` Jerome Glisse
2019-03-08  2:55           ` Jerome Glisse
2019-03-08  3:16             ` Michael S. Tsirkin
2019-03-08  3:16             ` Michael S. Tsirkin
2019-03-08  3:40               ` Jerome Glisse
2019-03-08  3:40               ` Jerome Glisse
2019-03-08  3:43                 ` Michael S. Tsirkin
2019-03-08  3:43                 ` Michael S. Tsirkin
2019-03-08  3:45                   ` Jerome Glisse
2019-03-08  3:45                   ` Jerome Glisse
2019-03-08  9:15                     ` Jason Wang
2019-03-08  9:15                     ` Jason Wang
2019-03-08  8:58         ` Jason Wang
2019-03-08 12:56           ` Michael S. Tsirkin
2019-03-08 12:56           ` Michael S. Tsirkin
2019-03-08 15:02             ` Jerome Glisse
2019-03-08 15:02             ` Jerome Glisse
2019-03-08 19:13           ` Andrea Arcangeli
2019-03-08 19:13           ` Andrea Arcangeli
2019-03-08  8:58         ` Jason Wang
2019-03-07 15:47   ` Michael S. Tsirkin
2019-03-06  7:18 ` Jason Wang
2019-03-08 14:12 ` [RFC PATCH V2 0/5] vhost: accelerate metadata access through vmap() Christoph Hellwig
2019-03-08 14:12   ` Christoph Hellwig
2019-03-11  7:13   ` Jason Wang
2019-03-11  7:13     ` Jason Wang
2019-03-11 13:59     ` Michael S. Tsirkin
2019-03-11 13:59       ` Michael S. Tsirkin
2019-03-11 18:14       ` David Miller
2019-03-11 18:14         ` David Miller
2019-03-12  2:59         ` Jason Wang
2019-03-12  2:59           ` Jason Wang
2019-03-12  3:52           ` Michael S. Tsirkin
2019-03-12  3:52             ` Michael S. Tsirkin
2019-03-12  3:52             ` Michael S. Tsirkin
2019-03-12  7:17             ` Jason Wang
2019-03-12  7:17               ` Jason Wang
2019-03-12 11:54               ` Michael S. Tsirkin
2019-03-12 11:54                 ` Michael S. Tsirkin
2019-03-12 15:46                 ` James Bottomley
2019-03-12 15:46                   ` James Bottomley
2019-03-12 20:04                   ` Andrea Arcangeli
2019-03-12 20:04                     ` Andrea Arcangeli
2019-03-12 20:04                     ` Andrea Arcangeli
2019-03-12 20:53                     ` James Bottomley
2019-03-12 20:53                       ` James Bottomley
2019-03-12 21:11                       ` Andrea Arcangeli
2019-03-12 21:11                         ` Andrea Arcangeli
2019-03-12 21:19                         ` James Bottomley
2019-03-12 21:19                           ` James Bottomley
2019-03-12 21:53                           ` Andrea Arcangeli
2019-03-12 21:53                           ` Andrea Arcangeli
2019-03-12 21:53                             ` Andrea Arcangeli
2019-03-12 22:02                             ` James Bottomley
2019-03-12 22:02                               ` James Bottomley
2019-03-12 22:50                               ` Andrea Arcangeli
2019-03-12 22:50                               ` Andrea Arcangeli
2019-03-12 22:50                                 ` Andrea Arcangeli
2019-03-12 22:57                                 ` James Bottomley
2019-03-12 22:57                                   ` James Bottomley
2019-03-12 21:11                       ` Andrea Arcangeli
2019-03-13 16:05                       ` Christoph Hellwig
2019-03-13 16:05                       ` Christoph Hellwig
2019-03-13 16:05                         ` Christoph Hellwig
2019-03-13 16:05                         ` Christoph Hellwig
2019-03-13 16:37                         ` James Bottomley
2019-03-13 16:37                           ` James Bottomley
2019-03-14 10:42                           ` Michael S. Tsirkin
2019-03-14 10:42                             ` Michael S. Tsirkin
2019-03-14 13:49                             ` Jason Wang
2019-03-14 13:49                               ` Jason Wang
2019-03-14 19:33                               ` Andrea Arcangeli
2019-03-14 19:33                                 ` Andrea Arcangeli
2019-03-15  4:39                                 ` Jason Wang
2019-03-15  4:39                                   ` Jason Wang
2019-03-15  4:39                                 ` Jason Wang
2019-03-14 19:33                               ` Andrea Arcangeli
2019-03-14 13:49                             ` Jason Wang
2019-03-14 10:42                           ` Michael S. Tsirkin
2019-03-12 11:54               ` Michael S. Tsirkin
2019-03-12  7:17             ` Jason Wang
2019-03-12  5:14           ` James Bottomley
2019-03-12  5:14             ` James Bottomley
2019-03-12  7:51             ` Jason Wang
2019-03-12  7:51               ` Jason Wang
2019-03-12  7:53               ` Jason Wang
2019-03-12  7:53               ` Jason Wang
2019-03-12  7:53                 ` Jason Wang
2019-03-12  7:51             ` Jason Wang
2019-03-12  2:59         ` Jason Wang
2019-03-11 18:14       ` David Miller
2019-03-11 13:59     ` Michael S. Tsirkin
2019-03-11  7:13   ` Jason Wang
2019-03-08 14:12 ` Christoph Hellwig

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=20190308191108.GA26923@redhat.com \
    --to=aarcange@redhat.com \
    --cc=jack@suse.cz \
    --cc=jasowang@redhat.com \
    --cc=jglisse@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=peterx@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /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 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.