Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Dec 2019 09:23:42 +0100
From:      Harry Schmalzbauer <freebsd@omnilan.de>
To:        FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org>
Subject:   Re: UEFI ISO boot not working in 12.1 ?
Message-ID:  <d52d3278-c96f-aa36-3ec3-5370568b467b@omnilan.de>
In-Reply-To: <CACNAnaHvDe6d-YZDy1N8dfUX4cV%2BDj-%2BKq5eP=L=SEaYzVn9PA@mail.gmail.com>
References:  <20191106191711.GK1177@westeros.distal.com> <20191106210256.GL1177@westeros.distal.com> <CANCZdfobLkYeezJQtz38KE%2BTELaiY5M2JfpUy0POzYPdwsGcCA@mail.gmail.com> <1db62ff2-e7df-5bef-7c6d-424f4367370a@freebsd.org> <CAKr6gn0rV8n%2B9g0i9hm0fNYPDx5EcvVFR60QS554M8qFTW9gqg@mail.gmail.com> <24bd3c37-e834-9599-acd9-2f4966916eae@freebsd.org> <CAKr6gn0qeMiKnB_xj-pD4h8gbBWK39Sxh5YS7tTyUfatKww1wQ@mail.gmail.com> <20191107195325.GO1177@westeros.distal.com> <20191109164233.GB1053@westeros.distal.com> <CACNAnaHvDe6d-YZDy1N8dfUX4cV%2BDj-%2BKq5eP=L=SEaYzVn9PA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------7ED70A944226CF0887322411
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit

Am 09.11.2019 um 18:24 schrieb Kyle Evans:
> On Sat, Nov 9, 2019 at 10:42 AM Chris Ross <cross+freebsd@distal.com> wrote:
>> On Thu, Nov 07, 2019 at 02:53:25PM -0500, Chris Ross wrote:
>>>>> On Thu, Nov 7, 2019 at 9:46 AM Julian Elischer <julian@freebsd.org> wrote:
>>>>>> You could try some bisection back along the  12 branch..
>>> Yeah.  I was hoping for an easier path, but.  I can try slogging back
>>> through stable-12 a month or two at a time.
>> Okay.  I spent a bunch of time moving around stable-12 by date, and
>> an ISO build from stable-12 as of 2019-10-14 works (rev 353483), and
>> 2019-10-15 (rev 353541) does not.
…
>> That helps- thanks! I'm CC'ing tsoome@, as this is basically just
>> r353501 in that range. Can you give the latest -CURRENT snapshot boot
>> as another data point?

I can confirm that reverting r353501 on stable/12 from yesterday solves 
my problem with booting the setup media.
(My symptoms on ESXi 6.7 guest using SATA vODD: r355263 loads 
kernel/modules but stucks with 100%CPU while trying to hand over to kernel)

My svn skills are as lousy as my C skills, but to me it seems like a 
mismerge.
The attached patch (against r355263, stable/12 from yesterday _without_ 
reverting r353501!) solves my problem.

But please could someone familiar with svn&code inspect what happened 
and verify/correct/commit the fix.
Solving my problem doesn't mean my approach is correct.  I don't know 
HandleProtocol() nor OpenProtocol() nor did I read the code trying to 
understand what's happening in "proto.c".
I just text-edited a obvious cannotbe… Maby I missed a lot of things…
In case attachment won't make it to the list (white space nits to be 
expected):
Index: stand/efi/boot1/proto.c
===================================================================
--- stand/efi/boot1/proto.c     (Revision 355263)
+++ stand/efi/boot1/proto.c     (Arbeitskopie)
@@ -61,7 +61,7 @@
          int preferred;

          /* Figure out if we're dealing with an actual partition. */
-       status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
+       status = OpenProtocolByHandle(h, &DevicePathGUID, (void 
**)&devpath);
          if (status == EFI_UNSUPPORTED)
                  return (0);

@@ -77,7 +77,7 @@
                  efi_free_devpath_name(text);
          }
   #endif
-       status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void 
**)&blkio);
+       status = OpenProtocolByHandle(h, &BlockIoProtocolGUID, (void 
**)&blkio);
          if (status == EFI_UNSUPPORTED)
                  return (0);

Index: stand/efi/gptboot/proto.c
===================================================================
--- stand/efi/gptboot/proto.c   (Revision 355263)
+++ stand/efi/gptboot/proto.c   (Arbeitskopie)
@@ -146,7 +146,7 @@
          EFI_STATUS status;

          /* Figure out if we're dealing with an actual partition. */
-       status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
+       status = OpenProtocolByHandle(h, &DevicePathGUID, (void 
**)&devpath);
          if (status != EFI_SUCCESS)
                  return;
   #ifdef EFI_DEBUG
@@ -169,7 +169,7 @@
                          return;
                  }
          }
-       status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void 
**)&blkio);
+       status = OpenProtocolByHandle(h, &BlockIoProtocolGUID, (void 
**)&blkio);
          if (status != EFI_SUCCESS) {
                  DPRINTF("Can't get the block I/O protocol block\n");
                  return;


But reading this thread leaves one question:
Does 12.1-RELEASE refuse to boot on regular ESXi UEFI guests!?

Thanks,

-Harry

(resent due to ?expired? subscription…; original message was addressed 
to all other recipients)

--------------7ED70A944226CF0887322411
Content-Type: text/x-patch;
 name="efiloader_MFCfix-HandleProtocol2OpenProtocol.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="efiloader_MFCfix-HandleProtocol2OpenProtocol.patch"

Index: stand/efi/boot1/proto.c
===================================================================
--- stand/efi/boot1/proto.c	(Revision 355263)
+++ stand/efi/boot1/proto.c	(Arbeitskopie)
@@ -61,7 +61,7 @@
 	int preferred;
 
 	/* Figure out if we're dealing with an actual partition. */
-	status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
+	status = OpenProtocolByHandle(h, &DevicePathGUID, (void **)&devpath);
 	if (status == EFI_UNSUPPORTED)
 		return (0);
 
@@ -77,7 +77,7 @@
 		efi_free_devpath_name(text);
 	}
 #endif
-	status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void **)&blkio);
+	status = OpenProtocolByHandle(h, &BlockIoProtocolGUID, (void **)&blkio);
 	if (status == EFI_UNSUPPORTED)
 		return (0);
 
Index: stand/efi/gptboot/proto.c
===================================================================
--- stand/efi/gptboot/proto.c	(Revision 355263)
+++ stand/efi/gptboot/proto.c	(Arbeitskopie)
@@ -146,7 +146,7 @@
 	EFI_STATUS status;
 
 	/* Figure out if we're dealing with an actual partition. */
-	status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
+	status = OpenProtocolByHandle(h, &DevicePathGUID, (void **)&devpath);
 	if (status != EFI_SUCCESS)
 		return;
 #ifdef EFI_DEBUG
@@ -169,7 +169,7 @@
 			return;
 		}
 	}
-	status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void **)&blkio);
+	status = OpenProtocolByHandle(h, &BlockIoProtocolGUID, (void **)&blkio);
 	if (status != EFI_SUCCESS) {
 		DPRINTF("Can't get the block I/O protocol block\n");
 		return;


--------------7ED70A944226CF0887322411--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d52d3278-c96f-aa36-3ec3-5370568b467b>