/* * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. * I.e. Maximum page that is mapped directly into kernel memory, * and kmap is not required. * * So far x86_64 is limited to 40 physical address bits.
*/ #ifdef CONFIG_X86_32 /* Maximum physical address we can use pages from */ # define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) /* Maximum address we can reach in physical address mode */ # define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL) /* Maximum address we can use for the control code buffer */ # define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
/* The native architecture */ # define KEXEC_ARCH KEXEC_ARCH_386
/* We can also handle crash dumps from 64 bit kernel. */ # define vmcore_elf_check_arch_cross(x) ((x)->e_machine == EM_X86_64) #else /* Maximum physical address we can use pages from */ # define KEXEC_SOURCE_MEMORY_LIMIT (MAXMEM-1) /* Maximum address we can reach in physical address mode */ # define KEXEC_DESTINATION_MEMORY_LIMIT (MAXMEM-1) /* Maximum address we can use for the control pages */ # define KEXEC_CONTROL_MEMORY_LIMIT (MAXMEM-1)
/* The native architecture */ # define KEXEC_ARCH KEXEC_ARCH_X86_64
#ifdef CONFIG_X86_32 struct kimage_arch {
pgd_t *pgd; #ifdef CONFIG_X86_PAE
pmd_t *pmd0;
pmd_t *pmd1; #endif
pte_t *pte0;
pte_t *pte1;
}; #else struct kimage_arch { /* * This is a kimage control page, as it must not overlap with either * source or destination address ranges.
*/
pgd_t *pgd; /* * The virtual mapping of the control code page itself is used only * during the transition, while the current kernel's pages are all * in place. Thus the intermediate page table pages used to map it * are not control pages, but instead just normal pages obtained * with get_zeroed_page(). And have to be tracked (below) so that * they can be freed.
*/
p4d_t *p4d;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
}; #endif/* CONFIG_X86_32 */
#ifdef CONFIG_X86_64 /* * Number of elements and order of elements in this structure should match * with the ones in arch/x86/purgatory/entry64.S. If you make a change here * make an appropriate change in purgatory too.
*/ struct kexec_entry64_regs {
uint64_t rax;
uint64_t rcx;
uint64_t rdx;
uint64_t rbx;
uint64_t rsp;
uint64_t rbp;
uint64_t rsi;
uint64_t rdi;
uint64_t r8;
uint64_t r9;
uint64_t r10;
uint64_t r11;
uint64_t r12;
uint64_t r13;
uint64_t r14;
uint64_t r15;
uint64_t rip;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.