Messages in this thread | | | Subject | Re: 4.17.x won't boot due to "x86/boot/compressed/64: Handle 5-level paging boot if kernel is above 4G" | From | Dmitry Malkin <> | Date | Thu, 26 Jul 2018 18:21:11 +0200 |
| |
On 07/26/2018 04:50 PM, Kirill A. Shutemov wrote: >>>> 2. reading from memory which may be reserved in case of EFI systems: >>>>>> ebda_start = *(unsigned short *)0x40e << 4; >>>>>> bios_start = *(unsigned short *)0x413 << 10; >>>> Also, on EFI system without CSM it will results in all zeros. Which will >>>> place trampoline_start to 0x9d000. And it also may be reserved memory. In >>>> fact I have such system and it is causes instant reboot (when code starts >>>> copying to "trampoline_start"). >>> Could you show dmesg from such system? >> Sure, here it is (please note than not both pages are reserved but only >> second one: 0x9e000-0x9ffff): > Well. That's bad. > > I don't see much options but parse e820 in decompression code. I hoped to > avoid this. > > Let me see what I can do there. Just in case of UEFI (I don't know much about BIOS and kexec): register RSI (right before call paging_prepare) will contains pointer to "struct boot_params" (returned by function efi_main() in eboot.c). There are fields e820_table and e820_entries.
| |