Skip to content

Commit

Permalink
PCI/P2PDMA: Fix build without DMA ops
Browse files Browse the repository at this point in the history
My commit to make DMA ops support optional missed the reference in
the p2pdma code.  And while the build bot didn't manage to find a config
where this can happen, Matthew did.  Fix this by replacing two IS_ENABLED
checks with ifdefs.

Fixes: 2f9237d ("dma-mapping: make support for dma ops optional")
Link: https://lore.kernel.org/r/20200810124843.1532738-1-hch@lst.de
Reported-by: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
  • Loading branch information
Christoph Hellwig authored and Bjorn Helgaas committed Aug 17, 2020
1 parent 9123e3a commit 7c2308f
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions drivers/pci/p2pdma.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,13 +556,14 @@ int pci_p2pdma_distance_many(struct pci_dev *provider, struct device **clients,
return -1;

for (i = 0; i < num_clients; i++) {
if (IS_ENABLED(CONFIG_DMA_VIRT_OPS) &&
clients[i]->dma_ops == &dma_virt_ops) {
#ifdef CONFIG_DMA_VIRT_OPS
if (clients[i]->dma_ops == &dma_virt_ops) {
if (verbose)
dev_warn(clients[i],
"cannot be used for peer-to-peer DMA because the driver makes use of dma_virt_ops\n");
return -1;
}
#endif

pci_client = find_parent_pci_dev(clients[i]);
if (!pci_client) {
Expand Down Expand Up @@ -842,9 +843,10 @@ static int __pci_p2pdma_map_sg(struct pci_p2pdma_pagemap *p2p_pgmap,
* this should never happen because it will be prevented
* by the check in pci_p2pdma_distance_many()
*/
if (WARN_ON_ONCE(IS_ENABLED(CONFIG_DMA_VIRT_OPS) &&
dev->dma_ops == &dma_virt_ops))
#ifdef CONFIG_DMA_VIRT_OPS
if (WARN_ON_ONCE(dev->dma_ops == &dma_virt_ops))
return 0;
#endif

for_each_sg(sg, s, nents, i) {
paddr = sg_phys(s);
Expand Down

0 comments on commit 7c2308f

Please sign in to comment.