*     hit the line between the clean operation and invalidate operation,
  *     resulting in the store being lost.
  *
+ * 752271: PL310 R3P0->R3P1-50REL0, fixed R3P2.
+ *     Affects: 8x64-bit (double fill) line fetches
+ *     double fill line fetches can fail to cause dirty data to be evicted
+ *     from the cache before the new data overwrites the second line.
+ *
  * 753970: PL310 R3P0, fixed R3P1.
  *     Affects: sync
  *     prevents merging writes after the sync operation, until another L2C
        struct outer_cache_fns *fns)
 {
        unsigned revision = cache_id & L2X0_CACHE_ID_RTL_MASK;
-       const char *errata[4];
+       const char *errata[8];
        unsigned n = 0;
 
        /* For compatibility */
                errata[n++] = "727915";
        }
 
+       if (revision >= L310_CACHE_ID_RTL_R3P0 &&
+           revision < L310_CACHE_ID_RTL_R3P2) {
+               u32 val = readl_relaxed(base + L2X0_PREFETCH_CTRL);
+               /* I don't think bit23 is required here... but iMX6 does so */
+               if (val & (BIT(30) | BIT(23))) {
+                       val &= ~(BIT(30) | BIT(23));
+                       l2c_write_sec(val, base, L2X0_PREFETCH_CTRL);
+                       errata[n++] = "752271";
+               }
+       }
+
        if (IS_ENABLED(CONFIG_PL310_ERRATA_753970) &&
            revision == L310_CACHE_ID_RTL_R3P0) {
                sync_reg_offset = L2X0_DUMMY_REG;