|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|