> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of Cohen, 
> Eugene
> Sent: Tuesday, October 11, 2016 8:18 AM
> To: Kinney, Michael D <[email protected]>; Gao, Liming 
> <[email protected]>;
> Laszlo Ersek <[email protected]>; [email protected] 
> <[email protected]>;
> Yao, Jiewen <[email protected]>; Andrew Fish ([email protected]) 
> <[email protected]>
> Subject: Re: [edk2] RFC: ProtocolLib for cross DXE and SMM Protocol and 
> Handle Services
> 
> Mike,
> 
> > I agree that accessing DXE protocols in an SMI handler is not allowed.
> >
> > It is legal for an SMM Driver to access DXE content in the SMM Driver Entry 
> > Point.
> 
> To digress from the original thread a bit..
> 
> There's legal from a PI perspective but for the situations that warrant 
> stricter
> security where this would not be (execution of non-SMM code inside SMM).  I 
> think it
> would be useful to come up with terminology so we know what model we're 
> talking about.
> I can envision four different SMM models:
> 
> 1. Framework 0.9 SMM - dual DXE/SMM drivers
> 2. PI SMM (pre-1.5) - IPL from DXE, SMM drivers use Boot Services at init
> 3. PI Standalone SMM (1.5) - IPL from SEC or PEI, SMM drivers may use Boot 
> Services
> when they become available
> 4. PI Strict Standalone SMM (1.5) - IPL from SEC or PEI, SMM drivers never 
> use Boot
> Services
> 
> So for the statement I made I'm referring to the "Strict Standalone" - as you 
> can
> probably tell that is what I'm targeting right now.
> 
> > If you are providing an abstraction for policy data, would a PCD be a 
> > better way
> > to store/access that information that already works for all phases?
> 
> The policy data isn't static on some platform so the protocol provides a good 
> way to
> evaluate the conditions at runtime.  I'm sure a dynamic PCD could be used to 
> accomplish
> this (although with the strict standalone model this would require more 
> infrastructure
> to be developed) but my goal at this point is not to review the use of 
> protocols for
> policies but to provide an example of a use case for the ProtocolLib 
> proposal.  This
> was the first example I came up with but I expect there to be more functional 
> cases as
> well.
> 
> Earlier in the thread you mentioned that protocol GUIDs should not be shared 
> across DXE
> and SMM - I didn't want to lose track of that since what I'm proposing would 
> directly
> contradict the proposal, so could you elaborate on what you were referring to 
> with that
> statement?

I am not aware of any in the UEFI/PI specs.  Every time a new protocol is 
defined it is 
recommended that a new GUID value be used to prevent GUID collisions.  If you 
have every
had to debug a GUID collision, you know how hard that is to figure out.

To ask a question from a different perspective.  What is the value of using the 
same GUID
for a DXE protocol and SMM protocol?

> 
> Thanks,
> 
> Eugene
> 
> -----Original Message-----
> From: Kinney, Michael D [mailto:[email protected]]
> Sent: Monday, October 10, 2016 2:40 PM
> To: Cohen, Eugene <[email protected]>; Gao, Liming <[email protected]>; Laszlo 
> Ersek
> <[email protected]>; [email protected] <[email protected]>; Yao, 
> Jiewen
> <[email protected]>; Andrew Fish ([email protected]) <[email protected]>; 
> Kinney,
> Michael D <[email protected]>
> Subject: RE: [edk2] RFC: ProtocolLib for cross DXE and SMM Protocol and 
> Handle Services
> 
> Eugene,
> 
> I agree that accessing DXE protocols in an SMI handler is not allowed.
> 
> It is legal for an SMM Driver to access DXE content in the SMM Driver Entry 
> Point.
> 
> For example, if an SMM Driver depends on PCDs, the PCD values can be read 
> from the
> PCD database through the PCD Protocol in the driver entry point.
> 
> If you are providing an abstraction for policy data, would a PCD be a better 
> way
> to store/access that information that already works for all phases?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: edk2-devel [mailto:[email protected]] On Behalf Of 
> > Cohen, Eugene
> > Sent: Monday, October 10, 2016 1:11 PM
> > To: Kinney, Michael D <[email protected]>; Gao, Liming
> > <[email protected]>; Laszlo Ersek <[email protected]>; 
> > [email protected]
> > <[email protected]>; Yao, Jiewen <[email protected]>; Andrew Fish
> > ([email protected]) <[email protected]>
> > Subject: Re: [edk2] RFC: ProtocolLib for cross DXE and SMM Protocol and 
> > Handle
> > Services
> >
> > Mike,
> >
> > > Can you provide examples in EDK II today where the same GUID Value
> > > and Structure definition
> > > are used in both the UEFI Handle Database and the SMM Handle
> > > Database.
> >
> > The example exists in our internal code right now.  We have two platform 
> > families:
> > one with SMM and one without.  We have a library, originally developed as a 
> > DXE
> > library, that use a protocol to determine a secure boot policy setting.  
> > This library
> > is linked against our variable driver.  In our non-SMM system the variable 
> > driver
> > runs as a Runtime DXE component and the policy protocol referenced is 
> > published in
> > the Boot Services protocol DB.  In our SMM system the variable driver runs 
> > in SMM and
> > the policy protocol is published in the SMM protocol DB.  The protocol is 
> > identical
> > and uses the same GUID.  So in this scenario we don't install the protocol
> > simultaneously in both environments, rather we have different platforms 
> > where the
> > protocol resides on one side or the other.  Since this protocol is really 
> > simple
> > (it's not using events, TPL or depending on UEFI boot services stuff) it 
> > works well
> > for this model.
> >
> > > I am aware of cases where an SMM Driver looks for protocols in the
> > > DXE Handle database,
> > > but I don't think your proposed lib would cover that case.
> >
> > Correct - in our usage we are trying to discourage the cross-pollination of 
> > SMM and
> > DXE in this way since security minded people get nervous when SMM executes 
> > outside of
> > the secure sandbox.
> >
> > Thanks,
> >
> > Eugene
> > _______________________________________________
> > edk2-devel mailing list
> > [email protected]
> > https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to