• Lu Baolu's avatar
    iommu/vt-d: Allow 32bit devices to uses DMA domain · 327d5b2f
    Lu Baolu authored
    Currently, if a 32bit device initially uses an identity domain, Intel
    IOMMU driver will convert it forcibly to a DMA one if its address
    capability is not enough for the whole system memory. The motivation was
    to overcome the overhead caused by possible bounced buffer.
    
    Unfortunately, this improvement has led to many problems. For example,
    some 32bit devices are required to use an identity domain, forcing them
    to use DMA domain will cause the device not to work anymore. On the
    other hand, the VMD sub-devices share a domain but each sub-device might
    have different address capability. Forcing a VMD sub-device to use DMA
    domain blindly will impact the operation of other sub-devices without
    any notification. Further more, PCI aliased devices (PCI bridge and all
    devices beneath it, VMD devices and various devices quirked with
    pci_add_dma_alias()) must use the same domain. Forcing one device to
    switch to DMA domain during runtime will cause in-fligh DMAs for other
    devices to abort or target to other memory which might cause undefind
    system behavior.
    
    With the last private domain usage in iommu_need_mapping() removed, all
    private domain helpers are also cleaned in this patch. Otherwise, the
    compiler will complain that some functions are defined but not used.
    Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Tested-by: default avatarDaniel Drake <drake@endlessm.com>
    Reviewed-by: default avatarJon Derrick <jonathan.derrick@intel.com>
    Reviewed-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
    Cc: Daniel Drake <drake@endlessm.com>
    Cc: Derrick Jonathan <jonathan.derrick@intel.com>
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Link: https://lore.kernel.org/r/20200506015947.28662-2-baolu.lu@linux.intel.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    327d5b2f
intel-iommu.c 151 KB