LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com> To: Christian Borntraeger <borntraeger@de.ibm.com>, Janosch Frank <frankja@linux.ibm.com>, kvm@vger.kernel.org Cc: "Paolo Bonzini" <pbonzini@redhat.com>, "Radim Krčmář" <rkrcmar@redhat.com>, "Shuah Khan" <shuah@kernel.org>, "David Hildenbrand" <david@redhat.com>, "Cornelia Huck" <cohuck@redhat.com>, "Andrew Jones" <drjones@redhat.com>, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-s390@vger.kernel.org Subject: [RFC PATCH 2/4] KVM: selftests: Align memory region addresses to 1M on s390x Date: Thu, 16 May 2019 13:12:51 +0200 [thread overview] Message-ID: <20190516111253.4494-3-thuth@redhat.com> (raw) In-Reply-To: <20190516111253.4494-1-thuth@redhat.com> On s390x, there is a constraint that memory regions have to be aligned to 1M (or running the VM will fail). Introduce a new "alignment" variable in the vm_userspace_mem_region_add() function which now can be used for both, huge page and s390x alignment requirements. Signed-off-by: Thomas Huth <thuth@redhat.com> --- tools/testing/selftests/kvm/lib/kvm_util.c | 21 +++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index 8d63ccb93e10..64a0da6efe3d 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -559,6 +559,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, unsigned long pmem_size = 0; struct userspace_mem_region *region; size_t huge_page_size = KVM_UTIL_PGS_PER_HUGEPG * vm->page_size; + size_t alignment; TEST_ASSERT((guest_paddr % vm->page_size) == 0, "Guest physical " "address not on a page boundary.\n" @@ -608,9 +609,20 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, TEST_ASSERT(region != NULL, "Insufficient Memory"); region->mmap_size = npages * vm->page_size; - /* Enough memory to align up to a huge page. */ +#ifdef __s390x__ + /* On s390x, the host address must be aligned to 1M (due to PGSTEs) */ + alignment = 0x100000; +#else + alignment = 1; +#endif + if (src_type == VM_MEM_SRC_ANONYMOUS_THP) - region->mmap_size += huge_page_size; + alignment = huge_page_size; + + /* Add enough memory to align up if necessary */ + if (alignment > 1) + region->mmap_size += alignment; + region->mmap_start = mmap(NULL, region->mmap_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS @@ -620,9 +632,8 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, "test_malloc failed, mmap_start: %p errno: %i", region->mmap_start, errno); - /* Align THP allocation up to start of a huge page. */ - region->host_mem = align(region->mmap_start, - src_type == VM_MEM_SRC_ANONYMOUS_THP ? huge_page_size : 1); + /* Align host address */ + region->host_mem = align(region->mmap_start, alignment); /* As needed perform madvise */ if (src_type == VM_MEM_SRC_ANONYMOUS || src_type == VM_MEM_SRC_ANONYMOUS_THP) { -- 2.21.0
next prev parent reply other threads:[~2019-05-16 11:13 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-16 11:12 [RFC PATCH 0/4] KVM selftests for s390x Thomas Huth 2019-05-16 11:12 ` [RFC PATCH 1/4] KVM: selftests: Guard struct kvm_vcpu_events with __KVM_HAVE_VCPU_EVENTS Thomas Huth 2019-05-16 11:22 ` David Hildenbrand 2019-05-20 7:12 ` Christian Borntraeger 2019-05-20 8:08 ` Thomas Huth 2019-05-20 8:13 ` Christian Borntraeger 2019-05-16 11:12 ` Thomas Huth [this message] 2019-05-16 11:30 ` [RFC PATCH 2/4] KVM: selftests: Align memory region addresses to 1M on s390x David Hildenbrand 2019-05-16 11:59 ` Thomas Huth 2019-05-16 12:08 ` David Hildenbrand 2019-05-16 11:12 ` [RFC PATCH 3/4] KVM: selftests: Add processor code for s390x Thomas Huth 2019-05-16 11:12 ` [RFC PATCH 4/4] KVM: selftests: Add the sync_regs test " Thomas Huth 2019-05-20 11:19 ` Paolo Bonzini 2019-05-23 10:56 ` Andrew Jones 2019-05-23 11:19 ` Thomas Huth 2019-05-20 11:20 ` [RFC PATCH 0/4] KVM selftests " Paolo Bonzini 2019-05-20 11:30 ` Thomas Huth 2019-05-20 11:43 ` Paolo Bonzini 2019-05-22 8:44 ` Andrew Jones
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190516111253.4494-3-thuth@redhat.com \ --to=thuth@redhat.com \ --cc=borntraeger@de.ibm.com \ --cc=cohuck@redhat.com \ --cc=david@redhat.com \ --cc=drjones@redhat.com \ --cc=frankja@linux.ibm.com \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-s390@vger.kernel.org \ --cc=pbonzini@redhat.com \ --cc=rkrcmar@redhat.com \ --cc=shuah@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).