Skip to content

Commit 9e9eb22

Browse files
xzpeterbonzini
authored andcommitted
KVM: Cache as_id in kvm_memory_slot
Cache the address space ID just like the slot ID. It will be used in order to fill in the dirty ring entries. Suggested-by: Paolo Bonzini <[email protected]> Suggested-by: Sean Christopherson <[email protected]> Reviewed-by: Sean Christopherson <[email protected]> Signed-off-by: Peter Xu <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 2f2fad0 commit 9e9eb22

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

include/linux/kvm_host.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ struct kvm_memory_slot {
346346
unsigned long userspace_addr;
347347
u32 flags;
348348
short id;
349+
u16 as_id;
349350
};
350351

351352
static inline unsigned long kvm_dirty_bitmap_bytes(struct kvm_memory_slot *memslot)

virt/kvm/kvm_main.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,6 +1247,11 @@ static int kvm_delete_memslot(struct kvm *kvm,
12471247

12481248
memset(&new, 0, sizeof(new));
12491249
new.id = old->id;
1250+
/*
1251+
* This is only for debugging purpose; it should never be referenced
1252+
* for a removed memslot.
1253+
*/
1254+
new.as_id = as_id;
12501255

12511256
r = kvm_set_memslot(kvm, mem, old, &new, as_id, KVM_MR_DELETE);
12521257
if (r)
@@ -1313,6 +1318,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
13131318
if (!mem->memory_size)
13141319
return kvm_delete_memslot(kvm, mem, &old, as_id);
13151320

1321+
new.as_id = as_id;
13161322
new.id = id;
13171323
new.base_gfn = mem->guest_phys_addr >> PAGE_SHIFT;
13181324
new.npages = mem->memory_size >> PAGE_SHIFT;

0 commit comments

Comments
 (0)