All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Christoph Lameter <clameter-sJ/iWh9BUns@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	Daniel J Blueman
	<daniel.blueman-xqY44rlHlBpWk0Htik3J/w@public.gmane.org>,
	Andrea Arcangeli <andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: mmu notifiers
Date: Wed, 16 Jan 2008 09:39:31 +0200	[thread overview]
Message-ID: <478DB4B3.2000505@qumranet.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801151011380.10265-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>

Christoph Lameter wrote:
> On Tue, 15 Jan 2008, Avi Kivity wrote:
>
>   
>>> But each guest has its own page structs. They cannot share page structs.
>>> Concurrent access of two independent kernel instances for synchronization
>>> and status maintenance to a single page struct?
>>>   
>>>       
>> There's a host page struct (that the guest know nothing about and cannot
>> touch), and optionally a guest page struct for each guest (that the host and
>> the other guest know nothing about).
>>     
>
> Ok so if two linux guests want to share memory three page structs are 
> involved:
>
> 1. Host page struct
> 2. Guest #1 page struct
> 3. Guest #2 page struct
>
> I can understand that 1 and 2 point to the same physical page. Even all 
> three could point to the same page if the page is readonly. 
>
> However, lets say that Guest #1 allocates some anonymous memory and wants
> to share it with Guest #2. In that case something like PFNMAP is likely
> going to be used? Or are you remapping the physical page so that #1 and #2 
> share it? In that case two page struct describe state of the same physical
> page and we have no effective synchronization for writeback etc.
>
>   

Like I said, out of the box Linux doesn't support using memory that is 
shared with other instances as main memory.  One usage  (by the s390 
folk) was to put a read-only filesystem with execute-in-place support on 
this memory, and so reduce the memory usage of guests.

>> The host page struct may disappear if the host decides to swap the page into
>> its backing store and free the page.  The guest page structs (if any) would
>> remain.
>>     
>
> Page structs never disappear. The pte's may disappear and the page may be 
> unmapped from an address space of a process but the page struct stays. 
> Page struct can only disappear if memory hotplug is activated and memory 
> is taken out of the system.
>   

Yes, that was poorly phrased.  The page and its page struct may be 
reallocated for other purposes.

-- 
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/

WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@qumranet.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: kvm-devel@lists.sourceforge.net, linux-mm@kvack.org,
	Daniel J Blueman <daniel.blueman@quadrics.com>,
	Andrea Arcangeli <andrea@qumranet.com>
Subject: Re: [kvm-devel] mmu notifiers
Date: Wed, 16 Jan 2008 09:39:31 +0200	[thread overview]
Message-ID: <478DB4B3.2000505@qumranet.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801151011380.10265@schroedinger.engr.sgi.com>

Christoph Lameter wrote:
> On Tue, 15 Jan 2008, Avi Kivity wrote:
>
>   
>>> But each guest has its own page structs. They cannot share page structs.
>>> Concurrent access of two independent kernel instances for synchronization
>>> and status maintenance to a single page struct?
>>>   
>>>       
>> There's a host page struct (that the guest know nothing about and cannot
>> touch), and optionally a guest page struct for each guest (that the host and
>> the other guest know nothing about).
>>     
>
> Ok so if two linux guests want to share memory three page structs are 
> involved:
>
> 1. Host page struct
> 2. Guest #1 page struct
> 3. Guest #2 page struct
>
> I can understand that 1 and 2 point to the same physical page. Even all 
> three could point to the same page if the page is readonly. 
>
> However, lets say that Guest #1 allocates some anonymous memory and wants
> to share it with Guest #2. In that case something like PFNMAP is likely
> going to be used? Or are you remapping the physical page so that #1 and #2 
> share it? In that case two page struct describe state of the same physical
> page and we have no effective synchronization for writeback etc.
>
>   

Like I said, out of the box Linux doesn't support using memory that is 
shared with other instances as main memory.  One usage  (by the s390 
folk) was to put a read-only filesystem with execute-in-place support on 
this memory, and so reduce the memory usage of guests.

>> The host page struct may disappear if the host decides to swap the page into
>> its backing store and free the page.  The guest page structs (if any) would
>> remain.
>>     
>
> Page structs never disappear. The pte's may disappear and the page may be 
> unmapped from an address space of a process but the page struct stays. 
> Page struct can only disappear if memory hotplug is activated and memory 
> is taken out of the system.
>   

Yes, that was poorly phrased.  The page and its page struct may be 
reallocated for other purposes.

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

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2008-01-16  7:39 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-09 18:19 mmu notifiers Andrea Arcangeli
2008-01-09 18:19 ` Andrea Arcangeli
     [not found] ` <20080109181908.GS6958-lysg2Xt5kKMAvxtiuMwx3w@public.gmane.org>
