[PATCH 2/7] x86/hyper-v: fast hypercall implementation

Jork Loeser Jork.Loeser at microsoft.com
Mon Apr 10 17:14:14 UTC 2017


> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets at redhat.com]

> Vitaly Kuznetsov <vkuznets at redhat.com> writes:
> 
> > Jork Loeser <Jork.Loeser at microsoft.com> writes:
> >
> 
> [snip]
> 
> >
> >>> +	}
> >>> +#else
> >>> +	{
> >>> +		u32 hv_status_hi, hv_status_lo;
> >>> +
> >>> +		__asm__ __volatile__ ("call *%6"
> >>> +				      : "=d"(hv_status_hi),
> >>> +					"=a"(hv_status_lo) :
> >>> +					"d" (control.as_uint32_hi),
> >>> +					"a" (control.as_uint32_lo),
> >>> +					"c" ((u32)input1),
> >>> +					"b" ((u32)(input1 >> 32)),
> >>> +					"m" (hv_hypercall_pg)
> >>> +				      : "cc");
> >>> +
> >>> +		return hv_status_lo | ((u64)hv_status_hi << 32);
> >>> +	}
> >>> +#endif
> >> Please clobber ECX, EDI and ESI for x86. Clobber memory as well?
> >
> > ECX is already in listed in inputs (lower part of input1) so it's
> > automatically clobbered. I'll add EDI and ESI to clobbers here, thanks!
> 
> Oh, I see what you mean - hypervisor is allowed to write to ecx too, we need
> to pass it with '+'. Will do, thanks!

Yes, thank you Vitaly!

As for memory clobber, we would want that if there were hypercalls that modify memory and can issued via the "fast" ABI. If there are not, we are fine. 

Regards,
Jork


More information about the devel mailing list