On Thu, Jan 30, 2020 at 03:03:03PM +0000, Wei Liu wrote: > On Thu, Jan 30, 2020 at 03:47:04PM +0100, Roger Pau Monné wrote: > > On Thu, Jan 30, 2020 at 02:25:26PM +0000, Wei Liu wrote: > > > On Thu, Jan 30, 2020 at 03:22:01PM +0100, Roger Pau Monné wrote: > > > > On Thu, Jan 30, 2020 at 12:39:20PM +0000, Wei Liu wrote: > > > > > On Thu, Jan 30, 2020 at 01:32:26PM +0100, Roger Pau Monné wrote: > > > > > > On Thu, Jan 30, 2020 at 12:28:36PM +0000, Wei Liu wrote: > > > > > > > On Thu, Jan 30, 2020 at 01:08:07PM +0100, Roger Pau Monné wrote: > > > > > > > > > > > > > > > > > +} > > > > > > > > > + > > > > > > > > > /* > > > > > > > > > * Local variables: > > > > > > > > > * mode: C > > > > > > > > > diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S > > > > > > > > > index 97f9c07891..8e02b4c648 100644 > > > > > > > > > --- a/xen/arch/x86/xen.lds.S > > > > > > > > > +++ b/xen/arch/x86/xen.lds.S > > > > > > > > > @@ -329,6 +329,10 @@ SECTIONS > > > > > > > > > efi = .; > > > > > > > > > #endif > > > > > > > > > > > > > > > > > > +#ifdef CONFIG_HYPERV_GUEST > > > > > > > > > + hv_hcall_page = ABSOLUTE(__fix_x_to_virt(1)); > > > > > > > > > > > > > > > > I assume there's no way to use FIX_X_HYPERV_HCALL because it's > > > > > > > > an > > > > > > > > enum? > > > > > > > > > > > > > > > > > > > > > > Yes. > > > > > > > > > > > > > > And the trick to generate a symbol didn't work either. > > > > > > > > > > > > And you must define that symbol in the linker script? It doesn't > > > > > > seem > > > > > > to be used at link time. > > > > > > > > > > > > > > > > I don't follow. I wish I could define and use a symbol in the linker > > > > > script but couldn't. > > > > > > > > It's likely my fault, as I haven't been following the patch series in > > > > that much detail. I assume this is done in order to generate better > > > > code, rather than doing something like: > > > > > > > > void *hv_hcall_page = fix_x_to_virt(FIX_X_HYPERV_HCALL); > > > > > > > > In a C file somewhere when the hypercall page is setup? > > > > > > Andrew wanted badly to be able to use direct call in the hypercall > > > functions. This is what we managed to come up with so far. > > > > > > I think what you wrote will still result in an indirect call. > > > > > > (The majority of my time spent on this series has been extending Xen to > > > do more than it could before.) > > > > Ack, sorry to bother you with questions you have already answered. Not > > No worries. I value your feedback. And having more people understand > what is going on is important to the project. > > > sure whether defining hv_hcall_page as a global const would make much > > difference. Could you maybe use something like alternative_vcall > > patching to get rid of the indirection? > > Tried that and didn't work either. :-(
How do you check whether there's an indirect call or not when using alternative_vcall? It's my understanding that in that case the patching will happen at runtime, and hence the generated assembly code would still use an indirect call, but once patched at runtime it should become a direct call. Thanks, Roger. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel