[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: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • From: Mykola Kvach <xakep.amatop@xxxxxxxxx>
  • Date: Tue, 5 May 2026 14:45:03 +0300
  • Arc-authentication-results: i=1; mx.google.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=6zEpHfFqvUI3K5cIq5lmaqZoX68nLN2ySftFfomzcAc=; fh=uAzoxIkY79cy0zES8IqO07ArU7DBG3jlr2bg4XRVkR0=; b=f66sOzkDcYbZZx76iQSaKYdtDwkzK/BejluqSJ6zm1JAxkAiqG4e/+HZwSBz9MRgTX STbrlLHMQfrnoO7XTaYsGVOs+PcRDQv2t31y5HKgtnARdZoYumyCB/BQuiAEjy6z2voM 77xMApO72PxIG+q+Y4F9A1DhsRZrWs1BWQ9fhj581zUcyqE9AwOZh6Ypf+ZvBuQ8Mum4 u5M9M8pTeIBl8KEFbTuI5oO2s+kMl9hGKzvIaw+2wFdcFgcGnkOfEDtSSViJEAEMT5Fs Wpw5sP3wWj1Aso0S4KzW76+QJhlfaIwJW+gvo7epotGSZxRRZJffM+SX34SXSrFh7At/ pBOQ==; darn=lists.xenproject.org
  • Arc-seal: i=1; a=rsa-sha256; t=1777981515; cv=none; d=google.com; s=arc-20240605; b=WvP2+1gDFVPHfD0ibEyxdevfi4lpQ9MqbJaIcfi5zpJNgdismJvVzTPSrGTY0YfVLs mLQvgc/w9hk9oyGdSoayC4sYeSlaF1H6Jjlh6yzjvrD9hZ0K2t9Vi5DFW4vqn/u/9Vlm y0VIJmd25LPevbfIs58CvkfiVrsp7cpqR0NaVgo1sf122DygOF0q3BYYhuuxdPvYeHlB 9+JU3AnwjH4oHUr+5y1Q+zcJIBq4BeeIW4vvpuqCTKPwhwZlKagnRoU0IBYUtenx29ls ZagnJmP852TdX+ak7eYxHGxhrCcV+30Mv5APXDvbYkaf+yVgwJ734ySn8KgGr6ustXfr cYNw==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version"
  • 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: Tue, 05 May 2026 11:45:34 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi Luca,

Thank you for the review.

On Fri, Apr 24, 2026 at 4:36 PM Luca Fancellu <Luca.Fancellu@xxxxxxx> wrote:
>
> 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

Good point, thanks.

Yes, this should be fixed. In the original ordering, a failure in
ipmmu_alloc_ctx_suspend() could leave a non-PCI DT device marked as
protected even though ipmmu_add_device() returned an error.

I'll reorder the code so dt_device_set_protected() is done only
after ipmmu_alloc_ctx_suspend() succeeds. This keeps the successful path
unchanged and avoids leaving stale protected state on failure.

Best regards,
Mykola

>
> 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®.