[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |