[lvc-project] [PATCH 5.10 1/1] iommu/amd: Prepare for multiple DMA domain types
Fedor Pchelkin
pchelkin at ispras.ru
Thu Oct 24 17:13:14 MSK 2024
On Fri, 18. Oct 12:51, Daniil Dulov wrote:
> From: Robin Murphy <robin.murphy at arm.com>
>
> commit 6d596039392bac2a0160fb71300d314943411e2a upstream.
>
> The DMA ops reset/setup can simply be unconditional, since
> iommu-dma already knows only to touch DMA domains.
>
> Signed-off-by: Robin Murphy <robin.murphy at arm.com>
> Link: https://lore.kernel.org/r/6450b4f39a5a086d505297b4a53ff1e4a7a0fe7c.1628682049.git.robin.murphy@arm.com
> Signed-off-by: Joerg Roedel <jroedel at suse.de>
> Signed-off-by: Daniil Dulov <d.dulov at aladdin.ru>
> ---
> drivers/iommu/amd/iommu.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
> index 0a061a196b53..16a1c2a44bce 100644
> --- a/drivers/iommu/amd/iommu.c
> +++ b/drivers/iommu/amd/iommu.c
> @@ -2257,12 +2257,9 @@ static struct iommu_device *amd_iommu_probe_device(struct device *dev)
>
> static void amd_iommu_probe_finalize(struct device *dev)
> {
> - struct iommu_domain *domain;
> -
> /* Domains are initialized for this device - have a look what we ended up with */
> - domain = iommu_get_domain_for_dev(dev);
> - if (domain->type == IOMMU_DOMAIN_DMA)
> - iommu_setup_dma_ops(dev, IOVA_START_PFN << PAGE_SHIFT, 0);
> + set_dma_ops(dev, NULL);
> + iommu_setup_dma_ops(dev, 0, U64_MAX);
Всё же у меня сомнения насчёт валидности этого патча в контексте стабильной
ветки 5.10. Как минимум, аргументы функции iommu_setup_dma_ops() изменились
до неузнаваемости, а сама функция осталась, как и раньше.
Скорее всего, патч основывается на изменениях, произведённых в
upstream-коде и актуален *только* при них. Нужно дополнительное исследование
проблемы. В том числе, в комментарии в Svacer лучше показать примерный
сценарий, при котором возможен возврат NULL из iommu_get_domain_for_dev() в
данном месте.
> }
>
> static void amd_iommu_release_device(struct device *dev)
> --
> 2.25.1
More information about the lvc-project
mailing list