2008-01-09 21:54   ` Christoph Lameter
2008-01-09 21:54     ` Christoph Lameter
     [not found]     ` <Pine.LNX.4.64.0801091352320.12335-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-10 11:44       ` Avi Kivity
2008-01-10 11:44         ` [kvm-devel] " Avi Kivity
     [not found]         ` <47860512.3040607-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-10 13:16           ` Robin Holt
2008-01-10 13:16             ` [kvm-devel] " Robin Holt
     [not found]             ` <20080110131612.GA1933-sJ/iWh9BUns@public.gmane.org>
2008-01-10 13:27               ` Avi Kivity
2008-01-10 13:27                 ` [kvm-devel] " Avi Kivity
     [not found]                 ` <47861D3C.6070709-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-10 14:50                   ` Robin Holt
2008-01-10 14:50                     ` [kvm-devel] " Robin Holt
2008-01-10 19:06                   ` Christoph Lameter
2008-01-10 19:06                     ` [kvm-devel] " Christoph Lameter
     [not found]                     ` <Pine.LNX.4.64.0801101105210.20353-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-12 19:56                       ` Avi Kivity
2008-01-12 19:56                         ` [kvm-devel] " Avi Kivity
2008-01-10 19:04           ` Christoph Lameter
2008-01-10 19:04             ` [kvm-devel] " Christoph Lameter
     [not found]             ` <Pine.LNX.4.64.0801101103470.20353-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-12 19:51               ` Avi Kivity
2008-01-12 19:51                 ` [kvm-devel] " Avi Kivity
     [not found]                 ` <47891A5C.8060907-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-13 12:09                   ` Robin Holt
2008-01-13 12:09                     ` [kvm-devel] " Robin Holt
     [not found]                     ` <20080113120939.GA3221-sJ/iWh9BUns@public.gmane.org>
2008-01-13 12:28                       ` Avi Kivity
2008-01-13 12:28                         ` [kvm-devel] " Avi Kivity
     [not found]                         ` <478A03D8.9050308-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-14 19:51                           ` Christoph Lameter
2008-01-14 19:51                             ` [kvm-devel] " Christoph Lameter
     [not found]                             ` <Pine.LNX.4.64.0801141150010.8300-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-15  7:43                               ` Avi Kivity
2008-01-15  7:43                                 ` [kvm-devel] " Avi Kivity
2008-01-14 19:49                   ` Christoph Lameter
2008-01-14 19:49                     ` [kvm-devel] " Christoph Lameter
     [not found]                     ` <Pine.LNX.4.64.0801141148540.8300-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-15  7:38                       ` Avi Kivity
2008-01-15  7:38                         ` [kvm-devel] " Avi Kivity
     [not found]                         ` <478C62F8.2070702-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 17:39                           ` Christoph Lameter
2008-01-15 17:39                             ` [kvm-devel] " Christoph Lameter
     [not found]                             ` <Pine.LNX.4.64.0801150938260.9893-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-15 17:53                               ` Avi Kivity
2008-01-15 17:53                                 ` [kvm-devel] " Avi Kivity
     [not found]                                 ` <478CF30F.1010100-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 17:57                                   ` Christoph Lameter
2008-01-15 17:57                                     ` [kvm-devel] " Christoph Lameter
     [not found]                                     ` <Pine.LNX.4.64.0801150956040.10089-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-15 18:06                                       ` Avi Kivity
2008-01-15 18:06                                         ` [kvm-devel] " Avi Kivity
     [not found]                                         ` <478CF609.3090304-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 18:16                                           ` Christoph Lameter
2008-01-15 18:16                                             ` [kvm-devel] " Christoph Lameter
     [not found]                                             ` <Pine.LNX.4.64.0801151011380.10265-RYO/mD75kfhx2SFC9UQUAuF7EQX82lMiAL8bYrjMMd8@public.gmane.org>
2008-01-16  7:39                                               ` Avi Kivity [this message]
2008-01-16  7:39                                                 ` Avi Kivity
     [not found]                                                 ` <478DB4B3.2000505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-16 18:08                                                   ` Christoph Lameter
2008-01-16 18:08                                                     ` [kvm-devel] " Christoph Lameter

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=478DB4B3.2000505@qumranet.com \
    --to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
    --cc=andrea-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=clameter-sJ/iWh9BUns@public.gmane.org \
    --cc=daniel.blueman-xqY44rlHlBpWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=linux-mm-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.