From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E6A7A0C54 for ; Fri, 3 Sep 2021 10:37:52 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6D94B406B4; Fri, 3 Sep 2021 10:37:52 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 08351406B4 for ; Fri, 3 Sep 2021 10:37:49 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10095"; a="206488085" X-IronPort-AV: E=Sophos;i="5.85,264,1624345200"; d="scan'208";a="206488085" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Sep 2021 01:37:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,264,1624345200"; d="scan'208";a="533911178" Received: from silpixa00399952.ir.intel.com ([10.55.129.13]) by FMSMGA003.fm.intel.com with ESMTP; 03 Sep 2021 01:37:46 -0700 From: David Hunt To: stable@dpdk.org Cc: david.hunt@intel.com, yux.jiang@intel.com, richael.zhuang@arm.com Date: Fri, 3 Sep 2021 09:37:36 +0100 Message-Id: <20210903083736.27922-1-david.hunt@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-stable] [19.11.9] test/power: fix CPU frequency when turbo enabled X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" On arm platform, the value in "/sys/.../cpuinfo_cur_freq" may not be exactly the same as what was set when using CPPC cpufreq driver. For other cpufreq driver, no need to round it currently, or else this check will fail with turbo enabled. For example, with acpi_cpufreq, cpuinfo_cur_freq can be 2401000 which is equal to freqs[0].It should not be rounded to 2400000. This is a version of the patch for 19.11.9 that fixes this issue withouth the dependency of having the CPPC support applied first (modified version of 29343b9030e38e8c3519ba01cb66724d45b13dc8) Fixes: 606a234c6d360 ("test/power: round CPU frequency to check") Cc: stable@dpdk.org Signed-off-by: David Hunt --- app/test/test_power_cpufreq.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index d0c7e60ca5..51105f35be 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -55,18 +55,20 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) FILE *f; char fullpath[PATH_MAX]; char buf[BUFSIZ]; + enum power_management_env env; uint32_t cur_freq; + uint32_t freq_conv; int ret = -1; int i; if (snprintf(fullpath, sizeof(fullpath), - TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { + TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { return 0; } f = fopen(fullpath, "r"); if (f == NULL) { if (snprintf(fullpath, sizeof(fullpath), - TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { + TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { return 0; } f = fopen(fullpath, "r"); @@ -80,15 +82,20 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) goto fail_all; cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL); - - /* convert the frequency to nearest 100000 value - * Ex: if cur_freq=1396789 then freq_conv=1400000 - * Ex: if cur_freq=800030 then freq_conv=800000 - */ - unsigned int freq_conv = 0; - freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA) - / TEST_ROUND_FREQ_TO_N_100000; - freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000; + freq_conv = cur_freq; + + env = rte_power_get_env(); + + if (env == PM_ENV_PSTATE_CPUFREQ) { + /* convert the frequency to nearest 100000 value + * Ex: if cur_freq=1396789 then freq_conv=1400000 + * Ex: if cur_freq=800030 then freq_conv=800000 + */ + unsigned int freq_conv = 0; + freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA) + / TEST_ROUND_FREQ_TO_N_100000; + freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000; + } if (turbo) ret = (freqs[idx] <= freq_conv ? 0 : -1); -- 2.17.1