Re: [PATCH 6.1.y] dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: bbcc1c83f343e580c3aa1f2a8593343bf7b55bba

WARNING: Author mismatch between patch and upstream commit:
Backport author: <jianqi.ren.cn@xxxxxxxxxxxxx>
Commit author: Kory Maincent <kory.maincent@xxxxxxxxxxx>


Status in newer kernel trees:
6.12.y | Present (exact SHA1)
6.6.y | Present (different SHA1: d24fe6d5a1cf)
6.1.y | Not found

Note: The patch differs from the upstream commit:
---
1:  bbcc1c83f343e ! 1:  da1ca4c28e390 dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup
    @@ Metadata
      ## Commit message ##
         dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup
     
    +    [ Upstream commit bbcc1c83f343e580c3aa1f2a8593343bf7b55bba ]
    +
         The Linked list element and pointer are not stored in the same memory as
         the eDMA controller register. If the doorbell register is toggled before
         the full write of the linked list a race condition error will occur.
    @@ Commit message
         Signed-off-by: Kory Maincent <kory.maincent@xxxxxxxxxxx>
         Link: https://lore.kernel.org/r/20240129-b4-feature_hdma_mainline-v7-6-8e8c1acb7a46@xxxxxxxxxxx
         Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx>
    +    Signed-off-by: Jianqi Ren <jianqi.ren.cn@xxxxxxxxxxxxx>
     
      ## drivers/dma/dw-edma/dw-edma-v0-core.c ##
     @@ drivers/dma/dw-edma/dw-edma-v0-core.c: static void dw_edma_v0_core_write_chunk(struct dw_edma_chunk *chunk)
    - 	dw_edma_v0_write_ll_link(chunk, i, control, chunk->ll_region.paddr);
    + 	#endif /* CONFIG_64BIT */
      }
      
     +static void dw_edma_v0_sync_ll_data(struct dw_edma_chunk *chunk)
    @@ drivers/dma/dw-edma/dw-edma-v0-core.c: static void dw_edma_v0_core_write_chunk(s
     +	 * last MWr TLP is completed
     +	 */
     +	if (!(chunk->chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL))
    -+		readl(chunk->ll_region.vaddr.io);
    ++		readl(chunk->ll_region.vaddr);
     +}
     +
    - static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)
    + void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)
      {
      	struct dw_edma_chan *chan = chunk->chan;
    -@@ drivers/dma/dw-edma/dw-edma-v0-core.c: static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)
    +@@ drivers/dma/dw-edma/dw-edma-v0-core.c: void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)
      		SET_CH_32(dw, chan->dir, chan->id, llp.msb,
      			  upper_32_bits(chunk->ll_region.paddr));
      	}
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.1.y        |  Success    |  Success   |




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux