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

Re: [Xen-devel] [PATCH v5 08/12] x86/hyperv: provide Hyper-V hypercall functions



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@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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