From: Shuah Khan <skhan@linuxfoundation.org>
To: Vishal Annapurve <vannapurve@google.com>,
x86@kernel.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org
Cc: 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, shauh@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, seanjc@google.com,
diviness@google.com
Subject: Re: [RFC V2 PATCH 4/8] selftests: kvm: priv_memfd_test: Add shared access test
Date: Thu, 12 May 2022 11:45:52 -0600 [thread overview]
Message-ID: <d908a526-7367-366d-9f45-f40274c1b27e@linuxfoundation.org> (raw)
In-Reply-To: <20220511000811.384766-5-vannapurve@google.com>
On 5/10/22 6:08 PM, Vishal Annapurve wrote:
> Add a test to access private memory in shared fashion
> which should exercise implicit memory conversion path
> using KVM_EXIT_MEMORY_ERROR.
>
This comment applies all patches in this series. Keep commit log
line length around 76 for readability in "git log" display.
Also same comment about combining lines of code when it isn't
necessary to split them, align the lines with parenthesis to
make it easier to read, and run checkpatch.
> Signed-off-by: Vishal Annapurve <vannapurve@google.com>
> ---
> tools/testing/selftests/kvm/priv_memfd_test.c | 69 +++++++++++++++++++
> 1 file changed, 69 insertions(+)
>
> diff --git a/tools/testing/selftests/kvm/priv_memfd_test.c b/tools/testing/selftests/kvm/priv_memfd_test.c
> index 55e24c893b07..48bc4343e7b5 100644
> --- a/tools/testing/selftests/kvm/priv_memfd_test.c
> +++ b/tools/testing/selftests/kvm/priv_memfd_test.c
> @@ -147,12 +147,81 @@ static void pmpat_guest_code(void)
> GUEST_DONE();
> }
>
> +/* Test to verify guest shared accesses on private memory with following steps:
> + * 1) Upon entry, guest signals VMM that it has started.
> + * 2) VMM populates the shared memory with known pattern and continues guest
> + * execution.
> + * 3) Guest reads private gpa range in a shared fashion and verifies that it
> + * reads what VMM has written in step2.
> + * 3) Guest writes a different pattern on the shared memory and signals VMM
> + * that it has updated the shared memory.
> + * 4) VMM verifies shared memory contents to be same as the data populated
> + * in step 3 and continues guest execution.
> + */
> +#define PMSAT_ID 1
> +#define PMSAT_DESC "PrivateMemorySharedAccessTest"
> +
> +/* Guest code execution stages for private mem access test */
> +#define PMSAT_GUEST_STARTED 0ULL
> +#define PMSAT_GUEST_TEST_MEM_UPDATED 1ULL
> +
> +static bool pmsat_handle_vm_stage(struct kvm_vm *vm,
> + void *test_info,
> + uint64_t stage)
> +{
> + void *shared_mem = ((struct test_run_helper *)test_info)->shared_mem;
> +
> + switch (stage) {
> + case PMSAT_GUEST_STARTED: {
> + /* Initialize the contents of shared memory */
> + TEST_ASSERT(do_mem_op(SET_PAT, shared_mem,
> + TEST_MEM_DATA_PAT1, TEST_MEM_SIZE),
> + "Shared memory update failed");
> + VM_STAGE_PROCESSED(PMSAT_GUEST_STARTED);
> + break;
> + }
> + case PMSAT_GUEST_TEST_MEM_UPDATED: {
> + /* verify data to be same as what guest wrote */
> + TEST_ASSERT(do_mem_op(VERIFY_PAT, shared_mem,
> + TEST_MEM_DATA_PAT2, TEST_MEM_SIZE),
> + "Shared memory view mismatch");
> + VM_STAGE_PROCESSED(PMSAT_GUEST_TEST_MEM_UPDATED);
> + break;
> + }
> + default:
> + printf("Unhandled VM stage %ld\n", stage);
Is this a test failure? Add more information to use why it isn't handled.
> + return false;
> + }
> +
> + return true;
> +}
> +
> +static void pmsat_guest_code(void)
> +{
> + void *shared_mem = (void *)TEST_MEM_GPA;
> +
> + GUEST_SYNC(PMSAT_GUEST_STARTED);
> + GUEST_ASSERT(do_mem_op(VERIFY_PAT, shared_mem,
> + TEST_MEM_DATA_PAT1, TEST_MEM_SIZE));
> +
> + GUEST_ASSERT(do_mem_op(SET_PAT, shared_mem,
> + TEST_MEM_DATA_PAT2, TEST_MEM_SIZE));
> + GUEST_SYNC(PMSAT_GUEST_TEST_MEM_UPDATED);
> +
> + GUEST_DONE();
> +}
> +
> static struct test_run_helper priv_memfd_testsuite[] = {
> [PMPAT_ID] = {
> .test_desc = PMPAT_DESC,
> .vmst_handler = pmpat_handle_vm_stage,
> .guest_fn = pmpat_guest_code,
> },
> + [PMSAT_ID] = {
> + .test_desc = PMSAT_DESC,
> + .vmst_handler = pmsat_handle_vm_stage,
> + .guest_fn = pmsat_guest_code,
> + },
> };
>
> static void handle_vm_exit_hypercall(struct kvm_run *run,
>
thanks,
-- Shuah
next prev parent reply other threads:[~2022-05-12 17:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-11 0:08 [RFC V2 PATCH 0/8] selftests: KVM: selftests for fd-based approach of supporting private memory Vishal Annapurve
2022-05-11 0:08 ` [RFC V2 PATCH 1/8] selftests: kvm: Fix inline assembly for hypercall Vishal Annapurve
2022-05-12 17:31 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 2/8] selftests: kvm: Add a basic selftest to test private memory Vishal Annapurve
2022-05-12 17:29 ` Shuah Khan
2022-07-20 23:03 ` Sean Christopherson
2022-07-21 20:24 ` Vishal Annapurve
2022-07-21 21:16 ` Sean Christopherson
2022-05-11 0:08 ` [RFC V2 PATCH 3/8] selftests: kvm: priv_memfd_test: Add support for memory conversion Vishal Annapurve
2022-05-12 17:40 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 4/8] selftests: kvm: priv_memfd_test: Add shared access test Vishal Annapurve
2022-05-12 17:45 ` Shuah Khan [this message]
2022-05-11 0:08 ` [RFC V2 PATCH 5/8] selftests: kvm: Add implicit memory conversion tests Vishal Annapurve
2022-05-12 17:48 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 6/8] selftests: kvm: Add KVM_HC_MAP_GPA_RANGE hypercall test Vishal Annapurve
2022-05-12 17:50 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 7/8] selftests: kvm: Add hugepage support to priv_memfd_test suite Vishal Annapurve
2022-05-12 17:51 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 8/8] selftests: kvm: priv_memfd: Add test avoiding double allocation Vishal Annapurve
2022-05-12 17:52 ` Shuah Khan
2022-05-11 0:08 ` [RFC V2 PATCH 8/8] selftests: kvm: priv_memfd: Add test without " Vishal Annapurve
2022-05-12 18:04 ` [RFC V2 PATCH 0/8] selftests: KVM: selftests for fd-based approach of supporting private memory Shuah Khan
2022-05-12 18:18 ` Vishal Annapurve
2022-07-20 22:19 ` Sean Christopherson
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=d908a526-7367-366d-9f45-f40274c1b27e@linuxfoundation.org \
--to=skhan@linuxfoundation.org \
--cc=aaronlewis@google.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=bfields@fieldses.org \
--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=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=marcorr@google.com \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=pgonda@google.com \
--cc=qperret@google.com \
--cc=ricarkol@google.com \
--cc=seanjc@google.com \
--cc=shauh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox