[PATCH v4 2/2] iommu/arm-smmu-v3: Default queue depths to one page in a kdump kernel

Nicolin Chen nicolinc at nvidia.com
Sun Sep 6 21:10:32 PDT 2026


On Wed, Sep 02, 2026 at 01:17:24PM +0100, Kiryl Shutsemau (Meta) wrote:
> @@ -5208,10 +5216,13 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
>  		return -ENXIO;
>  	}
>  
> -	smmu->evtq.q.llq.max_n_shift = min_t(u32, EVTQ_MAX_SZ_SHIFT,
> -					     FIELD_GET(IDR1_EVTQS, reg));
> -	smmu->priq.q.llq.max_n_shift = min_t(u32, PRIQ_MAX_SZ_SHIFT,
> -					     FIELD_GET(IDR1_PRIQS, reg));
> +	hw_shift = min_t(u32, EVTQ_MAX_SZ_SHIFT, FIELD_GET(IDR1_EVTQS, reg));
> +	smmu->evtq.q.llq.max_n_shift =
> +		arm_smmu_queue_max_n_shift(hw_shift, EVTQ_ENT_SZ_SHIFT, 0);
> +
> +	hw_shift = min_t(u32, PRIQ_MAX_SZ_SHIFT, FIELD_GET(IDR1_PRIQS, reg));
> +	smmu->priq.q.llq.max_n_shift =
> +		arm_smmu_queue_max_n_shift(hw_shift, PRIQ_ENT_SZ_SHIFT, 0);

And I think they read better with two small helpers like cmdq:

static inline u32 arm_smmu_evtq_max_n_shift(u32 ceiling)
{
	ceiling = min_t(u32, EVTQ_MAX_SZ_SHIFT, ceiling);

	return arm_smmu_queue_max_n_shift(ceiling, EVTQ_ENT_SZ_SHIFT, 0);
}

static inline u32 arm_smmu_priq_max_n_shift(u32 ceiling)
{
	ceiling = min_t(u32, PRIQ_MAX_SZ_SHIFT, ceiling);

	return arm_smmu_queue_max_n_shift(ceiling, PRIQ_ENT_SZ_SHIFT, 0);
}

Thanks
Nicolin



More information about the linux-arm-kernel mailing list