From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3521934-1519669846-2-12340772878553588978 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, FREEMAIL_FORGED_FROMDOMAIN 0.195, FREEMAIL_FROM 0.001, HEADER_FROM_DIFFERENT_DOMAINS 0.001, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org' X-Spam-charsets: plain='UTF-8' 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=1519669845; b=fcy6mh8BxLTNVkHz+A+6D5ThDdT/Sz99Sst2A9R6hBXZFLz n1IYzhmOcqY0TJk7gAyKP0grL5MDv9e1cEvdpUd8zcIeP2rGO/xQ2SyqIqDo9Ad2 QNDysze/IcxjMuvTWWzMeFf/mOFg6X1JhbEJgKdV1bo9w1cURl0Js7gOiAqW9j2A +vixQCeD5c6ukzQxB6XUjp0B1CwpDlqAIAOhM/q73ZXrGMlLVo6mKeudzH9X18mS VXKCo+KFvTT55t7HqMsqudEpq+MpCsmUG2X8xPaCRowZvufwZHRkEew/7msPYmL2 zdtOwjErkVmOZ6a7rooMKjvMyVFL7FW/grRgeIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=mime-version:in-reply-to:references:from :date:message-id:subject:to:cc:content-type:sender:list-id; s= arctest; t=1519669845; bh=W37gUqsawhpChAO80m00VsfPzJQd8k2HPD6o9k xCHK0=; b=wGddxol8i1ehdX3LTvIfMsw4bfBQf8rS6iauwWi0m2rnI8ChLl/Sl7 e6etHZ+++pka8Z4U07fySAprSJ+aV8Gnh9v3ySrD0TYoJ/TNks5HUe0Ek55QHMR8 OzoWlaxngrC3jCfccWzJE2Yjzea77BS43UVA32jqIr9bI2yd/HiZ0DAGwmqL4JZi fvvQGFiIGoxf5GkbPWzKNs624EAMtQuFx1znXnP7ZjBjkXqZIgjHOu/of41F4Miw AgKsQMdf/utJgqWBDrgOr3LvsJCsLfXhKEsdSqpPCmYd7ZnFJjovxY/uZzx4fOmb ZT0F5yVFtvTLybXbol/DotnHryNSHUHg== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=bbBkdCLC x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20161025; dmarc=pass (p=none,has-list-id=yes,d=none) header.from=gmail.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-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=QM3nHE0h; 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=gmail.com header.result=pass header_is_org_domain=yes Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=bbBkdCLC x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20161025; dmarc=pass (p=none,has-list-id=yes,d=none) header.from=gmail.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-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=QM3nHE0h; 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=gmail.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751343AbeBZSao (ORCPT ); Mon, 26 Feb 2018 13:30:44 -0500 Received: from mail-qk0-f194.google.com ([209.85.220.194]:38082 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751165AbeBZSan (ORCPT ); Mon, 26 Feb 2018 13:30:43 -0500 X-Google-Smtp-Source: AG47ELtehl3mOyXWjPZXpOL3LQS4Mzy9amzgbnUd45iQhNyTKFY0ih21Rr2w9fy8sGQF4AmSw5Wvd4Eak8+ACyxtbBQ= MIME-Version: 1.0 In-Reply-To: <1519665265.31245.6.camel@synopsys.com> References: <20180226143413.44134-1-Evgeniy.Didin@synopsys.com> <20180226143413.44134-3-Evgeniy.Didin@synopsys.com> <1519658060.31245.4.camel@synopsys.com> <1519665265.31245.6.camel@synopsys.com> From: Andy Shevchenko Date: Mon, 26 Feb 2018 20:30:41 +0200 Message-ID: Subject: Re: [PATCH 2/2 v3] mmc: dw_mmc: Fix the CTO overflow calculation for 32-bit systems To: Evgeniy Didin Cc: "linux-kernel@vger.kernel.org" , "Alexey.Brodkin@synopsys.com" , "linux-mmc@vger.kernel.org" , "dianders@chromium.org" , "Vineet.Gupta1@synopsys.com" , "Eugeniy.Paltsev@synopsys.com" , "linux-snps-arc@lists.infradead.org" , "stable@vger.kernel.org" , "ulf.hansson@linaro.org" Content-Type: text/plain; charset="UTF-8" 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: On Mon, Feb 26, 2018 at 7:14 PM, Evgeniy Didin wrote: > On Mon, 2018-02-26 at 18:53 +0200, Andy Shevchenko wrote: >> On Mon, Feb 26, 2018 at 5:14 PM, Evgeniy Didin >> wrote: >> > On Mon, 2018-02-26 at 16:39 +0200, Andy Shevchenko wrote: >> > > On Mon, Feb 26, 2018 at 4:34 PM, Evgeniy Didin >> > > wrote: >> > > > In commit 4c2357f57dd5 ("mmc: dw_mmc: Fix the CTO timeout calculation") >> > > > have been made changes which can cause multiply overflow for 32-bit systems. >> > > > The value of cto_ms is lower the drto_ms, but nevertheless overflow can occur. >> > > > Lets cast this multiply to u64 type which prevents overflow. >> > > > - cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); >> > > > + >> > > > + cto_ms = DIV_ROUND_UP((u64)MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); >> > > >> > > IIRC, someone commented on this or similar, i.e. >> > > >> > > DIV_ROUND_UP_ULL() ? >> > >> > Switch DIV_ROUND_UP macro to DIV_ROUND_UP_ULL is not reasonable >> > because overflow happens on multiply and DIV_ROUND_UP_ULL helps >> > with sum overflow. >> >> Did you try to compile your code for 32-bit target? > Yes, we have compiled code for 32-bit system. > I am wondering why are you asking that? Because I simple didn't believe you. ERROR: "__udivdi3" [drivers/mmc/host/dw_mmc.ko] undefined! ...scripts/Makefile.modpost:92: recipe for target '__modpost' failed make[2]: *** [__modpost] Error 1 +++ b/drivers/mmc/host/dw_mmc.c @@ -409,7 +409,7 @@ static inline void dw_mci_set_cto(struct dw_mci *host) - cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); + cto_ms = DIV_ROUND_UP((u64)MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); -- With Best Regards, Andy Shevchenko From mboxrd@z Thu Jan 1 00:00:00 1970 From: andy.shevchenko@gmail.com (Andy Shevchenko) Date: Mon, 26 Feb 2018 20:30:41 +0200 Subject: [PATCH 2/2 v3] mmc: dw_mmc: Fix the CTO overflow calculation for 32-bit systems In-Reply-To: <1519665265.31245.6.camel@synopsys.com> References: <20180226143413.44134-1-Evgeniy.Didin@synopsys.com> <20180226143413.44134-3-Evgeniy.Didin@synopsys.com> <1519658060.31245.4.camel@synopsys.com> <1519665265.31245.6.camel@synopsys.com> List-ID: Message-ID: To: linux-snps-arc@lists.infradead.org On Mon, Feb 26, 2018 at 7:14 PM, Evgeniy Didin wrote: > On Mon, 2018-02-26@18:53 +0200, Andy Shevchenko wrote: >> On Mon, Feb 26, 2018 at 5:14 PM, Evgeniy Didin >> wrote: >> > On Mon, 2018-02-26@16:39 +0200, Andy Shevchenko wrote: >> > > On Mon, Feb 26, 2018 at 4:34 PM, Evgeniy Didin >> > > wrote: >> > > > In commit 4c2357f57dd5 ("mmc: dw_mmc: Fix the CTO timeout calculation") >> > > > have been made changes which can cause multiply overflow for 32-bit systems. >> > > > The value of cto_ms is lower the drto_ms, but nevertheless overflow can occur. >> > > > Lets cast this multiply to u64 type which prevents overflow. >> > > > - cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); >> > > > + >> > > > + cto_ms = DIV_ROUND_UP((u64)MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); >> > > >> > > IIRC, someone commented on this or similar, i.e. >> > > >> > > DIV_ROUND_UP_ULL() ? >> > >> > Switch DIV_ROUND_UP macro to DIV_ROUND_UP_ULL is not reasonable >> > because overflow happens on multiply and DIV_ROUND_UP_ULL helps >> > with sum overflow. >> >> Did you try to compile your code for 32-bit target? > Yes, we have compiled code for 32-bit system. > I am wondering why are you asking that? Because I simple didn't believe you. ERROR: "__udivdi3" [drivers/mmc/host/dw_mmc.ko] undefined! ...scripts/Makefile.modpost:92: recipe for target '__modpost' failed make[2]: *** [__modpost] Error 1 +++ b/drivers/mmc/host/dw_mmc.c @@ -409,7 +409,7 @@ static inline void dw_mci_set_cto(struct dw_mci *host) - cto_ms = DIV_ROUND_UP(MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); + cto_ms = DIV_ROUND_UP((u64)MSEC_PER_SEC * cto_clks * cto_div, host->bus_hz); -- With Best Regards, Andy Shevchenko