KVM: s390: ucontrol: interface to inject faults on a vcpu page table
This patch allows the user to fault in pages on a virtual cpus address space for user controlled virtual machines. Typically this is superfluous because userspace can just create a mapping and let the kernel's page fault logic take are of it. There is one exception: SIE won't start if the lowcore is not present. Normally the kernel takes care of this [handle_validity() in arch/s390/kvm/intercept.c] but since the kernel does not handle intercepts for user controlled virtual machines, userspace needs to be able to handle this condition. Signed-off-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:

committed by
Avi Kivity

vanhempi
d6b6d16686
commit
ccc7910fe5
@@ -1539,6 +1539,22 @@ This ioctl unmaps the memory in the vcpu's address space starting at
|
||||
"vcpu_addr" with the length "length". The field "user_addr" is ignored.
|
||||
All parameters need to be alligned by 1 megabyte.
|
||||
|
||||
4.66 KVM_S390_VCPU_FAULT
|
||||
|
||||
Capability: KVM_CAP_S390_UCONTROL
|
||||
Architectures: s390
|
||||
Type: vcpu ioctl
|
||||
Parameters: vcpu absolute address (in)
|
||||
Returns: 0 in case of success
|
||||
|
||||
This call creates a page table entry on the virtual cpu's address space
|
||||
(for user controlled virtual machines) or the virtual machine's address
|
||||
space (for regular virtual machines). This only works for minor faults,
|
||||
thus it's recommended to access subject memory page via the user page
|
||||
table upfront. This is useful to handle validity intercepts for user
|
||||
controlled virtual machines to fault in the virtual cpu's lowcore pages
|
||||
prior to calling the KVM_RUN ioctl.
|
||||
|
||||
5. The kvm_run structure
|
||||
|
||||
Application code obtains a pointer to the kvm_run structure by
|
||||
|
Viittaa uudesa ongelmassa
Block a user