From: Maxim Levitsky <mlevitsk@redhat.com>
To: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Peter Xu <peterx@redhat.com>
Subject: Re: [PATCH 06/20] KVM: selftests: Read per-page value into local var when verifying dirty_log_test
Date: Tue, 17 Dec 2024 18:59:51 -0500 [thread overview]
Message-ID: <beec72cefd8518aecbf3ecb652c8e79ba71ff266.camel@redhat.com> (raw)
In-Reply-To: <20241214010721.2356923-7-seanjc@google.com>
On Fri, 2024-12-13 at 17:07 -0800, Sean Christopherson wrote:
> Cache the page's value during verification in a local variable, re-reading
> from the pointer is ugly and error prone, e.g. allows for bugs like
> checking the pointer itself instead of the value.
You should note that there are no functional changes in this patch.
Besides this,
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Best regards,
Maxim Levitsky
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> tools/testing/selftests/kvm/dirty_log_test.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
> index 08cbecd1a135..5a04a7bd73e0 100644
> --- a/tools/testing/selftests/kvm/dirty_log_test.c
> +++ b/tools/testing/selftests/kvm/dirty_log_test.c
> @@ -520,11 +520,10 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap)
> {
> uint64_t page, nr_dirty_pages = 0, nr_clean_pages = 0;
> uint64_t step = vm_num_host_pages(mode, 1);
> - uint64_t *value_ptr;
> uint64_t min_iter = 0;
>
> for (page = 0; page < host_num_pages; page += step) {
> - value_ptr = host_test_mem + page * host_page_size;
> + uint64_t val = *(uint64_t *)(host_test_mem + page * host_page_size);
>
> /* If this is a special page that we were tracking... */
> if (__test_and_clear_bit_le(page, host_bmap_track)) {
> @@ -545,11 +544,10 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap)
> * the corresponding page should be either the
> * previous iteration number or the current one.
> */
> - matched = (*value_ptr == iteration ||
> - *value_ptr == iteration - 1);
> + matched = (val == iteration || val == iteration - 1);
>
> if (host_log_mode == LOG_MODE_DIRTY_RING && !matched) {
> - if (*value_ptr == iteration - 2 && min_iter <= iteration - 2) {
> + if (val == iteration - 2 && min_iter <= iteration - 2) {
> /*
> * Short answer: this case is special
> * only for dirty ring test where the
> @@ -597,7 +595,7 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap)
> TEST_ASSERT(matched,
> "Set page %"PRIu64" value %"PRIu64
> " incorrect (iteration=%"PRIu64")",
> - page, *value_ptr, iteration);
> + page, val, iteration);
> } else {
> nr_clean_pages++;
> /*
> @@ -619,11 +617,11 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode, unsigned long *bmap)
> * we'll see that page P is cleared, with
> * value "iteration-1".
> */
> - TEST_ASSERT(*value_ptr <= iteration,
> + TEST_ASSERT(val <= iteration,
> "Clear page %"PRIu64" value %"PRIu64
> " incorrect (iteration=%"PRIu64")",
> - page, *value_ptr, iteration);
> - if (*value_ptr == iteration) {
> + page, val, iteration);
> + if (val == iteration) {
> /*
> * This page is _just_ modified; it
> * should report its dirtyness in the
next prev parent reply other threads:[~2024-12-17 23:59 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-14 1:07 [PATCH 00/20] KVM: selftests: Fixes and cleanups for dirty_log_test Sean Christopherson
2024-12-14 1:07 ` [PATCH 01/20] KVM: selftests: Support multiple write retires in dirty_log_test Sean Christopherson
2024-12-14 1:07 ` [PATCH 02/20] KVM: selftests: Sync dirty_log_test iteration to guest *before* resuming Sean Christopherson
2024-12-17 23:58 ` Maxim Levitsky
2024-12-18 21:36 ` Sean Christopherson
2024-12-19 15:11 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 03/20] KVM: selftests: Drop signal/kick from dirty ring testcase Sean Christopherson
2024-12-14 1:07 ` [PATCH 04/20] KVM: selftests: Drop stale srandom() initialization from dirty_log_test Sean Christopherson
2024-12-17 23:59 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 05/20] KVM: selftests: Precisely track number of dirty/clear pages for each iteration Sean Christopherson
2024-12-17 23:59 ` Maxim Levitsky
2024-12-18 21:37 ` Sean Christopherson
2024-12-14 1:07 ` [PATCH 06/20] KVM: selftests: Read per-page value into local var when verifying dirty_log_test Sean Christopherson
2024-12-17 23:59 ` Maxim Levitsky [this message]
2024-12-14 1:07 ` [PATCH 07/20] KVM: selftests: Continuously reap dirty ring while vCPU is running Sean Christopherson
2024-12-18 0:00 ` Maxim Levitsky
2024-12-19 1:50 ` Sean Christopherson
2024-12-14 1:07 ` [PATCH 08/20] KVM: selftests: Limit dirty_log_test's s390x workaround to s390x Sean Christopherson
2024-12-14 1:07 ` [PATCH 09/20] KVM: selftests: Honor "stop" request in dirty ring test Sean Christopherson
2024-12-18 0:00 ` Maxim Levitsky
2024-12-19 2:00 ` Sean Christopherson
2024-12-19 15:07 ` Maxim Levitsky
2024-12-19 15:23 ` Sean Christopherson
2024-12-19 15:57 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 10/20] KVM: selftests: Keep dirty_log_test vCPU in guest until it needs to stop Sean Christopherson
2024-12-18 0:01 ` Maxim Levitsky
2024-12-19 15:59 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 11/20] KVM: selftests: Post to sem_vcpu_stop if and only if vcpu_stop is true Sean Christopherson
2024-12-18 0:01 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 12/20] KVM: selftests: Use continue to handle all "pass" scenarios in dirty_log_test Sean Christopherson
2024-12-18 0:01 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 13/20] KVM: selftests: Print (previous) last_page on dirty page value mismatch Sean Christopherson
2024-12-18 0:01 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 14/20] KVM: selftests: Collect *all* dirty entries in each dirty_log_test iteration Sean Christopherson
2024-12-18 0:02 ` Maxim Levitsky
2024-12-19 2:13 ` Sean Christopherson
2024-12-19 12:55 ` Paolo Bonzini
2024-12-19 15:01 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 15/20] KVM: sefltests: Verify value of dirty_log_test last page isn't bogus Sean Christopherson
2024-12-18 0:02 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 16/20] KVM: selftests: Ensure guest writes min number of pages in dirty_log_test Sean Christopherson
2024-12-18 0:02 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 17/20] KVM: selftests: Tighten checks around prev iter's last dirty page in ring Sean Christopherson
2024-12-18 0:03 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 18/20] KVM: selftests: Set per-iteration variables at the start of each iteration Sean Christopherson
2024-12-14 1:07 ` [PATCH 19/20] KVM: selftests: Fix an off-by-one in the number of dirty_log_test iterations Sean Christopherson
2024-12-18 0:03 ` Maxim Levitsky
2024-12-14 1:07 ` [PATCH 20/20] KVM: selftests: Allow running a single iteration of dirty_log_test Sean Christopherson
2024-12-18 0:03 ` Maxim Levitsky
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=beec72cefd8518aecbf3ecb652c8e79ba71ff266.camel@redhat.com \
--to=mlevitsk@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.