Michael,
I am good with that. I am also curious how you merge all the different SPI 
flash implementation into one.

Thanks,
Ray

> -----Original Message-----
> From: Michael Kubacki <mikub...@linux.microsoft.com>
> Sent: Tuesday, March 2, 2021 3:16 AM
> To: devel@edk2.groups.io; Ni, Ray <ray...@intel.com>
> Cc: Chaganty, Rangasai V <rangasai.v.chaga...@intel.com>; Chiu, Chasel 
> <chasel.c...@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desim...@intel.com>; Luo, Heng <heng....@intel.com>; Agyeman, 
> Prince <prince.agye...@intel.com>;
> gaolim...@byosoft.com.cn; Dong, Eric <eric.d...@intel.com>
> Subject: Re: [edk2-devel] [edk2-platforms][RFC] SpiFlashCommonLib Refactor
> 
> Hi Ray,
> 
> That sounds reasonable to me.
> 
> I was attempting to preserve the design that isolates the
> silicon-specific logic to a library via an interface to a silicon
> package. However, the real abstraction here is the firmware volume block
> protocol which could simply be produced by a silicon driver with the
> separation of such logic to a library being an implementation detail of
> the driver.
> 
> In summary, here is the updated proposal:
> 
> 1. Consolidate the library interface into a single header in
> IntelSiliconPkg.
> 
> 2. Consolidate the library implementation into a single instance in
> IntelSiliconPkg.
> 
> 3. Move SpiFvbServiceSmm out of MinPlatformPkg into IntelSiliconPkg.
> 
> 4. Add SpiFvbServiceStandaloneMm to IntelSiliconPkg sharing
> implementation with SpiFvbServiceSmm where appropriate.
> 
> Intel board packages would then use the SpiFlashCommonLib from
> IntelSiliconPkg (a generation specific instance could be created if
> needed) and use the SpiFvbServiceXyz driver from IntelSiliconPkg.
> 
> Please let me know if this is acceptable and I'd be happy to send the
> patches.
> 
> Thanks,
> Michael
> 
> On 3/1/2021 1:07 AM, Ni, Ray wrote:
> > Michael,
> > I agree with your thoughts to consolidate the lib header and implementation 
> > to IntelSiliconPkg.
> > I didn't read the different implementations. But the implementation 
> > consolidation means you see all the existing
> implementations are the same. Right?
> >
> > But why don't you put the driver in IntelSiliconPkg as well? Creating an 
> > advanced feature for this fundamental service seems
> over-kill.
> >
> > Thanks,
> > Ray
> >
> >> -----Original Message-----
> >> From: Chaganty, Rangasai V <rangasai.v.chaga...@intel.com>
> >> Sent: Monday, March 1, 2021 4:46 PM
> >> To: Ni, Ray <ray...@intel.com>
> >> Subject: RE: [edk2-platforms][RFC] SpiFlashCommonLib Refactor
> >>
> >> Did you get a chance to look into this ?
> >>
> >> -----Original Message-----
> >> From: Michael Kubacki <mikub...@linux.microsoft.com>
> >> Sent: Tuesday, February 16, 2021 4:58 PM
> >> To: devel@edk2.groups.io; Ni, Ray <ray...@intel.com>; Chaganty, Rangasai V 
> >> <rangasai.v.chaga...@intel.com>; Chiu,
> Chasel
> >> <chasel.c...@intel.com>; Desimone, Nathaniel L 
> >> <nathaniel.l.desim...@intel.com>; Luo, Heng <heng....@intel.com>;
> >> Agyeman, Prince <prince.agye...@intel.com>; gaolim...@byosoft.com.cn; 
> >> Dong, Eric <eric.d...@intel.com>
> >> Subject: [edk2-platforms][RFC] SpiFlashCommonLib Refactor
> >>
> >> Hello,
> >>
> >> I'm planning to submit support for Standalone MM in SpiFlashCommonLib 
> >> soon. Currently, there's quite a bit of duplication
> with
> >> SpiFlashCommonLib.
> >>
> >> I would like to have this Standalone MM support be available in as 
> >> consistent of a location as possible so I'd like to see if
> there is
> >> anything I can do to help clean this up in the early part of the patch 
> >> series.
> >>
> >>
> >> The library interface is currently defined in the following header files:
> >>
> >> 1. Platform\Intel\MinPlatformPkg\Include\Library\SpiFlashCommonLib.h
> >>
> >> 2. Silicon\Intel\SimicsIch10Pkg\Include\Library\SpiFlashCommonLib.h
> >>
> >> 3. Silicon\Intel\KabylakeSiliconPkg\Pch\Include\Library\SpiFlashCommonLib.h
> >>
> >> 4.
> >> Silicon\Intel\CoffeelakeSiliconPkg\Pch\Include\Library\SpiFlashCommonLib.h
> >>
> >>
> >> Instances of SmmSpiFlashCommonLib implementation exist in a mix of 
> >> platform and silicon packages:
> >>
> >> 1.
> >> Silicon\Intel\SimicsIch10Pkg\Library\SmmSpiFlashCommonLib\SmmSpiFlashCommonLib.inf
> >>
> >> 2.
> >> Platform\Intel\TigerlakeOpenBoardPkg\Library\SmmSpiFlashCommonLib\SmmSpiFlashCommonLib.inf
> >>
> >> 3.
> >> Silicon\Intel\KabylakeSiliconPkg\Pch\Library\SmmSpiFlashCommonLib\SmmSpiFlashCommonLib.inf
> >>
> >> 4.
> >> Silicon\Intel\CoffeelakeSiliconPkg\Pch\Library\SmmSpiFlashCommonLib\SmmSpiFlashCommonLib.inf
> >>
> >> 5.
> >> Platform\Intel\MinPlatformPkg\Flash\Library\SpiFlashCommonLibNull\SpiFlashCommonLibNull.inf
> >>
> >>
> >> The library class is currently consumed in the following INFs:
> >>
> >> 1. Platform\Intel\MinPlatformPkg\Flash\SpiFvbService\SpiFvbServiceSmm.inf
> >>
> >> 2.
> >> Platform\Intel\MinPlatformPkg\Flash\SpiFvbService\SpiFvbServiceStandaloneMm.inf
> >>
> >>
> >> My understanding is:
> >>
> >> 1. The header file is defined in each silicon package because silicon 
> >> cannot depend upon platform (i.e. the MinPlatformPkg
> >> header).
> >>
> >> 2. The header is present in each silicon package because the 
> >> implementation is silicon-specific and these packages cannot
> >> depend on one another.
> >>
> >> 3. The header is defined in MinPlatformPkg because MinPlatformPkg should 
> >> be silicon vendor agnostic (cannot depend on the
> >> silicon packages).
> >>
> >> 4. The header is needed in MinPlatformPkg because the SpiFvbService there 
> >> depends on SPI flash operations implemented in
> >> SpiFlashCommonLib.
> >>
> >>
> >> Here's an initial proposal:
> >>
> >> 1. Consolidate the library interface into a single header. In
> >> IntelSiliconPkg?
> >>
> >> 2. Consolidate library implementation into a single instance. In
> >> IntelSiliconPkg?
> >>
> >> 3. Move SpiFvbServiceXyz out of MinPlatformPkg.
> >>      3.a. Make a "SPI flash" feature?
> >>      3.b. Allow the Intel implementation of this feature to depend on
> >> SpiFlashCommonLib defined in IntelSiliconPkg.
> >>
> >> Intel board packages could then use the SpiFlashCommonLib from
> >> IntelSiliconPkg (a generation specific instance could be created if
> >> needed) and use the SpiFvbServiceXyz driver from the "SpiFlash" feature.
> >>
> >> Look forward to your thoughts and feedback.
> >>
> >> Thanks,
> >> Michael
> >
> >
> > 
> >
> >


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#72303): https://edk2.groups.io/g/devel/message/72303
Mute This Topic: https://groups.io/mt/80694124/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to