[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/3] sev: Change SEV to use EncryptedRAMBlock Notifi
From: |
Natarajan, Janakarajan |
Subject: |
[Qemu-devel] [PATCH 3/3] sev: Change SEV to use EncryptedRAMBlock Notifier |
Date: |
Thu, 25 Apr 2019 22:58:20 +0000 |
The EncryptedRAMBlock Notifier lets SEV know which guest RAM pages
will contain encrypted guest data.
Using this notifier lets SEV skip pinning pages that do not contain
encrypted data.
Signed-off-by: Janakarajan Natarajan <address@hidden>
---
target/i386/sev.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/target/i386/sev.c b/target/i386/sev.c
index cd77f6b5d4..610e992e64 100644
--- a/target/i386/sev.c
+++ b/target/i386/sev.c
@@ -127,21 +127,11 @@ sev_set_guest_state(SevState new_state)
}
static void
-sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size)
+sev_ram_block_encrypted_added(RAMBlockEncryptedNotifier *n,
+ void *host, size_t size)
{
int r;
struct kvm_enc_region range;
- ram_addr_t offset;
- MemoryRegion *mr;
-
- /*
- * The RAM device presents a memory region that should be treated
- * as IO region and should not be pinned.
- */
- mr = memory_region_from_host(host, &offset);
- if (mr && memory_region_is_ram_device(mr)) {
- return;
- }
range.addr = (__u64)(unsigned long)host;
range.size = size;
@@ -156,7 +146,8 @@ sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t
size)
}
static void
-sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size)
+sev_ram_block_encrypted_removed(RAMBlockEncryptedNotifier *n,
+ void *host, size_t size)
{
int r;
struct kvm_enc_region range;
@@ -172,9 +163,9 @@ sev_ram_block_removed(RAMBlockNotifier *n, void *host,
size_t size)
}
}
-static struct RAMBlockNotifier sev_ram_notifier = {
- .ram_block_added = sev_ram_block_added,
- .ram_block_removed = sev_ram_block_removed,
+static struct RAMBlockEncryptedNotifier sev_ram_encrypted_notifier = {
+ .ram_block_encrypted_added = sev_ram_block_encrypted_added,
+ .ram_block_encrypted_removed = sev_ram_block_encrypted_removed,
};
static void
@@ -794,7 +785,7 @@ sev_guest_init(const char *id)
goto err;
}
- ram_block_notifier_add(&sev_ram_notifier);
+ ram_block_encrypted_notifier_add(&sev_ram_encrypted_notifier);
qemu_add_machine_init_done_notifier(&sev_machine_done_notify);
qemu_add_vm_change_state_handler(sev_vm_state_change, s);
--
2.20.1