All of lore.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: 4+ 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]
2026-04-24  8:10 ` Suthikulpanit, Suravee
2026-05-11  7:37 ` Joerg Roedel

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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.