From: Pranjal Shrivastava <praan@google.com>
To: Mostafa Saleh <smostafa@google.com>
Cc: Nicolin Chen <nicolinc@nvidia.com>,
will@kernel.org, robin.murphy@arm.com, jgg@nvidia.com,
joro@8bytes.org, kees@kernel.org, baolu.lu@linux.intel.com,
kevin.tian@intel.com, miko.lenczewski@arm.com,
linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev,
linux-kernel@vger.kernel.org, stable@vger.kernel.org,
jamien@nvidia.com
Subject: Re: [PATCH rc v7 0/7] iommu/arm-smmu-v3: Fix device crash on kdump kernel
Date: Tue, 30 Jun 2026 14:51:40 +0000 [thread overview]
Message-ID: <akPX_N0P2EcI_jbV@google.com> (raw)
In-Reply-To: <akPB6l-fuJUcg4a2@google.com>
On Tue, Jun 30, 2026 at 01:17:30PM +0000, Mostafa Saleh wrote:
> On Mon, Jun 29, 2026 at 11:15:33PM -0700, Nicolin Chen wrote:
> > When transitioning to a kdump kernel, the primary kernel might have crashed
> > while endpoint devices were actively bus-mastering DMA. Currently, the SMMU
> > driver aggressively resets the hardware during probe by clearing CR0_SMMUEN
> > and setting the Global Bypass Attribute (GBPA) to ABORT.
> >
> > In a kdump scenario, this aggressive reset is highly destructive:
> > a) If GBPA is set to ABORT, in-flight DMA will be aborted, generating fatal
> > PCIe AER or SErrors that may panic the kdump kernel
>
> Can you please clarify more on those errors, what conditions will
> trigger that?
> For example, patch 4 disables the EVTQ to avoid events as there might
> be a lot, why are they not fatal also?
>
> > b) If GBPA is set to BYPASS, in-flight DMA targeting some IOVAs will bypass
> > the SMMU and corrupt the physical memory at those 1:1 mapped IOVAs.
> >
> > To safely absorb in-flight DMA, the kdump kernel must leave SMMUEN=1 intact
> > and avoid modifying STRTAB_BASE. This allows HW to continue translating in-
> > flight DMA using the crashed kernel's page tables until the endpoint device
> > drivers probe and quiesce their respective hardware.
> >
> > However, the ARM SMMUv3 architecture specification states that updating the
> > SMMU_STRTAB_BASE register while SMMUEN == 1 is UNPREDICTABLE or ignored.
> >
> > This leaves a kdump kernel no choice but to adopt the stream table from the
> > crashed kernel.
>
> In many cases the patches assume that the CDs/STE might be corrupted,
> but still attempt to retrieve them with some validation
> (log2size/split...)
> However, the base address might be broken, TLBs state is unknown...
>
> IMO, although that might improve the status quo, there are still
> heuristics, in addition to noticeable complexity to transition the
> stream tables. I wonder if FW can deal with AER in that case before
> booting the kdump kernel.
I guess we're reading the base address from the HW register itself so
that should be fine? CDs are in-memory so that's why they could be
corrupted?
About the TLB state, I'm not sure what might pollute it, since this is a
kexec, I don't expect any non-kernel entity to gain program control
before the kdump kernel.. Hence, IMO, we can't configure FW to deal with
AER here..
Thanks,
Praan
next prev parent reply other threads:[~2026-06-30 14:51 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 6:15 [PATCH rc v7 0/7] iommu/arm-smmu-v3: Fix device crash on kdump kernel Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 1/7] iommu/arm-smmu-v3: Add arm_smmu_kdump_adopt_strtab() for kdump Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 2/7] iommu/arm-smmu-v3: Implement is_attach_deferred() " Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 3/7] iommu/arm-smmu-v3: Do not enable EVTQ/PRIQ interrupts in kdump kernel Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 4/7] iommu/arm-smmu-v3: Skip EVTQ/PRIQ setup " Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 5/7] iommu/arm-smmu-v3: Retain CR0_SMMUEN during kdump device reset Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 6/7] iommu/arm-smmu-v3: Skip RMR bypass for kdump adoption Nicolin Chen
2026-06-30 6:15 ` [PATCH rc v7 7/7] iommu/arm-smmu-v3: Detect ARM_SMMU_OPT_KDUMP_ADOPT in probe() Nicolin Chen
2026-06-30 13:17 ` [PATCH rc v7 0/7] iommu/arm-smmu-v3: Fix device crash on kdump kernel Mostafa Saleh
2026-06-30 14:51 ` Pranjal Shrivastava [this message]
2026-06-30 15:33 ` Mostafa Saleh
2026-06-30 18:30 ` Pranjal Shrivastava
2026-06-30 19:08 ` Jason Gunthorpe
2026-06-30 19:24 ` Nicolin Chen
2026-07-01 0:25 ` Jason Gunthorpe
2026-06-30 18:59 ` Jason Gunthorpe
2026-07-01 13:05 ` Mostafa Saleh
2026-07-01 13:36 ` Pranjal Shrivastava
2026-07-02 14:41 ` Jason Gunthorpe
2026-07-02 19:25 ` Nicolin Chen
2026-07-02 23:50 ` Jason Gunthorpe
2026-07-03 3:32 ` Nicolin Chen
2026-07-03 11:57 ` Jason Gunthorpe
2026-07-03 18:20 ` Nicolin Chen
2026-07-03 19:10 ` Jason Gunthorpe
2026-06-30 18:56 ` Jason Gunthorpe
2026-06-30 19:27 ` Nicolin Chen
2026-07-01 9:58 ` Mostafa Saleh
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=akPX_N0P2EcI_jbV@google.com \
--to=praan@google.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jamien@nvidia.com \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kees@kernel.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miko.lenczewski@arm.com \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.com \
--cc=stable@vger.kernel.org \
--cc=will@kernel.org \
/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.