linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] iommu: Header file cleanups
@ 2017-04-26 15:45 Joerg Roedel
  2017-04-26 15:45 ` [PATCH 1/4] iommu: Include device.h in iommu.h Joerg Roedel
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Joerg Roedel @ 2017-04-26 15:45 UTC (permalink / raw)
  To: iommu; +Cc: linux-kernel, Joerg Roedel

Hi,

here is a small patch-set to remove some header dependencies
from the IOMMU header files. The linux/iommu.h file does not
include linux/pci.h and the iommu trace-event headers
anymore.

For this the report_iommu_fault function was moved to
iommu.c and the place relying on above includes were fixed.

Please review.

Thanks,

	Joerg

Joerg Roedel (4):
  iommu: Include device.h in iommu.h
  iommu: Move report_iommu_fault() to iommu.c
  iommu: Remove pci.h include from trace/events/iommu.h
  iommu: Remove trace-events include from iommu.h

 arch/arm64/mm/dma-mapping.c              |  1 +
 drivers/iommu/fsl_pamu.h                 |  1 +
 drivers/iommu/iommu.c                    | 42 ++++++++++++++++++++++++++++
 drivers/iommu/rockchip-iommu.c           |  1 +
 drivers/iommu/tegra-smmu.c               |  1 +
 drivers/media/platform/mtk-vpu/mtk_vpu.c |  1 +
 include/linux/dma-iommu.h                |  1 +
 include/linux/iommu.h                    | 47 ++++----------------------------
 include/trace/events/iommu.h             |  1 -
 9 files changed, 53 insertions(+), 43 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/4] iommu: Include device.h in iommu.h
  2017-04-26 15:45 [PATCH 0/4] iommu: Header file cleanups Joerg Roedel
@ 2017-04-26 15:45 ` Joerg Roedel
  2017-04-26 15:45 ` [PATCH 2/4] iommu: Move report_iommu_fault() to iommu.c Joerg Roedel
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Joerg Roedel @ 2017-04-26 15:45 UTC (permalink / raw)
  To: iommu; +Cc: linux-kernel, Joerg Roedel

From: Joerg Roedel <jroedel@suse.de>

We make use of 'struct device' in iommu.h, so include
device.h to make it available explicitly.

Re-order the other headers while at it.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
 include/linux/iommu.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 2e4de0d..0232104 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -19,11 +19,13 @@
 #ifndef __LINUX_IOMMU_H
 #define __LINUX_IOMMU_H
 
+#include <linux/scatterlist.h>
+#include <linux/device.h>
+#include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/of.h>
-#include <linux/types.h>
-#include <linux/scatterlist.h>
+
 #include <trace/events/iommu.h>
 
 #define IOMMU_READ	(1 << 0)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/4] iommu: Move report_iommu_fault() to iommu.c
  2017-04-26 15:45 [PATCH 0/4] iommu: Header file cleanups Joerg Roedel
  2017-04-26 15:45 ` [PATCH 1/4] iommu: Include device.h in iommu.h Joerg Roedel
