| /linux/Documentation/virt/kvm/x86/ |
| H A D | hypercalls.rst | 4 Linux KVM Hypercall 13 The hypercall number should be placed in rax and the return value will be 15 by the particular hypercall. 18 R2-R7 are used for parameters 1-6. In addition, R1 is used for hypercall 21 S390 uses diagnose instruction as hypercall (0x500) along with hypercall 28 It uses R3-R10 and hypercall number in R11. R4-R11 are used as output registers. 31 KVM hypercalls uses 4 byte opcode, that are patched with 'hypercall-instructions' 36 KVM hypercalls use the HYPCALL instruction with code 0 and the hypercall 43 The template for each hypercall is: 44 1. Hypercall name. [all …]
|
| /linux/arch/arm/xen/ |
| H A D | hypercall.S | 2 * hypercall.S 4 * Xen hypercall wrappers 34 * The Xen hypercall calling convention is very similar to the ARM 41 * The hypercall number is passed in r12. 46 * hypercall tag. 57 #define HYPERCALL_SIMPLE(hypercall) \ argument 58 ENTRY(HYPERVISOR_##hypercall) \ 59 mov r12, #__HYPERVISOR_##hypercall; \ 62 ENDPROC(HYPERVISOR_##hypercall) 70 #define HYPERCALL5(hypercall) \ argument [all …]
|
| /linux/Documentation/virt/kvm/loongarch/ |
| H A D | hypercalls.rst | 7 KVM hypercalls use the HVCL instruction with code 0x100 and the hypercall 30 KVM hypercall ABI 33 The KVM hypercall ABI is simple, with one scratch register a0 (v0) and at most 36 remain unmodified during a hypercall. 38 Hypercall functions can be inlined as it only uses one scratch register. 59 -1 Hypercall not implemented 60 -2 Bad Hypercall parameter 66 The template for each hypercall is as follows: 68 1. Hypercall name 81 The hypercall lets a guest send multiple IPIs (Inter-Process Interrupts) with [all …]
|
| /linux/Documentation/virt/kvm/ |
| H A D | ppc-pv.rst | 35 'hypercall-instructions'. This property contains at most 4 opcodes that make 36 up the hypercall. To call a hypercall, just call these instructions. 52 r11 hypercall number 8th output value 56 Hypercall definitions are shared in generic code, so the same hypercall numbers 57 apply for x86 and powerpc alike with the exception that each KVM hypercall 66 12 Hypercall not implemented 75 map this shared page using the KVM hypercall KVM_HC_PPC_MAP_MAGIC_PAGE. 77 With this hypercall issued the guest always gets the magic page mapped at the 88 also define a new hypercall feature to indicate that the host can give you more 97 When mapping the magic page using the KVM hypercall KVM_HC_PPC_MAP_MAGIC_PAGE, [all …]
|
| /linux/Documentation/arch/powerpc/ |
| H A D | ultravisor.rst | 173 registers not needed for the hypercall then reflects the call to 174 the hypervisor for processing. The H_RANDOM hypercall is performed 323 ``H_SVM_PAGE_OUT`` hypercall to the Hypervisor. The Hypervisor will 510 processing an hypercall or interrupt that was forwarded (aka 529 When an SVM makes an hypercall or incurs some other exception, the 537 * If returning from an hypercall, register R0 contains the return 539 contain any output values of the hypercall. 548 the SVM such as processing hypercall and other exceptions. After 864 additional parameters to the hypercall, if any. On output, register 866 other output values from the hypercall. [all …]
|
| /linux/arch/x86/xen/ |
| H A D | xen-head.S | 70 * Xen hypercall interface to the hypervisor. 73 * %eax: hypercall number 75 * %ebx, %ecx, %edx, %esi, %edi: args 1..5 for the hypercall 77 * %rdi, %rsi, %rdx, %r10, %r8: args 1..5 for the hypercall 128 /* Use correct hypercall function. */
|
| H A D | trace.c | 6 #define HYPERCALL(x) [__HYPERVISOR_##x] = "("#x")", macro 10 #undef HYPERCALL
|
| H A D | xen-asm.S | 28 * PV hypercall interface to the hypervisor. 33 * %eax: hypercall number 34 * %rdi, %rsi, %rdx, %r10, %r8: args 1..5 for the hypercall 60 * Force an event check by making a hypercall, but preserve regs
|
| /linux/tools/testing/selftests/kvm/include/x86/ |
| H A D | hyperv.h | 235 /* hypercall status code */ 248 /* hypercall options */ 254 * Issue a Hyper-V hypercall. Returns exception vector raised or 0, 'hv_status' 255 * is set to the hypercall status (if no exception occurred). 264 /* Note both the hypercall and the "asm safe" clobber r9-r11. */ in __hyperv_hypercall() 276 /* Issue a Hyper-V hypercall and assert that it succeeded. */ 289 /* Write 'Fast' hypercall input 'data' to the first 'n_sse_regs' SSE regs */
|
| /linux/drivers/hv/ |
| H A D | hv_common.c | 368 * Allocate the per-CPU state for the hypercall input arg. in hv_common_init() 370 * (per-CPU) hypercall input page and thus this failure is in hv_common_init() 516 * use hyperv_pcpu_input_arg as the hypercall input page, which in hv_common_cpu_init() 523 * which may be slightly slower than the hypercall, but still in hv_common_cpu_init() 577 * output parameter to the hypercall below and so it should be in hv_query_ext_cap() 582 * Hypercall input/output addresses should also be 8-byte aligned. in hv_query_ext_cap() 589 * Querying extended capabilities is an extended hypercall. Check if the in hv_query_ext_cap() 590 * partition supports extended hypercall, first. in hv_query_ext_cap() 603 * The query extended capabilities hypercall should not fail under in hv_query_ext_cap() 604 * any normal circumstances. Avoid repeatedly making the hypercall, on in hv_query_ext_cap() [all …]
|
| /linux/Documentation/virt/kvm/arm/ |
| H A D | hyp-abi.rst | 59 This hypercall is not expected to return to its caller. 74 The return value of a stub hypercall is held by r0/x0, and is 0 on 75 success, and HVC_STUB_ERR on error. A stub hypercall is allowed to 78 the hypercall.
|
| /linux/arch/x86/include/asm/ |
| H A D | vmware.h | 10 * VMware hypercall ABI. 18 * arg2 - Hypercall command 33 * arg1 - Hypercall command 39 * The hypercall definitions differ in the low word of the %edx (arg3) 64 * Hypercall command mask: 265 * low bandwidth hypercall if memory encryption is set. 266 * This assumption simplifies HB hypercall implementation to just I/O port
|
| /linux/include/xen/interface/ |
| H A D | physdev.h | 7 * Prototype for this hypercall is: 33 * guest must issue PHYSDEVOP_eoi. This hypercall is very similar to 178 * Argument to physdev_op_compat() hypercall. Superceded by new physdev_op() 179 * hypercall since 0x00030202. 209 * the hypercall returns a free pirq */
|
| H A D | sched.h | 24 * The prototype for this hypercall is: 32 * of this hypercall, supporting only the commands yield, block and shutdown: 63 * of the guest's start info page. RDX/EDX is the third hypercall 66 * In addition, which reason is SHUTDOWN_suspend this hypercall
|
| /linux/tools/testing/selftests/kvm/x86/ |
| H A D | private_mem_conversions_test.c | 53 * Execute KVM hypercall to map/unmap gpa range which will cause userspace exit 292 gpa_t gpa = run->hypercall.args[0]; in handle_exit_hypercall() 293 u64 size = run->hypercall.args[1] * PAGE_SIZE; in handle_exit_hypercall() 294 bool set_attributes = run->hypercall.args[2] & MAP_GPA_SET_ATTRIBUTES; in handle_exit_hypercall() 295 bool map_shared = run->hypercall.args[2] & MAP_GPA_SHARED; in handle_exit_hypercall() 296 bool do_fallocate = run->hypercall.args[2] & MAP_GPA_DO_FALLOCATE; in handle_exit_hypercall() 299 TEST_ASSERT(run->hypercall.nr == KVM_HC_MAP_GPA_RANGE, in handle_exit_hypercall() 301 KVM_HC_MAP_GPA_RANGE, run->hypercall.nr); in handle_exit_hypercall() 309 run->hypercall.ret = 0; in handle_exit_hypercall()
|
| H A D | hyperv_extended_hypercalls.c | 3 * Test Hyper-V extended hypercall, HV_EXT_CALL_QUERY_CAPABILITIES (0x8001), 59 /* Hypercall input */ in main() 63 /* Hypercall output */ in main()
|
| H A D | fix_hypercall_test.c | 70 * -EFAULT and that KVM did NOT patch the hypercall. If the quirk is in guest_main() 71 * enabled, verify that the hypercall succeeded and that KVM patched in in guest_main() 72 * the "right" hypercall. in guest_main()
|
| /linux/include/uapi/linux/ |
| H A D | mshv.h | 73 * partition hypercall. 224 * @code: Hypercall code (HVCALL_*) 230 * out: HV_STATUS_* from hypercall 255 /* Generic hypercall */ 322 * Generic hypercall 374 __u64 control; /* Hypercall control code */ 377 __u64 status; /* Status of the hypercall (output) */
|
| /linux/arch/s390/include/asm/ |
| H A D | kvm_para.h | 12 * as hypercall number and R7 as parameter 6. The return value is 13 * written to R2. We use the diagnose instruction as hypercall. To avoid 16 * use 0x500 as KVM hypercall
|
| /linux/scripts/ |
| H A D | xen-hypercalls.sh | 11 END { print "/* auto-generated by scripts/xen-hypercall.sh */" 13 print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out
|
| /linux/tools/testing/selftests/kvm/arm64/ |
| H A D | smccc_filter.c | 227 TEST_ASSERT(run->hypercall.nr == func_id, in expect_call_fwd_to_user() 228 "Unexpected SMCCC function: %llu", run->hypercall.nr); in expect_call_fwd_to_user() 231 TEST_ASSERT(run->hypercall.flags & KVM_HYPERCALL_EXIT_SMC, in expect_call_fwd_to_user() 234 TEST_ASSERT(!(run->hypercall.flags & KVM_HYPERCALL_EXIT_SMC), in expect_call_fwd_to_user()
|
| /linux/arch/mips/kvm/ |
| H A D | hypcall.c | 6 * KVM/MIPS: Hypercall handling. 35 /* Report unimplemented hypercall to guest */ in kvm_mips_hypercall()
|
| /linux/drivers/xen/ |
| H A D | privcmd-buf.c | 6 * Mmap of hypercall buffers. 22 MODULE_DESCRIPTION("Xen Mmap of hypercall buffers"); 190 .name = "xen/hypercall",
|
| H A D | pci.c | 17 #include <asm/xen/hypercall.h> 49 * The hypercall interface is limited to 16bit PCI segment in xen_add_device() 166 * The hypercall interface is limited to 16bit PCI segment in xen_remove_device() 209 * The hypercall interface is limited to 16bit PCI segment in xen_reset_device()
|
| /linux/arch/powerpc/include/asm/ |
| H A D | epapr_hcalls.h | 40 /* A "hypercall" is an "sc 1" instruction. This header file provides C 46 * the caller to issue the hypercall instruction directly, improving both 61 * Hypercall register clobber list 64 * hypercall. Technically, registers r0 and r3-r12 are always clobbered, 68 * parameters ("+r" and "=r") passed to the hypercall. 120 * initialized before making the hypercall are input/output. All 123 * clobber list will tell the compiler that the hypercall modifies those
|