WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] Protection key support for PV domains

On Mon, Jul 23, 2007 at 02:09:02PM +0200, Dietmar Hahn wrote:

> My problem is, I'am still unsure about the usage model.
> With your suggestion (put pkrs in mapped_regs)  the domU can get the pkr's 
> only with reading the memory, but I believe this isn't used often (In our 
> ported OS we never do this). Therewith the win of performance is only 
> marginal.
> The write can be done by writing to pkrs[] and doing a hypercall with the 
> register number.
> The problem with the pkr is the order in which the cpu-prk's are written from 
> the domU. The hypervisor must take care of the order. Within context_switch() 
> the cpu-pkr's must be loaded from the pkrs[] vector. This must be done in the 
> correct order, because writing a pkr-register leads to invalidating already 
> written registers with the same key.
> Imaginable for better performance would be that the domU writes multiple 
> pkr's 
> in memory, maybe invalidating multiple keys, and only one hypercall is used 
> with a bitmask (one bit for every register). But in this case the order gets 
> lost or we need a special interface, where the domU provides this 
> information. But than the hypercall interface is a lot more complex.
> The other way would be the hypervisor doesn't look at the order and the domU 
> must ensure that no key is twice in pkrs[].
> For our port we won't need the order handling in the hypervisor. But I think 
> a 
> correct implementation should be done.
> 
> 1. pkrs[] in struct arch_vcpu:
>    - hypervisor can simple take care about the order
>    - no new hypercall
>    - mov r=pkrs[], mov pkr[]=r and a hyperprivop
>    - simple domU interfaces
> 2. pkrs[] in struct mapped regs:
>    - not in the ABI.
>    - fast read possible (maybe not really needed)
>    - new hypercall for writing cpu-pkr
>    - mov r=pkrs[], mov pkr[]=r, a hyperprivop and the new hypercall
>    1. if only setting one pkr per hypercall than hypervisor can simple take
>       care of order.
>    2. if setting multiple prks[] per hypercall and handling the order in the
>       hypervisor, than more support from domU needed.
> 
> So what says your long time experience?

Thanks for detailed explanation.
Given that the usage model is unsure, I think the simple way is better.
After it is done, then we can re-consider on whether the more complex
way is necessary or not.

thanks,
-- 
yamahata

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