* [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment
@ 2020-03-12 10:40 Andrew Jones
2020-03-12 10:48 ` Christian Borntraeger
2020-03-14 10:58 ` Paolo Bonzini
0 siblings, 2 replies; 3+ messages in thread
From: Andrew Jones @ 2020-03-12 10:40 UTC (permalink / raw)
To: kvm; +Cc: pbonzini, borntraeger, frankja, david, cohuck, thuth
s390 requires 1M aligned guest sizes. Embedding the rounding in
vm_adjust_num_guest_pages() allows us to remove it from a few
other places.
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
tools/testing/selftests/kvm/demand_paging_test.c | 4 ----
tools/testing/selftests/kvm/dirty_log_test.c | 5 +----
tools/testing/selftests/kvm/include/kvm_util.h | 8 +++++++-
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testing/selftests/kvm/demand_paging_test.c
index c1e326d3ed7f..ae086c5dc118 100644
--- a/tools/testing/selftests/kvm/demand_paging_test.c
+++ b/tools/testing/selftests/kvm/demand_paging_test.c
@@ -378,10 +378,6 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
guest_num_pages = (vcpus * vcpu_memory_bytes) / guest_page_size;
guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
-#ifdef __s390x__
- /* Round up to multiple of 1M (segment size) */
- guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
-#endif
/*
* If there should be more memory in the guest test region than there
* can be pages in the guest, it will definitely cause problems.
diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
index 518a94a7a8b5..8a79f5d6b979 100644
--- a/tools/testing/selftests/kvm/dirty_log_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_test.c
@@ -296,10 +296,7 @@ static void run_test(enum vm_guest_mode mode, unsigned long iterations,
guest_num_pages = (1ul << (DIRTY_MEM_BITS -
vm_get_page_shift(vm))) + 3;
guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
-#ifdef __s390x__
- /* Round up to multiple of 1M (segment size) */
- guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
-#endif
+
host_page_size = getpagesize();
host_num_pages = vm_num_host_pages(mode, guest_num_pages);
diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
index 707b44805149..ade5a40afbee 100644
--- a/tools/testing/selftests/kvm/include/kvm_util.h
+++ b/tools/testing/selftests/kvm/include/kvm_util.h
@@ -164,7 +164,13 @@ unsigned int vm_num_guest_pages(enum vm_guest_mode mode, unsigned int num_host_p
static inline unsigned int
vm_adjust_num_guest_pages(enum vm_guest_mode mode, unsigned int num_guest_pages)
{
- return vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
+ unsigned int n;
+ n = vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
+#ifdef __s390x__
+ /* s390 requires 1M aligned guest sizes */
+ n = (n + 255) & ~255;
+#endif
+ return n;
}
struct kvm_userspace_memory_region *
--
2.21.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment
2020-03-12 10:40 [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment Andrew Jones
@ 2020-03-12 10:48 ` Christian Borntraeger
2020-03-14 10:58 ` Paolo Bonzini
1 sibling, 0 replies; 3+ messages in thread
From: Christian Borntraeger @ 2020-03-12 10:48 UTC (permalink / raw)
To: Andrew Jones, kvm; +Cc: pbonzini, frankja, david, cohuck, thuth
On 12.03.20 11:40, Andrew Jones wrote:
> s390 requires 1M aligned guest sizes. Embedding the rounding in
> vm_adjust_num_guest_pages() allows us to remove it from a few
> other places.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
> tools/testing/selftests/kvm/demand_paging_test.c | 4 ----
> tools/testing/selftests/kvm/dirty_log_test.c | 5 +----
> tools/testing/selftests/kvm/include/kvm_util.h | 8 +++++++-
> 3 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testing/selftests/kvm/demand_paging_test.c
> index c1e326d3ed7f..ae086c5dc118 100644
> --- a/tools/testing/selftests/kvm/demand_paging_test.c
> +++ b/tools/testing/selftests/kvm/demand_paging_test.c
> @@ -378,10 +378,6 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
> guest_num_pages = (vcpus * vcpu_memory_bytes) / guest_page_size;
> guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
>
> -#ifdef __s390x__
> - /* Round up to multiple of 1M (segment size) */
> - guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
> -#endif
> /*
> * If there should be more memory in the guest test region than there
> * can be pages in the guest, it will definitely cause problems.
> diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
> index 518a94a7a8b5..8a79f5d6b979 100644
> --- a/tools/testing/selftests/kvm/dirty_log_test.c
> +++ b/tools/testing/selftests/kvm/dirty_log_test.c
> @@ -296,10 +296,7 @@ static void run_test(enum vm_guest_mode mode, unsigned long iterations,
> guest_num_pages = (1ul << (DIRTY_MEM_BITS -
> vm_get_page_shift(vm))) + 3;
> guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
> -#ifdef __s390x__
> - /* Round up to multiple of 1M (segment size) */
> - guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
> -#endif
> +
> host_page_size = getpagesize();
> host_num_pages = vm_num_host_pages(mode, guest_num_pages);
>
> diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
> index 707b44805149..ade5a40afbee 100644
> --- a/tools/testing/selftests/kvm/include/kvm_util.h
> +++ b/tools/testing/selftests/kvm/include/kvm_util.h
> @@ -164,7 +164,13 @@ unsigned int vm_num_guest_pages(enum vm_guest_mode mode, unsigned int num_host_p
> static inline unsigned int
> vm_adjust_num_guest_pages(enum vm_guest_mode mode, unsigned int num_guest_pages)
> {
> - return vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
> + unsigned int n;
> + n = vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
> +#ifdef __s390x__
> + /* s390 requires 1M aligned guest sizes */
> + n = (n + 255) & ~255;
255 vs. 0xff probably does not matter.
> +#endif
> + return n;
> }
>
> struct kvm_userspace_memory_region *
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment
2020-03-12 10:40 [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment Andrew Jones
2020-03-12 10:48 ` Christian Borntraeger
@ 2020-03-14 10:58 ` Paolo Bonzini
1 sibling, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2020-03-14 10:58 UTC (permalink / raw)
To: Andrew Jones, kvm; +Cc: borntraeger, frankja, david, cohuck, thuth
On 12/03/20 11:40, Andrew Jones wrote:
> s390 requires 1M aligned guest sizes. Embedding the rounding in
> vm_adjust_num_guest_pages() allows us to remove it from a few
> other places.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> tools/testing/selftests/kvm/demand_paging_test.c | 4 ----
> tools/testing/selftests/kvm/dirty_log_test.c | 5 +----
> tools/testing/selftests/kvm/include/kvm_util.h | 8 +++++++-
> 3 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testing/selftests/kvm/demand_paging_test.c
> index c1e326d3ed7f..ae086c5dc118 100644
> --- a/tools/testing/selftests/kvm/demand_paging_test.c
> +++ b/tools/testing/selftests/kvm/demand_paging_test.c
> @@ -378,10 +378,6 @@ static void run_test(enum vm_guest_mode mode, bool use_uffd,
> guest_num_pages = (vcpus * vcpu_memory_bytes) / guest_page_size;
> guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
>
> -#ifdef __s390x__
> - /* Round up to multiple of 1M (segment size) */
> - guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
> -#endif
> /*
> * If there should be more memory in the guest test region than there
> * can be pages in the guest, it will definitely cause problems.
> diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
> index 518a94a7a8b5..8a79f5d6b979 100644
> --- a/tools/testing/selftests/kvm/dirty_log_test.c
> +++ b/tools/testing/selftests/kvm/dirty_log_test.c
> @@ -296,10 +296,7 @@ static void run_test(enum vm_guest_mode mode, unsigned long iterations,
> guest_num_pages = (1ul << (DIRTY_MEM_BITS -
> vm_get_page_shift(vm))) + 3;
> guest_num_pages = vm_adjust_num_guest_pages(mode, guest_num_pages);
> -#ifdef __s390x__
> - /* Round up to multiple of 1M (segment size) */
> - guest_num_pages = (guest_num_pages + 0xff) & ~0xffUL;
> -#endif
> +
> host_page_size = getpagesize();
> host_num_pages = vm_num_host_pages(mode, guest_num_pages);
>
> diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
> index 707b44805149..ade5a40afbee 100644
> --- a/tools/testing/selftests/kvm/include/kvm_util.h
> +++ b/tools/testing/selftests/kvm/include/kvm_util.h
> @@ -164,7 +164,13 @@ unsigned int vm_num_guest_pages(enum vm_guest_mode mode, unsigned int num_host_p
> static inline unsigned int
> vm_adjust_num_guest_pages(enum vm_guest_mode mode, unsigned int num_guest_pages)
> {
> - return vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
> + unsigned int n;
> + n = vm_num_guest_pages(mode, vm_num_host_pages(mode, num_guest_pages));
> +#ifdef __s390x__
> + /* s390 requires 1M aligned guest sizes */
> + n = (n + 255) & ~255;
> +#endif
> + return n;
> }
>
> struct kvm_userspace_memory_region *
>
Queued, thanks.
Paolo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-03-15 3:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-12 10:40 [PATCH] KVM: selftests: s390x: Provide additional num-guest-pages adjustment Andrew Jones
2020-03-12 10:48 ` Christian Borntraeger
2020-03-14 10:58 ` Paolo Bonzini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.