diff options
Diffstat (limited to 'debian/patches')
4 files changed, 91 insertions, 0 deletions
diff --git a/debian/patches/series b/debian/patches/series index 3b8e97b..dd9a644 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -14,3 +14,6 @@ sysenter0001-yyy-sysenter-prototype.patch #vm-cache-policy0002-vm-keep-track-of-clean-pages.patch #vm-cache-policy0003-vm-evict-clean-pages-first.patch vm-cache-policy0001-VM-cache-policy-change.patch +vm-external-fixes0001-vm-remove-unused-field-from-struct-vm_external.patch +vm-external-fixes0002-vm-allocate-a-large-map-for-all-objects-larger-than-.patch +vm-external-fixes0003-vm-initialize-external-maps.patch diff --git a/debian/patches/vm-external-fixes0001-vm-remove-unused-field-from-struct-vm_external.patch b/debian/patches/vm-external-fixes0001-vm-remove-unused-field-from-struct-vm_external.patch new file mode 100644 index 0000000..7e7eb8c --- /dev/null +++ b/debian/patches/vm-external-fixes0001-vm-remove-unused-field-from-struct-vm_external.patch @@ -0,0 +1,33 @@ +From 48f34366eb90ce0fe1f4237f6e3aaa09256ed354 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 7 Feb 2016 12:54:49 +0100 +Subject: [PATCH gnumach 1/3] vm: remove unused field from struct vm_external + +* vm/vm_external.h (struct vm_external): Remove unused field +'existence_count'. +--- + vm/vm_external.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/vm/vm_external.h b/vm/vm_external.h +index 55c9e48..4e44ddf 100644 +--- a/vm/vm_external.h ++++ b/vm/vm_external.h +@@ -46,9 +46,14 @@ typedef struct vm_external { + * been written to backing + * storage. + */ ++#if 0 ++ /* XXX: Currently, existence_count is not used. I guess it ++ could be useful to get rid of the map if the count drops to ++ zero. */ + int existence_count;/* Number of bits turned on in + * existence_map. + */ ++#endif + } *vm_external_t; + + #define VM_EXTERNAL_NULL ((vm_external_t) 0) +-- +2.1.4 + diff --git a/debian/patches/vm-external-fixes0002-vm-allocate-a-large-map-for-all-objects-larger-than-.patch b/debian/patches/vm-external-fixes0002-vm-allocate-a-large-map-for-all-objects-larger-than-.patch new file mode 100644 index 0000000..87f2bfc --- /dev/null +++ b/debian/patches/vm-external-fixes0002-vm-allocate-a-large-map-for-all-objects-larger-than-.patch @@ -0,0 +1,30 @@ +From ef62b420194e5cd5c5957a672061c18bcedb4b49 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 7 Feb 2016 12:56:42 +0100 +Subject: [PATCH gnumach 2/3] vm: allocate a large map for all objects larger + than SMALL_SIZE + +* vm/vm_external.c (vm_external_create): Allocate a large map for all +objects larger than SMALL_SIZE. 'vm_external_state_{g,s}et' can deal +with offsets larger than 'LARGE_SIZE', so currently objects larger +than 'LARGE_SIZE' are missing out on the optimization. +--- + vm/vm_external.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/vm/vm_external.c b/vm/vm_external.c +index 097a9b1..7584a2b 100644 +--- a/vm/vm_external.c ++++ b/vm/vm_external.c +@@ -69,7 +69,7 @@ vm_external_t vm_external_create(vm_offset_t size) + result->existence_map = + (char *) kmem_cache_alloc(&vm_object_small_existence_map_cache); + result->existence_size = SMALL_SIZE; +- } else if (bytes <= LARGE_SIZE) { ++ } else { + result->existence_map = + (char *) kmem_cache_alloc(&vm_object_large_existence_map_cache); + result->existence_size = LARGE_SIZE; +-- +2.1.4 + diff --git a/debian/patches/vm-external-fixes0003-vm-initialize-external-maps.patch b/debian/patches/vm-external-fixes0003-vm-initialize-external-maps.patch new file mode 100644 index 0000000..a1d92a1 --- /dev/null +++ b/debian/patches/vm-external-fixes0003-vm-initialize-external-maps.patch @@ -0,0 +1,25 @@ +From ca3f6f5c703ea690869c7173be817999e1eddef3 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 7 Feb 2016 13:01:10 +0100 +Subject: [PATCH gnumach 3/3] vm: initialize external maps + +* vm/vm_external.c (vm_external_create): Initialize allocated maps. +--- + vm/vm_external.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/vm/vm_external.c b/vm/vm_external.c +index 7584a2b..6e71918 100644 +--- a/vm/vm_external.c ++++ b/vm/vm_external.c +@@ -74,6 +74,7 @@ vm_external_t vm_external_create(vm_offset_t size) + (char *) kmem_cache_alloc(&vm_object_large_existence_map_cache); + result->existence_size = LARGE_SIZE; + } ++ memset (result->existence_map, 0, result->existence_size); + return(result); + } + +-- +2.1.4 + |