• Suravee Suthikulpanit's avatar
    iommu/amd: Use the most comprehensive IVHD type that the driver can support · 8c7142f5
    Suravee Suthikulpanit authored
    The IVRS in more recent AMD system usually contains multiple
    IVHD block types (e.g. 0x10, 0x11, and 0x40) for each IOMMU.
    The newer IVHD types provide more information (e.g. new features
    specified in the IOMMU spec), while maintain compatibility with
    the older IVHD type.
    
    Having multiple IVHD type allows older IOMMU drivers to still function
    (e.g. using the older IVHD type 0x10) while the newer IOMMU driver can use
    the newer IVHD types (e.g. 0x11 and 0x40). Therefore, the IOMMU driver
    should only make use of the newest IVHD type that it can support.
    
    This patch adds new logic to determine the highest level of IVHD type
    it can support, and use it throughout the to initialize the driver.
    This requires adding another pass to the IVRS parsing to determine
    appropriate IVHD type (see function get_highest_supported_ivhd_type())
    before parsing the contents.
    
    [Vincent: fix the build error of IVHD_DEV_ACPI_HID flag not found]
    Signed-off-by: default avatarWan Zongshun <vincent.wan@amd.com>
    Signed-off-by: default avatarSuravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    8c7142f5
amd_iommu_init.c 59.2 KB