Subject: Re: arm-smmu 5000000.iommu: Cannot accommodate DMA offset for IOMMU page tables

From: Robin Murphy <[email-masked]>
Date: Mon, 21 Sep 2020 15:51:24 +0100

On 2020-09-21 14:20, Naresh Kamboju wrote:
[...]
> [    2.256403] e1000e 0000:01:00.0: Adding to iommu group 0
> [    2.261733] arm-smmu 5000000.iommu: Cannot accommodate DMA offset
> for IOMMU page tables

Ah, I know what's going on there - the dma_range_map stuff has 
overlooked a subtlety, but it's easily fixed.

> [    2.269752] Unable to handle kernel NULL pointer dereference at
> virtual address 0000000000000000

...although either way that's really not how we should subsequently 
handle failing to allocate a pagetable. I guess I'll take a look into 
what the deal is there as well :(

Robin.

> [    2.278544] Mem abort info:
> [    2.281334]   ESR = 0x96000004
> [    2.284389]   EC = 0x25: DABT (current EL), IL = 32 bits
> [    2.289705]   SET = 0, FnV = 0
> [    2.292759]   EA = 0, S1PTW = 0
> [    2.295900] Data abort info:
> [    2.298781]   ISV = 0, ISS = 0x00000004
> [    2.302618]   CM = 0, WnR = 0
> [    2.305581] [0000000000000000] user address but active_mm is swapper
> [    2.311941] Internal error: Oops: 96000004 [#1] PREEMPT SMP
> [    2.317512] Modules linked in:
> [    2.320566] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W
>    5.9.0-rc5-next-20200921 #1
> [    2.329352] Hardware name: Freescale Layerscape 2088A RDB Board (DT)
> [    2.335705] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
> [    2.341715] pc : arm_smmu_flush_iotlb_all+0x28/0x90
> [    2.346590] lr : iommu_create_device_direct_mappings.isra.0+0x1f0/0x218
> [    2.353203] sp : ffff80001005b9b0
> [    2.356511] x29: ffff80001005b9b0 x28: 0000000000000000
> [    2.361822] x27: ffffdc3792e904e0 x26: ffff80001005ba48
> [    2.367134] x25: ffff0082ee6b0000 x24: ffff0082ed88e0a8
> [    2.372445] x23: 00000000fffffff4 x22: 0000000000001000
> [    2.377755] x21: ffff80001005ba48 x20: 0000000000000000
> [    2.383066] x19: ffff0082cceeeb58 x18: 0000000000000010
> [    2.388377] x17: 0000000000000000 x16: 00000000833b5ff2
> [    2.393688] x15: ffff0082ee6b0480 x14: 203a756d6d6f692e
> [    2.398999] x13: 3030303030303520 x12: 61646f6d6d6f6363
> [    2.404311] x11: 6120746f6e6e6143 x10: 6f66207465736666
> [    2.409622] x9 : ffffdc3791d31078 x8 : ffff0082ed8ffd00
> [    2.414933] x7 : 0000000000000000 x6 : 000000000000003f
> [    2.420244] x5 : 0000000000000040 x4 : ffff80001005b970
> [    2.425554] x3 : 0000000000000000 x2 : 0000000000000000
> [    2.430865] x1 : ffffdc37927dd2f0 x0 : ffff0082cceeeb58
> [    2.436176] Call trace:
> [    2.438618]  arm_smmu_flush_iotlb_all+0x28/0x90
> [    2.443144]  iommu_create_device_direct_mappings.isra.0+0x1f0/0x218
> [    2.449409]  iommu_probe_device+0x6c/0x120
> [    2.453501]  of_iommu_configure+0x134/0x218
> [    2.457683]  of_dma_configure_id+0x110/0x2e8
> [    2.461950]  pci_dma_configure+0x4c/0xd8
> [    2.465870]  really_probe+0xac/0x4d8
> [    2.469441]  driver_probe_device+0xfc/0x168
> [    2.473620]  device_driver_attach+0x7c/0x88
> [    2.477799]  __driver_attach+0xac/0x178
> [    2.481631]  bus_for_each_dev+0x78/0xc8
> [    2.485463]  driver_attach+0x2c/0x38
> [    2.489033]  bus_add_driver+0x14c/0x230
> [    2.492865]  driver_register+0x6c/0x128
> [    2.496696]  __pci_register_driver+0x4c/0x58
> [    2.500964]  e1000_init_module+0x44/0x50
> [    2.504882]  do_one_initcall+0x4c/0x2d0
> [    2.508714]  kernel_init_freeable+0x214/0x280
> [    2.513068]  kernel_init+0x1c/0x120
> [    2.516552]  ret_from_fork+0x10/0x30
> [    2.520124] Code: 910003fd a90153f3 aa0003f3 f85a8014 (f9400280)
> [    2.526224] ---[ end trace d051012f465b08ec ]---
> [    2.530848] Kernel panic - not syncing: Attempted to kill init!
> exitcode=0x0000000b
> [    2.538506] SMP: stopping secondary CPUs
> [    2.542431] Kernel Offset: 0x5c3781480000 from 0xffff800010000000
> [    2.548521] PHYS_OFFSET: 0xffffdb6ac0000000
> [    2.552700] CPU features: 0x0240022,21806008
> [    2.556965] Memory Limit: none
> 
> full test log,
> https://lavalab.nxp.com/scheduler/job/86650#L849
>