[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: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. :-(

> 
> I have to admit I find this all quite hard to follow and reason about,
> likely because of the mix of C, assembly, and linker script to build
> this machinery, but that doesn't mean this isn't the best way.
> 

Yes, a lot of trickeries are used to make this work. Not the most
elegant combination I would say, but it does achieve what is desired.

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