On Wed, Dec 03, 2008 at 09:31:41AM +0000, Jan Beulich wrote:
> >>> Isaku Yamahata <yamahata@xxxxxxxxxxxxx> 03.12.08 10:20 >>>
> >Yes, you're correct. In fact I had the patch which you suggested,
> >but I was hesitated to change the x86 implementation so that
> >I had changed it to use virt_to_bus() on x86.
> >
> >
> >
> >evtchn, physdev: fix pirq_eoi_mfn for IA64 support.
> >
> >On ia64, global variables aren't in identity mapping area (i.e. kaddr)
> >so that there is no relationship between its virtual address and
> >its physical address. Thus virt_to_bus() can't be applied to them.
> >So introduce arbitrary_virt_to_bus() to wrap arch dependent function
> >and make use of it.
>
> So you really need arbitrary_virt_to_bus() along with
> arbitrary_virt_to_machine()? Is that another ia64 specific need (i.e. do
> the two have different meanings there)?
Yes.
On x86, both MMU and DMA is paravirtualized so that machine address and
bus address have same meaning. So sometimes bus address and machine
address are abused.
On the other hand on ia64 MMU is fully virtualized (i.e. auto translated
phsymap mode enabled) and DMA is paravirtualized.
So addresses for MMU and DMA have to be distinguished.
xxx_to_machine() is used for MMU and xxx_to_bus() is used for DMA.
I think once x86 implements auto translated mode for pv guest,
the similar issue would arise.
--
yamahata
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|