From patchwork Tue Sep 7 18:09:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Koller X-Patchwork-Id: 12479231 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0614C433F5 for ; Tue, 7 Sep 2021 18:10:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7EE8661106 for ; Tue, 7 Sep 2021 18:10:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345651AbhIGSLL (ORCPT ); Tue, 7 Sep 2021 14:11:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235343AbhIGSLK (ORCPT ); Tue, 7 Sep 2021 14:11:10 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5716EC061575 for ; Tue, 7 Sep 2021 11:10:04 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id n9-20020a63f809000000b0026930ed1b24so5297301pgh.23 for ; Tue, 07 Sep 2021 11:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=G7khVBYFvA49zN1MZ52NeR3EN5XVTugXq2LEuJFRcSA=; b=j5Bz7AXuSg3CFWHBEXnXFwThJ99vfcD2XwHZE92kzgu1zge+KC2SWxZD61KbdFqOcR ASi8mmRYrhCFzIel0syhVI1xrdwW7So4mf0kTjL1ajiGQnzgvjxIz3ogBXSdOKsUfqum zKbDsZ6FD/vBqHeqAltqAEMvaZV3SopNjeyIIvAt6BNbxVjycueIl+y4fPhVT8QdxqeA QaJlxgkul+qDZGk4SgsFv40rGrPwaQuYvNu+dLWZEapdx/c6Kr9a8RMuznpAUviZZfeh 9ahG+mehOIbgso7lxiEuic4NL/jCz2X7BVllvRYwv7JigC0jR1nkpR5OmyvQFFf9VfXz tivw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=G7khVBYFvA49zN1MZ52NeR3EN5XVTugXq2LEuJFRcSA=; b=i5vxFVdsqPI3I5CLlM/1BA+C1uHWpBFcBvVkT+MmjL27t7nIkTPnu1NXJeHH+zer6s mzunAYqg2GVprOpPvh0SYNKwIWiGDvWOFFAIQ1UKNhmgpWu3cO02gJ2uFGav2TwZfbPP UiidzSH7fzrogMSefgM6IuQsQmXyPI3El/t5a33gNPBlgDP/oClTPxy3YTCK9H1avvjH /ADBx+pw5cPACgfEkGMICbkkKI9Ww0dFsSoakIyqFssFa7EBR51FEdJk++AtigDGJM3t ocV6xiNac1qYjgab6KeQYVJ5rZS3ZJBSAqaPyCZTkHvwqQeyoYBM1L1Oxs6F9vWqOJQ7 tyKQ== X-Gm-Message-State: AOAM530S1WvXBEihn3eEA8QsojcH0GbrywG6mUWtZoIqoza7wktIH+90 j1fvUmkkpicn06mD7OKakbbnGd27/SOlT/p2GpvM+elyR6aCIXUazS93HJCthdPZB77WcbWEh/M 3kZzRdhuPjBe1zAI6+NapREqWrjiTRbP3EiB3r+06yUzCgvYkfdkIhRzytKfzR6c= X-Google-Smtp-Source: ABdhPJzOG5I1fc7cdWS5mntyea5A+bvSpEcgpb5MNPWkd63BQ4U5Q72ws4t4TnVZOwpxXfsKb56ncunp1kc5Vw== X-Received: from ricarkol2.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:62fe]) (user=ricarkol job=sendgmr) by 2002:a17:902:c613:b0:136:5fc8:5372 with SMTP id r19-20020a170902c61300b001365fc85372mr15873926plr.41.1631038203685; Tue, 07 Sep 2021 11:10:03 -0700 (PDT) Date: Tue, 7 Sep 2021 11:09:56 -0700 In-Reply-To: <20210907180957.609966-1-ricarkol@google.com> Message-Id: <20210907180957.609966-2-ricarkol@google.com> Mime-Version: 1.0 References: <20210907180957.609966-1-ricarkol@google.com> X-Mailer: git-send-email 2.33.0.153.gba50c8fa24-goog Subject: [PATCH v2 1/2] KVM: selftests: make memslot_perf_test arch independent From: Ricardo Koller To: kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu Cc: drjones@redhat.com, Paolo Bonzini , maciej.szmigiero@oracle.com, maz@kernel.org, oupton@google.com, jingzhangos@google.com, pshier@google.com, rananta@google.com, reijiw@google.com, Ricardo Koller Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org memslot_perf_test uses ucalls for synchronization between guest and host. Ucalls API is architecture independent: tests do not need to know details like what kind of exit they generate on a specific arch. More specifically, there is no need to check whether an exit is KVM_EXIT_IO in x86 for the host to know that the exit is ucall related, as get_ucall() already makes that check. Change memslot_perf_test to not require specifying what exit does a ucall generate. Also add a missing ucall_init. Signed-off-by: Ricardo Koller Reviewed-by: Andrew Jones Reviewed-by: Oliver Upton --- .../testing/selftests/kvm/memslot_perf_test.c | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testing/selftests/kvm/memslot_perf_test.c index d6e381e01db7..1727f75e0c2c 100644 --- a/tools/testing/selftests/kvm/memslot_perf_test.c +++ b/tools/testing/selftests/kvm/memslot_perf_test.c @@ -127,43 +127,54 @@ static bool verbose; pr_info(__VA_ARGS__); \ } while (0) +static void check_mmio_access(struct vm_data *vm, struct kvm_run *run) +{ + TEST_ASSERT(vm->mmio_ok, "Unexpected mmio exit"); + TEST_ASSERT(run->mmio.is_write, "Unexpected mmio read"); + TEST_ASSERT(run->mmio.len == 8, + "Unexpected exit mmio size = %u", run->mmio.len); + TEST_ASSERT(run->mmio.phys_addr >= vm->mmio_gpa_min && + run->mmio.phys_addr <= vm->mmio_gpa_max, + "Unexpected exit mmio address = 0x%llx", + run->mmio.phys_addr); +} + static void *vcpu_worker(void *data) { struct vm_data *vm = data; struct kvm_run *run; struct ucall uc; - uint64_t cmd; run = vcpu_state(vm->vm, VCPU_ID); while (1) { vcpu_run(vm->vm, VCPU_ID); - if (run->exit_reason == KVM_EXIT_IO) { - cmd = get_ucall(vm->vm, VCPU_ID, &uc); - if (cmd != UCALL_SYNC) - break; - + switch (get_ucall(vm->vm, VCPU_ID, &uc)) { + case UCALL_SYNC: + TEST_ASSERT(uc.args[1] == 0, + "Unexpected sync ucall, got %lx", + (ulong)uc.args[1]); sem_post(&vcpu_ready); continue; - } - - if (run->exit_reason != KVM_EXIT_MMIO) + case UCALL_NONE: + if (run->exit_reason == KVM_EXIT_MMIO) + check_mmio_access(vm, run); + else + goto done; break; - - TEST_ASSERT(vm->mmio_ok, "Unexpected mmio exit"); - TEST_ASSERT(run->mmio.is_write, "Unexpected mmio read"); - TEST_ASSERT(run->mmio.len == 8, - "Unexpected exit mmio size = %u", run->mmio.len); - TEST_ASSERT(run->mmio.phys_addr >= vm->mmio_gpa_min && - run->mmio.phys_addr <= vm->mmio_gpa_max, - "Unexpected exit mmio address = 0x%llx", - run->mmio.phys_addr); + case UCALL_ABORT: + TEST_FAIL("%s at %s:%ld, val = %lu", + (const char *)uc.args[0], + __FILE__, uc.args[1], uc.args[2]); + break; + case UCALL_DONE: + goto done; + default: + TEST_FAIL("Unknown ucall %lu", uc.cmd); + } } - if (run->exit_reason == KVM_EXIT_IO && cmd == UCALL_ABORT) - TEST_FAIL("%s at %s:%ld, val = %lu", (const char *)uc.args[0], - __FILE__, uc.args[1], uc.args[2]); - +done: return NULL; } @@ -268,6 +279,7 @@ static bool prepare_vm(struct vm_data *data, int nslots, uint64_t *maxslots, TEST_ASSERT(data->hva_slots, "malloc() fail"); data->vm = vm_create_default(VCPU_ID, mempages, guest_code); + ucall_init(data->vm, NULL); pr_info_v("Adding slots 1..%i, each slot with %"PRIu64" pages + %"PRIu64" extra pages last\n", max_mem_slots - 1, data->pages_per_slot, rempages); From patchwork Tue Sep 7 18:09:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Koller X-Patchwork-Id: 12479233 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9029C433F5 for ; Tue, 7 Sep 2021 18:10:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9505661100 for ; Tue, 7 Sep 2021 18:10:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345698AbhIGSLN (ORCPT ); Tue, 7 Sep 2021 14:11:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345653AbhIGSLM (ORCPT ); Tue, 7 Sep 2021 14:11:12 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37770C061575 for ; Tue, 7 Sep 2021 11:10:06 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id b9-20020a5b07890000b0290558245b7eabso152392ybq.10 for ; Tue, 07 Sep 2021 11:10:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=1uFfaY/CovA+5IRgcetklkh/mmF9o80NZlcBkfT1O4k=; b=lqWJXZALiaVw/thW4AlSJVx2csOcUTLC8gGFw2k2qok7tIRUmDd79x8MBXSsqbsadO H0j0Ud0zFUeB7tei+pZ/amtAgtojA0KqfiwwNLwvhmInpbd7YZVthRogTGyP0NRVHbO7 mnvgp6UGg4Mi6M8IYiu/xA2towCK2Pqmwo3rjnlL/kTphVOVhZDy30W6js+zm7gYtmHY il2qjR1iAgevs6kf3GdwSiYuMKwrI5xaVymzq2DeKhFMBhhLxCOl5yI5q9OU1AdypEmd 9+ejT/DsGzLHNschhhkRZI86EI0+rJWc5BTnAaTrJ0oD3Cg/wowg/gj7Jv1ZVKHd/pMC cyCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=1uFfaY/CovA+5IRgcetklkh/mmF9o80NZlcBkfT1O4k=; b=kzwL4/9c8H0OQ/liPWznWJ1jdOtBOYZnu/SmPfF2hYeraFM9xzapRDHRti4iDvfikh 8u1Kxbhr6xQpLIqDv5WtGLl+exToSyFqYkESjdfCdokhDdpcONjfS5kx9bW4T2ziPuPJ oW1EuuXa+s5+0doEpRrNj+jbv3m4SOv+/nQPN1+dVMH2J2+uCgYjMk4kAecobZA8odgn 9UP0MT49gezbuwtcwNDN2yV6Tbk423IR14Od+W0sLMOb2vd99cR7PXItQGGDf1zhfzFW rfN12YkhAWzi+hfb8r1N3aAlJ/K30hCEdBJya5uakiIISrbsjZUAErEaLQbABkYMZlbu +TJA== X-Gm-Message-State: AOAM531Y+ouyi3n7VUobjrDZaZ+7drMPkzmQRJqlwHpFPfOx3Fc+8+gp 0Awps5ye+8y89k7pi58QNOl+Mp5iGnz8CTQ+2Nkmu8ve882xUNNCxSVbGPj1XaizRzB2dU1pm0l xTN6vQO/WnhVFLZHtNAYJNPyjKXq7RSs6rO1R+WC+hor6xL+PssaL/5gNMogMabs= X-Google-Smtp-Source: ABdhPJyadT6SGgfRjBZaa5CqgsqP4c1HP4Y8XQA8avzsmPqGIbF0Sp0hAb5f8uuPoDPcrKeTXyJErM/l/NEZaw== X-Received: from ricarkol2.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:62fe]) (user=ricarkol job=sendgmr) by 2002:a25:b98b:: with SMTP id r11mr23645830ybg.189.1631038205374; Tue, 07 Sep 2021 11:10:05 -0700 (PDT) Date: Tue, 7 Sep 2021 11:09:57 -0700 In-Reply-To: <20210907180957.609966-1-ricarkol@google.com> Message-Id: <20210907180957.609966-3-ricarkol@google.com> Mime-Version: 1.0 References: <20210907180957.609966-1-ricarkol@google.com> X-Mailer: git-send-email 2.33.0.153.gba50c8fa24-goog Subject: [PATCH v2 2/2] KVM: selftests: build the memslot tests for arm64 From: Ricardo Koller To: kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu Cc: drjones@redhat.com, Paolo Bonzini , maciej.szmigiero@oracle.com, maz@kernel.org, oupton@google.com, jingzhangos@google.com, pshier@google.com, rananta@google.com, reijiw@google.com, Ricardo Koller Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add memslot_perf_test and memslot_modification_stress_test to the list of aarch64 selftests. Signed-off-by: Ricardo Koller Reviewed-by: Andrew Jones Reviewed-by: Oliver Upton --- tools/testing/selftests/kvm/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile index 5832f510a16c..5ed203b9314c 100644 --- a/tools/testing/selftests/kvm/Makefile +++ b/tools/testing/selftests/kvm/Makefile @@ -92,6 +92,8 @@ TEST_GEN_PROGS_aarch64 += dirty_log_test TEST_GEN_PROGS_aarch64 += dirty_log_perf_test TEST_GEN_PROGS_aarch64 += kvm_create_max_vcpus TEST_GEN_PROGS_aarch64 += kvm_page_table_test +TEST_GEN_PROGS_aarch64 += memslot_modification_stress_test +TEST_GEN_PROGS_aarch64 += memslot_perf_test TEST_GEN_PROGS_aarch64 += set_memory_region_test TEST_GEN_PROGS_aarch64 += steal_time TEST_GEN_PROGS_aarch64 += kvm_binary_stats_test