]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
iommu/tegra241-cmdqv: Set supports_cmd op in tegra241_vcmdq_hw_init()
authorNicolin Chen <nicolinc@nvidia.com>
Fri, 13 Mar 2026 00:36:34 +0000 (17:36 -0700)
committerWill Deacon <will@kernel.org>
Tue, 24 Mar 2026 14:04:34 +0000 (14:04 +0000)
commit803e41f36d227022ab9bbe780c82283fd4713b2e
tree0971d0002ee12c5cc45744177bb6ac018a2fda73
parent3b793983834e9484a834912548f4786b742abc92
iommu/tegra241-cmdqv: Set supports_cmd op in tegra241_vcmdq_hw_init()

vintf->hyp_own is finalized in tegra241_vintf_hw_init(). On the other hand,
tegra241_vcmdq_alloc_smmu_cmdq() is called via an init_structures callback,
which is earlier than tegra241_vintf_hw_init().

This results in the supports_cmd op always being set to the guest function,
although this doesn't break any functionality nor have some noticeable perf
impact since non-invalidation commands are not issued in the perf sensitive
context.

Fix this by moving supports_cmd to tegra241_vcmdq_hw_init().

After this change,
 - For a guest kernel, this will be a status quo
 - For a host kernel, non-invalidation commands will be issued to VCMDQ(s)

Fixes: a9d40285bdef ("iommu/tegra241-cmdqv: Limit CMDs for VCMDQs of a guest owned VINTF")
Reported-by: Eric Auger <eric.auger@redhat.com>
Reported-by: Shameer Kolothum <skolothumtho@nvidia.com>
Closes: https://lore.kernel.org/qemu-devel/CH3PR12MB754836BEE54E39B30C7210C0AB44A@CH3PR12MB7548.namprd12.prod.outlook.com/
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Shameer Kolothum <skolothumtho@nvidia.com>
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c