You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
KVM: PPC: Book3S: Controls for in-kernel sPAPR hypercall handling
This provides a way for userspace controls which sPAPR hcalls get handled in the kernel. Each hcall can be individually enabled or disabled for in-kernel handling, except for H_RTAS. The exception for H_RTAS is because userspace can already control whether individual RTAS functions are handled in-kernel or not via the KVM_PPC_RTAS_DEFINE_TOKEN ioctl, and because the numeric value for H_RTAS is out of the normal sequence of hcall numbers. Hcalls are enabled or disabled using the KVM_ENABLE_CAP ioctl for the KVM_CAP_PPC_ENABLE_HCALL capability on the file descriptor for the VM. The args field of the struct kvm_enable_cap specifies the hcall number in args[0] and the enable/disable flag in args[1]; 0 means disable in-kernel handling (so that the hcall will always cause an exit to userspace) and 1 means enable. Enabling or disabling in-kernel handling of an hcall is effective across the whole VM. The ability for KVM_ENABLE_CAP to be used on a VM file descriptor on PowerPC is new, added by this commit. The KVM_CAP_ENABLE_CAP_VM capability advertises that this ability exists. When a VM is created, an initial set of hcalls are enabled for in-kernel handling. The set that is enabled is the set that have an in-kernel implementation at this point. Any new hcall implementations from this point onwards should not be added to the default set without a good reason. No distinction is made between real-mode and virtual-mode hcall implementations; the one setting controls them both. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
committed by
Alexander Graf
parent
1f0eeb7e1a
commit
699a0ea082
@@ -2863,8 +2863,8 @@ The fields in each entry are defined as follows:
|
||||
this function/index combination
|
||||
|
||||
|
||||
6. Capabilities that can be enabled
|
||||
-----------------------------------
|
||||
6. Capabilities that can be enabled on vCPUs
|
||||
--------------------------------------------
|
||||
|
||||
There are certain capabilities that change the behavior of the virtual CPU when
|
||||
enabled. To enable them, please see section 4.37. Below you can find a list of
|
||||
@@ -3002,3 +3002,40 @@ Parameters: args[0] is the XICS device fd
|
||||
args[1] is the XICS CPU number (server ID) for this vcpu
|
||||
|
||||
This capability connects the vcpu to an in-kernel XICS device.
|
||||
|
||||
|
||||
7. Capabilities that can be enabled on VMs
|
||||
------------------------------------------
|
||||
|
||||
There are certain capabilities that change the behavior of the virtual
|
||||
machine when enabled. To enable them, please see section 4.37. Below
|
||||
you can find a list of capabilities and what their effect on the VM
|
||||
is when enabling them.
|
||||
|
||||
The following information is provided along with the description:
|
||||
|
||||
Architectures: which instruction set architectures provide this ioctl.
|
||||
x86 includes both i386 and x86_64.
|
||||
|
||||
Parameters: what parameters are accepted by the capability.
|
||||
|
||||
Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
|
||||
are not detailed, but errors with specific meanings are.
|
||||
|
||||
|
||||
7.1 KVM_CAP_PPC_ENABLE_HCALL
|
||||
|
||||
Architectures: ppc
|
||||
Parameters: args[0] is the sPAPR hcall number
|
||||
args[1] is 0 to disable, 1 to enable in-kernel handling
|
||||
|
||||
This capability controls whether individual sPAPR hypercalls (hcalls)
|
||||
get handled by the kernel or not. Enabling or disabling in-kernel
|
||||
handling of an hcall is effective across the VM. On creation, an
|
||||
initial set of hcalls are enabled for in-kernel handling, which
|
||||
consists of those hcalls for which in-kernel handlers were implemented
|
||||
before this capability was implemented. If disabled, the kernel will
|
||||
not to attempt to handle the hcall, but will always exit to userspace
|
||||
to handle it. Note that it may not make sense to enable some and
|
||||
disable others of a group of related hcalls, but KVM does not prevent
|
||||
userspace from doing that.
|
||||
|
||||
Reference in New Issue
Block a user