Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp4555414imd; Tue, 30 Oct 2018 04:03:17 -0700 (PDT) X-Google-Smtp-Source: AJdET5dI1dS4HasADryAWDadA7ecszZkrHOOwZ3mwgjTtx/XPcIVKmLQeue8u1HfXf02Ij6GLy2m X-Received: by 2002:a17:902:854c:: with SMTP id d12-v6mr18098720plo.313.1540897397875; Tue, 30 Oct 2018 04:03:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540897397; cv=none; d=google.com; s=arc-20160816; b=K69UOHJ4wR571HD6ZNYE1ihRRjN/bTLF/2gy3HS1uw67REoVKwPgyWp8Tt9qu0xdoe TXe8rCeW+SmG42felIu+Udn4abLM143GNq4hGNk5NbPH29UCL5XL99Ataj5mVV5fVqmj qkVYm0dwHFU17F86vV+JNrX4E+ZDfpbj1C3/fa2m1GXxNRru1DuJ0PamjG9cNZ+QjZ8P KluBNOgtGwqIFu1R238MfT5I+BtEhfR+z/NsNhocOv+itJchCB8lhlTIS6Yc8rnIVCDH iWJ3iJBk/KEn/r/aE2kwKDYFkAHo7FaRe0QflRCKi60re8MQ4tJz2VLl6RrP4GtJnlWm GqHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=zIQkZA5bmYAGelLUtUQP//VQWQGWxYmVhNcTbgOfDrI=; b=P6vlnUiZyPMYYw1BnhkVjQMqpCft3jtR2121X7KP+scimmJmKJrXAum240EuE8E5p4 bbZSQetcgulIcQlBgAdq1muBq1UIg133YTg9sUvhmEuqfqRLsrs7YluNfEou2U8vsi0V T9e1WyYXRoNaZkUs6StX72sWTm9F+DP2L1kS6g888OyNjl6WmwwjUeD9VvzlIxNTmh7W dxxtvWnwcqdBtf8twrqaWobMjvzVycbSlmVOFIKtm0O8vdh4T7AZkj4k7LRuq7uUUpwv P3sf1WYhMWhjbfj+9lqMbpOnZ/ms18I+OjcOg1e2Os94+hxlP7knSNUnl5/XHV4vdLjB 1Idw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 32-v6si24585634pls.331.2018.10.30.04.02.46; Tue, 30 Oct 2018 04:03:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727637AbeJ3TzL (ORCPT + 99 others); Tue, 30 Oct 2018 15:55:11 -0400 Received: from ozlabs.org ([203.11.71.1]:34549 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727431AbeJ3TzL (ORCPT ); Tue, 30 Oct 2018 15:55:11 -0400 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 42kpSx6Szgz9s7h; Tue, 30 Oct 2018 22:02:09 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=popple.id.au From: Alistair Popple To: linuxppc-dev@lists.ozlabs.org Cc: linux-kernel@vger.kernel.org, mpe@ellerman.id.au, benh@kernel.crashing.org, hch@lst.de, Alistair Popple Subject: [PATCH] powerpc/npu-dma: Remove NPU DMA ops Date: Tue, 30 Oct 2018 22:02:03 +1100 Message-Id: <20181030110203.27257-1-alistair@popple.id.au> X-Mailer: git-send-email 2.11.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The NPU IOMMU is setup to mirror the parent PCIe device IOMMU setup. Therefore it does not make sense to call dma operations such as dma_map_page, etc. directly on these devices. The existing dma-ops simply print a warning if they are ever called, however this is unnecessary and the warnings are likely to go unnoticed. It is instead simpler to remove these operations and let the generic DMA code print warnings (eg. via a NULL pointer deref) in cases of buggy drivers attempting dma operations on NVLink devices. Signed-off-by: Alistair Popple --- arch/powerpc/platforms/powernv/npu-dma.c | 64 ++------------------------------ 1 file changed, 4 insertions(+), 60 deletions(-) diff --git a/arch/powerpc/platforms/powernv/npu-dma.c b/arch/powerpc/platforms/powernv/npu-dma.c index 6f60e0931922..75b935252981 100644 --- a/arch/powerpc/platforms/powernv/npu-dma.c +++ b/arch/powerpc/platforms/powernv/npu-dma.c @@ -102,63 +102,6 @@ struct pci_dev *pnv_pci_get_npu_dev(struct pci_dev *gpdev, int index) } EXPORT_SYMBOL(pnv_pci_get_npu_dev); -#define NPU_DMA_OP_UNSUPPORTED() \ - dev_err_once(dev, "%s operation unsupported for NVLink devices\n", \ - __func__) - -static void *dma_npu_alloc(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t flag, - unsigned long attrs) -{ - NPU_DMA_OP_UNSUPPORTED(); - return NULL; -} - -static void dma_npu_free(struct device *dev, size_t size, - void *vaddr, dma_addr_t dma_handle, - unsigned long attrs) -{ - NPU_DMA_OP_UNSUPPORTED(); -} - -static dma_addr_t dma_npu_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, - enum dma_data_direction direction, - unsigned long attrs) -{ - NPU_DMA_OP_UNSUPPORTED(); - return 0; -} - -static int dma_npu_map_sg(struct device *dev, struct scatterlist *sglist, - int nelems, enum dma_data_direction direction, - unsigned long attrs) -{ - NPU_DMA_OP_UNSUPPORTED(); - return 0; -} - -static int dma_npu_dma_supported(struct device *dev, u64 mask) -{ - NPU_DMA_OP_UNSUPPORTED(); - return 0; -} - -static u64 dma_npu_get_required_mask(struct device *dev) -{ - NPU_DMA_OP_UNSUPPORTED(); - return 0; -} - -static const struct dma_map_ops dma_npu_ops = { - .map_page = dma_npu_map_page, - .map_sg = dma_npu_map_sg, - .alloc = dma_npu_alloc, - .free = dma_npu_free, - .dma_supported = dma_npu_dma_supported, - .get_required_mask = dma_npu_get_required_mask, -}; - /* * Returns the PE assoicated with the PCI device of the given * NPU. Returns the linked pci device if pci_dev != NULL. @@ -270,10 +213,11 @@ static void pnv_npu_dma_set_32(struct pnv_ioda_pe *npe) rc = pnv_npu_set_window(npe, 0, gpe->table_group.tables[0]); /* - * We don't initialise npu_pe->tce32_table as we always use - * dma_npu_ops which are nops. + * NVLink devices use the same TCE table configuration as + * their parent device so drivers shouldn't be doing DMA + * operations directly on these devices. */ - set_dma_ops(&npe->pdev->dev, &dma_npu_ops); + set_dma_ops(&npe->pdev->dev, NULL); } /* -- 2.11.0