Hi Andrew or Haojiang
Would you please share more your insight below:
“It should be possible to discover based on address or PCD device path (or 
protocol) and do the reads via FVB.”

Is “discover” here means something done in variable driver Entrypoint?
Then variable driver need be enhanced get base address via DevicePathPcd or 
Protocol (another dependency ?)
So we still assume variable storage is linear block device. Right?

Thank you
Yao Jiewen

From: Andrew Fish [mailto:[email protected]]
Sent: Friday, April 24, 2015 10:01 AM
To: [email protected]
Subject: Re: [edk2] Variable Storage Driver


On Apr 23, 2015, at 6:53 PM, Haojian Zhuang 
<[email protected]<mailto:[email protected]>> wrote:

在 2015/4/24 9:35, Yao, Jiewen 写道:

HI Andrew
You are right that we have FVB for flash device abstraction. The current 
variable have some assumption:
1) It assumes EFI_FVB2_MEMORY_MAPPED already set for FVB implementation. It 
even does not check this bit and start use memory map way to read flash.
2) It assumes EFI_FVB2_STICKY_WRITE already set for FVB implementation. So 
Erase block is always invoked.
As you said, current variable driver is optimized for SPI NOR. But it might be 
burden to other flash device.

One more question is: this variable driver assume variable is stored in flash 
storage "block" - which can be abstracted by FVB.
What happen, if variable in stored in another format? Map variable file to 
"block"? I see how it is implemented in OVMF, really complicated.
Or should the other variable driver duplicate all complicated Authentication 
server in their own variable driver?

I think that we could just implement a block variable driver. And we
don't need to change more in existing variablue driver + fault write driver.

Here's a reference as my implementation.
https://github.com/96boards/edk2/tree/hikey/HisiPkg/HiKeyPkg/Drivers/BlockVariableDxe

I only make it support FVB protocol, and it works. In order to keep
align with existing PCD values in variable driver. I keep declaring
PcdFlashNvStorageVariableBase & PcdNvStorageVariableBlockSize in memory
that are not useful. And I create new
PcdNvStorageVariableBlockDevicePath, PcdFlashNvStorageVariableBlockCount
& PcdNvStorageVariableBlockLba. And I still need to fix one thing that
should reserve this memory space.


I was just writing an email with a note that this was the right way to fix the 
variable driver…. Thanks!

The PCD could be a device path, or a feature flag to look for an FVB protocol 
with a well know protocol on the handle (MdeModulePkg protocol with NUL data).

It should be possible to discover based on address or PCD device path (or 
protocol) and do the reads via FVB.

Thanks,

Andrew Fish


Regards
Haojian

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to