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

From: Nicolin Chen

Date: Mon Sep 07 2026 - 00:15:18 EST


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