[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 12/13] xen/arm: Suspend/resume IOMMU on Xen suspend/resume


  • To: Mykola Kvach <xakep.amatop@xxxxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Tue, 2 Sep 2025 20:51:01 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xZg9WdvBc4ptVK6Fzpby0SF6v91+OlzcC6RnQhtWsRU=; b=uOO7cmXqfj/R0TO7PBP1V9vX81FgrmeuHTiHqQq0Ev5WbFlPEh9SsmSnfLrFNFgW5+GZ9LLQZ5/uUw59OhQe9UV1b+YNyu7wG/LUh/4mLKH9SwU9Y09WRC83aKYVGfSM4ZN7RGo6t8ov/jdq829tMPKftGLQ+25nfZvCURt3RcNJIgTX8ItrRLdt0FIYK7tKflT1ZNJLL++K/kvswVOXL0mP1FHGZ/+mW+dtzzWMYAMJboTAzemsPpPNJEGOWFFD+Y5WcVmYqGochrQEoDeDKB//OZyQVuXILJ9wtJkiaCzhfzuXGZtN4x02JkfoGb6WWNVUHImOwCxPd/Ykv2zWBQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nr+CTPh7NaT3v2vD2gynFLwSvD/CF2nwaIpLJi0WB0FoanG2+tRHoaYS4Zc21mK75Bb+hpGhiPgiisSVyiEfdzTBNVcnFXBAHBFdq6BqXcAII4hYo295f6KA6vXfR6vsU0XIiQEkORM3yaRKdCii9KdRRkpUl55+ykeR/6KWUsMKRCwReMARGsjmJdWrmb3HUFbkF45c8iTMFdOAt6BEdKFAta105FYmbxwXFsl9VNupyjH09D7tzt8npNhyLb2DAuOsZDrGZa4KKvUrmKGtFvSCuL0/HyxDrbh9ewq2pZsKYMjOWeIkfrNSMk1EblYW5DISwphlKUB3zNfqspRr2w==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Oleksandr Tyshchenko <Oleksandr_Tyshchenko@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Rahul Singh <rahul.singh@xxxxxxx>, Mykola Kvach <Mykola_Kvach@xxxxxxxx>
  • Delivery-date: Tue, 02 Sep 2025 20:51:09 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHcG40/8HE5GdQkB0yiceKuLwbmGQ==
  • Thread-topic: [PATCH v6 12/13] xen/arm: Suspend/resume IOMMU on Xen suspend/resume

Hi,

Mykola Kvach <xakep.amatop@xxxxxxxxx> writes:

> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
>
> This is done using generic iommu_suspend/resume functions that cause
> IOMMU driver specific suspend/resume handlers to be called for enabled
> IOMMU (if one has suspend/resume driver handlers implemented).
>
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
> Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx>

Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>

> ---
> Changes in V6:
> - Drop iommu_enabled check from host system suspend.
> ---
>  xen/arch/arm/suspend.c                | 11 +++++++++++
>  xen/drivers/passthrough/arm/smmu-v3.c | 10 ++++++++++
>  xen/drivers/passthrough/arm/smmu.c    | 10 ++++++++++
>  3 files changed, 31 insertions(+)
>
> diff --git a/xen/arch/arm/suspend.c b/xen/arch/arm/suspend.c
> index 35b20581f1..f3a3b831c5 100644
> --- a/xen/arch/arm/suspend.c
> +++ b/xen/arch/arm/suspend.c
> @@ -5,6 +5,7 @@
>  
>  #include <xen/console.h>
>  #include <xen/cpu.h>
> +#include <xen/iommu.h>
>  #include <xen/llc-coloring.h>
>  #include <xen/sched.h>
>  #include <xen/tasklet.h>
> @@ -62,6 +63,13 @@ static void cf_check system_suspend(void *data)
>  
>      time_suspend();
>  
> +    status = iommu_suspend();
> +    if ( status )
> +    {
> +        system_state = SYS_STATE_resume;
> +        goto resume_time;
> +    }
> +
>      console_start_sync();
>      status = console_suspend();
>      if ( status )
> @@ -118,6 +126,9 @@ static void cf_check system_suspend(void *data)
>      console_resume();
>      console_end_sync();
>  
> +    iommu_resume();
> +
> + resume_time:
>      time_resume();
>  
>   resume_nonboot_cpus:
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c 
> b/xen/drivers/passthrough/arm/smmu-v3.c
> index 81071f4018..f887faf7dc 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -2854,6 +2854,13 @@ static void arm_smmu_iommu_xen_domain_teardown(struct 
> domain *d)
>       xfree(xen_domain);
>  }
>  
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +static int arm_smmu_suspend(void)
> +{
> +     return -ENOSYS;
> +}
> +#endif
> +
>  static const struct iommu_ops arm_smmu_iommu_ops = {
>       .page_sizes             = PAGE_SIZE_4K,
>       .init                   = arm_smmu_iommu_xen_domain_init,
> @@ -2866,6 +2873,9 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
>       .unmap_page             = arm_iommu_unmap_page,
>       .dt_xlate               = arm_smmu_dt_xlate,
>       .add_device             = arm_smmu_add_device,
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +     .suspend                = arm_smmu_suspend,
> +#endif
>  };
>  
>  static __init int arm_smmu_dt_init(struct dt_device_node *dev,
> diff --git a/xen/drivers/passthrough/arm/smmu.c 
> b/xen/drivers/passthrough/arm/smmu.c
> index 22d306d0cb..45f29ef8ec 100644
> --- a/xen/drivers/passthrough/arm/smmu.c
> +++ b/xen/drivers/passthrough/arm/smmu.c
> @@ -2947,6 +2947,13 @@ static void arm_smmu_iommu_domain_teardown(struct 
> domain *d)
>       xfree(xen_domain);
>  }
>  
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +static int arm_smmu_suspend(void)
> +{
> +     return -ENOSYS;
> +}
> +#endif
> +
>  static const struct iommu_ops arm_smmu_iommu_ops = {
>      .page_sizes = PAGE_SIZE_4K,
>      .init = arm_smmu_iommu_domain_init,
> @@ -2960,6 +2967,9 @@ static const struct iommu_ops arm_smmu_iommu_ops = {
>      .map_page = arm_iommu_map_page,
>      .unmap_page = arm_iommu_unmap_page,
>      .dt_xlate = arm_smmu_dt_xlate_generic,
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +    .suspend = arm_smmu_suspend,
> +#endif
>  };
>  
>  static struct arm_smmu_device *find_smmu(const struct device *dev)

-- 
WBR, Volodymyr


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.