Date: Fri, 27 Jul 2018 16:54:17 -0700 (PDT) From: "Rodney W. Grimes" <freebsd@pdx.rh.CN85.dnsmgr.net> To: Warner Losh <imp@freebsd.org> Cc: 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: <201807272354.w6RNsHox053294@pdx.rh.CN85.dnsmgr.net> In-Reply-To: <201807272200.w6RM00n3024246@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[ Charset UTF-8 unsupported, converting... ] > Author: imp > Date: Fri Jul 27 22:00:00 2018 > New Revision: 336789 > URL: https://svnweb.freebsd.org/changeset/base/336789 > > Log: > stand debug Thats a bit brief for a commit message... > 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. > > -- Rod Grimes rgrimes@freebsd.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807272354.w6RNsHox053294>