linux/drivers/iommu
Nicolin Chen 84df65fcfb iommu/tegra241-cmdqv: Reset VCMDQ in tegra241_vcmdq_hw_init_user()
commit 80f1a2c233 upstream.

The Enable bits in CMDQV/VINTF/VCMDQ_CONFIG registers do not actually reset
the HW registers. So, the driver explicitly clears all the registers when a
VINTF or VCMDQ is being initialized calling its hw_deinit() function.

However, a userspace VCMDQ is not properly reset, unlike an in-kernel VCMDQ
getting reset in tegra241_vcmdq_hw_init().

Meanwhile, tegra241_vintf_hw_init() calling tegra241_vintf_hw_deinit() will
not deinit any VCMDQ, since there is no userspace VCMDQ mapped to the VINTF
at that stage.

Then, this may result in dirty VCMDQ registers, which can fail the VM.

Like tegra241_vcmdq_hw_init(), reset a VCMDQ in tegra241_vcmdq_hw_init() to
fix this bug. This is required by a host kernel.

Fixes: 6717f26ab1e7 ("iommu/tegra241-cmdqv: Add user-space use support")
Cc: stable@vger.kernel.org
Reported-by: Bao Nguyen <ncqb@google.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-02-06 16:57:44 +01:00
..
amd iommu/amd: Fix error path in amd_iommu_probe_device() 2026-01-30 10:32:17 +01:00
arm iommu/tegra241-cmdqv: Reset VCMDQ in tegra241_vcmdq_hw_init_user() 2026-02-06 16:57:44 +01:00
intel x86/msi: Make irq_retrigger() functional for posted MSI 2026-01-02 12:56:57 +01:00
iommufd iommufd/selftest: Check for overflow in IOMMU_TEST_OP_ADD_RESERVED 2026-01-02 12:56:48 +01:00
riscv Merge branches 'apple/dart', 'ti/omap', 'riscv', 'intel/vt-d' and 'amd/amd-vi' into next 2025-09-26 10:03:33 +02:00
apple-dart.c iommu/apple-dart: fix device leak on of_xlate() 2026-01-08 10:16:55 +01:00
dma-iommu.c iommu/dma: add missing support for DMA_ATTR_MMIO for dma_iova_unlink() 2025-11-24 22:15:11 +01:00
dma-iommu.h iommu: Drop sw_msi from iommu_domain 2025-03-25 10:18:19 -03:00
exynos-iommu.c iommu/exynos: fix device leak on of_xlate() 2026-01-08 10:16:55 +01:00
fsl_pamu.c iommu/fsl: fix all kernel-doc warnings in fsl_pamu.c 2023-03-22 14:50:15 +01:00
fsl_pamu.h iommu/fsl_pamu: hardcode the window address and size in pamu_config_ppaace 2021-04-07 10:56:52 +02:00
fsl_pamu_domain.c iommu/fsl_pamu: remove trailing space after \n 2025-05-16 08:39:04 +02:00
fsl_pamu_domain.h iommu/fsl_pamu: remove the snoop_id field 2021-04-07 10:56:52 +02:00
hyperv-iommu.c x86/hyperv: Clean up hv_map/unmap_interrupt() return values 2025-07-09 23:49:25 +00:00
io-pgfault.c iommu: Fix potential memory leak in iopf_queue_remove_device() 2025-02-10 14:49:30 +01:00
io-pgtable-arm-v7s.c iommu/io-pgtable-arm-v7s: Remove split on unmap behavior 2024-11-06 15:42:36 +00:00
io-pgtable-arm.c iommu/io-pgtable-arm: fix size_t signedness bug in unmap path 2026-01-30 10:32:23 +01:00
io-pgtable-arm.h iommu/io-pgtable-arm: Move some definitions to a header 2020-09-28 23:48:06 +01:00
io-pgtable-dart.c iommu/io-pgtable-dart: Fix off by one error in table index check 2025-09-13 08:07:25 +02:00
io-pgtable.c iommu: Allow passing custom allocators to pgtable drivers 2023-11-27 11:10:12 +01:00
iommu-debugfs.c iommu: Fix IOMMU debugfs fallout 2019-02-26 11:15:58 +01:00
iommu-pages.c iommu: Clear the freelist after iommu_put_pages_list() 2025-05-16 14:29:16 +02:00
iommu-pages.h iommu/vtd: Remove iommu_alloc_pages_node() 2025-04-17 16:22:54 +02:00
iommu-priv.h iommufd: Register iommufd mock devices with fwspec 2025-09-30 09:54:12 -03:00
iommu-sva.c iommu/sva: include mmu_notifier.h header 2026-01-23 11:21:36 +01:00
iommu-sysfs.c iommu/sysfs: constify the class struct 2024-10-29 09:50:24 +01:00
iommu-traces.c iommu: Remove detach_dev callback 2023-01-13 16:39:18 +01:00
iommu.c iommufd: Register iommufd mock devices with fwspec 2025-09-30 09:54:12 -03:00
iova.c - The series "zram: optimal post-processing target selection" from 2024-11-23 09:58:07 -08:00
ipmmu-vmsa.c iommu/ipmmu-vmsa: fix device leak on of_xlate() 2026-01-08 10:16:55 +01:00
irq_remapping.c IOMMU Updates for Linux v6.10 2024-05-18 10:55:13 -07:00
irq_remapping.h iommu/vt-d: Allocate DMAR fault interrupts locally 2024-04-26 11:57:36 +02:00
Kconfig Merge branch 'apple/dart' into next 2025-07-24 11:18:16 +01:00
Makefile iommu: make inclusion of riscv directory conditional 2025-05-16 08:46:47 +02:00
msm_iommu.c iommu/msm: Remove ops->pgsize_bitmap 2025-06-27 17:34:10 +02:00
msm_iommu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 267 2019-06-05 17:30:29 +02:00
msm_iommu_hw-8xxx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 267 2019-06-05 17:30:29 +02:00
mtk_iommu.c iommu/mediatek: fix device leak on of_xlate() 2026-01-08 10:16:55 +01:00
mtk_iommu_v1.c iommu/mediatek-v1: fix device leaks on probe() 2026-01-08 10:16:55 +01:00
of_iommu.c iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
omap-iommu-debug.c iommu/omap: Fix buffer overflow in debugfs 2022-09-07 10:42:28 +02:00
omap-iommu.c iommu/omap: fix device leaks on probe_device() 2026-01-08 10:16:56 +01:00
omap-iommu.h iommu/omap: fix device leaks on probe_device() 2026-01-08 10:16:56 +01:00
omap-iopgtable.h iommu/omap: Fix -Woverflow warnings when compiling on 64-bit architectures 2020-03-04 16:24:46 +01:00
rockchip-iommu.c IOMMU Updates for Linux v6.17: 2025-07-30 10:42:00 -07:00
s390-iommu.c iommu/s390: Make attach succeed when the device was surprise removed 2025-09-05 15:11:09 +02:00
sprd-iommu.c iommu: Remove iommu_ops pgsize_bitmap from simple drivers 2025-06-27 08:55:57 +02:00
sun50i-iommu.c iommu/sun50i: fix device leak on of_xlate() 2026-01-08 10:16:56 +01:00
tegra-smmu.c iommu/tegra: fix device leak on probe_device() 2026-01-08 10:16:56 +01:00
virtio-iommu.c iommu/virtio: Make instance lookup robust 2025-08-22 08:43:23 +02:00