• Mika Westerberg's avatar
    i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging · 17a0f3ac
    Mika Westerberg authored
    Before sending a MSI the hardware writes information pertinent to the
    interrupt cause to a memory location pointed by SMTICL register. This
    memory holds three double words where the least significant bit tells
    whether the interrupt cause of master/target/error is valid. The driver
    does not use this but we need to set it up because otherwise it will
    perform DMA write to the default address (0) and this will cause an
    IOMMU fault such as below:
    
      DMAR: DRHD: handling fault status reg 2
      DMAR: [DMA Write] Request device [00:12.0] PASID ffffffff fault addr 0
            [fault reason 05] PTE Write access is not set
    
    To prevent this from happening, provide a proper DMA buffer for this
    that then gets mapped by the IOMMU accordingly.
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: default avatarFrom: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
    17a0f3ac
i2c-ismt.c 27.6 KB