1. 19 8月, 2021 4 次提交
  2. 18 8月, 2021 2 次提交
  3. 26 7月, 2021 6 次提交
  4. 14 7月, 2021 2 次提交
  5. 25 6月, 2021 1 次提交
  6. 18 6月, 2021 1 次提交
  7. 10 6月, 2021 10 次提交
  8. 19 5月, 2021 2 次提交
  9. 16 4月, 2021 1 次提交
  10. 15 4月, 2021 1 次提交
    • L
      iommu/vt-d: Force to flush iotlb before creating superpage · 38c527ae
      Longpeng(Mike) 提交于
      The translation caches may preserve obsolete data when the
      mapping size is changed, suppose the following sequence which
      can reveal the problem with high probability.
      
      1.mmap(4GB,MAP_HUGETLB)
      2.
        while (1) {
         (a)    DMA MAP   0,0xa0000
         (b)    DMA UNMAP 0,0xa0000
         (c)    DMA MAP   0,0xc0000000
                   * DMA read IOVA 0 may failure here (Not present)
                   * if the problem occurs.
         (d)    DMA UNMAP 0,0xc0000000
        }
      
      The page table(only focus on IOVA 0) after (a) is:
       PML4: 0x19db5c1003   entry:0xffff899bdcd2f000
        PDPE: 0x1a1cacb003  entry:0xffff89b35b5c1000
         PDE: 0x1a30a72003  entry:0xffff89b39cacb000
          PTE: 0x21d200803  entry:0xffff89b3b0a72000
      
      The page table after (b) is:
       PML4: 0x19db5c1003   entry:0xffff899bdcd2f000
        PDPE: 0x1a1cacb003  entry:0xffff89b35b5c1000
         PDE: 0x1a30a72003  entry:0xffff89b39cacb000
          PTE: 0x0          entry:0xffff89b3b0a72000
      
      The page table after (c) is:
       PML4: 0x19db5c1003   entry:0xffff899bdcd2f000
        PDPE: 0x1a1cacb003  entry:0xffff89b35b5c1000
         PDE: 0x21d200883   entry:0xffff89b39cacb000 (*)
      
      Because the PDE entry after (b) is present, it won't be
      flushed even if the iommu driver flush cache when unmap,
      so the obsolete data may be preserved in cache, which
      would cause the wrong translation at end.
      
      However, we can see the PDE entry is finally switch to
      2M-superpage mapping, but it does not transform
      to 0x21d200883 directly:
      
      1. PDE: 0x1a30a72003
      2. __domain_mapping
           dma_pte_free_pagetable
             Set the PDE entry to ZERO
           Set the PDE entry to 0x21d200883
      
      So we must flush the cache after the entry switch to ZERO
      to avoid the obsolete info be preserved.
      
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Lu Baolu <baolu.lu@linux.intel.com>
      Cc: Nadav Amit <nadav.amit@gmail.com>
      Cc: Alex Williamson <alex.williamson@redhat.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Kevin Tian <kevin.tian@intel.com>
      Cc: Gonglei (Arei) <arei.gonglei@huawei.com>
      
      Fixes: 6491d4d0 ("intel-iommu: Free old page tables before creating superpage")
      Cc: <stable@vger.kernel.org> # v3.0+
      Link: https://lore.kernel.org/linux-iommu/670baaf8-4ff8-4e84-4be3-030b95ab5a5e@huawei.com/Suggested-by: NLu Baolu <baolu.lu@linux.intel.com>
      Signed-off-by: NLongpeng(Mike) <longpeng2@huawei.com>
      Acked-by: NLu Baolu <baolu.lu@linux.intel.com>
      Link: https://lore.kernel.org/r/20210415004628.1779-1-longpeng2@huawei.comSigned-off-by: NJoerg Roedel <jroedel@suse.de>
      38c527ae
  11. 07 4月, 2021 7 次提交
  12. 18 3月, 2021 2 次提交
  13. 04 2月, 2021 1 次提交