[if gte mso 9]>
Subject: Re: [edk2] IHV HII implementation and recent Tianocore Browser change
From: "Samuelraj, Daniel" <Daniel.Samuelraj@lsi.com>
To: "Tian, Hot" <email@example.com>, Jeff Bobzin <firstname.lastname@example.org>, "email@example.com" <firstname.lastname@example.org>, "email@example.com" <firstname.lastname@example.org>
Date: 2014-02-14 01:03:27
Thanks Tian and Jeff. We will ask our browser vendor/IBV/OEM to try with this patch.
Appreciate the response!
In order to avoid the big impact to the existing HII drivers. There is a latest patch to avoid this incompatible change (r15229). Could you try it?
Current UEFI spec does not allow Hii forms to save config data inside Browser callback but many (most?) drivers do. This includes iSCSI sample driver in Tianocore.
Save is done inside callback is done for several reasons including
1) Instant action with immediate update to the form
2) Because some early shipping systems were not calling RouteConfig promptly within page-to-page navigation and only called upon final exit so IHV had no other way to make pages work dynamically
Spec says config data must be saved in RouteConfig and provides exit codes from callback to make that possible.
There is no mechanism defined for callback to tell browser that data was saved inside the callback and extra RouteConfig is not required.
New EDK-II reference browser follows spec (with only a few minor issues).
Result is false prompt to save data on final exit.
This is thorny problem without clear solution.
Direction to look for solution is method for IHV to detect “Early Browser” or “Latest Browser” on the fly.
IHV can use RouteConfig if they can trust the Browser to follow the rules.
But big burden for IHV to be compatible with both.
Recently we ran into situation where browser vendor/IBV/OEM is using the latest Tianocore browser which has some fundamental changes compared to the older one.
What is changed in browser:
The new browser caches the varstores when the formset is first loaded.
· When user exits from the formset, the browser checks for varstore changes (compared to the cached varstores).
If any change is detected, it will pop up a "Settings Changed" dialog.
This poses a big problem for IHV and their customers. That is, when customer navigates to different forms and not making any changes, customer is expecting not to see this "Settings Changed" popup.
However, our HII driver will make an appropriate content change for some of the forms on-the-fly and will modify the associated varstores as necessary (please refer “Use case” section below for additional details). This is necessary for RAID Storage Management/Configuration App which need to manage 240 physical drives (+enclosures, hot spare, battery etc) and several Virtual drives (RAID volumes). Our HII app is driven by user and it utilizes Hii Config Access protocol’s Callback function heavily.
1. How do we address this issue?
2. What is recommended solution that complies with UEFI spec?
Appreciate your response!
· User has attached 40 physical drives (PD) to RAID storage controller and user gets into HII formset and then into Physical Drive Management form where we will list all 40 PDs as clickable goto link (NOTE: this form will be populated based on how many PDs user has connected at a given time; that is the content of this form will be determined at runtime; because user may hot insert or hot remove a drive before clicking on Physical Drive Management goto link but after entering into formset…). The form will look as below:
o PD 0 HDD: SAS:4k: 2TB: Online
o PD 1 SSD: SATA: 512b: 1TB: Rebuild
o PD 39 Tape: SATA: 4TB
· From this form user can choose a PD to view additional information (PD properties) and / or to perform additional PD operations (like performing locate operation, or force drive to offline, or start rebuild, or assign hot spare etc). We need to populate this form based on what PD user chooses to operate on.
Apparently the content of these two forms can only be determined during run-time and the associated varstores will be modified to reflect the information.