Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp913540imm; Mon, 1 Oct 2018 22:41:00 -0700 (PDT) X-Google-Smtp-Source: ACcGV60Rwn7D+skU4z4ilky1wtCkvaNcgoMvEdRWGZuEVjRc16EdInvc8K0RZrJfazi5r7enDk8L X-Received: by 2002:a63:1122:: with SMTP id g34-v6mr12863288pgl.85.1538458860786; Mon, 01 Oct 2018 22:41:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538458860; cv=none; d=google.com; s=arc-20160816; b=pDtT47jXMiQV1ihLINimhzjAFuRd73V36/Sk7WJX1cwsXBkugcAFObxomRTjcJowTM at0FaQ0MsxDOmnOm/6wQS+rICKt4HPyloJNyGucMLwVO0MosbjPihJ5D2Rvv/vUmOOto yiFaePY7qzaE1gx0nqACLgYGsYm8MuVX3aSisqMeBpFbLI4HtrSjsI8lRX2RZXzF6KnU HR0aHnuyjlOcTvp1bYys+PIct9jT7A3qaZJHS6tkMPSTRs4qfPu+t5lPXjjiAasp6/5e yvH0x1D4ooexKpFsIAMIwQ7j7so/1fhvx9NF/Ei/JwNUQrThWHMQjebOyjc2LAR3WqlP YhTA== 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-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=rb8s00f6TzxCLdHt1G6+bB1Q4vN3jDD2qlEm82Tuuf0=; b=hYg9hibRQd9AziChNpRC2ZmIApmdQtg+CI+NUo/v46zJamCpZXCLGXYFO/t+dQtY1b yb0Q1m9cBT4JYCIHnovrlSp4z4mAvvfkxPSzfD/ZCGufo4SlV0Unzn0rs5nUfpWg0npd Z7fZTQK0eKAEp/oc1/FaCoQKTVH68XINW1xgaft1JYH8zmKncug5JPZbDQiCohFDWt2K tPMyq6QQOl6htPSUIipSTOzaA7WMQLlQQqJ7lnqIxyLAqMKZxBxn8uK9EemypRmKWCxU uPojtDiRGq5E63IdyNO/dCqP4kLuRcLj+n3qPmUp3kjzwYyiUvq9/6CTYZKIzB2umr6C 8vww== 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 o10-v6si14547785pgg.195.2018.10.01.22.40.45; Mon, 01 Oct 2018 22:41:00 -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 S1726670AbeJBMWE (ORCPT + 99 others); Tue, 2 Oct 2018 08:22:04 -0400 Received: from smtp2200-217.mail.aliyun.com ([121.197.200.217]:58981 "EHLO smtp2200-217.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726305AbeJBMWE (ORCPT ); Tue, 2 Oct 2018 08:22:04 -0400 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.07440893|-1;CH=green;FP=0|0|0|0|0|-1|-1|-1;HT=e02c03297;MF=ren_guo@c-sky.com;NM=1;PH=DS;RN=17;RT=17;SR=0;TI=SMTPD_---.CyTRBK6_1538458825; Received: from localhost(mailfrom:ren_guo@c-sky.com fp:SMTPD_---.CyTRBK6_1538458825) by smtp.aliyun-inc.com(10.147.41.231); Tue, 02 Oct 2018 13:40:25 +0800 Date: Tue, 2 Oct 2018 13:40:25 +0800 From: Guo Ren To: Daniel Lezcano Cc: tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com, robh+dt@kernel.org, mark.rutland@arm.com, anurup.m@huawei.com, Jonathan.Cameron@huawei.com, will.deacon@arm.com, zhangshaokun@hisilicon.com, jhogan@kernel.org, paul.burton@mips.com, peterz@infradead.org, f.fainelli@gmail.com, arnd@arndb.de, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH V9 3/8] clocksource: add C-SKY SMP timer Message-ID: <20181002054024.GA12645@guoren> References: <88e320f2-8cf0-fdb9-c9b0-ee25d7a4d00f@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <88e320f2-8cf0-fdb9-c9b0-ee25d7a4d00f@linaro.org> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 01, 2018 at 11:14:14AM +0200, Daniel Lezcano wrote: > On 01/10/2018 03:35, Guo Ren wrote: > > This timer is used by SMP system and use mfcr/mtcr instruction > > to access the regs. > > > > Changelog: > > - Remove #define CPUHP_AP_CSKY_TIMER_STARTING > > - Add CPUHP_AP_CSKY_TIMER_STARTING in cpuhotplug.h > > - Support csky mp timer alpha version. > > - Just use low-counter with 32bit width as clocksource. > > - Coding convention with upstream feed-back. > > > > Signed-off-by: Guo Ren > > --- > > drivers/clocksource/Kconfig | 8 ++ > > drivers/clocksource/Makefile | 1 + > > drivers/clocksource/csky_mptimer.c | 176 +++++++++++++++++++++++++++++++++++++ > > include/linux/cpuhotplug.h | 1 + > > 4 files changed, 186 insertions(+) > > create mode 100644 drivers/clocksource/csky_mptimer.c > > > > diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig > > index a11f4ba..a28043f 100644 > > --- a/drivers/clocksource/Kconfig > > +++ b/drivers/clocksource/Kconfig > > @@ -620,4 +620,12 @@ config RISCV_TIMER > > is accessed via both the SBI and the rdcycle instruction. This is > > required for all RISC-V systems. > > > > +config CSKY_MPTIMER > > + bool "C-SKY Multi Processor Timer" > > + depends on CSKY > > + select TIMER_OF > > + help > > + Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP > > + system. > > + > > endmenu > > The same rule applies here for COMPILE_TEST. Ok > And please rename the file: timer-mp-csky.c Ok > > + return (u64) mfcr(PTIM_CCVR); > > extra space Ok > > > +} > > + > > +static u64 clksrc_read(struct clocksource *c) > > +{ > > + return (u64) mfcr(PTIM_CCVR); > > extra space Ok > > + */ > > + > > extra line Ok > > > + for_each_possible_cpu(cpu) { > > + to = per_cpu_ptr(&csky_to, cpu); > > + > > + if (cpu == 0) { > > + to->flags |= TIMER_OF_IRQ; > > + to->of_irq.handler = timer_interrupt; > > + > > + ret = timer_of_init(np, to); > > + if (ret) > > + return ret; > > + > > + rate = timer_of_rate(to); > > + irq = to->of_irq.irq; > > + } else { > > + ret = timer_of_init(np, to); > > + if (ret) > > + return ret; > > + > > + to->of_clk.rate = rate; > > + to->of_irq.irq = irq; > > + } > > + } > > > Isn't possible to replace this loop which is a bit confusing by: > > - no irq flag specified for timer-of > - request irq before Ok, but I've a bit different :) > So we end up with: > > irq = irq_of_parse_and_map(np, 0); > if (irq <= 0) > return -EINVAL; panic(); I want a panic here. Return will make debug confused and directly tell the people where is wrong. It's root-timer for us and it must bootup. If it's a co-timer, I also think return is good. > > ret = request_irq(irq, csky_timer_interrupt, > IRQF_TIMER | IRQF_PERCPU, > "csky_mp_timer", &csky_to)); ret = request_percpu_irq(irq, csky_timer_interrupt, "csky_mp_timer", &csky_to); I'll use request_percpu_irq the same as in timer_of and I've tested it's Ok. > if (ret) > return ret; Pls let me panic here. > > for_each_possible_cpu(cpu) { > to = per_cpu_ptr(&csky_to, cpu); > ret = timer_of_init(np, to); > if (ret) > goto rollback; Pls let me panic here. > } Best Regards Guo Ren