Hi, Ard, On Tue, Aug 23, 2022 at 2:03 AM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > On Mon, 22 Aug 2022 at 12:44, Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > > > On Fri, 19 Aug 2022 at 12:20, Huacai Chen <chenhuacai@xxxxxxxxxxx> wrote: > > > > > > This patch adds efistub booting support, which is the standard UEFI boot > > > protocol for us to use. > > > > > > We use generic efistub, which means we can pass boot information (i.e., > > > system table, memory map, kernel command line, initrd) via a light FDT > > > and drop a lot of non-standard code. > > > > > > We use a flat mapping to map the efi runtime in the kernel's address > > > space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result, > > > flat mapping is not identity mapping, SetVirtualAddressMap() is still > > > needed for the efi runtime. > > > > > > Tested-by: Xi Ruoyao <xry111@xxxxxxxxxxx> > > > Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> > > > --- > > > V1 --> V2: > > > 1, Call SetVirtualAddressMap() in stub; > > > 2, Use core kernel data directly in alloc_screen_info(); > > > 3, Remove the magic number in MS-DOS header; > > > 4, Disable EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER; > > > 5, Some other small changes suggested by Ard Biesheuvel. > > > > > > V2 --> V3: > > > 1, Adjust Makefile to adapt zboot; > > > 2, Introduce EFI_RT_VIRTUAL_OFFSET instead of changing flat_va_mapping. > > > > > > > Thanks for the update. > > > > I am going to queue this up in the efi/next tree. However, due to the > > many changes to arch/loongarch in this patch, conflicts are not > > unlikely, so I created a signed stable tag for the patch that you can > > merge into the loongarch arch tree if you want. > > > > *However*, you must *not* rebase your tree after merging this tag. > > Therefore, it is probably best that the merge of this tag appears as > > the very first change on your PR to Linus for v6.1. Everything after > > can be rebased at will (assuming there are no other impediments to > > doing so) > > > > You can fetch it and merge it like so: > > > > git fetch -t git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git > > git verify-tag efi-loongarch-for-v6.1 # if you like > > git merge efi-loongarch-for-v6.1 > > > > and all your other v6.1 changes can go on top. > > > > This way, you can resolve conflicts locally without affecting the EFI > > changes going via the other tree. The EFI stub for LoongArch change > > will arrive into Linus's tree via whichever tree he pulls first: the > > LoongArch one or the EFI one. > > > > I will rebase my zboot decompressor changes on top of this - I will cc > > you again, as the LoongArch builds ok but still does not boot. > > > > I have pushed a branch here that includes EFI decompressor support for LoongArch > > https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/log/?h=efi-decompressor-v4 > > You will need to enable CONFIG_EFI_ZBOOT and build the zImage.efi > target. The resulting image should be bootable jus tlike the > vmlinux.efi but for some reason, it produces the crash I reported > earlier. > > Please give it a try, and if you manage to figure out what's wrong > with my code, please let me know :-) I will try zboot on my real machine. For the code, I prefer vmlinuz.efi rather than zImage.efi for LoongArch since it keeps the naming consistency. Huacai > > Thanks, > Ard.