[U-Boot] [PATCH 1/2] arm: Replace v7_maint_dcache_all(ARMV7_DCACHE_CLEAN_INVAL_ALL) with asm code

Hans de Goede hdegoede at redhat.com
Tue Apr 5 10:33:18 CEST 2016


Hi,

On 05-04-16 01:59, Tom Rini wrote:
> On Mon, Apr 04, 2016 at 08:31:48PM +0200, Hans de Goede wrote:
>
>> v7_maint_dcache_all() does not work reliable when build with gcc6,
>> see: https://bugzilla.redhat.com/show_bug.cgi?id=1318788
>
> So, I see on the bug you want to know if U-Boot is OK with this patch
> series being the fix.  At the high level, yes, borrowing code from the
> Linux Kernel is a good clean-up and I'd like to see this series could
> clean up things a little more and borrow from cache-v7.S when we could.
>
> But I'd also push back on the toolchain team.  Are they happy saying
> "that code is just too fragile, it's probably relying on undefined
> behavior, investigation concluded" ?

You should be able to reproduce the problems we're seeing on sunxi
yourself. Add a "noinline" to "v7_clean_inval_dcache_level_setway"
and then boot on say a lime2 you should see a data abort
after "Starting kernel" instead of, well, the kernel starting.

Given that just adding a noinline already breaks the code with
gcc-5 the "too fragile" thing was my own conclusion really.

I'll ask for some more info from the toolchain team in the bug
(note you're welcome to join the discussion in bugzilla yourself
  creating an account if you don't have one only requires an email
  address).

Regards,

Hans


More information about the U-Boot mailing list