@ 2017-04-26 15:45 ` Joerg Roedel
  2017-04-26 15:45 ` [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h Joerg Roedel
  2017-04-26 15:45 ` [PATCH 4/4] iommu: Remove trace-events include from iommu.h Joerg Roedel
  3 siblings, 0 replies; 6+ messages in thread
From: Joerg Roedel @ 2017-04-26 15:45 UTC (permalink / raw)
  To: iommu; +Cc: linux-kernel, Joerg Roedel

From: Joerg Roedel <jroedel@suse.de>

The function is in no fast-path, there is no need for it to
be static inline in a header file. This also removes the
need to include iommu trace-points in iommu.h.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
 drivers/iommu/iommu.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/iommu.h | 41 ++---------------------------------------
 2 files changed, 44 insertions(+), 39 deletions(-)

diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 3b67144..f51e9c8 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -1652,6 +1652,48 @@ void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr)
 }
 EXPORT_SYMBOL_GPL(iommu_domain_window_disable);
 
+/**
+ * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
+ * @domain: the iommu domain where the fault has happened
+ * @dev: the device where the fault has happened
+ * @iova: the faulting address
+ * @flags: mmu fault flags (e.g. IOMMU_FAULT_READ/IOMMU_FAULT_WRITE/...)
+ *
+ * This function should be called by the low-level IOMMU implementations
+ * whenever IOMMU faults happen, to allow high-level users, that are
+ * interested in such events, to know about them.
+ *
+ * This event may be useful for several possible use cases:
+ * - mere logging of the event
+ * - dynamic TLB/PTE loading
+ * - if restarting of the faulting device is required
+ *
+ * Returns 0 on success and an appropriate error code otherwise (if dynamic
+ * PTE/TLB loading will one day be supported, implementations will be able
+ * to tell whether it succeeded or not according to this return value).
+ *
+ * Specifically, -ENOSYS is returned if a fault handler isn't installed
+ * (though fault handlers can also return -ENOSYS, in case they want to
+ * elicit the default behavior of the IOMMU drivers).
+ */
+int report_iommu_fault(struct iommu_domain *domain, struct device *dev,
+		       unsigned long iova, int flags)
+{
+	int ret = -ENOSYS;
+
+	/*
+	 * if upper layers showed interest and installed a fault handler,
+	 * invoke it.
+	 */
+	if (domain->handler)
+		ret = domain->handler(domain, dev, iova, flags,
+						domain->handler_token);
+
+	trace_io_page_fault(dev, iova, flags);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(report_iommu_fault);
+
 static int __init iommu_init(void)
 {
 	iommu_group_kset = kset_create_and_add("iommu_groups",
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 0232104..2a62593 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -338,46 +338,9 @@ extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
 				      phys_addr_t offset, u64 size,
 				      int prot);
 extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
-/**
- * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
- * @domain: the iommu domain where the fault has happened
- * @dev: the device where the fault has happened
- * @iova: the faulting address
- * @flags: mmu fault flags (e.g. IOMMU_FAULT_READ/IOMMU_FAULT_WRITE/...)
- *
- * This function should be called by the low-level IOMMU implementations
- * whenever IOMMU faults happen, to allow high-level users, that are
- * interested in such events, to know about them.
- *
- * This event may be useful for several possible use cases:
- * - mere logging of the event
- * - dynamic TLB/PTE loading
- * - if restarting of the faulting device is required
- *
- * Returns 0 on success and an appropriate error code otherwise (if dynamic
- * PTE/TLB loading will one day be supported, implementations will be able
- * to tell whether it succeeded or not according to this return value).
- *
- * Specifically, -ENOSYS is returned if a fault handler isn't installed
- * (though fault handlers can also return -ENOSYS, in case they want to
- * elicit the default behavior of the IOMMU drivers).
- */
-static inline int report_iommu_fault(struct iommu_domain *domain,
-		struct device *dev, unsigned long iova, int flags)
-{
-	int ret = -ENOSYS;
 
-	/*
-	 * if upper layers showed interest and installed a fault handler,
-	 * invoke it.
-	 */
-	if (domain->handler)
-		ret = domain->handler(domain, dev, iova, flags,
-						domain->handler_token);
-
-	trace_io_page_fault(dev, iova, flags);
-	return ret;
-}
+extern int report_iommu_fault(struct iommu_domain *domain, struct device *dev,
+			      unsigned long iova, int flags);
 
 static inline size_t iommu_map_sg(struct iommu_domain *domain,
 				  unsigned long iova, struct scatterlist *sg,
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h
  2017-04-26 15:45 [PATCH 0/4] iommu: Header file cleanups Joerg Roedel
  2017-04-26 15:45 ` [PATCH 1/4] iommu: Include device.h in iommu.h Joerg Roedel
  2017-04-26 15:45 ` [PATCH 2/4] iommu: Move report_iommu_fault() to iommu.c Joerg Roedel
@ 2017-04-26 15:45 ` Joerg Roedel
  2017-04-27 14:16   ` kbuild test robot
  2017-04-26 15:45 ` [PATCH 4/4] iommu: Remove trace-events include from iommu.h Joerg Roedel
  3 siblings, 1 reply; 6+ messages in thread
From: Joerg Roedel @ 2017-04-26 15:45 UTC (permalink / raw)
  To: iommu; +Cc: linux-kernel, Joerg Roedel

From: Joerg Roedel <jroedel@suse.de>

The include file does not need any PCI specifics, so remove
that include. Also fix the places that relied on it.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
 arch/arm64/mm/dma-mapping.c    | 1 +
 drivers/iommu/fsl_pamu.h       | 1 +
 drivers/iommu/rockchip-iommu.c | 1 +
 drivers/iommu/tegra-smmu.c     | 1 +
 include/linux/dma-iommu.h      | 1 +
 include/trace/events/iommu.h   | 1 -
 6 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 81cdb2e..982f85b 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -28,6 +28,7 @@
 #include <linux/dma-contiguous.h>
 #include <linux/vmalloc.h>
 #include <linux/swiotlb.h>
+#include <linux/pci.h>
 
 #include <asm/cacheflush.h>
 
diff --git a/drivers/iommu/fsl_pamu.h b/drivers/iommu/fsl_pamu.h
index aab723f..c3434f2 100644
--- a/drivers/iommu/fsl_pamu.h
+++ b/drivers/iommu/fsl_pamu.h
@@ -20,6 +20,7 @@
 #define __FSL_PAMU_H
 
 #include <linux/iommu.h>
+#include <linux/pci.h>
 
 #include <asm/fsl_pamu_stash.h>
 
diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
index 9afcbf7..0ba303a 100644
--- a/drivers/iommu/rockchip-iommu.c
+++ b/drivers/iommu/rockchip-iommu.c
@@ -8,6 +8,7 @@
 #include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/dma-iommu.h>
+#include <linux/dma-mapping.h>
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
index 9305964..eeb19f5 100644
--- a/drivers/iommu/tegra-smmu.c
+++ b/drivers/iommu/tegra-smmu.c
@@ -15,6 +15,7 @@
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
+#include <linux/dma-mapping.h>
 
 #include <soc/tegra/ahb.h>
 #include <soc/tegra/mc.h>
diff --git a/include/linux/dma-iommu.h b/include/linux/dma-iommu.h
index 5725c94..abd9465 100644
--- a/include/linux/dma-iommu.h
+++ b/include/linux/dma-iommu.h
@@ -20,6 +20,7 @@
 #include <asm/errno.h>
 
 #ifdef CONFIG_IOMMU_DMA
+#include <linux/dma-mapping.h>
 #include <linux/iommu.h>
 #include <linux/msi.h>
 
diff --git a/include/trace/events/iommu.h b/include/trace/events/iommu.h
index 2c7befb..99254ed 100644
--- a/include/trace/events/iommu.h
+++ b/include/trace/events/iommu.h
@@ -11,7 +11,6 @@
 #define _TRACE_IOMMU_H
 
 #include <linux/tracepoint.h>
-#include <linux/pci.h>
 
 struct device;
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/4] iommu: Remove trace-events include from iommu.h
  2017-04-26 15:45 [PATCH 0/4] iommu: Header file cleanups Joerg Roedel
                   ` (2 preceding siblings ...)
  2017-04-26 15:45 ` [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h Joerg Roedel
@ 2017-04-26 15:45 ` Joerg Roedel
  3 siblings, 0 replies; 6+ messages in thread
From: Joerg Roedel @ 2017-04-26 15:45 UTC (permalink / raw)
  To: iommu; +Cc: linux-kernel, Joerg Roedel

From: Joerg Roedel <jroedel@suse.de>

It is not needed there anymore. All places needing it are
fixed.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
---
 drivers/media/platform/mtk-vpu/mtk_vpu.c | 1 +
 include/linux/iommu.h                    | 2 --
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c
index 463b69c..e011c8d 100644
--- a/drivers/media/platform/mtk-vpu/mtk_vpu.c
+++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c
@@ -23,6 +23,7 @@
 #include <linux/of_reserved_mem.h>
 #include <linux/sched.h>
 #include <linux/sizes.h>
+#include <linux/dma-mapping.h>
 
 #include "mtk_vpu.h"
 
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 2a62593..407d8b8 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -26,8 +26,6 @@
 #include <linux/err.h>
 #include <linux/of.h>
 
-#include <trace/events/iommu.h>
-
 #define IOMMU_READ	(1 << 0)
 #define IOMMU_WRITE	(1 << 1)
 #define IOMMU_CACHE	(1 << 2) /* DMA cache coherency */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h
  2017-04-26 15:45 ` [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h Joerg Roedel
@ 2017-04-27 14:16   ` kbuild test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2017-04-27 14:16 UTC (permalink / raw)
  To: Joerg Roedel; +Cc: kbuild-all, iommu, linux-kernel, Joerg Roedel

[-- Attachment #1: Type: text/plain, Size: 3701 bytes --]

Hi Joerg,

[auto build test WARNING on linus/master]
[also build test WARNING on v4.11-rc8 next-20170426]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Joerg-Roedel/iommu-Header-file-cleanups/20170427-160734
config: tile-allmodconfig (attached as .config)
compiler: tilegx-linux-gcc (GCC) 4.6.2
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=tile 

All warnings (new ones prefixed by >>):

   In file included from drivers/infiniband//hw/qedr/main.c:39:0:
>> include/linux/qed/qede_roce.h:57:12: warning: 'struct pci_dev' declared inside parameter list [enabled by default]
>> include/linux/qed/qede_roce.h:57:12: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
>> drivers/infiniband//hw/qedr/main.c:905:2: warning: initialization from incompatible pointer type [enabled by default]
   drivers/infiniband//hw/qedr/main.c:905:2: warning: (near initialization for 'qedr_drv.add') [enabled by default]
--
   In file included from drivers/infiniband/hw/qedr/main.c:39:0:
>> include/linux/qed/qede_roce.h:57:12: warning: 'struct pci_dev' declared inside parameter list [enabled by default]
>> include/linux/qed/qede_roce.h:57:12: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
   drivers/infiniband/hw/qedr/main.c:905:2: warning: initialization from incompatible pointer type [enabled by default]
   drivers/infiniband/hw/qedr/main.c:905:2: warning: (near initialization for 'qedr_drv.add') [enabled by default]

vim +57 include/linux/qed/qede_roce.h

cee9fbd8 Ram Amrani 2016-10-01  41  	QEDE_DOWN,
cee9fbd8 Ram Amrani 2016-10-01  42  	QEDE_CHANGE_ADDR,
cee9fbd8 Ram Amrani 2016-10-01  43  	QEDE_CLOSE
cee9fbd8 Ram Amrani 2016-10-01  44  };
cee9fbd8 Ram Amrani 2016-10-01  45  
cee9fbd8 Ram Amrani 2016-10-01  46  struct qede_roce_event_work {
cee9fbd8 Ram Amrani 2016-10-01  47  	struct list_head list;
cee9fbd8 Ram Amrani 2016-10-01  48  	struct work_struct work;
cee9fbd8 Ram Amrani 2016-10-01  49  	void *ptr;
cee9fbd8 Ram Amrani 2016-10-01  50  	enum qede_roce_event event;
cee9fbd8 Ram Amrani 2016-10-01  51  };
cee9fbd8 Ram Amrani 2016-10-01  52  
cee9fbd8 Ram Amrani 2016-10-01  53  struct qedr_driver {
cee9fbd8 Ram Amrani 2016-10-01  54  	unsigned char name[32];
cee9fbd8 Ram Amrani 2016-10-01  55  
cee9fbd8 Ram Amrani 2016-10-01  56  	struct qedr_dev* (*add)(struct qed_dev *, struct pci_dev *,
cee9fbd8 Ram Amrani 2016-10-01 @57  				struct net_device *);
cee9fbd8 Ram Amrani 2016-10-01  58  
cee9fbd8 Ram Amrani 2016-10-01  59  	void (*remove)(struct qedr_dev *);
cee9fbd8 Ram Amrani 2016-10-01  60  	void (*notify)(struct qedr_dev *, enum qede_roce_event);
cee9fbd8 Ram Amrani 2016-10-01  61  };
cee9fbd8 Ram Amrani 2016-10-01  62  
cee9fbd8 Ram Amrani 2016-10-01  63  /* APIs for RoCE driver to register callback handlers,
cee9fbd8 Ram Amrani 2016-10-01  64   * which will be invoked when device is added, removed, ifup, ifdown
cee9fbd8 Ram Amrani 2016-10-01  65   */

:::::: The code at line 57 was first introduced by commit
:::::: cee9fbd8e2e9e713cd8bf227c6492fd8854de74b qede: Add qedr framework

:::::: TO: Ram Amrani <Ram.Amrani@caviumnetworks.com>
:::::: CC: David S. Miller <davem@davemloft.net>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 48063 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-27 14:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-26 15:45 [PATCH 0/4] iommu: Header file cleanups Joerg Roedel
2017-04-26 15:45 ` [PATCH 1/4] iommu: Include device.h in iommu.h Joerg Roedel
2017-04-26 15:45 ` [PATCH 2/4] iommu: Move report_iommu_fault() to iommu.c Joerg Roedel
2017-04-26 15:45 ` [PATCH 3/4] iommu: Remove pci.h include from trace/events/iommu.h Joerg Roedel
2017-04-27 14:16   ` kbuild test robot
2017-04-26 15:45 ` [PATCH 4/4] iommu: Remove trace-events include from iommu.h Joerg Roedel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).