• Adrian Huang's avatar
    iommu/amd: Fix the overwritten field in IVMD header · 0bbe4ced
    Adrian Huang authored
    Commit 387caf0b ("iommu/amd: Treat per-device exclusion
    ranges as r/w unity-mapped regions") accidentally overwrites
    the 'flags' field in IVMD (struct ivmd_header) when the I/O
    virtualization memory definition is associated with the
    exclusion range entry. This leads to the corrupted IVMD table
    (incorrect checksum). The kdump kernel reports the invalid checksum:
    
    ACPI BIOS Warning (bug): Incorrect checksum in table [IVRS] - 0x5C, should be 0x60 (20200717/tbprint-177)
    AMD-Vi: [Firmware Bug]: IVRS invalid checksum
    
    Fix the above-mentioned issue by modifying the 'struct unity_map_entry'
    member instead of the IVMD header.
    
    Cleanup: The *exclusion_range* functions are not used anymore, so
    get rid of them.
    
    Fixes: 387caf0b ("iommu/amd: Treat per-device exclusion ranges as r/w unity-mapped regions")
    Reported-and-tested-by: default avatarBaoquan He <bhe@redhat.com>
    Signed-off-by: default avatarAdrian Huang <ahuang12@lenovo.com>
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Link: https://lore.kernel.org/r/20200926102602.19177-1-adrianhuang0701@gmail.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    0bbe4ced
init.c 77.2 KB