[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 04:25:44PM +0100, Roger Pau Monné wrote:
> 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?
> 

I didn't check, because alternative_vcall didn't compile in that case.

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

It didn't even compile. :-(

Wei.

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