All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@mips.com>
To: Miodrag Dinic <Miodrag.Dinic@mips.com>
Cc: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>,
	"linux-mips@linux-mips.org" <linux-mips@linux-mips.org>,
	Goran Ferenc <Goran.Ferenc@mips.com>,
	Aleksandar Markovic <Aleksandar.Markovic@mips.com>,
	"David S. Miller" <davem@davemloft.net>,
	Douglas Leung <Douglas.Leung@mips.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Miodrag Dinic <miodrag.dinic@imgtec.com>,
	Paul Burton <paul.burton@imgtec.com>,
	Paul Burton <Paul.Burton@mips.com>,
	Petar Jovanovic <Petar.Jovanovic@mips.com>,
	Raghu Gandham <Raghu.Gandham@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	Randy Dunlap <rdunlap@infradead.org>
Subject: Re: [PATCH v6 5/5] MIPS: ranchu: Add Ranchu as a new generic-based board
Date: Thu, 2 Nov 2017 12:53:59 +0000	[thread overview]
Message-ID: <20171102125359.GN15235@jhogan-linux> (raw)
In-Reply-To: <48924BBB91ABDE4D9335632A6B179DD6A74206@MIPSMAIL01.mipstec.com>

On Thu, Nov 02, 2017 at 12:47:27PM +0000, Miodrag Dinic wrote:
> > > +static __init uint64_t read_rtc_time(void __iomem *base)
> > > +{
> > > +     u64 time_low;
> > > +     u64 time_high;
> > > +
> > > +     time_low = readl(base + GOLDFISH_TIMER_LOW);
> > > +     time_high = readl(base + GOLDFISH_TIMER_HIGH);
> > > +
> > > +     return (time_high << 32) | time_low;
> > 
> > What if high changes while reading this?
> > 
> > E.g.
> > TIMER_LOW        0x00000000 *0xffffffff*
> > TIMER_HIGH      *0x00000001* 0x00000000
> > 
> > You'd presumably get 0x00000001ffffffff.
> > 
> > Perhaps it should read HIGH before too, and retry if it has changed.
> 
> This was already discussed in some earlier posts. (https://patchwork.linux-mips.org/patch/16628/)
> Reading the low value first actually latches the high value,
> so it is safe to leave it this way. Here is the relevant RTC device
> implementation in QEMU:
> 
> static uint64_t goldfish_rtc_read(void *opaque, hwaddr offset, unsigned size)
> {
>     struct rtc_state *s = (struct rtc_state *)opaque;
>     switch(offset) {
>         case TIMER_TIME_LOW:
>             s->now_ns = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + s->time_base;
>             return s->now_ns;
>         case TIMER_TIME_HIGH:
>             return s->now_ns >> 32;

Ah okay. In that case the side effect of reading low clearly isn't
obvious enough reading the driver code and it needs a comment to clarify
the hardware behaviour :-)

Cheers
James

  reply	other threads:[~2017-11-02 12:55 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30 11:56 [PATCH v6 0/5] MIPS: Add virtual Ranchu board as a generic-based board Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 1/5] Documentation: Add device tree binding for Goldfish PIC driver Aleksandar Markovic
2017-10-30 11:56   ` Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 2/5] irqchip/irq-goldfish-pic: Add " Aleksandar Markovic
2017-10-31  2:26   ` Marc Zyngier
2017-10-31  2:26     ` Marc Zyngier
2017-11-01 14:34     ` Miodrag Dinic
2017-10-30 11:56 ` [PATCH v6 3/5] Documentation: Add device tree binding for Goldfish FB driver Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 4/5] video: goldfishfb: Add support for device tree bindings Aleksandar Markovic
2017-10-30 11:56   ` Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 5/5] MIPS: ranchu: Add Ranchu as a new generic-based board Aleksandar Markovic
2017-10-30 16:45   ` James Hogan
2017-10-30 16:45     ` James Hogan
2017-11-02 12:47     ` Miodrag Dinic
2017-11-02 12:47       ` Miodrag Dinic
2017-11-02 12:53       ` James Hogan [this message]
2017-11-01 17:58   ` Paul Burton
2017-11-01 17:58     ` Paul Burton
2017-11-02 13:47     ` Miodrag Dinic
2017-11-02 20:49       ` Paul Burton
2017-11-03 14:04         ` Miodrag Dinic

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=20171102125359.GN15235@jhogan-linux \
    --to=james.hogan@mips.com \
    --cc=Aleksandar.Markovic@mips.com \
    --cc=Douglas.Leung@mips.com \
    --cc=Goran.Ferenc@mips.com \
    --cc=Miodrag.Dinic@mips.com \
    --cc=Paul.Burton@mips.com \
    --cc=Petar.Jovanovic@mips.com \
    --cc=Raghu.Gandham@mips.com \
    --cc=aleksandar.markovic@rt-rk.com \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=mchehab@kernel.org \
    --cc=miodrag.dinic@imgtec.com \
    --cc=paul.burton@imgtec.com \
    --cc=ralf@linux-mips.org \
    --cc=rdunlap@infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.