[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <22bcd5fc-338c-6b72-2bda-47ba38d7e8ef@redhat.com>
Date: Sun, 19 Jan 2020 10:09:53 +0100
From: Paolo Bonzini <pbonzini@...hat.com>
To: Peter Xu <peterx@...hat.com>, "Michael S. Tsirkin" <mst@...hat.com>
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
Christophe de Dinechin <dinechin@...hat.com>,
Sean Christopherson <sean.j.christopherson@...el.com>,
Yan Zhao <yan.y.zhao@...el.com>,
Alex Williamson <alex.williamson@...hat.com>,
Jason Wang <jasowang@...hat.com>,
Kevin Kevin <kevin.tian@...el.com>,
Vitaly Kuznetsov <vkuznets@...hat.com>,
"Dr . David Alan Gilbert" <dgilbert@...hat.com>,
Lei Cao <lei.cao@...atus.com>
Subject: Re: [PATCH v3 12/21] KVM: X86: Implement ring-based dirty memory
tracking
On 09/01/20 20:15, Peter Xu wrote:
> Regarding dropping the indices: I feel like it can be done, though we
> probably need two extra bits for each GFN entry, for example:
>
> - Bit 0 of the GFN address to show whether this is a valid publish
> of dirty gfn
>
> - Bit 1 of the GFN address to show whether this is collected by the
> user
We can use bit 62 and 63 of the GFN.
I think this can be done in a secure way. Later in the thread you say:
> We simply check fetch_index (sorry I
> meant this when I said reset_index, anyway it's the only index that we
> expose to userspace) to make sure:
>
> reset_index <= fetch_index <= dirty_index
So this means that KVM_RESET_DIRTY_RINGS should only test the "collected
by user" flag on dirty ring entries between reset_index and dirty_index.
Also I would make it
00b (invalid GFN) ->
01b (valid gfn published by kernel, which is dirty) ->
1*b (gfn dirty page collected by userspace) ->
00b (gfn reset by kernel, so goes back to invalid gfn)
That is 10b and 11b are equivalent. The kernel doesn't read that bit if
userspace has collected the page.
Paolo
Powered by blists - more mailing lists