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

Re: [Xen-devel] question regarding foreign memory mapping in xen

On Mon, 2013-05-27 at 22:06 +0900, Sengul Thomas wrote:
> Hello xen developers :)
> I'm reading source codes of xen and got a question in tool-stack part
> and got series of questions:
> In file tools/libxc/xc_linux_osdep.c, function linux_privcmd_map_foreign_bulk,
> I notice that mmap and ioctl IOCTL_PRIVCMD_MMAPBATCH_V2, are used
> for mapping a foreign memory into dom0.
> Is it because mmap is for mapping from /proc/xen/privcmd to dom0 memory and
> ioctl is for mapping from foreign memory (probably domU) into 
> /proc/xen/privcmd?

As far as privcmd is concerned mmap is effectively used as a way to
reserve some virtual address in the current process, while the ioctl is
used to fill it with memory mapped from a foreign domain.

> Also, I am trying to understand how ioctl IOCTL_PRIVCMD_MMAPBATCH_V2 works,
> and it is quite hard.
> In function privcmd_ioctl_mmap_batch, it allocates pages in dom0 side,
> and I don't understand why do we need this allocation.

Just to give us a hole where we can then map the domU page, i.e. it just
gives us the dom0 internal datastructures, like struct page *.

> If we map a page from foreign domain, just changing grant table is not enough?

No because as Andrew says grant tables and privileged foreign maps are
not the same thing.

> Also, I see that in function mmap_batch_fn (i.e., called with the
> newly allocated pages),
> xen_remap_domain_mfn_range function is called.
> Could you tell me what does this function (xen_remap_domain_mfn_range)
> do briefly.

IIRC it calls a callback function for each PTE involved in mapping the
given range of addresses, which we then use to make the foreign mapping.


Xen-devel mailing list



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