From: Jason Gunthorpe <jgg@ziepe.ca>
To: Shyam Saini <shyamsaini@linux.microsoft.com>
Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, virtualization@lists.linux.dev,
will@kernel.org, jacob.pan@linux.microsoft.com,
eric.auger@redhat.com, code@tyhicks.com,
eahariha@linux.microsoft.com, vijayb@linux.microsoft.com,
bboscaccy@linux.microsoft.com
Subject: Re: [PATCH v3 3/3] arm-smmu: select suitable MSI IOVA
Date: Wed, 6 Aug 2025 20:58:48 -0300 [thread overview]
Message-ID: <20250806235848.GD377696@ziepe.ca> (raw)
In-Reply-To: <20250806215539.1240561-4-shyamsaini@linux.microsoft.com>
On Wed, Aug 06, 2025 at 02:55:39PM -0700, Shyam Saini wrote:
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> @@ -3642,17 +3642,30 @@ static int arm_smmu_of_xlate(struct device *dev,
> static void arm_smmu_get_resv_regions(struct device *dev,
> struct list_head *head)
> {
> - struct iommu_resv_region *region;
> int prot = IOMMU_WRITE | IOMMU_NOEXEC | IOMMU_MMIO;
>
> - region = iommu_alloc_resv_region(MSI_IOVA_BASE, MSI_IOVA_LENGTH,
> - prot, IOMMU_RESV_SW_MSI, GFP_KERNEL);
> - if (!region)
> - return;
> -
> - list_add_tail(®ion->list, head);
> + static const u64 msi_bases[] = { MSI_IOVA_BASE, MSI_IOVA_BASE2 };
>
> iommu_dma_get_resv_regions(dev, head);
> +
> + /*
> + * Use the first msi_base that does not intersect with a platform
> + * reserved region. The SW MSI base selection is entirely arbitrary.
> + */
> + for (int i = 0; i != ARRAY_SIZE(msi_bases); i++) {
> + struct iommu_resv_region *region;
> +
> + if (resv_region_intersects(msi_bases[i], MSI_IOVA_LENGTH, head))
> + continue;
> +
> + region = iommu_alloc_resv_region(msi_bases[i], MSI_IOVA_LENGTH, prot,
> + IOMMU_RESV_SW_MSI, GFP_KERNEL);
> + if (!region)
> + return;
> +
> + list_add_tail(®ion->list, head);
> + return;
> + }
> }
I think this whole series looks pretty good, but I would suggest to
put this in a helper..
'iommu_set_sw_msi()' perhaps, must be called after iommu_dma_get_resv_regions()
Then maybe the constants can just be placed in the .c file inside the
helper function.
Jsaon
next prev parent reply other threads:[~2025-08-07 0:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-06 21:55 [PATCH v3 0/3] arm-smmu: select suitable MSI IOVA Shyam Saini
2025-08-06 21:55 ` [PATCH v3 1/3] arm-smmu: move MSI_IOVA macro definitions Shyam Saini
2025-08-07 14:32 ` kernel test robot
2025-08-06 21:55 ` [PATCH v3 2/3] iommu/of: fix device tree configuration for PCI devices Shyam Saini
2025-08-08 12:15 ` Jason Gunthorpe
2025-08-14 23:30 ` Shyam Saini
2025-08-15 0:39 ` Jason Gunthorpe
2025-08-15 2:32 ` Shyam Saini
2025-08-18 15:53 ` Jason Gunthorpe
2025-08-26 1:15 ` Shyam Saini
2025-08-26 12:36 ` Jason Gunthorpe
2025-08-26 22:19 ` Shyam Saini
2025-08-06 21:55 ` [PATCH v3 3/3] arm-smmu: select suitable MSI IOVA Shyam Saini
2025-08-06 23:58 ` Jason Gunthorpe [this message]
2025-08-07 17:55 ` kernel test robot
2025-08-11 22:34 ` Jacob Pan
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=20250806235848.GD377696@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=bboscaccy@linux.microsoft.com \
--cc=code@tyhicks.com \
--cc=devicetree@vger.kernel.org \
--cc=eahariha@linux.microsoft.com \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=jacob.pan@linux.microsoft.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=shyamsaini@linux.microsoft.com \
--cc=vijayb@linux.microsoft.com \
--cc=virtualization@lists.linux.dev \
--cc=will@kernel.org \
/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.