]> git.baikalelectronics.ru Git - kernel.git/commit
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 27 Apr 2022 10:19:10 +0000 (13:19 +0300)
committerWolfram Sang <wsa@kernel.org>
Sat, 21 May 2022 10:51:48 +0000 (12:51 +0200)
commitc8d5c8e4eabba8643c9d144a4e3e45fb149178a3
tree83bbe318dee35f6b7c9bb98da0c37784c8f69886
parent5d8423f56125e95a6a748e3bcdd7aad42e6a241b
i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging

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: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-ismt.c