[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: Sharing dom0 memory with hypervisor across hypercall

  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: "Mike Sun" <msun@xxxxxxxxxx>
  • Date: Sat, 27 Sep 2008 17:31:10 -0400
  • Delivery-date: Sat, 27 Sep 2008 14:31:36 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=AQjrJEwiRSABpuxj+grcyl5DxRxYf5SbrZx+mm/zS3Gbym4fG+IRTjpGOfxDsS3p8m Xgy8cT/hYbtq5clX8k/KZPCsNt9NeI6y4+B1XWHygEFarQx0u+5kixHSxcEm976JUbCK majrdnFg7+bUo0NRD0DbIX19tb8Xw8FWRQ9BM=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Whoops... nevermind.  I had a stupid bug on my part.  I've gotten it
to work now.

On Sat, Sep 27, 2008 at 4:17 PM, Mike Sun <msun@xxxxxxxxxx> wrote:
> Hi,
> For a research project implementation, I'm trying to allocate a large
> buffer of memory in dom0, which would then be passed to the hypervisor
> during a hypercall.  I've seen examples of this in xc_domain_save
> where a dirty bitmap is passed during a log-dirty hypercall to get the
> log-dirty status of pages.  It seems relatively straightforward in its
> use of guest handles and copy_to_user().
> My situation is different in that the hypervisor must copy to the
> shared memory buffer allocated by dom0 not during the hypervisor call,
> but upon subsequent faults of another guest domain(specifically, page
> faults).  The copy_to_user() method would fail because I would not be
> in dom0's address space, but in a guest domain's address space.
> My approach was to provide a guest handle to the dom0 allocated buffer
> via a hypercall.  The hypercall then determines the mfns of all the
> pages of the dom0 buffer and stores this in a data structure in the
> hypervisor.  The fault handler then maps the buffer pages into the
> hypervisor address space using the mfns previousy determined during
> the hypercall.  The fault handler can then copy into dom0's buffer.
> Am I on the right track or is this not feasible?
> My implementation does not seem to work correctly.  I allocate a
> buffer in dom0 using xg_memalign(), pin it down with lock_pages(), and
> perform a hypercall in which I pass the virtual address of the buffer
> via a guest_handle.  In the hypervisor, the hypercall translates the
> virtual address to an mfn by walking dom0's page tables.  These
> actions seem to work correctly.  The fault handler maps the mfn of the
> buffer using map_domain_page, and a copy is then done.  This seems to
> fail.
> Any ideas?  Have I completely misunderstood something?
> Thanks,
> Mike
> --
> msun@xxxxxxxxxx
> http://msun.bluespot.org

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.