• Lennert Buytenhek's avatar
    iommu/amd: Use report_iommu_fault() · 9f78e446
    Lennert Buytenhek authored
    This patch makes iommu/amd call report_iommu_fault() when an I/O page
    fault occurs, which has two effects:
    
    1) It allows device drivers to register a callback to be notified of
       I/O page faults, via the iommu_set_fault_handler() API.
    
    2) It triggers the io_page_fault tracepoint in report_iommu_fault()
       when an I/O page fault occurs.
    
    The latter point is the main aim of this patch, as it allows
    rasdaemon-like daemons to be notified of I/O page faults, and to
    possibly initiate corrective action in response.
    
    A number of other IOMMU drivers already use report_iommu_fault(), and
    I/O page faults on those IOMMUs therefore already trigger this
    tracepoint -- but this isn't yet the case for AMD-Vi and Intel DMAR.
    
    The AMD IOMMU specification suggests that the bit in an I/O page fault
    event log entry that signals whether an I/O page fault was for a read
    request or for a write request is only meaningful when the faulting
    access was to a present page, but some testing on a Ryzen 3700X suggests
    that this bit encodes the correct value even for I/O page faults to
    non-present pages, and therefore, this patch passes the R/W information
    up the stack even for I/O page faults to non-present pages.
    Signed-off-by: default avatarLennert Buytenhek <buytenh@arista.com>
    Link: https://lore.kernel.org/r/YVLyBW97vZLpOaAp@wantstofly.orgSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    9f78e446
iommu.c 85.4 KB