• Paul Durrant's avatar
    mm / iommu: split need_iommu() into has_iommu_pt() and need_iommu_pt_sync() · 91d4eca7
    Paul Durrant authored
    
    
    The name 'need_iommu()' is a little confusing as it suggests a domain needs
    to use the IOMMU but something might not be set up yet, when in fact it
    represents a tri-state value (not a boolean as might be expected) where
    -1 means 'IOMMU mappings being set up' and 1 means 'IOMMU mappings have
    been fully set up'.
    
    Two different meanings are also inferred from the macro it in various
    places in the code:
    
    - Some callers want to test whether a domain has IOMMU mappings at all
    - Some callers want to test whether they need to synchronize the domain's
      P2M and IOMMU mappings
    
    This patch replaces the 'need_iommu' tri-state value with a defined
    enumeration and adds a boolean flag 'need_sync' to separate these meanings,
    and places both of these in struct domain_iommu, rather than directly in
    struct domain.
    This patch also creates two new boolean macros:
    
    - 'has_iommu_pt()' evaluates to true if a domain has IOMMU mappings, even
      if they are still under construction.
    - 'need_iommu_pt_sync()' evaluates to true if a domain requires explicit
      synchronization of the P2M and IOMMU mappings.
    
    All callers of need_iommu() are then modified to use the macro appropriate
    to what they are trying to test, except for the instance in
    xen/drivers/passthrough/pci.c:assign_device() which has simply been
    removed since it appears to be unnecessary.
    
    NOTE: There are some callers of need_iommu() that strictly operate on
          the hardware domain. In some of these case a more global flag is
          used instead.
    Signed-off-by: default avatarPaul Durrant <paul.durrant@citrix.com>
    Acked-by: default avatarRazvan Cojocaru <rcojocaru@bitdefender.com>
    Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
    Acked-by: default avatarGeorge Dunlap <george.dunlap@citrix.com>
    Acked-by: default avatarJulien Grall <julien.grall@arm.com>
    91d4eca7
iommu.h 8.83 KB