|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-ia64-devel
RE: [Xen-ia64-devel] per hypervisor IVT table vs. global IVT table
 
Dong, Eddie wrote:
> All:
>       If we use single IVT table, the pv_ops code will look like:
> 
> ALT0:
>       breg0 = pv_ops base
>       breg0 += offset for this pv_ops
>       breg1 = return address;
>       br  breg0.              /* pv_ops clobbered breg0/breg1 */
> 
>       That means we have to use 2 BR clobber register.
> 
>       Or we can use X86 hypercall page like technique to copy those
> hooks
> to a common page to avoid breg0. This make ALT0 same with following
> ALT1.
> 
>       If we use per hypervisor IVT table at compile time. We could do:
> 
> ALT1:
> #define ASM_READ_IVR
> #if XEN
>       breg1 = return address
>       br    pv_ops_api_readivr
> #endif
>       When pv_ops_api_readivr is hooked, it do read_ivr_code.
> 
>       Or we can just do:
> 
> ALT2:
> #define ASM_READ_IVR
> #ifdef XEN
>       read_ivr_code
> #endif
> 
>       ALT1 is more like X86 pv_ops that some initialization code will
> hook,
> ALT2 can save an additional br register, and thus probably less change
> to Linux
> IVT code.
>       In terms of former approach, binary patching can patch ALT1 code
> back
> to ALT2 solutuon to avoid the indirection call cost if we follow same
> approach
> with X86.
>       Which ALT should we pursue first?
> thx, eddie
> 
Nobody is interested? Any comments?
thx, eddie
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
 
 |   
 
 | 
    | 
  
  
    |   | 
    |