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

Re: [PATCH v8 08/13] iommu/ipmmu-vmsa: Implement suspend/resume callbacks


  • To: Mykola Kvach <xakep.amatop@xxxxxxxxx>
  • From: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • Date: Fri, 24 Apr 2026 13:34:59 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=2; 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=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=; b=N7FNqlSdHvdq7RFcwq7A2e04VOCT5CV2VMYB+A2KSiBtaptUq2Mtd2wJ/x1Nt/EtNndLd77yYmWY6gfdcaeuY6erYXRp/6B03YVkrs7D9ctDw8vAL3l3xju034Xfz4YpGBJpY6JgFm9J5dZaoNaAYRdrJ6zohnCdMW+lneoHTJCR4bf34LiZd+n8UHmEvELGpuREy6Pj/HLL1disE8PWtUOUqyqQCNhzPtLPxzZXEEmMcPLK/Ftiv7IAxKsG7kMKXqnqXGxT5E0FJyIlkGKwqpT1MDxRG3NF6djaNJO45ncIi16HToyiHA/fJgKpQjrLKQ8Xj/KP1zXuXCiyb+4jQg==
  • 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=bmy7HzYXvJ10sD3XGH84NxdNdHKo+kCSSsl5RHAIIog=; b=TZs7HNrvd7WCYeOo4gN6Hh92X+Akt9eH6/FkG3NFURUW5qOrW8wfIMr5ZujydyUgLgZq25fVNG7nyInF2fgnMbCnNasJ5B2OECeSR8sc7SgGR6J2WwKv9nQQMgXz+Y5mLSh+gDV3Q4MMvQKZLa8xHj54T5nw3cdOhw5vNR8V8Q1Kv47lAjRrvNdyvNIIJNQCsFcCQTGQQlre8dcHFoBvnw1zX5siEaj7RHTuzzk1fC/6BrrTW7Eus4m1O7/BAMtsP22pk6MVHfN1/Yqkeaot526vCaX+IOXkPfdB2aZZlWKJhUd2Z4MZUqoYz81AubysXQoICrMPioZhFq2LneTkTQ==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=pCfx8Mw3Boe/sE1PCHtPeInu9ELWFJxG0FDiYKb+IECeAiPiMM3Ax/CnW2EvjyKTD96oLxjt3aARPQ1CrIkSfadkSUSB6R6mv7rqO0nzBdgeREgUzsxWH0NKFOA1mXD2AAvN4I+dl0di/X3UfrarjaPnKZwaZi7fb5ExIAejIZ6AyZn5YYxicILm5Igc2Ys2uZSjlSj1z2KYsKkK8pflxAOERVmPrpvZCG2mcH7pMb+Tj6kiN7yUwC/7UtISJDf3XkQ2kHN5Dbl45sI/QidAaoBOSzyjvFRybZJfIGad+JYQA1z88cyeZmBbmOwxBAfj8f1UnA8+9HObi5ItUnltmw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Faj4Z16snzJOt/egmzQYE8d6D20uF+3/dlEdQ0iX/kTkgY1uIu8MDZvFl87DoZAADkJ0cxS/OEUn/E8I5aCD0wVOZXliVBiGFOw1Ddc7JJb6RbpSWisnMhBi+WaveOuFAhoOyvNWdS5Z71ZHxExx8IS7ne6PZ2hZ+YRx60Bd4k5LCSh2+b71lcG1DTNGSpSAF9kNW/yS0YTrkz5YPBWH0qxAXx1yC3rI+PeFeqtpT3yS9Yaw09JqnS4xrvvhB2Bq6c1mruu7+QuE53v+PT2xsUp+onRrOqVjXgf02q/WiXX+AsTNR5dSC+jXEBsnQTVXxjRdDKIP0Nqn4prJ8zknHQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Mykola Kvach <mykola_kvach@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Fri, 24 Apr 2026 13:36:23 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Thread-index: AQHc0+8l3+I00g5Ym0qFHM3WPj8anQ==
  • Thread-topic: [PATCH v8 08/13] iommu/ipmmu-vmsa: Implement suspend/resume callbacks

Hi Mykola,

> On 2 Apr 2026, at 11:45, Mykola Kvach <xakep.amatop@xxxxxxxxx> wrote:
> 
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
> 
> Store and restore active context and micro-TLB registers.
> 
> Tested on R-Car H3 Starter Kit.
> 
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
> Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx>
> ---
> Changes in V7:
> - moved suspend context allocation before pci stuff
> ---
> xen/drivers/passthrough/arm/ipmmu-vmsa.c | 305 ++++++++++++++++++++++-
> 1 file changed, 298 insertions(+), 7 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c 
> b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> index ea9fa9ddf3..6765bd3083 100644
> --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> @@ -71,6 +71,8 @@
> })
> #endif
> 
> +#define dev_dbg(dev, fmt, ...)    \
> +    dev_print(dev, XENLOG_DEBUG, fmt, ## __VA_ARGS__)
> #define dev_info(dev, fmt, ...)    \
>     dev_print(dev, XENLOG_INFO, fmt, ## __VA_ARGS__)
> #define dev_warn(dev, fmt, ...)    \
> @@ -130,6 +132,24 @@ struct ipmmu_features {
>     unsigned int imuctr_ttsel_mask;
> };
> 


> […]


> 
> @@ -1340,10 +1608,11 @@ static int ipmmu_add_device(u8 devfn, struct device 
> *dev)
>     struct iommu_fwspec *fwspec;
> 
> #ifdef CONFIG_HAS_PCI
> +    int ret;
> +
>     if ( dev_is_pci(dev) )
>     {
>         struct pci_dev *pdev = dev_to_pci(dev);
> -        int ret;
> 
>         if ( devfn != pdev->devfn )
>             return 0;
> @@ -1371,6 +1640,15 @@ static int ipmmu_add_device(u8 devfn, struct device 
> *dev)
>         /* Let Xen know that the master device is protected by an IOMMU. */
>         dt_device_set_protected(dev_to_dt(dev));
>     }
> +
> +#ifdef CONFIG_SYSTEM_SUSPEND
> +    if ( ipmmu_alloc_ctx_suspend(dev) )
> +    {
> +        dev_err(dev, "Failed to allocate context for suspend\n");
> +        return -ENOMEM;
> +    }
> +#endif

If this fails the device will remain protected, I suggest we move this one 
before `if ( !dev_is_pci(dev) ) { … }`
block

The rest looks ok to me, but I’m not an expert of this part.

Cheers,
Luca


 


Rackspace

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