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

[Xen-devel] Re: VP problematic for backend drivers on IA64?

On Fri, Jan 20, 2006 at 09:08:21AM -0800, Magenheimer, Dan (HP Labs Fort 
Collins) wrote:
> Hi Muli --
> I'm cc'ing the xen-ia64-devel list as many of the
> Xen/ia64 team don't keep up with xen-devel...

Actually, you didn't :-)

> The backend drivers have a lot of code that assume P2M.
> Blkback has been "ported" to handle P==M but netback
> never was.  Neither has been "ported" to VP yet so there
> is some work to do.  It may turn out to be easy (e.g.
> #define'ing a few macros to be no-ops).  However, there's
> likely to be some subtle changes too as there was for P==M.

Where can I find the diff for blkback to work P==M? is this integrated
into xen-unstable or is it in the IA64 tree?

> But the real problem is not really in the backend drivers,
> it is in the lower layers of the driver stack that the
> backend drivers sit on top of.  VP means that the machine
> addresses are hidden to the domain.  But domain0 (and
> future driver domains) still need to program DMA-capable
> devices, both for any domain0 I/O and for I/O on behalf
> of domU's (via blkfront/blkback).  Thus, domain0 cannot
> really be fully VP.

Linux provides the DMA-API abstraction, so that drivers do not need to
be aware of the deails of translating from a guest-physical address to
a bus address (akak machine address). Theoretically, a DMA-API
implementation is the only part of the dom0 Linux kernel that would
need to know to read the P2M table (P2M) or do nothing (P=M) or call
into Xen to get the tanslation (VP without IOMMU) or call into Xen to
establish an IOMMU mapping (VP w/ IOMMU).

> I think what we discussed at the summit was a modified form
> of VP which is somewhere between VP and P2M.  All RAM
> addressing is VP, but all device addressing needs to be
> P2M.   It was observed that since an IOMMU intercepts all
> device addressing (and only device addressing), by ensuring
> that domain0 (and any driver domain) only has device
> addressing via a "software IOMMU", the problem should be
> solved.

Unless the machine has a real HW IOMMU, the device must see bus
addresses, which means the driver must pass it bus addresses. The
"virtual IOMMU" therefore becomes a DMA-API implementation which calls
into Xen for P->Bus translation.

> That just about exhausts my expertise in this area, so
> others can feel free to jump in (and please correct my
> mistakes).

I think it makes sense. Does IA64 already implement VP dom0? are there
any plans for x86(-64) VP dom0?

Muli Ben-Yehuda
http://www.mulix.org | http://mulix.livejournal.com/

Xen-devel mailing list



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