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

Re: [Xen-devel] [PATCH v4 3/7] x86/hyperv: provide Hyper-V hypercall functions



On Thu, Jan 23, 2020 at 11:13:10AM +0100, Jan Beulich wrote:
> On 22.01.2020 22:57, Andrew Cooper wrote:
> > On 22/01/2020 20:23, Wei Liu wrote:
> >> These functions will be used later to make hypercalls to Hyper-V.
> >>
> >> Signed-off-by: Wei Liu <liuwe@xxxxxxxxxxxxx>
> > 
> > After some experimentation,
> > 
> > diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
> > index cbc5701214..3708a60b5c 100644
> > --- a/xen/arch/x86/xen.lds.S
> > +++ b/xen/arch/x86/xen.lds.S
> > @@ -329,6 +329,8 @@ SECTIONS
> >    efi = .;
> >  #endif
> >  
> > +  hv_hcall_page = ABSOLUTE(0xffff82d0bfffe000);
> > +
> >    /* Sections to be discarded */
> >    /DISCARD/ : {
> >         *(.exit.text)
> > 
> > in the linker script lets direct calls work correctly:
> > 
> > ffff82d080637935:       b9 01 00 00 40          mov    $0x40000001,%ecx
> > ffff82d08063793a:       0f 30                   wrmsr 
> > ffff82d08063793c:       ba 21 03 00 00          mov    $0x321,%edx
> > ffff82d080637941:       bf 01 00 00 00          mov    $0x1,%edi
> > ffff82d080637946:       e8 ac 4f c7 ff          callq  ffff82d0802ac8f7
> > <__set_fixmap_x>
> > ffff82d08063794b:       41 b8 00 00 00 00       mov    $0x0,%r8d
> > ffff82d080637951:       b9 ff ff 00 00          mov    $0xffff,%ecx
> > ffff82d080637956:       ba 00 00 00 00          mov    $0x0,%edx
> > ffff82d08063795b:       e8 a0 66 9c 3f          callq  ffff82d0bfffe000
> > <hv_hcall_page>
> > ffff82d080637960:       66 83 f8 02             cmp    $0x2,%ax
> > 
> > but it does throw:
> > 
> > Difference at .init:00032edf is 0xc0000000 (expected 0x40000000)
> > Difference at .init:00032edf is 0xc0000000 (expected 0x40000000)
> > 
> > as a diagnostic presumably from the final link  (both with a standard
> > Debian 2.28 binutils, and upstream 2.33 build).  I'm not sure what its
> > trying to complain about, as both xen.gz and xen.efi have correctly
> > generated code.
> > 
> > Depending on whether they are benign or not, a linker-friendly
> > fix_to_virt() should be all we need to keep these strictly as direct calls.
> 
> They're benign in the particular case of them actually resulting
> from relative CALLs, which hence require no relocation to be
> recorded in xen.efi's .reloc section. But they should nevertheless
> be silenced. We've been discussing this on irc, iirc. The absolute
> address used wants to move by 1Gb for the $(ALT_BASE) intermediate
> linking step.

FWIW I don't see those messages with my current code.

Wei.

> 
> Jan

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