On Mon, Jan 02, 2023 at 07:01:50AM +0100, Borislav Petkov wrote: > On Sat, Dec 31, 2022 at 07:31:21PM -0800, H. Peter Anvin wrote: > > It would probably be a good idea to add a "maximum physical address for > > initrd/setup_data/cmdline" field to struct kernel_info, though. It appears > > right now that those fields are being identity-mapped in the decompressor, > > and that means that if 48-bit addressing is used, physical memory may extend > > past the addressable range. > > Yeah, we will probably need that too. > > Btw, looka here - it can't get any more obvious than that after dumping > setup_data too: > > early console in setup code > early console in extract_kernel > input_data: 0x00000000040f92bf > input_len: 0x0000000000f1c325 > output: 0x0000000001000000 > output_len: 0x0000000003c5e7d8 > kernel_total_size: 0x0000000004428000 > needed_size: 0x0000000004600000 > boot_params->hdr.setup_data: 0x00000000010203b0 > trampoline_32bit: 0x000000000009d000 > > Decompressing Linux... Parsing ELF... done. > Booting the kernel. > <EOF> > > Aligning them vertically: > > output: 0x0000000001000000 > output_len: 0x0000000003c5e7d8 > kernel_total_size: 0x0000000004428000 > needed_size: 0x0000000004600000 > boot_params->hdr.setup_data: 0x00000000010203b0
Ok, waait a minute: ============ ============ Field name: pref_address Type: read (reloc) Offset/size: 0x258/8 Protocol: 2.10+ ============ ============ This field, if nonzero, represents a preferred load address for the kernel. A relocating bootloader should attempt to load at this address if possible. A non-relocatable kernel will unconditionally move itself and to run at this address. so a kernel loader (qemu in this case) already knows where the kernel goes: boot_params->hdr.setup_data: 0x0000000001020450 boot_params->hdr.pref_address: 0x0000000001000000 ^^^^^^^^^^^^^^^^^ now, considering that same kernel loader (qemu) knows how big that kernel is: kernel_total_size: 0x0000000004428000 should that loader *not* put anything that the kernel will use in the range pref_addr + kernel_total_size ? -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette