KVM: PPC: Book3S HV: Implement H_SVM_INIT_ABORT hcall
authorSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Tue, 7 Jan 2020 02:02:37 +0000 (18:02 -0800)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 17 Jan 2020 04:08:31 +0000 (15:08 +1100)
commit3a43970d55e9fd5475d3c4e5fe398ab831ec6c3a
treed2b2e31e51d8e1017ed7178bfb903beb49af1744
parentce477a7a1cdfc9aaafcfd03b45bde131a88d51de
KVM: PPC: Book3S HV: Implement H_SVM_INIT_ABORT hcall

Implement the H_SVM_INIT_ABORT hcall which the Ultravisor can use to
abort an SVM after it has issued the H_SVM_INIT_START and before the
H_SVM_INIT_DONE hcalls. This hcall could be used when Ultravisor
encounters security violations or other errors when starting an SVM.

Note that this hcall is different from UV_SVM_TERMINATE ucall which
is used by HV to terminate/cleanup an VM that has becore secure.

The H_SVM_INIT_ABORT basically undoes operations that were done
since the H_SVM_INIT_START hcall - i.e page-out all the VM pages back
to normal memory, and terminate the SVM.

(If we do not bring the pages back to normal memory, the text/data
of the VM would be stuck in secure memory and since the SVM did not
go secure, its MSR_S bit will be clear and the VM wont be able to
access its pages even to do a clean exit).

Based on patches and discussion with Paul Mackerras, Ram Pai and
Bharata Rao.

Signed-off-by: Ram Pai <linuxram@linux.ibm.com>
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Documentation/powerpc/ultravisor.rst
arch/powerpc/include/asm/hvcall.h
arch/powerpc/include/asm/kvm_book3s_uvmem.h
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv_uvmem.c