[PATCH v2 0/2] iommu/amd: Fix device table setup in kdump kernels
From: Matt Fleming
Date: Tue Oct 13 2026 - 08:31:11 EST
From: Matt Fleming <mfleming@xxxxxxxxxxxxxx>
An AMD kdump kernel booted with crashkernel=512M,high and
crashkernel=0,low fails to allocate its device table because there's no
memory below 4G. IOMMU init fails and, on our systems with an Intel
E810 NIC, the ice driver's TX queues time out, so the dump never gets
sent.
Since commit 38e5f33ee359 ("iommu/amd: Reuse device table for kdump"), a
kdump kernel normally reuses the previous kernel's table. Patch 1
programs the new table if reuse fails. Patch 2 drops GFP_DMA32 for
kdump kernels. Normal kernels still allocate below 4G, because that's
what the kdump kernel checks before reusing the table.
On an AMD EPYC system with an E810 NIC, the kdump kernel without these
patches failed the order-9 GFP_DMA32 allocation and its TX queues timed
out. With these patches, the kdump kernel reused the old device table
and the dump was written over the network. The reuse-failure path in
patch 1 was found by code inspection, not exercised by this test.
---
Changes in v2:
- Explain the split base-register write and DMA32 requirement in patch 2.
- Limit patch 2's stable backports to 6.18.x and later, which contain
38e5f33ee359.
- Add Ashish Kalra's and Ankit Soni's Reviewed-by tags to both patches,
and Vasant Hegde's Reviewed-by tag to patch 1.
- No code changes from v1.
v1: https://lore.kernel.org/r/20261002133143.3628181-1-matt@xxxxxxxxxxxxxxxx
Matt Fleming (2):
iommu/amd: Program device table when kdump reuse fails
iommu/amd: Don't allocate kdump device table from DMA32
drivers/iommu/amd/init.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
--
2.43.0