The unpack facility provides the means to setup a protected guest. A protected guest cannot be introspected by the hypervisor or any user/administrator of the machine it is running on. Protected guests are encrypted at rest and need a special boot mechanism via diag308 subcode 8 and 10. Code 8 sets the PV specific IPLB which is retained separately from those set via code 5. Code 10 is used to unpack the VM into protected memory, verify its integrity and start it. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Co-developed-by: Christian Borntraeger <borntraeger@de.ibm.com> [Changes to machine] Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20200323083606.24520-1-frankja@linux.ibm.com> [CH: fixed up KVM_PV_VM_ -> KVM_PV_] Signed-off-by: Cornelia Huck <cohuck@redhat.com>
123 lines
1.9 KiB
C
123 lines
1.9 KiB
C
/*
|
|
* QEMU KVM support -- s390x specific function stubs.
|
|
*
|
|
* Copyright (c) 2009 Ulrich Hecht
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "cpu.h"
|
|
#include "kvm_s390x.h"
|
|
|
|
void kvm_s390_access_exception(S390CPU *cpu, uint16_t code, uint64_t te_code)
|
|
{
|
|
}
|
|
|
|
int kvm_s390_mem_op(S390CPU *cpu, vaddr addr, uint8_t ar, void *hostbuf,
|
|
int len, bool is_write)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
void kvm_s390_program_interrupt(S390CPU *cpu, uint16_t code)
|
|
{
|
|
}
|
|
|
|
int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
void kvm_s390_vcpu_interrupt_pre_save(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
int kvm_s390_vcpu_interrupt_post_load(S390CPU *cpu)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int kvm_s390_get_hpage_1m(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int kvm_s390_get_ri(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int kvm_s390_get_gs(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int kvm_s390_get_clock(uint8_t *tod_high, uint64_t *tod_low)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
int kvm_s390_get_clock_ext(uint8_t *tod_high, uint64_t *tod_low)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
int kvm_s390_set_clock(uint8_t tod_high, uint64_t tod_low)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
int kvm_s390_set_clock_ext(uint8_t tod_high, uint64_t tod_low)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
void kvm_s390_enable_css_support(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch,
|
|
int vq, bool assign)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
void kvm_s390_cmma_reset(void)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_reset_vcpu_initial(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_reset_vcpu_clear(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_reset_vcpu_normal(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
int kvm_s390_set_mem_limit(uint64_t new_limit, uint64_t *hw_limit)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void kvm_s390_set_max_pagesize(uint64_t pagesize, Error **errp)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_crypto_reset(void)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_stop_interrupt(S390CPU *cpu)
|
|
{
|
|
}
|
|
|
|
void kvm_s390_restart_interrupt(S390CPU *cpu)
|
|
{
|
|
}
|