Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
qemu.19805
0048-kvm-introduce-memory-encryption-API.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0048-kvm-introduce-memory-encryption-API.patch of Package qemu.19805
From: Brijesh Singh <brijesh.singh@amd.com> Date: Thu, 8 Mar 2018 06:48:46 -0600 Subject: kvm: introduce memory encryption APIs Inorder to integerate the Secure Encryption Virtualization (SEV) support add few high-level memory encryption APIs which can be used for encrypting the guest memory region. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: kvm@vger.kernel.org Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> (cherry picked from commit 54e89539670e904b0d4f0993abeb92f641c60436) [BR: FATE#322124] Signed-off-by: Bruce Rogers <brogers@suse.com> --- accel/kvm/kvm-all.c | 14 ++++++++++++++ accel/kvm/sev-stub.c | 5 +++++ accel/stubs/kvm-stub.c | 5 +++++ include/sysemu/kvm.h | 8 ++++++++ include/sysemu/sev.h | 1 + 5 files changed, 33 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 7559ce28acf678cbfc9cfefd9e90..d13fc3de0ee6b5fd60fb134413f8 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -107,6 +107,7 @@ struct KVMState /* memory encryption */ void *memcrypt_handle; + int (*memcrypt_encrypt_data)(void *handle, uint8_t *ptr, uint64_t len); }; KVMState *kvm_state; @@ -151,6 +152,17 @@ bool kvm_memcrypt_enabled(void) return false; } +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len) +{ + if (kvm_state->memcrypt_handle && + kvm_state->memcrypt_encrypt_data) { + return kvm_state->memcrypt_encrypt_data(kvm_state->memcrypt_handle, + ptr, len); + } + + return 1; +} + static KVMSlot *kvm_get_free_slot(KVMMemoryListener *kml) { KVMState *s = kvm_state; @@ -1655,6 +1667,8 @@ static int kvm_init(MachineState *ms) ret = -1; goto err; } + + kvm_state->memcrypt_encrypt_data = sev_encrypt_data; } ret = kvm_arch_init(ms, s); diff --git a/accel/kvm/sev-stub.c b/accel/kvm/sev-stub.c index 4a5cc5569e5f6bbb284a6bd6216f..4f9745258593a5903d5fcc778a50 100644 --- a/accel/kvm/sev-stub.c +++ b/accel/kvm/sev-stub.c @@ -15,6 +15,11 @@ #include "qemu-common.h" #include "sysemu/sev.h" +int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len) +{ + abort(); +} + void *sev_guest_init(const char *id) { return NULL; diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c index f83192d6f63eeed44143efbed54b..02d51700311f74c9e6299b9e11a5 100644 --- a/accel/stubs/kvm-stub.c +++ b/accel/stubs/kvm-stub.c @@ -110,6 +110,11 @@ bool kvm_memcrypt_enabled(void) return false; } +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len) +{ + return 1; +} + #ifndef CONFIG_USER_ONLY int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev) { diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index bfb472b40557f9905eec085d55eb..fbf20d35fc2016d958c9e34378ee 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -239,6 +239,14 @@ bool kvm_arm_supports_user_irq(void); */ bool kvm_memcrypt_enabled(void); +/** + * kvm_memcrypt_encrypt_data: encrypt the memory range + * + * Return: 1 failed to encrypt the range + * 0 succesfully encrypted memory region + */ +int kvm_memcrypt_encrypt_data(uint8_t *ptr, uint64_t len); + #ifdef NEED_CPU_H #include "cpu.h" diff --git a/include/sysemu/sev.h b/include/sysemu/sev.h index f7a6057d4908a2ae7272c0195f5c..98c1ec8d38aaf8d11f882bee4010 100644 --- a/include/sysemu/sev.h +++ b/include/sysemu/sev.h @@ -17,4 +17,5 @@ #include "sysemu/kvm.h" void *sev_guest_init(const char *id); +int sev_encrypt_data(void *handle, uint8_t *ptr, uint64_t len); #endif
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor