On 3/7/2025 1:36 PM, Nuno Das Neves wrote: > On 3/6/2025 11:05 AM, Michael Kelley wrote: >> From: Nuno Das Neves <nunodasneves@xxxxxxxxxxxxxxxxxxx> Sent: Thursday, February 27, 2025 4:21 PM >>> >>> On 2/26/2025 9:56 PM, Easwar Hariharan wrote: >>>> On 2/26/2025 3:07 PM, Nuno Das Neves wrote: >>>>> These non-nested msr and fast hypercall functions are present in x86, >>>>> but they must be available in both architetures for the root partition >>>> >>>> nit: *architectures* >>>> >>>> >>> Thanks! >>> >>>>> driver code. >>>>> >>>>> Signed-off-by: Nuno Das Neves <nunodasneves@xxxxxxxxxxxxxxxxxxx> >>>>> --- >>>>> arch/arm64/hyperv/hv_core.c | 17 +++++++++++++++++ >>>>> arch/arm64/include/asm/mshyperv.h | 12 ++++++++++++ >>>>> include/asm-generic/mshyperv.h | 2 ++ >>>>> 3 files changed, 31 insertions(+) >>>>> >>>>> diff --git a/arch/arm64/hyperv/hv_core.c b/arch/arm64/hyperv/hv_core.c >>>>> index 69004f619c57..e33a9e3c366a 100644 >>>>> --- a/arch/arm64/hyperv/hv_core.c >>>>> +++ b/arch/arm64/hyperv/hv_core.c >>>>> @@ -53,6 +53,23 @@ u64 hv_do_fast_hypercall8(u16 code, u64 input) >>>>> } >>>>> EXPORT_SYMBOL_GPL(hv_do_fast_hypercall8); >>>>> >>>>> +/* >>>>> + * hv_do_fast_hypercall16 -- Invoke the specified hypercall >>>>> + * with arguments in registers instead of physical memory. >>>>> + * Avoids the overhead of virt_to_phys for simple hypercalls. >>>>> + */ >>>>> +u64 hv_do_fast_hypercall16(u16 code, u64 input1, u64 input2) >>>>> +{ >>>>> + struct arm_smccc_res res; >>>>> + u64 control; >>>>> + >>>>> + control = (u64)code | HV_HYPERCALL_FAST_BIT; >>>>> + >>>>> + arm_smccc_1_1_hvc(HV_FUNC_ID, control, input1, input2, &res); >>>>> + return res.a0; >>>>> +} >>>>> +EXPORT_SYMBOL_GPL(hv_do_fast_hypercall16); >>>>> + >>>> >>>> I'd like this to have been in arch/arm64/include/asm/mshyperv.h like its x86 >>>> counterpart, but that's just my personal liking of symmetry. I see why it's here >>>> with its slow and 8-byte brethren. >>>> >>> Good point, I don't see a good reason this can't be in the header. >> >> I was trying to remember if there was some reason I originally put >> hv_do_hypercall() and hv_do_fast_hypercall8() in the .c file instead of >> the header like on x86. But I don't remember a reason. During >> development, the code changed several times, and there might have >> been a reason that didn't persistent in the version that was finally >> accepted upstream. >> >> My only comment is that hv_do_hypercall() and the 8 and 16 "fast" >> versions should probably stay together one place on the arm64 side, >> even if it doesn't match x86. >> > > I think I'll just keep them together here for now then. They > could be moved to the header in future if it seems worth doing. > I was really hoping the answer here would be to move all of them together to the header, but oh well. <snip>