Re: [PATCH v6 4/4] x86/acrn: Add hypercall for ACRN guest

From: Zhao, Yakui
Date: Sun May 26 2019 - 23:04:15 EST




On 2019å05æ15æ 15:37, Borislav Petkov wrote:
On Tue, Apr 30, 2019 at 11:45:26AM +0800, Zhao Yakui wrote:
When the ACRN hypervisor is detected, the hypercall is needed so that the
ACRN guest can query/config some settings. For example: it can be used
to query the resources in hypervisor and manage the CPU/memory/device/
interrupt for guest operating system.

Add the hypercall so that the ACRN guest can communicate with the
low-level ACRN hypervisor. On x86 it is implemented with the VMCALL
instruction.

Co-developed-by: Jason Chen CJ <jason.cj.chen@xxxxxxxxx>
Signed-off-by: Jason Chen CJ <jason.cj.chen@xxxxxxxxx>
Signed-off-by: Zhao Yakui <yakui.zhao@xxxxxxxxx>
Reviewed-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
---
V1->V2: Refine the comments for the function of acrn_hypercall0/1/2
v2->v3: Use the "vmcall" mnemonic to replace hard-code byte definition
v4->v5: Use _ASM_X86_ACRN_HYPERCALL_H instead of _ASM_X86_ACRNHYPERCALL_H.
Use the "VMCALL" mnemonic in comment/commit log.
Uppercase r8/rdi/rsi/rax for hypercall parameter register in comment.
v5->v6: Remove explicit local register variable for inline assembly
---
arch/x86/include/asm/acrn_hypercall.h | 84 +++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
create mode 100644 arch/x86/include/asm/acrn_hypercall.h

diff --git a/arch/x86/include/asm/acrn_hypercall.h b/arch/x86/include/asm/acrn_hypercall.h
new file mode 100644
index 0000000..5cb438e
--- /dev/null
+++ b/arch/x86/include/asm/acrn_hypercall.h

Questions:

* why isn't this in acrn.h and needs to be a separate header?

I refer to the Xen/KVM hypercall to add the ACRN hypercall in one separate header.

The ACRN hypercall is defined in one separate acrn_hypercall.h and can be included explicitly by the *.c that needs the hypercall.



* why aren't those functions used anywhere?

The hypercall will be used in driver part. Before the driver part is added, it seems that the defined ACRN hypercall functions are not used.
Do I need to add these functions together with driver part?

Thanks
Yakui