[PATCH v5 4/6] drm/sprd: add Unisoc's drm display controller driver

Chunyan Zhang zhang.lyra at gmail.com
Wed May 26 07:59:32 UTC 2021


Hi Robin,

On Tue, 18 May 2021 at 00:35, Robin Murphy <robin.murphy at arm.com> wrote:

> On 2021-05-17 10:27, Joerg Roedel wrote:
> > On Fri, Apr 30, 2021 at 08:20:10PM +0800, Kevin Tang wrote:
> >> Cc  Robin & Joerg
> >
> > This is just some GPU internal MMU being used here, it seems. It doesn't
> > use the IOMMU core code, so no Ack needed from the IOMMU side.
>
> Except the actual MMU being used is drivers/iommu/sprd_iommu.c - this is


Yes, it is using drivers/iommu/sprd_iommu.c.


>
> just the display driver poking directly at the interrupt registers of
> its associated IOMMU instance.


Actually the display driver is poking its own interrupt registers in which
some interrupts are caused by using IOMMU, others are purely its own ones:
+/* Interrupt control & status bits */
+#define BIT_DPU_INT_DONE               BIT(0)
+#define BIT_DPU_INT_TE                 BIT(1)
+#define BIT_DPU_INT_ERR                        BIT(2)
+#define BIT_DPU_INT_UPDATE_DONE                BIT(4)
+#define BIT_DPU_INT_VSYNC              BIT(5)
+#define BIT_DPU_INT_MMU_VAOR_RD                BIT(16)
+#define BIT_DPU_INT_MMU_VAOR_WR                BIT(17)
+#define BIT_DPU_INT_MMU_INV_RD         BIT(18)
+#define BIT_DPU_INT_MMU_INV_WR         BIT(19)

>From what I see in the product code, along with the information my
colleagues told me, these _INT_MMU_ interrupts only need to be dealt with
by client devices(i.e. display). IOMMU doesn't even have the INT_STS
register for some early products which we're trying to support in the
mainstream kernel.


> I still think this is wrong, and that it
> should be treated as a shared interrupt, with the IOMMU driver handling
> its own registers and reporting to the client through the standard
> report_iommu_fault() API, especially since there are apparently more
> blocks using these IOMMU instances than just the display.
>

For the next generation IOMMU, we will handle interrupts in IOMMU drivers
like you say here.
But like I explained above, we have to leave interrupt handling in the
client device driver since the IOMMU we 're using in this display device
doesn't have an INT_STS register in the IOMMU register range.

Thanks for the review,
Chunyan


> Robin.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210526/4b2e59d1/attachment.htm>


More information about the dri-devel mailing list