mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

When an SVM makes an hypercall or incurs some other exception, the Ultravisor usually forwards (a.k.a. reflects) the exceptions to the Hypervisor. After processing the exception, Hypervisor uses the UV_RETURN ultracall to return control back to the SVM. The expected register state on entry to this ultracall is: * Non-volatile registers are restored to their original values. * If returning from an hypercall, register R0 contains the return value (unlike other ultracalls) and, registers R4 through R12 contain any output values of the hypercall. * R3 contains the ultracall number, i.e UV_RETURN. * If returning with a synthesized interrupt, R2 contains the synthesized interrupt number. Thanks to input from Paul Mackerras, Ram Pai and Mike Anderson. Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Signed-off-by: Claudio Carvalho <cclaudio@linux.ibm.com> Acked-by: Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20190822034838.27876-8-cclaudio@linux.ibm.com
29 lines
618 B
C
29 lines
618 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Ultravisor API.
|
|
*
|
|
* Copyright 2019, IBM Corporation.
|
|
*
|
|
*/
|
|
#ifndef _ASM_POWERPC_ULTRAVISOR_API_H
|
|
#define _ASM_POWERPC_ULTRAVISOR_API_H
|
|
|
|
#include <asm/hvcall.h>
|
|
|
|
/* Return codes */
|
|
#define U_BUSY H_BUSY
|
|
#define U_FUNCTION H_FUNCTION
|
|
#define U_NOT_AVAILABLE H_NOT_AVAILABLE
|
|
#define U_P2 H_P2
|
|
#define U_P3 H_P3
|
|
#define U_P4 H_P4
|
|
#define U_P5 H_P5
|
|
#define U_PARAMETER H_PARAMETER
|
|
#define U_PERMISSION H_PERMISSION
|
|
#define U_SUCCESS H_SUCCESS
|
|
|
|
/* opcodes */
|
|
#define UV_WRITE_PATE 0xF104
|
|
#define UV_RETURN 0xF11C
|
|
|
|
#endif /* _ASM_POWERPC_ULTRAVISOR_API_H */
|