From: Sean Christopherson <seanjc@google.com>
To: Vishal Annapurve <vannapurve@google.com>
Cc: x86@kernel.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
pbonzini@redhat.com, vkuznets@redhat.com, wanpengli@tencent.com,
jmattson@google.com, joro@8bytes.org, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
hpa@zytor.com, shuah@kernel.org, yang.zhong@intel.com,
drjones@redhat.com, ricarkol@google.com, aaronlewis@google.com,
wei.w.wang@intel.com, kirill.shutemov@linux.intel.com,
corbet@lwn.net, hughd@google.com, jlayton@kernel.org,
bfields@fieldses.org, akpm@linux-foundation.org,
chao.p.peng@linux.intel.com, yu.c.zhang@linux.intel.com,
jun.nakajima@intel.com, dave.hansen@intel.com,
michael.roth@amd.com, qperret@google.com, steven.price@arm.com,
ak@linux.intel.com, david@redhat.com, luto@kernel.org,
vbabka@suse.cz, marcorr@google.com, erdemaktas@google.com,
pgonda@google.com, nikunj@amd.com, diviness@google.com,
maz@kernel.org, dmatlack@google.com, axelrasmussen@google.com,
maciej.szmigiero@oracle.com, mizhang@google.com,
bgardon@google.com
Subject: Re: [RFC V3 PATCH 6/6] sefltests: kvm: x86: Add selftest for private memory
Date: Thu, 6 Oct 2022 20:23:52 +0000 [thread overview]
Message-ID: <Yz85WEQWsXAbLWnu@google.com> (raw)
In-Reply-To: <20220819174659.2427983-7-vannapurve@google.com>
On Fri, Aug 19, 2022, Vishal Annapurve wrote:
> +static bool verify_mem_contents(void *mem, uint32_t size, uint8_t pat)
As per feedback in v1[*], spell out "pattern".
[*] https://lore.kernel.org/all/YtiJx11AZHslcGnN@google.com
> +{
> + uint8_t *buf = (uint8_t *)mem;
> +
> + for (uint32_t i = 0; i < size; i++) {
> + if (buf[i] != pat)
> + return false;
> + }
> +
> + return true;
> +}
> +
> +/*
> + * Add custom implementation for memset to avoid using standard/builtin memset
> + * which may use features like SSE/GOT that don't work with guest vm execution
> + * within selftests.
> + */
> +void *memset(void *mem, int byte, size_t size)
> +{
> + uint8_t *buf = (uint8_t *)mem;
> +
> + for (uint32_t i = 0; i < size; i++)
> + buf[i] = byte;
> +
> + return buf;
> +}
memset(), memcpy(), and memcmp() are safe to use as of commit 6b6f71484bf4 ("KVM:
selftests: Implement memcmp(), memcpy(), and memset() for guest use").
Note the "fun" with gcc "optimizing" into infinite recursion... :-)
> +
> +static void populate_test_area(void *test_area_base, uint64_t pat)
> +{
> + memset(test_area_base, pat, TEST_AREA_SIZE);
> +}
> +
> +static void populate_guest_test_mem(void *guest_test_mem, uint64_t pat)
> +{
> + memset(guest_test_mem, pat, GUEST_TEST_MEM_SIZE);
> +}
> +
> +static bool verify_test_area(void *test_area_base, uint64_t area_pat,
> + uint64_t guest_pat)
Again, avoid "pat".
> +{
> + void *test_area1_base = test_area_base;
> + uint64_t test_area1_size = GUEST_TEST_MEM_OFFSET;
> + void *guest_test_mem = test_area_base + test_area1_size;
> + uint64_t guest_test_size = GUEST_TEST_MEM_SIZE;
> + void *test_area2_base = guest_test_mem + guest_test_size;
> + uint64_t test_area2_size = (TEST_AREA_SIZE - (GUEST_TEST_MEM_OFFSET +
> + GUEST_TEST_MEM_SIZE));
This is all amazingly hard to read. AFAICT, the local variables are largely useless.
Actually, why even take in @test_area_base, isn't it hardcoded to TEST_AREA_GPA?
Then everything except the pattern can be hardcoded.
> + return (verify_mem_contents(test_area1_base, test_area1_size, area_pat) &&
> + verify_mem_contents(guest_test_mem, guest_test_size, guest_pat) &&
> + verify_mem_contents(test_area2_base, test_area2_size, area_pat));
> +}
next prev parent reply other threads:[~2022-10-06 20:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-19 17:46 [RFC V3 PATCH 0/6] selftests: KVM: selftests for fd-based private memory Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 1/6] kvm: x86: Add support for testing " Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 2/6] selftests: kvm: Add support for " Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 3/6] selftests: kvm: ucall: Allow querying ucall pool gpa Vishal Annapurve
2022-10-06 20:02 ` Sean Christopherson
2022-10-14 9:33 ` Vishal Annapurve
2022-10-14 18:47 ` Sean Christopherson
2022-10-17 10:00 ` Vishal Annapurve
2022-10-17 18:08 ` Sean Christopherson
2022-10-18 13:11 ` Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 4/6] selftests: kvm: x86: Execute hypercall as per the cpu Vishal Annapurve
2022-08-25 0:07 ` Sean Christopherson
2022-09-06 22:48 ` Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 5/6] selftests: kvm: x86: Execute VMs with private memory Vishal Annapurve
2022-10-06 20:17 ` Sean Christopherson
2022-10-14 9:35 ` Vishal Annapurve
2022-08-19 17:46 ` [RFC V3 PATCH 6/6] sefltests: kvm: x86: Add selftest for " Vishal Annapurve
2022-10-06 20:23 ` Sean Christopherson [this message]
2022-10-14 9:41 ` Vishal Annapurve
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=Yz85WEQWsXAbLWnu@google.com \
--to=seanjc@google.com \
--cc=aaronlewis@google.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=bfields@fieldses.org \
--cc=bgardon@google.com \
--cc=bp@alien8.de \
--cc=chao.p.peng@linux.intel.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=david@redhat.com \
--cc=diviness@google.com \
--cc=dmatlack@google.com \
--cc=drjones@redhat.com \
--cc=erdemaktas@google.com \
--cc=hpa@zytor.com \
--cc=hughd@google.com \
--cc=jlayton@kernel.org \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=jun.nakajima@intel.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@kernel.org \
--cc=maciej.szmigiero@oracle.com \
--cc=marcorr@google.com \
--cc=maz@kernel.org \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=mizhang@google.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=pgonda@google.com \
--cc=qperret@google.com \
--cc=ricarkol@google.com \
--cc=shuah@kernel.org \
--cc=steven.price@arm.com \
--cc=tglx@linutronix.de \
--cc=vannapurve@google.com \
--cc=vbabka@suse.cz \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=wei.w.wang@intel.com \
--cc=x86@kernel.org \
--cc=yang.zhong@intel.com \
--cc=yu.c.zhang@linux.intel.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.