All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Cam Macdonell <cam@cs.ualberta.ca>, kvm@vger.kernel.org
Subject: Re: [PATCH] Add shared memory PCI device that shares a memory object betweens VMs
Date: Thu, 02 Apr 2009 10:05:24 +0300	[thread overview]
Message-ID: <49D463B4.1080309@redhat.com> (raw)
In-Reply-To: <49D3B7ED.4030303@codemonkey.ws>

Anthony Liguori wrote:
>> I disagree with this.  While virtio is excellent at exporting guest 
>> memory, it isn't so good at importing another guest's memory.
>
> First we need to separate static memory sharing and dynamic memory 
> sharing.  Static memory sharing has to be configured on start up.  I 
> think in practice, static memory sharing is not terribly interesting 
> except for maybe embedded environments.
>
> Dynamically memory sharing requires bidirectional communication in 
> order to establish mappings and tear down mappings.  You'll eventually 
> recreate virtio once you've implemented this communication mechanism.
>

I guess that depends on what one uses share memory for.

Cam?

>>>   The second is that I think instead of relying on mapping in device 
>>> memory to the guest, you should have the guest allocate it's own 
>>> memory to dedicate to sharing.
>>
>> That's not what you describe below.  You're having the guest allocate 
>> parts of its address space that happen to be used by RAM, and 
>> overlaying those parts with the shared memory.
>
> But from the guest's perspective, it's RAM is being used for memory 
> sharing.
>
> If you're clever, you could start a guest with -mem-path and then use 
> this mechanism to map a portion of one guest's memory into another 
> guest without either guest ever knowing who "owns" the memory and with 
> exactly the same driver on both.
>

If it's part of the normal address space, it will just confuse the 
guest.  Consider for example a reboot.

Shared memory is not normal RAM!

>>> Right now, you've got a bit of a hole in your implementation because 
>>> you only support files that are powers-of-two in size even though 
>>> that's not documented/enforced.  This is a limitation of PCI 
>>> resource regions.  
>>
>> While the BAR needs to be a power of two, I don't think the RAM 
>> backing it needs to be.
>
> Then you need a side channel to communicate the information to the guest.

There is the PCI config space for that.

>>> Since you're using qemu_ram_alloc() also, it makes hotplug 
>>> unworkable too since qemu_ram_alloc() is a static allocation from a 
>>> contiguous heap.
>>
>> We need to fix this anyway, for memory hotplug.
>
> It's going to be hard to "fix" with TCG.
>

Why?  Instead of an offset against phys_ram_base you'd store an offset 
against (char *)0 in the tlb.  Where do you see an issue?

>>
>> That will fragment the vma list.  And what do you do when you unmap 
>> the region?

^^^

>>
>> How does a 256M guest map 1G of shared memory?
>
> It doesn't but it couldn't today either b/c of the 32-bit BARs.

Let's compare the two approaches, not how they fit or don't fit random 
qemu limitations which need lifting anyway.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


  parent reply	other threads:[~2009-04-02  7:04 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-01 15:43 [PATCH] Add shared memory PCI device that shares a memory object betweens VMs Cam Macdonell
2009-04-01 16:29 ` Anthony Liguori
2009-04-01 18:07   ` Avi Kivity
2009-04-01 18:52     ` Anthony Liguori
2009-04-01 20:32       ` Cam Macdonell
2009-04-02  7:07         ` Avi Kivity
2009-04-03 16:54           ` Cam Macdonell
2009-04-02  7:05       ` Avi Kivity [this message]
2009-04-19  5:22       ` Cameron Macdonell
2009-04-19 10:26         ` Avi Kivity
     [not found]           ` <f3b32c250904202348t6514d3efjc691b48c4dafe76a@mail.gmail.com>
2009-04-22 22:41             ` Cam Macdonell
     [not found]               ` <f3b32c250904222355y687c39ecl11c52267a1ea7386@mail.gmail.com>
2009-04-23 16:28                 ` Cam Macdonell

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=49D463B4.1080309@redhat.com \
    --to=avi@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=cam@cs.ualberta.ca \
    --cc=kvm@vger.kernel.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.