Re: [PATCH 01/11] Add shared memory hypercall to PV Linux guest.

From: Avi Kivity
Date: Tue Nov 03 2009 - 02:40:50 EST


On 11/03/2009 09:16 AM, Gleb Natapov wrote:

I have both! Do you want me to drop version?
Yes. Once a kernel is released you can't realistically change the version.

Why not? If version doesn't match apf will not be used.

Then you cause a large performance regression (assuming apf is any good). So there will be a lot of pressure to modify things incrementally via feature bits.

Some documentation for this?

Also, the name should reflect the pv pagefault use. For other uses
we can register other areas.

I wanted it to be generic, but I am fine with making it apf specific.
It will allow to make it smaller too.
Maybe we can squeeze it into the page-fault error code?

apf has to pass two things into a guest kernel:
- event type (page not present/wake up)
- unique token
Error code has 32 bits and at least 1 of them should indicate that this
is apf another one should indicate event type so this leaves us 30 bits
for a token. 12 bits of a token is used to store vcpu id this leaves 18
bits for unique per vcpu id. Yes this may be enough. I don't think it is
realistic to have more then 200000 outstanding apfs per vcpu. Alternately
we can use CR2 to pass a token.

Or a combination of pfec and cr2, yes.

would solve this. I prefer using put_user() though than a permanent
get_user_pages().

I want to prevent it from been swapped out.
Since you don't prevent the page fault handler or code from being
swapped out, you don't get anything out of it.

Performance. Currently it is accessed on each page fault and to access
it gup+kmap should be done each and every time.

put_user() is just as fast as a kmap, and don't prevent page migration or defragmentation.

Note we still have to mark_page_dirty() unless we want to chase live migration bugs.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/