• David Woodhouse's avatar
    iommu/vt-d: Only enable extended context tables if PASID is supported · c83b2f20
    David Woodhouse authored
    Although the extended tables are theoretically a completely orthogonal
    feature to PASID and anything else that *uses* the newly-available bits,
    some of the early hardware has problems even when all we do is enable
    them and use only the same bits that were in the old context tables.
    
    For now, there's no motivation to support extended tables unless we're
    going to use PASID support to do SVM. So just don't use them unless
    PASID support is advertised too. Also add a command-line bailout just in
    case later chips also have issues.
    
    The equivalent problem for PASID support has already been fixed with the
    upcoming VT-d spec update and commit bd00c606 ("iommu/vt-d: Change
    PASID support to bit 40 of Extended Capability Register"), because the
    problematic platforms use the old definition of the PASID-capable bit,
    which is now marked as reserved and meaningless.
    
    So with this change, we'll magically start using ECS again only when we
    see the new hardware advertising "hey, we have PASID support and we
    actually tested it this time" on bit 40.
    
    The VT-d hardware architect has promised that we are not going to have
    any reason to support ECS *without* PASID any time soon, and he'll make
    sure he checks with us before changing that.
    
    In the future, if hypothetical new features also use new bits in the
    context tables and can be seen on implementations *without* PASID support,
    we might need to add their feature bits to the ecs_enabled() macro.
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    c83b2f20
intel-iommu.c 119 KB