From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Fu Wei <fu.wei@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>,
Linaro ACPI Mailman List <linaro-acpi@lists.linaro.org>,
Catalin Marinas <catalin.marinas@arm.com>,
rruigrok@codeaurora.org, Wim Van Sebroeck <wim@iguana.be>,
wei@redhat.com, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Al Stone <al.stone@linaro.org>, Timur Tabi <timur@codeaurora.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
Guenter Roeck <linux@roeck-us.net>, Len Brown <lenb@kernel.org>,
harba@codeaurora.org, linux-watchdog@vger.kernel.org,
Arnd Bergmann <arnd@arndb.de>,
Marc Zyngier <marc.zyngier@arm.com>, Jon Masters <jcm@redhat.com>,
Christopher Covington <cov@codeaurora.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-arm-kernel@lists.infradead.org,
G Gregory <graeme.gregory@linaro.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Leo Duran <leo.duran@amd.com>, Hanjun Guo <hanjun.guo@linaro.org>,
Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>,
Sudeep Holla <sudeep.holla@arm.com>
Subject: Re: [PATCH v8 4/9] clocksource/drivers/arm_arch_timer: use readq to get 64-bit CNTVCT
Date: Mon, 25 Jul 2016 23:47:36 +0100 [thread overview]
Message-ID: <20160725224736.GT1041@n2100.armlinux.org.uk> (raw)
In-Reply-To: <CADyBb7tR4+78k52JrVZGo9FMuO8a8RBTTYK7PBx1RzP3Lx9snQ@mail.gmail.com>
On Mon, Jul 25, 2016 at 11:50:19PM +0800, Fu Wei wrote:
> Hi Will,
>
> On 25 July 2016 at 17:02, Will Deacon <will.deacon@arm.com> wrote:
> > On Wed, Jul 20, 2016 at 02:17:59AM +0800, fu.wei@linaro.org wrote:
> >> From: Fu Wei <fu.wei@linaro.org>
> >>
> >> This patch simplify arch_counter_get_cntvct_mem function by
> >> using readq to get 64-bit CNTVCT value instead of readl_relaxed.
> >>
> >> Signed-off-by: Fu Wei <fu.wei@linaro.org>
> >> ---
> >> drivers/clocksource/arm_arch_timer.c | 10 +---------
> >> 1 file changed, 1 insertion(+), 9 deletions(-)
> >>
> >> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> >> index e6fd42d..483d2f9 100644
> >> --- a/drivers/clocksource/arm_arch_timer.c
> >> +++ b/drivers/clocksource/arm_arch_timer.c
> >> @@ -418,15 +418,7 @@ u32 arch_timer_get_rate(void)
> >>
> >> static u64 arch_counter_get_cntvct_mem(void)
> >> {
> >> - u32 vct_lo, vct_hi, tmp_hi;
> >> -
> >> - do {
> >> - vct_hi = readl_relaxed(arch_counter_base + CNTVCT_HI);
> >> - vct_lo = readl_relaxed(arch_counter_base + CNTVCT_LO);
> >> - tmp_hi = readl_relaxed(arch_counter_base + CNTVCT_HI);
> >> - } while (vct_hi != tmp_hi);
> >> -
> >> - return ((u64) vct_hi << 32) | vct_lo;
> >> + return readq(arch_counter_base + CNTVCT_LO);
> >
>
> Sorry, right after posting v9, I got your comment,
>
> > What's the benefit of doing this? If you use readq here, how can we
>
> benefit:
> 1. simplify the code
> 2. from arch/arm64/include/asm/io.h, I guess readq is more efficient
And the harm is that it breaks the build on ARM, because ARM doesn't
provide readq (as it can't, as not all CPUs on ARM support 64-bit
reads) and it's not appropriate for architecture code to emulate it.
Consider carefully why the original code has that loop present -
only a device driver hows how to read a 64-bit register safely using
two 32-bit reads. Such a loop may not be appropriate for some other
device.
So... as the 0-day builder detected a failure on ARM with this, NAK.
If you want to make this conditional on readq() being present, that'd
be acceptable, but you must support the case where readq() is not
provided.
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
next prev parent reply other threads:[~2016-07-25 22:48 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-19 18:17 [PATCH v8 0/9] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer fu.wei
2016-07-19 18:17 ` [PATCH v8 1/9] clocksource/drivers/arm_arch_timer: Move enums and defines to header file fu.wei
2016-07-19 18:17 ` [PATCH v8 2/9] clocksource/drivers/arm_arch_timer: Add a new enum for spi type fu.wei
2016-07-19 18:17 ` [PATCH v8 3/9] clocksource/drivers/arm_arch_timer: Improve printk relevant code fu.wei
2016-07-19 18:17 ` [PATCH v8 4/9] clocksource/drivers/arm_arch_timer: use readq to get 64-bit CNTVCT fu.wei
2016-07-24 20:26 ` kbuild test robot
2016-07-25 9:02 ` Will Deacon
2016-07-25 15:50 ` Fu Wei
2016-07-25 22:47 ` Russell King - ARM Linux [this message]
2016-07-19 18:18 ` [PATCH v8 5/9] acpi/arm64: Add GTDT table parse driver fu.wei
2016-07-21 13:28 ` Rafael J. Wysocki
2016-07-22 17:57 ` Fu Wei
2016-07-19 18:18 ` [PATCH v8 6/9] clocksource/drivers/arm_arch_timer: Simplify ACPI support code fu.wei
2016-07-19 18:18 ` [PATCH v8 7/9] acpi/arm64: Add memory-mapped timer support in GTDT driver fu.wei
2016-07-21 12:40 ` Lorenzo Pieralisi
2016-07-25 16:06 ` Fu Wei
2016-07-19 18:18 ` [PATCH v8 8/9] clocksource/drivers/arm_arch_timer: Add GTDT support for memory-mapped timer fu.wei
2016-07-19 18:18 ` [PATCH v8 9/9] acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver fu.wei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160725224736.GT1041@n2100.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=al.stone@linaro.org \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=cov@codeaurora.org \
--cc=daniel.lezcano@linaro.org \
--cc=fu.wei@linaro.org \
--cc=graeme.gregory@linaro.org \
--cc=hanjun.guo@linaro.org \
--cc=harba@codeaurora.org \
--cc=jcm@redhat.com \
--cc=lenb@kernel.org \
--cc=leo.duran@amd.com \
--cc=linaro-acpi@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lorenzo.pieralisi@arm.com \
--cc=marc.zyngier@arm.com \
--cc=rjw@rjwysocki.net \
--cc=rruigrok@codeaurora.org \
--cc=sudeep.holla@arm.com \
--cc=tglx@linutronix.de \
--cc=timur@codeaurora.org \
--cc=wei@redhat.com \
--cc=will.deacon@arm.com \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).