[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC 5/6] kvm: kvm_log_start/stop are only called wit
From: |
David Hildenbrand |
Subject: |
[Qemu-devel] [PATCH RFC 5/6] kvm: kvm_log_start/stop are only called with known sections |
Date: |
Wed, 9 Aug 2017 15:33:45 +0200 |
Let's properly align the sections first and bail out if we would ever
be called with a memory region we don't know yet.
Signed-off-by: David Hildenbrand <address@hidden>
---
accel/kvm/kvm-all.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 7b45506..78a7f01 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -411,15 +411,21 @@ static int kvm_slot_update_flags(KVMMemoryListener *kml,
KVMSlot *mem,
static int kvm_section_update_flags(KVMMemoryListener *kml,
MemoryRegionSection *section)
{
- hwaddr phys_addr = section->offset_within_address_space;
- ram_addr_t size = int128_get64(section->size);
- KVMSlot *mem = kvm_lookup_matching_slot(kml, phys_addr, size);
+ hwaddr start_addr, size;
+ KVMSlot *mem;
- if (mem == NULL) {
+ size = kvm_align_section(section, &start_addr);
+ if (!size) {
return 0;
- } else {
- return kvm_slot_update_flags(kml, mem, section->mr);
}
+
+ mem = kvm_lookup_matching_slot(kml, start_addr, size);
+ if (!mem) {
+ fprintf(stderr, "%s: error finding slot\n", __func__);
+ abort();
+ }
+
+ return kvm_slot_update_flags(kml, mem, section->mr);
}
static void kvm_log_start(MemoryListener *listener,
--
2.9.4
- [Qemu-devel] [PATCH RFC 0/6] QEMU: kvm: cleanup kvm_slot handling, David Hildenbrand, 2017/08/09
- [Qemu-devel] [PATCH RFC 1/6] kvm: require JOIN_MEMORY_REGIONS_WORKS, David Hildenbrand, 2017/08/09
- [Qemu-devel] [PATCH RFC 2/6] kvm: factor out alignment of memory section, David Hildenbrand, 2017/08/09
- [Qemu-devel] [PATCH RFC 4/6] kvm: we never have overlapping slots in kvm_set_phys_mem(), David Hildenbrand, 2017/08/09
- [Qemu-devel] [PATCH RFC 5/6] kvm: kvm_log_start/stop are only called with known sections,
David Hildenbrand <=
- [Qemu-devel] [PATCH RFC 3/6] kvm: use start + size for memory ranges, David Hildenbrand, 2017/08/09
- [Qemu-devel] [PATCH RFC 6/6] kvm: kvm_log_sync() is only called with known memory sections, David Hildenbrand, 2017/08/09
- Re: [Qemu-devel] [PATCH RFC 0/6] QEMU: kvm: cleanup kvm_slot handling, Paolo Bonzini, 2017/08/09