Date: Fri, 23 Mar 2018 14:35:40 -0500 From: Kyle Evans <kevans@freebsd.org> To: Kyle Evans <kevans@freebsd.org> Cc: "Rodney W. Grimes" <freebsd-rwg@pdx.rh.cn85.dnsmgr.net>, "freebsd-virtualization@freebsd.org" <freebsd-virtualization@freebsd.org>, Peter Grehan <grehan@freebsd.org>, Marcelo Araujo <araujobsdport@gmail.com> Subject: Re: Issue encountered booting FreeBSD STABLE and CURRENT snapshots with EFI Message-ID: <CACNAnaF9n707yfzAps4pfcvJ4VHa0=K8927uu6X%2B6qnJxuRVoA@mail.gmail.com> In-Reply-To: <CACNAnaF0SptKBgjgEUAJ3VA3qKcm2yJUn5Z9MJkBbJLV%2BYAxNA@mail.gmail.com> References: <CACNAnaHnwzLNg4sE99eip4x=Gi01-T%2BzXnyt%2BznjpryVhc=Ziw@mail.gmail.com> <201803231812.w2NICLEW032460@pdx.rh.CN85.dnsmgr.net> <CACNAnaF0SptKBgjgEUAJ3VA3qKcm2yJUn5Z9MJkBbJLV%2BYAxNA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 23, 2018 at 1:34 PM, Kyle Evans <kevans@freebsd.org> wrote: > On Fri, Mar 23, 2018 at 1:12 PM, Rodney W. Grimes > <freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote: >>> On Fri, Mar 23, 2018 at 1:04 PM, Rodney W. Grimes >>> <freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote: >>> > [ Charset UTF-8 unsupported, converting... ] >>> >> On Fri, Mar 23, 2018 at 9:58 AM, Rodney W. Grimes >>> >> <freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote: >>> >> >> On Fri, Mar 23, 2018 at 3:56 AM, Joe Maloney <jmaloney@ixsystems.com> wrote: >>> >> >> > We narrowed the issue down to how vm-bhyve attaches a null.iso when starting >>> >> >> > the VM. >>> >> >> > >>> >> >> >>> >> >> What exactly are the contents of this null.iso? It sounds like we're >>> >> > >>> >> > touch "null.iso" >>> >> > -rw-r--r-- 1 root wheel 0 Dec 3 22:55 /home/vmbhyve/.config/null.iso >>> >> > >>> >> > It is litterly a 0 byte file. This is just there to appease windows >>> >> > installer that you have a cd drive. >>> >> > >>> >> > You can test with bhyve yourself this problem by adding: >>> >> > -s 3:0,ahci-cd,${vm_dir}/.config/null.iso >>> >> > to your bhyve command. >>> >> > >>> >> >>> >> Thanks for that! A couple hundred printf's later, I think this might >>> >> be a firmware bug or something of the sort (?). >>> >> >>> >> In this loop [1], the address at 'dp' is getting immediately clobbered >>> >> by the efi_lookup_devpath on every iteration, so we end up looking at >>> >> basically all of the partitions and this null.iso unfortunately meets >>> >> this criteria [2] for removable media with no media present. >>> >> Therefore, we detect absolutely no disks. >>> >> >>> >> The only candidate in efi_lookup_devpath [3] is the firmware itself >>> >> having overwritten the devpath at that address. We can confirm this >>> >> with a printf just after the efi_lookup_devpath- the pointer it's >>> >> returning is in fact exactly match 'dp' every single time. >>> >> >>> >> Is there a newer/different firmware you can try? This seems like >>> >> really peculiar behavior for a firmware to be exhibiting. >>> > >>> > What happened to the boot device on the hd? >>> > There should be another -s x:0, ahci-hd drive that it boots from. >>> > -s 4:0,ahci-hd,${vm_dir}/${vmname}/disk0.img >>> > >>> >>> Right, it's there but we think it's removable media with no media >>> present because of the above-mentioned clobbering by the firmware. We >>> could probably work around it for this specific case, but I don't know >>> if that's a great idea- there be snakes here... >> >> And this also appers to works with the Windows boot code.. so I >> do suspect something has become broken in the new loader. >> > > Benno points out that this is due to a uefi-edk2 hack [1] that should > be ripped out now. To quote him and his quote of grehan: > > 13:23 <@benno> https://github.com/freebsd/uefi-edk2/blob/bhyve/UDK2014.SP1/BhyvePkg/Library/PlatformBdsLib/BdsPlatform.c#L1030 > 13:23 <@benno> If you short-circuit that if so it always returns > everything will be happier. > 13:24 <@benno> Quoting grehan: > 13:24 < kevans91> Oh no > 13:25 < kevans91> ew > 13:25 <@benno> "The change was put in as a workaround for a bug in the > FreeBSD/UEFI loader, however, that issue was fixed with > r285246. > 13:25 <@benno> I'd think it unlikely that anyone would want to run <= > 10.1 with bhyve/UEFI, so I the intercept could safely be > removed." > 13:25 <@benno> So the proper fix is to remove the override entirely. > 13:25 <@benno> But in my testing I only got as far as just nerfing it > via sticking a 1 || in front of the if condition. > > I don't think we want to workaround this in loader, and I can't > explain why this is functional with Windows since it's Windows- if I > could review some of the relevant source, I would. > > Also CC'ing grehan@, since he's the one that knows the stuff. > > [1] https://github.com/freebsd/uefi-edk2/blob/bhyve/UDK2014.SP1/BhyvePkg/Library/PlatformBdsLib/BdsPlatform.c#L1008 FYI- I've created PR #2 [1] against the freebsd/uefi-edk2 repository and have confirmed that this fixes the broken-looking firmware along with the booting problem experienced in this thread. [1] https://github.com/freebsd/uefi-edk2/pull/2
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACNAnaF9n707yfzAps4pfcvJ4VHa0=K8927uu6X%2B6qnJxuRVoA>