Received: by 2002:a5d:925a:0:0:0:0:0 with SMTP id e26csp1840388iol; Fri, 10 Jun 2022 16:38:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwBb1N04WBrikNVGV2f36zjvVafWGgwlnsl6O3bRtaoagi1NSxqNktZ9ghvmTBONsIu/XFi X-Received: by 2002:a05:6402:2816:b0:431:87c8:b483 with SMTP id h22-20020a056402281600b0043187c8b483mr25919579ede.426.1654904280084; Fri, 10 Jun 2022 16:38:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654904280; cv=none; d=google.com; s=arc-20160816; b=Hae6q2ufDn3FUMuO4nbOEPLWLA+o1+pEHnD2BZ/VXz2y12xC6xPFqyrcLKyMtKZAkc Ie8PAq30LUeDQ+lrzMVh8oGQaTysQGXbNla+YWWKBLK2EIsAh5xNpOzqAneui7eDeRr1 mMJC1LyhHDHrkh2N6LW9zSSx6PamEhf54tGD4+iKLv6jMBaGHz7H73IsCvVrPv/INvw2 B3oskhgiRaHky5Zv+fojQQspuqxHy9vh61EHG3jwXmQvRsPmV7mlebACiOdlG4yH4GWl Ecpva39hs3rtqIoj7HYocqzMfNAhU+VhBxBdpCxePaGZGQUSI62ZG9SEPBpN//RQZX3b NGZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=OIxSmmNZgb3ZOAN1Vi1YiiS/qbh9zt4pIJ3I0mK82yI=; b=SWRNvdmigtlzT2eSgBpVKMFs68jpX+GMbCfwnvy6X/jJatw6RfZcRbrgsI8QK+GjjL 4F5b/j6OfLnfrjN2vXXpL1LWi7IlLKwdaaX3HvWXIneq812uzwxVmgplrDOefDrC7VlM Uj+7MWOPVafK6v/vWV/op4wplPHHWha+hmMzilnoNw/TL+KAjOz0UQGnHsSIxjglcSZA U9HyD4h+NTVmzJAy26rffEO65RGSiIP/SuXhk5saESBWMrimnzPJfx8fw3flMTc1Xicq mjE/CloJUnVLxTSySQa1sxypHk/LoCyhSQdhY0SZAVxVMa1d2PlH3XcMOQ8ky4Owm+qI MGBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NM2Nv1RJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id du1-20020a17090772c100b006fec90d6cacsi352945ejc.838.2022.06.10.16.37.34; Fri, 10 Jun 2022 16:38:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NM2Nv1RJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350971AbiFJXgY (ORCPT + 99 others); Fri, 10 Jun 2022 19:36:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350667AbiFJXfx (ORCPT ); Fri, 10 Jun 2022 19:35:53 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B5ED28DC24; Fri, 10 Jun 2022 16:35:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654904137; x=1686440137; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ERLwkkEZpG4vAVBowWhSWiEDw3prKfNk8Uv0IINg8GY=; b=NM2Nv1RJhWXipny78QO3ledJOpt/2B5RKA3Fea73bsYON/r8UXOJejrL vchCs2G8aW/aVTxabyxsS2WrAgMXQaTOeLW1TLpmZvrAmhp1Hl4IjTcy+ TB5JQ/pL+jG5H/GVuxlsmYjxjrk3A8LW9arW0cFptAKfSSQINzHhhrJDj ae2NARnh6HQYKnf0Wh5jYmRR4crwoueO6G8JjofTwyrsUTb3q7y83k/pR vcvP2vLIrXmFzCIP06oOPsekrGBd43pQ4JTZWc5n9H3oQeVl7U2oh8JfA wqmxh7AyiB490Vz5r6J5YyqMiuKWLBD0hUJoV3RirUwZxj+/PKj8l1pHK Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10374"; a="258214071" X-IronPort-AV: E=Sophos;i="5.91,291,1647327600"; d="scan'208";a="258214071" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 16:35:36 -0700 X-IronPort-AV: E=Sophos;i="5.91,291,1647327600"; d="scan'208";a="760716836" Received: from pleung-mobl1.amr.corp.intel.com (HELO localhost) ([10.212.33.34]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 16:35:36 -0700 From: ira.weiny@intel.com To: linux-api@vger.kernel.org Cc: Ira Weiny , Dave Hansen , "Aneesh Kumar K . V" , Sohil Mehta , x86@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: [RFC PATCH 1/6] testing/pkeys: Add command line options Date: Fri, 10 Jun 2022 16:35:28 -0700 Message-Id: <20220610233533.3649584-2-ira.weiny@intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220610233533.3649584-1-ira.weiny@intel.com> References: <20220610233533.3649584-1-ira.weiny@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 From: Ira Weiny It is more convenient to use command line options for debug and iterations vs changing the code and recompiling. Add command line options for debug level and number of iterations. $ ./protection_keys_64 -h Usage: ./protection_keys_64 [-h,-d,-i ] --help,-h This help --debug,-d Increase debug level for each -d --iterations,-i repeate test times default: 22 Cc: Dave Hansen Cc: Aneesh Kumar K.V Signed-off-by: Ira Weiny --- tools/testing/selftests/vm/pkey-helpers.h | 7 +-- tools/testing/selftests/vm/protection_keys.c | 59 +++++++++++++++++--- 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/vm/pkey-helpers.h b/tools/testing/selftests/vm/pkey-helpers.h index 92f3be3dd8e5..7aaac1c8ebca 100644 --- a/tools/testing/selftests/vm/pkey-helpers.h +++ b/tools/testing/selftests/vm/pkey-helpers.h @@ -23,9 +23,8 @@ #define PTR_ERR_ENOTSUP ((void *)-ENOTSUP) -#ifndef DEBUG_LEVEL -#define DEBUG_LEVEL 0 -#endif +extern int debug_level; + #define DPRINT_IN_SIGNAL_BUF_SIZE 4096 extern int dprint_in_signal; extern char dprint_in_signal_buffer[DPRINT_IN_SIGNAL_BUF_SIZE]; @@ -58,7 +57,7 @@ static inline void sigsafe_printf(const char *format, ...) } } #define dprintf_level(level, args...) do { \ - if (level <= DEBUG_LEVEL) \ + if (level <= debug_level) \ sigsafe_printf(args); \ } while (0) #define dprintf0(args...) dprintf_level(0, args) diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c index 291bc1e07842..d0183c381859 100644 --- a/tools/testing/selftests/vm/protection_keys.c +++ b/tools/testing/selftests/vm/protection_keys.c @@ -44,9 +44,13 @@ #include #include #include +#include #include "pkey-helpers.h" +#define DEFAULT_ITERATIONS 22 + +int debug_level; int iteration_nr = 1; int test_nr; @@ -361,7 +365,7 @@ void signal_handler(int signum, siginfo_t *si, void *vucontext) * here. */ dprintf1("pkey_reg_xstate_offset: %d\n", pkey_reg_xstate_offset()); - if (DEBUG_LEVEL > 4) + if (debug_level > 4) dump_mem(pkey_reg_ptr - 128, 256); pkey_assert(*pkey_reg_ptr); #endif /* arch */ @@ -480,7 +484,7 @@ int sys_mprotect_pkey(void *ptr, size_t size, unsigned long orig_prot, dprintf2("SYS_mprotect_key sret: %d\n", sret); dprintf2("SYS_mprotect_key prot: 0x%lx\n", orig_prot); dprintf2("SYS_mprotect_key failed, errno: %d\n", errno); - if (DEBUG_LEVEL >= 2) + if (debug_level >= 2) perror("SYS_mprotect_pkey"); } return sret; @@ -1116,7 +1120,7 @@ void test_kernel_write_of_write_disabled_region(int *ptr, u16 pkey) pkey_write_deny(pkey); ret = read(test_fd, ptr, 100); dprintf1("read ret: %d\n", ret); - if (ret < 0 && (DEBUG_LEVEL > 0)) + if (ret < 0 && (debug_level > 0)) perror("verbose read result (OK for this to be bad)"); pkey_assert(ret); } @@ -1155,7 +1159,7 @@ void test_kernel_gup_write_to_write_disabled_region(int *ptr, u16 pkey) pkey_write_deny(pkey); futex_ret = syscall(SYS_futex, ptr, FUTEX_WAIT, some_int-1, NULL, &ignored, ignored); - if (DEBUG_LEVEL > 0) + if (debug_level > 0) perror("futex"); dprintf1("futex() ret: %d\n", futex_ret); } @@ -1626,11 +1630,52 @@ void pkey_setup_shadow(void) shadow_pkey_reg = __read_pkey_reg(); } -int main(void) +static void print_help_and_exit(char *argv0) +{ + printf("Usage: %s [-h,-d,-i ]\n", argv0); + printf(" --help,-h This help\n"); + printf(" --debug,-d Increase debug level for each -d\n"); + printf(" --iterations,-i repeate test times\n"); + printf(" default: %d\n", DEFAULT_ITERATIONS); + printf("\n"); +} + +int main(int argc, char *argv[]) { - int nr_iterations = 22; - int pkeys_supported = is_pkeys_supported(); + int nr_iterations = DEFAULT_ITERATIONS; + int pkeys_supported; + + while (1) { + static struct option long_options[] = { + {"help", no_argument, 0, 'h' }, + {"debug", no_argument, 0, 'd' }, + {"iterations", required_argument, 0, 'i' }, + {0, 0, 0, 0 } + }; + int option_index = 0; + int c; + + c = getopt_long(argc, argv, "hdi:", long_options, &option_index); + if (c == -1) + break; + + switch (c) { + case 'h': + print_help_and_exit(argv[0]); + return 0; + case 'd': + debug_level++; + break; + case 'i': + nr_iterations = strtoul(optarg, NULL, 0); + break; + default: + print_help_and_exit(argv[0]); + exit(-1); + } + } + pkeys_supported = is_pkeys_supported(); srand((unsigned int)time(NULL)); setup_handlers(); -- 2.35.1