From patchwork Wed Jun 5 22:45:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 801830 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2045.outbound.protection.outlook.com [40.107.93.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1166B1649D1; Wed, 5 Jun 2024 22:45:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627555; cv=fail; b=VTPwrPav/xpfs2PDdTT8miGU4z+5gxqkj1oJyA1BPddwpRzhXZWvVc0TYtzXvnLUt/vehXB5+7nrWW0E5YYN/XbnJ0zsMcvPAnvm1sUQfsgDlphDsLuPH/Dopp2XoKBtC0Ghy13eJweITwhm+ojYp6/XWYDy65jnVJvPtl6rYCs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627555; c=relaxed/simple; bh=2/gBgUXQHMkl85JHUeQKee2dQH3/OKoueMiq6XI4WkU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=o4wnvRrOASHPgY8R96BdBbFHjAWGEj0qypCdj0rA1uNzTImgSkg2+T3pVyCtn3HiFjTlPteC25BA2/BJ+FSqxLQfnKb5fgFyNbprY7cAY38hF5+QPj+73njZCWjn/KWaNRyCnwBSf4DUtWmgwjPtaxDMkdTS7T+GnzeLwEMklY8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=chOTTZXC; arc=fail smtp.client-ip=40.107.93.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="chOTTZXC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MfIWDt1sGdh95vAJMJZBXa6FiqPpLGxlOL2mlV0UQXtmWNIiNCHbIur3nsizw66dyct9YBK8eBdiSR1BJIkSkmKj2kdWcLCoXT0dM+j2iWDH1GCjb3hBgyryrR+XBOg43zYcdyCX0z/GykYkhxdXPT1XNLBwYxNfrXMgN0yIzsj+vHwkJ8iMRnebSulAjqbyEwcZpc4jypgIpe7KmbbSZgMPbLQHYjms//KosHFXzT5RMjDmj723TJ0tdQHPR1Y1SAQbO6Kj5cJI6Akb2ZiAkL994w14JtFhiOn67kVRuk0qCGpSGQNFzbKJKr2BGkGp7CgoHB2rKtondDSoDSkuPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QND9n7hMnxyPX0Uqk6CJWYjLcSvRsypguqPbdpmRIJY=; b=D9G04R+2REmQDFUFAnPj0/9MDAYDJZ43JbnK0+8/f01JSz/KKUfd6ZdNzVbl4NnZKAQKjrXcSAfYF619gGU9lDU1HSc1YsKHVFfXfgEotTPX2uv+vjPcSmdMv3d5acgXymy4lCu5WOyZ60Yta1yluyL2HkWarQB+McWOUXKOivvfifY8zdcbC1YAMxYQknu6j5aDZAFA4scLkNs9Bg8WvWPblQGwKQYe9oStqQFRdifHvWCvXAkssPTcZxRbAOHPhFErJ061FRfiom74njqHPJdvie4wGCrEBk+bVUUVFcMpOZJ45hQuw+2tQ1zSxIaaXzhq4zqDtDteSi+fJk5IgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QND9n7hMnxyPX0Uqk6CJWYjLcSvRsypguqPbdpmRIJY=; b=chOTTZXCoabBc2Qup2EGKpJxnBCrgtjOM4IReRDkGuUXzFp0Mjz+iruBRuKMdZCj8NIjURlOYWk5TcLvdBSs7PB49V1xRIacQGKlcgpbGGEtmBOkjqkmmEr3i7oWDwcN0H9l1tAseRRalXID1Q5ntarx0UCGWnRN5btlYorwC7k= Received: from SJ0PR03CA0362.namprd03.prod.outlook.com (2603:10b6:a03:3a1::7) by SJ2PR12MB9116.namprd12.prod.outlook.com (2603:10b6:a03:557::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.31; Wed, 5 Jun 2024 22:45:50 +0000 Received: from SJ1PEPF00002327.namprd03.prod.outlook.com (2603:10b6:a03:3a1:cafe::d5) by SJ0PR03CA0362.outlook.office365.com (2603:10b6:a03:3a1::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.31 via Frontend Transport; Wed, 5 Jun 2024 22:45:50 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF00002327.mail.protection.outlook.com (10.167.242.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Wed, 5 Jun 2024 22:45:50 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 5 Jun 2024 17:45:49 -0500 From: Babu Moger To: , , CC: , , , , , , Subject: [PATCH v3 1/4] selftests/resctrl: Rename variables and functions to generic names Date: Wed, 5 Jun 2024 17:45:31 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002327:EE_|SJ2PR12MB9116:EE_ X-MS-Office365-Filtering-Correlation-Id: a7537146-15bd-42b7-a7c2-08dc85b13fb8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|376005|36860700004|1800799015; X-Microsoft-Antispam-Message-Info: KqIffVNUO8jHPbev1kJ4hqH2l3ZPczSq37A3kCRTowoQuL+C8r0Jje/1iUqhY8w0AX2dEp+x9x7aCCvk3EDPcEVIlvA0cfM6hNBzBQau9Lwu7FyL8pDJkQcjh6O54tNClP3NBXEFh8z8upgAw1ZmVXJtPgTPHqUcv/YhknGXkrbU3NSzW+QDRVAmO8xGKGaYW5OV7cf0zNGhE4UuwPMPnFSKTPGctOXMobep1PlbjRivgueuG4jyzMFqElWk52l/EoMpgk7EHLu4DxI/ixHYyxY2+GEh16UyhKlIOLe/tho+qA9CDfDoGt7S6etQRlJP8unkmG+7NCnxL7lx8CKsd3d00R8XI61MrYeMjzAV8DKysMw3blZtfOs/X8XWGOxL1UFcaKpASqHWvo84dizu1+KLmtOZBhy7uTakqJ8Iwcqg3iX14EqDf2r3JNqglC+TPxkLWhvWML8nPJW4HcobUPpyEFk9Y5sJ5Wol1y9D/lxaqWdbwVScWft2RxbT2faH7Rsm21SfKgwKFXAIuZB+yaCNK6oGJt5gt8DQRKDtqDliHiumuQadC3NUhEzNyNZoDE9RjRXHtnwApm/txwuMGyPPalUnbATm/B349qXSGm5Z8HG7iHep82HBpIL5Okd6wAj32rAWlvlUK4blyfWkv74zSijec5AAvuvfyZoVlKZK4nuiXAP9mcx6DUDuzB/A2E9RErH+FtZ7fFx05F5w5xmm+SognUA+3G5owpxGsoFWCTH3voPaEudpNV1EEgLFt0NkXTe71S1n611vg+AbEhgdvicEzC/DYkKwlfovMmFYa39THqOdS1wiQISd6a3QVHBCjhsancl/2N1NNv3AMWOa86URHUgVr+I8mkosPbycabpEKGDT1qojtcy7RSwcjv/2jhEe2PHW503XK1PunIsNsb/zdK1Vgd20iKPeL/px3/IuCxGiHjsY54y70ifU+QP4cw3ZetmWbjtkH4qc6Wbfo3ar49JuRxVJrtQ07II6x6fF1EmM8iteFz3FSnaAQ90TcXtiaQPXwtKTpRCtiWmlkuiRdLcuUO1FYFpvl2lJeC/V27eTCyEuhNV6p04kq46B2nDqUXpS1EM8vtPC0wLhQsQPOFe2DSDTm2+N126N75kJOU6stAFLXpHjIFAWyLDF2vXA2SCXW8gmjmL6nBABM8V9tL/3DK9krtGWrP3uERuaDNlmI3QhFWQGkBbF5ct2GQZoeu2EGsBCdxrWKBnIXg+/+9rgB7955cHmxCpSBa3V1acc6BZFnSwtVI6FU2ezptlie61rqROEIcBnl8yF/IpV44648t1MOhU9SbdFTL84pRop/2U/Ac+BphEeBd5BPmY7Eev27cXW/Da2XR0z043zfqfh+8ICWw4C2IEQiAo5YrmVlXeGQG6tH54FomrBXdWam26TSTfPk6IJ5Q== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(82310400017)(376005)(36860700004)(1800799015); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 22:45:50.2977 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7537146-15bd-42b7-a7c2-08dc85b13fb8 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002327.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9116 In an effort to support MBM and MBA tests for AMD, renaming for variable and functions to generic names. For Intel, the memory controller is called Integrated Memory Controllers (IMC). For AMD, it is called Unified Memory Controller (UMC). Change the names of variables and functions from imc (Integrated memory controller) to mc(Memory Controller). No functional change. Signed-off-by: Babu Moger --- v3: More name changes. Mostly replacing imc with mc. v2: Few more name changes. --- tools/testing/selftests/resctrl/mba_test.c | 24 +- tools/testing/selftests/resctrl/mbm_test.c | 22 +- tools/testing/selftests/resctrl/resctrl.h | 2 +- tools/testing/selftests/resctrl/resctrl_val.c | 225 +++++++++--------- tools/testing/selftests/resctrl/resctrlfs.c | 2 +- 5 files changed, 138 insertions(+), 137 deletions(-) diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c index ab8496a4925b..394bbfd8a93e 100644 --- a/tools/testing/selftests/resctrl/mba_test.c +++ b/tools/testing/selftests/resctrl/mba_test.c @@ -21,7 +21,7 @@ static int mba_init(const struct resctrl_val_param *param, int domain_id) { int ret; - ret = initialize_mem_bw_imc(); + ret = initialize_mem_bw_mc(); if (ret) return ret; @@ -70,7 +70,7 @@ static int mba_measure(const struct user_params *uparams, return measure_mem_bw(uparams, param, bm_pid, "reads"); } -static bool show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc) +static bool show_mba_info(unsigned long *bw_mc, unsigned long *bw_resc) { int allocation, runs; bool ret = false; @@ -79,8 +79,8 @@ static bool show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc) /* Memory bandwidth from 100% down to 10% */ for (allocation = 0; allocation < ALLOCATION_MAX / ALLOCATION_STEP; allocation++) { - unsigned long sum_bw_imc = 0, sum_bw_resc = 0; - long avg_bw_imc, avg_bw_resc; + unsigned long sum_bw_mc = 0, sum_bw_resc = 0; + long avg_bw_mc, avg_bw_resc; int avg_diff_per; float avg_diff; @@ -90,13 +90,13 @@ static bool show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc) */ for (runs = NUM_OF_RUNS * allocation + 1; runs < NUM_OF_RUNS * allocation + NUM_OF_RUNS ; runs++) { - sum_bw_imc += bw_imc[runs]; + sum_bw_mc += bw_mc[runs]; sum_bw_resc += bw_resc[runs]; } - avg_bw_imc = sum_bw_imc / (NUM_OF_RUNS - 1); + avg_bw_mc = sum_bw_mc / (NUM_OF_RUNS - 1); avg_bw_resc = sum_bw_resc / (NUM_OF_RUNS - 1); - avg_diff = (float)labs(avg_bw_resc - avg_bw_imc) / avg_bw_imc; + avg_diff = (float)labs(avg_bw_resc - avg_bw_mc) / avg_bw_mc; avg_diff_per = (int)(avg_diff * 100); ksft_print_msg("%s Check MBA diff within %d%% for schemata %u\n", @@ -106,7 +106,7 @@ static bool show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc) ALLOCATION_MAX - ALLOCATION_STEP * allocation); ksft_print_msg("avg_diff_per: %d%%\n", avg_diff_per); - ksft_print_msg("avg_bw_imc: %lu\n", avg_bw_imc); + ksft_print_msg("avg_bw_mc: %lu\n", avg_bw_mc); ksft_print_msg("avg_bw_resc: %lu\n", avg_bw_resc); if (avg_diff_per > MAX_DIFF_PERCENT) ret = true; @@ -123,7 +123,7 @@ static bool show_mba_info(unsigned long *bw_imc, unsigned long *bw_resc) static int check_results(void) { char *token_array[8], output[] = RESULT_FILE_NAME, temp[512]; - unsigned long bw_imc[1024], bw_resc[1024]; + unsigned long bw_mc[1024], bw_resc[1024]; int runs; FILE *fp; @@ -144,8 +144,8 @@ static int check_results(void) token = strtok(NULL, ":\t"); } - /* Field 3 is perf imc value */ - bw_imc[runs] = strtoul(token_array[3], NULL, 0); + /* Field 3 is perf mc value */ + bw_mc[runs] = strtoul(token_array[3], NULL, 0); /* Field 5 is resctrl value */ bw_resc[runs] = strtoul(token_array[5], NULL, 0); runs++; @@ -153,7 +153,7 @@ static int check_results(void) fclose(fp); - return show_mba_info(bw_imc, bw_resc); + return show_mba_info(bw_mc, bw_resc); } static void mba_test_cleanup(void) diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c index 6b5a3b52d861..9b6f7f162282 100644 --- a/tools/testing/selftests/resctrl/mbm_test.c +++ b/tools/testing/selftests/resctrl/mbm_test.c @@ -15,10 +15,10 @@ #define NUM_OF_RUNS 5 static int -show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, size_t span) +show_bw_info(unsigned long *bw_mc, unsigned long *bw_resc, size_t span) { - unsigned long sum_bw_imc = 0, sum_bw_resc = 0; - long avg_bw_imc = 0, avg_bw_resc = 0; + unsigned long sum_bw_mc = 0, sum_bw_resc = 0; + long avg_bw_mc = 0, avg_bw_resc = 0; int runs, ret, avg_diff_per; float avg_diff = 0; @@ -27,13 +27,13 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, size_t span) * transition phase. */ for (runs = 1; runs < NUM_OF_RUNS ; runs++) { - sum_bw_imc += bw_imc[runs]; + sum_bw_mc += bw_mc[runs]; sum_bw_resc += bw_resc[runs]; } - avg_bw_imc = sum_bw_imc / 4; + avg_bw_mc = sum_bw_mc / 4; avg_bw_resc = sum_bw_resc / 4; - avg_diff = (float)labs(avg_bw_resc - avg_bw_imc) / avg_bw_imc; + avg_diff = (float)labs(avg_bw_resc - avg_bw_mc) / avg_bw_mc; avg_diff_per = (int)(avg_diff * 100); ret = avg_diff_per > MAX_DIFF_PERCENT; @@ -41,7 +41,7 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, size_t span) ret ? "Fail:" : "Pass:", MAX_DIFF_PERCENT); ksft_print_msg("avg_diff_per: %d%%\n", avg_diff_per); ksft_print_msg("Span (MB): %zu\n", span / MB); - ksft_print_msg("avg_bw_imc: %lu\n", avg_bw_imc); + ksft_print_msg("avg_bw_mc: %lu\n", avg_bw_mc); ksft_print_msg("avg_bw_resc: %lu\n", avg_bw_resc); return ret; @@ -49,7 +49,7 @@ show_bw_info(unsigned long *bw_imc, unsigned long *bw_resc, size_t span) static int check_results(size_t span) { - unsigned long bw_imc[NUM_OF_RUNS], bw_resc[NUM_OF_RUNS]; + unsigned long bw_mc[NUM_OF_RUNS], bw_resc[NUM_OF_RUNS]; char temp[1024], *token_array[8]; char output[] = RESULT_FILE_NAME; int runs, ret; @@ -75,11 +75,11 @@ static int check_results(size_t span) } bw_resc[runs] = strtoul(token_array[5], NULL, 0); - bw_imc[runs] = strtoul(token_array[3], NULL, 0); + bw_mc[runs] = strtoul(token_array[3], NULL, 0); runs++; } - ret = show_bw_info(bw_imc, bw_resc, span); + ret = show_bw_info(bw_mc, bw_resc, span); fclose(fp); @@ -90,7 +90,7 @@ static int mbm_init(const struct resctrl_val_param *param, int domain_id) { int ret; - ret = initialize_mem_bw_imc(); + ret = initialize_mem_bw_mc(); if (ret) return ret; diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h index 2dda56084588..5f1854986c7b 100644 --- a/tools/testing/selftests/resctrl/resctrl.h +++ b/tools/testing/selftests/resctrl/resctrl.h @@ -143,7 +143,7 @@ unsigned char *alloc_buffer(size_t buf_size, int memflush); void mem_flush(unsigned char *buf, size_t buf_size); void fill_cache_read(unsigned char *buf, size_t buf_size, bool once); int run_fill_buf(size_t buf_size, int memflush, int op, bool once); -int initialize_mem_bw_imc(void); +int initialize_mem_bw_mc(void); int measure_mem_bw(const struct user_params *uparams, struct resctrl_val_param *param, pid_t bm_pid, const char *bw_report); diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c index 35eba2d99d32..2d5e961b3a68 100644 --- a/tools/testing/selftests/resctrl/resctrl_val.c +++ b/tools/testing/selftests/resctrl/resctrl_val.c @@ -15,7 +15,7 @@ #define WRITE_FILE_NAME "events/cas_count_write" #define DYN_PMU_PATH "/sys/bus/event_source/devices" #define SCALE 0.00006103515625 -#define MAX_IMCS 20 +#define MAX_MCS 20 #define MAX_TOKENS 5 #define READ 0 #define WRITE 1 @@ -30,7 +30,7 @@ struct membw_read_format { __u64 id; /* if PERF_FORMAT_ID */ }; -struct imc_counter_config { +struct mc_counter_config { __u32 type; __u64 event; __u64 umask; @@ -40,42 +40,42 @@ struct imc_counter_config { }; static char mbm_total_path[1024]; -static int imcs; -static struct imc_counter_config imc_counters_config[MAX_IMCS][2]; +static int mcs; +static struct mc_counter_config mc_counters_config[MAX_MCS][2]; static const struct resctrl_test *current_test; void membw_initialize_perf_event_attr(int i, int j) { - memset(&imc_counters_config[i][j].pe, 0, + memset(&mc_counters_config[i][j].pe, 0, sizeof(struct perf_event_attr)); - imc_counters_config[i][j].pe.type = imc_counters_config[i][j].type; - imc_counters_config[i][j].pe.size = sizeof(struct perf_event_attr); - imc_counters_config[i][j].pe.disabled = 1; - imc_counters_config[i][j].pe.inherit = 1; - imc_counters_config[i][j].pe.exclude_guest = 0; - imc_counters_config[i][j].pe.config = - imc_counters_config[i][j].umask << 8 | - imc_counters_config[i][j].event; - imc_counters_config[i][j].pe.sample_type = PERF_SAMPLE_IDENTIFIER; - imc_counters_config[i][j].pe.read_format = + mc_counters_config[i][j].pe.type = mc_counters_config[i][j].type; + mc_counters_config[i][j].pe.size = sizeof(struct perf_event_attr); + mc_counters_config[i][j].pe.disabled = 1; + mc_counters_config[i][j].pe.inherit = 1; + mc_counters_config[i][j].pe.exclude_guest = 0; + mc_counters_config[i][j].pe.config = + mc_counters_config[i][j].umask << 8 | + mc_counters_config[i][j].event; + mc_counters_config[i][j].pe.sample_type = PERF_SAMPLE_IDENTIFIER; + mc_counters_config[i][j].pe.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING; } void membw_ioctl_perf_event_ioc_reset_enable(int i, int j) { - ioctl(imc_counters_config[i][j].fd, PERF_EVENT_IOC_RESET, 0); - ioctl(imc_counters_config[i][j].fd, PERF_EVENT_IOC_ENABLE, 0); + ioctl(mc_counters_config[i][j].fd, PERF_EVENT_IOC_RESET, 0); + ioctl(mc_counters_config[i][j].fd, PERF_EVENT_IOC_ENABLE, 0); } void membw_ioctl_perf_event_ioc_disable(int i, int j) { - ioctl(imc_counters_config[i][j].fd, PERF_EVENT_IOC_DISABLE, 0); + ioctl(mc_counters_config[i][j].fd, PERF_EVENT_IOC_DISABLE, 0); } /* * get_event_and_umask: Parse config into event and umask * @cas_count_cfg: Config - * @count: iMC number + * @count: MC number * @op: Operation (read/write) */ void get_event_and_umask(char *cas_count_cfg, int count, bool op) @@ -94,18 +94,18 @@ void get_event_and_umask(char *cas_count_cfg, int count, bool op) break; if (strcmp(token[i], "event") == 0) { if (op == READ) - imc_counters_config[count][READ].event = + mc_counters_config[count][READ].event = strtol(token[i + 1], NULL, 16); else - imc_counters_config[count][WRITE].event = + mc_counters_config[count][WRITE].event = strtol(token[i + 1], NULL, 16); } if (strcmp(token[i], "umask") == 0) { if (op == READ) - imc_counters_config[count][READ].umask = + mc_counters_config[count][READ].umask = strtol(token[i + 1], NULL, 16); else - imc_counters_config[count][WRITE].umask = + mc_counters_config[count][WRITE].umask = strtol(token[i + 1], NULL, 16); } } @@ -113,13 +113,13 @@ void get_event_and_umask(char *cas_count_cfg, int count, bool op) static int open_perf_event(int i, int cpu_no, int j) { - imc_counters_config[i][j].fd = - perf_event_open(&imc_counters_config[i][j].pe, -1, cpu_no, -1, + mc_counters_config[i][j].fd = + perf_event_open(&mc_counters_config[i][j].pe, -1, cpu_no, -1, PERF_FLAG_FD_CLOEXEC); - if (imc_counters_config[i][j].fd == -1) { + if (mc_counters_config[i][j].fd == -1) { fprintf(stderr, "Error opening leader %llx\n", - imc_counters_config[i][j].pe.config); + mc_counters_config[i][j].pe.config); return -1; } @@ -127,41 +127,41 @@ static int open_perf_event(int i, int cpu_no, int j) return 0; } -/* Get type and config (read and write) of an iMC counter */ -static int read_from_imc_dir(char *imc_dir, int count) +/* Get type and config (read and write) of an MC counter */ +static int read_from_mc_dir(char *mc_dir, int count) { - char cas_count_cfg[1024], imc_counter_cfg[1024], imc_counter_type[1024]; + char cas_count_cfg[1024], mc_counter_cfg[1024], mc_counter_type[1024]; FILE *fp; - /* Get type of iMC counter */ - sprintf(imc_counter_type, "%s%s", imc_dir, "type"); - fp = fopen(imc_counter_type, "r"); + /* Get type of MC counter */ + sprintf(mc_counter_type, "%s%s", mc_dir, "type"); + fp = fopen(mc_counter_type, "r"); if (!fp) { - ksft_perror("Failed to open iMC counter type file"); + ksft_perror("Failed to open MC counter type file"); return -1; } - if (fscanf(fp, "%u", &imc_counters_config[count][READ].type) <= 0) { - ksft_perror("Could not get iMC type"); + if (fscanf(fp, "%u", &mc_counters_config[count][READ].type) <= 0) { + ksft_perror("Could not get MC type"); fclose(fp); return -1; } fclose(fp); - imc_counters_config[count][WRITE].type = - imc_counters_config[count][READ].type; + mc_counters_config[count][WRITE].type = + mc_counters_config[count][READ].type; /* Get read config */ - sprintf(imc_counter_cfg, "%s%s", imc_dir, READ_FILE_NAME); - fp = fopen(imc_counter_cfg, "r"); + sprintf(mc_counter_cfg, "%s%s", mc_dir, READ_FILE_NAME); + fp = fopen(mc_counter_cfg, "r"); if (!fp) { - ksft_perror("Failed to open iMC config file"); + ksft_perror("Failed to open MC config file"); return -1; } if (fscanf(fp, "%s", cas_count_cfg) <= 0) { - ksft_perror("Could not get iMC cas count read"); + ksft_perror("Could not get MC cas count read"); fclose(fp); return -1; @@ -171,15 +171,15 @@ static int read_from_imc_dir(char *imc_dir, int count) get_event_and_umask(cas_count_cfg, count, READ); /* Get write config */ - sprintf(imc_counter_cfg, "%s%s", imc_dir, WRITE_FILE_NAME); - fp = fopen(imc_counter_cfg, "r"); + sprintf(mc_counter_cfg, "%s%s", mc_dir, WRITE_FILE_NAME); + fp = fopen(mc_counter_cfg, "r"); if (!fp) { - ksft_perror("Failed to open iMC config file"); + ksft_perror("Failed to open MC config file"); return -1; } if (fscanf(fp, "%s", cas_count_cfg) <= 0) { - ksft_perror("Could not get iMC cas count write"); + ksft_perror("Could not get MC cas count write"); fclose(fp); return -1; @@ -192,17 +192,18 @@ static int read_from_imc_dir(char *imc_dir, int count) } /* - * A system can have 'n' number of iMC (Integrated Memory Controller) - * counters, get that 'n'. For each iMC counter get it's type and config. + * A system can have 'n' number of iMC (Integrated Memory Controller for + * Intel) counters, get that 'n'. In case of AMD it is called UMC (Unified + * Memory Controller). For each iMC/UMC counter get it's type and config. * Also, each counter has two configs, one for read and the other for write. * A config again has two parts, event and umask. * Enumerate all these details into an array of structures. * * Return: >= 0 on success. < 0 on failure. */ -static int num_of_imcs(void) +static int num_of_mem_controllers(void) { - char imc_dir[512], *temp; + char mc_dir[512], *temp; unsigned int count = 0; struct dirent *ep; int ret; @@ -230,9 +231,9 @@ static int num_of_imcs(void) * first character is a numerical digit or not. */ if (temp[0] >= '0' && temp[0] <= '9') { - sprintf(imc_dir, "%s/%s/", DYN_PMU_PATH, + sprintf(mc_dir, "%s/%s/", DYN_PMU_PATH, ep->d_name); - ret = read_from_imc_dir(imc_dir, count); + ret = read_from_mc_dir(mc_dir, count); if (ret) { closedir(dp); @@ -243,7 +244,7 @@ static int num_of_imcs(void) } closedir(dp); if (count == 0) { - ksft_print_msg("Unable to find iMC counters\n"); + ksft_print_msg("Unable to find MC counters\n"); return -1; } @@ -256,55 +257,55 @@ static int num_of_imcs(void) return count; } -int initialize_mem_bw_imc(void) +int initialize_mem_bw_mc(void) { - int imc, j; + int mc, j; - imcs = num_of_imcs(); - if (imcs <= 0) - return imcs; + mcs = num_of_mem_controllers(); + if (mcs <= 0) + return mcs; - /* Initialize perf_event_attr structures for all iMC's */ - for (imc = 0; imc < imcs; imc++) { + /* Initialize perf_event_attr structures for all MC's */ + for (mc = 0; mc < mcs; mc++) { for (j = 0; j < 2; j++) - membw_initialize_perf_event_attr(imc, j); + membw_initialize_perf_event_attr(mc, j); } return 0; } -static void perf_close_imc_mem_bw(void) +static void perf_close_mc_mem_bw(void) { int mc; - for (mc = 0; mc < imcs; mc++) { - if (imc_counters_config[mc][READ].fd != -1) - close(imc_counters_config[mc][READ].fd); - if (imc_counters_config[mc][WRITE].fd != -1) - close(imc_counters_config[mc][WRITE].fd); + for (mc = 0; mc < mcs; mc++) { + if (mc_counters_config[mc][READ].fd != -1) + close(mc_counters_config[mc][READ].fd); + if (mc_counters_config[mc][WRITE].fd != -1) + close(mc_counters_config[mc][WRITE].fd); } } /* - * perf_open_imc_mem_bw - Open perf fds for IMCs + * perf_open_mc_mem_bw - Open perf fds for MCs * @cpu_no: CPU number that the benchmark PID is binded to * * Return: = 0 on success. < 0 on failure. */ -static int perf_open_imc_mem_bw(int cpu_no) +static int perf_open_mc_mem_bw(int cpu_no) { - int imc, ret; + int mc, ret; - for (imc = 0; imc < imcs; imc++) { - imc_counters_config[imc][READ].fd = -1; - imc_counters_config[imc][WRITE].fd = -1; + for (mc = 0; mc < mcs; mc++) { + mc_counters_config[mc][READ].fd = -1; + mc_counters_config[mc][WRITE].fd = -1; } - for (imc = 0; imc < imcs; imc++) { - ret = open_perf_event(imc, cpu_no, READ); + for (mc = 0; mc < mcs; mc++) { + ret = open_perf_event(mc, cpu_no, READ); if (ret) goto close_fds; - ret = open_perf_event(imc, cpu_no, WRITE); + ret = open_perf_event(mc, cpu_no, WRITE); if (ret) goto close_fds; } @@ -312,7 +313,7 @@ static int perf_open_imc_mem_bw(int cpu_no) return 0; close_fds: - perf_close_imc_mem_bw(); + perf_close_mc_mem_bw(); return -1; } @@ -322,21 +323,21 @@ static int perf_open_imc_mem_bw(int cpu_no) * Runs memory bandwidth test over one second period. Also, handles starting * and stopping of the IMC perf counters around the test. */ -static void do_imc_mem_bw_test(void) +static void do_mc_mem_bw_test(void) { - int imc; + int mc; - for (imc = 0; imc < imcs; imc++) { - membw_ioctl_perf_event_ioc_reset_enable(imc, READ); - membw_ioctl_perf_event_ioc_reset_enable(imc, WRITE); + for (mc = 0; mc < mcs; mc++) { + membw_ioctl_perf_event_ioc_reset_enable(mc, READ); + membw_ioctl_perf_event_ioc_reset_enable(mc, WRITE); } sleep(1); /* Stop counters after a second to get results (both read and write) */ - for (imc = 0; imc < imcs; imc++) { - membw_ioctl_perf_event_ioc_disable(imc, READ); - membw_ioctl_perf_event_ioc_disable(imc, WRITE); + for (mc = 0; mc < mcs; mc++) { + membw_ioctl_perf_event_ioc_disable(mc, READ); + membw_ioctl_perf_event_ioc_disable(mc, WRITE); } } @@ -349,10 +350,10 @@ static void do_imc_mem_bw_test(void) * * Return: = 0 on success. < 0 on failure. */ -static int get_mem_bw_imc(const char *bw_report, float *bw_imc) +static int get_mem_bw_mc(const char *bw_report, float *bw_mc) { float reads, writes, of_mul_read, of_mul_write; - int imc; + int mc; /* Start all iMC counters to log values (both read and write) */ reads = 0, writes = 0, of_mul_read = 1, of_mul_write = 1; @@ -361,21 +362,21 @@ static int get_mem_bw_imc(const char *bw_report, float *bw_imc) * Get results which are stored in struct type imc_counter_config * Take overflow into consideration before calculating total bandwidth. */ - for (imc = 0; imc < imcs; imc++) { - struct imc_counter_config *r = - &imc_counters_config[imc][READ]; - struct imc_counter_config *w = - &imc_counters_config[imc][WRITE]; + for (mc = 0; mc < mcs; mc++) { + struct mc_counter_config *r = + &mc_counters_config[mc][READ]; + struct mc_counter_config *w = + &mc_counters_config[mc][WRITE]; if (read(r->fd, &r->return_value, sizeof(struct membw_read_format)) == -1) { - ksft_perror("Couldn't get read bandwidth through iMC"); + ksft_perror("Couldn't get read bandwidth through MC"); goto close_fds; } if (read(w->fd, &w->return_value, sizeof(struct membw_read_format)) == -1) { - ksft_perror("Couldn't get write bandwidth through iMC"); + ksft_perror("Couldn't get write bandwidth through MC"); goto close_fds; } @@ -396,23 +397,23 @@ static int get_mem_bw_imc(const char *bw_report, float *bw_imc) writes += w->return_value.value * of_mul_write * SCALE; } - perf_close_imc_mem_bw(); + perf_close_mc_mem_bw(); if (strcmp(bw_report, "reads") == 0) { - *bw_imc = reads; + *bw_mc = reads; return 0; } if (strcmp(bw_report, "writes") == 0) { - *bw_imc = writes; + *bw_mc = writes; return 0; } - *bw_imc = reads + writes; + *bw_mc = reads + writes; return 0; close_fds: - perf_close_imc_mem_bw(); + perf_close_mc_mem_bw(); return -1; } @@ -523,19 +524,19 @@ static void parent_exit(pid_t ppid) * print_results_bw: the memory bandwidth results are stored in a file * @filename: file that stores the results * @bm_pid: child pid that runs benchmark - * @bw_imc: perf imc counter value + * @bw_mc: perf mc counter value * @bw_resc: memory bandwidth value * * Return: 0 on success, < 0 on error. */ -static int print_results_bw(char *filename, pid_t bm_pid, float bw_imc, +static int print_results_bw(char *filename, pid_t bm_pid, float bw_mc, unsigned long bw_resc) { - unsigned long diff = fabs(bw_imc - bw_resc); + unsigned long diff = fabs(bw_mc - bw_resc); FILE *fp; if (strcmp(filename, "stdio") == 0 || strcmp(filename, "stderr") == 0) { - printf("Pid: %d \t Mem_BW_iMC: %f \t ", (int)bm_pid, bw_imc); + printf("Pid: %d \t Mem_BW_MC: %f \t ", (int)bm_pid, bw_mc); printf("Mem_BW_resc: %lu \t Difference: %lu\n", bw_resc, diff); } else { fp = fopen(filename, "a"); @@ -544,8 +545,8 @@ static int print_results_bw(char *filename, pid_t bm_pid, float bw_imc, return -1; } - if (fprintf(fp, "Pid: %d \t Mem_BW_iMC: %f \t Mem_BW_resc: %lu \t Difference: %lu\n", - (int)bm_pid, bw_imc, bw_resc, diff) <= 0) { + if (fprintf(fp, "Pid: %d \t Mem_BW_MC: %f \t Mem_BW_resc: %lu \t Difference: %lu\n", + (int)bm_pid, bw_mc, bw_resc, diff) <= 0) { ksft_print_msg("Could not log results\n"); fclose(fp); @@ -570,7 +571,7 @@ int measure_mem_bw(const struct user_params *uparams, { unsigned long bw_resc, bw_resc_start, bw_resc_end; FILE *mem_bw_fp; - float bw_imc; + float bw_mc; int ret; bw_report = get_bw_report_type(bw_report); @@ -583,12 +584,12 @@ int measure_mem_bw(const struct user_params *uparams, /* * Measure memory bandwidth from resctrl and from - * another source which is perf imc value or could - * be something else if perf imc event is not available. + * another source which is perf mc value or could + * be something else if perf mc event is not available. * Compare the two values to validate resctrl value. * It takes 1sec to measure the data. */ - ret = perf_open_imc_mem_bw(uparams->cpu); + ret = perf_open_mc_mem_bw(uparams->cpu); if (ret < 0) goto close_fp; @@ -598,13 +599,13 @@ int measure_mem_bw(const struct user_params *uparams, rewind(mem_bw_fp); - do_imc_mem_bw_test(); + do_mc_mem_bw_test(); ret = get_mem_bw_resctrl(mem_bw_fp, &bw_resc_end); if (ret < 0) goto close_fp; - ret = get_mem_bw_imc(bw_report, &bw_imc); + ret = get_mem_bw_mc(bw_report, &bw_mc); if (ret < 0) goto close_fp; @@ -612,7 +613,7 @@ int measure_mem_bw(const struct user_params *uparams, bw_resc = (bw_resc_end - bw_resc_start) / MB; - return print_results_bw(param->filename, bm_pid, bw_imc, bw_resc); + return print_results_bw(param->filename, bm_pid, bw_mc, bw_resc); close_fp: fclose(mem_bw_fp); diff --git a/tools/testing/selftests/resctrl/resctrlfs.c b/tools/testing/selftests/resctrl/resctrlfs.c index 891ebfbfbd85..4f37278bc8e5 100644 --- a/tools/testing/selftests/resctrl/resctrlfs.c +++ b/tools/testing/selftests/resctrl/resctrlfs.c @@ -843,7 +843,7 @@ const char *get_bw_report_type(const char *bw_report) if (strcmp(bw_report, "total") == 0) return bw_report; - fprintf(stderr, "Requested iMC bandwidth report type unavailable\n"); + fprintf(stderr, "Requested MC bandwidth report type unavailable\n"); return NULL; } From patchwork Wed Jun 5 22:45:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 802174 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2054.outbound.protection.outlook.com [40.107.102.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF7FC1649DE; Wed, 5 Jun 2024 22:45:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627561; cv=fail; b=ujenT2fWlsED36xsYwQwUj6sBEnkXxahWdOXEM02HcRdvCeiDAVMGjiaGi9fTz7BoPUmqX20CDEeiPFP+JDanqhwUdUMrVPaiQqQ4kTcm5dm3O0wxkumCnLEmmufCq5ji5btaDsW8p53ihNvkwFbddtGxIEkca9uGvqkLTd0mKc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627561; c=relaxed/simple; bh=ejfyhKx5emZkCdHX3oTjSvPOD14BhKhz4GfUdDy2g6w=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kEdkrVfu3Sao8+bvtsog6s+322++y1v0b3mks2nNb/sKFrXPTbErp6bZNRjFqIfWwJ1W2q3d4/akdBzz4RDxB4QI3aPJgVxVZF3x2VoceMG4iWriUaL/iSrjfR1YO/7Y7Rq+grKX1EX8DgzEmQPy0jDC38tdq9y6pCcz2zJR0bE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Ok+ANq+5; arc=fail smtp.client-ip=40.107.102.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Ok+ANq+5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=inC+w9aIr18Z8cWwzJoMWKeUkyPeh4+e1B39mLD0E8YaM8R9qYc8of+s1kqBi6pRY/zWRsEEO5RE3v01MGU7TX6fNW+i/XZp4G6+74u9v9QIq2Y0vTVScgFlG/oWptT8+vPUYHCjEz1FXhPoMrE0idwrW2fexSqHzaUwofvJr/lwd/KNUKNC0bFIxnN0nlf8H2kSJdsJYy3KtJmSvQ//YF8MryDKrxi7j9T8FY38T2HjlLNMQ3FpOSt2yloLGgsqOlRzaG/rRYDHwAaVgv2FfQ4Ze9SdJq+JJGVbDliwkRw9hM1ixQY1gKwjdtAAs7kNcVBAUipRfHL52EXjtME+Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kxjfp8H8tADv284HFk6Eh+BJg4tsyz5PKG5nLXxaKcQ=; b=R1iNETCJe1tYiY1Vhd3j7gwpraOTWMzXBvtgLUsH6Ts4zvYXOLMJHLMVw56wjv5FU20dmGkJl+WgVj3LN0FdGeq5BwkARImOjrRYtiGI8LFwBAAas5jG+BLR5i94VAtFHriIiTsE37hELop0VkPy4IioYjdxaC8mwucxYrO2dusjNAAM99/5t73VMkG81skENtNePjG146aRzdBkYLG516lJz99ulp4LtlhgEPiaJMQ8X7AdmoNoVNGmMJQB7uh2fF+t/iXb6+qs0QPmFlwDnuWOeudMnI/fr0NbFzCS8xfehM8x3Y5jo3Y/O2xF6oLd1+995u02CtBPS5tJwjSKzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kxjfp8H8tADv284HFk6Eh+BJg4tsyz5PKG5nLXxaKcQ=; b=Ok+ANq+5hNpz3Y2D4MapMMHbFKwbYsswuh9PRuSnFzZ1YIrdHO7KIEJndWfqK3m55b1PcVre24UQyIj6RbM0xEMwvTyMf27bQ7z3b/NtsduRF33pKCwjkmDkqzMt10DYsRtWuFXQcHGT/hBGputsOSmrohvNrnoddbfAMkaEHn8= Received: from BL0PR01CA0036.prod.exchangelabs.com (2603:10b6:208:71::49) by MN0PR12MB6002.namprd12.prod.outlook.com (2603:10b6:208:37e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.21; Wed, 5 Jun 2024 22:45:57 +0000 Received: from BL02EPF0001A0FC.namprd03.prod.outlook.com (2603:10b6:208:71:cafe::98) by BL0PR01CA0036.outlook.office365.com (2603:10b6:208:71::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55 via Frontend Transport; Wed, 5 Jun 2024 22:45:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A0FC.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Wed, 5 Jun 2024 22:45:57 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 5 Jun 2024 17:45:56 -0500 From: Babu Moger To: , , CC: , , , , , , Subject: [PATCH v3 2/4] selftests/resctrl: Pass sysfs controller name of the vendor Date: Wed, 5 Jun 2024 17:45:32 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FC:EE_|MN0PR12MB6002:EE_ X-MS-Office365-Filtering-Correlation-Id: a9d0c36c-9915-4a53-f6f0-08dc85b143df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|1800799015|36860700004|82310400017|376005; X-Microsoft-Antispam-Message-Info: T7o2CWOTP6t9fxm/9ojAoR1N02AgcZJL/QoZStsf5qNEG0oC3xvUUahGSR9WMnzDd2rI58dUksgt0xAwO979rF7x1MK3GIyPJt4wWb8cvs0yzF1mvDN3eKDo1MSa67pDtNKyjWrBqZY2ribtsrsYNWRQOiAEfe6KHPIPNjanxqheB/5FuT6xcKrSBSB0xKRas9kbTloiadVQmf8iY3EIEtcrePXVEHYaO+OTU6B+NR2Vj+nKPLWknPEdzlzmMhtiPdQwlmAUlpZ5Os9QEyTS8JPk3h4Fp+7UDlwBsDBdSgE5JUDURNnPbmIBi2P3GFPGbozqdreUcyDczkct6UCoWDV7Paq5dNhgVRGWOqXRPuNOA+LA5bqjMPmgJ39zXxL4lPlXuYEK3PDAgowbAKumWywBw/wNT8v60SWBsG7CjD3IcxG6wbXPKXcew3fYlzesC9zg9XSqEbPrvsdXWdOU7sRO7i8M1mtFqMaVvXC9GEs/WM1/OPtxZJzNLOoe/Cpsap+i/uq442yEcFMNrP1KPcjPBgq9WbNQC1q/hUb0kAkXMd89b0Fantai2AKlKtVq6UMWWk7qB+PTSiHgyMFOdLlbDZ6HNSvVVVjhTPWzWK7+TC45BNA/Dy3xvw8BJ/dKGawXnTP1Y3Z1apC8Zx8qdmWAbssQCjctZJYpivgOQJylXxXBWlBG95J3ov47o1GNl/bAAex45EJ+B4TsBG31JY8C0CelW1/zTFM5nNCpxx188vyb4/8u4QUN/hzdber58Oa7LjyPh+/3q3pqW+WP5e5EZtOG0TXxfERPg6N5ApuS4FTTzgB/RHuZbZrI5PbxYLjTVEGRyQNZlZ+j0zJrj27glOiwl0g+zb1FuIQ6s+Jb75DNWcgrCxR4ZhHjql8ZllNHqLZUgGDeUih7Lcn/NB6lOolvoszH2a12o39vAd0rpT8TzEAXRm5Nc5AEgOhDhdypdjkw0W1WIzbVpz9HCJ92A95z5Lh+4KNb99x4rfZx+3GfOuAFkPBh5SFlOkv1YuB8IN78bI4kh+ARRmiMc265O201fdFJwVDqWZIEJKkL55agmheMjlHb25/bDWU4Z/RvYQ1DYCB1AMDbCv3r+0U/PvrE8t7stVUGHnLFxTdsfGVO8DIqugoy5EE1uceIiCvYJxn+dGaT+ZFkwYb8Q//fyWv626C8pJ3zmwtLGNmyufMmN8Ei65sLNLdgPICMtqxA5u+RuZQ0qkjp/6azn0T6gbzlswyb/+Y4Rq+ePHZP5mCWXhKQaU6wJn2H3Tmpi7Iwcg5iWw1fgXKhsGSpgSAuHR0569sZqOrECACKFj73wAP3+7N+eL0Q5buZQPDtbaMRbBNASWTZwEWlg0fvJLjHhLsb7+fSyvdSu5oZnZUgoLA9zmxNIi72fYDwMKKl X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(1800799015)(36860700004)(82310400017)(376005); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 22:45:57.3599 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9d0c36c-9915-4a53-f6f0-08dc85b143df X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A0FC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6002 The test detects number of memory controllers by looking at the sysfs file system. Detect the vendor to pass the controller name appropriately. So, that rest of the code will be generic and can be used to support other vendors. Also change the search to look for the full string "uncore_imc_". Replace the sizeof with strlen. Signed-off-by: Babu Moger --- v3: Change the search string to "uncore_imc_". v2: No changes --- tools/testing/selftests/resctrl/resctrl_val.c | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c index 2d5e961b3a68..23c0e0a1d845 100644 --- a/tools/testing/selftests/resctrl/resctrl_val.c +++ b/tools/testing/selftests/resctrl/resctrl_val.c @@ -10,7 +10,7 @@ */ #include "resctrl.h" -#define UNCORE_IMC "uncore_imc" +#define UNCORE_IMC "uncore_imc_" #define READ_FILE_NAME "events/cas_count_read" #define WRITE_FILE_NAME "events/cas_count_write" #define DYN_PMU_PATH "/sys/bus/event_source/devices" @@ -206,24 +206,30 @@ static int num_of_mem_controllers(void) char mc_dir[512], *temp; unsigned int count = 0; struct dirent *ep; - int ret; + char *sysfs_name; + int ret, vendor; DIR *dp; + vendor = get_vendor(); + if (vendor == ARCH_INTEL) { + sysfs_name = UNCORE_IMC; + } else { + ksft_perror("Unsupported vendor!\n"); + return -1; + } + dp = opendir(DYN_PMU_PATH); if (dp) { while ((ep = readdir(dp))) { - temp = strstr(ep->d_name, UNCORE_IMC); + temp = strstr(ep->d_name, sysfs_name); if (!temp) continue; /* * imc counters are named as "uncore_imc_", hence - * increment the pointer to point to . Note that - * sizeof(UNCORE_IMC) would count for null character as - * well and hence the last underscore character in - * uncore_imc'_' need not be counted. + * increment the pointer to point to . */ - temp = temp + sizeof(UNCORE_IMC); + temp = temp + strlen(sysfs_name); /* * Some directories under "DYN_PMU_PATH" could have From patchwork Wed Jun 5 22:45:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 801829 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2068.outbound.protection.outlook.com [40.107.92.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D2DE15EFDF; Wed, 5 Jun 2024 22:46:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627577; cv=fail; b=BApzGeok1pNvfrYBQoQk3y2Ea/oI60clRmQzJbFGdZZO2kpySxy6Pj47w5DoKZFIAzQnNYtN4uWDcRnbbmWKKZKpZ+eHUclr0Q0J0wwsdVa5R8z2U6LKRZxcM0jYIF9MGb6ZiCKWTTbuCBURjrl54G4bRF/QB+tCQFNZkD2g4CI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627577; c=relaxed/simple; bh=NX5xMZ/m1J3UhQ9h472wLaNA4CsxcCH2WG9UWIqj8rc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kCeqBKC90YuoPIg/0d1IR2ycFr0IhdXJvjzIYWLoEYt7/sb5FU2XWoIJj35Xi6KI0Z8WZtchJWdcKTfNMw9fxrSsLvqlfDcpv9BpaktfRm9hDbYiZD3PpCauZQjBGTn6wAXVsap5ubRUQOk0r7KY2IDW0pck4GvF/5X0mSrJeIU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=NXkGi6Hw; arc=fail smtp.client-ip=40.107.92.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="NXkGi6Hw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UYnkpqRPMrYQFoLFpBOnLa/ptRrzly+MVfIq/isKMr6AHo2mJsY28kFgr19Q3CLLgroZuHz2XT+COMQ0lBAU79Qqsr57yo5HgHIvQqPyvEWJNkLJATtY4Kjqi9YENGq3H5pc4G3lHqgW/F8z80PbyeOib5PFdPkkxIGmNhFq54n+EjxhCkEcNWAUSP6rmJ7zg+0e+INWpNjqXps4OzaJt4+JP1Rs2guVARXiskZL85ZGIw/HWoFN2ViC+QIddhQIK0dFRXElnwIG/Yvs8F9Rd79liNJDtOh8xElditac9FE454L5/FfP5pugbKaq/3Hr7tEVY8ceOyu2eZISnVPxEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Y8s6XPvHsyELn5qRaNsU9DS2eQEq66dUVAilP62MsYc=; b=HD6laKj405C1uNO2wYd9FcT7NDt9FmPqE5jVKxiWaYHMZem6sx/mwGb+34uwOFoQ7nHAcuueKkptQN0fca6Rf+S+PjUUixHOslg856U6+VxSoeNleHda22gB5/hduW01EWRBu+8FsCo1i3KF8qodyNk4LSU2Ei0zP37eZiFAlMp68fss2G9QQpVzeh5dqwHQlyXySRqvZhArBpgP2ywVXlGMmV0KB+faLlDjerk0R5ZIvOjDjyokyyV075L3ZFbLqtkZs2DLbwRfFzxS2Yf7Wi2XltC8nlVtbsfvdxGIuGUlnr6UwH9vxPhndqXmOezpD9J98KdBSDE86kaMqXPVQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y8s6XPvHsyELn5qRaNsU9DS2eQEq66dUVAilP62MsYc=; b=NXkGi6HwEqctFYPPwrsMiOfJWvIYh9nirI2zXzvA1ceWw+939Jv1WzVt7Af+WTHcfZM3iN4eoLBm+3I8EmvqGyKWag8b/+QyRk7qxqK5bLPoayPbXc/VlWKxGmv2mgzWsA23ZhWkMh7lhGXrKn02GOHM5jQmSG17lSOeltpB97I= Received: from BN9PR03CA0518.namprd03.prod.outlook.com (2603:10b6:408:131::13) by CH2PR12MB4151.namprd12.prod.outlook.com (2603:10b6:610:78::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.31; Wed, 5 Jun 2024 22:46:12 +0000 Received: from BL02EPF0001A0FB.namprd03.prod.outlook.com (2603:10b6:408:131:cafe::ca) by BN9PR03CA0518.outlook.office365.com (2603:10b6:408:131::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.17 via Frontend Transport; Wed, 5 Jun 2024 22:46:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A0FB.mail.protection.outlook.com (10.167.242.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Wed, 5 Jun 2024 22:46:07 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 5 Jun 2024 17:46:06 -0500 From: Babu Moger To: , , CC: , , , , , , Subject: [PATCH v3 3/4] selftests/resctrl: Add support for MBM and MBA tests on AMD Date: Wed, 5 Jun 2024 17:45:33 -0500 Message-ID: <3c2034e3391634b35192819b69eabd7db8cffa8f.1717626661.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FB:EE_|CH2PR12MB4151:EE_ X-MS-Office365-Filtering-Correlation-Id: e6182785-0cd6-47f2-3ef4-08dc85b149c6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|1800799015|36860700004|376005; X-Microsoft-Antispam-Message-Info: CwpKTyNuFTb90VY4xvQktpIzzNa/kl5s+3AvY8GWNIpAVrRz430mfmBIRp08GNWu2JGGycnPbw2TvnOp8rKdc510vPy9LplGOO9oEz8sq1G7/W4YkDysjv5RYsbWCc+Ph9jswUqEjQTtz8RrZrPTXxhSoE63kutDUN6xcgs0tNQKpFsCg/TjwB5o3O4wuy8QI6CGqrkU4+m8F40wtsliZxxOE8rqp8nqDFJrN47BQdPd6mRHgMJJ9SBvVeS+988+f7a2eK11ar1UOyQtrphxhkXCRdd+EsSm3xS7vhlUoAoTRbCRLr50KmD8zr7xQHbKdCN3PctsQ2zOynrN3CGTK527U9CNijbhy5/JX2AevVZUFDer+bnF+rw5hM33xW+KwUBw9p2nHg06SbXejpZxDLXwPaCXPX10N/odv9WNV9erefgGn8ltAf6bqSSFPEkx5A7ssFABhSMWx2ckObPn0XNS+HoKNqA2hbS6F74BmVcas3Y0Ar8H8/fd9PXMYJKqizuTkrxg3PCAiaFWLPfGeu9rSoKeWN/DOH2y3vZPSToEASB0nPl/fLzTV2PgPBV6WqyZsfT6bRUc3ybu8wWP8QfNiOZW0/j84914huF+cPsXWVm4nD46qasfvB3aTyBFdwnm1X0qBek2OxZdh2mvNhKArvj1ZGuVsL47QUmCNqo9XuY2re6zcURSEb/Arf4WYoIe1f+b+YpQq/VLUbwtV8p6Uu5r1uGTGCqWHgN8dlcCzvFSeWkfSIpJ1xPFRaVfHNZAZEpI7I2wddN0N/Fp50XwHtgHpgV5Wn60wsx3jUxYTNmt70kXl3pfmsYP3p+vv1ym8DFl5YW+PRVVML+jHHIgtPF0yWWFJBXMaZEz8m59jcjqjEhfpc15Xd4lo9Dw0ffeoqeVJbn0bhGRDxx2Tv0VX4vdjRvCuftcDEIe3jS8ZhCesPSxnWkpXXsmTCHihxg658aKdIjN0RWFhi8Ya++K9rnmcDJvYgQiaZz2GpQlPNf3tDGhqnC4QYg1URqO9dSOCyCByU2xXW3VeGVxn6IMgaO2vg1IRilUtIPshCV/VIszvcowGUamQnBR2LMSt1ekvtO5ySdGghJydE4zQksy14gZiLE9Jqnk1fOvJm7E7RoBfv/XkFxrGE9RKT46SU6jfAmW13dPGE0qiZVCQZz34CDZNZ2tn/PI6xTG2d20lYmbFNDKEf76Jrndm64/1khddfSYPe6efR4LjBKyt4a58tZkMCyCsUcJVGTxtLvEx/3DD/OaEJGDzEmkypStWgReCQHWm8165+uUc1G9nVPrPJo0NQnRs7UMlTICb23uZSDcWanRvLOFQJP1v/NZe78mEb+5jbXQLX5PZNFJEfG4VZLlOD44cV4XVWovgvKU8VluXFc4xPeK2hKjGy+J X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(82310400017)(1800799015)(36860700004)(376005); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 22:46:07.2421 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6182785-0cd6-47f2-3ef4-08dc85b149c6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A0FB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4151 Add support to read UMC (Unified Memory Controller) perf events to compare the numbers with QoS monitor for AMD. Signed-off-by: Babu Moger --- v3: Made read_from_mc_dir function generic to both AMD and Intel. Rest are mostly related to rebase. v2: Replace perror with ksft_perror. --- tools/testing/selftests/resctrl/resctrl_val.c | 80 ++++++++++++------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c index 23c0e0a1d845..ffacafb535cd 100644 --- a/tools/testing/selftests/resctrl/resctrl_val.c +++ b/tools/testing/selftests/resctrl/resctrl_val.c @@ -11,6 +11,7 @@ #include "resctrl.h" #define UNCORE_IMC "uncore_imc_" +#define AMD_UMC "amd_umc_" #define READ_FILE_NAME "events/cas_count_read" #define WRITE_FILE_NAME "events/cas_count_write" #define DYN_PMU_PATH "/sys/bus/event_source/devices" @@ -128,7 +129,7 @@ static int open_perf_event(int i, int cpu_no, int j) } /* Get type and config (read and write) of an MC counter */ -static int read_from_mc_dir(char *mc_dir, int count) +static int read_from_mc_dir(char *mc_dir, int count, int vendor) { char cas_count_cfg[1024], mc_counter_cfg[1024], mc_counter_type[1024]; FILE *fp; @@ -152,41 +153,56 @@ static int read_from_mc_dir(char *mc_dir, int count) mc_counters_config[count][WRITE].type = mc_counters_config[count][READ].type; - /* Get read config */ - sprintf(mc_counter_cfg, "%s%s", mc_dir, READ_FILE_NAME); - fp = fopen(mc_counter_cfg, "r"); - if (!fp) { - ksft_perror("Failed to open MC config file"); + if (vendor == ARCH_AMD) { + /* + * Setup the event and umasks for UMC events + * Number of CAS commands sent for reads: + * EventCode = 0x0a, umask = 0x1 + * Number of CAS commands sent for writes: + * EventCode = 0x0a, umask = 0x2 + */ + mc_counters_config[count][READ].event = 0xa; + mc_counters_config[count][READ].umask = 0x1; - return -1; - } - if (fscanf(fp, "%s", cas_count_cfg) <= 0) { - ksft_perror("Could not get MC cas count read"); + mc_counters_config[count][WRITE].event = 0xa; + mc_counters_config[count][WRITE].umask = 0x2; + } else { + /* Get read config */ + sprintf(mc_counter_cfg, "%s%s", mc_dir, READ_FILE_NAME); + fp = fopen(mc_counter_cfg, "r"); + if (!fp) { + ksft_perror("Failed to open MC config file"); + + return -1; + } + if (fscanf(fp, "%s", cas_count_cfg) <= 0) { + ksft_perror("Could not get MC cas count read"); + fclose(fp); + + return -1; + } fclose(fp); - return -1; - } - fclose(fp); + get_event_and_umask(cas_count_cfg, count, READ); - get_event_and_umask(cas_count_cfg, count, READ); + /* Get write config */ + sprintf(mc_counter_cfg, "%s%s", mc_dir, WRITE_FILE_NAME); + fp = fopen(mc_counter_cfg, "r"); + if (!fp) { + ksft_perror("Failed to open MC config file"); - /* Get write config */ - sprintf(mc_counter_cfg, "%s%s", mc_dir, WRITE_FILE_NAME); - fp = fopen(mc_counter_cfg, "r"); - if (!fp) { - ksft_perror("Failed to open MC config file"); + return -1; + } + if (fscanf(fp, "%s", cas_count_cfg) <= 0) { + ksft_perror("Could not get MC cas count write"); + fclose(fp); - return -1; - } - if (fscanf(fp, "%s", cas_count_cfg) <= 0) { - ksft_perror("Could not get MC cas count write"); + return -1; + } fclose(fp); - return -1; + get_event_and_umask(cas_count_cfg, count, WRITE); } - fclose(fp); - - get_event_and_umask(cas_count_cfg, count, WRITE); return 0; } @@ -213,6 +229,8 @@ static int num_of_mem_controllers(void) vendor = get_vendor(); if (vendor == ARCH_INTEL) { sysfs_name = UNCORE_IMC; + } else if (vendor == ARCH_AMD) { + sysfs_name = AMD_UMC; } else { ksft_perror("Unsupported vendor!\n"); return -1; @@ -228,6 +246,7 @@ static int num_of_mem_controllers(void) /* * imc counters are named as "uncore_imc_", hence * increment the pointer to point to . + * For AMD, it will be amd_umc_. */ temp = temp + strlen(sysfs_name); @@ -239,7 +258,7 @@ static int num_of_mem_controllers(void) if (temp[0] >= '0' && temp[0] <= '9') { sprintf(mc_dir, "%s/%s/", DYN_PMU_PATH, ep->d_name); - ret = read_from_mc_dir(mc_dir, count); + ret = read_from_mc_dir(mc_dir, count, vendor); if (ret) { closedir(dp); @@ -250,8 +269,9 @@ static int num_of_mem_controllers(void) } closedir(dp); if (count == 0) { - ksft_print_msg("Unable to find MC counters\n"); - + ksft_print_msg("Unable to find iMC/UMC counters\n"); + if (vendor == ARCH_AMD) + ksft_print_msg("Try loading amd_uncore module\n"); return -1; } } else { From patchwork Wed Jun 5 22:45:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 802173 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2078.outbound.protection.outlook.com [40.107.243.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6147E15FA76; Wed, 5 Jun 2024 22:46:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627577; cv=fail; b=S9K/LJU3VRBlJXlBEkga2cCQtlKZ2/zhb6fx2MkmoWNrNjg7UmbG49cOqS5XcDSyuNnrgM3P2rftBAdhDUfriRJN43f+tEUBU6HjWqYuNNkcbpRtohrmgyjr5mMtwDepwm6seoGpdKncbbw7nYliP14f6pi41V3bX3CayucTVf0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717627577; c=relaxed/simple; bh=tOKNDuf+n2P8XvLQ+Vohkrl3qY/OtOIaZrox2fiLgjk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=R+oaUttdfmdEkRyuXtqIHcH+x+g/7X4kvKbHGg3rtmAi8l29JejApL0oFv3NWf/eexiVjGL1JqtYgpxdCuqoK0iOxwccYtfLWXhXtk6JScoQ4QI7g4R4ar1bVhBF4nOv4bopnwbGlDkjREeRj92P6EiwBu1BM/lb9NRkh6VKWlY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=JLRiyFDL; arc=fail smtp.client-ip=40.107.243.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="JLRiyFDL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PeFV+E8Nq3c3uQhskTv4RmIDJ/Lx9wRrKakNy4chEN0/044NuwrlozewzfzjIFPe9x6HtNa4E2UBMRzSm53qmLiridS7GaqpoqGPLiq5OYjcomrhrO7n49f0JPv2Dz70PQnDosGCbxrQ+pDEoLVCCnzSwNo9PVxDKo3SF48Bq0iD7a4Qlh5E68NaOQhiY3O0wcAICem4rw1PFhsr8CUzZUnGb5YVL2gXfVntdNwo5UR+Cw8Bq+/X+rw68xLQm9cApcGWJF/Szh6KqNkmyUe5YEko/ZowZsscpmEo4IgRwQXaON/FcTWRYDr0zgEuoWBh8rhFWz+8421GHIhUbC9Mcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=isEMcKyCzuZaivTl3Guoszin1uQ4GyzYUQM2cCX1b2E=; b=Svba4eh/jOc2EtyONUGvzDXtozbTjdxGNQQTqJkpQyL8MuprQDvhryi40I5Mkinbp3JUUCUqX6aP7WcljmGUQqkKU5paA1E8yv77LZWokgSwWkkNtaQCRU3ItEmKfsla1TBetrXXFWAUtMx1L88atuhHXTBItMe6/1GghAK+PcCoVnLQcpGmWz6aTbZlikuiOgjv1Rsen79S9JhG86dLxEK7XE0pc1eyVW4HdT2jNlsgJyYFwFaNtkOksXwjjS6pbYhfgEFzG/E9EnPsBmFnxJSXx4hJ2ycFqVnGYOgfuKIZcmFtm2wATu3TXD4ENOAjzc9hcUkg6Zh8vJjMMmILUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=isEMcKyCzuZaivTl3Guoszin1uQ4GyzYUQM2cCX1b2E=; b=JLRiyFDLzKKObY26E1BGKV54fVUszPMHg0+ace5vGBZcArg+8qI6v7CZ7t9GuPDU5mQmpvz6nMknvLm8b/LsNBX42I1VbvsvhntOfyUz8TbBXIWx5ku0hrbC/gkfABjpHWXaHNoaMsKDA8dDkGYxYIQXBiYgpiVbu7Abc1EFwhg= Received: from BL0PR02CA0026.namprd02.prod.outlook.com (2603:10b6:207:3c::39) by CH3PR12MB9453.namprd12.prod.outlook.com (2603:10b6:610:1c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.33; Wed, 5 Jun 2024 22:46:14 +0000 Received: from BL02EPF0001A100.namprd03.prod.outlook.com (2603:10b6:207:3c:cafe::dc) by BL0PR02CA0026.outlook.office365.com (2603:10b6:207:3c::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.31 via Frontend Transport; Wed, 5 Jun 2024 22:46:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL02EPF0001A100.mail.protection.outlook.com (10.167.242.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7633.15 via Frontend Transport; Wed, 5 Jun 2024 22:46:14 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 5 Jun 2024 17:46:13 -0500 From: Babu Moger To: , , CC: , , , , , , Subject: [PATCH v3 4/4] selftests/resctrl: Enable MBA/MBA tests on AMD Date: Wed, 5 Jun 2024 17:45:34 -0500 Message-ID: <24ac6e8dba1b42aec8c33bd3c26f58344dad34f1.1717626661.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A100:EE_|CH3PR12MB9453:EE_ X-MS-Office365-Filtering-Correlation-Id: 58d0ba00-acb3-4bcc-40e2-08dc85b14def X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|1800799015|36860700004|376005; X-Microsoft-Antispam-Message-Info: qzJ4IJkJ10J1Y7FtDfa9uzvHDGPzBIzIGR7Sec/WfYjkZ092ZEpsidSQfkbZU2eGPxAUfr1xQ7wVBU2QKMHu66cg8+8SY4N5gqVrLGXn3mcuMWQ5UxuUJzqEet5p0LycHi8jn0tbCkYkaN2NOyA1X8xW0n05V3J/G1lFGNIHJl3Z9mZ6b5Wb+lyra/Gohur89Drh9Sx2LotCq2Zmq6CNmuymfit5EAbrmL2QnD0XC5TcJQU5wvNrTjpQHzWD2zFca+6QOXCX+pi50txO0mXxUr0lU0ie+TB4bs0GezdS9VSeB/7IgChwouy3X0JOmzaWvEp/n4TuYjrlSctAj86a/dV6AjjqP9gCBHgxFfKQECCd42XBAQmrrHhKgw0/9Ziv97zJxP5XkXxu3SydxRPhu3vQ+ddjSF3KSfbGilZsjkg+8EDurVRR2eLMXrSRKvkHhiyjCNUqjoZNAQkklJoeDiJrBizuQUblGKWtUu2ctGkeZsPxmCy13gpfoKBInZph6pcan2Fs1ttWABYBeqKBmjzz8AMxQh1sMWI5p1FE6uUOUPEbErVcyLMXyix4UPlT6vF62Qv5lNNNRqzn2zLV446w0rWD0YujRn8kbUm/u4Mm4cTE8d0VpcQ7t946xrR8BBdhFoYIaEcGVi6AyzPzM0Yk2FBERFFxhe9MUZWi6nPvstJl5temXiWkSUdKkvRBa606+ov7ViVY93CSLZF/Qu0jfrpOdMQP5SX2ksp0rb26ytM0KXs+ZljIACDhBEXnHJoI8wZgCGBFAfRW6/YzoH9CQc0Zx9I6fGB/PrOV9Y0Cq6odmMX4fH/sf98ZxPxUJBargP4YArbYfZs6FipvTuVRSnO/N+APtJ4yvIW3QQMiWg/mR1dlcsQFeOYA7qVaxgX3hQBX8DkazxUa0YIPSm5UFFc7pnJ2DUVt+Wsur8r+hXyWR6QXBHC7o8Dd1qBT7VK4U3Zeg/YAqaaUSwnAG4HGUFFhy6tg9llTsS6zQC8EvKkrtd+EFKZNLL6zooa6Y3qJylzqJoZwlOTYVjNhO8NyAHPAP2ZGYFMqKdALT/aWY+C/g4BSormHk4s4g+L2vX9AIqUu3zxtcbtkNIiicbxwNt0bqgW8TXUt3n6S61oSU0XuP3lODB6jDpnYl3Ee3drULzPKwAyCFZRzstGw94FVItGsLs8oD69xf4epYS1W5HLQv3w9rDL3FC+/b6h5YoPKKvaBwnXeeMqG9Ep+YxC3nL9cDJ7KnNhxK9toc0RwvLUAnO8PYHjr/A0Y2Nn7SY9a0H4kL0WWm1++ck0VVG4behU2zWajzPDLvJ6W28sj+lO09BdYxWvxuL9CUkyZk0LrhW36UtjcHhuz53aaPLQx6pUxltFhww+t2niLdbuIUe2gOAN49tSGbb9XePcDiTvdckBhMzm9MvlfIJ+v+A== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(82310400017)(1800799015)(36860700004)(376005); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 22:46:14.2217 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 58d0ba00-acb3-4bcc-40e2-08dc85b14def X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A100.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9453 Enable MBA/MBM tests if UMC (Unified Memory Controller) support is available on the system. Tests will be skipped otherwise. Signed-off-by: Babu Moger --- v3: Separated fix as another patch. https://lore.kernel.org/lkml/3a6c9dd9dc6bda6e2582db049bfe853cd836139f.1717622080.git.babu.moger@amd.com/ v2: No changes. --- tools/testing/selftests/resctrl/mba_test.c | 1 - tools/testing/selftests/resctrl/mbm_test.c | 1 - 2 files changed, 2 deletions(-) diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c index 394bbfd8a93e..5702bb1d6a98 100644 --- a/tools/testing/selftests/resctrl/mba_test.c +++ b/tools/testing/selftests/resctrl/mba_test.c @@ -192,7 +192,6 @@ static bool mba_feature_check(const struct resctrl_test *test) struct resctrl_test mba_test = { .name = "MBA", .resource = "MB", - .vendor_specific = ARCH_INTEL, .feature_check = mba_feature_check, .run_test = mba_run_test, .cleanup = mba_test_cleanup, diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c index 9b6f7f162282..dbdb1b490df8 100644 --- a/tools/testing/selftests/resctrl/mbm_test.c +++ b/tools/testing/selftests/resctrl/mbm_test.c @@ -162,7 +162,6 @@ static bool mbm_feature_check(const struct resctrl_test *test) struct resctrl_test mbm_test = { .name = "MBM", .resource = "MB", - .vendor_specific = ARCH_INTEL, .feature_check = mbm_feature_check, .run_test = mbm_run_test, .cleanup = mbm_test_cleanup,