1. 12 Nov, 2009 2 commits
    • Fenghua Yu's avatar
      intel-iommu: Support PCIe hot-plug · 99dcaded
      Fenghua Yu authored
      To support PCIe hot plug in IOMMU, we register a notifier to respond to device
      change action.
      
      When the notifier gets BUS_NOTIFY_UNBOUND_DRIVER, it removes the device
      from its DMAR domain.
      
      A hot added device will be added into an IOMMU domain when it first does IOMMU
      op. So there is no need to add more code for hot add.
      
      Without the patch, after a hot-remove, a hot-added device on the same
      slot will not work.
      Signed-off-by: default avatarFenghua Yu <fenghua.yu@intel.com>
      Tested-by: default avatarYinghai Lu <yinghai@kernel.org>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      99dcaded
    • Alex Williamson's avatar
      intel-iommu: Obey coherent_dma_mask for alloc_coherent on passthrough · e8bb910d
      Alex Williamson authored
      The model for IOMMU passthrough is that decent devices that can cope
      with DMA to all of memory get passthrough; crappy devices with a limited
      dma_mask don't -- they get to use the IOMMU anyway.
      
      This is done on the basis that IOMMU passthrough is usually wanted for
      performance reasons, and it's only the decent PCI devices that you
      really care about performance for, while the crappy 32-bit ones like
      your USB controller can just use the IOMMU and you won't really care.
      
      Unfortunately, the check for this was only looking at dev->dma_mask, not
      at dev->coherent_dma_mask. And some devices have a 32-bit
      coherent_dma_mask even though they have a full 64-bit dma_mask.
      
      Even more unfortunately, fixing that simple oversight would upset
      certain broken HP devices. Not only do they have a 32-bit
      coherent_dma_mask, but they also have a tendency to do stray DMA to
      unmapped addresses. And then they die when they take the DMA fault they
      so richly deserve.
      
      So if we do the 'correct' fix, it'll mean that affected users have to
      disable IOMMU support completely on "a large percentage of servers from
      a major vendor."
      
      Personally, I have little sympathy -- given that this is the _same_
      'major vendor' who is shipping machines which claim to have IOMMU
      support but have obviously never _once_ booted a VT-d capable OS to do
      any form of QA. But strictly speaking, it _would_ be a regression even
      though it only ever worked by fluke.
      
      For 2.6.33, we'll come up with a quirk which gives swiotlb support
      for this particular device, and other devices with an inadequate
      coherent_dma_mask will just get normal IOMMU mapping.
      
      The simplest fix for 2.6.32, though, is just to jump through some hoops
      to try to allocate coherent DMA memory for such devices in a place that
      they can reach. We'd use dma_generic_alloc_coherent() for this if it
      existed on IA64.
      Signed-off-by: default avatarAlex Williamson <alex.williamson@hp.com>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      e8bb910d
  2. 09 Nov, 2009 17 commits
  3. 08 Nov, 2009 9 commits
  4. 07 Nov, 2009 12 commits