[PATCH v7 00/22] Generic DT bindings for PCI IOMMUs and ARM SMMU
Auger Eric
eric.auger at redhat.com
Tue Sep 13 05:14:34 PDT 2016
Hi Robin
On 12/09/2016 18:13, Robin Murphy wrote:
> Hi all,
>
> To any more confusing fixups and crazily numbered extra patches, here's
> a quick v7 with everything rebased into the right order. The significant
> change this time is to implement iommu_fwspec properly from the start,
> which ends up being far simpler and more robust than faffing about
> introducing it somewhere 'less intrusive' to move toward core code later.
>
> New branch in the logical place:
>
> git://linux-arm.org/linux-rm iommu/generic-v7
I just tested your branch on AMD overdrive *without* updating the device
tree description according to the new syntax and I get a kernel oops.
See logs attached. Continuing my investigations ...
Best Regards
Eric
>
> Robin.
>
> Mark Rutland (1):
> Docs: dt: add PCI IOMMU map bindings
>
> Robin Murphy (21):
> of/irq: Break out msi-map lookup (again)
> iommu/of: Handle iommu-map property for PCI
> iommu: Introduce iommu_fwspec
> Docs: dt: document ARM SMMUv3 generic binding usage
> iommu/arm-smmu: Fall back to global bypass
> iommu/arm-smmu: Implement of_xlate() for SMMUv3
> iommu/arm-smmu: Support non-PCI devices with SMMUv3
> iommu/arm-smmu: Set PRIVCFG in stage 1 STEs
> iommu/arm-smmu: Handle stream IDs more dynamically
> iommu/arm-smmu: Consolidate stream map entry state
> iommu/arm-smmu: Keep track of S2CR state
> iommu/arm-smmu: Refactor mmu-masters handling
> iommu/arm-smmu: Streamline SMMU data lookups
> iommu/arm-smmu: Add a stream map entry iterator
> iommu/arm-smmu: Intelligent SMR allocation
> iommu/arm-smmu: Convert to iommu_fwspec
> Docs: dt: document ARM SMMU generic binding usage
> iommu/arm-smmu: Wire up generic configuration support
> iommu/arm-smmu: Set domain geometry
> iommu/dma: Add support for mapping MSIs
> iommu/dma: Avoid PCI host bridge windows
>
> .../devicetree/bindings/iommu/arm,smmu-v3.txt | 8 +-
> .../devicetree/bindings/iommu/arm,smmu.txt | 63 +-
> .../devicetree/bindings/pci/pci-iommu.txt | 171 ++++
> arch/arm64/mm/dma-mapping.c | 2 +-
> drivers/gpu/drm/exynos/exynos_drm_iommu.h | 2 +-
> drivers/iommu/Kconfig | 2 +-
> drivers/iommu/arm-smmu-v3.c | 386 +++++----
> drivers/iommu/arm-smmu.c | 962 ++++++++++-----------
> drivers/iommu/dma-iommu.c | 161 +++-
> drivers/iommu/iommu.c | 56 ++
> drivers/iommu/of_iommu.c | 52 +-
> drivers/irqchip/irq-gic-v2m.c | 3 +
> drivers/irqchip/irq-gic-v3-its.c | 3 +
> drivers/of/irq.c | 78 +-
> drivers/of/of_pci.c | 102 +++
> include/linux/device.h | 3 +
> include/linux/dma-iommu.h | 12 +-
> include/linux/iommu.h | 38 +
> include/linux/of_pci.h | 10 +
> 19 files changed, 1323 insertions(+), 791 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/pci/pci-iommu.txt
>
-------------- next part --------------
[ 3.185447] CPU features: detected feature: 32-bit EL0 Support
[ 3.185455] CPU: All CPU(s) started at EL2
[ 3.185475] alternatives: patching kernel code
[ 3.188549] devtmpfs: initialized
[ 3.189484] SMBIOS 3.0.0 present.
[ 3.189570] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 3.189750] pinctrl core: initialized pinctrl subsystem
[ 3.190113] NET: Registered protocol family 16
[ 3.205134] cpuidle: using governor menu
[ 3.205292] arm-smmu: deprecated "mmu-masters" DT property in use; DMA API support unavailable
[ 3.205319] arm-smmu e0600000.smmu: probing hardware configuration...
[ 3.205326] arm-smmu e0600000.smmu: SMMUv1 with:
[ 3.205334] arm-smmu e0600000.smmu: stage 2 translation
[ 3.205341] arm-smmu e0600000.smmu: non-coherent table walk
[ 3.205348] arm-smmu e0600000.smmu: (IDR0.CTTW overridden by dma-coherent property)
[ 3.205358] arm-smmu e0600000.smmu: stream matching with 32 register groups, mask 0x7fff
[ 3.205369] arm-smmu e0600000.smmu: 8 context banks (8 stage-2 only)
[ 3.205377] arm-smmu e0600000.smmu: Supported page sizes: 0x60211000
[ 3.205384] arm-smmu e0600000.smmu: Stage-2: 40-bit IPA -> 40-bit PA
[ 3.205489] arm-smmu: deprecated "mmu-masters" DT property in use; DMA API support unavailable
[ 3.205512] arm-smmu e0800000.smmu: probing hardware configuration...
[ 3.205519] arm-smmu e0800000.smmu: SMMUv1 with:
[ 3.205525] arm-smmu e0800000.smmu: stage 2 translation
[ 3.205533] arm-smmu e0800000.smmu: non-coherent table walk
[ 3.205539] arm-smmu e0800000.smmu: (IDR0.CTTW overridden by dma-coherent property)
[ 3.205550] arm-smmu e0800000.smmu: stream matching with 32 register groups, mask 0x7fff
[ 3.205560] arm-smmu e0800000.smmu: 8 context banks (8 stage-2 only)
[ 3.205567] arm-smmu e0800000.smmu: Supported page sizes: 0x60211000
[ 3.205574] arm-smmu e0800000.smmu: Stage-2: 40-bit IPA -> 40-bit PA
[ 3.205670] arm-smmu: deprecated "mmu-masters" DT property in use; DMA API support unavailable
[ 3.205692] arm-smmu e0a00000.smmu: probing hardware configuration...
[ 3.205699] arm-smmu e0a00000.smmu: SMMUv1 with:
[ 3.205705] arm-smmu e0a00000.smmu: stage 2 translation
[ 3.205712] arm-smmu e0a00000.smmu: non-coherent table walk
[ 3.205719] arm-smmu e0a00000.smmu: (IDR0.CTTW overridden by dma-coherent property)
[ 3.205729] arm-smmu e0a00000.smmu: stream matching with 32 register groups, mask 0x7fff
[ 3.205738] arm-smmu e0a00000.smmu: 8 context banks (8 stage-2 only)
[ 3.205745] arm-smmu e0a00000.smmu: Supported page sizes: 0x60211000
[ 3.205752] arm-smmu e0a00000.smmu: Stage-2: 40-bit IPA -> 40-bit PA
[ 3.205801] vdso: 2 pages (1 code @ ffff0000088c6000, 1 data @ ffff000008dd4000)
[ 3.205814] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 3.206098] DMA: preallocated 256 KiB pool for atomic allocations
[ 3.206186] Serial: AMBA PL011 UART driver
[ 3.207040] e1010000.serial: ttyAMA0 at MMIO 0xe1010000 (irq = 20, base_baud = 0) is a PL011 rev3
[ 3.995110] console [ttyAMA0] enabled
[ 3.999198] OF: amba_device_add() failed (-19) for /smb/gpio at e0020000
[ 4.006287] iommu: Adding device e0700000.xgmac to group 0
[ 4.027943] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 4.034596] ACPI: Interpreter disabled.
[ 4.038537] Unable to handle kernel paging request at virtual address ffffff8030010000
[ 4.046452] pgd = ffff000008f61000
[ 4.049845] [ffffff8030010000] *pgd=0000000000000000
[ 4.054807] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[ 4.060371] Modules linked in:
[ 4.063419] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc4-26782-g83cf8c5 #14
[ 4.070982] Hardware name: Default string Default string/Default string, BIOS WOD5527X 05/25/2015
[ 4.079846] task: ffff8003ec108000 task.stack: ffff8003ec110000
[ 4.085761] PC is at __arm_v7s_map+0x1cc/0x378
[ 4.090196] LR is at __arm_v7s_map+0xb4/0x378
[ 4.094543] pc : [<ffff000008522604>] lr : [<ffff0000085224ec>] pstate: 20000045
[ 4.101931] sp : ffff8003ec113bf0
[ 4.105236] x29: ffff8003ec113bf0 x28: 0000000000001000
[ 4.110543] x27: ffffff8030010000 x26: ffff8003eb47e518
[ 4.115850] x25: 0000000000000001 x24: ffffff8030010004
[ 4.121155] x23: 000000000000000c x22: ffff8003eb47e500
[ 4.126461] x21: 0000000000001000 x20: 0000000000000000
[ 4.131767] x19: ffffff8030010000 x18: 000000000000000e
[ 4.137072] x17: 00000000000040ff x16: 0000000000000000
[ 4.142379] x15: 000000000000008c x14: 0000000000000006
[ 4.147684] x13: 0000000000000007 x12: 0000000000000020
[ 4.152990] x11: 0000000000000003 x10: ffff000008dd6000
[ 4.158295] x9 : 0000000000000004 x8 : 0000000000000e71
[ 4.163601] x7 : ffffff8030010000 x6 : ffffff8030010000
[ 4.168907] x5 : 0000000000000002 x4 : 0000000000000000
[ 4.174212] x3 : 0000000000000001 x2 : 0000000000000001
[ 4.179518] x1 : 0000000000000e7d x0 : 0000000000000004
[ 4.184824]
[ 4.186306] Process swapper/0 (pid: 1, stack limit = 0xffff8003ec110020)
[ 4.192998] Stack: (0xffff8003ec113bf0 to 0xffff8003ec114000)
[ 4.198735] 3be0: ffff8003ec113c70 ffff0000085224ec
[ 4.206558] 3c00: 0000000000001000 0000000000000000 0000000000000000 ffff8003eb47e500
[ 4.214381] 3c20: 0000000000000014 0000000000001000 0000000000000000 ffff8003eb47e518
[ 4.222203] 3c40: ffff800030008000 0000000000001000 0000000000000000 ffff8003eb47e518
[ 4.230026] 3c60: ffff8003ec113c70 ffffff8030010000 ffff8003ec113cf0 ffff0000085227f8
[ 4.237848] 3c80: ffff8003eb47e568 0000000000001000 0000000000000000 000000000000002a
[ 4.245671] 3ca0: 0000000000000001 0000000000001000 0000000000000001 ffff8003ec113d88
[ 4.253493] 3cc0: ffff8003ec113d80 0000000000001000 0000000000000002 000000000000000f
[ 4.261315] 3ce0: ffff800030010000 ffff000008bc2520 ffff8003ec113d20 ffff000008d0036c
[ 4.269137] 3d00: ffff8003eb47e568 000000000000000c 0000000000000000 000000000000002a
[ 4.276960] 3d20: ffff8003ec113dd0 ffff00000808335c ffff000008d0019c ffff8003ec110000
[ 4.284782] 3d40: 0000000000000000 ffff000008f1c000 ffff000008cc0498 ffff000008cad0a0
[ 4.292605] 3d60: ffff000008d2ab20 ffff000008f1c000 0000000000000109 0000000000000000
[ 4.300427] 3d80: 0000000000000001 0000000001111000 0000002000000020 ffff000008e750b0
[ 4.308249] 3da0: 0000000000000000 000000003000806a 4000400000000020 00000000800b8204
[ 4.316072] 3dc0: 0000000000000000 0000000000000000 ffff8003ec113e40 ffff000008cc0d54
[ 4.323894] 3de0: ffff000008d95df0 ffff000008d2aa70 0000000000000004 ffff000008f1c000
[ 4.331717] 3e00: ffff8003ec113e00 ffff000008ef8f38 0000000000000000 0000000400000004
[ 4.339539] 3e20: ffff000008ef8ec0 0000000000000000 ffff000008cc0498 ffff000008cad0a0
[ 4.347361] 3e40: ffff8003ec113ea0 ffff0000088a7f88 ffff0000088a7f78 0000000000000000
[ 4.355183] 3e60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.363006] 3e80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.370828] 3ea0: 0000000000000000 ffff000008082e90 ffff0000088a7f78 0000000000000000
[ 4.378650] 3ec0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.386473] 3ee0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.394295] 3f00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.402117] 3f20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.409940] 3f40: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.417762] 3f60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.425584] 3f80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.433406] 3fa0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.441229] 3fc0: 0000000000000000 0000000000000005 0000000000000000 0000000000000000
[ 4.449051] 3fe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 4.456873] Call trace:
[ 4.459310] Exception stack(0xffff8003ec113a20 to 0xffff8003ec113b50)
[ 4.465742] 3a20: ffffff8030010000 0001000000000000 ffff8003ec113bf0 ffff000008522604
[ 4.473565] 3a40: 0000000002088021 ffff8003eb47e518 ffff8003fff4db00 ffff8003ffe81400
[ 4.481388] 3a60: ffff000008dd5000 0208802100008001 0000000000000000 0000000000000000
[ 4.489210] 3a80: ffff8003ec113b80 ffff00000820247c 0000000000000040 0000000000000000
[ 4.497032] 3aa0: ffff8003ec110000 0000000000000003 0000000002088021 ffff000008521cbc
[ 4.504854] 3ac0: 0000000000000004 0000000000000e7d 0000000000000001 0000000000000001
[ 4.512677] 3ae0: 0000000000000000 0000000000000002 ffffff8030010000 ffffff8030010000
[ 4.520499] 3b00: 0000000000000e71 0000000000000004 ffff000008dd6000 0000000000000003
[ 4.528321] 3b20: 0000000000000020 0000000000000007 0000000000000006 000000000000008c
[ 4.536143] 3b40: 0000000000000000 00000000000040ff
[ 4.541012] [<ffff000008522604>] __arm_v7s_map+0x1cc/0x378
[ 4.546489] [<ffff0000085224ec>] __arm_v7s_map+0xb4/0x378
[ 4.551879] [<ffff0000085227f8>] arm_v7s_map+0x48/0xc4
[ 4.557010] [<ffff000008d0036c>] arm_v7s_do_selftests+0x1d0/0x4b4
[ 4.563096] [<ffff00000808335c>] do_one_initcall+0x38/0x12c
[ 4.568662] [<ffff000008cc0d54>] kernel_init_freeable+0x1a8/0x24c
[ 4.574748] [<ffff0000088a7f88>] kernel_init+0x10/0xfc
[ 4.579878] [<ffff000008082e90>] ret_from_fork+0x10/0x40
[ 4.585181] Code: aa1b03f3 8b180378 f9003fa7 710004bf (b9400266)
[ 4.591280] ---[ end trace d091d1618c2826ea ]---
[ 4.595897] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 4.595897]
[ 4.605024] SMP: stopping secondary CPUs
[ 4.608942] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 4.608942]
More information about the linux-arm-kernel
mailing list