[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 08/17] exec: Add lock parameter to qemu_ram_ptr_lengt
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 08/17] exec: Add lock parameter to qemu_ram_ptr_length |
Date: |
Tue, 1 Aug 2017 18:17:16 +0200 |
From: Anthony PERARD <address@hidden>
Commit 04bf2526ce87f21b32c9acba1c5518708c243ad0 (exec: use
qemu_ram_ptr_length to access guest ram) start using qemu_ram_ptr_length
instead of qemu_map_ram_ptr, but when used with Xen, the behavior of
both function is different. They both call xen_map_cache, but one with
"lock", meaning the mapping of guest memory is never released
implicitly, and the second one without, which means, mapping can be
release later, when needed.
In the context of address_space_{read,write}_continue, the ptr to those
mapping should not be locked because it is used immediatly and never
used again.
The lock parameter make it explicit in which context qemu_ram_ptr_length
is called.
Signed-off-by: Anthony PERARD <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Stefano Stabellini <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
exec.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/exec.c b/exec.c
index 01ac21e..d20c34c 100644
--- a/exec.c
+++ b/exec.c
@@ -2203,7 +2203,7 @@ void *qemu_map_ram_ptr(RAMBlock *ram_block, ram_addr_t
addr)
* Called within RCU critical section.
*/
static void *qemu_ram_ptr_length(RAMBlock *ram_block, ram_addr_t addr,
- hwaddr *size)
+ hwaddr *size, bool lock)
{
RAMBlock *block = ram_block;
if (*size == 0) {
@@ -2222,10 +2222,10 @@ static void *qemu_ram_ptr_length(RAMBlock *ram_block,
ram_addr_t addr,
* In that case just map the requested area.
*/
if (block->offset == 0) {
- return xen_map_cache(addr, *size, 1, true);
+ return xen_map_cache(addr, *size, lock, lock);
}
- block->host = xen_map_cache(block->offset, block->max_length, 1, true);
+ block->host = xen_map_cache(block->offset, block->max_length, 1, lock);
}
return ramblock_ptr(block, addr);
@@ -2947,7 +2947,7 @@ static MemTxResult
address_space_write_continue(AddressSpace *as, hwaddr addr,
}
} else {
/* RAM case */
- ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l);
+ ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
memcpy(ptr, buf, l);
invalidate_and_set_dirty(mr, addr1, l);
}
@@ -3038,7 +3038,7 @@ MemTxResult address_space_read_continue(AddressSpace *as,
hwaddr addr,
}
} else {
/* RAM case */
- ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l);
+ ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
memcpy(buf, ptr, l);
}
@@ -3349,7 +3349,7 @@ void *address_space_map(AddressSpace *as,
memory_region_ref(mr);
*plen = address_space_extend_translation(as, addr, len, mr, xlat, l,
is_write);
- ptr = qemu_ram_ptr_length(mr->ram_block, xlat, plen);
+ ptr = qemu_ram_ptr_length(mr->ram_block, xlat, plen, true);
rcu_read_unlock();
return ptr;
--
1.8.3.1
- [Qemu-devel] [PULL 02/17] cpu_physical_memory_sync_dirty_bitmap: Fix alignment check, (continued)
- [Qemu-devel] [PULL 01/17] vl.c/exit: pause cpus before closing block devices, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 05/17] char: don't exit on hmp 'chardev-add help', Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 04/17] char-fd: remove useless chr pointer, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 03/17] accel: cleanup error output, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 06/17] docs: document deprecation policy & deprecated features in appendix, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 08/17] exec: Add lock parameter to qemu_ram_ptr_length,
Paolo Bonzini <=
- [Qemu-devel] [PULL 09/17] bt: stop the sdp memory allocation craziness, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 10/17] qemu-options: document existance of versioned machine types, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 11/17] migration: optimize the downtime, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 12/17] hw/scsi/vmw_pvscsi: Remove the dead error handling, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 13/17] hw/scsi/vmw_pvscsi: Convert to realize, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 14/17] rtc-test: cleanup register_b_set_flag test, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 15/17] rtc-test: introduce more update tests, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 16/17] mc146818rtc: simplify check_update_timer, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 17/17] mc146818rtc: implement UIP latching as intended, Paolo Bonzini, 2017/08/01
- [Qemu-devel] [PULL 07/17] target-i386: kvm_get/put_vcpu_events don't handle sipi_vector, Paolo Bonzini, 2017/08/01