svn commit: r324360 - in head/sys/boot/efi: include libefi loader
Warner Losh
imp at FreeBSD.org
Fri Oct 6 12:21:48 UTC 2017
Author: imp
Date: Fri Oct 6 12:21:46 2017
New Revision: 324360
URL: https://svnweb.freebsd.org/changeset/base/324360
Log:
Encapsulate ZFS preferences into efi_zfs_is_preferred
Move the retrieval of the image information into loader's main instead
of doing it in efizfs.c
Differential Revision: https://reviews.freebsd.org/D12564
Submitted by: Eric McCorkle
Modified:
head/sys/boot/efi/include/efizfs.h
head/sys/boot/efi/libefi/efizfs.c
head/sys/boot/efi/loader/main.c
Modified: head/sys/boot/efi/include/efizfs.h
==============================================================================
--- head/sys/boot/efi/include/efizfs.h Fri Oct 6 12:20:24 2017 (r324359)
+++ head/sys/boot/efi/include/efizfs.h Fri Oct 6 12:21:46 2017 (r324360)
@@ -27,6 +27,7 @@
*/
#include <stdint.h>
+#include <stdbool.h>
#ifndef _EFIZFS_H_
#define _EFIZFS_H_
@@ -45,6 +46,7 @@ extern uint64_t pool_guid;
extern void efi_zfs_probe(void);
extern zfsinfo_list_t *efizfs_get_zfsinfo_list(void);
+extern bool efi_zfs_is_preferred(EFI_HANDLE *h);
extern EFI_HANDLE efizfs_get_handle_by_guid(uint64_t);
#endif
Modified: head/sys/boot/efi/libefi/efizfs.c
==============================================================================
--- head/sys/boot/efi/libefi/efizfs.c Fri Oct 6 12:20:24 2017 (r324359)
+++ head/sys/boot/efi/libefi/efizfs.c Fri Oct 6 12:21:46 2017 (r324360)
@@ -81,12 +81,9 @@ efi_zfs_probe(void)
{
pdinfo_list_t *hdi;
pdinfo_t *hd, *pd = NULL;
- EFI_GUID imgid = LOADED_IMAGE_PROTOCOL;
- EFI_LOADED_IMAGE *img;
char devname[SPECNAMELEN + 1];
uint64_t guid;
- BS->HandleProtocol(IH, &imgid, (VOID**)&img);
hdi = efiblk_get_pdinfo_list(&efipart_hddev);
STAILQ_INIT(&zfsinfo);
@@ -105,7 +102,7 @@ efi_zfs_probe(void)
if (zfs_probe_dev(devname, &guid) == 0) {
insert_zfs(pd->pd_handle, guid);
- if (pd->pd_handle == img->DeviceHandle)
+ if (efi_zfs_is_preferred(pd->pd_handle))
pool_guid = guid;
}
Modified: head/sys/boot/efi/loader/main.c
==============================================================================
--- head/sys/boot/efi/loader/main.c Fri Oct 6 12:20:24 2017 (r324359)
+++ head/sys/boot/efi/loader/main.c Fri Oct 6 12:21:46 2017 (r324360)
@@ -72,6 +72,15 @@ EFI_GUID debugimg = DEBUG_IMAGE_INFO_TABLE_GUID;
EFI_GUID fdtdtb = FDT_TABLE_GUID;
EFI_GUID inputid = SIMPLE_TEXT_INPUT_PROTOCOL;
+static EFI_LOADED_IMAGE *img;
+
+bool
+efi_zfs_is_preferred(EFI_HANDLE *h)
+{
+ return (h == img->DeviceHandle);
+}
+
+
static int
has_keyboard(void)
{
@@ -300,7 +309,6 @@ EFI_STATUS
main(int argc, CHAR16 *argv[])
{
char var[128];
- EFI_LOADED_IMAGE *img;
EFI_GUID *guid;
int i, j, vargood, howto;
UINTN k;
@@ -319,6 +327,9 @@ main(int argc, CHAR16 *argv[])
archsw.arch_zfs_probe = efi_zfs_probe;
#endif
+ /* Get our loaded image protocol interface structure. */
+ BS->HandleProtocol(IH, &imgid, (VOID**)&img);
+
/* Init the time source */
efi_time_init();
@@ -445,9 +456,6 @@ main(int argc, CHAR16 *argv[])
for (i = 0; devsw[i] != NULL; i++)
if (devsw[i]->dv_init != NULL)
(devsw[i]->dv_init)();
-
- /* Get our loaded image protocol interface structure. */
- BS->HandleProtocol(IH, &imgid, (VOID**)&img);
printf("Command line arguments:");
for (i = 0; i < argc; i++)
More information about the svn-src-all
mailing list