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

Re: [Xen-ia64-devel] RE: [Xen-ia64-full 68] Fwd: Topics to for Xen Summit discussion



Hi Kevin.

On Mon, Jan 09, 2006 at 03:07:38PM +0800, Tian, Kevin wrote:

> >* physical memory support
> >  I agree that phys2mach translation should be adopted.
> 
> Yes.
> 
> >
> >  My implementation proposal is as follows.
> >  Just phys to mach translation is sufficient, and xen tracks their change.
> 
> Not sure what you mean by "sufficient"? ;-) Just a reminder that once p2m 
> concept is added, we have to promise all places aware of existence of this 
> translation if really required, including some core-header files (like DMA) 
> besides para-drivers. Code there has to explicit query this translation by 
> either direct access or hypercall.

My more detailed idea to implement the phys2mach is as follows.

* observation
  - xenlinux/X86 maintains phys2table conversion by itself. not by xen.
    the memory area used for the table is maintained by xenlinux and
    the table is writable for xenlinux.
  - By grepping xenlinux code, I observed that xenlinux modifiles 
    the phys2mach table via set_phys_to_machine() and that 
    set_phys_to_machine() calls are paired with hypercalls
    (xen_machphys_update(), memory op, grant table, update va mapping).
    So I gussed dom0 don't have to write the phys2mach table directly.
    (I can easily miss important things, so I may be wrong.)
  - xen/ia64 already tracks phys2mach conversion by struct arch_domain::mm.
    (currently for domU. dom0 is an exception for now)

* my implementation proposal
  - map xen's arch_domain::mm pte pages to dom0 virtual address space 
    linearly with read-only protection.
    Since pte pages are managed by xen, I think it is reasonable for xen 
    to handles tlb miss by dom0 on the phys2mach table area.
  - leave set_phys_to_machine() as nop.

You seem to have different ideas.
Do you think that it is needed for dom0 to write phys2mach table directly?


> >  There are two implementation candidates.
> >  1. map xen's translation table to dom0 address space like virtual memmap.
> >     Xen handles tlb miss fault to the area instead of dom0.
> >     If dom0 get tlb miss in the area, the mfs is considered INVALID_MFN.
> >     There is a choice to determine the mapping address.
> >     - Xen determines the address, and pass it to dom0 as boot parameter
> >     - add a hyper call for dom0 to map the table at the requested address.
> 
> Could you give a reason why you want Xen to intercept the tlb miss upon that 
> area, instead of letting dom0 manage it directly?
> 
> Since dom0 is anyhow aware of such virtual area, that means dom0 has to 
> allocate and reserve that virtual range explicitly. Xen is not the right one 
> to decide the mapping address out of xenlinux's knowledge. So we still need 
> modify dom0's init code to do such reservation effort. Since that, why not 
> let dom0 setup the mapping itself?

I hope that the above answers these questions.


> Furthermore, there're several cases that xenlinux may shrink/expand the 
> memmap:
>       - Xenlinux may truncate the EFI memmap by some granularity. 
> 
>       - Xenlinux may expand the max pfn to compensate request from backend 
> which may require some empty physical frames.
> 
> Yes, we can add hypercall to let dom0/Xen sync with such info. But there 
> seems no necessity to do that.
> 
> >  2. add a new hyper call which translates phys to mach.
> 
> For performance reason, I prefer to let dom0 access that table directly.

I agreed. 


thanks.
-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

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