1. 14 6月, 2013 1 次提交
    • T
      arm: mvebu: remove dependency of SMP init on static I/O mapping · b21dcafe
      Thomas Petazzoni 提交于
      The ->smp_init_cpus() function is called very early during boot, at a
      point where dynamic I/O mappings are not yet possible. However, in the
      Armada 370/XP implementation of this function, we have to get the
      number of CPUs. We used to do that by accessing a hardware register,
      which requires relying on a static I/O mapping set up by
      ->map_io(). Not only this requires hardcoding a virtual address, but
      it also prevents us from removing the static I/O mapping.
      
      So this commit changes the way used to get the number of CPUs: we now
      use the Device Tree, which is a representation of the hardware, and
      provides us the number of available CPUs. This is also more accurate,
      because it potentially allows to boot the Linux kernel on only a
      number of CPUs given by the Device Tree, instead of unconditionally on
      all CPUs.
      
      As a consequence, the coherency_get_cpu_count() function becomes no
      longer used, so we remove it.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NJason Cooper <jason@lakedaemon.net>
      b21dcafe
  2. 22 11月, 2012 1 次提交
    • G
      arm: mvebu: Add hardware I/O Coherency support · e60304f8
      Gregory CLEMENT 提交于
      Armada 370 and XP come with an unit called coherency fabric. This unit
      allows to use the Armada 370/XP as a nearly coherent architecture. The
      coherency mechanism uses snoop filters to ensure the coherency between
      caches, DRAM and devices. This mechanism needs a synchronization
      barrier which guarantees that all the memory writes initiated by the
      devices have reached their target and do not reside in intermediate
      write buffers. That's why the architecture is not totally coherent and
      we need to provide our own functions for some DMA operations.
      
      Beside the use of the coherency fabric, the device units will have to
      set the attribute flag of the decoding address window to select the
      accurate coherency process for the memory transaction. This is done
      each device driver programs the DRAM address windows. The value of the
      attribute set by the driver is retrieved through the
      orion_addr_map_cfg struct filled during the early initialization of
      the platform.
      Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Reviewed-by: NYehuda Yitschak <yehuday@marvell.com>
      Acked-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      e60304f8
  3. 21 11月, 2012 1 次提交