[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
> 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
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
I think it makes sense. Does IA64 already implement VP dom0? are there
any plans for x86(-64) VP dom0?
http://www.mulix.org | http://mulix.livejournal.com/
Xen-devel mailing list