Re: [PATCH v5 3/5] arm64: arch_timer: Work around QorIQ Erratum A-008585

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, 2016-09-19 at 17:52 +0100, Mark Rutland wrote:
> > > > 
> > > > +static void fsl_a008585_set_sne(struct clock_event_device *clk)
> > > > +{
> > > > +#ifdef CONFIG_FSL_ERRATUM_A008585
> > > > +	if (!static_branch_unlikely(&arch_timer_read_ool_enabled))
> > > > +		return;
> > > > +
> > > > +	if (arch_timer_uses_ppi == VIRT_PPI)
> > > > +		clk->set_next_event =
> > > > fsl_a008585_set_next_event_virt;
> > > > +	else
> > > > +		clk->set_next_event =
> > > > fsl_a008585_set_next_event_phys;
> > > > +#endif
> > > > +}
> > > > +
> > > I'm not keen on the magic hook to reset the function pointers, and the
> > > additional phys/virt stubs seem pointless. Instead, can we fold this
> > > into the existing set_next_event? e.g. have that do:
> > > 
> > > 	if (needs_fsl_a008585_workaround() {
> > > 		fsl_a008585_set_next_event(access, evt, clk);
> > > 		return;
> > > 	}
> > OK.  I had been trying to avoid messing with the standard set_next_event,
> > but
> > it doesn't matter as much now that static branches are being used.  In
> > that
> > case we can avoid duplicating the ctrl code, and only replace the tval
> > write.
> Reconsidering my suggestion, I realise this will also affect the MMIO
> timers, so that doesn't work.
> 
> So for the moment, I guess we have to keep fsl_a008585_set_next_event().

What is the problem with MMIO timers?  needs_fsl_a008585_workaround() should
always be false for them.

-Scott

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux