mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 01:08:13 -04:00
ntb: Store original DMA address for future release
The DMA API requires that dma_free_attrs receive the exact dma_handle
originally returned by the allocation function. Do not modify it.
Fixes: fc5d1829f9 ("NTB: transport: Try harder to alloc an aligned MW buffer")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20260501-dma-attrs-debug-v2-1-8dbac75cd501@nvidia.com
This commit is contained in:
committed by
Marek Szyprowski
parent
254f49634e
commit
da6d997ac5
@@ -223,6 +223,7 @@ struct ntb_transport_mw {
|
||||
void *alloc_addr;
|
||||
void *virt_addr;
|
||||
dma_addr_t dma_addr;
|
||||
dma_addr_t original_dma_addr;
|
||||
};
|
||||
|
||||
struct ntb_transport_client_dev {
|
||||
@@ -766,7 +767,7 @@ static void ntb_free_mw(struct ntb_transport_ctx *nt, int num_mw)
|
||||
|
||||
ntb_mw_clear_trans(nt->ndev, PIDX, num_mw);
|
||||
dma_free_coherent(dma_dev, mw->alloc_size,
|
||||
mw->alloc_addr, mw->dma_addr);
|
||||
mw->alloc_addr, mw->original_dma_addr);
|
||||
mw->xlat_size = 0;
|
||||
mw->buff_size = 0;
|
||||
mw->alloc_size = 0;
|
||||
@@ -802,6 +803,7 @@ static int ntb_alloc_mw_buffer(struct ntb_transport_mw *mw,
|
||||
return -ENOMEM;
|
||||
}
|
||||
virt_addr = alloc_addr;
|
||||
mw->original_dma_addr = dma_addr;
|
||||
|
||||
/*
|
||||
* we must ensure that the memory address allocated is BAR size
|
||||
|
||||
Reference in New Issue
Block a user