• Sven Peter's avatar
    iommu/dart: Remove iommu_flush_ops · 6f87d4e6
    Sven Peter authored
    apple_dart_tlb_flush_{all,walk} expect to get a struct apple_dart_domain
    but instead get a struct iommu_domain right now. This breaks those two
    functions and can lead to kernel panics like the one below.
    DART can only invalidate the entire TLB and apple_dart_iotlb_sync will
    already flush everything. There's no need to do that again inside those
    two functions. Let's just drop them.
    
      pci 0000:03:00.0: Removing from iommu group 1
      Unable to handle kernel paging request at virtual address 0000000100000023
      [...]
      Call trace:
       _raw_spin_lock_irqsave+0x54/0xbc
       apple_dart_hw_stream_command.constprop.0+0x2c/0x130
       apple_dart_tlb_flush_all+0x48/0x90
       free_io_pgtable_ops+0x40/0x70
       apple_dart_domain_free+0x2c/0x44
       iommu_group_release+0x68/0xac
       kobject_cleanup+0x4c/0x1fc
       kobject_cleanup+0x14c/0x1fc
       kobject_put+0x64/0x84
       iommu_group_remove_device+0x110/0x180
       iommu_release_device+0x50/0xa0
      [...]
    
    Fixes: 46d1fb07 ("iommu/dart: Add DART iommu driver")
    Reported-by: default avatarMarc Zyngier <maz@kernel.org>
    Signed-off-by: default avatarSven Peter <sven@svenpeter.dev>
    Acked-by: default avatarMarc Zyngier <maz@kernel.org>
    Tested-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210921153934.35647-1-sven@svenpeter.devSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    6f87d4e6
apple-dart.c 23.6 KB