[PATCH v2 00/10] ARM: mvebu: Hardware coherency support for Armada 375 and 38x

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Fri Apr 4 06:53:12 PDT 2014

Jason, Gregory, Andrew, Sebastian,

This set of patches add hardware coherency support for the new Armada
375 and Armada 38x SoCs.

Changes since v1:

 * Rebased on top of current linux-next, and therefore updated to take
   into account the changes in mach-mvebu, such as Kirkwood/Dove
   integration. A new version will be sent as soon as 3.15-rc1 is

 * Removed a debugging message from coherency_type() which was being
   displayed every time this function was called, to say "Initializing
   coherency fabric", which was incorrect.

 * Delay the initialization of the XOR-based coherency workaround for
   Armada 375 into the postcore_initcall(), before the bus notifier
   gets registered. This solves two problems: 1/ the
   of_update_property() cannot be done as early as it could be done in
   earlier kernels, and 2/ it avoids having to initialize the MBus
   driver before the coherency fabric.

 * Added a warning message when the XOR-based coherency workaround for
   Armada 375 is enabled, so that the user at least has a trace in the
   kernel logs explaining why a XOR engine is not available.

The patches can also be grabbed from:


The patch set can be divided in three sections:

 * Patches 1, 2, 3 and 4 prepare the introduction of the support for
   new SoC in the existing coherency code.

   The main change is that the mvebu-mbus driver no longer pokes into
   the Device Tree to find whether hardware I/O coherency is available
   or not: this information is passed as argument to the mvebu-mbus
   initialization function. This avoids changing the mvebu-mbus driver
   to add the compatible strings of all possible coherency fabrics,
   and also avoids encoding specific conditions in the mvebu-mbus
   driver: on Armada 375 and 38x, the hardware I/O coherency can only
   be enabled in SMP mode.

   These preparation patches had already been sent in the past
   (http://permalink.gmane.org/gmane.linux.ports.arm.kernel/290780). This
   round has taken into account the comments I had received on this
   early version.

 * Patches 5, 6, 7 and 8 add the coherency support itself. Patch 4
   enables the SCU, patch 5 adds I/O coherency support for 375, patch
   6 adds a major workaround to make coherency support actually work
   on early 375 SOCs and patch 7 adds I/O coherency support for 38x.

 * Patches 9 and 10 add the necessary Device Tree informations to
   enable the coherency.

Best regards,


Thomas Petazzoni (10):
  ARM: mvebu: prepare coherency code to support more SOCs
  ARM: mvebu: add a coherency_available() call
  bus: mvebu: pass the coherency availability information at init time
  ARM: mvebu: ARM: mvebu: use of_find_matching_node_and_match() in
  ARM: mvebu: enable the ARM SCU on Armada 375 and Armada 38x
  ARM: mvebu: add Armada 375 support to the coherency code
  ARM: mvebu: implement Armada 375 coherency workaround
  ARM: mvebu: add Armada 38x support to the coherency code
  ARM: mvebu: enable the coherency fabric on Armada 375
  ARM: mvebu: enable the coherency fabric on Armada 38x

 .../devicetree/bindings/arm/coherency-fabric.txt   |  32 ++-
 arch/arm/boot/dts/armada-375.dtsi                  |  10 +
 arch/arm/boot/dts/armada-38x.dtsi                  |  10 +
 arch/arm/mach-kirkwood/board-dt.c                  |   2 +-
 arch/arm/mach-mvebu/Kconfig                        |   2 +
 arch/arm/mach-mvebu/board-v7.c                     |  21 +-
 arch/arm/mach-mvebu/coherency.c                    | 262 +++++++++++++++++++--
 arch/arm/mach-mvebu/coherency.h                    |   1 +
 arch/arm/mach-mvebu/dove.c                         |   2 +-
 arch/arm/mach-mvebu/kirkwood.c                     |   2 +-
 drivers/bus/mvebu-mbus.c                           |  11 +-
 include/linux/mbus.h                               |   2 +-
 12 files changed, 315 insertions(+), 42 deletions(-)


More information about the linux-arm-kernel mailing list