public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io, ard.biesheuvel@arm.com
Cc: Zhichao Gao <zhichao.gao@intel.com>, Ray Ni <ray.ni@intel.com>,
	Jian J Wang <jian.j.wang@intel.com>,
	Hao A Wu <hao.a.wu@intel.com>, Dandan Bi <dandan.bi@intel.com>
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/DeviceManagerUiLib: connect all before creating menu page
Date: Thu, 9 Apr 2020 11:29:16 +0200	[thread overview]
Message-ID: <1e1d4c9d-01ed-2b65-69ec-278f95309d25@redhat.com> (raw)
In-Reply-To: <20200408172807.10108-1-ard.biesheuvel@arm.com>

On 04/08/20 19:28, Ard Biesheuvel wrote:
> The device manager UI library creates a UiApp submenu that contains a
> list of network devices in the system. The logic that creates this menu
> assumes that all handles have been connected to their drivers, but this
> is not guaranteed in the general case.
> 
> So work around this by doing an explicit ConnectAll() before populating
> the pages.
> 
> Cc: Zhichao Gao <zhichao.gao@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Cc: Dandan Bi <dandan.bi@intel.com>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
> ---
>  MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c        | 7 +++++++
>  MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h        | 1 +
>  MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf | 1 +
>  3 files changed, 9 insertions(+)

Can you describe one example that's (a) relevant to you and (b) affected
by this issue?

EfiBootManagerConnectAll() feels quite heavy-weight; I'd *vaguely*
prefer adding it elsewhere, instead of a "UI lib"'s constructor. I don't
have a particular suggestion however.

I guess part of the issue must be that the EfiBootManagerConnectAll()
calls in BootManagerMenuApp / UiApp are not reached, somehow. Maybe
those are the calls that DeviceManagerUiLib takes for granted.

Thanks,
Laszlo

> diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c
> index 0540e6fa8a44..3bc13d340775 100644
> --- a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c
> +++ b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c
> @@ -892,6 +892,13 @@ DeviceManagerUiLibConstructor (
>                    );
>    ASSERT (gDeviceManagerPrivate.HiiHandle != NULL);
>  
> +  //
> +  // The device manager form contains a page listing all the network
> +  // controllers in the system. This list can only be populated if all
> +  // handles have been connected, so do it here.
> +  //
> +  EfiBootManagerConnectAll ();
> +
>    //
>    // Update boot manager page
>    //
> diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h
> index 22fe12d2a5e8..c53c2a1a0e1a 100644
> --- a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h
> +++ b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h
> @@ -23,6 +23,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>  #include <Library/BaseLib.h>
>  #include <Library/HiiLib.h>
>  #include <Library/DevicePathLib.h>
> +#include <Library/UefiBootManagerLib.h>
>  #include <Library/UefiHiiServicesLib.h>
>  
>  //
> diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
> index cb01b3b85180..d7f833d8b23a 100644
> --- a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
> +++ b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
> @@ -40,6 +40,7 @@ [LibraryClasses]
>    DebugLib
>    PrintLib
>    HiiLib
> +  UefiBootManagerLib
>    UefiHiiServicesLib
>  
>  [Guids]
> 


  reply	other threads:[~2020-04-09  9:29 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-08 17:28 [PATCH] MdeModulePkg/DeviceManagerUiLib: connect all before creating menu page Ard Biesheuvel
2020-04-09  9:29 ` Laszlo Ersek [this message]
2020-04-09  9:37   ` [edk2-devel] " Ard Biesheuvel
2020-04-09 13:30     ` Laszlo Ersek
2020-04-12  7:55     ` Dandan Bi
2020-04-12  8:11       ` Hot Tian
2020-04-14 10:02         ` Laszlo Ersek
2020-04-12  8:21       ` Ard Biesheuvel
2020-04-19  8:06         ` Dandan Bi
2020-04-24 17:59           ` Ard Biesheuvel
     [not found]           ` <1608D342B47ED79B.10837@groups.io>
2020-04-30  7:52             ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1e1d4c9d-01ed-2b65-69ec-278f95309d25@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox