Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp398618ybi; Wed, 29 May 2019 23:56:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqzQBe3iGHCjuBZTZeUkbV/XUfuNklXpik4XW6NTktLaYzMsnBZcNWTtBhXgGiwOekjdMiLr X-Received: by 2002:a17:902:8ec3:: with SMTP id x3mr2257156plo.340.1559199404384; Wed, 29 May 2019 23:56:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559199404; cv=none; d=google.com; s=arc-20160816; b=kMq0wEewenlLg5lmDlewsCTIsMQEuDvAfFCowy+q90T/0hg1k8Z+IGk0Byt3rMCImJ gxF5g/2tLnTnrEZyrefNSR9SJD5xJQnCAFiKcMjVgDPDV2DEa+XdDGJwD5Z1ehQyrZdK 5vxxSF/+wc3R61HbYJQcPruEqskIAO0G+TOUFgR/ASfl+QEqjLfz9SuSQ5zYuF+aqdlF lpf0tZLfL9sRkXbjo9TLDvyiU3Rw1u5VZTfu0VsRuK2IQ4tKMemfonN2qOlFlNe2AGfx N2hEP3BEEjMKVAGP6x1DD68NSN8o/Oxe7ToIIIBNpZOPkmbM2rgg4mCzTzZg5heiWCoz z6cQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=9maRvPBwlqCfRtx2VjTnHTHzeoqH8Al2SVWm6eg7huY=; b=IUURSlG2UkaLINYa1M1SVnop6Z+XJ1zK4TJN/8Irqit9PTZb/fMXJaJcJEE3Va9JKX 7mS5F369DFrFDw4c4gkueAsbQ6AU5WzA1JNa8mGzjnewvBmRtwNwxcflzAVGDZRD9GjG TmwKzo02vJvHhVQK1YptKlTN22fEzmLzheAdA+0U6eS/X5x7kOudr521Ic0dlJcAw/hO FJIN/NC+qfYdYas5dAYQfIQQZZvO/JK92pTKMiqWtNrQPu+L2awIKOfD6gQOtEzzT66B xK1EXH0KHdukSYUYYAo/6mKswJWy4NOA3oI01UKTmxZ5tqaf/TWYLmwbY/Ksl3wLNwOk e7kQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id be11si2178334plb.303.2019.05.29.23.56.28; Wed, 29 May 2019 23:56:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727597AbfE3Gy4 (ORCPT + 99 others); Thu, 30 May 2019 02:54:56 -0400 Received: from 59-120-53-16.HINET-IP.hinet.net ([59.120.53.16]:56320 "EHLO ATCSQR.andestech.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727297AbfE3Gy4 (ORCPT ); Thu, 30 May 2019 02:54:56 -0400 Received: from mail.andestech.com (atcpcs16.andestech.com [10.0.1.222]) by ATCSQR.andestech.com with ESMTP id x4U6n038060958; Thu, 30 May 2019 14:49:00 +0800 (GMT-8) (envelope-from nickhu@andestech.com) Received: from andestech.com (10.0.15.65) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.123.3; Thu, 30 May 2019 14:54:35 +0800 Date: Thu, 30 May 2019 14:54:36 +0800 From: Nick Hu To: Greentime Ying-Han =?utf-8?B?SHUo6IOh6Iux5ryiKQ==?= , "palmer@sifive.com" , "albert@sifive.com" , "linux-riscv@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "hch@infradead.org" CC: "green.hu@gmail.com" Subject: Re: [PATCH v2] riscv: Fix udelay in RV32. Message-ID: <20190530065436.GA15137@andestech.com> References: <67a14915b99ee5d933ef9e7e056fc6e1935e775e.1559198255.git.nickhu@andestech.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <67a14915b99ee5d933ef9e7e056fc6e1935e775e.1559198255.git.nickhu@andestech.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [10.0.15.65] X-DNSRBL: X-MAIL: ATCSQR.andestech.com x4U6n038060958 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 30, 2019 at 02:49:10PM +0800, Nick Chun-Ming Hu(胡峻銘) wrote: > In RV32, udelay would delay the wrong cycle. When it shifts right > "UDELAY_SHITFT" bits, it either delays 0 cycle or 1 cycle. It only works > correctly in RV64. Because the 'ucycles' always needs to be 64 bits > variable. > > Signed-off-by: Nick Hu > --- > arch/riscv/lib/delay.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/riscv/lib/delay.c b/arch/riscv/lib/delay.c > index dce8ae24c6d3..ee6853c1e341 100644 > --- a/arch/riscv/lib/delay.c > +++ b/arch/riscv/lib/delay.c > @@ -88,7 +88,7 @@ EXPORT_SYMBOL(__delay); > > void udelay(unsigned long usecs) > { > - unsigned long ucycles = usecs * lpj_fine * UDELAY_MULT; > + u64 ucycles = (u64)usecs * lpj_fine * UDELAY_MULT; > > if (unlikely(usecs > MAX_UDELAY_US)) { > __delay((u64)usecs * riscv_timebase / 1000000ULL); > -- > 2.17.0 > Hi All, I forgot to add "Reviewed-by: Palmer Dabbelt ". I will send another patch. Sorry.