From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YQZPR01CU011.outbound.protection.outlook.com (mail-canadaeastazon11020101.outbound.protection.outlook.com [52.101.191.101]) (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 611DF1F1508 for ; Tue, 21 Jan 2025 14:30:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.191.101 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737469840; cv=fail; b=JPBxnWccOZLFNQir9UE5vxMaGnsB7gdjk9IlKO05gAtIq5qbE2jKwLZSVkCR+sog4UJO+32wxrOgB6mbGd8Qu8QpMgcV4Zhm4Ew9JZajlovjn9ASgdveKbjpK9o8qONIsHlOCya86loXZ4/EYCs6XZ+keANiYKwvd0PAkf3C83U= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737469840; c=relaxed/simple; bh=phj3xcS8t14DPv8mipOlSYUCFUySru3xYTCFNuzg2qA=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=sgdA1WV5c9jWGLYMAsJoVjWoswUl6Z/vwg7lf1TJH4DJTJkbc5y7YG+zRNYQ8grdNIUkkb5OVn6A6D3NfGnQsZsoQm11usoA4rdWmRAEvN3/9ocfhoETTaeohdZvJ1Ey7dtOFYvvQUH57qhJJfr3t4vKQcQO4brQNSID2oS0Xf8= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com; spf=pass smtp.mailfrom=efficios.com; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b=YrNbnEAT; arc=fail smtp.client-ip=52.101.191.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=efficios.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="YrNbnEAT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AaCLhE5ONKY+hqDNXmfjZBO857QpfO4SnJ4NvDz8BBHtEgrt2rQ2jKOAAug6lwsTDCRlH2w0g2S8/2pA58ycx3NQSmEfX4KCu2aePvnVTRBUziClHVoT1jCsDtrrAuvCNnFlKAQOh+SWycTCO1YL3/OpLE1gRgJFRA2r1qOiB06OM4/tf0lvQaFTpxYApTknzRsj/pLzu2iH7UFKFARdJOUIP6Kwbkrwh7nlSIbVXjqOA3KnngmYVIHAiif9IgJhgh+WheouU20I0HRaV32nFjbMU6c6mAEmQYbjrwp5t67YTl20VBtbe/cszyiYVWMzeihc39NmbDsWifCdV8gWSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=qVPbwX8wH7C9AVulvIgZ5LBj5HVdKEg6XGiwP+a78Kc=; b=sYHEkirfnWaI3+Ng2n4NlabKn0XAc4YaMDOpVlG4FaBxbU5Apr1h27POLfrtDw2Rba9KDy3dOUeqnOTRn5xFVjQzCP44MC/tfoto7D5pSi9pJzShYZC6mZrVu8c15PZ5VV/8HM0zjP9XpYQgfou6CyjLeqcaOQ+CnYz9zFvRL4oRr+J7mW7b4OEfzDCFx8XTn12PJxI/3p2aZecZ03MoRI+kL3t0TKdsD37zCfkRFNWU4wBM9WnETRY5yYR2W2EtkIQkBTPj5vwyju0g9qUJtPnHq2sE4g5p50duKh/t2XF7OTFp9zL6VN095KvoaF7WD2tt3aA45Y7+X1Fl78w7vQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qVPbwX8wH7C9AVulvIgZ5LBj5HVdKEg6XGiwP+a78Kc=; b=YrNbnEATOZB8ul2YyXi0ZT5Xxjft57wXxZvQ+8Qxoy6sGitwOwjenzDIS17v8bxfzBrPBrRgo6feGOjugiop7gJLrPSP04kJIPT3xWArzXLCWpjnN4qTCUvitORkvpSUYCI/lno6xGG7ntx9SPGXE579QFU+b3F0mo9e2RcAWYv/U4Y1W6SinUEQpigWOKAF8ShNOvlJWmujvVNEhQ4KefzNOynlPSr9cvUZ1CKRV5fNTR/hC53KRDgHc2jEkqiLyUy9xainotBmKPPO2aiCEQBcFkw7rvw2hiur9fUhHwPn+OiESCpWD81nlrUkcrDYMdROES5ZOJ0ns/HdacV0zQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by YQBPR0101MB8958.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:5c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8356.22; Tue, 21 Jan 2025 14:30:35 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::50f1:2e3f:a5dd:5b4%4]) with mapi id 15.20.8356.020; Tue, 21 Jan 2025 14:30:35 +0000 Message-ID: <231048a3-8d7b-4bc9-a3d2-697e00da2c8c@efficios.com> Date: Tue, 21 Jan 2025 09:30:30 -0500 User-Agent: Mozilla Thunderbird Subject: Re: perf: is it possible to userspace rdpmc but only on a certain core type To: Peter Zijlstra , "Liang, Kan" Cc: Vince Weaver , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , linux-kernel@vger.kernel.org, Andi Kleen References: <31ad367a-721f-46e7-8e5f-e96b250a8a32@linux.intel.com> <20250121125230.GD7145@noisy.programming.kicks-ass.net> Content-Language: en-US From: Mathieu Desnoyers In-Reply-To: <20250121125230.GD7145@noisy.programming.kicks-ass.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0154.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:e::27) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|YQBPR0101MB8958:EE_ X-MS-Office365-Filtering-Correlation-Id: cbe54348-8f3a-4722-efa8-08dd3a282add X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?R1d1Zk8vc3hXS2dZTzRFUUliaDlFcE9LSU94Tm5TamppS1dFZ2VmMFUxR0JW?= =?utf-8?B?N0VGeTFQVVZ5UWd5T3ZFZGlmUWEyc2kvRHpWOS9zckVsL2pPbC8yNVpRd29M?= =?utf-8?B?emtVVDNsVU9vdUg1K0w3WVVPR0M0R2hESmZmb3UvNUtLenVhSkZiZ1lHVkcr?= =?utf-8?B?OHZHbnlHZldHRVNKaTVDbUpoLzRQMGZJWUo0MlRSQjExVXo3Rm5EVzRIZjhz?= =?utf-8?B?VFVlTHhUUHZYam41aGxZVnRYQWhmcFJsVVpWcHluR1ZUS0J0L1lGWnR6T2tR?= =?utf-8?B?ZFFsUjNMdnpYQ0gxcG54OTBMMS83VzA2QmY1b1dueEdGRjRyOVYyQzFGNUFX?= =?utf-8?B?UlFjMHp4NlYvQnp4Rzc1bFF5U3VXNXBWUnUzSVlBdUx1aUt2VVZWV2Nwa3RR?= =?utf-8?B?L1VGRk9Hd1V0SFVwY0x5MXNmcytkR3dROWFaK0laeXJUd3Rzbkdjc094N09x?= =?utf-8?B?aE01dnVsdi9kcmU5Qmlkc00zWjNYSGloaHpydFMyZ3kyUW01elozRTVXTTNh?= =?utf-8?B?OTFGOTRKYWE2dkhmdzh0dWlrNWFiSWFueEdqeWhvazNNclJRMnBuVXUrVWV3?= =?utf-8?B?OUUrRWsvZWhrSEtiK3Bvd2lXTVdJMmI5R0RoOW43SkF4Tk9iSUlZMUUwOFp3?= =?utf-8?B?alhUV2pEbWN0cnlKTkFLZTVvL1ZNK0M4ZUJ3R0NjUHZtdkRWektzZTU5VGhr?= =?utf-8?B?aHh4cTNVVjcwSjFqVUtraC9MTGVuZUNoWnFnd2FUQTdxS0hQK3hzWlYxakdB?= =?utf-8?B?Rm91UVkyMzNpSnJJaXUzdFNlQTM2SEE2NjJGekd5UVhtT3djNmlrM3BlMm1z?= =?utf-8?B?a0VhVHZrd3FWam80cit0WGlUcjBpQllDU2lEeUN0cXB6aXJGWk1HN0tRN2ND?= =?utf-8?B?THEyN3pqZlJMSWhFeGFScFR6Z2t1Q09OTzhLQnNnbVppTWVVR1Y1ODFaN1dj?= =?utf-8?B?UGVxUElENzZyeG1oNFhHU1Vvc25qclRDYVNKSHFjYkNuelE4WWpuc1g0OEJC?= =?utf-8?B?YUZ0RlNHMWNHYnVBOHRPYU9FdHZ1cnRiL1VVMnhsZW9HNnJac0hwdkhTWEJ4?= =?utf-8?B?REFCcDNVL096bC9aQk9sVUk4WjFTL3I1WGhsaXp3U2Z1NlBHWEd6QTRXK1BB?= =?utf-8?B?RXJBbWxMK1cybE0zUjdiYmhvSUY1UVU0Rng1MHQ2TEkvWk1RUjRzMVBJRi9M?= =?utf-8?B?d0Mvd1RIdUg2bnJtQVdKUDBiSFZFWExZWXc1RFhueVFnTDBOdjNQNjJWQk94?= =?utf-8?B?cThnU0JlRElVUlJUNUxGVVZKU2g3d3VwQ2dXOG9kOTFjbDVmWW1YR2g0UlpP?= =?utf-8?B?RmQrOTdCVHF4OXlMM28vR1UzSEoyajVuWFhMZlhGa1pjWTdOMUlodzFLNXRl?= =?utf-8?B?QmxOc29qTnVGUG9EZWd4bE1UZUpnUkw3K25Od0NuaXVMaHNNQ0duTTA1d1Nl?= =?utf-8?B?WmYzL0MwNGh1NzF4anMwTTh6cGdDb2FDblREcTd1Ulp0djFQUDNacWhyTnNX?= =?utf-8?B?TlZuaUdOdVRqV3dMeEEyMmlwbXJxV0VzQkxlNWk0NlZDMkhBUms5L0hybUhz?= =?utf-8?B?SjRvVVlUdkFWRHZYR1Buc2xqZGJpcVdWT2ZwaVdFZkxYc29CRE53bXRrbU1p?= =?utf-8?B?TER0dDJreXBXMUphdE9nNERmSTJCU3BYdHFVQms5NFFkWWNOTXRmMkFTOC9z?= =?utf-8?B?QmdYQzMvbCtrNytKd1d6ZFl3Z3BxUE8wMDBPMDlTMWltM1ZFdUgwMDJrQUhU?= =?utf-8?B?YWptb1NneVBycjZtcHltNm1XS29pWE5hR2dVaU5Nck9oQ2JPL0RQa1JaYk9r?= =?utf-8?B?U3RBR0FKNGN2UFBhY1Rpdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c0NjTjJ0bE5aSGFYT2tOMnBkbDkvMjBaeVhGWFYxcDBWbFU3S3prTDJUOVNz?= =?utf-8?B?TkV5OThiWHkrUkZORHhLdnp4bmltY0o0VDZib0NUbzhxdmJ6Wlk4RmU3Yit5?= =?utf-8?B?MjZwSjQ4ejdkRng1RXluY1YrOWNIa2tBVjBEeVlVT2VwNjRQZHVoZDBjSDQx?= =?utf-8?B?S2xQaUlzcEUyRVp1ZWtmM1RQanNlL1RsZE5aR0l2dVRVQTdKTkp1Z3I4TlpN?= =?utf-8?B?Q25xRnk5VTAwSm93UlZSdDJHVGRuZUFuVzBESUV0ekc0Y3dORHhYb293SHg5?= =?utf-8?B?cXhnWFliUW5HNXJpM0I0WTI5cXhmWmhVcTVEWXF1MUN2ZzZhczl2aTI1QzJU?= =?utf-8?B?MTgreDlMVTF1aUdUOEhpZERSdnphY0pPdGpMeUcwNHN2MW14RzhuOTN6QXJl?= =?utf-8?B?U3BQUFFGSDM3V1YxYk9NM05KSlFyMGhnUVVpWXhiWWxiODBwMmRkSndUUDVx?= =?utf-8?B?Wk9uT0dYRFBOcFltMWdNeTN5ZENLYTlKTHcrNnB5RkdKL2NxNjlwM2JVVHZ6?= =?utf-8?B?NFVDZUNJZVpONytOSmRaQUwraU16UTFGVi9wMUFKTEgwWXFrZDN2VEpsdDZo?= =?utf-8?B?ODVkd0UyeGZtbVIwRkh1RmlCaDZyYy9hcDB4d1ZHRGJoOTNydWxQeXJTN1VE?= =?utf-8?B?SU9uTUxqSG8vZTY0VHhHaUhTNDlVNTQzVmgvNmFJTWdJSy9aZk8vRHhCNkZp?= =?utf-8?B?YndJN0VMR0craXhrNWxnaWhRMzhnL213b2g2SUIzOWs2NCt1QUhvaUU4VXV1?= =?utf-8?B?Qmw5emtDcDN5eUU0WStVa1J3QStMVW1Db1BrRjRNT1h2VWtHVGFnQ1JobzFK?= =?utf-8?B?NUdZM1VRa2J3SDZrZVNjK2pET0ZtUnpuVVhFTW5qTkQ2UE9tZHFKTWpBdEQw?= =?utf-8?B?aWlreFdhWFhPT29JcFllVzFPQnZMYzhGeVpLd2tqR2c0Skp2L2c2dVE3UE40?= =?utf-8?B?S2s1Vk93OGtVeDk3Q1MvampEa1dUbi9nM0dPbEhaSzJQYmlmdGp0eVNMMjNn?= =?utf-8?B?cTVERWdqcU5LZ3V1MXFwRnpLTW14dG1lYVZ0N3RiRFBYQ2V0TDR2aUJDMk1M?= =?utf-8?B?ZVVOSjB0bnBjYWNzUngySjMxYWNGbTYyVWREakNQSENaNkY1RnZlSkRVZUdj?= =?utf-8?B?Y3BwYVA5U0lmVjA3UHlXakZXdU9QU3Zaa0RvTmZnWllyUjhpSnF4U2FPM1hB?= =?utf-8?B?OE5EbmpEZEtQMy9FV3RQZ0QzSG1ZbTdrNzA0VGVOcmszVHhaSEZ6NTYrZEVF?= =?utf-8?B?c29aWEtKSkFHV2tLV09Qdzg1Y0RIUEZONGNSR2xtc1FETnFqdFByRmY2bVVr?= =?utf-8?B?UW1UajRlbkhRRTluV2plWSszN1VlSFd5RDlJV3VXdnduWFU5T0wwQ0lyS1d0?= =?utf-8?B?SC9ERkI5RExha1B2cndjRlRaQ2FsOHFVT2NKZmtOMHNGMzk1NGVZSEIvT3Zj?= =?utf-8?B?MFJ0dkdhaUxRbFMydjlCb0xFMktva1g1YzFRRDdlTmNheWpBV0dzQ1RzQ1FO?= =?utf-8?B?Y3BiMFUra25KNCtEenhEd21JMENTZllkUmloTXo5Qkcyb0hSMlFuSHYvYVNh?= =?utf-8?B?Y0tvVlRKZ0ZnK1FlcXlZK3oyRFNDNTlYN0pwVWJYOUM4RGsvYTc5R2lkbytw?= =?utf-8?B?M1QrMDFDajE2RG1TTG85TzF5Z1U3TjVPUEpsYUdsRmNsVm9BYlNERlRwNXVX?= =?utf-8?B?eW10d3lsdXlTVFVleXoybVVsRnpVeG5HWWpaQ0Z0ZEpoWW5uOVFXWURWdzVV?= =?utf-8?B?T0paZGg0SEZvWGFZdWtFVjQzSkhOT3NjcGQ3L3FkVzlOL2szdStyUDA1bE0r?= =?utf-8?B?aVpkWFVpcXhENjkwb1E0bi9ROTBIN2hnQnd5S1BQanNKSjRxWmIzenNsRjI1?= =?utf-8?B?M2E4d2hkOUdaWCtidGNxRU8xd2l2bnNBTkR4VDdnSy9lcXdNZVNFM1VFRkFS?= =?utf-8?B?cEJmcGcxUmJ1VmJacTNtS3RmTU9xZWlQb1ZIcEIwdmlselV4MTlrOUNBckxN?= =?utf-8?B?akErdXlnZEk3T2RpM0p1dTlIQjY0d2hlVmJ1NEFjWi9icVN1NWlTODlVZmIr?= =?utf-8?B?cDJmNTczNGVjV1ZCTCtKcDBVbXBFT3h0bEJ3cXFxdGtxWEhKWHlUTnRDWGpE?= =?utf-8?B?ME5BY2N5aFBybzFSNXdPNDRnV2p4SzdEYVFQS1laYmQwdVl2Q3pML3lrTXda?= =?utf-8?Q?7rmdYIgLKEAOaQl8uaw4J8A=3D?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: cbe54348-8f3a-4722-efa8-08dd3a282add X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2025 14:30:35.0796 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: s9XsgHRhqIYp/6BfRMuwvq6EiL0oIUcOXjDl4iX2AHbcqDnx+qulKnGsPRzD0AMjtk8uQj/ZBHFOKyZAweT7qJ8B0Yio63ayBjhWHrVZIuQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQBPR0101MB8958 On 2025-01-21 07:52, Peter Zijlstra wrote: > On Mon, Jan 20, 2025 at 11:44:37AM -0500, Liang, Kan wrote: >> >> >> On 2025-01-17 5:04 p.m., Vince Weaver wrote: >>> Hello >>> >>> so we've been working on PAPI support for Intel Top-Down events, which >>> let's say does "exciting" things involving the rdpmc instruction. >>> >>> One issue we are having is that on a hybrid machine (Raptor Lake in this >>> case with performance/efficiency cores) there is no top-down support >>> for the E-cores, and it will gpf/segfault if you try to rdpmc the top-down >>> events. >>> >>> Obviously PAPI would like to avoid this, and somehow only run the rdpmc >>> from userspace if scheduled on a P-core. >>> >>> Is there any way to atomically do this? Somehow detect what core we are >>> on and atomically execute a userspace instruction before a core-reschedule >>> can happen? >>> >>> Or barring that, any other way to handle this in a way that won't crash >>> without having to have the users have to bind to a core any time they want >>> to run PAPI? >> >> Can the PAPI rely on the event_idx(), similar to what Andi's pmu-tools >> do? For a stopped event, the index is always 0. > > That's not race-free, the task can get migrated to an E core the moment > after you done the load and before the rdpmc instruction. > > I suppose you can wrap the whole thing in RSEQ though, it's a bit of a > pain, but RSEQ can be configured to abort on migration. > > The very latest libc (2.35+) should have rseq registered by default, > older will have to do so itself -- there is example code in > tools/testing/selftests/rseq but also > https://git.kernel.org/pub/scm/libs/librseq/librseq.git Indeed, you could start from a copy of this function: https://git.kernel.org/pub/scm/libs/librseq/librseq.git/tree/include/rseq/arch/x86/bits.h#n161 and tweak it to issue "rdpmc" rather than "addq", thus creating a helper such as: int rseq_try_rdpmc(params..., int cpu); (e.g. return 0 on success, -1 on abort) and use it as such from C (untested code snippet): static inline bool rseq_rdpmc(params...) { bool rdpmc_issued = false; for (;;) { int cpu = rseq_current_cpu(); if (!cpu_is_p_core(cpu)) break; if (!rseq_try_rdpmc(params..., cpu)) { rdpmc_issued = true; break; } } return rdpmc_issued; } The rseq critical section in rseq_try_rdpmc will either abort if migrated elsewhere, else it will issue the rdpmc instruction if it is still on the right cpu when the instruction is executed. Thanks, Mathieu > > -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com