From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) by mx.groups.io with SMTP id smtpd.web10.8902.1625824534165391218 for ; Fri, 09 Jul 2021 02:55:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@semihalf-com.20150623.gappssmtp.com header.s=20150623 header.b=G7qw1LAl; spf=none, err=SPF record not found (domain: semihalf.com, ip: 209.85.160.177, mailfrom: gjb@semihalf.com) Received: by mail-qt1-f177.google.com with SMTP id c9so3141359qte.6 for ; Fri, 09 Jul 2021 02:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=6w2Go+eBQiOar340ZbuJ841wsCFWf0EnMoDwJCJSMwc=; b=G7qw1LAl87BM9mRQdipKSlxzHcDOTe5m/TuSspwFflswMjN0qDcrygZAXrR10hDhOw tWmqI1MBIfKvKET8WhO3dtqLgv0tXNzpebydmQRQuptvxTcZFWCxUgj+0kVYtgEczCNq +9c45wX7WFCDzzXHGTA3BHhadh3gSp0UT5tb9N/oF3+O02xWSez6JFxYprHW5jU88xzC SeGUcqvrJyxEcsgZUkNV+G3EROFDds9YFkbJ7x6hCDO/RHLEHCeLKbEAXPe2YwlrleKX Tj5p0IUe7zoYztSTgNruewXoTyss447nkYar1EhHMyOI/dgWWAGzhlRg+BZPShpuLjA5 MgGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=6w2Go+eBQiOar340ZbuJ841wsCFWf0EnMoDwJCJSMwc=; b=QGGb69MU0J6vivq9PNPC7/wXDbMmgDj5JEqezz8nLgb3y3PGQPud5MnoAP1CKVvyOk Jlt+QGA442AzhU/sP93kSqudEcCtf7T20xvzjrtVR+FC9IPf+lYQmE7keBG8NOSPMMSz hKPT7FEk6rM5ynZ1RWDXgBjPKuPZ4oVsRDdjZJdrULR8bR5fP3ei4qZSJZ6uK8rpVixA fh5npSzj+DRdl2TvXWLq7u9BzYggjIzTxwDJHf9x0W22wSLmcY7PAR3S8Jx6e4zOWOP4 V/89aNKYulgfCg4rT4rRugqedcW85LIvFXDzRfIxamU2qZmvKBZXvhGpjRBRgULxSMMG aSEg== X-Gm-Message-State: AOAM532szf/zCmHx30hsAhslvkYQJ+OQtZdJG3CXy5tUw7DQAGPZ92Oa 5iqa32L/g00KAOZTF0h+Wa5fTvIzzg+3Vo5WxfzNLA== X-Google-Smtp-Source: ABdhPJx9nyKs9cd0EcXePicLyaqcTPWMSSLYWCKz5U8U7iCRIzGoeVcZZsiPqmxloJO2NbKi88bjYbi6O5qc4i1ieSA= X-Received: by 2002:ac8:5755:: with SMTP id 21mr33228392qtx.267.1625824533339; Fri, 09 Jul 2021 02:55:33 -0700 (PDT) MIME-Version: 1.0 References: <20210706104432.1239133-1-gjb@semihalf.com> <20210706104432.1239133-2-gjb@semihalf.com> In-Reply-To: From: "Grzegorz Bernacki" Date: Fri, 9 Jul 2021 11:55:22 +0200 Message-ID: Subject: Re: [edk2-devel] [PATCH v2 1/1] MdeModulePkg: Add BootDiscoveryPolicyUiLib. To: "Gao, Zhichao" Cc: "devel@edk2.groups.io" , "leif@nuviainc.com" , "ardb+tianocore@kernel.org" , "Samer.El-Haj-Mahmoud@arm.com" , "sunny.Wang@arm.com" , "mw@semihalf.com" , "upstream@semihalf.com" , "pete@akeo.ie" , "Wang, Jian J" , "Wu, Hao A" , "Bi, Dandan" , "Dong, Eric" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Zhichao, Setting HII-type PCD causes variable initialization, so if GetVariable() fails due to variable not being found, it will be initialized by PcdSet32S() function. thanks, greg czw., 8 lip 2021 o 10:08 Gao, Zhichao napisa=C5=82= (a): > > See below comments. > > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of > > Grzegorz Bernacki > > Sent: Tuesday, July 6, 2021 6:45 PM > > To: devel@edk2.groups.io > > Cc: leif@nuviainc.com; ardb+tianocore@kernel.org; Samer.El-Haj- > > Mahmoud@arm.com; sunny.Wang@arm.com; mw@semihalf.com; > > upstream@semihalf.com; pete@akeo.ie; Wang, Jian J > > ; Wu, Hao A ; Bi, Dandan > > ; Dong, Eric ; Grzegorz > > Bernacki ; Sunny Wang > > Subject: [edk2-devel] [PATCH v2 1/1] MdeModulePkg: Add > > BootDiscoveryPolicyUiLib. > > > > This library extends Boot Maintenance Menu and allows to select Boot > > Discovery Policy. When choice is made BootDiscoveryPolicy variable is = set. > > Platform code can use this variable to decide which class of device sh= all be > > connected. > > > > Signed-off-by: Grzegorz Bernacki > > Reviewed-by: Sunny Wang > > --- > > MdeModulePkg/MdeModulePkg.dec = | 6 + > > > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > inf | 52 +++++++ > > MdeModulePkg/Include/Guid/BootDiscoveryPolicy.h = | 22 > > +++ > > > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > c | 160 ++++++++++++++++++++ > > > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > uni | 16 ++ > > > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib > > Strings.uni | 29 ++++ > > > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib > > Vfr.Vfr | 44 ++++++ > > 7 files changed, 329 insertions(+) > > create mode 100644 > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > inf > > create mode 100644 MdeModulePkg/Include/Guid/BootDiscoveryPolicy.h > > create mode 100644 > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > c > > create mode 100644 > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib= . > > uni > > create mode 100644 > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib > > Strings.uni > > create mode 100644 > > MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiLib > > Vfr.Vfr > > > > diff --git a/MdeModulePkg/MdeModulePkg.dec > > b/MdeModulePkg/MdeModulePkg.dec index ad84421cf3..4e1c291768 > > 100644 > > --- a/MdeModulePkg/MdeModulePkg.dec > > +++ b/MdeModulePkg/MdeModulePkg.dec > > @@ -425,6 +425,9 @@ > > ## Include/UniversalPayload/SerialPortInfo.h > > gUniversalPayloadSerialPortInfoGuid =3D { 0xaa7e190d, 0xbe21, 0x440= 9, > > { 0x8e, 0x67, 0xa2, 0xcd, 0xf, 0x61, 0xe1, 0x70 } } > > > > + ## GUID used for Boot Discovery Policy FormSet guid and related var= iables. > > + gBootDiscoveryPolicyMgrFormsetGuid =3D { 0x5b6f7107, 0xbb3c, 0x4660= , { > > + 0x92, 0xcd, 0x54, 0x26, 0x90, 0x28, 0x0b, 0xbd } } > > + > > [Ppis] > > ## Include/Ppi/AtaController.h > > gPeiAtaControllerPpiGuid =3D { 0xa45e60d1, 0xc719, 0x44aa, { = 0xb0, 0x7a, > > 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }} > > @@ -1600,6 +1603,9 @@ > > # @Prompt Console Output Row of Text Setup > > > > gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|25|UINT32|0x40 > > 00000e > > > > + ## Specify the Boot Discovery Policy settings > > + > > gEfiMdeModulePkgTokenSpaceGuid.PcdBootDiscoveryPolicy|2|UINT32|0x4 > > 0000 > > + 00f > > + > > [PcdsFixedAtBuild.AARCH64, PcdsPatchableInModule.AARCH64] > > > > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20|UI > > NT32|0x0001004c > > > > diff --git > > a/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.inf > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.inf > > new file mode 100644 > > index 0000000000..1fb4d43caa > > --- /dev/null > > +++ > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyU > > +++ iLib.inf > > @@ -0,0 +1,52 @@ > > +## @file > > +# Library for BDS phase to use Boot Discovery Policy # # Copyright > > +(c) 2021, ARM Ltd. All rights reserved.
# Copyright (c) 2021, > > +Semihalf All rights reserved.
# SPDX-License-Identifier: > > +BSD-2-Clause-Patent # ## > > + > > +[Defines] > > + INF_VERSION =3D 0x00010005 > > + BASE_NAME =3D BootDiscoveryPolicyUiLib > > + MODULE_UNI_FILE =3D BootDiscoveryPolicyUiLib.uni > > + FILE_GUID =3D BE73105A-B13D-4B57-A41A-463DBD15= FE10 > > + MODULE_TYPE =3D DXE_DRIVER > > + VERSION_STRING =3D 1.0 > > + LIBRARY_CLASS =3D NULL|DXE_DRIVER UEFI_APPLICATION > > + CONSTRUCTOR =3D BootDiscoveryPolicyUiLibConstruc= tor > > + DESTRUCTOR =3D BootDiscoveryPolicyUiLibDestruct= or > > +# > > +# The following information is for reference only and not required by= the > > build tools. > > +# > > +# VALID_ARCHITECTURES =3D IA32 X64 AARCH64 > > +# > > + > > +[Sources] > > + BootDiscoveryPolicyUiLib.c > > + BootDiscoveryPolicyUiLibStrings.uni > > + BootDiscoveryPolicyUiLibVfr.Vfr > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + MdeModulePkg/MdeModulePkg.dec > > + > > +[LibraryClasses] > > + DevicePathLib > > + BaseLib > > + UefiRuntimeServicesTableLib > > + UefiBootServicesTableLib > > + DebugLib > > + HiiLib > > + UefiLib > > + BaseMemoryLib > > + > > +[Guids] > > + gBootDiscoveryPolicyMgrFormsetGuid > > + > > +[Pcd] > > + gEfiMdeModulePkgTokenSpaceGuid.PcdBootDiscoveryPolicy ## > > PRODUCES > > + > > +[Depex] > > + gEfiHiiDatabaseProtocolGuid AND gPcdProtocolGuid > > diff --git a/MdeModulePkg/Include/Guid/BootDiscoveryPolicy.h > > b/MdeModulePkg/Include/Guid/BootDiscoveryPolicy.h > > new file mode 100644 > > index 0000000000..8eb0968a16 > > --- /dev/null > > +++ b/MdeModulePkg/Include/Guid/BootDiscoveryPolicy.h > > @@ -0,0 +1,22 @@ > > +/** @file > > + Definition for structure & defines exported by Boot Discovery Polic= y > > +UI > > + > > + Copyright (c) 2021, ARM Ltd. All rights reserved.
Copyright (c= ) > > + 2021, Semihalf All rights reserved.
> > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef _BOOT_DISCOVERY_POLICY_UI_LIB_H_ #define > > +_BOOT_DISCOVERY_POLICY_UI_LIB_H_ > > + > > +#define BDP_CONNECT_MINIMAL 0 /* Do not connect any additional > > devices */ > > +#define BDP_CONNECT_NET 1 > > +#define BDP_CONNECT_ALL 2 > > + > > +#define BOOT_DISCOVERY_POLICY_MGR_FORMSET_GUID { 0x5b6f7107, > > 0xbb3c, > > +0x4660, { 0x92, 0xcd, 0x54, 0x26, 0x90, 0x28, 0x0b, 0xbd } } > > + > > +#define BOOT_DISCOVERY_POLICY_VAR L"BootDiscoveryPolicy" > > + > > +#endif > > diff --git > > a/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.c > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.c > > new file mode 100644 > > index 0000000000..6814d0bb8f > > --- /dev/null > > +++ > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyU > > +++ iLib.c > > @@ -0,0 +1,160 @@ > > +/** @file > > + Boot Discovery Policy UI for Boot Maintenance menu. > > + > > + Copyright (c) 2021, ARM Ltd. All rights reserved.
Copyright (c= ) > > + 2021, Semihalf All rights reserved.
> > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#include > > +#include #include > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +/// > > +/// HII specific Vendor Device Path definition. > > +/// > > +typedef struct { > > + VENDOR_DEVICE_PATH VendorDevicePath; > > + EFI_DEVICE_PATH_PROTOCOL End; > > +} HII_VENDOR_DEVICE_PATH; > > + > > +extern unsigned char BootDiscoveryPolicyUiLibVfrBin[]; > > + > > +EFI_HII_HANDLE mBPHiiHandle =3D NULL; > > +EFI_HANDLE mBPDriverHandle =3D NULL; > > + > > +STATIC HII_VENDOR_DEVICE_PATH mVendorDevicePath =3D { > > + { > > + { > > + HARDWARE_DEVICE_PATH, > > + HW_VENDOR_DP, > > + { > > + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), > > + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) > > + } > > + }, > > + BOOT_DISCOVERY_POLICY_MGR_FORMSET_GUID > > + }, > > + { > > + END_DEVICE_PATH_TYPE, > > + END_ENTIRE_DEVICE_PATH_SUBTYPE, > > + { > > + (UINT8)(END_DEVICE_PATH_LENGTH), > > + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8) > > + } > > + } > > +}; > > + > > +/** > > + > > + Initialize Boot Maintenance Menu library. > > + > > + @param ImageHandle The image handle. > > + @param SystemTable The system table. > > + > > + @retval EFI_SUCCESS Install Boot manager menu success. > > + @retval Other Return error status.gBPDisplayLibGuid > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +BootDiscoveryPolicyUiLibConstructor ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_SYSTEM_TABLE *SystemTable > > + ) > > +{ > > + EFI_STATUS Status; > > + UINTN Size; > > + UINT32 BootDiscoveryPolicy; > > + > > + Size =3D sizeof (UINT32); > > + Status =3D gRT->GetVariable ( > > + BOOT_DISCOVERY_POLICY_VAR, > > + &gBootDiscoveryPolicyMgrFormsetGuid, > > + NULL, > > + &Size, > > + &BootDiscoveryPolicy > > + ); > > + if (EFI_ERROR (Status)) { > > + Status =3D PcdSet32S (PcdBootDiscoveryPolicy, PcdGet32 > > (PcdBootDiscoveryPolicy)); > > + ASSERT_EFI_ERROR (Status); > > + } > > I don't understand the above check. Seems the value of the variable is n= ot used and the Pcd value is not changed. > > Thanks, > Zhichao > > > + > > + Status =3D gBS->InstallMultipleProtocolInterfaces ( > > + &mBPDriverHandle, > > + &gEfiDevicePathProtocolGuid, > > + &mVendorDevicePath, > > + NULL > > + ); > > + if (EFI_ERROR (Status)) { > > + return Status; > > + } > > + > > + // > > + // Publish our HII data > > + // > > + mBPHiiHandle =3D HiiAddPackages ( > > + &gBootDiscoveryPolicyMgrFormsetGuid, > > + mBPDriverHandle, > > + BootDiscoveryPolicyUiLibVfrBin, > > + BootDiscoveryPolicyUiLibStrings, > > + NULL > > + ); > > + if (mBPHiiHandle =3D=3D NULL) { > > + gBS->UninstallMultipleProtocolInterfaces ( > > + mBPDriverHandle, > > + &gEfiDevicePathProtocolGuid, > > + &mVendorDevicePath, > > + NULL > > + ); > > + > > + return EFI_OUT_OF_RESOURCES; > > + } > > + > > + return EFI_SUCCESS; > > +} > > + > > +/** > > + Destructor of Boot Maintenance menu library. > > + > > + @param ImageHandle The firmware allocated handle for the EFI ima= ge. > > + @param SystemTable A pointer to the EFI System Table. > > + > > + @retval EFI_SUCCESS The destructor completed successfully. > > + @retval Other value The destructor did not complete successfully. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +BootDiscoveryPolicyUiLibDestructor ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_SYSTEM_TABLE *SystemTable > > + ) > > +{ > > + > > + if (mBPDriverHandle !=3D NULL) { > > + gBS->UninstallProtocolInterface ( > > + mBPDriverHandle, > > + &gEfiDevicePathProtocolGuid, > > + &mVendorDevicePath > > + ); > > + mBPDriverHandle =3D NULL; > > + } > > + > > + if (mBPHiiHandle !=3D NULL) { > > + HiiRemovePackages (mBPHiiHandle); > > + mBPHiiHandle =3D NULL; > > + } > > + > > + return EFI_SUCCESS; > > +} > > diff --git > > a/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.uni > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > b.uni > > new file mode 100644 > > index 0000000000..89231bc2d7 > > --- /dev/null > > +++ > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyU > > +++ iLib.uni > > @@ -0,0 +1,16 @@ > > +// /** @file > > +// Boot Discovery Policy UI module. > > +// > > +// Copyright (c) 2021, ARM Ltd. All rights reserved.
// Copyright > > +(c) 2021, Semihalf All rights reserved.
// // > > +SPDX-License-Identifier: BSD-2-Clause-Patent // // **/ > > + > > + > > +#string STR_MODULE_ABSTRACT > > +#language en-US "Boot Discovery Policy UI module." > > + > > +#string STR_MODULE_DESCRIPTION > > +#language en-US "Boot Discovery Policy UI module." > > diff --git > > a/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > bStrings.uni > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > bStrings.uni > > new file mode 100644 > > index 0000000000..736011c9bb > > --- /dev/null > > +++ > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyU > > +++ iLibStrings.uni > > @@ -0,0 +1,29 @@ > > +// *++ > > +// > > +// Copyright (c) 2021, ARM Ltd. All rights reserved.
// Copyrig= ht > > +(c) 2021, Semihalf All rights reserved.
// > > +SPDX-License-Identifier: BSD-2-Clause-Patent // // Module Name: > > +// > > +// BootDiscoveryPolicyUiLibStrings.uni > > +// > > +// Abstract: > > +// > > +// String definitions for Boot Discovery Policy UI. > > +// > > +// --*/ > > + > > +/=3D# > > + > > + > > +#langdef en-US "English" > > + > > +#string STR_FORM_BDP_MAIN_TITLE #language en-US "Boot Discove= ry > > Policy" > > + > > +#string STR_FORM_BDP_CONN_MIN #language en-US "Minimal" > > + > > +#string STR_FORM_BDP_CONN_NET #language en-US "Connect > > Network Devices" > > + > > +#string STR_FORM_BDP_CONN_ALL #language en-US "Connect All > > Devices" > > + > > diff --git > > a/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > bVfr.Vfr > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyUiL= i > > bVfr.Vfr > > new file mode 100644 > > index 0000000000..0de87ec34f > > --- /dev/null > > +++ > > b/MdeModulePkg/Library/BootDiscoveryPolicyUiLib/BootDiscoveryPolicyU > > +++ iLibVfr.Vfr > > @@ -0,0 +1,44 @@ > > +///** @file > > +// > > +// Formset for Boot Discovery Policy UI // // Copyright (c) 2021, A= RM > > +Ltd. All rights reserved.
// Copyright (c) 2021, Semihalf All > > +rights reserved.
// // SPDX-License-Identifier: > > +BSD-2-Clause-Patent // //**/ > > + > > +#include > > +#include "Guid/BootDiscoveryPolicy.h" > > +#include > > + > > +typedef struct { > > + UINT32 BootDiscoveryPolicy; > > +} BOOT_DISCOVERY_POLICY_VARSTORE_DATA; > > + > > +formset > > + guid =3D BOOT_DISCOVERY_POLICY_MGR_FORMSET_GUID, > > + title =3D STRING_TOKEN(STR_FORM_BDP_MAIN_TITLE), > > + help =3D STRING_TOKEN(STR_FORM_BDP_MAIN_TITLE), > > + classguid =3D EFI_IFR_BOOT_MAINTENANCE_GUID, > > + > > + efivarstore BOOT_DISCOVERY_POLICY_VARSTORE_DATA, > > + attribute =3D EFI_VARIABLE_BOOTSERVICE_ACCESS | > > EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE, > > + name =3D BootDiscoveryPolicy, > > + guid =3D BOOT_DISCOVERY_POLICY_MGR_FORMSET_GUID; > > + > > + form formid =3D 0x0001, > > + title =3D STRING_TOKEN(STR_FORM_BDP_MAIN_TITLE); > > + > > + oneof varid =3D BootDiscoveryPolicy.BootDiscoveryPolicy, > > + prompt =3D STRING_TOKEN(STR_FORM_BDP_MAIN_TITLE), > > + help =3D STRING_TOKEN(STR_FORM_BDP_MAIN_TITLE), > > + flags =3D NUMERIC_SIZE_4 | INTERACTIVE | RESET_REQUIRED, > > + option text =3D STRING_TOKEN(STR_FORM_BDP_CONN_MIN), value =3D > > BDP_CONNECT_MINIMAL, flags =3D DEFAULT; > > + option text =3D STRING_TOKEN(STR_FORM_BDP_CONN_NET), value =3D > > BDP_CONNECT_NET, flags =3D 0; > > + option text =3D STRING_TOKEN(STR_FORM_BDP_CONN_ALL), value =3D > > + BDP_CONNECT_ALL, flags =3D 0; endoneof; > > + > > + endform; > > +endformset; > > -- > > 2.25.1 > > > > > > > >=20 > > >