1. 18 5月, 2020 10 次提交
  2. 13 5月, 2020 4 次提交
  3. 05 5月, 2020 2 次提交
  4. 01 5月, 2020 1 次提交
  5. 19 3月, 2020 1 次提交
    • Q
      iommu/vt-d: Silence RCU-list debugging warning in dmar_find_atsr() · c6f4ebde
      Qian Cai 提交于
      dmar_find_atsr() calls list_for_each_entry_rcu() outside of an RCU read
      side critical section but with dmar_global_lock held. Silence this
      false positive.
      
       drivers/iommu/intel-iommu.c:4504 RCU-list traversed in non-reader section!!
       1 lock held by swapper/0/1:
       #0: ffffffff9755bee8 (dmar_global_lock){+.+.}, at: intel_iommu_init+0x1a6/0xe19
      
       Call Trace:
        dump_stack+0xa4/0xfe
        lockdep_rcu_suspicious+0xeb/0xf5
        dmar_find_atsr+0x1ab/0x1c0
        dmar_parse_one_atsr+0x64/0x220
        dmar_walk_remapping_entries+0x130/0x380
        dmar_table_init+0x166/0x243
        intel_iommu_init+0x1ab/0xe19
        pci_iommu_init+0x1a/0x44
        do_one_initcall+0xae/0x4d0
        kernel_init_freeable+0x412/0x4c5
        kernel_init+0x19/0x193
      Signed-off-by: NQian Cai <cai@lca.pw>
      Acked-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      c6f4ebde
  6. 15 3月, 2020 1 次提交
  7. 13 3月, 2020 2 次提交
  8. 10 3月, 2020 1 次提交
    • Q
      iommu/vt-d: Fix RCU-list bugs in intel_iommu_init() · 2d48ea0e
      Qian Cai 提交于
      There are several places traverse RCU-list without holding any lock in
      intel_iommu_init(). Fix them by acquiring dmar_global_lock.
      
       WARNING: suspicious RCU usage
       -----------------------------
       drivers/iommu/intel-iommu.c:5216 RCU-list traversed in non-reader section!!
      
       other info that might help us debug this:
      
       rcu_scheduler_active = 2, debug_locks = 1
       no locks held by swapper/0/1.
      
       Call Trace:
        dump_stack+0xa0/0xea
        lockdep_rcu_suspicious+0x102/0x10b
        intel_iommu_init+0x947/0xb13
        pci_iommu_init+0x26/0x62
        do_one_initcall+0xfe/0x500
        kernel_init_freeable+0x45a/0x4f8
        kernel_init+0x11/0x139
        ret_from_fork+0x3a/0x50
       DMAR: Intel(R) Virtualization Technology for Directed I/O
      
      Fixes: d8190dc6 ("iommu/vt-d: Enable DMA remapping after rmrr mapped")
      Signed-off-by: NQian Cai <cai@lca.pw>
      Acked-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      2d48ea0e
  9. 03 3月, 2020 1 次提交
  10. 19 2月, 2020 5 次提交
  11. 25 1月, 2020 2 次提交
  12. 24 1月, 2020 5 次提交
  13. 08 1月, 2020 2 次提交
    • J
      iommu/vt-d: Unlink device if failed to add to group · f78947c4
      Jon Derrick 提交于
      If the device fails to be added to the group, make sure to unlink the
      reference before returning.
      Signed-off-by: NJon Derrick <jonathan.derrick@intel.com>
      Fixes: 39ab9555 ("iommu: Add sysfs bindings for struct iommu_device")
      Acked-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      f78947c4
    • P
      iommu/vt-d: Fix adding non-PCI devices to Intel IOMMU · 4a350a0e
      Patrick Steinhardt 提交于
      Starting with commit fa212a97 ("iommu/vt-d: Probe DMA-capable ACPI
      name space devices"), we now probe DMA-capable ACPI name
      space devices. On Dell XPS 13 9343, which has an Intel LPSS platform
      device INTL9C60 enumerated via ACPI, this change leads to the following
      warning:
      
          ------------[ cut here ]------------
          WARNING: CPU: 1 PID: 1 at pci_device_group+0x11a/0x130
          CPU: 1 PID: 1 Comm: swapper/0 Tainted: G                T 5.5.0-rc3+ #22
          Hardware name: Dell Inc. XPS 13 9343/0310JH, BIOS A20 06/06/2019
          RIP: 0010:pci_device_group+0x11a/0x130
          Code: f0 ff ff 48 85 c0 49 89 c4 75 c4 48 8d 74 24 10 48 89 ef e8 48 ef ff ff 48 85 c0 49 89 c4 75 af e8 db f7 ff ff 49 89 c4 eb a5 <0f> 0b 49 c7 c4 ea ff ff ff eb 9a e8 96 1e c7 ff 66 0f 1f 44 00 00
          RSP: 0000:ffffc0d6c0043cb0 EFLAGS: 00010202
          RAX: 0000000000000000 RBX: ffffa3d1d43dd810 RCX: 0000000000000000
          RDX: ffffa3d1d4fecf80 RSI: ffffa3d12943dcc0 RDI: ffffa3d1d43dd810
          RBP: ffffa3d1d43dd810 R08: 0000000000000000 R09: ffffa3d1d4c04a80
          R10: ffffa3d1d4c00880 R11: ffffa3d1d44ba000 R12: 0000000000000000
          R13: ffffa3d1d4383b80 R14: ffffa3d1d4c090d0 R15: ffffa3d1d4324530
          FS:  0000000000000000(0000) GS:ffffa3d1d6700000(0000) knlGS:0000000000000000
          CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
          CR2: 0000000000000000 CR3: 000000000460a001 CR4: 00000000003606e0
          Call Trace:
           ? iommu_group_get_for_dev+0x81/0x1f0
           ? intel_iommu_add_device+0x61/0x170
           ? iommu_probe_device+0x43/0xd0
           ? intel_iommu_init+0x1fa2/0x2235
           ? pci_iommu_init+0x52/0xe7
           ? e820__memblock_setup+0x15c/0x15c
           ? do_one_initcall+0xcc/0x27e
           ? kernel_init_freeable+0x169/0x259
           ? rest_init+0x95/0x95
           ? kernel_init+0x5/0xeb
           ? ret_from_fork+0x35/0x40
          ---[ end trace 28473e7abc25b92c ]---
          DMAR: ACPI name space devices didn't probe correctly
      
      The bug results from the fact that while we now enumerate ACPI devices,
      we aren't able to handle any non-PCI device when generating the device
      group. Fix the issue by implementing an Intel-specific callback that
      returns `pci_device_group` only if the device is a PCI device.
      Otherwise, it will return a generic device group.
      
      Fixes: fa212a97 ("iommu/vt-d: Probe DMA-capable ACPI name space devices")
      Signed-off-by: NPatrick Steinhardt <ps@pks.im>
      Cc: stable@vger.kernel.org # v5.3+
      Acked-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      4a350a0e
  14. 07 1月, 2020 3 次提交
    • L
      iommu/vt-d: debugfs: Add support to show page table internals · e2726dae
      Lu Baolu 提交于
      Export page table internals of the domain attached to each device.
      Example of such dump on a Skylake machine:
      
      $ sudo cat /sys/kernel/debug/iommu/intel/domain_translation_struct
      [ ... ]
      Device 0000:00:14.0 with pasid 0 @0x15f3d9000
      IOVA_PFN                PML5E                   PML4E
      0x000000008ced0 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced1 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced2 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced3 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced4 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced5 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced6 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced7 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced8 |       0x0000000000000000      0x000000015f3da003
      0x000000008ced9 |       0x0000000000000000      0x000000015f3da003
      
      PDPE                    PDE                     PTE
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced0003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced1003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced2003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced3003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced4003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced5003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced6003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced7003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced8003
      0x000000015f3db003      0x000000015f3dc003      0x000000008ced9003
      [ ... ]
      Signed-off-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      e2726dae
    • L
      iommu/vt-d: Use iova over first level · b802d070
      Lu Baolu 提交于
      After we make all map/unmap paths support first level page table.
      Let's turn it on if hardware supports scalable mode.
      Signed-off-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      b802d070
    • L
      iommu/vt-d: Update first level super page capability · 64229e8f
      Lu Baolu 提交于
      First-level translation may map input addresses to 4-KByte pages,
      2-MByte pages, or 1-GByte pages. Support for 4-KByte pages and
      2-Mbyte pages are mandatory for first-level translation. Hardware
      support for 1-GByte page is reported through the FL1GP field in
      the Capability Register.
      Signed-off-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      64229e8f