PL310 errata workarounds

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Mar 14 11:01:10 EDT 2014


On Fri, Mar 14, 2014 at 02:48:35PM +0000, Russell King - ARM Linux wrote:
> While looking at the now rather horrid L2C-2x0 code, there's some really
> serious questions that have to be asked about some of these errata.
> 
> 588369 affects PL310 up to and including R1P0, but is fixed in R2P0.
> 	This erratum requires a clean+invalidate request to be split into
> 	a separate clean request followed by an invalidate request.  This
> 	must be done with the debug register set to 0x03.
> 
> 	If the debug register is not set to 0x03, then it's effectively
> 	a separate clean operation followed by a separate invalidate
> 	operation.
> 
> 727915 affects PL310 up to and including R3P0, but is fixed in R3P1.
> 	This erratum concerns writes which may be discarded as a result
> 	of a clean+invalidate request, particularly when a write hits
> 	the cache line being requested between the clean stage and the
> 	invalidate stage.
> 
> Now, let's say that we have a PL310 R3P3 cache.  Linux is configured with
> both workarounds enabled.  This has the effect that we never use the
> clean+invalidate request.
> 
> However, Rob's patch in 74ddcdb868a8 (ARM: 7608/1: l2x0: Only set
> .set_debug on PL310 r3p0 and earlier) has the effect that we no longer
> to the debug dance on such a cache.
> 
> This means we're still splitting the clean+invalidate sequence into two
> separate operations, so there's room for a write to hit the cache line
> between the two operations and, therefore, be lost.
> 
> So, do we actually care about 727915, because through applying Rob's
> change, we've effectively re-exposed the problem which this erratum
> refers to on all L2 cache controllers where this is actually fixed,
> and it's been like this for 14 months without any reported issue.

Another point here is... we don't even need 727915 at all: 727915 is
about the clean+invalidate by WAY request, not clean+invalidate by PA.
So really we should rip out references to this erratum because it's
not applicable.

-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.



More information about the linux-arm-kernel mailing list