• Palmer Dabbelt's avatar
    Merge patch series "Add non-coherent DMA support for AX45MP" · c23be918
    Palmer Dabbelt authored
    Prabhakar <prabhakar.csengg@gmail.com> says:
    
    From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    
    non-coherent DMA support for AX45MP
    ====================================
    
    On the Andes AX45MP core, cache coherency is a specification option so it
    may not be supported. In this case DMA will fail. To get around with this
    issue this patch series does the below:
    
    1] Andes alternative ports is implemented as errata which checks if the
    IOCP is missing and only then applies to CMO errata. One vendor specific
    SBI EXT (ANDES_SBI_EXT_IOCP_SW_WORKAROUND) is implemented as part of
    errata.
    
    Below are the configs which Andes port provides (and are selected by
    RZ/Five):
          - ERRATA_ANDES
          - ERRATA_ANDES_CMO
    
    OpenSBI patch supporting ANDES_SBI_EXT_IOCP_SW_WORKAROUND SBI is now
    part v1.3 release.
    
    2] Andes AX45MP core has a Programmable Physical Memory Attributes (PMA)
    block that allows dynamic adjustment of memory attributes in the runtime.
    It contains a configurable amount of PMA entries implemented as CSR
    registers to control the attributes of memory locations in interest.
    OpenSBI configures the PMA regions as required and creates a reserve memory
    node and propagates it to the higher boot stack.
    
    Currently OpenSBI (upstream) configures the required PMA region and passes
    this a shared DMA pool to Linux.
    
        reserved-memory {
            #address-cells = <2>;
            #size-cells = <2>;
            ranges;
    
            pma_resv0@58000000 {
                compatible = "shared-dma-pool";
                reg = <0x0 0x58000000 0x0 0x08000000>;
                no-map;
                linux,dma-default;
            };
        };
    
    The above shared DMA pool gets appended to Linux DTB so the DMA memory
    requests go through this region.
    
    3] We provide callbacks to synchronize specific content between memory and
    cache.
    
    4] RZ/Five SoC selects the below configs
            - AX45MP_L2_CACHE
            - DMA_GLOBAL_POOL
            - ERRATA_ANDES
            - ERRATA_ANDES_CMO
    
    ----------x---------------------x--------------------x---------------x----
    
    * b4-shazam-merge:
      soc: renesas: Kconfig: Select the required configs for RZ/Five SoC
      cache: Add L2 cache management for Andes AX45MP RISC-V core
      dt-bindings: cache: andestech,ax45mp-cache: Add DT binding documentation for L2 cache controller
      riscv: mm: dma-noncoherent: nonstandard cache operations support
      riscv: errata: Add Andes alternative ports
      riscv: asm: vendorid_list: Add Andes Technology to the vendors list
    
    Link: https://lore.kernel.org/r/20230818135723.80612-1-prabhakar.mahadev-lad.rj@bp.renesas.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    c23be918
dma-noncoherent.c 4.09 KB