[Xen-devel] More on kexec/purgatory handover
Petr Tesarik
ptesarik at suse.cz
Wed May 13 05:12:14 PDT 2015
On Wed, 13 May 2015 11:01:24 +0100
"Jan Beulich" <JBeulich at suse.com> wrote:
> >>> On 13.05.15 at 11:53, <david.vrabel at citrix.com> wrote:
> > On 13/05/15 09:12, Jan Beulich wrote:
> >>>>> On 13.05.15 at 09:35, <ebiederm at xmission.com> wrote:
> >>> Fundamentally if you are transfering control in long mode you have to
> >>> set up some page table. I giant identity mapped page table that can use
> >>> 1G or 2M pages takes up very little memory, and can be very simply
> >>> and easily before the transfer of control takes place.
> >>>
> >>> All you have to do when you are in a half broken state is load cr3.
> >>> Possible after verifying a checksum.
> >>>
> >>> 640k in this case I don't think is particularly special, and certainly
> >>> not worth a special case. The in-kernel implementation on x86_64 sets
> >>> up a page table for all of memory which because of the availability of
> >>> huge pages winds up being simple and trivial.
> >>>
> >>> Weird things like copying off the 640k region for the kexec-on-panic
> >>> case can be done in the adapter/purgatory piece that lives between the
> >>> two kernels.
> >>>
> >>> So at a very practical level I think we shouldn't have mappings for
> >>> special regions we should just have mappings for all of memory.
> >>
> >> But in all of the above you (a) forget that setting up 1:1
> >> mappings for all memory isn't as simple as putting in place a
> >> couple of 1G pages - holes need to be accounted for and must
> >> at best be mapped UC (that's especially an issue with the low
> >> 640k) and (b) imply that whatever Linux behavior there is, Xen
> >> should mimic it (ignoring for example the fact that with the non-
> >> kernel based kexec which newer Xen and tools support such 1:1
> >> mapping setup doesn't appear to be required, i.e. [supposed]
> >> requirements change).
> >
> > Xen's V2 kexec ABI builds 1:1 pages tables for the source and
> > destination pages and any additional regions requested by the guest (see
> > calls to machine_kexec_add_page()). kexec-tools adds a "map-only"
> > segment for 0-1MiB when using the V2 ABI.
> >
> > These page tables are built at load time (not at exec time) and in the
> > crash case are placed in the crash memory area.
> >
> > When using the V1 ABI, there is no way for the tools to provide an
> > additional "map-only" segment so you'd have to get purgatory to add
> > mappings for 0-1MiB, or get Xen (in the V1 path only) to do so.
>
> Okay, if the tools do this in v2, then I think the compatibility v1
> path should indeed do so too (in the hypervisor).
Are you working on a patch?
Petr T
More information about the kexec
mailing list