Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp985791pxb; Fri, 15 Apr 2022 17:27:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzBu4Nacgbwl2J6XKcJXUOCEcRXn0q+d4K2hv2t5f5uwvI3o1Nw8OjqFJbPzORRof1lZLbc X-Received: by 2002:a17:902:9a81:b0:158:b09e:5287 with SMTP id w1-20020a1709029a8100b00158b09e5287mr1219161plp.170.1650068856848; Fri, 15 Apr 2022 17:27:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650068856; cv=none; d=google.com; s=arc-20160816; b=uli3SBynxwKacsgJtXVmThpk7VQRbrXu7g6bXSZ37+yDEQE6Pstcbo8FuXCMslDOmq SQmUijrdDv6c5uPTvS1JlxH9xE02O443CqlZn962nkyHryZWhsiA7z6SKbuHhIZPvBmm 8R/cvpkx/JZtCKj0zV5wH2xNfRqcX6ABD/ytnYL0YgIZljFARxzlPUvTG5HKJKmAP6DK +j8P2Fp2w1Ev7B+LiWJsYiQ7gNga1XNPSAcAv3UmC4qhAImztGeDmFcZZIVUPbDn3xGG C7LMNNKlr7OuWr6F/itDPczr5o3R/wPyjcMdoTVvGL6552xljdCW6S8DsK3cTDQFyZ4A TkLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=1aJnO8lXqf7RCGk9jNC6pJ0LNJHRPu30/MOzaQ/zXk4=; b=xSzS1X1ARZFLuoNVW5rZCOJJUk7a9+B/zG3jFKFHo+YukF6K4rj7AgU5s8gPuw7i4V VOnYJJ6SSzcfICT6A1S97E5LnHajKkZhg8J2Xx/eQyViBQRJft0tvPMoaY0fqSsonSQJ dLqkeryGyk+6gDXC32FlToHx5mCPipah7hi+KlK1GFDja0cw2X/iMdLdocYFO0s2dzD/ dX7XGpkr6nnuTeRfFpts5ufnk37PVStLBeHUY4xgEV1JERsz4r7tbKOIxEFVvR1QXFuR Zx8GOjZdDf75vLubEkQ8Mjp2WanYH/f/lZx5g4oAy1BENSsqTGioJEYxNdLx9s4QZhKP PFxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=bFfGgG4u; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id b7-20020a170902b60700b00153b2d1647dsi2596904pls.133.2022.04.15.17.27.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Apr 2022 17:27:36 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=bFfGgG4u; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 12FD8E5E09; Fri, 15 Apr 2022 17:25:24 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346695AbiDNVC1 (ORCPT + 99 others); Thu, 14 Apr 2022 17:02:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239824AbiDNVCZ (ORCPT ); Thu, 14 Apr 2022 17:02:25 -0400 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F674D1112 for ; Thu, 14 Apr 2022 13:59:58 -0700 (PDT) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-2eba37104a2so68435307b3.0 for ; Thu, 14 Apr 2022 13:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1aJnO8lXqf7RCGk9jNC6pJ0LNJHRPu30/MOzaQ/zXk4=; b=bFfGgG4u/HF6NPvqJorGGLYVtyq8CxpSSYFYp9SMh0iAVxOgGIPKcOEczvTUEVT0wL oU7HhQrgtHR1O1GcCef3JwMBFqGyqWXUKNCaKp7q+AzDf5Kb8WE1qLopEioDdk3lJGDM 0yLQJVpCXhDLLdnG9SQ4W0hWp90RYzdcWMitIqHulfXgwSCeCpXRWuyACyFjOrD5Z9tH na4t7OMrN6u1vqioRcNn1NRVUKz5XADQrvjbC7nP8Fzorf93u43zmHN81RXzkuv8UOYu VYVHaPTpKP4isiO4CnGQBPG2fyTWkYnuINpVoLRGMFu/hd4DQClQigGdkoONSBEsHhLm EDZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1aJnO8lXqf7RCGk9jNC6pJ0LNJHRPu30/MOzaQ/zXk4=; b=YfsWyWTQSpj8PcC+5aj1Zkovz1JyxPxPg4YDmZZpSne0CgBQ2X/hZtTc7bfbMAbRkU lCT349aLd4VpCN9JbqwnDv6EhfC23LOkYp25PJp0vUT4HKTa32tNeTqBT9SxjPt2d+XL Ab3Av+cYHuXSZEPjCjky+kmp50jgW8IObDNGpua7qXdkLvVlKJYIMhxauI/ey9YFuHiV e8VNq9bzSmL5fMdAReYV6lyg1aMHNUoKeMXNNuTk8RGjOKnbKJHLgLC5yz4nPEKokS1E MIT7lJH2VeJKw38Hsu+I38edhi4fUMT8c8xfE6DXEO63iE91ZWFVdqLs+jywm/G7ObJU S+tA== X-Gm-Message-State: AOAM532qMJbhXBHqFTc2ucX2z2zzAscMayxBMsbcaOFc2N4RPTWmU+qH VCttJnrgj7AvmTpG9kWa7VbPiiHJc+uyN5kzHi4EIA== X-Received: by 2002:a81:a1c1:0:b0:2eb:fb9c:c4e5 with SMTP id y184-20020a81a1c1000000b002ebfb9cc4e5mr3394257ywg.156.1649969997420; Thu, 14 Apr 2022 13:59:57 -0700 (PDT) MIME-Version: 1.0 References: <20220413175944.71705-1-bgardon@google.com> <20220413175944.71705-7-bgardon@google.com> In-Reply-To: From: Ben Gardon Date: Thu, 14 Apr 2022 13:59:46 -0700 Message-ID: Subject: Re: [PATCH v5 06/10] KVM: selftests: Add NX huge pages test To: Sean Christopherson Cc: LKML , kvm , Paolo Bonzini , Peter Xu , David Matlack , Jim Mattson , David Dunn , Jing Zhang , Junaid Shahid Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 13, 2022 at 3:35 PM Sean Christopherson wrote: > > On Wed, Apr 13, 2022, Ben Gardon wrote: > > There's currently no test coverage of NX hugepages in KVM selftests, so > > add a basic test to ensure that the feature works as intended. > > ... > > > diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c > > new file mode 100644 > > index 000000000000..7f80e48781fd > > --- /dev/null > > +++ b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c > > @@ -0,0 +1,166 @@ > > +// SPDX-License-Identifier: GPL-2.0-only > > +/* > > + * tools/testing/selftests/kvm/nx_huge_page_test.c > > + * > > + * Usage: to be run via nx_huge_page_test.sh, which does the necessary > > + * environment setup and teardown > > It would be really nice if this test could either (a) do something useful without > having to manually set /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages, > or (b) refuse to run unless it's (likely) been invoked by the script. E.g. maybe > add a magic token that must be passed in? That way just running the bare test > will provide a helpful skip message, but someone that wants to fiddle with it can > still run it manually. > > > +int main(int argc, char **argv) > > +{ > > + struct kvm_vm *vm; > > + struct timespec ts; > > + void *hva; > > This needs to check if the workaround is actually enabled via module param. Not > as big a deal if there's a magic number, but it's also not too hard to query a > module param. Or at least, it shouldn't be, I'm fairly certain that's one of the > things I want to address in the selftests overhaul. > > Aha! Actually, IIUC, the patch that validates the per-VM override adds full support > for the module param being turned off. > > So, how about pull in the tweaks to the expected number to this patch, and then > the per-VM override test just makes disable_nx a logical OR of the module param > beyond off or the test using the per-VM override. > > > diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh > > new file mode 100755 > > index 000000000000..19fc95723fcb > > --- /dev/null > > +++ b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.sh > > @@ -0,0 +1,25 @@ > > +#!/bin/bash > > +# SPDX-License-Identifier: GPL-2.0-only */ > > + > > +# tools/testing/selftests/kvm/nx_huge_page_test.sh > > +# Copyright (C) 2022, Google LLC. > > This should either check for root or use sudo. Is there not any scenario where the below setup commands could work without root? > > > +NX_HUGE_PAGES=$(cat /sys/module/kvm/parameters/nx_huge_pages) > > +NX_HUGE_PAGES_RECOVERY_RATIO=$(cat /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio) > > +NX_HUGE_PAGES_RECOVERY_PERIOD=$(cat /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms) > > +HUGE_PAGES=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) > > + > > +echo 1 > /sys/module/kvm/parameters/nx_huge_pages > > +echo 1 > /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio > > +echo 100 > /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms > > +echo 200 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages > > + > > +./nx_huge_pages_test > > I would much prefer this find its path and use that to reference the test, e.g. this > fails if invoking the script from anything but the x86_64 subdirectory. I'd provide > a snippet of how to do that, but my scripting skills are garbage :-) > > > +RET=$? > > + > > +echo $NX_HUGE_PAGES > /sys/module/kvm/parameters/nx_huge_pages > > +echo $NX_HUGE_PAGES_RECOVERY_RATIO > /sys/module/kvm/parameters/nx_huge_pages_recovery_ratio > > +echo $NX_HUGE_PAGES_RECOVERY_PERIOD > /sys/module/kvm/parameters/nx_huge_pages_recovery_period_ms > > +echo $HUGE_PAGES > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages > > + > > +exit $RET > > -- > > 2.35.1.1178.g4f1659d476-goog > >