From owner-svn-src-head@freebsd.org Fri Jul 27 23:54:23 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D48E5105AAAE; Fri, 27 Jul 2018 23:54:22 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3B5548FA35; Fri, 27 Jul 2018 23:54:21 +0000 (UTC) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w6RNsH26053295; Fri, 27 Jul 2018 16:54:17 -0700 (PDT) (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w6RNsHox053294; Fri, 27 Jul 2018 16:54:17 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201807272354.w6RNsHox053294@pdx.rh.CN85.dnsmgr.net> Subject: Re: svn commit: r336789 - head/stand/efi/loader In-Reply-To: <201807272200.w6RM00n3024246@repo.freebsd.org> To: Warner Losh Date: Fri, 27 Jul 2018 16:54:17 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jul 2018 23:54:23 -0000 [ 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