Skip to content

Commit b77cf11

Browse files
robherringjoergroedel
authored andcommitted
iommu: Allow io-pgtable to be used outside of drivers/iommu/
Move io-pgtable.h to include/linux/ and export alloc_io_pgtable_ops and free_io_pgtable_ops. This enables drivers outside drivers/iommu/ to use the page table library. Specifically, some ARM Mali GPUs use the ARM page table formats. Cc: Will Deacon <will.deacon@arm.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: Joerg Roedel <joro@8bytes.org> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc: Rob Clark <robdclark@gmail.com> Cc: linux-arm-kernel@lists.infradead.org Cc: iommu@lists.linux-foundation.org Cc: linux-mediatek@lists.infradead.org Cc: linux-arm-msm@vger.kernel.org Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent c61a463 commit b77cf11

File tree

10 files changed

+11
-15
lines changed

10 files changed

+11
-15
lines changed

drivers/iommu/arm-smmu-v3.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <linux/dma-iommu.h>
1919
#include <linux/err.h>
2020
#include <linux/interrupt.h>
21+
#include <linux/io-pgtable.h>
2122
#include <linux/iommu.h>
2223
#include <linux/iopoll.h>
2324
#include <linux/init.h>
@@ -32,8 +33,6 @@
3233

3334
#include <linux/amba/bus.h>
3435

35-
#include "io-pgtable.h"
36-
3736
/* MMIO registers */
3837
#define ARM_SMMU_IDR0 0x0
3938
#define IDR0_ST_LVL GENMASK(28, 27)

drivers/iommu/arm-smmu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <linux/interrupt.h>
4040
#include <linux/io.h>
4141
#include <linux/io-64-nonatomic-hi-lo.h>
42+
#include <linux/io-pgtable.h>
4243
#include <linux/iommu.h>
4344
#include <linux/iopoll.h>
4445
#include <linux/init.h>
@@ -56,7 +57,6 @@
5657
#include <linux/amba/bus.h>
5758
#include <linux/fsl/mc.h>
5859

59-
#include "io-pgtable.h"
6060
#include "arm-smmu-regs.h"
6161

6262
#define ARM_MMU500_ACTLR_CPRE (1 << 1)

drivers/iommu/io-pgtable-arm-v7s.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <linux/atomic.h>
3636
#include <linux/dma-mapping.h>
3737
#include <linux/gfp.h>
38+
#include <linux/io-pgtable.h>
3839
#include <linux/iommu.h>
3940
#include <linux/kernel.h>
4041
#include <linux/kmemleak.h>
@@ -45,8 +46,6 @@
4546

4647
#include <asm/barrier.h>
4748

48-
#include "io-pgtable.h"
49-
5049
/* Struct accessors */
5150
#define io_pgtable_to_data(x) \
5251
container_of((x), struct arm_v7s_io_pgtable, iop)

drivers/iommu/io-pgtable-arm.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include <linux/atomic.h>
2424
#include <linux/bitops.h>
25+
#include <linux/io-pgtable.h>
2526
#include <linux/iommu.h>
2627
#include <linux/kernel.h>
2728
#include <linux/sizes.h>
@@ -31,8 +32,6 @@
3132

3233
#include <asm/barrier.h>
3334

34-
#include "io-pgtable.h"
35-
3635
#define ARM_LPAE_MAX_ADDR_BITS 52
3736
#define ARM_LPAE_S2_MAX_CONCAT_PAGES 16
3837
#define ARM_LPAE_MAX_LEVELS 4

drivers/iommu/io-pgtable.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@
1919
*/
2020

2121
#include <linux/bug.h>
22+
#include <linux/io-pgtable.h>
2223
#include <linux/kernel.h>
2324
#include <linux/types.h>
2425

25-
#include "io-pgtable.h"
26-
2726
static const struct io_pgtable_init_fns *
2827
io_pgtable_init_table[IO_PGTABLE_NUM_FMTS] = {
2928
#ifdef CONFIG_IOMMU_IO_PGTABLE_LPAE
@@ -61,6 +60,7 @@ struct io_pgtable_ops *alloc_io_pgtable_ops(enum io_pgtable_fmt fmt,
6160

6261
return &iop->ops;
6362
}
63+
EXPORT_SYMBOL_GPL(alloc_io_pgtable_ops);
6464

6565
/*
6666
* It is the IOMMU driver's responsibility to ensure that the page table
@@ -77,3 +77,4 @@ void free_io_pgtable_ops(struct io_pgtable_ops *ops)
7777
io_pgtable_tlb_flush_all(iop);
7878
io_pgtable_init_table[iop->fmt]->free(iop);
7979
}
80+
EXPORT_SYMBOL_GPL(free_io_pgtable_ops);

drivers/iommu/ipmmu-vmsa.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <linux/init.h>
1616
#include <linux/interrupt.h>
1717
#include <linux/io.h>
18+
#include <linux/io-pgtable.h>
1819
#include <linux/iommu.h>
1920
#include <linux/of.h>
2021
#include <linux/of_device.h>
@@ -35,8 +36,6 @@
3536
#define arm_iommu_detach_device(...) do {} while (0)
3637
#endif
3738

38-
#include "io-pgtable.h"
39-
4039
#define IPMMU_CTX_MAX 8
4140

4241
struct ipmmu_features {

drivers/iommu/msm_iommu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <linux/platform_device.h>
2424
#include <linux/errno.h>
2525
#include <linux/io.h>
26+
#include <linux/io-pgtable.h>
2627
#include <linux/interrupt.h>
2728
#include <linux/list.h>
2829
#include <linux/spinlock.h>
@@ -37,7 +38,6 @@
3738

3839
#include "msm_iommu_hw-8xxx.h"
3940
#include "msm_iommu.h"
40-
#include "io-pgtable.h"
4141

4242
#define MRC(reg, processor, op1, crn, crm, op2) \
4343
__asm__ __volatile__ ( \

drivers/iommu/mtk_iommu.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,12 @@
1919
#include <linux/component.h>
2020
#include <linux/device.h>
2121
#include <linux/io.h>
22+
#include <linux/io-pgtable.h>
2223
#include <linux/iommu.h>
2324
#include <linux/list.h>
2425
#include <linux/spinlock.h>
2526
#include <soc/mediatek/smi.h>
2627

27-
#include "io-pgtable.h"
28-
2928
struct mtk_iommu_suspend_reg {
3029
u32 standard_axi_mode;
3130
u32 dcm_dis;

drivers/iommu/qcom_iommu.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <linux/interrupt.h>
2727
#include <linux/io.h>
2828
#include <linux/io-64-nonatomic-hi-lo.h>
29+
#include <linux/io-pgtable.h>
2930
#include <linux/iommu.h>
3031
#include <linux/iopoll.h>
3132
#include <linux/kconfig.h>
@@ -42,7 +43,6 @@
4243
#include <linux/slab.h>
4344
#include <linux/spinlock.h>
4445

45-
#include "io-pgtable.h"
4646
#include "arm-smmu-regs.h"
4747

4848
#define SMMU_INTR_SEL_NS 0x2000
File renamed without changes.

0 commit comments

Comments
 (0)