[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 0 of 5] xen mapcache fixes and improvements
Hi all, this patch series introduces a series of fixes and improvements to the xen mapcache in qemu. The list of patches with a diffstat follows: Stefano Stabellini (5): xen: fix qemu_map_cache with size != MCACHE_BUCKET_SIZE xen: remove qemu_map_cache_unlock xen: remove xen_map_block and xen_unmap_block exec.c: refactor cpu_physical_memory_map xen: mapcache performance improvements cpu-common.h | 1 + exec.c | 87 +++++++++++++++---------------- xen-mapcache-stub.c | 8 --- xen-mapcache.c | 141 +++++++++++++++++++++++--------------------------- xen-mapcache.h | 13 ----- 5 files changed, 108 insertions(+), 142 deletions(-) Most of them are just straightforward cleanups and only touch Xen code. The first patch fixes the current mapcache implementation that even though provides a size parameter isn't actually able to cope with sizes other than 0 or the bucket size. The second and the third patch remove some not very useful mapcache related functions and replace them with proper calls to qemu_map_cache and qemu_invalidate_entry. In particular in the case of xen_map_block and xen_unmap_block it wasn't possible before because of the size problem describe above. The fourth patch refactors cpu_physical_memory_map to simplify the implementation and replace multiple calls to qemu_get_ram_ptr with a single call to a new function that takes an address and a size a parameters. Hopefully the changes make the function easier to understand and more efficient. Comments and reviews on this patch are very very welcome. The last patch introduces few interesting performance improvements: assuming that qemu_get_ram_ptr is only called to perform one of the following two actions: 1) map an entire block other than the main ram block (offset == 0); 2) map a single page in the main ram block to issue a read or a write straight after the call; we can make the conscious decision of avoid locking the mapcache entries for case 2). Then considering that qemu_put_ram_ptr is called to unmap pages in the same two cases as before, and considering that we don't need to unmap unlocked mapcache entries, we can avoid calling qemu_invalidate_entry completely. A git tree with the patch series applied to the latest qemu is available here: git://xenbits.xen.org/people/sstabellini/qemu-dm.git mapcache_fixes - Stefano _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |