Re: [PATCH 4/5] iommu/amd: Make CMD_INV_IOMMU_ALL_PAGES_ADDRESS match the spec

Wei Wang
2026-04-01T06:43:22Z

On 3/27/26 11:23 PM, Jason Gunthorpe wrote:
> The spec in Table 14 defines the "Entire Cache" case as having the low
> 12 bits as zero. Indeed the command format doesn't even have the low
> 12 bits. Since there is only one user now, fix the constant to have 0
> in the low 12 bits instead of 1 and remove the masking.
>
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
> drivers/iommu/amd/amd_iommu_types.h | 2 +-
> drivers/iommu/amd/iommu.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
> index c685d3771436a2..c239c5fbe47461 100644
> --- a/drivers/iommu/amd/amd_iommu_types.h
> +++ b/drivers/iommu/amd/amd_iommu_types.h
> @@ -221,7 +221,7 @@
> #define PPR_STATUS_MASK 0xf
> #define PPR_STATUS_SHIFT 12
>
> -#define CMD_INV_IOMMU_ALL_PAGES_ADDRESS 0x7fffffffffffffffULL
> +#define CMD_INV_IOMMU_ALL_PAGES_ADDRESS 0x7ffffffffffff000ULL

Nit: Using GENMASK_ULL(62, 12) here might be easier to read

Reviewed-by: Wei Wang <wei.w.wang@hotmail.com>

>
> /* macros and definitions for device table entries */
> #define DEV_ENTRY_VALID 0x00
> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
> index a3773a145af811..4e057fbc20021e 100644
> --- a/drivers/iommu/amd/iommu.c
> +++ b/drivers/iommu/amd/iommu.c
> @@ -1287,7 +1287,7 @@ static inline u64 build_inv_address(u64 address, u64 last)
> *
> */
> if (unlikely(sz_lg2 > 52))
> - return (CMD_INV_IOMMU_ALL_PAGES_ADDRESS & PAGE_MASK) |
> + return CMD_INV_IOMMU_ALL_PAGES_ADDRESS |
> CMD_INV_IOMMU_PAGES_SIZE_MASK;
>
> /*