[PATCH 3/3] iommu/arm-smmu-v3: support suspend/resume

Jason Gunthorpe jgg at ziepe.ca
Mon Mar 25 06:48:48 PDT 2024


On Sun, Mar 24, 2024 at 08:29:00PM +0800, Peng Fan (OSS) wrote:

> +static void arm_smmu_resume_unique_irqs(struct arm_smmu_device *smmu)
> +{
> +	struct device *dev = smmu->dev;
> +	struct msi_desc *desc;
> +	struct msi_msg msg;
> +
> +	if (!dev->msi.domain)
> +		return;
> +
> +	desc = irq_get_msi_desc(smmu->evtq.q.irq);
> +	if (desc) {
> +		get_cached_msi_msg(smmu->evtq.q.irq, &msg);
> +		arm_smmu_write_msi_msg(desc, &msg);
> +	}
> +
> +	desc = irq_get_msi_desc(smmu->gerr_irq);
> +	if (desc) {
> +		get_cached_msi_msg(smmu->gerr_irq, &msg);
> +		arm_smmu_write_msi_msg(desc, &msg);
> +	}
> +
> +	if (smmu->features & ARM_SMMU_FEAT_PRI) {
> +		desc = irq_get_msi_desc(smmu->priq.q.irq);
> +		if (desc) {
> +			get_cached_msi_msg(smmu->priq.q.irq, &msg);
> +			arm_smmu_write_msi_msg(desc, &msg);
> +		}
> +	}
> +}

I wonder if this should be done instead by converting the driver away
from platform MSI to the new MSI mechanism?

Jason



More information about the linux-arm-kernel mailing list