[GIT PULL] Broadcom SoC changes for 4.2

Arnd Bergmann arnd at arndb.de
Wed May 20 13:59:12 PDT 2015

On Wednesday 13 May 2015 15:34:13 Florian Fainelli wrote:
>  arch/arm/include/asm/vfp.h          |   9 ++
>  arch/arm/mach-bcm/Makefile          |   7 +-
>  arch/arm/mach-bcm/bcm63xx_headsmp.S |  23 ++++
>  arch/arm/mach-bcm/bcm63xx_pmb.c     | 221 ++++++++++++++++++++++++++++++++++++
>  arch/arm/mach-bcm/bcm63xx_smp.c     | 170 +++++++++++++++++++++++++++
>  arch/arm/mach-bcm/bcm63xx_smp.h     |   9 ++
>  arch/arm/vfp/vfpmodule.c            |  13 +++
>  include/linux/bcm63xx_pmb.h         |  76 +++++++++++++

And taken out again, sorry.

I got a build error in include/linux/bcm63xx_pmb.h and that triggered me to take
a closer look. I tried to fix up the trivial error first, but then noticed
several other things wrong with bcm63xx_pmb.h:

- it is in include/linux/ where it clearly does not belong, as no other component
  should be including it. Even the function documentation in there mentions that
  one must hold the pmb_lock before calling it, and that is defined statically
  arch/arm/mach-bcm/bcm63xx_pmb.c, so it's impossible for other code to use.
  Just move it all into bcm63xx_pmb.c.

- the code uses __raw_readl/__raw_writel for MMIO register access, which is
  broken on big-endian machines. You need to use readl_relaxed()/write_relaxed()
  or readl()/writel() instead. If you use the latter, you can also avoid
  introducing extra barriers.

- finally, a heads-up for the "[PATCH] ARM: v7 setup function should invalidate
  L1 cache" patch that Russell submitted. I think your bcm63xx_headsmp.S
  function is completely fine for now, but with his patch applied, it will
  no longer be needed and you should follow up with a patch to replace it
  with a direct branch to secondary_startup.


More information about the linux-arm-kernel mailing list