From: Pranjal Shrivastava <praan@google.com>
To: Xueqi Zhang <xueqi.zhang@mediatek.com>
Cc: Yong Wu <yong.wu@mediatek.com>, Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
Joerg Roedel <joro@8bytes.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Project_Global_Chrome_Upstream_Group@mediatek.com,
Ning li <ning.li@mediatek.com>,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
iommu@lists.linux.dev
Subject: Re: [RFC PATCH 5/8] iommu/arm-smmu-v3: Add IRQ handle for smmu impl
Date: Mon, 16 Jun 2025 21:32:40 +0000 [thread overview]
Message-ID: <aFCNeOP7oRv7NRjQ@google.com> (raw)
In-Reply-To: <20250616025628.25454-6-xueqi.zhang@mediatek.com>
On Mon, Jun 16, 2025 at 10:56:11AM +0800, Xueqi Zhang wrote:
> Add IRQ handle for smmu impl
>
> Signed-off-by: Xueqi Zhang <xueqi.zhang@mediatek.com>
> ---
> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 9 ++++++++-
> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 8 ++++++++
> 2 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> index d36124a6bb54..154417b380fa 100644
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> @@ -1954,7 +1954,8 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
> arm_smmu_decode_event(smmu, evt, &event);
> if (arm_smmu_handle_event(smmu, evt, &event))
> arm_smmu_dump_event(smmu, evt, &event, &rs);
> -
> + if (smmu->impl && smmu->impl->smmu_evt_handler)
> + smmu->impl->smmu_evt_handler(irq, smmu, evt, &rs);
> put_device(event.dev);
> cond_resched();
> }
> @@ -2091,7 +2092,13 @@ static irqreturn_t arm_smmu_combined_irq_thread(int irq, void *dev)
>
> static irqreturn_t arm_smmu_combined_irq_handler(int irq, void *dev)
> {
> + struct arm_smmu_device *smmu = dev;
> +
> arm_smmu_gerror_handler(irq, dev);
> +
> + if (smmu->impl && smmu->impl->combined_irq_handle)
> + smmu->impl->combined_irq_handle(irq, smmu);
> +
> return IRQ_WAKE_THREAD;
> }
>
> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
> index 99eeb6143c49..f45c4bf84bc1 100644
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
> @@ -792,6 +792,7 @@ struct arm_smmu_device {
>
> struct rb_root streams;
> struct mutex streams_mutex;
> + const struct arm_smmu_v3_impl *impl;
> };
>
> struct arm_smmu_stream {
> @@ -998,6 +999,13 @@ int arm_smmu_cmdq_issue_cmdlist(struct arm_smmu_device *smmu,
> struct arm_smmu_cmdq *cmdq, u64 *cmds, int n,
> bool sync);
>
> +/* Implementation details */
> +struct arm_smmu_v3_impl {
> + int (*combined_irq_handle)(int irq, struct arm_smmu_device *smmu_dev);
> + int (*smmu_evt_handler)(int irq, struct arm_smmu_device *smmu_dev,
> + u64 *evt, struct ratelimit_state *rs);
> +};
Let's add these to the exisiting struct arm_smmu_impl_ops and invoke
them like:
if (smmu->impl && smmu->impl_ops->combined_irq_handle)
smmu->impl_ops->combined_irq_handle(irq, smmu);
Or maybe we could merge the existing impl_dev and impl_ops into a single
structure.
> +
> struct arm_smmu_device *arm_smmu_v3_impl_init(struct arm_smmu_device *smmu);
> #if IS_ENABLED(CONFIG_ARM_SMMU_V3_MEDIATEK)
> struct arm_smmu_device *arm_smmu_v3_impl_mtk_init(struct arm_smmu_device *smmu);
> --
> 2.46.0
>
>
next prev parent reply other threads:[~2025-06-16 21:35 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-16 2:56 [RFC PATCH 0/8] Add mt8196 SMMU support Xueqi Zhang
2025-06-16 2:56 ` [RFC PATCH 1/8] dt-bindings: iommu: mediatek: Add mt8196 support Xueqi Zhang
2025-06-16 4:40 ` Rob Herring (Arm)
2025-06-16 14:27 ` Rob Herring
2025-06-17 6:28 ` Krzysztof Kozlowski
2025-06-16 2:56 ` [RFC PATCH 2/8] iommu/arm-smmu-v3: Add SMMU implementation Xueqi Zhang
2025-06-16 21:17 ` Pranjal Shrivastava
2025-06-16 2:56 ` [RFC PATCH 3/8] iommu/arm-smmu-v3: Add implementation for MT8196 MM SMMU Xueqi Zhang
2025-06-16 2:56 ` [RFC PATCH 4/8] iommu/arm-smmu-v3: Add implementation for MT8196 APU SMMU Xueqi Zhang
2025-06-16 2:56 ` [RFC PATCH 5/8] iommu/arm-smmu-v3: Add IRQ handle for smmu impl Xueqi Zhang
2025-06-16 21:32 ` Pranjal Shrivastava [this message]
2025-06-16 2:56 ` [RFC PATCH 6/8] iommu/arm-smmu-v3: mediatek: Add wrapper handle for IRQ Xueqi Zhang
2025-06-24 11:22 ` Will Deacon
2025-06-25 16:54 ` Marc Zyngier
2025-06-16 2:56 ` [RFC PATCH 7/8] iommu/arm-smmu-v3: Invoke rpm operation before accessing the hw Xueqi Zhang
2025-06-16 20:54 ` Pranjal Shrivastava
2025-06-16 2:56 ` [RFC PATCH 8/8] iommu/arm-smmu-v3: mediatek: Implement rpm get/put function Xueqi Zhang
2025-09-18 11:37 ` [RFC PATCH 0/8] Add mt8196 SMMU support AngeloGioacchino Del Regno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aFCNeOP7oRv7NRjQ@google.com \
--to=praan@google.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=ning.li@mediatek.com \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.com \
--cc=will@kernel.org \
--cc=xueqi.zhang@mediatek.com \
--cc=yong.wu@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.