All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: Marcelo Tosatti <marcelo-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org>,
	kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: KVM swapping with mmu notifiers
Date: Tue, 22 Jan 2008 18:17:38 +0200	[thread overview]
Message-ID: <47961722.2010804@qumranet.com> (raw)
In-Reply-To: <20080122145631.GG7331-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>

Andrea Arcangeli wrote:
> On Tue, Jan 22, 2008 at 03:37:59PM +0200, Avi Kivity wrote:
>   
>> Andrea Arcangeli wrote:
>>     
>>> On Sun, Jan 20, 2008 at 05:16:03PM +0200, Avi Kivity wrote:
>>>   
>>>       
>>>> Yes, it's supposed to work (we can't prevent userspace from doing it).
>>>>     
>>>>         
>>> Hmm, I think we already prevent it, so I don't think I need to update
>>> my swap code until the below is removed.
>>>
>>> 	/* Check for overlaps */
>>> 	r = -EEXIST;
>>> 	for (i = 0; i < KVM_MEMORY_SLOTS; ++i) {
>>> 		struct kvm_memory_slot *s = &kvm->memslots[i];
>>>
>>> 		if (s == memslot)
>>> 			continue;
>>> 		if (!((base_gfn + npages <= s->base_gfn) ||
>>> 		      (base_gfn >= s->base_gfn + s->npages)))
>>> 			goto out_free;
>>> 	}
>>>
>>>   
>>>       
>> Actually, this checks against slots with the overlapping gfns.  Aliases 
>> have different gfns but same hvas.
>>     
>
> Hmm not sure to follow, do you mean I need to change something?
> Aliases live in a different dimension, and I can't see how my code
> could ever notice or care about aliases (that have to be translated to
> a real hva-memslot-backed gfn before calling get_user_pages). All I
> care about are to find the right rmap structures for each hva. The
> above snippet should be enough to guarantee that there can only be 1
> rmap structure for each hva, so when I checked yesterday that looked
> enough to prove my kvm_hva_to_rmapp implementation already correct.
>   

There can be more than one rmapp per hva.  Real world example:

  memslot 1: gfn range 0xe000000 - 0xe0800000 @ hva 0x10000000 (8MB 
framebuffer)
  memslot 2: gfn range 0xa0000 - 0xa8000 @ hva 0x10000000 (32KB VGA window)

If the guest accesses gfn 0xa0000 through one gva, and gfn 0xe0000000 
through a second gva, then you will have two rmap chains for hva 0x10000000.

This doesn't happen today because we use the alias mechanism in qemu, 
but we don't forbid it either.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

  parent reply	other threads:[~2008-01-22 16:17 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-13 13:32 KVM swapping with mmu notifiers Andrea Arcangeli
     [not found] ` <20080113133244.GC8736-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-13 15:02   ` Anthony Liguori
2008-01-14 13:45   ` Marcelo Tosatti
2008-01-14 14:06     ` Andrea Arcangeli
2008-01-14 14:09     ` Avi Kivity
     [not found]       ` <478B6CFF.9070801-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-14 14:24         ` Andrea Arcangeli
     [not found]           ` <20080114142457.GF7062-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-14 15:43             ` Avi Kivity
     [not found]               ` <478B833E.1020801-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-14 17:44                 ` Andrea Arcangeli
     [not found]                   ` <20080114174447.GA30812-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-15 14:40                     ` Avi Kivity
     [not found]                       ` <478CC5D3.2040201-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 15:52                         ` Andrea Arcangeli
     [not found]                           ` <20080115155253.GA7059-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-15 15:57                             ` Avi Kivity
     [not found]                               ` <478CD7CF.3080603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 16:09                                 ` Andrea Arcangeli
     [not found]                                   ` <20080115160936.GC7059-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-20 15:16                                     ` Avi Kivity
     [not found]                                       ` <479365B3.3000600-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-21 11:37                                         ` Andrea Arcangeli
     [not found]                                           ` <20080121113715.GE6970-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-21 12:53                                             ` Avi Kivity
2008-01-22 13:37                                             ` Avi Kivity
     [not found]                                               ` <4795F1B7.9050604-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-22 14:56                                                 ` Andrea Arcangeli
     [not found]                                                   ` <20080122145631.GG7331-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-22 16:17                                                     ` Avi Kivity [this message]
     [not found]                                                       ` <47961722.2010804-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-22 17:18                                                         ` Andrea Arcangeli
     [not found]                                                           ` <20080122171806.GH7331-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-22 20:03                                                             ` Andrea Arcangeli

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=47961722.2010804@qumranet.com \
    --to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
    --cc=andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=marcelo-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.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.