Patch "iommu/tegra241-cmdqv: Fix alignment failure at max_n_shift" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iommu/tegra241-cmdqv: Fix alignment failure at max_n_shift

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iommu-tegra241-cmdqv-fix-alignment-failure-at-max_n_.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 439e0748ea1ff5b892d4c7101e8483465650f4fa
Author: Nicolin Chen <nicolinc@xxxxxxxxxx>
Date:   Sun Nov 10 19:02:26 2024 -0800

    iommu/tegra241-cmdqv: Fix alignment failure at max_n_shift
    
    [ Upstream commit a3799717b881aa0f4e722afb70e7b8ba84ae4f36 ]
    
    When configuring a kernel with PAGE_SIZE=4KB, depending on its setting of
    CONFIG_CMA_ALIGNMENT, VCMDQ_LOG2SIZE_MAX=19 could fail the alignment test
    and trigger a WARN_ON:
        WARNING: at drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:3646
        Call trace:
         arm_smmu_init_one_queue+0x15c/0x210
         tegra241_cmdqv_init_structures+0x114/0x338
         arm_smmu_device_probe+0xb48/0x1d90
    
    Fix it by capping max_n_shift to CMDQ_MAX_SZ_SHIFT as SMMUv3 CMDQ does.
    
    Fixes: 918eb5c856f6 ("iommu/arm-smmu-v3: Add in-kernel support for NVIDIA Tegra241 (Grace) CMDQV")
    Signed-off-by: Nicolin Chen <nicolinc@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20241111030226.1940737-1-nicolinc@xxxxxxxxxx
    Signed-off-by: Will Deacon <will@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c b/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
index a243c543598ce..6b479592140c4 100644
--- a/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
+++ b/drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c
@@ -509,7 +509,8 @@ static int tegra241_vcmdq_alloc_smmu_cmdq(struct tegra241_vcmdq *vcmdq)
 
 	snprintf(name, 16, "vcmdq%u", vcmdq->idx);
 
-	q->llq.max_n_shift = VCMDQ_LOG2SIZE_MAX;
+	/* Queue size, capped to ensure natural alignment */
+	q->llq.max_n_shift = min_t(u32, CMDQ_MAX_SZ_SHIFT, VCMDQ_LOG2SIZE_MAX);
 
 	/* Use the common helper to init the VCMDQ, and then... */
 	ret = arm_smmu_init_one_queue(smmu, q, vcmdq->page0,




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux