PCI/P2PDMA: Apply bus offset correctly in DMA address calculation
The bus offset is bus address - physical address, so the calculation in __pci_p2pdma_map_sg should be: bus address = physical address + bus offset. Correct the dma_address computation in __pci_p2pdma_map_sg(). Link: https://lore.kernel.org/r/20210909032528.24517-1-wanglu@dapustor.com Signed-off-by: Wang Lu <wanglu@dapustor.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
This commit is contained in:
parent
e4e737bb5c
commit
3a19407913
@ -874,7 +874,7 @@ static int __pci_p2pdma_map_sg(struct pci_p2pdma_pagemap *p2p_pgmap,
|
||||
int i;
|
||||
|
||||
for_each_sg(sg, s, nents, i) {
|
||||
s->dma_address = sg_phys(s) - p2p_pgmap->bus_offset;
|
||||
s->dma_address = sg_phys(s) + p2p_pgmap->bus_offset;
|
||||
sg_dma_len(s) = s->length;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user