From: Jason Gunthorpe <jgg@ziepe.ca>
To: Samiullah Khawaja <skhawaja@google.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
Lu Baolu <baolu.lu@linux.intel.com>,
Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
Pasha Tatashin <pasha.tatashin@soleen.com>,
iommu@lists.linux.dev, Robin Murphy <robin.murphy@arm.com>,
Pratyush Yadav <pratyush@kernel.org>,
Kevin Tian <kevin.tian@intel.com>,
linux-kernel@vger.kernel.org, Saeed Mahameed <saeedm@nvidia.com>,
Adithya Jayachandran <ajayachandra@nvidia.com>,
Parav Pandit <parav@nvidia.com>,
Leon Romanovsky <leonro@nvidia.com>, William Tu <witu@nvidia.com>,
Vipin Sharma <vipinsh@google.com>,
dmatlack@google.com, zhuyifei@google.com,
Chris Li <chrisl@kernel.org>,
praan@google.com
Subject: Re: [RFC PATCH 08/15] iommu/vt-d: Implement live update preserve_iommu_context
Date: Mon, 29 Sep 2025 12:57:23 -0300 [thread overview]
Message-ID: <20250929155723.GE2695987@ziepe.ca> (raw)
In-Reply-To: <20250928190624.3735830-9-skhawaja@google.com>
On Sun, Sep 28, 2025 at 07:06:16PM +0000, Samiullah Khawaja wrote:
> +static int unpreserve_iommu_context(struct intel_iommu *iommu, int end)
> +{
> + struct context_entry *context;
> + int i;
> +
> + if (end < 0)
> + end = ROOT_ENTRY_NR;
> +
> + for (i = 0; i < end; i++) {
> + context = iommu_context_addr(iommu, i, 0, 0);
> + if (context)
> + WARN_ON_ONCE(kho_unpreserve_folio(virt_to_folio(context)));
Wrong function. IIRC all of these allocations came from iommu-pages.c
and have struct page metadata.
iommu-pages needs to participate in restoring them and put back it's
struct page information.
> static int preserve_iommu_state(struct intel_iommu *iommu,
> struct iommu_unit_ser *ser)
> {
> - pr_warn("Not implemented\n");
> - return 0;
> + int ret;
> +
> + spin_lock(&iommu->lock);
> + ret = preserve_iommu_context(iommu);
> + if (ret)
> + goto error;
> +
> + ret = kho_preserve_folio(virt_to_folio(iommu->root_entry));
> + if (ret) {
> + unpreserve_iommu_context(iommu, -1);
> + goto error;
> + }
> +
> + ser->phys_addr = iommu->reg_phys;
> + ser->root_table = __pa(iommu->root_entry);
> + atomic_set(&iommu->preserved, 1);
Why all these atomics??
Also most probably this should all be flowing through the core code as
I think the core code has to genericall prevent attach/detach/probe
from happing once serialization has started.
Jason
next prev parent reply other threads:[~2025-09-29 15:57 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-28 19:06 [RFC PATCH 00/15] iommu: Add live update state preservation Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 01/15] iommu/vt-d: Register with Live Update Orchestrator Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 02/15] iommu: Add rw_semaphore to serialize live update state Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 03/15] iommu/vt-d: Prevent hotplugs when live update state is not normal Samiullah Khawaja
2025-09-29 15:51 ` Jason Gunthorpe
2025-09-29 16:50 ` Pasha Tatashin
2025-09-29 17:21 ` Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 04/15] iommu: Add preserve iommu_domain op Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 05/15] iommu: Introduce API to preserve iommu domain Samiullah Khawaja
2025-09-29 15:54 ` Jason Gunthorpe
2025-09-29 18:11 ` Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 06/15] iommu/vt-d: Add stub intel iommu domain preserve op Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 07/15] iommu/vt-d: Add implementation of live update prepare callback Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 08/15] iommu/vt-d: Implement live update preserve_iommu_context Samiullah Khawaja
2025-09-29 15:57 ` Jason Gunthorpe [this message]
2025-09-28 19:06 ` [RFC PATCH 09/15] iommu/vt-d: Add live update freeze callback Samiullah Khawaja
2025-09-29 15:58 ` Jason Gunthorpe
2025-09-28 19:06 ` [RFC PATCH 10/15] iommu/vt-d: Restore iommu root_table and context on live update Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 11/15] iommufd: Add basic skeleton based on liveupdate_file_handle Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 12/15] iommufd-luo: Implement basic prepare/cancel/finish/retrieve using folios Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 13/15] iommufd: Persist iommu domains for live update Samiullah Khawaja
2025-09-29 16:00 ` Jason Gunthorpe
2025-09-29 17:32 ` Samiullah Khawaja
2025-09-29 17:43 ` Jason Gunthorpe
2025-09-29 17:45 ` Pasha Tatashin
2025-09-30 13:07 ` Pasha Tatashin
2025-09-30 13:59 ` Jason Gunthorpe
2025-09-30 15:09 ` Pasha Tatashin
2025-09-30 16:31 ` Jason Gunthorpe
2025-09-30 20:02 ` Samiullah Khawaja
2025-09-30 21:05 ` Jason Gunthorpe
2025-09-30 23:15 ` Samiullah Khawaja
2025-10-01 11:47 ` Jason Gunthorpe
2025-10-01 19:28 ` Pasha Tatashin
2025-10-02 11:57 ` Jason Gunthorpe
2025-10-02 14:43 ` Pasha Tatashin
2025-10-02 15:10 ` Jason Gunthorpe
2025-10-02 19:29 ` Samiullah Khawaja
2025-10-02 21:12 ` Jason Gunthorpe
2025-10-02 21:30 ` Pasha Tatashin
2025-10-02 22:58 ` Jason Gunthorpe
2025-10-02 23:56 ` Samiullah Khawaja
2025-10-03 12:09 ` Jason Gunthorpe
2025-10-02 1:00 ` Samiullah Khawaja
2025-10-02 13:41 ` Jason Gunthorpe
2025-10-02 14:59 ` Pasha Tatashin
2025-10-02 17:03 ` Samiullah Khawaja
2025-10-02 17:37 ` Jason Gunthorpe
2025-10-02 18:08 ` Samiullah Khawaja
2025-10-10 1:28 ` Pasha Tatashin
2025-10-10 14:24 ` Jason Gunthorpe
2025-09-28 19:06 ` [RFC PATCH 14/15] iommu/vt-d: sanitize restored root table and iommu contexts Samiullah Khawaja
2025-09-28 19:06 ` [RFC PATCH 15/15] iommufd/selftest: Add test to verify iommufd preservation Samiullah Khawaja
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=20250929155723.GE2695987@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=ajayachandra@nvidia.com \
--cc=baolu.lu@linux.intel.com \
--cc=chrisl@kernel.org \
--cc=dmatlack@google.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=leonro@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=parav@nvidia.com \
--cc=pasha.tatashin@soleen.com \
--cc=praan@google.com \
--cc=pratyush@kernel.org \
--cc=robin.murphy@arm.com \
--cc=saeedm@nvidia.com \
--cc=skhawaja@google.com \
--cc=vipinsh@google.com \
--cc=will@kernel.org \
--cc=witu@nvidia.com \
--cc=zhuyifei@google.com \
/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.