From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-874563-1516767485-2-16364291484293782965 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES caroen, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='com', MailFrom='org', XOriginatingCountry='US' X-Spam-charsets: plain='iso-8859-1' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1516767484; b=tYketRBoMhX5mE1RVtlIFXeZAJzN2j5eTdbzDnNp1ocE+WE sb6GZg3Naz74jCA5h8aG56cHTa6FT3F1vDmQlKB6YGMuHOLw8f/IsDtPXElnBUTb LQNSPI398Zo7TQhqAuBlet5q0GDzDS5Yr0ma4dRdtZ0rHuQ0YiHXuOnsPncVs9kJ k6WKbTgfR6tpm01mE5e0zl49+KGqTTk7YvaKA5I8XcdLE2OqU5ug5od44R4Vy7IS faYgCMyvKT5GOvypkXtpSjz1wWRN6zpxxXDTr8D0PWP+WQgRuukFC3RsYMxg315P e4ZstWskbpzjhSyV/O9lGAskZ/zspCfImzWSSww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:in-reply-to:content-type:content-transfer-encoding :mime-version:sender:list-id; s=arctest; t=1516767484; bh=wvTXlX GYHokqUO0gnS6si3G0/3NSLInHE7fVQmwLeBc=; b=ozGm5C5uel4kC4l6NuInhY qbCfaVmTh1aCI+Mob4Ka9QiWh+j0jPr8/AOHwq4H6jHuZ6GywX1iPJD2iWp08HFs ukY1be8xCb0NkEkQtalE9xVx2hQwjutuum3RZPrnFumjmXyEpSx8X4Wp8e7VnAw7 DFGfmNQfhtisKzjxUOBKUWrWYm9c9EH2vxByST0vLQxCByRQhnGmzDDJBrfo+1sG ZchfTfFVIJwopFDqMcZAxdekn2hJk3Cv08UUCX2cPg6DBDQOnmJQVBxI+bJFeGjX +mtdxK1VAF9q6bTCm/MxjocZhRn7G8UNzmlg2KQLPzwpJEb1ibDnadxsh2m7TqCA == ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=OrhsQknm x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=OrhsQknm x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932533AbeAXESB (ORCPT ); Tue, 23 Jan 2018 23:18:01 -0500 Received: from mail-sn1nam01on0139.outbound.protection.outlook.com ([104.47.32.139]:55503 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932409AbeAXER7 (ORCPT ); Tue, 23 Jan 2018 23:17:59 -0500 From: Sasha Levin To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" CC: Robert Lippert , Robert Lippert , Guenter Roeck , Sasha Levin Subject: [PATCH AUTOSEL for 4.9 31/55] hwmon: (pmbus) Use 64bit math for DIRECT format values Thread-Topic: [PATCH AUTOSEL for 4.9 31/55] hwmon: (pmbus) Use 64bit math for DIRECT format values Thread-Index: AQHTlMoBLrfdpAvqVU2onlwEAdeVrA== Date: Wed, 24 Jan 2018 04:15:45 +0000 Message-ID: <20180124041521.32223-31-alexander.levin@microsoft.com> References: <20180124041521.32223-1-alexander.levin@microsoft.com> In-Reply-To: <20180124041521.32223-1-alexander.levin@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR2101MB0933;7:p/nHAD5Rdj6Apal1aDp2Y6Ik9J54kfDbqKpNz5UAMkwDfABlJxlf0OppVlzmrHqV4aGu2CmP5ziOfAWfWk7jBeRnRKy/LzrYAAjmUt7d57gWFplEJfEdJNwKalgna4H4uwRMT6FtLzUhEfCUr1442Gh24xV0zL49ePu2FXbcqQDCSfniFzd8mJCbDhP3QeLFYzhblqHCGdNzxXscJ9RQRwDLMVLBVs7RH4zilgMtFNPacN42WV46lMwW2pG+I2rJ x-ms-office365-filtering-correlation-id: 8fe03df8-8a4e-4383-6a38-08d562e172bd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7193020);SRVR:DM5PR2101MB0933; x-ms-traffictypediagnostic: DM5PR2101MB0933: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171)(85827821059158)(211936372134217)(153496737603132); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(61425038)(6040501)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231046)(2400081)(944501161)(6055026)(61426038)(61427038)(6041288)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(6072148)(201708071742011);SRVR:DM5PR2101MB0933;BCL:0;PCL:0;RULEID:;SRVR:DM5PR2101MB0933; x-forefront-prvs: 056297E276 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(39860400002)(376002)(366004)(39380400002)(396003)(189003)(199004)(105586002)(305945005)(478600001)(110136005)(39060400002)(10290500003)(76176011)(54906003)(106356001)(25786009)(66066001)(10090500001)(14454004)(3846002)(6116002)(1076002)(6346003)(97736004)(6506007)(5250100002)(2501003)(72206003)(4326008)(36756003)(3280700002)(3660700001)(102836004)(2906002)(5660300001)(53936002)(107886003)(2900100001)(6436002)(6512007)(99286004)(8936002)(68736007)(7736002)(86612001)(81156014)(86362001)(2950100002)(26005)(81166006)(8676002)(22452003)(6486002)(316002)(6666003)(22906009)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR2101MB0933;H:DM5PR2101MB1032.namprd21.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexander.Levin@microsoft.com; x-microsoft-antispam-message-info: McLjiEU61VsP6tp11FZcns/zYpJJEhCfS6VCJqBf2UI78Hf1mj1jkHLyiMl3mzr/MAUBkyutkG+KUy4hcpuURA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fe03df8-8a4e-4383-6a38-08d562e172bd X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2018 04:15:45.1511 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR2101MB0933 Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: From: Robert Lippert [ Upstream commit bd467e4eababe4c04272c1e646f066db02734c79 ] Power values in the 100s of watt range can easily blow past 32bit math limits when processing everything in microwatts. Use 64bit math instead to avoid these issues on common 32bit ARM BMC platforms. Fixes: 442aba78728e ("hwmon: PMBus device driver") Signed-off-by: Robert Lippert Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/pmbus/pmbus_core.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_c= ore.c index ba59eaef2e07..d013acf3f83a 100644 --- a/drivers/hwmon/pmbus/pmbus_core.c +++ b/drivers/hwmon/pmbus/pmbus_core.c @@ -20,6 +20,7 @@ */ =20 #include +#include #include #include #include @@ -476,8 +477,8 @@ static long pmbus_reg2data_linear(struct pmbus_data *da= ta, static long pmbus_reg2data_direct(struct pmbus_data *data, struct pmbus_sensor *sensor) { - long val =3D (s16) sensor->data; - long m, b, R; + s64 b, val =3D (s16)sensor->data; + s32 m, R; =20 m =3D data->info->m[sensor->class]; b =3D data->info->b[sensor->class]; @@ -505,11 +506,12 @@ static long pmbus_reg2data_direct(struct pmbus_data *= data, R--; } while (R < 0) { - val =3D DIV_ROUND_CLOSEST(val, 10); + val =3D div_s64(val + 5LL, 10L); /* round closest */ R++; } =20 - return (val - b) / m; + val =3D div_s64(val - b, m); + return clamp_val(val, LONG_MIN, LONG_MAX); } =20 /* @@ -629,7 +631,8 @@ static u16 pmbus_data2reg_linear(struct pmbus_data *dat= a, static u16 pmbus_data2reg_direct(struct pmbus_data *data, struct pmbus_sensor *sensor, long val) { - long m, b, R; + s64 b, val64 =3D val; + s32 m, R; =20 m =3D data->info->m[sensor->class]; b =3D data->info->b[sensor->class]; @@ -646,18 +649,18 @@ static u16 pmbus_data2reg_direct(struct pmbus_data *d= ata, R -=3D 3; /* Adjust R and b for data in milli-units */ b *=3D 1000; } - val =3D val * m + b; + val64 =3D val64 * m + b; =20 while (R > 0) { - val *=3D 10; + val64 *=3D 10; R--; } while (R < 0) { - val =3D DIV_ROUND_CLOSEST(val, 10); + val64 =3D div_s64(val64 + 5LL, 10L); /* round closest */ R++; } =20 - return val; + return (u16)clamp_val(val64, S16_MIN, S16_MAX); } =20 static u16 pmbus_data2reg_vid(struct pmbus_data *data, --=20 2.11.0