Date: Fri, 27 Jul 2018 16:30:34 -0600 From: Warner Losh <imp@bsdimp.com> To: "O. Hartmann" <ohartmann@walstatt.org> Cc: Warner Losh <imp@freebsd.org>, src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r336789 - head/stand/efi/loader Message-ID: <CANCZdfr8z5WV_%2B3RQ%2B70r3XiPjt-LbT1hfohWcv4zGtPpWA4MA@mail.gmail.com> In-Reply-To: <20180728002255.01f3e19f@thor.intern.walstatt.dynvpn.de> References: <201807272200.w6RM00n3024246@repo.freebsd.org> <20180728002255.01f3e19f@thor.intern.walstatt.dynvpn.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jul 27, 2018 at 4:22 PM, O. Hartmann <ohartmann@walstatt.org> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > Am Fri, 27 Jul 2018 22:00:00 +0000 (UTC) > Warner Losh <imp@FreeBSD.org> schrieb: > > > Author: imp > > Date: Fri Jul 27 22:00:00 2018 > > New Revision: 336789 > > URL: https://svnweb.freebsd.org/changeset/base/336789 > > > > Log: > > stand debug > > > > Modified: > > head/stand/efi/loader/main.c > > > > Modified: head/stand/efi/loader/main.c > > ============================================================ > ================== > > --- head/stand/efi/loader/main.c Fri Jul 27 21:50:10 2018 > (r336788) > > +++ head/stand/efi/loader/main.c Fri Jul 27 22:00:00 2018 > (r336789) > > @@ -312,6 +312,7 @@ match_boot_info(EFI_LOADED_IMAGE *img __unused, > char * > > char *kernel = NULL; > > FILEPATH_DEVICE_PATH *fp; > > struct stat st; > > + CHAR16 *text; > > > > /* > > * FreeBSD encodes it's boot loading path into the boot loader > > @@ -349,6 +350,11 @@ match_boot_info(EFI_LOADED_IMAGE *img __unused, > char * > > if ((char *)edp > ep) > > return NOT_SPECIFIC; > > while (dp < edp) { > > + text = efi_devpath_name(dp); > > + if (text != NULL) { > > + printf(" BootInfo Path: %S\n", text); > > + efi_free_devpath_name(text); > > + } > > last_dp = dp; > > dp = (EFI_DEVICE_PATH *)((char *)dp + > efi_devpath_length(dp)); > > } > > @@ -359,22 +365,31 @@ match_boot_info(EFI_LOADED_IMAGE *img __unused, > char * > > * path in it. Those show up as various VenHw() nodes > > * which are basically opaque to us. Don't count those > > * as something specifc. > > + * path in it... > > */ > > - if (last_dp == first_dp) > > + if (last_dp == first_dp) { > > + printf("Ignoring BootXXX: Only one DP found\n"); > > return NOT_SPECIFIC; > > - if (efi_devpath_to_media_path(last_dp) == NULL) > > + } > > + if (efi_devpath_to_media_path(path) == NULL) { > > + printf("Ignoring BootXXXX: No Media Path\n"); > > return NOT_SPECIFIC; > > + } > > > > /* > > * OK. At this point we either have a good path or a bad one. > > * Let's check. > > */ > > pp = efiblk_get_pdinfo_by_device_path(last_dp); > > - if (pp == NULL) > > + if (pp == NULL) { > > + printf("Ignoring BootXXXX: Device Path not found\n"); > > return BAD_CHOICE; > > + } > > set_currdev_pdinfo(pp); > > - if (!sanity_check_currdev()) > > + if (!sanity_check_currdev()){ > > + printf("Ignoring BootXXX: sanity check failed\n"); > > return BAD_CHOICE; > > + } > > > > /* > > * OK. We've found a device that matches, next we need to check > the last > > @@ -386,20 +401,30 @@ match_boot_info(EFI_LOADED_IMAGE *img __unused, > char * > > */ > > dp = efi_devpath_last_node(last_dp); > > if (DevicePathType(dp) != MEDIA_DEVICE_PATH || > > - DevicePathSubType(dp) != MEDIA_FILEPATH_DP) > > + DevicePathSubType(dp) != MEDIA_FILEPATH_DP) { > > + printf("Using BootXXXX for root partition\n"); > > return (BOOT_INFO_OK); /* use currdir, default > kernel */ > > + } > > fp = (FILEPATH_DEVICE_PATH *)dp; > > ucs2_to_utf8(fp->PathName, &kernel); > > - if (kernel == NULL) > > + if (kernel == NULL) { > > + printf("Not using BootXXX: can't decode kernel\n"); > > return (BAD_CHOICE); > > + } > > if (*kernel == '\\' || isupper(*kernel)) > > fix_dosisms(kernel); > > if (stat(kernel, &st) != 0) { > > free(kernel); > > + printf("Not using BootXXX: can't find %s\n", kernel); > > return (BAD_CHOICE); > > } > > setenv("kernel", kernel, 1); > > free(kernel); > > + text = efi_devpath_name(last_dp); > > + if (text) { > > + printf("Using BootXXX %S + %s\n", text, kernel); > > + efi_free_devpath_name(text); > > + } > > > > return (BOOT_INFO_OK); > > } > > @@ -499,13 +524,22 @@ find_currdev(EFI_LOADED_IMAGE *img, bool > do_bootmgr, b > > if (sanity_check_currdev()) > > return (0); > > if (dp->pd_parent != NULL) { > > + pdinfo_t *espdp = dp; > > dp = dp->pd_parent; > > STAILQ_FOREACH(pp, &dp->pd_part, pd_link) { > > + /* Already tried the ESP */ > > + if (espdp == pp) > > + continue; > > /* > > * Roll up the ZFS special case > > * for those partitions that have > > * zpools on them. > > */ > > + text = efi_devpath_name(pp->pd_devpath); > > + if (text != NULL) { > > + printf("Trying: %S\n", text); > > + efi_free_devpath_name(text); > > + } > > if (try_as_currdev(dp, pp)) > > return (0); > > } > > @@ -798,6 +832,8 @@ main(int argc, CHAR16 *argv[]) > > } > > } > > } > > + printf("howto %#x console set to %s\n", howto, getenv("console")); > > + > > /* > > * howto is set now how we want to export the flags to the kernel, > so > > * set the env based on it. > > _______________________________________________ > > svn-src-head@freebsd.org mailing list > > https://lists.freebsd.org/mailman/listinfo/svn-src-head > > To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" > > I see inconsistent usage of BootXXXX and BootXXX in the printf messages. I > guess this is > meant to be BootXXXX? > I fixed it by substituting the right XXXX since we may need that in some booting scenarios. r336791 has that fix. Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfr8z5WV_%2B3RQ%2B70r3XiPjt-LbT1hfohWcv4zGtPpWA4MA>