1. 08 7月, 2009 1 次提交
  2. 05 7月, 2009 2 次提交
    • D
      intel-iommu: Don't use identity mapping for PCI devices behind bridges · 3dfc813d
      David Woodhouse 提交于
      Our current strategy for pass-through mode is to put all devices into
      the 1:1 domain at startup (which is before we know what their dma_mask
      will be), and only _later_ take them out of that domain, if it turns out
      that they really can't address all of memory.
      
      However, when there are a bunch of PCI devices behind a bridge, they all
      end up with the same source-id on their DMA transactions, and hence in
      the same IOMMU domain. This means that we _can't_ easily move them from
      the 1:1 domain into their own domain at runtime, because there might be DMA
      in-flight from their siblings.
      
      So we have to adjust our pass-through strategy: For PCI devices not on
      the root bus, and for the bridges which will take responsibility for
      their transactions, we have to start up _out_ of the 1:1 domain, just in
      case.
      
      This fixes the BUG() we see when we have 32-bit-capable devices behind a
      PCI-PCI bridge, and use the software identity mapping.
      
      It does mean that we might end up using 'normal' mapping mode for some
      devices which could actually live with the faster 1:1 mapping -- but
      this is only for PCI devices behind bridges, which presumably aren't the
      devices for which people are most concerned about performance.
      Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      3dfc813d
    • D
      intel-iommu: Use iommu_should_identity_map() at startup time too. · 6941af28
      David Woodhouse 提交于
      At boot time, the dma_mask won't have been set on any devices, so we
      assume that all devices will be 64-bit capable (and thus get a 1:1 map).
      Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      6941af28
  3. 04 7月, 2009 6 次提交
  4. 02 7月, 2009 6 次提交
  5. 30 6月, 2009 5 次提交
  6. 29 6月, 2009 20 次提交