From owner-freebsd-bugs@freebsd.org Wed Aug 19 10:31:07 2015 Return-Path: Delivered-To: freebsd-bugs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 46F009BD469 for ; Wed, 19 Aug 2015 10:31:07 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1992F1699 for ; Wed, 19 Aug 2015 10:31:07 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JAV6YQ047227 for ; Wed, 19 Aug 2015 10:31:06 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 202455] [EFI] boot/loader.efi: ExitBootServices() returned 0x8000000000000002 Date: Wed, 19 Aug 2015 10:31:07 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: ganael.laplanche@corp.ovh.com X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 10:31:07 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202455 Bug ID: 202455 Summary: [EFI] boot/loader.efi: ExitBootServices() returned 0x8000000000000002 Product: Base System Version: 11.0-CURRENT Hardware: amd64 OS: Any Status: New Severity: Affects Many People Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: ganael.laplanche@corp.ovh.com Created attachment 160058 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=160058&action=edit patch-sys-boot-efi-loader-arch-amd64-elf64_freebsd.c Hi, As written here: https://wiki.freebsd.org/UEFI, "this issue is still encountered on some hardware.". Indeed, I have been able to reproduce the error on a physical machine (Supermicro X9SRi-F motherboard) when netbooting loader.efi over PXE. On that machine, this only happens when booting over PXE. I have absolutely no problem booting locally (so is the MapKey change causing the error related to the efinet layer ?). The UEFI specification advises to call ExitBootServices() again if the first call failed, after having updated the MapKey with a call to GetMemoryMap() just before the second ExitBootServices() call [1]. The FreeBSD loader only performs a single attempt and gives up if it fails. Find attached a patch (for amd64, against -CURRENT r286279) that implements this second attempt to hand over control to the kernel. It will probably be necessary to implement the same behaviour for other archs too. With this patch, my machine can boot over PXE in UEFI mode. Best regards, Ganael. [1] UEFI Specification Version v2.5, p221: http://www.uefi.org/sites/default/files/resources/UEFI%202_5.pdf -- You are receiving this mail because: You are the assignee for the bug.