From patchwork Mon Mar 3 16:13:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wojtek Wasko X-Patchwork-Id: 13999157 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2040.outbound.protection.outlook.com [40.107.223.40]) (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 A5FB422E3E9 for ; Mon, 3 Mar 2025 16:14:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741018444; cv=fail; b=O/r15Iy2CyasUuODr/Gm30BTr2feG+EZivoNz7FairUsLxuIXGl15jR3r4WluphAhI6IhURZbv9breAB3Bpfvvrs+bODyMRracfc4hrloyIoiH30S7zDwNCaCDzMs8eZ+aNeLU2VPoRs5/odDnY8/KCknh8Zl+BWNfOE/hGNxgw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741018444; c=relaxed/simple; bh=jI7Z0RPIUDZZQcW+odQqrXsyoPz8dfGXLL7pTAAds5w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Gxs6jWpFosj9uGh2ySEakkPUd33xL4/708H/HHHKKh8ObHPLtDnllgKm8bE+5C0HyR8gVRSnd1PNVVdrCiEj4ADGIJFdlELZLQ8qPvZz2xrqwe43FpEqcKZXje69MjpenJPhuQBO+5dL8eP+umZMyOwsgtIrhg2zac6MuD5qq7k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=kBQy8Ggp; arc=fail smtp.client-ip=40.107.223.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="kBQy8Ggp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ID+jfqCm/aaa3j8wXeVc++EQAmLtaUcUmzOyvpXRZbDxkHeoRR01BuHA0G0hVUm0/rp3LirtQVaJp1SbLmxdmkeYuRc9Nt1Pt72kyjNy76WlKI/vog0bY7XeVdPrf4D6qADA6Veggk8MZXI2SQyteXBAD81PXT8wF+SiBhfq6cTq9HdyQ6qhxKr8G8suhcE+e5EL1iVCY6nT22qd1a3DMJtBnQbTypJdzkcdG2CyW3Uo4cQtzm5fP1I3fX4jenGDgdxelvArMto63HJdbSZAqhhP4jDmJ8yHjmN/Xs3kA5ou/oPDuzf8K4zG+6kK87s86hhsTgGV6wEJpZe5Ds33fA== 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=5bGEbL8UsDW/lntfljG1L4K6eomaTCMikWWfqVL6UdE=; b=USibllHTvAzplOL1feoKLDr8O5xIVnd1PwAMV3HvZRRRnJBr2nH2GikUcYv7UVYhGDYVqbPOSTaIUEOiALG72G1fNeM6bX5zqcZBeKo5ooH9hVB77pgmitDODEbWdyn7KOTN6WULsmFdkuwj9S02XVHkC/ite4EVRXx3EaBQOmJj3KBrV1n/Fk+d4vOqQ8jAxqHXL79mxYoL8keAZ3obVy4cO3Sg+QamxZgWze+h+Ep+OI8A7MLhMxbnbcVfLhHdINV060PzhZO5m2K0f4fdKc+2oB2L/jwUmRPO+j35BeFPm8OTgRownrzvleYpR/D93yIv6HFgAlxzDoWWFSrJZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5bGEbL8UsDW/lntfljG1L4K6eomaTCMikWWfqVL6UdE=; b=kBQy8Ggp9aQ8C2s6el594WpMr+oIFiM4BbZBQYaIh0Jo8PQ09HF57rJ9ta0QFqbaycCSmAphB7hkXiLYWIgM/1/ORGS9POxSWbX5CQ6k9NoWeno5AB/8Xllt1p8uUoK+zd2jbDTQ8v+Bn9+tdEcBaIJbmpDToBz77f1XR2ThIgSE6OK+ulkd7HGoyygOvNr16TdOZ/yISNYr+uhLEAFzMx/T3fVcFCY1oFoMpY58HfbKSeDykueBOponzzTUww4NVkQ3+9EgjXO4Nk64FoYuOANVbsaOMEYOoncTqLZCj1SmomY/dAZbWKeA5pDbydg3ReTm5ysEc2eXPDlp9ivKTw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM4PR12MB8558.namprd12.prod.outlook.com (2603:10b6:8:187::22) by IA0PPF1D04084C7.namprd12.prod.outlook.com (2603:10b6:20f:fc04::bca) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.25; Mon, 3 Mar 2025 16:14:00 +0000 Received: from DM4PR12MB8558.namprd12.prod.outlook.com ([fe80::5ce:264f:c63c:2703]) by DM4PR12MB8558.namprd12.prod.outlook.com ([fe80::5ce:264f:c63c:2703%5]) with mapi id 15.20.8489.025; Mon, 3 Mar 2025 16:14:00 +0000 From: Wojtek Wasko To: netdev@vger.kernel.org Cc: richardcochran@gmail.com, vadim.fedorenko@linux.dev, kuba@kernel.org, horms@kernel.org, anna-maria@linutronix.de, frederic@kernel.org, pabeni@redhat.com, tglx@linutronix.de Subject: [PATCH net-next v4 3/3] testptp: Add option to open PHC in readonly mode Date: Mon, 3 Mar 2025 18:13:45 +0200 Message-ID: <20250303161345.3053496-4-wwasko@nvidia.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20250303161345.3053496-1-wwasko@nvidia.com> References: <20250303161345.3053496-1-wwasko@nvidia.com> X-ClientProxiedBy: LO4P123CA0123.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:192::20) To DM4PR12MB8558.namprd12.prod.outlook.com (2603:10b6:8:187::22) Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB8558:EE_|IA0PPF1D04084C7:EE_ X-MS-Office365-Filtering-Correlation-Id: 03a6cf41-0a60-4f94-927f-08dd5a6e683c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?q?960H1TAAqDdsrnxNMTuuOzSI/61Iyo9?= =?utf-8?q?RBBDnmeHYTUIW93oKCnqw8QST5ZQTxLuV9gDgKN7xvZjf15sZvfA74d1PbKHXovV6?= =?utf-8?q?I94Ac4C3QF70rLecIeRbCrUFeK0FxBLgLIJtM6keCkOfbd3uuqK+nCp8rI8XxhDsJ?= =?utf-8?q?m3+tWfX9chyatmWLR2wFQPKw38eQhfxbeELpBHuj2mFCb559sKK9R2ThuiNNtTDWx?= =?utf-8?q?4zKtUMx4gpMy3yRJDDb9f4pJVkYdbfEZaKn2P/VF8rEnN1rN+I5pW36AHtRaVRshA?= =?utf-8?q?S7zlzLo1OPc7wm+foIkDMgDkM4FzWO06+56h6XOHJMWGYYzJ09HdeN4oUTHRYZkT6?= =?utf-8?q?eUolhYL9/yHHFnpHJyZ3snzLX5yLQAfZyOrQx+Z21w59XIJ+FcgwQo1NfVDmqeovA?= =?utf-8?q?iFQp08xhQ3oEipKpZcFko3OMYX7LmgZufaXl73DcSqvekaP99pfLZQej52UMSyDwd?= =?utf-8?q?0a0R7LSnpWVyg4Lw8gKE7Xo7WbzVUkzbtEc1k8vvbINOC8cW0nKbKFphRXJY3jdzG?= =?utf-8?q?N/PR/bQ3cBChKlxKUn1veO7eOT+TbKKwrpaKu3PJAawfDya64VFpu+cmWBaC6J5n5?= =?utf-8?q?hfzPRcDmQuH/oN7MRbszj4pfA+bRi69Lab49gdqucKkHE9/x+SL8F0eWv9/tyopn9?= =?utf-8?q?e2vjeThdvOOSQRy5igmyQy8R1XGK540oZm6x0bSKi/WNj31X+10RtPXiPzJ7V0h8h?= =?utf-8?q?Ds9Y72m0SPe5Dg3E5zryMaVHUIdPjuQ/o48RWsMy1a/kEjxqXHcQs3mz7ypFNMFTn?= =?utf-8?q?TYpU5fyVyCgnj1kiF52DqzPont2tCwpEHsWUugnX85fAjUmaCE4zdS4TFzMSUvuAY?= =?utf-8?q?jh3s9RsUMX0PUw0q2J8dLXT74zNVADakO5sKzw5N3NVydt9YNAHmm6ylQJ16vzoju?= =?utf-8?q?srBz350pLOcJdIWjMO3PTdJ1O1rJ7DEOr5rZS9GlGeS9IvXsWyMPgrlb+m8eFPcOn?= =?utf-8?q?IYR4UT+0wSEuhx4xD5E2QrvKPr7Tp6QdzzsPvUu0ngVK62/e7Om0pPQOiwTNW6gbW?= =?utf-8?q?9SEbcTnrJeE1atEkOuj7fpMgF5ouFLOJD2KgbWIX6EFbp+ZWAM7wCg5HXk1ohghYb?= =?utf-8?q?k7uQmJzMj7LXYLg/RP+WI6fjW9oSfGZLOpb6W4BcSKwIYwQ+PlT4EoW5qfa6ymrx3?= =?utf-8?q?6Y1kX55SH0p4nu7XeTTemoBJJb12g3gdq0Bi5uqhyPqpbRhcnfJxPf4ZC9nM7biWV?= =?utf-8?q?oc31qsXylIYFbVGJpehqQMNxUEn+xK4EuKA56bohvZDFq4u8B/3UKCn3QjQvN7hc5?= =?utf-8?q?3b+EZgKxk8u8QEcGJ4xar/QJNQVzbYcYvca02cPhwxtn+9MhswHvxlyt2y6l/FJEZ?= =?utf-8?q?699XdDwhmVZY?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB8558.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?QF05z5zKwg72TfOk2c0nEx7qcCJ6?= =?utf-8?q?3bUHYQVUphJIOkGHN/Hb/vD04IB8TQA54TJpP+5sLGmuqz52w7GOo6w9Y0faPDP//?= =?utf-8?q?OwOcz4Ye3kto31jD6vyHZ2qQHCZMHQ0DhSTvUuq5HtB48Wd2LAS/Yl2/7BYL2TAdt?= =?utf-8?q?UD9S8gsMetWgtRx8B/f1loXjl454ROQZTRq7NsijoZU/X7wWiK3rX/hpfDYmlHLrS?= =?utf-8?q?/4eT5DWnPccJprIqOxFrkm59ZmB0l2voJpep5lM+TEZdnq6gBRU5pWUMH52nYFj+z?= =?utf-8?q?zeEK+mXpFlW2z8mwyC58TjulOroI1duEG9CVYIG1b8WkxBZbNHhpxkTG47ycdzWdc?= =?utf-8?q?P4rRhqrdQc1o5Kc+6nULFbpLXlVnOJ1WgBvIxG29hnxhhHqc/BOVxORZZPp8TWB9C?= =?utf-8?q?tnprjcmSKlmfpIL5te+gSCOA5sLvxsqXXMBLYtRwTloMuJB8dy6tEt9CPG4mBqhRh?= =?utf-8?q?3KxYgJMdCYLuG5uXu/8LAcwYNnwcZXWKGV3Pv6wWcfU6R6Vb/HefbJsyu06E2R1cd?= =?utf-8?q?LmX00108oBzcIZa4kEGmoToFG+kJGTp4tARoFffzKzvyOnEG2D/igbjSqsfq0upkv?= =?utf-8?q?jUZueSWy2xexdPopZAKLur5C17tIuxrywyZtimOc6GNR5s/lQ8Yv+sHldAGOHrQSo?= =?utf-8?q?XV0ioEZ3KFXMnpXuEjjV4th8YioB8gMt84ArIiCaJOg/LsP8sC/0ZH0ArhaWGUWuw?= =?utf-8?q?ggZIx+YESaCe/6IJTr56pk3EUeFd1e4luK1VNEupKeB91W0r2C+IgNITkMf3c/8Ge?= =?utf-8?q?0d7ZyedLkC44Bf60V5MfiDNzpzb27ZmAzJi1q9u4Fa8kpm0o49PnURS61aXnqHDku?= =?utf-8?q?aNVN2qLr1EEJ09+hRfep/IHE1umyRD0Rc1ozFK7Xit4tOEGKH9Bw2kM3S4vl2X0sg?= =?utf-8?q?MnX7mwmyT2UJP6eXOoX87Iyj6YbezIfDIV5IvHE/tQfXobvv5U4nc75OInN8ZUgiY?= =?utf-8?q?kMK2VsAXnoytLiHV2E1pE89x0w03WOFhHtqPLHZ2NivrIfT6Jg/vPfYk+CyV6u8oN?= =?utf-8?q?6/GxC6UbyCNUt5Fxw5kevvYhG/u3Zsz0U/DNL6OHyPNBxfpcFxMdj2ILm+Wk/Wr3R?= =?utf-8?q?boS2hTdWnIvE+TNZyYfsQzuSAmmK28HUVoKEX7/Pk8k1iBq74GDa4YEk+hOeKOKps?= =?utf-8?q?MsUglTAnN+l8duf4i3XEkkmgiYFcR/B2U4t5wxsI+hz2tIUZCS+eNRGJAiEygeYyf?= =?utf-8?q?NGvg0JdV2p2baLfCFk8cYXlGQdyhajeRUhekuW6va1JfGZ69STNTPKctm1agTzEVi?= =?utf-8?q?s+gBBJ0CgmxBbZlvGLnfyHSQ0uX+1mC+KPsrXa5H4UB/ET9r/DO7QaUj/DUyObNph?= =?utf-8?q?tV0ZrMEntcRNR9z63NX711K2TrOPqAh0wB1DumduVKhx29XPWD0ReDjfsy9IRD97j?= =?utf-8?q?UJeE5Wl6PzeW7HqNEtIPEf3mxeZIfspo+PgEl6zOrBogKZnA71zFMt+h1gWbEvgHD?= =?utf-8?q?QQZoqBKSLiW+ACgWSrtmqeq1413c0XrIeGNLBjQ80BypM0kyfv+HJbc6cpet/j4Au?= =?utf-8?q?tLENXu4GCsVe?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03a6cf41-0a60-4f94-927f-08dd5a6e683c X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB8558.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2025 16:14:00.0092 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yT3wxUg36zBFRlOriBL0S/mGSwOhzjrfvvSbyJTcWEyZUajiTBV46IsIe150chFYY2KPATijHZpnAnf//739dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF1D04084C7 X-Patchwork-Delegate: kuba@kernel.org PTP Hardware Clocks no longer require WRITE permission to perform readonly operations, such as listing device capabilities or listening to EXTTS events once they have been enabled by a process with WRITE permissions. Add '-r' option to testptp to open the PHC in readonly mode instead of the default read-write mode. Skip enabling EXTTS if readonly mode is requested. Acked-by: Richard Cochran Reviewed-by: Vadim Fedorenko Signed-off-by: Wojtek Wasko --- tools/testing/selftests/ptp/testptp.c | 37 +++++++++++++++++---------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/ptp/testptp.c b/tools/testing/selftests/ptp/testptp.c index 58064151f2c8..edc08a4433fd 100644 --- a/tools/testing/selftests/ptp/testptp.c +++ b/tools/testing/selftests/ptp/testptp.c @@ -140,6 +140,7 @@ static void usage(char *progname) " -H val set output phase to 'val' nanoseconds (requires -p)\n" " -w val set output pulse width to 'val' nanoseconds (requires -p)\n" " -P val enable or disable (val=1|0) the system clock PPS\n" + " -r open the ptp clock in readonly mode\n" " -s set the ptp clock time from the system time\n" " -S set the system time from the ptp clock time\n" " -t val shift the ptp clock time by 'val' seconds\n" @@ -188,6 +189,7 @@ int main(int argc, char *argv[]) int pin_index = -1, pin_func; int pps = -1; int seconds = 0; + int readonly = 0; int settime = 0; int channel = -1; clockid_t ext_clockid = CLOCK_REALTIME; @@ -200,7 +202,7 @@ int main(int argc, char *argv[]) progname = strrchr(argv[0], '/'); progname = progname ? 1+progname : argv[0]; - while (EOF != (c = getopt(argc, argv, "cd:e:f:F:ghH:i:k:lL:n:o:p:P:sSt:T:w:x:Xy:z"))) { + while (EOF != (c = getopt(argc, argv, "cd:e:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) { switch (c) { case 'c': capabilities = 1; @@ -252,6 +254,9 @@ int main(int argc, char *argv[]) case 'P': pps = atoi(optarg); break; + case 'r': + readonly = 1; + break; case 's': settime = 1; break; @@ -308,7 +313,7 @@ int main(int argc, char *argv[]) } } - fd = open(device, O_RDWR); + fd = open(device, readonly ? O_RDONLY : O_RDWR); if (fd < 0) { fprintf(stderr, "opening %s: %s\n", device, strerror(errno)); return -1; @@ -436,14 +441,16 @@ int main(int argc, char *argv[]) } if (extts) { - memset(&extts_request, 0, sizeof(extts_request)); - extts_request.index = index; - extts_request.flags = PTP_ENABLE_FEATURE; - if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { - perror("PTP_EXTTS_REQUEST"); - extts = 0; - } else { - puts("external time stamp request okay"); + if (!readonly) { + memset(&extts_request, 0, sizeof(extts_request)); + extts_request.index = index; + extts_request.flags = PTP_ENABLE_FEATURE; + if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { + perror("PTP_EXTTS_REQUEST"); + extts = 0; + } else { + puts("external time stamp request okay"); + } } for (; extts; extts--) { cnt = read(fd, &event, sizeof(event)); @@ -455,10 +462,12 @@ int main(int argc, char *argv[]) event.t.sec, event.t.nsec); fflush(stdout); } - /* Disable the feature again. */ - extts_request.flags = 0; - if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { - perror("PTP_EXTTS_REQUEST"); + if (!readonly) { + /* Disable the feature again. */ + extts_request.flags = 0; + if (ioctl(fd, PTP_EXTTS_REQUEST, &extts_request)) { + perror("PTP_EXTTS_REQUEST"); + } } }