Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp716857pxb; Tue, 29 Mar 2022 09:51:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJza6B2bi+qzU4sXa8Zqcu538L+Yf1JabSc1Y3bnJDWB2BYIkQbXPrIqzai7MGPw1fWnHU+W X-Received: by 2002:a05:6122:1354:b0:343:262f:c4c3 with SMTP id f20-20020a056122135400b00343262fc4c3mr10640531vkp.5.1648572672169; Tue, 29 Mar 2022 09:51:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648572672; cv=none; d=google.com; s=arc-20160816; b=tW8AwTbncVufH4/FXCfmFQQcxLMIryF7hNJhpzaf74Id3TcnotJ3L/uFTgK1MZmmFj nM5aD9IpWIBTm2mZ0su2O+FMY6EpjYDspMZ3pXiVeYT/0/QXtJB5E6Nl8d+E4hPJRsjI aRVDRepp34rAd/bxWWBxSqfsLBRE1ADw/4UBqx6ARsfNmEn9JoYGSaqY8bsypXbYRj7P ttkVCG6MpuLgXkLKe8F27Ng+1ra6mhxW/O6eRDb9M1ywymUPj7v7Mcy+o+FuCOL8sAMc 4/YtmWFvZO9pUAPZhcJcJYl265Ykif/0J67GEZ7LOh/u+v7NselG5XrMJ2/1EoItOCUy behg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=7qR3fDUn27oEpIIwllpz0r6x3BaHEzNUBswJgaydd30=; b=srwkmGTtE82hyuslfT4koAaFr5mgGHJUf2NpLfj7bqqL/rrboytbmFr8248WwHaqTK zM+Y9wCdFGfEn78qAIN8h5SmyoNxC2AGEWd01UQ0Qgt/KK+tipIYPWJCdUkuxtcOWP0F 5NTkPY2Av9lLlwBGCejYMvQEOIk6KC0/AX6yqYjPyKZNKLIlFY/AiM4y7Utw3s5UTT1Z JOJLcwcU/tp86ZPIGPmgL0wkSDyRlCMRkd77cJ3Lk3xYlF+B2lPcHPwd/4XVmFsmCLQb qjnBuRJSXNXACPVA23uDSyqsZUv013FANk5q9SZPhrEqYZlVt6BriHwhpfYXPM8NR7Ez 7taQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=Xs4ynKIh; 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=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f11-20020ac5c5ab000000b0033e83170247si4483088vkl.177.2022.03.29.09.50.55; Tue, 29 Mar 2022 09:51:12 -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=@linuxfoundation.org header.s=google header.b=Xs4ynKIh; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237580AbiC2Pfu (ORCPT + 99 others); Tue, 29 Mar 2022 11:35:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235903AbiC2Pfs (ORCPT ); Tue, 29 Mar 2022 11:35:48 -0400 Received: from mail-io1-xd2c.google.com (mail-io1-xd2c.google.com [IPv6:2607:f8b0:4864:20::d2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F23738BD0 for ; Tue, 29 Mar 2022 08:34:05 -0700 (PDT) Received: by mail-io1-xd2c.google.com with SMTP id h63so21388694iof.12 for ; Tue, 29 Mar 2022 08:34:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=7qR3fDUn27oEpIIwllpz0r6x3BaHEzNUBswJgaydd30=; b=Xs4ynKIhvp3D1ePFI2vsI4ssLq9kdvadUuhx+61w0ctFKA1xkx2NcV30/RTf+Xf6Zg DWmwFNCA+/CfwLTDQgkociwIOsBIYU9VFTHMZCUJSElPfKstdZx2O5wCNkKT7hfyb+eN WODxrjNZ6Yrlr042p9ZqwITkMNAvHkhuJ/X4Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=7qR3fDUn27oEpIIwllpz0r6x3BaHEzNUBswJgaydd30=; b=FepG94O5OnxPZdm6fO42+f7NzRaHdDWJFsxnDfGYj165voCqM57a+R+1lZS8enOG9P vXoWHCmsKhXcSENe75ZZGm0x7E2FJSw0BhH55nVuhbqZpCYCyMMXYXhoP0p/NxrytcVd VLva72CBvCbx7QQXYzJ6rPuXRIOOvRyd1Gmmv5ENUuHcWUMuvQ+2TnEaeiI5jP1GVWEp BelI/iVzkRCiDQve5WS1XExkZSehwpoIWFQZkZQS0YqeDhCo1ybQBWFJvzSHUtefzBVV lK2ThbFI+JxZ97gBBS0d/koAQc7mEmzuxbYbWbvZeNyc0yymjV0ELTEgctCjHvqPQnQa vtoA== X-Gm-Message-State: AOAM5320vfwR4zK5eKdj+LxWEHiqeh47LXcNwJtWrHzxCUway5pv6cfR s5NBGzRmjhYIdKOwsMB/R72uBirveOyTXQ== X-Received: by 2002:a05:6638:1f3:b0:319:f6cf:339b with SMTP id t19-20020a05663801f300b00319f6cf339bmr15837859jaq.69.1648568044279; Tue, 29 Mar 2022 08:34:04 -0700 (PDT) Received: from [192.168.1.128] ([71.205.29.0]) by smtp.gmail.com with ESMTPSA id y12-20020a056602164c00b00645cdfb42dasm9958465iow.30.2022.03.29.08.34.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Mar 2022 08:34:03 -0700 (PDT) Subject: Re: [PATCH v5 1/2] selftests/resctrl: Extend CPU vendor detection To: Shaopeng Tan , Fenghua Yu , Reinette Chatre , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Shuah Khan References: <20220323080928.1586408-1-tan.shaopeng@jp.fujitsu.com> <20220323080928.1586408-2-tan.shaopeng@jp.fujitsu.com> From: Shuah Khan Message-ID: <503c663c-1cb1-0a0e-0d0f-eb4a560377c3@linuxfoundation.org> Date: Tue, 29 Mar 2022 09:34:03 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20220323080928.1586408-2-tan.shaopeng@jp.fujitsu.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 On 3/23/22 2:09 AM, Shaopeng Tan wrote: > Currently, the resctrl_tests only has a function to detect AMD vendor. > Since when the Intel Sub-NUMA Clustering feature is enabled, > Intel CMT and MBM counters may not be accurate, > the resctrl_tests also need a function to detect Intel vendor. > And in the future, resctrl_tests will need a function to detect different > vendors, such as Arm. > > Extend the function to detect Intel vendor as well. Also, > this function can be easily extended to detect other vendors. > > Signed-off-by: Shaopeng Tan > --- > tools/testing/selftests/resctrl/cat_test.c | 2 +- > tools/testing/selftests/resctrl/resctrl.h | 5 ++- > .../testing/selftests/resctrl/resctrl_tests.c | 41 ++++++++++++------- > tools/testing/selftests/resctrl/resctrlfs.c | 2 +- > 4 files changed, 33 insertions(+), 17 deletions(-) > > diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c > index cd4f68388e0f..1c5e90c63254 100644 > --- a/tools/testing/selftests/resctrl/cat_test.c > +++ b/tools/testing/selftests/resctrl/cat_test.c > @@ -89,7 +89,7 @@ static int check_results(struct resctrl_val_param *param) > > return show_cache_info(sum_llc_perf_miss, no_of_bits, param->span / 64, > MAX_DIFF, MAX_DIFF_PERCENT, NUM_OF_RUNS, > - !is_amd, false); > + get_vendor() == ARCH_INTEL, false); > } > > void cat_test_cleanup(void) > diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h > index 1ad10c47e31d..f0ded31fb3c7 100644 > --- a/tools/testing/selftests/resctrl/resctrl.h > +++ b/tools/testing/selftests/resctrl/resctrl.h > @@ -34,6 +34,9 @@ > #define L3_MON_PATH "/sys/fs/resctrl/info/L3_MON" > #define L3_MON_FEATURES_PATH "/sys/fs/resctrl/info/L3_MON/mon_features" > > +#define ARCH_INTEL 1 > +#define ARCH_AMD 2 > + > #define PARENT_EXIT(err_msg) \ > do { \ > perror(err_msg); \ > @@ -75,8 +78,8 @@ struct resctrl_val_param { > extern pid_t bm_pid, ppid; > > extern char llc_occup_path[1024]; > -extern bool is_amd; > > +int get_vendor(void); > bool check_resctrlfs_support(void); > int filter_dmesg(void); > int remount_resctrlfs(bool mum_resctrlfs); > diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c > index 973f09a66e1e..3e7cdf1125df 100644 > --- a/tools/testing/selftests/resctrl/resctrl_tests.c > +++ b/tools/testing/selftests/resctrl/resctrl_tests.c > @@ -13,25 +13,41 @@ > #define BENCHMARK_ARGS 64 > #define BENCHMARK_ARG_SIZE 64 > > -bool is_amd; > - > -void detect_amd(void) > +static int detect_vendor(void) > { > FILE *inf = fopen("/proc/cpuinfo", "r"); > + int vendor_id = 0; > + char *s = NULL; > char *res; > > if (!inf) > - return; > + return vendor_id; > > res = fgrep(inf, "vendor_id"); > > - if (res) { > - char *s = strchr(res, ':'); > + if (res) > + s = strchr(res, ':'); > + > + if (s && !strcmp(s, ": GenuineIntel\n")) > + vendor_id = ARCH_INTEL; > + else if (s && !strcmp(s, ": AuthenticAMD\n")) > + vendor_id = ARCH_AMD; > > - is_amd = s && !strcmp(s, ": AuthenticAMD\n"); > - free(res); > - } > fclose(inf); > + free(res); > + return vendor_id; > +} > + > +int get_vendor(void) > +{ > + static int vendor = -1; > + > + if (vendor == -1) > + vendor = detect_vendor(); > + if (vendor == 0) > + ksft_print_msg("Can not get vendor info...\n"); > + > + return vendor; > } > > static void cmd_help(void) > @@ -207,9 +223,6 @@ int main(int argc, char **argv) > if (geteuid() != 0) > return ksft_exit_fail_msg("Not running as root, abort testing.\n"); > > - /* Detect AMD vendor */ > - detect_amd(); > - > if (has_ben) { > /* Extract benchmark command from command line. */ > for (i = ben_ind; i < argc; i++) { > @@ -241,10 +254,10 @@ int main(int argc, char **argv) > > ksft_set_plan(tests ? : 4); > > - if (!is_amd && mbm_test) > + if ((get_vendor() == ARCH_INTEL) && mbm_test) > run_mbm_test(has_ben, benchmark_cmd, span, cpu_no, bw_report); > > - if (!is_amd && mba_test) > + if ((get_vendor() == ARCH_INTEL) && mba_test) > run_mba_test(has_ben, benchmark_cmd, span, cpu_no, bw_report); > > if (cmt_test) > diff --git a/tools/testing/selftests/resctrl/resctrlfs.c b/tools/testing/selftests/resctrl/resctrlfs.c > index 5f5a166ade60..6f543e470ad4 100644 > --- a/tools/testing/selftests/resctrl/resctrlfs.c > +++ b/tools/testing/selftests/resctrl/resctrlfs.c > @@ -106,7 +106,7 @@ int get_resource_id(int cpu_no, int *resource_id) > char phys_pkg_path[1024]; > FILE *fp; > > - if (is_amd) > + if (get_vendor() == ARCH_AMD) > sprintf(phys_pkg_path, "%s%d/cache/index3/id", > PHYS_ID_PATH, cpu_no); > else > Looks good to me. Reviewed-by: Shuah Khan thanks, -- Shuah