[PATCH v8 02/10] iommu/vt-d: Items required for kdump
Joerg Roedel
joro at 8bytes.org
Mon Jan 12 08:48:03 PST 2015
On Mon, Jan 12, 2015 at 11:15:38AM -0500, Vivek Goyal wrote:
> On Mon, Jan 12, 2015 at 05:06:46PM +0100, Joerg Roedel wrote:
> > On Mon, Jan 12, 2015 at 10:29:19AM -0500, Vivek Goyal wrote:
> > > Kdump has the notion of backup region. Where certain parts of old kernels
> > > memory can be moved to a different location (first 640K on x86 as of now)
> > > and new kernel can make use of this memory now.
> > >
> > > So we will have to just make sure that no parts of this old page table
> > > fall into backup region.
> >
> > Uuh, looks like the 'iommu-with-kdump-issue' isn't complicated enough
> > yet ;)
> > Sadly, your above statement is true for all hardware-accessible data
> > structures in IOMMU code. I think about how we can solve this, is there
> > an easy way to allocate memory that is not in any backup region?
>
> Hmm..., there does not seem to be any easy way to do this. In fact, as of
> now, kernel does not even know where is backup region. All these details are
> managed by user space completely (except for new kexec_file_load() syscall).
>
> That means we are left with ugly options now.
>
> - Define per arch kexec backup regions in kernel and export it to user
> space and let kexec-tools make use of that deinition (instead of
> defining its own). That way memory allocation code in kernel can look
> at this backup area and skip it for certain allocations.
Yes, that makes sense. In fact, I think all allocations for DMA memory
need to take this into account to avoid potentially serious data
corruption.
If any memory for a disk superblock gets allocated in backup memory and
a kdump happens, the new kernel might zero out that area and the disk
controler then writes the zeroes to disk instead of the superblock.
Joerg
More information about the kexec
mailing list