On Tue, Sep 13, 2016 at 10:14:20AM +0300, Riku Voipio wrote:
> Hi,

Hi,

> As painfully found out by mono team, if big/little cores have
> different cache line sizes, __clear_cache doesn't work as expected.
> This affects any home-grown cache flushing mechanism as well.
> 
> http://www.mono-project.com/news/2016/09/12/arm64-icache/
>
> protip, if you suspect your application issues might related to
> big.LITTLE, use taskset(1) or hwloc-bind(1) to tie the process to
> either big or little cluster (or just a single core).

While this is a real bug, the conclusions in the article aren't quite
right, so I'd like to clarify a few things before this spreads further:

* This only affects a single SoC, and is not a generic issue with
  big.LITTLE. Correctly-written software following the sequences in the
  ARM ARM will work on all other platforms.

* This mismatch is in violation of the architecture (i.e. it is a
  hardware bug), so hopefully more instances of this will not be seen in
  future.

* Upstream, there is a kernel patch [1] in discussion, which will work
  around this issue in the kernel, transparently to userspace.

* Setting affinity and/or caching the minimum value in userspace is racy
  with hotplug (as used on Android for power management). While useful
  for testing it does not solve the issue.

Thanks,
Mark.

[1] 
http://lists.infradead.org/pipermail/linux-arm-kernel/2016-September/455679.html
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to