From nobody Sat Apr 4 01:49:05 2026 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) (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 2EBDE1FBC8C; Sat, 21 Mar 2026 00:53:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.143.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054429; cv=fail; b=jGZZoNgAo9A6OIYsdbPhJ3Ggr4+kU9mY25OMnEZdXyMzYdISHg3uZ6wSh5oZZaI9V7kfZBQ40E4ll1y6jQuXf8xjNSkFJUwTNMZpTuI0fHqAgmqVgayWpaTML59NEKD++KDnGl0h+2vpsY9OQ0apJOV2nt/RwQiRxjke2ba6KIM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054429; c=relaxed/simple; bh=7p8wz90UKqTccDNz+MasB/B+WTJ/OUg7rEyBUqJ/ES0=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=Cri298OhZCZhrErczXTgFXWLe3kbM7w6Sbmbz1NwGBNTlcsv9wMzqZIrV15MqSEvXGymjtM2wWLi9i4YvlgXI9zZIvGUkgL2sfzSPDsnozZHeBu5s3wKY0A3E1Pins+dWDKVZ5/TgRpgeKOyVgyi8/A2Md4iZn5r09YKLrQmpX0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com; spf=pass smtp.mailfrom=hpe.com; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b=FmMjGB8Q; arc=fail smtp.client-ip=148.163.143.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hpe.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b="FmMjGB8Q" Received: from pps.filterd (m0134424.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62L0YRUS2107377; Sat, 21 Mar 2026 00:53:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps0720; bh=Jw HwNeoc0UbUU+aoo03JiyikU/f/JrM7vBKLdExfWPg=; b=FmMjGB8Q+aqmBfIUzW 0CdRFZdXZVUvt60ICZ3wOPiPaWaXOdcluZaLgw5+HWg+IqvScLRpW2z+4EF9IYGI HnRYTa7Izn9niYlIBqvtXc1lM6wl6+sdrZszrjuR11IBpcLRXmLvQ941WY5w4a6Q /ddEfEOWp0Om4b8h6o4ZBqKz/mO9nCFopDeJ+uX9PGP2ARDE/9rdQ5svY5wrv14C pRWV3gMdA9Pf59/kCqnMdm84/BynVfi5kDNKiLs4Wj247yE7/zazlAyPW3ocOOXs 1+/8/FFwUNRI5gNXOBTzwQvL/WBDGIp6hhb2ZLM29hv131E0uwo7OYxYvN9tw0xM X1tw== Received: from p1lg14878.it.hpe.com (p1lg14878.it.hpe.com [16.230.97.204]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 4d1gw6r2xn-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Sat, 21 Mar 2026 00:53:33 +0000 (GMT) Received: from p1wg14924.americas.hpqcorp.net (unknown [10.119.18.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14878.it.hpe.com (Postfix) with ESMTPS id 358DE295C6; Sat, 21 Mar 2026 00:53:33 +0000 (UTC) Received: from p1wg14924.americas.hpqcorp.net (10.119.18.113) by p1wg14924.americas.hpqcorp.net (10.119.18.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:52:58 -1200 Received: from p1wg14921.americas.hpqcorp.net (16.230.19.124) by p1wg14924.americas.hpqcorp.net (10.119.18.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend Transport; Fri, 20 Mar 2026 12:52:58 -1200 Received: from CH4PR07CU001.outbound.protection.outlook.com (192.58.206.35) by edge.it.hpe.com (16.230.19.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:52:58 -1200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sr94ex/tZvnu0fNUmfnOA9DnTFCYvJ/nhXetctNiK8TcSrDD5RSDkpAI74eOCMuWQ1yyy/RXydOqPmx8TavWgGTC6ZDkhYo0pC6PC65q5iuHtyuNV9vyeuwI5Iqyn8K1r4LxRFWUWcZz+kxKDRsfsn46Lp+ES7OIn5I4aI+MLF51F4DhKasH3HVKCIS9WJJ2V0XlnANZjbpMwc1T4ekHe9kxPILaSAmGql8JkvMhKbTlGN8JxGpMkRJ/qc2p6QhPN9MJB5KPjhBb6e7S91t5N1vWL8dW4fVnmu8DuVIhzq4Qt6wV8Ldip8TDRopNysrFlzPa4oPHtlT2jGdft8JcTw== 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=JwHwNeoc0UbUU+aoo03JiyikU/f/JrM7vBKLdExfWPg=; b=mtXXZ8Lcs7rmNZCcPIsKG/rSjsd9bRgaq8W5O4LNLE+/Ea2qiXCFhg6q0clHbZV0p6SdjcFRjYTvyHTBaQMcbovx77ma5qQBdPuwnqCwEeDQUcyz68opsIOxNls5HZ2V9YBHgH16C1JDNzsMXZipdOF072SJOGjmh1angPtLViOk9Go6v4zMSTZg8+6pp70JawqfwITtLZcfsSQNUakYsUt0RZnxpt2hha1sz/8QXvh393Uy0K3Wf2CAPqjYwqgYGHwS/8lSQVY83vDO98I9x5TshtTiDaKxO7iu42FolB0fIUHt357h9jAvtInfeZI81UVI33dh1mfBSuoBIIhjWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1cc::7) by LV8PR84MB3772.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:408:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Sat, 21 Mar 2026 00:52:57 +0000 Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f]) by CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f%4]) with mapi id 15.20.9723.022; Sat, 21 Mar 2026 00:52:56 +0000 From: "Pradhan, Sanman" To: "linux-hwmon@vger.kernel.org" CC: "linux@roeck-us.net" , "linux-kernel@vger.kernel.org" , Sanman Pradhan Subject: [PATCH v5 1/4] hwmon: (pmbus) add missing mutex_lock in regulator ops Thread-Topic: [PATCH v5 1/4] hwmon: (pmbus) add missing mutex_lock in regulator ops Thread-Index: AQHcuM0Onve+LRo/4kiM8frHCLYbwQ== Date: Sat, 21 Mar 2026 00:52:56 +0000 Message-ID: <20260321005206.6350-2-sanman.pradhan@hpe.com> References: <20260321005206.6350-1-sanman.pradhan@hpe.com> In-Reply-To: <20260321005206.6350-1-sanman.pradhan@hpe.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR84MB3523:EE_|LV8PR84MB3772:EE_ x-ms-office365-filtering-correlation-id: f129eb17-3635-44b5-c7de-08de86e43137 x-ld-processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003; x-microsoft-antispam-message-info: BTl4OBHA6UN56jviA/dc/5UoF1sBJmZ1uwy6wVhZCtDNHt21xZyg/qqWblAjjPNRVkaGVmvE4ZbNcgDBTcXaidujLt0mc6ZMK09TEiUYGqkzzJBDlnvdrE/7I3YopcsJBPNK8WeiHLwLKClzhWn2Ll8OfNGLRO0yF1urLoiqUZqcZ1zQ/VswehDfbP8/YD18jiy1m5eKM3Q9JLLbu6Bp4hTkOukNu/vc7sAey0vG+U5bKZgtsJU+CfVBG69D7rZeSR6uGeNaaZEe7/y6B6SC164o3h8PZTbahD+YvAaEcHFEcLj2imwM1PlbvMylAo1thHPNQ4ZsQhC+URFvqi1+K+6zMC5sNDLHh6Q0CcK8boq+/dlhrzeea6PNpitIg6O12+EsICgjh+f5PFud6uXivPcVWxD1xq1gyhXfhcguKjmhN2KU764yLmnJCnz11Imv3HMTVHaVCAWdudIs9NU1N/TsUV9hRkbrVE9UYyPc5WYdn3vYCc3VfTykrasLPEZOJQAcrhTmuv8QacFnNdxePJr/pYpmMmYEXM+de4iqtUeUrT9JY4a0opRiudHkV3DeTXXV5ZnnT8VzMxp8Pgs02q1gS2MXAsY4ndqvnFWYc2BC1xqOEEe9Pev0rp2Nb+cl129tDSvS+PK2vJ8KjlZAfAuGdHnUKHWXYv3dvcYWpUtzbx0iOf4BzhPWOczSMM2JHlBWKpsZWwbmUAx5E9DqdBUjekBH0rPNmygNQvQ1Ifa3ZJTDhFnlqFJNco01hQAAQ5I4zXfSqAgPa+M4h7dX5xmzShRIrka5cvj8brKmZ8A= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?DPb/D8JlQpyOI78Ri8poDeLkj0vffI307KmahsWua0IkgXYY66gN508w+3?= =?iso-8859-1?Q?73CtQIefE5Wu1YBZvWf2R0WWSaL7QK9Ar2jkvPXZrnJ3709NeUbNBxfVHm?= =?iso-8859-1?Q?bS2zDokeUfs3dKuxhsPzAN8uw6oFHaEuHKX6CnSp5mAmimAkWa0kjB/G7P?= =?iso-8859-1?Q?2P2BX44s4PZ+EEmd8D9A/vLYhn1VXpCxXomhL1aj850p/3VmCdkoFCP2u3?= =?iso-8859-1?Q?1ZoBTce1+AcSAnlccI9nRKId8sC0K99XjE4CEVQ828K6hqCTTalyBG/zgz?= =?iso-8859-1?Q?X1pruRoMIqEo/NY/RA5rBaWMrdLRGz5LZggIHN7sIwfxiNUSpx4JMf5xAt?= =?iso-8859-1?Q?TV28Hhq9fXLDfZzjmrHMNOXmH+xCQBmOdmqnKc+FcPGDkrw85tRa2UqX8N?= =?iso-8859-1?Q?DRP3TpDT0kzsdzZtvtltqbOqMEpau+xwu+o1faHovCzRSq/zbaTwGPiRpW?= =?iso-8859-1?Q?H5JkXCaaE1QNcuHratIP45E2bREDzA1gQMISnhj22Jdkefov7cGZnN29kv?= =?iso-8859-1?Q?nLeTBZSGA1v/c39ruXmKEo1WZTP9AGI/3AiJgoRFeS0bUHY+FdU78SgLJb?= =?iso-8859-1?Q?hSGWNaEGkTDw73uzEMKhioqezC0WmlA9sOXqihahM1ZsuKIp5s+gmi6aMK?= =?iso-8859-1?Q?cMZoV50nZV3wAL9DW67rI7j6MtVluvX/XFlBNM852UNu4U6C5y4EI1gzVh?= =?iso-8859-1?Q?v2hiicQfF0jUB4lDVYQGypNIrTIvlnwo45dw1vcYwhKkLT9rsvyXoa3gDD?= =?iso-8859-1?Q?EXY7cAMRVys/ia46HUJMbcP0WuxodV97661xQLR1nV1A5yRIzeRgf5HbYi?= =?iso-8859-1?Q?6dv5NMia9W1P/eoJ1p0Kxnwx9mqsUTFsS2vJTRvM8UNwsXiCmk54X90PvR?= =?iso-8859-1?Q?yEZVuS0fnIZ6LMQ2IK4XPIBWoK/P68rRHMij1ZRviyXfIILhI2t9gXt7Du?= =?iso-8859-1?Q?8YC/kMjTnXyzFEcOoKxXQAEHGDnIPnfqf2dgSB9ziDDjr384244Av/9WdA?= =?iso-8859-1?Q?3t5IytQub06m6xk49Qrc3q1CxE4jjF6wjkMckvstEygh4rVQ7GY5EUD6u2?= =?iso-8859-1?Q?Ip8zVsbTCII/9nqNbct3HUeDVuH5MtsDX6wsVWKH35fXPYCtNq7vZI5q9N?= =?iso-8859-1?Q?y7tLnSGbeIkqBA1zhVfgLhAVgAbd+yugM26WjBHkO3ytpsZ+V8dXIv53fS?= =?iso-8859-1?Q?tlEWD0tOwznUKctuooxLm0r1o3YFFkEXsC4NhlcRgIpB9M2R/LTLNuAAnr?= =?iso-8859-1?Q?4OsJkUr0icE2RwilNd+WDTOEh0N83qOau7iRGGA6tCeEIjONFPtws8JwU+?= =?iso-8859-1?Q?7fNFqJuQrVsEzvCX7OnXG/xV9TwwVYAVuV8uRwj4cpxqarjGtuYm6wrxYV?= =?iso-8859-1?Q?6wWkxGFj9rH6gQJemg0Sz0GT1pEjP/zVR4v0FDaVQecRHjyi8RpC3LBAkb?= =?iso-8859-1?Q?d4Jga67p31l7VC+V+5ZcxJhCLtQH+PnTcUeiVVSWNQNBtiNB9yNeI3Enfg?= =?iso-8859-1?Q?7Ny9/TxKGPq5foY0APE9Kg2yfTwI1bNCBH/oODw7p6wU//PPbqqHRJ9oB+?= =?iso-8859-1?Q?QPl33wmkk16JdFO1zeKV44BoMGecn7w/D0Q11L7bUsJ9T2JgN8knpQ7Bc0?= =?iso-8859-1?Q?8IhLR3xKRXwvGZQ6yRz/xXJUCpiIqSNu63MDHYEXJ0i24kIEj6uxhC5FbO?= =?iso-8859-1?Q?3GTKhh0M/w1v9+MynKi97JA89rfWdl02WWU43SjIAcOww5rRG+OWNj3TeH?= =?iso-8859-1?Q?PwVDOOH6YMa5/Hhs5PP3n/Qd1VC7JpPSrhqyVuNDKZ1WxoVYl8HheSTdCc?= =?iso-8859-1?Q?+UhQ1qK2kA=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: SdtlOQTtvoDp/tYuC2TALXThEOz63NT3ZBW5PCgZ8lI7vCVkYtK+K5gDq2ILYGH8btrVto/nMsL5wKANwLEKQ3E2UmwU14nTD5akwOyAA63DFnZ4fJqlMswe4dlI3CL+crSkyBnCAbhvRLxkV+x80Z3og8lbm9RRf+Vdt8q004kefcxIVv6CDundPeo2E75pKYhezZjeYgxSZs2OKNuBQ+fye5iETX9UwPUC6lvVX04ZJmWQ7yK2fZWplvpq/UGTBRm05NqSnaUyVJbfHl72qQIfIEPCufbNV6ae0oIvOGZfgsrGw6HdRtJZR+I7A0cTNVDFIcatF2FfpPR7Cc6q7Q== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: f129eb17-3635-44b5-c7de-08de86e43137 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2026 00:52:56.8557 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ph0QS5mVsB9Mynam+tKy6eRbOIOI2MUrkqK+9XXbCIjB+aK/5YOzxev9HUDhs/zkMaradAmbQ9CyYUG/eVJ6eg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR84MB3772 X-OriginatorOrg: hpe.com X-Proofpoint-GUID: 8aTy0qaNpG0h-WneMz4kQo5S3T-sDZuY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIxMDAwNSBTYWx0ZWRfX2KvPrYsOonZ4 fe3X1pAnCOy+JZ3XcuoL+Tc8JJF8c14gB7jWrMN4lPOZS1DoVWcXwP0CxHiaOOaNeZ5SlZ7pJXl YMz4UiVGzOUapm0fjfdyFfIZrHE+myZBYwq0Flxf9cOJV0csEuRA16iTm7p/FEdZu8k4GHIXGCX PNDFz8qdVzFmZH5vLFdeL+OyUjhUAzgBjVWyACEXr+cWC/lMr3jAGGbSqG+DNJrEkxXkkkHxMsA 8lznhjTaSEjGA1fYZkHQzPu6IKNJMA78Nq9l6of57NNNffCv5PXbM8KJUEQLw0k7sQwV8ZCep0U d5dId8Nq5SN3fBEQBf9Yi/ybksdPOsvQO3zUpjRCFYwDXvgHQJfgOruHZTDBPcYZ+z5AS5EMbS5 L+wIpnsfhp/+iJlbmRrPG3uXNdXUdSIYWj8XYYCpDcRRz111ZsM7x8VH1XQhJYDBBBAvGuHUQvQ Qi7+yxfPg/AvSOb91Jg== X-Authority-Analysis: v=2.4 cv=cpmWUl4i c=1 sm=1 tr=0 ts=69bdec0d cx=c_pps a=UObrlqRbTUrrdMEdGJ+KZA==:117 a=UObrlqRbTUrrdMEdGJ+KZA==:17 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gQcMVamqm3wCPoSYhaRC:22 a=3haJ9R1Aw3gUfsUHDaCR:22 a=OUXY8nFuAAAA:8 a=4pkxegZISdZCCt_r8m8A:9 a=wPNLvfGTeEIA:10 a=cAcMbU7R10T-QSRYIcO_:22 X-Proofpoint-ORIG-GUID: 8aTy0qaNpG0h-WneMz4kQo5S3T-sDZuY X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_04,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 spamscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 clxscore=1015 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603210005 Content-Type: text/plain; charset="utf-8" From: Sanman Pradhan The regulator voltage operations pmbus_regulator_get_voltage(), pmbus_regulator_set_voltage(), and pmbus_regulator_list_voltage() call PMBus access helpers without holding update_lock. These helpers perform multi-step PMBus transactions involving shared core state such as page selection and transaction timing. Without serialization, a concurrent PMBus access can interleave with those operations and cause reads from or writes to the wrong rail. For set_voltage(), this is particularly dangerous because the VOUT_COMMAND write could be directed to the wrong regulator output. Add mutex_lock/unlock around the affected regulator voltage paths, following the pattern already used by other PMBus regulator operations such as _pmbus_regulator_on_off() and pmbus_regulator_get_status(). Signed-off-by: Sanman Pradhan --- v5: - New patch in the series. Adds the missing update_lock mutex to the three regulator voltage ops that were missing serialization. --- drivers/hwmon/pmbus/pmbus_core.c | 46 ++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_c= ore.c index 4d7634ee61484..3dad455448d05 100644 --- a/drivers/hwmon/pmbus/pmbus_core.c +++ b/drivers/hwmon/pmbus/pmbus_core.c @@ -3181,7 +3181,9 @@ static int pmbus_regulator_get_voltage(struct regulat= or_dev *rdev) .convert =3D true, }; =20 + mutex_lock(&data->update_lock); s.data =3D _pmbus_read_word_data(client, s.page, 0xff, PMBUS_READ_VOUT); + mutex_unlock(&data->update_lock); if (s.data < 0) return s.data; =20 @@ -3202,16 +3204,23 @@ static int pmbus_regulator_set_voltage(struct regul= ator_dev *rdev, int min_uv, }; int val =3D DIV_ROUND_CLOSEST(min_uv, 1000); /* convert to mV */ int low, high; + int ret; =20 *selector =3D 0; =20 + mutex_lock(&data->update_lock); + low =3D pmbus_regulator_get_low_margin(client, s.page); - if (low < 0) - return low; + if (low < 0) { + ret =3D low; + goto unlock; + } =20 high =3D pmbus_regulator_get_high_margin(client, s.page); - if (high < 0) - return high; + if (high < 0) { + ret =3D high; + goto unlock; + } =20 /* Make sure we are within margins */ if (low > val) @@ -3221,7 +3230,11 @@ static int pmbus_regulator_set_voltage(struct regula= tor_dev *rdev, int min_uv, =20 val =3D pmbus_data2reg(data, &s, val); =20 - return _pmbus_write_word_data(client, s.page, PMBUS_VOUT_COMMAND, (u16)va= l); + ret =3D _pmbus_write_word_data(client, s.page, PMBUS_VOUT_COMMAND, (u16)v= al); + +unlock: + mutex_unlock(&data->update_lock); + return ret; } =20 static int pmbus_regulator_list_voltage(struct regulator_dev *rdev, @@ -3231,6 +3244,7 @@ static int pmbus_regulator_list_voltage(struct regula= tor_dev *rdev, struct i2c_client *client =3D to_i2c_client(dev->parent); struct pmbus_data *data =3D i2c_get_clientdata(client); int val, low, high; + int ret; =20 if (data->flags & PMBUS_VOUT_PROTECTED) return 0; @@ -3243,18 +3257,28 @@ static int pmbus_regulator_list_voltage(struct regu= lator_dev *rdev, val =3D DIV_ROUND_CLOSEST(rdev->desc->min_uV + (rdev->desc->uV_step * selector), 1000); /* convert to mV */ =20 + mutex_lock(&data->update_lock); + low =3D pmbus_regulator_get_low_margin(client, rdev_get_id(rdev)); - if (low < 0) - return low; + if (low < 0) { + ret =3D low; + goto unlock; + } =20 high =3D pmbus_regulator_get_high_margin(client, rdev_get_id(rdev)); - if (high < 0) - return high; + if (high < 0) { + ret =3D high; + goto unlock; + } =20 if (val >=3D low && val <=3D high) - return val * 1000; /* unit is uV */ + ret =3D val * 1000; /* unit is uV */ + else + ret =3D 0; =20 - return 0; +unlock: + mutex_unlock(&data->update_lock); + return ret; } =20 const struct regulator_ops pmbus_regulator_ops =3D { --=20 2.34.1 From nobody Sat Apr 4 01:49:05 2026 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) (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 E341C225417; Sat, 21 Mar 2026 00:53:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.143.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054430; cv=fail; b=oNtFp6m9pSQBWU4DLKo/qCS0PybskXPLFwCXj6ZP+uwMZ6KmrQzl/CMQDchCqrCJkmhHyrvPEGl0O96Mqx9es53cbirY/D7l2z4cBe3VHz/VZBXtD6NneCP0NIpuslv5YEe8hPZhW+uDwfN3/0tcpYugSB8wZHs/g/0YxpJovNg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054430; c=relaxed/simple; bh=PZ4nO902J2sjezuWx8aUxqhfx/VCESg/++AXqopvm5s=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=e/JLZd3LG7AZktL1/z4r00jrX/nj5UBFvUAQZhIz2svZLvpYwfo/9mWWMjrnuJP55ooJAFtBKQ92WOxCwVj9W+O8iEcMuuwwIDtqfBoX0QhAH2HDeGKR36fZvNGumNywKf7cw4qrS76KkZa8+EYX6ADZm/TYAcWaqTXGOaSqIM0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com; spf=pass smtp.mailfrom=hpe.com; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b=P5mQVSrH; arc=fail smtp.client-ip=148.163.143.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hpe.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b="P5mQVSrH" Received: from pps.filterd (m0134423.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62L0TcMK1717082; Sat, 21 Mar 2026 00:53:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps0720; bh=Q9 uRmFIZfSB8Vefpl3g65MPHaKyxLfppCQN7Yxewznw=; b=P5mQVSrHy935p47Lrs Frbi2NRwwJUx1W5zaVWQaXveeaSzFNPFbva0Z2jWDr2CYob0e+CMZV9YZ6MLxEqa Ln7AcYdGX3unSkZqb1TCio5ZvFVs7AVaqvQjNFx28GIW8ROgMzP0T5/EAnStcQx8 UPmEkPSeQ5+yzyQf45wuxN9hhO4XA7Cz2MS30zSWwHqivB6/TTbtxyD7JYy0jeYc 8BMgMz05ni0mclSbdRIdzqnRlz96wpJdWiM/jya2O7Z9BJr/Ak7ND2qNYtY5wWMK N9rPqoNc7QpKAu+83hbZwPxUXr3XT753CdhX+RYU3KZljquK/fLUOgkfxbRiTfV7 Muug== Received: from p1lg14880.it.hpe.com (p1lg14880.it.hpe.com [16.230.97.201]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 4d1gu704gv-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Sat, 21 Mar 2026 00:53:31 +0000 (GMT) Received: from p1wg14923.americas.hpqcorp.net (unknown [10.119.18.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14880.it.hpe.com (Postfix) with ESMTPS id 5BA98801605; Sat, 21 Mar 2026 00:53:31 +0000 (UTC) Received: from p1wg14923.americas.hpqcorp.net (10.119.18.111) by p1wg14923.americas.hpqcorp.net (10.119.18.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:16 -1200 Received: from p1wg14921.americas.hpqcorp.net (16.230.19.124) by p1wg14923.americas.hpqcorp.net (10.119.18.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend Transport; Fri, 20 Mar 2026 12:53:16 -1200 Received: from CH4PR07CU001.outbound.protection.outlook.com (192.58.206.38) by edge.it.hpe.com (16.230.19.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:16 -1200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sdyQDANuG+AVVMiIFa5ZQuq764n5UcZVgEZpwMkrFQqUcudwP14cM5/PJpxaOe6r8HsTMlowuWb5ZqBu8yy4gU7sELOExJDNSrPFostWTNmP3wVaqdZcpd51xZYhFDLyyWqvm/wr4C7U+TYfxlPlL7iPX3irvVZtxyGBzS4+9eTGuKQNqlFlXEYG9+L9JRBtW+TMhwRhnFROquJU179vNN9njKjwgOvG6N18TXkE/M/q2okCep+p/3IsXHsncyoTBHiC6E3IuHLvpmiW0YgKqLJLRquF412ydp1oZAAR5lSCWIWJk76ImJ8JjMaS1NevCHKsLWfBlOEaCMNSeoOArg== 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=Q9uRmFIZfSB8Vefpl3g65MPHaKyxLfppCQN7Yxewznw=; b=DkiNW0uFLFmGcno9T3zmPSyf+nMYYkGuWura3DO0Xcir16FZ7XCCYJo2+djaryBwjQ7LI4Rn40WOzcxbQhcNTUeLEzZjsBevC9KByBt+Cq2UWFXrLURx87X/05dRddg2hMubc6xLyHRq6To9W7dinepvvrfR8UPxq5Z57d+jm9MMUf4CsE7++W78Z28iAZczU/+6zoqWJ/ADiV2iZZ2df8C9ga84JBVn45OerbTsh2yr15GjN5is4f0OKxyl+JTJoBI4/UNnLj8hsNWa39N51XYy6bTv58iSyL7h/T3C0eYeWdpZH6gOop1L39W3ChZ9m1AE+chsbMpZ/ystHqArIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1cc::7) by LV8PR84MB3772.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:408:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Sat, 21 Mar 2026 00:53:13 +0000 Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f]) by CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f%4]) with mapi id 15.20.9723.022; Sat, 21 Mar 2026 00:53:13 +0000 From: "Pradhan, Sanman" To: "linux-hwmon@vger.kernel.org" CC: "linux@roeck-us.net" , "linux-kernel@vger.kernel.org" , Sanman Pradhan Subject: [PATCH v5 2/4] hwmon: (pmbus) export pmbus_wait and pmbus_update_ts Thread-Topic: [PATCH v5 2/4] hwmon: (pmbus) export pmbus_wait and pmbus_update_ts Thread-Index: AQHcuM0Y1OWAB3qX+UaM5ZpTD4emeg== Date: Sat, 21 Mar 2026 00:53:13 +0000 Message-ID: <20260321005206.6350-3-sanman.pradhan@hpe.com> References: <20260321005206.6350-1-sanman.pradhan@hpe.com> In-Reply-To: <20260321005206.6350-1-sanman.pradhan@hpe.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR84MB3523:EE_|LV8PR84MB3772:EE_ x-ms-office365-filtering-correlation-id: 4892acec-a4f7-46a6-30d7-08de86e43aff x-ld-processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003; x-microsoft-antispam-message-info: M7rnqR1WXnvBTVHbiGOJIyW0mS796yATTM9xixE+Lx+ye4CVXhBjaInDlX1MUpSTSc8P174rgH0ufpdL13HSiMSHUpSH2BdeFHbBUz52DreyM6K8D+VjIrTNegieu9rDwIpChZ9XeyM/hzPul9FIzK6RXoCOcNc2lM4OBi158J5aI3wLsbkKCoafYnWJwtfIt9DXmWRieZ0+KLgSO33ZguAKsT45peMcAEHbVtHv0WZCcPyEPNMGtaIi1+Xb2OgVQ2tYn8bsOpRoqrNi+TlRP3Ml9yOtKiFxfab622tQTIP696UnFDKC5e4G4h9wKh+46EjZeqyioCOzrUCyppOclc+/nio+qaCGQD6b0Uw1Z2xiGglEp8EA6A4o9P9irYguete+mPxBuDHZP/kDKqjUyOxwmPqBIfAXTptmlum7HFjtWG3n2Ldr04gp4jJfPXJXZ1aQzbLJwFWHmJ8SjkiItc8DE6dpd/092+VfZXCk15ygZCkCReYYLfOi535p6t+KS8uNz8Iq9Pkl+GmE43H0EuAjt/BISX+LURlXtt9AkJtVL91V1J1zxiiS+kVzCk2jvxxMEhFkkAtordHTFf/evss501qcILb1vRqvFbFdN8ChNoT94El0+G3HPmInPdLL2+x1ggYSi33VPy7S/dD/UFPgxwtvbZoEQa95Fmef7xfO8J13riR37kHJiN0MHCAE0KNbEP7hjWO39btBbHH3NmsbNYiMqgQhT19FV4Sed9w3es99z5Us3HOG7Dv7XgZlUo8lxjBFxx2barTM6o80jh0fppDJaAEalit8+OXC0q0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?J4/WHm9Zy86WlKoxs7BWo1cNkTOwJpv0wZnhtfUTqDriP1gy2SfeGigO2b?= =?iso-8859-1?Q?pTuB0+xVIZ55c52A1Qb7nmvX8s0tkIpMuxuOvjNi8VLJu0PCHB5hdv69lH?= =?iso-8859-1?Q?89a2h5k2a+bL+QiLTGWSe8pxY5B6etZw4110RbJ4KsShJFo+4xfiNn8ebh?= =?iso-8859-1?Q?gA89XliqNiqo1sDlb0aBVFSIKXAHiCx/pD4Jgwm5QnxNKLg5tVzYH9JCb/?= =?iso-8859-1?Q?/PMRTv1+Z9Vl6BL19LOpScWenKquPE1tMZaoYgDzmy22qQ5iFVLZkdIoVs?= =?iso-8859-1?Q?xXy+HZnHAp6ix1oXkgRyUHHQsKigzGT2FzjpxlaQJTXeqmlh9feFUJ2NEk?= =?iso-8859-1?Q?qVZ/ZFXLqQxIBLnp0yGC0wRBUfDEKUKh51XesSs6aQFfOdO5MiMlDUFX+e?= =?iso-8859-1?Q?e2gvtvCeBEV0L33SvCQ8t8whfCbyZPfw1PrpRdQP/QGrK/Gdgvb90gVWkn?= =?iso-8859-1?Q?liq7uXGrHEb7WUESaMIjXlGCT+dq3LodB4IJaif6VFnE8Q6lyX2l6joKQl?= =?iso-8859-1?Q?XB6upYsU9AU4Qu33s6UutHJ9NRnwGPoc1uWdMhJoNZX3jtAYcmgLK5zrBK?= =?iso-8859-1?Q?ntCRgXeLhddKMh8ra9Ku/IFsoRCWN0Yglva8PKwyhiBBXuX1wZmzPdFwR6?= =?iso-8859-1?Q?GcPgc4XaDe8RGaZlqN0D6clWTDpj2pWJWZo70QOQasC35a6WH/GmhMuza+?= =?iso-8859-1?Q?mP0gD1ypoac2M/Z21RqWlc1YF0rhlZ36bXGCZT4ISs4N11KbnvpN6oSbvC?= =?iso-8859-1?Q?e0fSPB19IU9DQIlNMv8JcyCEuXdhRSznOh7IK6l9sg5YBn2Pe8iqx8sDmE?= =?iso-8859-1?Q?jF2Ma4+iBFcn79JqG53ankYOAlrvUEIFtS+kVF2Zc4W/qkYUapE93AXjLF?= =?iso-8859-1?Q?bGKCHE+TSMhpenwtgZheQdiV5BfNLnvvrkXIPTqOsysFLP1en7K0IV7/+n?= =?iso-8859-1?Q?CdPH7+/TIk/vIGeDj2IkzbOalRYSU/wzPCJ8EyVKsixUliIbSo8/PTChKP?= =?iso-8859-1?Q?96VjOc64wktES2yoX/zrYPOYyoILfJpIDaexeiuTn/nyUC194OG5MftpWF?= =?iso-8859-1?Q?MzML467PxdL5qrjuev1929hKilrK5h9XDalevpzg8PZOFRFP1P80/hiLdL?= =?iso-8859-1?Q?T1UWC8yer3AXN0TEiY6DIdn7+FKAPihvPQ8JYVwt2hhof09gz2EGD8IYIP?= =?iso-8859-1?Q?kob8nZWYMCFxthqKXU29mmaN1OWhz69gk1CzGQc1XBwV7Ovm22OJEC4OOE?= =?iso-8859-1?Q?X9RobQPzIGKkhlmfv4YUHlW70KJPtfFwQlqmkCpQZ4B/3yGOr+Rul88fRS?= =?iso-8859-1?Q?ptJGgACsaxA14eMTGJUoUuhWr04/24UhAre/lENZZLuPLru2sDJFFuToG+?= =?iso-8859-1?Q?ZLu++EuwoQL/4pVB8kcLQzGXfJnb7pih7tPO/jiMWSRIMh70tmnVm1fpXw?= =?iso-8859-1?Q?HtqOFBEoBZvRnRPySJXUH8RMhmIBAyvc37/6KD6rpVtyTeMZ/dvY4jZB+0?= =?iso-8859-1?Q?Gq2plrckdONNDuveWZYlIyP+am8AAsHPjV8i84X8Wc+xKi642xgBoEs/BU?= =?iso-8859-1?Q?+mp+o8iXyo8Lin6Z+w+TZNiUY3lxlW9kPlJ+qPEUqCaFPJUFeZ5ETXUG8V?= =?iso-8859-1?Q?E9jsnydStO2c5aHHbZHyR/dKQsWmDwiHnYlrlwr6+/grZsnOlxqAgmEEZf?= =?iso-8859-1?Q?D79ahNRYsOfn+OtryV74q+Qo2atbXL+pKMhXD2DEnRr+hlLXq1WdWHI2Hd?= =?iso-8859-1?Q?y7J0lfcbgwv1QeAcSjSx9VmEW8KPndhwTZRuzjjT2z6Ya9hijmbnNpamCB?= =?iso-8859-1?Q?EotuxzbwFg=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: LBvNWaofN5g2NaTRY0mNcS0ACWL3ljBRAa09W457FK6bL0OGmBZ8kMrHRve5R5CnVl8U/5HXcReObuPeRcEVOUHBiWdzMFWu0+GK7a3BIDn4PEp2HBTFy96fB2LgNe51jzxLxGVYzFmJYxUJ9aPVtfqBeP3GjcjJmKXktP2Ktjz+J16TaUGqKyTTKPGCNkf1f5HZVXYsr56jr2vBNMIILlfss+snpMD+kacVBpTw5wdhZHiqamXxgsqlr0lW8tgcoL6+T0bJvUAZMjDHLhP6WLQC1tNdoRple3ybKQ0pLTCE+XwyJFj3fEnkapdz8KPd3WmrP/iGAKZSK9s7k8HTcA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 4892acec-a4f7-46a6-30d7-08de86e43aff X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2026 00:53:13.3397 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7UQ15e0Q3wiI1fkayZJgzkP9C4g4Q7zPD/gi8nkKVTFgKYFagBQX0N7+RNg8AgxvStcOdrWSOYfW+TZTgLlszQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR84MB3772 X-OriginatorOrg: hpe.com X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIxMDAwNSBTYWx0ZWRfX0DIFo8TO3txQ peHuFGUr7wmoFX4LTuQGRuG6aTffzPZJ86QIzAx4FssnLhKBZkPR6pNKymRdbYPWh6gn0yoCJR3 E/u2xXNAROH/x4+WGjdPFdurG6fceOzfHSvno/EMZ60tsZ1rrvVQECjmjcclheE+QDrvUvDd1Hb hB3owgCAdFMO8sfrTAw2MJ5T7MBrG5UIPuyY8SAHH82zndy/hR5lT2f0Fwm8LdPdsRV5hqDfz9h ufK2+SC3HGG//d0lgoze9F3APhAMpzVZlLC1Q/YSAmMiKlatbm6g9pSe93WxYDaRI30b3G9Cmsn JtArSoSOxN/q4754HA6zq7oydaxYGIRaTi6jXl2IV+15pcvYgLX1Fc/48Vgus5uBXIGaD6Y2mQw m0UIIOKb0UsVc1okJi2sasp1x0QVxeRnIxCPUUQj+l8c5HdThbLZwxHkHKUIX1e6dxCS0rXoPL5 dSfv+2S1t4voAGE84BA== X-Authority-Analysis: v=2.4 cv=ZLXaWH7b c=1 sm=1 tr=0 ts=69bdec0b cx=c_pps a=A+SOMQ4XYIH4HgQ50p3F5Q==:117 a=A+SOMQ4XYIH4HgQ50p3F5Q==:17 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gQcMVamqm3wCPoSYhaRC:22 a=g3u0LPWLDYfGfufhFw6-:22 a=OUXY8nFuAAAA:8 a=nH3FplcY2SvcWnwWU-MA:9 a=wPNLvfGTeEIA:10 a=cAcMbU7R10T-QSRYIcO_:22 X-Proofpoint-ORIG-GUID: 6oLUakQ_X_3cSRXllZTaRN2HAvmCwQOp X-Proofpoint-GUID: 6oLUakQ_X_3cSRXllZTaRN2HAvmCwQOp X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_04,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 malwarescore=0 suspectscore=0 phishscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603210005 Content-Type: text/plain; charset="utf-8" From: Sanman Pradhan Export pmbus_wait() and pmbus_update_ts() so that PMBus device drivers which perform raw I2C transfers outside the core helpers can keep the PMBus core delay bookkeeping in sync. Move PMBUS_OP_WRITE and PMBUS_OP_PAGE_CHANGE from pmbus_core.c to pmbus.h so device drivers can pass the correct operation type flags to pmbus_update_ts(). This is needed by the max31785 driver, which performs raw i2c_transfer() calls for its 4-byte extended fan speed reads that cannot use the standard PMBus word read path. Signed-off-by: Sanman Pradhan --- v5: - Removed spinlock usage; pmbus_wait() and pmbus_update_ts() now rely solely on update_lock serialization. v4: - No changes to logic; standardized on the Juniper email address to resolve the From/SOB mismatch. v3: - No changes to this patch in this version. v2: - New patch in the series. - Export pmbus_wait() and pmbus_update_ts() to the PMBUS namespace. - Relocate PMBUS_OP_* bitmasks to the subsystem header. --- drivers/hwmon/pmbus/pmbus.h | 6 ++++++ drivers/hwmon/pmbus/pmbus_core.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h index 3ddcb742d289e..deb556971a726 100644 --- a/drivers/hwmon/pmbus/pmbus.h +++ b/drivers/hwmon/pmbus/pmbus.h @@ -424,6 +424,10 @@ enum vrm_version { vr11 =3D 0, vr12, vr13, imvp9, amd6= 25mv, nvidia195mv }; #define PMBUS_REV_12 0x22 /* PMBus revision 1.2 */ #define PMBUS_REV_13 0x33 /* PMBus revision 1.3 */ =20 +/* Operation type flags for pmbus_update_ts */ +#define PMBUS_OP_WRITE BIT(0) +#define PMBUS_OP_PAGE_CHANGE BIT(1) + struct pmbus_driver_info { int pages; /* Total number of pages */ u8 phases[PMBUS_PAGES]; /* Number of phases per page */ @@ -541,6 +545,8 @@ int pmbus_regulator_init_cb(struct regulator_dev *rdev, =20 void pmbus_clear_cache(struct i2c_client *client); void pmbus_set_update(struct i2c_client *client, u8 reg, bool update); +void pmbus_wait(struct i2c_client *client); +void pmbus_update_ts(struct i2c_client *client, int op); int pmbus_set_page(struct i2c_client *client, int page, int phase); int pmbus_read_word_data(struct i2c_client *client, int page, int phase, u8 reg); diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_c= ore.c index 3dad455448d05..9db5a53fd97c8 100644 --- a/drivers/hwmon/pmbus/pmbus_core.c +++ b/drivers/hwmon/pmbus/pmbus_core.c @@ -36,8 +36,7 @@ * The type of operation used for picking the delay between * successive pmbus operations. */ -#define PMBUS_OP_WRITE BIT(0) -#define PMBUS_OP_PAGE_CHANGE BIT(1) +/* PMBUS_OP_WRITE and PMBUS_OP_PAGE_CHANGE are defined in pmbus.h */ =20 static int wp =3D -1; module_param(wp, int, 0444); @@ -173,7 +172,7 @@ void pmbus_set_update(struct i2c_client *client, u8 reg= , bool update) EXPORT_SYMBOL_NS_GPL(pmbus_set_update, "PMBUS"); =20 /* Some chips need a delay between accesses. */ -static void pmbus_wait(struct i2c_client *client) +void pmbus_wait(struct i2c_client *client) { struct pmbus_data *data =3D i2c_get_clientdata(client); s64 delay =3D ktime_us_delta(data->next_access_backoff, ktime_get()); @@ -181,9 +180,10 @@ static void pmbus_wait(struct i2c_client *client) if (delay > 0) fsleep(delay); } +EXPORT_SYMBOL_NS_GPL(pmbus_wait, "PMBUS"); =20 /* Sets the last operation timestamp for pmbus_wait */ -static void pmbus_update_ts(struct i2c_client *client, int op) +void pmbus_update_ts(struct i2c_client *client, int op) { struct pmbus_data *data =3D i2c_get_clientdata(client); const struct pmbus_driver_info *info =3D data->info; @@ -197,6 +197,7 @@ static void pmbus_update_ts(struct i2c_client *client, = int op) if (delay > 0) data->next_access_backoff =3D ktime_add_us(ktime_get(), delay); } +EXPORT_SYMBOL_NS_GPL(pmbus_update_ts, "PMBUS"); =20 int pmbus_set_page(struct i2c_client *client, int page, int phase) { --=20 2.34.1 From nobody Sat Apr 4 01:49:05 2026 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) (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 810092EBBAF; Sat, 21 Mar 2026 00:54:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.147.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054463; cv=fail; b=Y9pGQS30cK5vd/h7lCX8ewRHItbkZOR7//VKLudmOwjETJnvUT2DIXOWqQo0MwbA6cQuhms8vcIfwzC8lUCjeW8li50VyrDs6liX2O0LPwZ2tPAkw8j56Y7fJfAwbHce5FWWlwMeWQoR4aBTtHOedmnM1H/uqVqZlj17QYp0wqU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054463; c=relaxed/simple; bh=VZXnJ6O3G7LjusjJJKfTsj3ORJKBNBj5YLewXlsdpro=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=QynTRuQDbPFEn+ZKVyhssw0hRyop4Np1s3HrL+2wup7wItIEb99DKGBa3QP7Ni2lbTzLsQIntLeaL8mybeqFfYZUZ9+Lb3dE52gfqo+0k0UpsPH3MeryxAsuf2lWs0dSJPLWl2fUcCQ/UaP8Rsc7NibX4/nYMD7KySPvTBeXqQA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com; spf=pass smtp.mailfrom=hpe.com; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b=cqZZaj2u; arc=fail smtp.client-ip=148.163.147.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hpe.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b="cqZZaj2u" Received: from pps.filterd (m0150241.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KK2ZWn2577340; Sat, 21 Mar 2026 00:54:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps0720; bh=Ss IXLn4FPrH1FsPS8lFDulzsTuMy28bz7vulm2yUf9o=; b=cqZZaj2uoOYSELqjh4 vIXsxCx6FcycADqx2yzMpM8eU11hQUuDLgROketSxLvLJi6k9gRWFdOsZuh14Czj FsfFjDx+aZyS0qDn5OlpJGq6LcPs+amiPg/rsHokw2mkkYDRH/VIfTmOK9lcrQAV ptj6x/9y9vvc/s6MgJMLEPbNQZ61LbK2PbPkIzUI0M4l/rxUSYZQpPTfMeB/hvtb a4gugpatq8lpQUFtiNhFFcxoY5mqZR/IUR1RrkxpWvNpzCl4E9OT6ezAfri9MY04 pzGU7x2JyCIR5+uKe7zh1/iUR//mLpjspLyLedDIr16JnkUOXXDmUnea+5ZU/4l6 12wA== Received: from p1lg14878.it.hpe.com (p1lg14878.it.hpe.com [16.230.97.204]) by mx0a-002e3701.pphosted.com (PPS) with ESMTPS id 4d19f0m9ua-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Sat, 21 Mar 2026 00:54:01 +0000 (GMT) Received: from p1wg14923.americas.hpqcorp.net (unknown [10.119.18.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14878.it.hpe.com (Postfix) with ESMTPS id 90BE9295C1; Sat, 21 Mar 2026 00:54:01 +0000 (UTC) Received: from p1wg14927.americas.hpqcorp.net (10.119.18.117) by p1wg14923.americas.hpqcorp.net (10.119.18.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:30 -1200 Received: from P1WG14918.americas.hpqcorp.net (16.230.19.121) by p1wg14927.americas.hpqcorp.net (10.119.18.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend Transport; Fri, 20 Mar 2026 12:53:30 -1200 Received: from CH4PR07CU001.outbound.protection.outlook.com (192.58.206.35) by edge.it.hpe.com (16.230.19.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Sat, 21 Mar 2026 00:53:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cpA4c4eYI1BZLtpB5PP82JoWPA8BQxQ6VjoU+8RYZWfl/RE+ZFHfH8F6GHFK7rWjSAfg5xGwsjLkTAU+oau4kBMxgKLjWdFBnQP2W+yL8VZXF7g1ewk9l1fw8hGFsjcGco1xpzjsMmKaTAEjBzJtKuqzJY1RSDIeQhWurJTNZb+QEMEyVWmPxc/snd7WenhI3qv24xn347aIVSwjHPjVG9MAJCMsNV5GmRXaAN2+J3RmmgrT2MssSofxm6vTsFS1fysuoMfZPAKL8IvdxeQ7cQg/9I6xRQSeb9AHb6UBcEp22Ygf+jtbYdmenY7IVyybbWOtNcZxACvxZTPHGOo5hQ== 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=SsIXLn4FPrH1FsPS8lFDulzsTuMy28bz7vulm2yUf9o=; b=EFOi3EPIwavjPW7dXsyDB6y3LAkmiq2b0+lSRX015ORpbvClA5sL2XzofsSStSe0ge1RWDpcqah9Q7cxJu3ZUDjyH8ARV3azRUzFWYjdjVdQJPSHtS89d32jPHCuQYdoOPcKV1MtPBC8kiJ+3WXl8nhyA450RGPBB8raODKoqBUMg4D0gt8fDqapjVGkJtvbmCG8XG7zthsO8r0bPpaEjC+MUZnXYYYaVHFAELsydc8S54Qb3IsFKDNtryX3+OlT34QAHx95RnuslZ9XW+/poj9+PbTZqV9boLkufrallgyY6p/hgifjgNlVFYk/3ZlbiMAqd+lRslM+qOtTY4nMmA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1cc::7) by LV8PR84MB3772.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:408:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Sat, 21 Mar 2026 00:53:27 +0000 Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f]) by CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f%4]) with mapi id 15.20.9723.022; Sat, 21 Mar 2026 00:53:27 +0000 From: "Pradhan, Sanman" To: "linux-hwmon@vger.kernel.org" CC: "linux@roeck-us.net" , "linux-kernel@vger.kernel.org" , Sanman Pradhan Subject: [PATCH v5 3/4] hwmon: (pmbus/max31785) use access_delay for PMBus-mediated accesses Thread-Topic: [PATCH v5 3/4] hwmon: (pmbus/max31785) use access_delay for PMBus-mediated accesses Thread-Index: AQHcuM0h1sacbCINVUOUmFAikuva0A== Date: Sat, 21 Mar 2026 00:53:27 +0000 Message-ID: <20260321005206.6350-4-sanman.pradhan@hpe.com> References: <20260321005206.6350-1-sanman.pradhan@hpe.com> In-Reply-To: <20260321005206.6350-1-sanman.pradhan@hpe.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR84MB3523:EE_|LV8PR84MB3772:EE_ x-ms-office365-filtering-correlation-id: 6a8d5f81-660b-42b8-6692-08de86e44390 x-ld-processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003; x-microsoft-antispam-message-info: HaRQKC8HddF0xhrAsJaFc4U2cq0iC+ieZb+UCCN8HUEkaKBj3ZIR9hTr1npKY9QrO84yqMEKoT18mu6pNG2NJa3/ALiErn3mn3Z/jODRckZYHO9GHBbCH8RXkzfr8EVHK+su+fPLhx/ZWl6vpGStGwCzpJ6dan1TC7tEmzfx1+BrnyG0Woh0efpM1rJdXYHkLku6josSejMtN4OfgBMIr/nc4ME4NJOUUnTwBanyj2D5s57i3fD0zRy/AA/22W2S3mnG1tYES8XFzxklFuPzwWSH9Q5jZYo8J2hyJf29DzTmAAatG22rlMTY0/4cRG98pEF67Ky4xTn+XBL61O9vYCjPyuQwqT5QpC04JAaOD+jpe7KQsptv2jYP/PB1L+wPxp1s2FJ6mrTdhYWxlVFvemUnBxMfYIJg+DhX5DCZxLiMO03Mnq8E9Xj/OAYfa8WxYbCZKTNsYyu7P18KytgEx0XlYWvU2LXuEQ9eVr8zCNMHcTpckRM0DLeoaz8kRXHGjFl47q90bbie9djCRcWkSmfu4LgvUyMIhyZbUAFhOMJQ5bg6i2G4DHRjNShJAX2yNIcZjT/4HOiDG5sJJNc8Sm3Cm55pTggruyzqXHezwn7cUnKuBEc3G87uLEc1o3L1/rN2AmVA8hUa8sjlbtFXz08J/cOpdz3tgGpeLF+8QotkcXZTjzVCgslVkQZL8TKMtD2NvkR5dneiOz4T2mFsJvSGwTyODXM/NasdFb5nPjWU8aTW+g0AJ4BEebmcLubvrae9ZEkGSeQgkxZF0arFC/tvqbtDBiUJFeq6caa0V1w= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?pkFP/1opwFdkS/oXgeI+IMlyV1PkoFbylJ/e/IUfXvwdMXAkq9huRP14+f?= =?iso-8859-1?Q?TX/OAKQBBLA6fB3qmlvob17bCFOGkE1KJz+1m6f1ywyRflVIimOIjhuYA3?= =?iso-8859-1?Q?3+31aQh33Z5RpTNSC6YcEbyrHkRyEjPdzzBUG9ivHE6L7voxqcu26luWyC?= =?iso-8859-1?Q?EJOgSYwTUhgy3WrXjU33qtpvzNel/dv5MpHVeIo04YvMRnMfQvsMDbaaeE?= =?iso-8859-1?Q?GEX4bmGsn+LlWGaEpefVgEPk9sFEDkpSKzyBc9r1fvtZt529PFRX2URfGU?= =?iso-8859-1?Q?uka9sWMAJQP+Kvk0yUX6v00Z5e3TwKJoq5YXkLdyuAfJUI0hj6x5qYnBRn?= =?iso-8859-1?Q?sIZnLCHVVMk1wFx3yLJ0T6Dd49nrKt0AtF94CMMDowby6QBzq++oa3VIGv?= =?iso-8859-1?Q?/V2YYv2giGfu8AwbMpGpAvnnoAon9YSAAUfxObOcyFCAsbvaPSHWBwdemr?= =?iso-8859-1?Q?0M4v4+IUZKTDIahK0COE+GESqHQzJz2Uj2BPJePz1KorcQABV+2jYaJREX?= =?iso-8859-1?Q?2PvCpnf3/LBrx0qr25bjkNA+SWMhzg5moUigE5ozVc4UvZrepoMvXucmCA?= =?iso-8859-1?Q?rqb9vMqxtuBXbwtZC/qVAXDujmsaH8At1XTJfY4xODflDtV8J6qhLyTsZ2?= =?iso-8859-1?Q?Oa9saHQLcFsiwJRKhUM36tud6tBqkJm6nJJs4U97rK1hVvhzmgRXxhzHr0?= =?iso-8859-1?Q?gHw1bu7eoxeJAao8z816WKpH+K2HLxJAwhwaUR8VR2tEuf8Metxs9SKdp+?= =?iso-8859-1?Q?/HIHlirkJQ1f/+T7GaJKvNyE+TfvKI57zrZ8RsKhyBvSgvvug4I+mE6mXO?= =?iso-8859-1?Q?/4Kr1aLD12Ma4z+MjBI85t+loEUIz88bU0pJ06MEaGzTS/fcHGrQmd0a2L?= =?iso-8859-1?Q?0LdR98cJATxD2VR+MI7ysJH1LWIRNKFUABcDDrPCNAp2LTlKLEiMRIJ5fC?= =?iso-8859-1?Q?CIqSZiyje18uJYh+IUpKGL23yPf/aamD3fEgiznzmNs0z5pTSzxWE+kxNN?= =?iso-8859-1?Q?uix44BYe25fVs6ZbehuVeFGt5yiF4KM++yMr/FZX04CisGI7ZOVJni/QXz?= =?iso-8859-1?Q?XsPYU1buO2Xhq77kTWjpDiQCZXE+qA1J7SsFtgLjizezgpKx43IlrXVG3j?= =?iso-8859-1?Q?MKNSWlyNIDzOzsLkaTyLPqVJvrKbrhimlGf58/wq+hHiZ1g+yzLyT+oNFG?= =?iso-8859-1?Q?SImp+S3QPBXZYCZcx4dSFNXyDGu3SG4r/zICETaylVuZM84XMaNW15SBkM?= =?iso-8859-1?Q?5rO9HKEtfAfStTNHiXXvk/YF8u1tXF/xjQdJ3Igt8jFST29GttSohNi35Y?= =?iso-8859-1?Q?+SbjHD5jDIVZ9ML4GucU24vsjnMBm0g8uxaSgAGmyHUbWmZqKHGbb4R9oz?= =?iso-8859-1?Q?K/ajRQQlFBInOv5SpynkIm0ibY57kKmUOZOLOfkkvL3VpP1b7qVJqRGBsM?= =?iso-8859-1?Q?YQUWzT/sC7hG2zvVEN/JpcRpjKadic11SGcu8IbL+A6d+np2CVIvuAxKHE?= =?iso-8859-1?Q?aNfGWy24B32Zpj/FnIgEYOdXzDCxHvOtn81qjoacsHJoFDPJWtH13Mryu9?= =?iso-8859-1?Q?KKb9uc3U3HK2FSuGEn11S/70PwS6dPDUthbbnaNIHCPs4GoY9djvds8oYR?= =?iso-8859-1?Q?BxRi9iFJoUpnQbUe+U9z7Rbal8CHhA83/GVKWK6gmQ6WU2dpGJgG17QDPw?= =?iso-8859-1?Q?SNe4m0f28y0nQyqFETLkmacCNocjXmcZq9tCdOt1UobZAWD9eDSeGokS38?= =?iso-8859-1?Q?rMjlSCc///Xz59ZDfzedyXHcGDoVIAnCBbhK2+buDhgoCXIY5keIcxNvtK?= =?iso-8859-1?Q?XEgLTiJjtg=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: ldy6RM1QU4mW9yrVt3rQePNUn+XfjB+MofPacAxQv9vJ2KhgzMsHbyyXioxAfSN4GkSwI/8Xc9ExNhOH0gBmOrEWIJgvSjrZBPSFS3TbQ7NpLHAtLT0dKDrYasgQUNyLZ9UezHPTzPyhNxgLm0So369T7i4+FSx0siAGkQN7+nZbNNKadD++B5HLKLbWkwcz8rKXIP70XlqG7tMD4mNeiqcouPPPDAeqkzDYD5i9slyGVqHOsHXvvZguyZNMBRx+GS+O8V5/1I223fASy8g8frvoeQtSwLWHK+FweRollC1kKJVUeXp9aqKEpkl6b0q/xNOdmXbwol+W7T0o465bNw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 6a8d5f81-660b-42b8-6692-08de86e44390 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2026 00:53:27.6934 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ptgqhKq2rEfX2cmei/leRjLQm0AK8JFwXIydKrCIEO2QAEy7xmwbj4L5Dr59fhoLs7bC8WtQs7ODmLxkagPblg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR84MB3772 X-OriginatorOrg: hpe.com X-Authority-Analysis: v=2.4 cv=TcKbdBQh c=1 sm=1 tr=0 ts=69bdec29 cx=c_pps a=UObrlqRbTUrrdMEdGJ+KZA==:117 a=UObrlqRbTUrrdMEdGJ+KZA==:17 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gQcMVamqm3wCPoSYhaRC:22 a=_ZmgHqWwjZUDpi_pur5s:22 a=OUXY8nFuAAAA:8 a=1dJJvSGK75pZe7GnG3sA:9 a=wPNLvfGTeEIA:10 a=cAcMbU7R10T-QSRYIcO_:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIxMDAwNSBTYWx0ZWRfX4caD5o8TO4nq RniRPsVN0gesqBLZSB1tkoGK9BlrdpSlhB04sWbNP1hf+vPKLYkw3p+XybT2v9FWAP3Qr3RnTes 38ugGKB3wWoWGZg2Mpq3C/gdFXfgxw/qsJGmbWcq39t6MWumQsEkPILPFzKQfMkiS/7sEAfhpqr YGW7sRePnIR39aRiPKANkzPJ8cOao/gCMQD5EdiDPuXGqa7r3E5ODmewno348yQpWsxmXX5XgW1 t3LElKEtFT4f1HXL18ruVPW5i/KbcZhkf1AbnUGNIY6QVQlSz8/YGxgr4Gsl1MIDp/TocsrcyQq CTaEsC9T76OdWo3TBrXrN4EdfTIw5+5wFc9rpeMkxvOAz5YoqAYF+i2XmGvt/P45LUjc6QirTTT BaaFUx7YsmA06fFYN3mA9nHrOD0aZtJhS/PvQrmqJPZumYGe4h/He7YsaMu21YPCDlE1GRNWgXb rwRM1eufxL8shYMD7gA== X-Proofpoint-GUID: 8qaYoOeLX5IrQNtmlOLseeSF0Ym4X-nx X-Proofpoint-ORIG-GUID: 8qaYoOeLX5IrQNtmlOLseeSF0Ym4X-nx X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_04,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 clxscore=1015 phishscore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603210005 Content-Type: text/plain; charset="utf-8" From: Sanman Pradhan The MAX31785 driver currently uses driver-local wrappers around PMBus core accesses to enforce a 250us inter-access delay needed to work around occasional NACKs from the device. This duplicates the PMBus core delay mechanism already provided by pmbus_driver_info.access_delay and adds unnecessary complexity. Replace the PMBus wrapper approach with access_delay for normal PMBus-mediated accesses, while keeping the minimal local delay handling needed for raw pre-probe SMBus operations. For the raw i2c_transfer() long-read path, use pmbus_wait() and pmbus_update_ts() to keep the PMBus core timing state consistent with the raw transfer. Also: - allow PMBUS_FAN_CONFIG_12 physical-page accesses to fall back to the PMBus core, while remapping only virtual pages - use pmbus_update_fan() directly for fan configuration updates - use the delayed raw read helper for MFR_REVISION during probe - add a final max31785_wait() before pmbus_do_probe() to bridge the timing gap between pre-probe accesses and PMBus core registration - rename 'virtual' to 'vpage', 'driver_data' to 'data', and drop the unused to_max31785_data() macro Signed-off-by: Sanman Pradhan --- v5: - No changes to this patch in this version. v4: - Standardized on the Juniper email address to resolve the From/SOB mismatch. v3: - Added an explicit max31785_wait() before pmbus_do_probe() to ensure proper timing spacing during the handover to the PMBus core. v2: - Replaced local usleep_range() with core pmbus_wait() and pmbus_update_ts() in the raw long-read path. - Updated read_byte_data() to allow core fallback for physical pages. --- drivers/hwmon/pmbus/max31785.c | 191 +++++++++++---------------------- 1 file changed, 60 insertions(+), 131 deletions(-) diff --git a/drivers/hwmon/pmbus/max31785.c b/drivers/hwmon/pmbus/max31785.c index 50073fe0c5e88..260aa8fb50f13 100644 --- a/drivers/hwmon/pmbus/max31785.c +++ b/drivers/hwmon/pmbus/max31785.c @@ -31,8 +31,6 @@ struct max31785_data { struct pmbus_driver_info info; }; =20 -#define to_max31785_data(x) container_of(x, struct max31785_data, info) - /* * MAX31785 Driver Workaround * @@ -40,9 +38,8 @@ struct max31785_data { * These issues are not indicated by the device itself, except for occasio= nal * NACK responses during master transactions. No error bits are set in STA= TUS_BYTE. * - * To address this, we introduce a delay of 250us between consecutive acce= sses - * to the fan controller. This delay helps mitigate communication problems= by - * allowing sufficient time between accesses. + * Keep minimal local delay handling for raw pre-probe SMBus accesses. + * Normal PMBus-mediated accesses use pmbus_driver_info.access_delay inste= ad. */ static inline void max31785_wait(const struct max31785_data *data) { @@ -54,89 +51,40 @@ static inline void max31785_wait(const struct max31785_= data *data) } =20 static int max31785_i2c_write_byte_data(struct i2c_client *client, - struct max31785_data *driver_data, - int command, u8 data) + struct max31785_data *data, + int command, u8 value) { int rc; =20 - max31785_wait(driver_data); - rc =3D i2c_smbus_write_byte_data(client, command, data); - driver_data->access =3D ktime_get(); + max31785_wait(data); + rc =3D i2c_smbus_write_byte_data(client, command, value); + data->access =3D ktime_get(); return rc; } =20 static int max31785_i2c_read_word_data(struct i2c_client *client, - struct max31785_data *driver_data, + struct max31785_data *data, int command) { int rc; =20 - max31785_wait(driver_data); + max31785_wait(data); rc =3D i2c_smbus_read_word_data(client, command); - driver_data->access =3D ktime_get(); - return rc; -} - -static int _max31785_read_byte_data(struct i2c_client *client, - struct max31785_data *driver_data, - int page, int command) -{ - int rc; - - max31785_wait(driver_data); - rc =3D pmbus_read_byte_data(client, page, command); - driver_data->access =3D ktime_get(); - return rc; -} - -static int _max31785_write_byte_data(struct i2c_client *client, - struct max31785_data *driver_data, - int page, int command, u16 data) -{ - int rc; - - max31785_wait(driver_data); - rc =3D pmbus_write_byte_data(client, page, command, data); - driver_data->access =3D ktime_get(); - return rc; -} - -static int _max31785_read_word_data(struct i2c_client *client, - struct max31785_data *driver_data, - int page, int phase, int command) -{ - int rc; - - max31785_wait(driver_data); - rc =3D pmbus_read_word_data(client, page, phase, command); - driver_data->access =3D ktime_get(); - return rc; -} - -static int _max31785_write_word_data(struct i2c_client *client, - struct max31785_data *driver_data, - int page, int command, u16 data) -{ - int rc; - - max31785_wait(driver_data); - rc =3D pmbus_write_word_data(client, page, command, data); - driver_data->access =3D ktime_get(); + data->access =3D ktime_get(); return rc; } =20 static int max31785_read_byte_data(struct i2c_client *client, int page, in= t reg) { - const struct pmbus_driver_info *info =3D pmbus_get_driver_info(client); - struct max31785_data *driver_data =3D to_max31785_data(info); - switch (reg) { case PMBUS_VOUT_MODE: return -ENOTSUPP; case PMBUS_FAN_CONFIG_12: - return _max31785_read_byte_data(client, driver_data, - page - MAX31785_NR_PAGES, - reg); + if (page < MAX31785_NR_PAGES) + return -ENODATA; + return pmbus_read_byte_data(client, + page - MAX31785_NR_PAGES, + reg); } =20 return -ENODATA; @@ -178,7 +126,21 @@ static int max31785_read_long_data(struct i2c_client *= client, int page, if (rc < 0) return rc; =20 + /* + * Ensure the raw transfer is properly spaced from the + * preceding PMBus transaction. + */ + pmbus_wait(client); + rc =3D i2c_transfer(client->adapter, msg, ARRAY_SIZE(msg)); + + /* + * Update PMBus core timing state for the raw transfer, even on error. + * Pass 0 as the operation mask since this is a raw read, intentionally + * neither PMBUS_OP_WRITE nor PMBUS_OP_PAGE_CHANGE. + */ + pmbus_update_ts(client, 0); + if (rc < 0) return rc; =20 @@ -203,19 +165,16 @@ static int max31785_get_pwm(struct i2c_client *client= , int page) return rv; } =20 -static int max31785_get_pwm_mode(struct i2c_client *client, - struct max31785_data *driver_data, int page) +static int max31785_get_pwm_mode(struct i2c_client *client, int page) { int config; int command; =20 - config =3D _max31785_read_byte_data(client, driver_data, page, - PMBUS_FAN_CONFIG_12); + config =3D pmbus_read_byte_data(client, page, PMBUS_FAN_CONFIG_12); if (config < 0) return config; =20 - command =3D _max31785_read_word_data(client, driver_data, page, 0xff, - PMBUS_FAN_COMMAND_1); + command =3D pmbus_read_word_data(client, page, 0xff, PMBUS_FAN_COMMAND_1); if (command < 0) return command; =20 @@ -233,8 +192,6 @@ static int max31785_get_pwm_mode(struct i2c_client *cli= ent, static int max31785_read_word_data(struct i2c_client *client, int page, int phase, int reg) { - const struct pmbus_driver_info *info =3D pmbus_get_driver_info(client); - struct max31785_data *driver_data =3D to_max31785_data(info); u32 val; int rv; =20 @@ -263,7 +220,7 @@ static int max31785_read_word_data(struct i2c_client *c= lient, int page, rv =3D max31785_get_pwm(client, page); break; case PMBUS_VIRT_PWM_ENABLE_1: - rv =3D max31785_get_pwm_mode(client, driver_data, page); + rv =3D max31785_get_pwm_mode(client, page); break; default: rv =3D -ENODATA; @@ -294,35 +251,7 @@ static inline u32 max31785_scale_pwm(u32 sensor_val) return (sensor_val * 100) / 255; } =20 -static int max31785_update_fan(struct i2c_client *client, - struct max31785_data *driver_data, int page, - u8 config, u8 mask, u16 command) -{ - int from, rv; - u8 to; - - from =3D _max31785_read_byte_data(client, driver_data, page, - PMBUS_FAN_CONFIG_12); - if (from < 0) - return from; - - to =3D (from & ~mask) | (config & mask); - - if (to !=3D from) { - rv =3D _max31785_write_byte_data(client, driver_data, page, - PMBUS_FAN_CONFIG_12, to); - if (rv < 0) - return rv; - } - - rv =3D _max31785_write_word_data(client, driver_data, page, - PMBUS_FAN_COMMAND_1, command); - - return rv; -} - -static int max31785_pwm_enable(struct i2c_client *client, - struct max31785_data *driver_data, int page, +static int max31785_pwm_enable(struct i2c_client *client, int page, u16 word) { int config =3D 0; @@ -351,23 +280,20 @@ static int max31785_pwm_enable(struct i2c_client *cli= ent, return -EINVAL; } =20 - return max31785_update_fan(client, driver_data, page, config, - PB_FAN_1_RPM, rate); + return pmbus_update_fan(client, page, 0, config, + PB_FAN_1_RPM, rate); } =20 static int max31785_write_word_data(struct i2c_client *client, int page, int reg, u16 word) { - const struct pmbus_driver_info *info =3D pmbus_get_driver_info(client); - struct max31785_data *driver_data =3D to_max31785_data(info); - switch (reg) { case PMBUS_VIRT_PWM_1: - return max31785_update_fan(client, driver_data, page, 0, - PB_FAN_1_RPM, - max31785_scale_pwm(word)); + return pmbus_update_fan(client, page, 0, 0, + PB_FAN_1_RPM, + max31785_scale_pwm(word)); case PMBUS_VIRT_PWM_ENABLE_1: - return max31785_pwm_enable(client, driver_data, page, word); + return max31785_pwm_enable(client, page, word); default: break; } @@ -391,6 +317,7 @@ static const struct pmbus_driver_info max31785_info =3D= { .read_byte_data =3D max31785_read_byte_data, .read_word_data =3D max31785_read_word_data, .write_byte =3D max31785_write_byte, + .access_delay =3D MAX31785_WAIT_DELAY_US, =20 /* RPM */ .format[PSC_FAN] =3D direct, @@ -438,29 +365,29 @@ static const struct pmbus_driver_info max31785_info = =3D { }; =20 static int max31785_configure_dual_tach(struct i2c_client *client, - struct pmbus_driver_info *info) + struct max31785_data *data) { + struct pmbus_driver_info *info =3D &data->info; int ret; int i; - struct max31785_data *driver_data =3D to_max31785_data(info); =20 for (i =3D 0; i < MAX31785_NR_FAN_PAGES; i++) { - ret =3D max31785_i2c_write_byte_data(client, driver_data, + ret =3D max31785_i2c_write_byte_data(client, data, PMBUS_PAGE, i); if (ret < 0) return ret; =20 - ret =3D max31785_i2c_read_word_data(client, driver_data, + ret =3D max31785_i2c_read_word_data(client, data, MFR_FAN_CONFIG); if (ret < 0) return ret; =20 if (ret & MFR_FAN_CONFIG_DUAL_TACH) { - int virtual =3D MAX31785_NR_PAGES + i; + int vpage =3D MAX31785_NR_PAGES + i; =20 - info->pages =3D virtual + 1; - info->func[virtual] |=3D PMBUS_HAVE_FAN12; - info->func[virtual] |=3D PMBUS_PAGE_VIRTUAL; + info->pages =3D vpage + 1; + info->func[vpage] |=3D PMBUS_HAVE_FAN12; + info->func[vpage] |=3D PMBUS_PAGE_VIRTUAL; } } =20 @@ -471,7 +398,7 @@ static int max31785_probe(struct i2c_client *client) { struct device *dev =3D &client->dev; struct pmbus_driver_info *info; - struct max31785_data *driver_data; + struct max31785_data *data; bool dual_tach =3D false; int ret; =20 @@ -480,20 +407,20 @@ static int max31785_probe(struct i2c_client *client) I2C_FUNC_SMBUS_WORD_DATA)) return -ENODEV; =20 - driver_data =3D devm_kzalloc(dev, sizeof(struct max31785_data), GFP_KERNE= L); - if (!driver_data) + data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) return -ENOMEM; =20 - info =3D &driver_data->info; - driver_data->access =3D ktime_get(); + data->access =3D ktime_get(); + info =3D &data->info; *info =3D max31785_info; =20 - ret =3D max31785_i2c_write_byte_data(client, driver_data, - PMBUS_PAGE, 255); + ret =3D max31785_i2c_write_byte_data(client, data, + PMBUS_PAGE, 0xff); if (ret < 0) return ret; =20 - ret =3D i2c_smbus_read_word_data(client, MFR_REVISION); + ret =3D max31785_i2c_read_word_data(client, data, MFR_REVISION); if (ret < 0) return ret; =20 @@ -509,11 +436,13 @@ static int max31785_probe(struct i2c_client *client) } =20 if (dual_tach) { - ret =3D max31785_configure_dual_tach(client, info); + ret =3D max31785_configure_dual_tach(client, data); if (ret < 0) return ret; } =20 + max31785_wait(data); + return pmbus_do_probe(client, info); } =20 --=20 2.34.1 From nobody Sat Apr 4 01:49:05 2026 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) (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 657052E92BA; Sat, 21 Mar 2026 00:54:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.143.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054458; cv=fail; b=On9MepkWgryU8+WNsWT/F04emVPZhstIiuexyQxswG/rTAUugZISOlZq47bx/xHPTdlZcM+w05kmR/72smUswecRqcNXGFN37FdLs9KqgxajVV/CCiXDtK9LC0Y1M6GooHxMHlvYOXZkgk2uIFrqTcull2EgxpEHVa9iYACbpk4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774054458; c=relaxed/simple; bh=Iv/niL89rOYmMNWDQn9uSRlgSLWLpcB1eI6P2l1l0Z4=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=gqfsEeBwvyjQutq5DmhJBA+gY/JgyDgUEu4TLDeJB4jQu9Ucrda6NUWjxfeUxHULiP3/UtywqOpAqc5ZXNKmgh7lMnheZVHzHJKsVIJ8yZZ3wyQRY8kUVsXNa0qa3dLR4DPCDV1aHagEbunV4TFPghnsSxwc3ePLtBcGhh8WRf8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com; spf=pass smtp.mailfrom=hpe.com; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b=OMDmHwyy; arc=fail smtp.client-ip=148.163.143.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=hpe.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hpe.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hpe.com header.i=@hpe.com header.b="OMDmHwyy" Received: from pps.filterd (m0134425.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62L0p0sv1801161; Sat, 21 Mar 2026 00:54:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps0720; bh=FY WI9f8+DwHYOii+EoCnQC48vC5G7SKRIYvfHZa6M0M=; b=OMDmHwyySWerke++xH 6uhP4SDWasKyAOyPtaBJwTz4EfLgSkf43cEKzuBSls/qo3xACpMRF0eXns5ipV2h ajaENnNNdrjG+WdAd2H5ptUko11nVMGCVgcau7yW1JfqwejxfyLxGdsupwcn3GAj 6WGRwF35AhnXO342SxIWKRDNLst9+fZ9zCD7mptzEtVwaUE6uZXH+vo3gFzIgOq0 O3XVH+pjGFZc3MK1Ni5SiE8PTbwO1r7Ox7e/HmQZ7FAHeyoPi8p3a8CvUx8lCHUt fXb8cf0wA2WZHUDcitLtr7Sla2zIQdAhHuZsh6Mb3BAR/g+z3sJkf23uLPcC8sFJ chng== Received: from p1lg14878.it.hpe.com (p1lg14878.it.hpe.com [16.230.97.204]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 4d1h5br0fk-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Sat, 21 Mar 2026 00:54:02 +0000 (GMT) Received: from p1wg14923.americas.hpqcorp.net (unknown [10.119.18.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14878.it.hpe.com (Postfix) with ESMTPS id 9D852295D1; Sat, 21 Mar 2026 00:54:01 +0000 (UTC) Received: from p1wg14927.americas.hpqcorp.net (10.119.18.117) by p1wg14923.americas.hpqcorp.net (10.119.18.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:44 -1200 Received: from p1wg14923.americas.hpqcorp.net (10.119.18.111) by p1wg14927.americas.hpqcorp.net (10.119.18.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:43 -1200 Received: from p1wg14919.americas.hpqcorp.net (16.230.19.122) by p1wg14923.americas.hpqcorp.net (10.119.18.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17 via Frontend Transport; Fri, 20 Mar 2026 12:53:43 -1200 Received: from CH4PR07CU001.outbound.protection.outlook.com (192.58.206.38) by edge.it.hpe.com (16.230.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 20 Mar 2026 12:53:43 -1200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ujq8U/KEdEh1qls9bukELdRmIuslcXlcZZT/WXkd2OxCUD5CdVBq/Eg8xVG/2Azze+lWz5rqSWkhIBzLdoXh2hDJ6Ur4UAddcpJCVHwm1ClsN1BPkUB3SdDWce80cydRsVKMigWIseZbcmck3EtmYxeLOT1viF2WWjLESHYIrYKhmgwJthTi58a+yXrRivavWZkViZyhBkKwKPtZc9xV680UDyLV9HXMoW6tnWf7NYuMwTF43rWSSNxpiqe+m/8eq5uZE9cvb1r/mW41z8/wHLh82NUgyhOxE3iK2/tdcHRd1xrN4RVbI82Eykz/gjVL9YpPzH0w0PwgvsI1a3B26Q== 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=FYWI9f8+DwHYOii+EoCnQC48vC5G7SKRIYvfHZa6M0M=; b=rH4kX7NCguQIxySsPxIgJkdEYrHF88L44nIwyeTzhwbW1LLGLVQVZRxWbpLAru2+c4WDbM6+UnyihLbYbPz/ZhKbRsuGk0enUnGw8CAq3ao/XZUB5i0F3UzuwQ7tuQXtMmroU9FLtsz7SvGQ/9hOFv1tAV2bt+iOlKV6ZCBKRpdi5z/eHWv9FZWc0e1cmKhpB3Ux/m0/q3/kxu5MGKl6NXUXTQhRIUTJ31EyEYzX0gsSYyqi+vsQt4poTD2F22Y35yCIcdlr2CX+LWJHMnlXG90AYUtiFQq0nTL9tl4h34hVYa2AZ7y+Ov5LWiZRc2XQ5zIEQnLcqb2ZC3UVQo9BQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1cc::7) by LV8PR84MB3772.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:408:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Sat, 21 Mar 2026 00:53:42 +0000 Received: from CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f]) by CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM ([fe80::2c54:3534:122f:e74f%4]) with mapi id 15.20.9723.022; Sat, 21 Mar 2026 00:53:42 +0000 From: "Pradhan, Sanman" To: "linux-hwmon@vger.kernel.org" CC: "linux@roeck-us.net" , "linux-kernel@vger.kernel.org" , Sanman Pradhan Subject: [PATCH v5 4/4] hwmon: (pmbus/max31785) check for partial i2c_transfer in read_long_data Thread-Topic: [PATCH v5 4/4] hwmon: (pmbus/max31785) check for partial i2c_transfer in read_long_data Thread-Index: AQHcuM0p8iuZzkY/1EGBa9BYO+QdeA== Date: Sat, 21 Mar 2026 00:53:41 +0000 Message-ID: <20260321005206.6350-5-sanman.pradhan@hpe.com> References: <20260321005206.6350-1-sanman.pradhan@hpe.com> In-Reply-To: <20260321005206.6350-1-sanman.pradhan@hpe.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR84MB3523:EE_|LV8PR84MB3772:EE_ x-ms-office365-filtering-correlation-id: 41deee31-d278-40ac-96e4-08de86e44c14 x-ld-processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700021|56012099003|22082099003|18002099003; x-microsoft-antispam-message-info: egnNcvCZm7reKmKLTzjuJlpOytJLbS0SnzY9YPQIkZD82JeWIlFaoFuBfFWNzmJm0Xbex41cd+xe7Bogm+Yy3HUTz3sIuVNnZKDnpITYYhWIypW+bpKkkw8u0YfFWN2kRethFMTwv8QFfBKhWTJscZqoymCUVtGmYrasWGjFKNfGlDPem4jZ1kWvQ67AVj8q7Ss0RmWKJJUOUuGNmjqiOfJZ6gQw7t1XOSjNCsNLEGs8wB8SMwKOk5vglpqaAbwF5Pp4nxjjZjVEN+uuqMycKya4+pMo8RMpimwpE27ytLSOx19vX9LgReze2T/3MaxO96aAQ+WFGyrD3pR2Gb+OzBkEkh77xfbNEFg3xww/+8Qm0aQRTe2jvHogpu+5r12hmlW9OiQNv+EOJvWCR1ObTXNbRqY9KZYX2nins58Wjk89xwiYPPenIX7Qb6hC6Ojuox85n0poi+U2UDWLt8qK3bQwg0S/ndy+dV2bgQ7iOOzzUvcjUxShneTFC1mlRoT/+8z6WwWC/fvmyONx++vSJe6hqc0qkwrOODGF8PuaLmvG25uQd/TsbsrWJTmZFY5uNuMXTH+HGV8OY3rKdFSgZkY/n6p/OcUnnG8/JMo7jp5TYMnRc6UrybuwT1d2VXieQZD0bctX0G51lJgbUbXruw7XPInb4wuaHh8jlRs4/DlF6L85yEiWUFJUa8dKmWVU/ni2D0J1VkV90lpSYbJQrKepR2nYsNRj/jfwznTxe+E6hp1YwaJdHow8bR8WrnRMqBMxMMX+izOL+D38CLYCV0g/zSlUTd6A5PxA4rj44XU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?GDiyd4P2g//OVaBK1N7NK9BU0I9uw87hp7ZrnF7G/qAZunGtW3k1nNRVCI?= =?iso-8859-1?Q?EYfMa03VyH4w4J11G8taoOYzZU3LM038GC7Kl2nIcWBmyVFOanzyMEQywM?= =?iso-8859-1?Q?uYttiYX1dw/45d+mHAE33sOY0xT3L2F6IqmZieF0Bi1Xbw5+PlZY9MRxzF?= =?iso-8859-1?Q?UJDdETbIZFCJnzb+9uFe/RpC6/0Nd5d/n09mHGStXxz4BhJ9c7SEq7bSTD?= =?iso-8859-1?Q?1imjifrbGW7Phkh0NInWeE40fcqDC+FcvyYkkb6QKrvx7Tr9e6ZRaKoIuc?= =?iso-8859-1?Q?YgIdT5TwDsZSRimxfZB0w7ZnQVOvUAXD83YufU5C1/DPW6KusynemLS9CI?= =?iso-8859-1?Q?el5+8bohVhwqWbmfLmgZhFXpgTLExVs4szpGEmEtmMjgmij9TT/zwDcmWS?= =?iso-8859-1?Q?OvjNyhzCVMzcGwawU2RwIa7M/oDgJMvFHUJxqjZwbDp3oVnN1ytPDxGXUE?= =?iso-8859-1?Q?kxN3ic6eLhXzVMccMeKbKsOPdRe9/+Re0Sb7j/FjEZ2czKen1kG7KKiOCi?= =?iso-8859-1?Q?XhWBymlElbfIVVegrVNv4YbKIvwRN4jWfbjNtggRP4/l/J0l/j7THj0aQS?= =?iso-8859-1?Q?8apvU5oY0DVxd0f6mf1vQYKuBAocGEpTADvEmKoXfQQaUYYEJeGIPnXymO?= =?iso-8859-1?Q?2MnTNUMML6RuOHa2iNi2+qO40mVP+LqRdiAiXci9U1HxXuFwcZOkrNCWoG?= =?iso-8859-1?Q?SEuvW3DMO/0lD+Ul3JzapQoMOj1O9Bgz/AwQ9/m77uwp9eCEzylouxrD4R?= =?iso-8859-1?Q?kylLiO1i7UwFGjdW8mHULc3Tb9n2N0jUkshGcKEPn5SCPreJgXx5z7OlN9?= =?iso-8859-1?Q?qrbGSHWOfaJ37v13CqFIEU/2X9/HnsrSD0dI3IZyaMfTVdEcuUoypPKdlQ?= =?iso-8859-1?Q?3H6cqIKe82GrT9wWOSflAJbyrsgE4PE7naAJHH8GLi6ei73vSQvxsCV0We?= =?iso-8859-1?Q?7lsUzmq7ctbYWKiyfAM0BSypJd+GXezf2lyGQmVSuo01AoLr8oacAdx/nY?= =?iso-8859-1?Q?aPbMv05SL4+i9SJyvT4YptjgRJlSWcwyhk0ZmoR9hBHFi6GO7/odpNc7do?= =?iso-8859-1?Q?2NuUTewtohLRSbTluhqE8SIorWxSJ+daxwNcSgD86t0ktiDMlcF/4bInP0?= =?iso-8859-1?Q?5A2RiOZMztyAylWe9UOJUVefbjrYy1JSDZ2fHz6KovDAoMP4zyWgdflZm/?= =?iso-8859-1?Q?4vj5vB16AqY5CHlDIZAKyURjgX9BFKh5fQ3ru03j82El4PoyHd7ZmYfpnj?= =?iso-8859-1?Q?ekALDulSoJpuuCy8a4d0t68H48Kz8pWKS7Un59zQSZ5hEp+AVcLyGJjK91?= =?iso-8859-1?Q?ntPqBuSfCGCMtyI8Wmi8dKTvmODUx7qsd+CFjsqPbZIRX+3NzfnbjLbANH?= =?iso-8859-1?Q?p1bvxwcXJ0QSa9tchw8EC/k4VKCuMuvhKTHEXsk13emG9YoR1sbhnNyFP0?= =?iso-8859-1?Q?dJk14GK7Rir2alkvM5bJJn8cK5+oRhMscTOKr9bnu2FvLqdALE6A8CeKbL?= =?iso-8859-1?Q?ljn4Y4v+dsmzmdHJEM7/vwGyktr4IPNZPXAxm+PIsmNuZyidUK0ovFb3E2?= =?iso-8859-1?Q?Mgs1vUrbZyL4iopgNqLI4lPptvYFzJpdJgSZF9pT0XLvRO4PgQJryPRyiI?= =?iso-8859-1?Q?sOSECMbhTNgwSZ9aEY1sFviEJF1WiwlKub66K829NCt2hBrR5a2Ea34m0R?= =?iso-8859-1?Q?NgZpW3AIDcnAUZfrYWhvTbaleUd1d3ALIZNtbT//VZfdCf28OGabTeAum4?= =?iso-8859-1?Q?ITmSX6CqrC40rVlS7l98ASZ2elfiuOy2yIEaChOZ3yU9c3uWqfE7PQk83r?= =?iso-8859-1?Q?L/DWNFIaqg=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: dbPHJsMyYB/qZCOhxeScflZ6SHTSDk+KeRz/jJ7l4RBpKhskRgUrb/u+Av9l6wDe+u7LwiETqsi/cupfMuF/ju3So7l/ejA1t0yAfDhVi4hyAV1Fui+QkD7NZzH4L1nDEJWAZNY7XJNeYfydiWIuePsUWz6hMjJI6jEF9RIF/lKBbceTpgouUMPrPwoGY0qNNKiZKDUI9SbQ6l2eW0K+PadIMX7oiVUl6dRlEa/KOnHj2hkqkLhAZEGBDefIe+M3xTA+rph6rqkyd3dIiB8DLQtM/+9dbWayPiH+jtUjYB64suS7C36ZOhy61Dicw1xMkyr+K4T8j66UF4wGMijedw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3523.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 41deee31-d278-40ac-96e4-08de86e44c14 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2026 00:53:41.9814 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9+VVGE7VL8GJ/j0R//Yp6rf8NlZRze27pophgukN6z+/j93d5iz7o4a1TU0qIhm0zDhmKHSAKgB4K+nzUSzVmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR84MB3772 X-OriginatorOrg: hpe.com X-Proofpoint-GUID: Ez4e1w34PjIKPdDpIu-wiuCugxrSnRiP X-Proofpoint-ORIG-GUID: Ez4e1w34PjIKPdDpIu-wiuCugxrSnRiP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIxMDAwNSBTYWx0ZWRfXxQCilA52NnX+ rAwb+saGpKwuPsrmbgmXmjFwuroLPYZ/do2fSMfdVWrLCDt86vM2c8JULsv6FYDyvLz3x3HKdC2 Wd/XaXnXuHQ6n/ZDqFzYfP8P7Y9bFztWNeVVd9CMbLktFUrbsuZ03hNowFjL6Bo3WqQBTKVaDYQ CWmxvaC+tQRP6WyUbvsGG+HZCle4oE+6geKGKmq2yEoJHW5wpeIYICEqRRiUwzq1G2HVy1s7Zrn OvwwLFADgB60U8jQlkXtbYsKuLP8d1yyi4VX6jg4HswsEZbawNLcf2pj/wWKzWpR5xsNMBdH/jC X33T8hIvFzumGQmZINKsLsCZUSB0j6fGlAT8j0uHCgqmic1NVWqxzZHcQ7Dic0cBtw0/m+K+mM4 4m3FjCgTJdqiAB219lriJtsH+eKY1IjSRoyvdZNqw0KWdxJc+SJ9za+cgMfga9SjY80YZ5BPJBC Efcqqu2ZfiOh5+sAVdA== X-Authority-Analysis: v=2.4 cv=I5Fohdgg c=1 sm=1 tr=0 ts=69bdec2a cx=c_pps a=UObrlqRbTUrrdMEdGJ+KZA==:117 a=UObrlqRbTUrrdMEdGJ+KZA==:17 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=8nJEP1OIZ-IA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gQcMVamqm3wCPoSYhaRC:22 a=ZSrvDirOKP4VPF05hnFf:22 a=OUXY8nFuAAAA:8 a=pxZigRnF54JOt-8cZC8A:9 a=wPNLvfGTeEIA:10 a=cAcMbU7R10T-QSRYIcO_:22 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_04,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 lowpriorityscore=0 spamscore=0 bulkscore=0 clxscore=1015 suspectscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603210005 Content-Type: text/plain; charset="utf-8" From: Sanman Pradhan i2c_transfer() returns the number of messages successfully transferred, not only a negative errno on failure. When called with two messages (write command byte followed by a read of the 4-byte response), a return value of 1 means the command write succeeded but the read did not complete. In that case, rspbuf remains uninitialized and must not be interpreted as valid data. Treat any return value other than ARRAY_SIZE(msg) as an error, and return -EIO for partial completion. Also return 0 on success instead of the message count, since the caller only needs to distinguish success from failure. Signed-off-by: Sanman Pradhan --- v5: - New patch in the series. Fixes a pre-existing bug where partial i2c_transfer() returns left rspbuf uninitialized. --- drivers/hwmon/pmbus/max31785.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/hwmon/pmbus/max31785.c b/drivers/hwmon/pmbus/max31785.c index 260aa8fb50f13..3caa76bcbeb5e 100644 --- a/drivers/hwmon/pmbus/max31785.c +++ b/drivers/hwmon/pmbus/max31785.c @@ -141,13 +141,13 @@ static int max31785_read_long_data(struct i2c_client = *client, int page, */ pmbus_update_ts(client, 0); =20 - if (rc < 0) - return rc; + if (rc !=3D ARRAY_SIZE(msg)) + return rc < 0 ? rc : -EIO; =20 *data =3D (rspbuf[0] << (0 * 8)) | (rspbuf[1] << (1 * 8)) | (rspbuf[2] << (2 * 8)) | (rspbuf[3] << (3 * 8)); =20 - return rc; + return 0; } =20 static int max31785_get_pwm(struct i2c_client *client, int page) --=20 2.34.1