It's a workaround to bypass the corruption of the Request function pointer. The function pointer crashes after the grub menu is shown. Here is the log:
net/drivers/efi/efihttp.c:175: b->create_event() net/drivers/efi/efihttp.c:188: grub_efihttp:0x3edc4020, grub_efihttp->request:0xafafafafafafafaf net/drivers/efi/efihttp.c:191: Before grub_efihttp->request(), url:http://192.168.111.1/boot/grub/x86_64-efi/part_gpt.mod !!!! X64 Exception Type - 0D(#GP - General Protection) CPU Apic ID - 00000000 !!!! RIP - 000000003E74C59B, CS - 0000000000000038, RFLAGS - 0000000000210202 ExceptionData - 0000000000000000 RAX - 000000003BD24280, RCX - 000000003EDC4020, RDX - 000000003BC5B500 RBX - 000000003BC5B600, RSP - 000000003FAFA6D0, RBP - 000000003BC5B4A0 RSI - 000000003EDC4020, RDI - AFAFAFAFAFAFAFAF R8 - 000000003BC5B340, R9 - 000000003BC5B1A0, R10 - 0000000000000013 R11 - 0000000000000058, R12 - 000000003E74C594, R13 - 000000003E754D13 R14 - 000000003BC5B460, R15 - 0000000000000000 DS - 0000000000000030, ES - 0000000000000030, FS - 0000000000000030 GS - 0000000000000030, SS - 0000000000000030 CR0 - 0000000080000033, CR2 - 0000000000000000, CR3 - 000000003FA99000 CR4 - 0000000000000668, CR8 - 0000000000000000 DR0 - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000 DR3 - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400 GDTR - 000000003FA87698 0000000000000047, LDTR - 0000000000000000 IDTR - 000000003F4FA018 0000000000000FFF, TR - 0000000000000000 FXSAVE_STATE - 000000003FAFA330 !!!! Find PE image (No PDB) (ImageBase=000000003E74C000, EntryPoint=000000003E74C400) !!!! HTTP Boot can’t work without this workaround. The root cause is unknown. It is much appreciated for any kind of suggestions for debugging this. Signed-off-by: Ken Lin <ken....@hpe.com> Signed-off-by: Clay Chang <cl...@hpe.com> Reviewed-by: Keng-Yu Lin <ken...@hpe.com> --- grub-core/net/net.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/grub-core/net/net.c b/grub-core/net/net.c index 90c5b48..e258109 100644 --- a/grub-core/net/net.c +++ b/grub-core/net/net.c @@ -1661,6 +1661,9 @@ static void grub_net_poll_cards_idle_real (void) { struct grub_net_card *card; +#ifdef GRUB_MACHINE_EFI + if (grub_efihttp) return; +#endif FOR_NET_CARDS (card) { grub_uint64_t ctime = grub_get_time_ms (); -- 2.7.4 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel