• Joseph Cihula's avatar
    intel_iommu: disable all VT-d PMRs when TXT launched · 51a63e67
    Joseph Cihula authored
    Intel VT-d Protected Memory Regions (PMRs) are supposed to be disabled,
    on each VT-d engine, after DMA remapping is enabled on the engines.
    This is because the behavior of having both enabled is not deterministic
    and because, if TXT has been used to launch the kernel, the PMRs may be
    programmed to cover memory regions that will be used for DMA.
    
    Under some circumstances (certain quirks detected, lack of multiple
    devices, etc.), the current code does not set up DMA remapping on some
    VT-d engines.  In such cases it also skips disabling the PMRs.  This
    causes failures when the kernel is launched with TXT (most often this
    occurs on the graphics engine and results in colored vertical bars on
    the display).
    
    This patch detects when the kernel has been launched with TXT and then
    disables the PMRs on all VT-d engines.  In some cases where the reason
    that remapping is not being enabled is due to possible ACPI DMAR table
    errors, the VT-d engine addresses may not be correct and thus not able
    to be safely programmed even to disable PMRs.  Because part of the TXT
    launch process is the verification of these addresses, it will always be
    safe to disable PMRs if the TXT launch has succeeded and hence only
    doing this in such cases.
    Signed-off-by: default avatarJoseph Cihula <joseph.cihula@intel.com>
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    51a63e67
intel-iommu.c 95.2 KB