1. 02 May, 2022 1 commit
    • Sven Peter's avatar
      soc: apple: Add SART driver · b170143a
      Sven Peter authored
      The NVMe co-processor on the Apple M1 uses a DMA address filter called
      SART for some DMA transactions. This adds a simple driver used to
      configure the memory regions from which DMA transactions are allowed.
      
      Unlike a real IOMMU, SART does not support any pagetables and can't be
      implemented inside the IOMMU subsystem using iommu_ops.
      
      It also can't be implemented using dma_map_ops since not all DMA
      transactions of the NVMe controller are filtered by SART.
      Instead, most buffers have to be registered using the integrated NVMe
      IOMMU and we can't have two separate dma_map_ops implementations for a
      single device.
      Co-developed-by: default avatarHector Martin <marcan@marcan.st>
      Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarHector Martin <marcan@marcan.st>
      Signed-off-by: default avatarSven Peter <sven@svenpeter.dev>
      b170143a
  2. 01 May, 2022 3 commits
    • Sven Peter's avatar
      dt-bindings: iommu: Add Apple SART DMA address filter · a12d521f
      Sven Peter authored
      Apple SoCs such as the M1 come with a simple DMA address filter called
      SART. Unlike a real IOMMU no pagetables can be configured but instead
      DMA transactions can be allowed for up to 16 paddr regions. The consumer
      also needs special support since not all DMA allocations have to be
      added to this filter.
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarSven Peter <sven@svenpeter.dev>
      a12d521f
    • Sven Peter's avatar
      soc: apple: Add RTKit IPC library · 9bd1d9a0
      Sven Peter authored
      Apple SoCs such as the M1 come with multiple embedded co-processors
      running proprietary firmware. Communication with those is established
      over a simple mailbox using the RTKit IPC protocol.
      
      This cannot be implemented inside the mailbox subsystem since on top
      of communication over channels we also need support for starting,
      hibernating and resetting these co-processors. We also need to
      handle shared memory allocations differently depending on the
      co-processor and don't want to split that across multiple drivers.
      Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarSven Peter <sven@svenpeter.dev>
      9bd1d9a0
    • Sven Peter's avatar
      soc: apple: Always include Makefile · cbb0f001
      Sven Peter authored
      We want to allow the code inside drivers/soc/apple to be compiled with
      COMPILE_TEST but this will currently result in linking errors because
      ARCH_APPLE is not set and make will never recurse into
      drivers/soc/apple.
      Let's just unconditionally recurse into apple/ since all drivers
      in there are guarded by config options anyways.
      Signed-off-by: default avatarSven Peter <sven@svenpeter.dev>
      cbb0f001
  3. 03 Apr, 2022 8 commits
  4. 02 Apr, 2022 28 commits