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

From: Vitaly Kuznetsov
Date: Mon Apr 10 2017 - 10:45:33 EST


Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> writes:

> Jork Loeser <Jork.Loeser@xxxxxxxxxxxxx> 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!

--
Vitaly