• Eric Auger's avatar
    iommu: Introduce IOMMU_RESV_DIRECT_RELAXABLE reserved memory regions · adfd3738
    Eric Auger authored
    Introduce a new type for reserved region. This corresponds
    to directly mapped regions which are known to be relaxable
    in some specific conditions, such as device assignment use
    case. Well known examples are those used by USB controllers
    providing PS/2 keyboard emulation for pre-boot BIOS and
    early BOOT or RMRRs associated to IGD working in legacy mode.
    
    Since commit c875d2c1 ("iommu/vt-d: Exclude devices using RMRRs
    from IOMMU API domains") and commit 18436afd ("iommu/vt-d: Allow
    RMRR on graphics devices too"), those regions are currently
    considered "safe" with respect to device assignment use case
    which requires a non direct mapping at IOMMU physical level
    (RAM GPA -> HPA mapping).
    
    Those RMRRs currently exist and sometimes the device is
    attempting to access it but this has not been considered
    an issue until now.
    
    However at the moment, iommu_get_group_resv_regions() is
    not able to make any difference between directly mapped
    regions: those which must be absolutely enforced and those
    like above ones which are known as relaxable.
    
    This is a blocker for reporting severe conflicts between
    non relaxable RMRRs (like MSI doorbells) and guest GPA space.
    
    With this new reserved region type we will be able to use
    iommu_get_group_resv_regions() to enumerate the IOVA space
    that is usable through the IOMMU API without introducing
    regressions with respect to existing device assignment
    use cases (USB and IGD).
    Signed-off-by: default avatarEric Auger <eric.auger@redhat.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    adfd3738
iommu.c 55.8 KB