All of lore.kernel.org
 help / color / mirror / Atom feed
From: "wangyanan (Y)" <wangyanan55@huawei.com>
To: Sean Christopherson <seanjc@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Cc: <kvm@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Ben Gardon <bgardon@google.com>,
	Andrew Jones <drjones@redhat.com>, Peter Xu <peterx@redhat.com>,
	Aaron Lewis <aaronlewis@google.com>
Subject: Re: [PATCH 03/15] KVM: selftests: Align HVA for HugeTLB-backed memslots
Date: Thu, 25 Feb 2021 15:40:33 +0800	[thread overview]
Message-ID: <eac3f8b1-0e5b-395f-7fd7-75409554bffc@huawei.com> (raw)
In-Reply-To: <20210210230625.550939-4-seanjc@google.com>

Hi Sean,

On 2021/2/11 7:06, Sean Christopherson wrote:
> Align the HVA for HugeTLB memslots, not just THP memslots.  Add an
> assert so any future backing types are forced to assess whether or not
> they need to be aligned.
>
> Cc: Ben Gardon <bgardon@google.com>
> Cc: Yanan Wang <wangyanan55@huawei.com>
> Cc: Andrew Jones <drjones@redhat.com>
> Cc: Peter Xu <peterx@redhat.com>
> Cc: Aaron Lewis <aaronlewis@google.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
>   tools/testing/selftests/kvm/lib/kvm_util.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
> index 584167c6dbc7..deaeb47b5a6d 100644
> --- a/tools/testing/selftests/kvm/lib/kvm_util.c
> +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
> @@ -731,8 +731,11 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm,
>   	alignment = 1;
>   #endif
>   
> -	if (src_type == VM_MEM_SRC_ANONYMOUS_THP)
> +	if (src_type == VM_MEM_SRC_ANONYMOUS_THP ||
> +	    src_type == VM_MEM_SRC_ANONYMOUS_HUGETLB)
Sorry for the late reply, I just returned from vacation.
I am not sure HVA alignment is really necessary here for hugetlb pages. 
Different from hugetlb pages,
the THP pages are dynamically allocated by later madvise(), so the value 
of HVA returned from mmap()
is host page size aligned but not THP page size aligned, so we indeed 
have to perform alignment.
But hugetlb pages are pre-allocated on systems. The following test 
results also indicate that,
with MAP_HUGETLB flag, the HVA returned from mmap() is already aligned 
to the corresponding
hugetlb page size. So maybe HVAs of each hugetlb pages are aligned 
during allocation of them
or in mmap() ? If so, I think we better not do this again here, because 
the later *region->mmap_size += alignment*
will cause one more hugetlb page mapped but will not be used.

cmdline: ./kvm_page_table_test -m 4 -b 1G -s anonymous_hugetlb_1gb
some outputs:
Host  virtual  test memory offset: 0xffff40000000
Host  virtual  test memory offset: 0xffff00000000
Host  virtual  test memory offset: 0x400000000000

cmdline: ./kvm_page_table_test -m 4 -b 1G -s anonymous_hugetlb_2mb
some outputs:
Host  virtual  test memory offset: 0xffff48000000
Host  virtual  test memory offset: 0xffff65400000
Host  virtual  test memory offset: 0xffff6ba00000

cmdline: ./kvm_page_table_test -m 4 -b 1G -s anonymous_hugetlb_32mb
some outputs:
Host  virtual  test memory offset: 0xffff70000000
Host  virtual  test memory offset: 0xffff4c000000
Host  virtual  test memory offset: 0xffff72000000

cmdline: ./kvm_page_table_test -m 4 -b 1G -s anonymous_hugetlb_64kb
some outputs:
Host  virtual  test memory offset: 0xffff58230000
Host  virtual  test memory offset: 0xffff6ef00000
Host  virtual  test memory offset: 0xffff7c150000

Thanks,
Yanan
>   		alignment = max(huge_page_size, alignment);
> +	else
> +		ASSERT_EQ(src_type, VM_MEM_SRC_ANONYMOUS);
>   
>   	/* Add enough memory to align up if necessary */
>   	if (alignment > 1)

  parent reply	other threads:[~2021-02-25  7:44 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 23:06 [PATCH 00/15] VM: selftests: Hugepage fixes and cleanups Sean Christopherson
2021-02-10 23:06 ` [PATCH 01/15] KVM: selftests: Explicitly state indicies for vm_guest_mode_params array Sean Christopherson
2021-02-11  0:50   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 02/15] KVM: selftests: Expose align() helpers to tests Sean Christopherson
2021-02-11  0:49   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 03/15] KVM: selftests: Align HVA for HugeTLB-backed memslots Sean Christopherson
2021-02-11  0:52   ` Ben Gardon
2021-02-25  7:40   ` wangyanan (Y) [this message]
2021-03-13  0:17     ` Sean Christopherson
2021-02-10 23:06 ` [PATCH 04/15] KVM: selftests: Force stronger HVA alignment (1gb) for hugepages Sean Christopherson
2021-02-25  7:57   ` wangyanan (Y)
2021-03-13  0:26     ` Sean Christopherson
2021-02-10 23:06 ` [PATCH 05/15] KVM: selftests: Require GPA to be aligned when backed by hugepages Sean Christopherson
2021-02-11  1:01   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 06/15] KVM: selftests: Use shorthand local var to access struct perf_tests_args Sean Christopherson
2021-02-11  1:09   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 07/15] KVM: selftests: Capture per-vCPU GPA in perf_test_vcpu_args Sean Christopherson
2021-02-11  1:24   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 08/15] KVM: selftests: Use perf util's per-vCPU GPA/pages in demand paging test Sean Christopherson
2021-02-11  1:23   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 09/15] KVM: selftests: Move per-VM GPA into perf_test_args Sean Christopherson
2021-02-11  1:22   ` Ben Gardon
2021-02-11  1:56     ` Sean Christopherson
2021-02-11 13:12       ` Paolo Bonzini
2021-02-11 15:57         ` Sean Christopherson
2021-02-11 17:33           ` Ben Gardon
2021-02-10 23:06 ` [PATCH 10/15] KVM: selftests: Remove perf_test_args.host_page_size Sean Christopherson
2021-02-11  1:26   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 11/15] KVM: selftests: Create VM with adjusted number of guest pages for perf tests Sean Christopherson
2021-02-11  1:32   ` Ben Gardon
2021-02-10 23:06 ` [PATCH 12/15] KVM: selftests: Fill per-vCPU struct during "perf_test" VM creation Sean Christopherson
2021-02-10 23:06 ` [PATCH 13/15] KVM: selftests: Sync perf_test_args to guest during " Sean Christopherson
2021-02-10 23:06 ` [PATCH 14/15] KVM: selftests: Track size of per-VM memslot in perf_test_args Sean Christopherson
2021-02-10 23:06 ` [PATCH 15/15] KVM: selftests: Get rid of gorilla math in memslots modification test Sean Christopherson
2021-02-11 11:58 ` [PATCH 00/15] VM: selftests: Hugepage fixes and cleanups 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=eac3f8b1-0e5b-395f-7fd7-75409554bffc@huawei.com \
    --to=wangyanan55@huawei.com \
    --cc=aaronlewis@google.com \
    --cc=bgardon@google.com \
    --cc=drjones@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=seanjc@google.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.