From: Sean Christopherson <seanjc@google.com>
To: Yanan Wang <wangyanan55@huawei.com>
Cc: kvm@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
Shuah Khan <shuah@kernel.org>, Andrew Jones <drjones@redhat.com>,
Marc Zyngier <maz@kernel.org>, Ben Gardon <bgardon@google.com>,
Peter Xu <peterx@redhat.com>, Aaron Lewis <aaronlewis@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
wanghaibin.wang@huawei.com, yuzenghui@huawei.com
Subject: Re: [RFC PATCH 1/2] KVM: selftests: Add a macro to get string of vm_mem_backing_src_type
Date: Mon, 8 Feb 2021 09:43:28 -0800 [thread overview]
Message-ID: <YCF4QCPtSEFg3Qv4@google.com> (raw)
In-Reply-To: <20210208090841.333724-2-wangyanan55@huawei.com>
On Mon, Feb 08, 2021, Yanan Wang wrote:
> Add a macro to get string of the backing source memory type, so that
> application can add choices for source types in the help() function,
> and users can specify which type to use for testing.
>
> Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
> ---
> tools/testing/selftests/kvm/include/kvm_util.h | 3 +++
> tools/testing/selftests/kvm/lib/kvm_util.c | 8 ++++++++
> 2 files changed, 11 insertions(+)
>
> diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
> index 5cbb861525ed..f5fc29dc9ee6 100644
> --- a/tools/testing/selftests/kvm/include/kvm_util.h
> +++ b/tools/testing/selftests/kvm/include/kvm_util.h
> @@ -69,7 +69,9 @@ enum vm_guest_mode {
> #define PTES_PER_MIN_PAGE ptes_per_page(MIN_PAGE_SIZE)
>
> #define vm_guest_mode_string(m) vm_guest_mode_string[m]
> +#define vm_mem_backing_src_type_string(s) vm_mem_backing_src_type_string[s]
Oof, I see this is just following vm_guest_mode_string. IMO, defining the
string to look like a function is unnecessary and rather mean.
> extern const char * const vm_guest_mode_string[];
> +extern const char * const vm_mem_backing_src_type_string[];
>
> struct vm_guest_mode_params {
> unsigned int pa_bits;
> @@ -83,6 +85,7 @@ enum vm_mem_backing_src_type {
> VM_MEM_SRC_ANONYMOUS,
> VM_MEM_SRC_ANONYMOUS_THP,
> VM_MEM_SRC_ANONYMOUS_HUGETLB,
> + NUM_VM_BACKING_SRC_TYPES,
> };
>
> int kvm_check_cap(long cap);
> diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
> index fa5a90e6c6f0..a9b651c7f866 100644
> --- a/tools/testing/selftests/kvm/lib/kvm_util.c
> +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
> @@ -165,6 +165,14 @@ const struct vm_guest_mode_params vm_guest_mode_params[] = {
> _Static_assert(sizeof(vm_guest_mode_params)/sizeof(struct vm_guest_mode_params) == NUM_VM_MODES,
> "Missing new mode params?");
>
> +const char * const vm_mem_backing_src_type_string[] = {
A shorter name would be nice, though I don't have a good suggestion.
> + "VM_MEM_SRC_ANONYMOUS ",
> + "VM_MEM_SRC_ANONYMOUS_THP ",
> + "VM_MEM_SRC_ANONYMOUS_HUGETLB",
It'd be more robust to explicitly assign indices, that way tweaks to
vm_mem_backing_src_type won't cause silent breakage. Ditto for the existing
vm_guest_mode_string.
E.g. I think something like this would work (completely untested)
const char *vm_guest_mode_string(int i)
{
static const char *const strings[] = {
[VM_MODE_P52V48_4K] = "PA-bits:52, VA-bits:48, 4K pages",
[VM_MODE_P52V48_64K] = "PA-bits:52, VA-bits:48, 64K pages",
[VM_MODE_P48V48_4K] = "PA-bits:48, VA-bits:48, 4K pages",
[VM_MODE_P48V48_64K] = "PA-bits:48, VA-bits:48, 64K pages",
[VM_MODE_P40V48_4K] = "PA-bits:40, VA-bits:48, 4K pages",
[VM_MODE_P40V48_64K] = "PA-bits:40, VA-bits:48, 64K pages",
[VM_MODE_PXXV48_4K] = "PA-bits:ANY, VA-bits:48, 4K pages",
};
_Static_assert(sizeof(strings)/sizeof(char *) == NUM_VM_MODES,
"Missing new mode strings?");
TEST_ASSERT(i < NUM_VM_MODES);
return strings[i];
}
> +};
> +_Static_assert(sizeof(vm_mem_backing_src_type_string)/sizeof(char *) == NUM_VM_BACKING_SRC_TYPES,
> + "Missing new source type strings?");
> +
> /*
> * VM Create
> *
> --
> 2.23.0
>
next prev parent reply other threads:[~2021-02-08 17:53 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-08 9:08 [RFC PATCH 0/2] Add a test for kvm page table code Yanan Wang
2021-02-08 9:08 ` [RFC PATCH 1/2] KVM: selftests: Add a macro to get string of vm_mem_backing_src_type Yanan Wang
2021-02-08 17:43 ` Sean Christopherson [this message]
2021-02-09 10:43 ` wangyanan (Y)
2021-02-08 18:13 ` Ben Gardon
2021-02-09 11:21 ` wangyanan (Y)
2021-02-09 17:18 ` Ben Gardon
2021-02-09 17:35 ` Sean Christopherson
2021-02-10 4:11 ` wangyanan (Y)
2021-02-08 9:08 ` [RFC PATCH 2/2] KVM: selftests: Add a test for kvm page table code Yanan Wang
2021-02-08 10:21 ` Vitaly Kuznetsov
2021-02-09 4:34 ` wangyanan (Y)
2021-02-08 20:29 ` Ben Gardon
2021-02-09 7:21 ` wangyanan (Y)
2021-02-09 17:38 ` Ben Gardon
2021-02-10 5:13 ` wangyanan (Y)
2021-02-09 9:43 ` wangyanan (Y)
2021-02-09 17:57 ` Ben Gardon
2021-02-10 9:36 ` wangyanan (Y)
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=YCF4QCPtSEFg3Qv4@google.com \
--to=seanjc@google.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=linux-kselftest@vger.kernel.org \
--cc=maz@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=shuah@kernel.org \
--cc=vkuznets@redhat.com \
--cc=wanghaibin.wang@huawei.com \
--cc=wangyanan55@huawei.com \
--cc=yuzenghui@huawei.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.