public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jacob Pan <jacob.pan@linux.microsoft.com>
To: Yu Zhang <zhangyu1@linux.microsoft.com>
Cc: iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
	Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] iommu/amd: Remove dead code for exclusion ranges in IVMD
Date: Tue, 31 Mar 2026 10:29:46 -0700	[thread overview]
Message-ID: <20260331102946.00004bcc@linux.microsoft.com> (raw)
In-Reply-To: <20260331152550.479841-1-zhangyu1@linux.microsoft.com>

Hi Yu,

On Tue, 31 Mar 2026 23:25:50 +0800
Yu Zhang <zhangyu1@linux.microsoft.com> wrote:

> Exclusion ranges in IVMD are treated as unity mappings with r&w
> permissions since commit 0bbe4ced53e3 ("iommu/amd: Fix the
> overwritten field in IVMD header"), using 1:1 mappings. And IOMMU
> Exclusion Base & Range Limit Registers (0x0020/0x0028) are actually
> no longer used.
> 
> As a result, several definitions and code paths became dead code:
> 
>  - exclusion_start/exclusion_length in struct amd_iommu are never
>    assigned,
>  - iommu_set_exclusion_range() always returns 0 now.
>  - MMIO_EXCL_ENABLE_MASK & MMIO_EXCL_ALLOW_MASK are only used by
>    the removed iommu_set_exclusion_range().
>  - DEV_ENTRY_EX is no longer set in any DTE.
>  - IOMMU_UNITY_MAP_FLAG_EXCL_RANGE is no longer set, thus the
>    IOMMU_RESV_RESERVED branch in amd_iommu_get_resv_regions() is
>    no longer reachable.
> 
> Just remove all of the dead code. No functional change.
> 
> Signed-off-by: Yu Zhang <zhangyu1@linux.microsoft.com>
> ---
>  drivers/iommu/amd/amd_iommu_types.h | 12 ------------
>  drivers/iommu/amd/init.c            | 23 -----------------------
>  drivers/iommu/amd/iommu.c           |  3 ---
>  3 files changed, 38 deletions(-)
> 
> diff --git a/drivers/iommu/amd/amd_iommu_types.h
> b/drivers/iommu/amd/amd_iommu_types.h index
> c685d3771436..a481d8cbd053 100644 ---
> a/drivers/iommu/amd/amd_iommu_types.h +++
> b/drivers/iommu/amd/amd_iommu_types.h @@ -50,10 +50,6 @@
>  #define MMIO_GET_BUS(x) (((x) & MMIO_RANGE_BUS_MASK) >>
> MMIO_RANGE_BUS_SHIFT) #define MMIO_MSI_NUM(x)	((x) & 0x1f)
>  
> -/* Flag masks for the AMD IOMMU exclusion range */
> -#define MMIO_EXCL_ENABLE_MASK 0x01ULL
> -#define MMIO_EXCL_ALLOW_MASK  0x02ULL
> -
>  /* Used offsets into the MMIO space */
>  #define MMIO_DEV_TABLE_OFFSET   0x0000
>  #define MMIO_CMD_BUF_OFFSET     0x0008
> @@ -231,7 +227,6 @@
>  #define DEV_ENTRY_IR            0x3d
>  #define DEV_ENTRY_IW            0x3e
>  #define DEV_ENTRY_NO_PAGE_FAULT	0x62
> -#define DEV_ENTRY_EX            0x67
>  #define DEV_ENTRY_SYSMGT1       0x68
>  #define DEV_ENTRY_SYSMGT2       0x69
>  #define DTE_DATA1_SYSMGT_MASK	GENMASK_ULL(41, 40)
> @@ -384,8 +379,6 @@
>  #define IOMMU_PROT_IR 0x01
>  #define IOMMU_PROT_IW 0x02
>  
> -#define IOMMU_UNITY_MAP_FLAG_EXCL_RANGE	(1 << 2)
> -
>  /* IOMMU capabilities */
>  #define IOMMU_CAP_IOTLB   24
>  #define IOMMU_CAP_NPCACHE 26
> @@ -680,11 +673,6 @@ struct amd_iommu {
>  	/* pci domain of this IOMMU */
>  	struct amd_iommu_pci_seg *pci_seg;
>  
> -	/* start of exclusion range of that IOMMU */
> -	u64 exclusion_start;
> -	/* length of exclusion range of that IOMMU */
> -	u64 exclusion_length;
> -
>  	/* command buffer virtual address */
>  	u8 *cmd_buf;
>  	u32 cmd_buf_head;
> diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c
> index f3fd7f39efb4..a33bf3f5ed8a 100644
> --- a/drivers/iommu/amd/init.c
> +++ b/drivers/iommu/amd/init.c
> @@ -352,28 +352,6 @@ static void iommu_write_l2(struct amd_iommu
> *iommu, u8 address, u32 val) *
>   ****************************************************************************/
>  
> -/*
> - * This function set the exclusion range in the IOMMU. DMA accesses
> to the
> - * exclusion range are passed through untranslated
> - */
> -static void iommu_set_exclusion_range(struct amd_iommu *iommu)
> -{
> -	u64 start = iommu->exclusion_start & PAGE_MASK;
> -	u64 limit = (start + iommu->exclusion_length - 1) &
> PAGE_MASK;
> -	u64 entry;
> -
> -	if (!iommu->exclusion_start)
> -		return;
> -
> -	entry = start | MMIO_EXCL_ENABLE_MASK;
> -	memcpy_toio(iommu->mmio_base + MMIO_EXCL_BASE_OFFSET,
> -			&entry, sizeof(entry));
> -
> -	entry = limit;
> -	memcpy_toio(iommu->mmio_base + MMIO_EXCL_LIMIT_OFFSET,
> -			&entry, sizeof(entry));
> -}
> -
>  static void iommu_set_cwwb_range(struct amd_iommu *iommu)
>  {
>  	u64 start = iommu_virt_to_phys((void *)iommu->cmd_sem);
> @@ -2891,7 +2869,6 @@ static void early_enable_iommu(struct amd_iommu
> *iommu) iommu_set_device_table(iommu);
>  	iommu_enable_command_buffer(iommu);
>  	iommu_enable_event_buffer(iommu);
> -	iommu_set_exclusion_range(iommu);
>  	iommu_enable_gt(iommu);
>  	iommu_enable_ga(iommu);
>  	iommu_enable_xt(iommu);
> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
> index 760d5f4623b5..4e7f5b993c65 100644
> --- a/drivers/iommu/amd/iommu.c
> +++ b/drivers/iommu/amd/iommu.c
> @@ -3076,9 +3076,6 @@ static void amd_iommu_get_resv_regions(struct
> device *dev, prot |= IOMMU_READ;
>  		if (entry->prot & IOMMU_PROT_IW)
>  			prot |= IOMMU_WRITE;
> -		if (entry->prot & IOMMU_UNITY_MAP_FLAG_EXCL_RANGE)
> -			/* Exclusion range */
> -			type = IOMMU_RESV_RESERVED;
>  
>  		region =
> iommu_alloc_resv_region(entry->address_start, length, prot, type,
Reviewed-by: Jacob Pan <jacob.pan@linux.microsoft.com>

      reply	other threads:[~2026-03-31 17:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-31 15:25 [PATCH] iommu/amd: Remove dead code for exclusion ranges in IVMD Yu Zhang
2026-03-31 17:29 ` Jacob Pan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260331102946.00004bcc@linux.microsoft.com \
    --to=jacob.pan@linux.microsoft.com \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@ziepe.ca \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=will@kernel.org \
    --cc=zhangyu1@linux.microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox