Trying to test my gart/iommu vmcore problem on RH
Bob Montgomery
bob.montgomery at hp.com
Mon Sep 22 19:31:34 EDT 2008
On Tue, 2008-09-09 at 21:12 +0000, I wrote:
> The kdump kernel wouldn't be in danger of being overwritten, it just
> might not be able to set up any IOs that work to its own address space
> if an IOMMU is out there waiting to grab them.
>
> For the calgary case, we'd maybe have to add the Crash Kernel range to
> the list of things sent to iommu_range_reserve in
> calgary_reserve_regions, to prevent those addresses from ever being
> given out.
>
> Bob M.
While this, or something like it, is necessary, it isn't sufficient.
I think what we would really need to do is to have the primary kernel
set up an identity mapping for all pages in the Crash kernel range,
or the subset of pages that could be IO targets when the kdump kernel
is running. This would allow a still-running IOMMU from the primary
kernel to translate kdump IOs to kdump addresses transparently.
And that leads to the Kdump IO Rule:
The primary kernel is responsible for setting up any necessary
conditions to allow the kdump kernel to perform its required
IO without detecting any iommu.
The kdump kernel must refrain from detecting and initializing
any iommu.
This has a these effects:
A) Primary kernel: depending on what it is using for as an IOMMU,
it may have to do some (or considerable) setup, to guarantee
that the kdump kernel can have IO capability to its Crash
kernel address range.
B) Primary kernel: the Crash kernel range must be set up in an address
range whose physical addresses are accessible to IO cards
without address remapping.
C) Kdump kernel: the kdump kernel must ignore any IOMMU hardware that
might be "detectable".
The setup responsibilities for the primary kernel depend on what it is
currently using for dma mapping:
1) no iommu (nommu_map_single): No setup is required for kdump.
Leftover IOs will go to IO buffers allocated by the primary
kernel outside of the Crash kernel area. Kdump IOs will
go to IO buffers allocated by the kdump kernel in the Crash
kernel area.
2) swiotlb (swiotlb_map_single_phys): No setup is required for kdump.
Leftover IOs will go to the primary kernel bounce buffers
outside of the Crash kernel area. Kdump IOs will go to IO
buffers allocated by the kdump kernel in the Crash kernel area.
3) GART (gart_map_single): No setup is required for kdump. Leftover
IOs will be mapped through the GART aperture to IO buffers
allocated by the primary kernel outside of the Crash Kernel
area. Kdump IOs will go to IO buffers allocated by the kdump
kernel in the Crash kernel area.
4) Calgary IOMMU (calgary_map_single): The Crash kernel memory range
must be pre-allocated for IO and identity-mapped, so any IO
operation to an address in the Crash kernel range is allowed
to complete to that same address. To preallocate for a
128MB Crash kernel area, 32K entries (256 Kbytes) are used
from the Calgary table. For a 4GB system, the default size
of the table is 1024K entries (8 Mbytes).
Leftover IOs will go to IO buffers allocated by the primary
kernel and remapped by the Calgary IOMMU. Neither the IO-side
address (iova) nor the physical address of a leftover IO will
be in the Crash kernel area. Kdump IOs will go to IO buffers
allocated by the kdump kernel, remapped by the Calgary IOMMU
to those same addresses (iova equals physical address within
the Crash kernel area).
5) Intel IOMMU (intel_map_single): The Crash kernel memory range must
be pre-allocated and identity-mapped for each hw device that
is needed by the kdump kernel, so any IO operation to an
address in the Crash kernel range is allowed to complete to
that same address.
Leftover IOs will go to IO buffers allocated by the primary
kernel and remapped by the Intel IOMMU. Neither the IO-side
address (iova) nor the physical address of a leftover IO
will be in the Crash kernel area. Kdump IOs will go to IO
buffers allocated by the kdump kernel, remapped by the Intel
IOMMU to those same addresses (iova equals physical address
within the Crash kernel area).
This all assumes no virtual machine stuff yet.
Possible? Comments? Corrections?
Bob Montgomery
More information about the kexec
mailing list