diff mbox series

[1/1,SRU,OEM-6.0/Unstable] UBUNTU: SAUCE: iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs on Raptor Lake

Message ID 20220913175019.1483658-2-vicamo.yang@canonical.com
State New
Headers show
Series use IOMMU passthrough mode for Intel IPUs on Intel Raptor Lake platforms | expand

Commit Message

You-Sheng Yang Sept. 13, 2022, 5:50 p.m. UTC
From: zouxiaoh <xiaohong.zou@intel.com>

BugLink: https://bugs.launchpad.net/bugs/1989041

Intel IPU(Image Processing Unit) has its own (IO)MMU hardware,
The IPU driver allocates its own page table that is not mapped
via the DMA, and thus the Intel IOMMU driver blocks access giving
this error: DMAR: DRHD: handling fault status reg 3 DMAR:
[DMA Read] Request device [00:05.0] PASID ffffffff
fault addr 76406000 [fault reason 06] PTE Read access is not set
As IPU is not an external facing device which is not risky, so use
IOMMU passthrough mode for Intel IPUs.

(backported from https://github.com/intel/ipu6-drivers/blob/89c6b99e4bec00a04b53f37cd8c3c01ce824a4ab/patch/IOMMU-passthrough-for-intel-ipu.diff)
Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
---
 drivers/iommu/intel/iommu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Kai-Heng Feng Sept. 14, 2022, 9:09 a.m. UTC | #1
On Wed, Sep 14, 2022 at 1:50 AM You-Sheng Yang
<vicamo.yang@canonical.com> wrote:
>
> From: zouxiaoh <xiaohong.zou@intel.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1989041
>
> Intel IPU(Image Processing Unit) has its own (IO)MMU hardware,
> The IPU driver allocates its own page table that is not mapped
> via the DMA, and thus the Intel IOMMU driver blocks access giving
> this error: DMAR: DRHD: handling fault status reg 3 DMAR:
> [DMA Read] Request device [00:05.0] PASID ffffffff
> fault addr 76406000 [fault reason 06] PTE Read access is not set
> As IPU is not an external facing device which is not risky, so use
> IOMMU passthrough mode for Intel IPUs.
>
> (backported from https://github.com/intel/ipu6-drivers/blob/89c6b99e4bec00a04b53f37cd8c3c01ce824a4ab/patch/IOMMU-passthrough-for-intel-ipu.diff)
> Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
> ---
>  drivers/iommu/intel/iommu.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index 5894a2ad638f..b602fd5084cd 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -38,7 +38,8 @@
>  #define IS_USB_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_SERIAL_USB)
>  #define IS_ISA_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_BRIDGE_ISA)
>  #define IS_INTEL_IPU(pdev) ((pdev)->vendor == PCI_VENDOR_ID_INTEL &&   \
> -                          ((pdev)->device == 0x9a19 ||         \
> +                          ((pdev)->device == 0xa75d ||         \
> +                           (pdev)->device == 0x9a19 ||         \

Since it's not in IPU6 driver, maybe it's better to put it upstream?

Kai-Heng

>                             (pdev)->device == 0x9a39 ||         \
>                             (pdev)->device == 0x4e19 ||         \
>                             (pdev)->device == 0x465d ||         \
> --
> 2.37.2
>
>
> --
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff mbox series

Patch

diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 5894a2ad638f..b602fd5084cd 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -38,7 +38,8 @@ 
 #define IS_USB_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_SERIAL_USB)
 #define IS_ISA_DEVICE(pdev) ((pdev->class >> 8) == PCI_CLASS_BRIDGE_ISA)
 #define IS_INTEL_IPU(pdev) ((pdev)->vendor == PCI_VENDOR_ID_INTEL &&	\
-			   ((pdev)->device == 0x9a19 ||		\
+			   ((pdev)->device == 0xa75d ||		\
+			    (pdev)->device == 0x9a19 ||		\
 			    (pdev)->device == 0x9a39 ||		\
 			    (pdev)->device == 0x4e19 ||		\
 			    (pdev)->device == 0x465d ||		\