[edk2-devel] [PATCH] SecurityPkg: Add RPMC Index to the RpmcLib

Yao, Jiewen jiewen.yao at intel.com
Fri Nov 20 07:38:37 UTC 2020


Hey
The more I review the code, the more I think we should revisit the usage mode for multiple counters.

Some thought:

1) In previous design, it is very clear that we only have one counter. We read it and we increase it.
But here, if we add Index, that means there could be multiple counters. Then the question is how many? There is no API to tell us how many counters we can use.
For multiple counter case, I think we need at least one API - GetCounterNumber().

2) The description for Index is not clear.
Does that start from 0 or 1, to any ID to match hardware?
If it is the last one, then we need a bit-mask, or a valid ID array to show which counter number is valid to use.

3) Compatibility is another problem, if the old solution *just* need one counter, then it has to use the new API to select which counter?

Now, I am not sure if using *Index* is the best way to resolve the problem.

I recommend we check in a real solution to use the RpmcLib, then we can see what interface is really needed.

Thank you
Yao Jiewen


> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Wang,
> Jian J
> Sent: Wednesday, November 18, 2020 11:35 AM
> To: devel at edk2.groups.io; Mistry, Nishant C <nishant.c.mistry at intel.com>
> Subject: Re: [edk2-devel] [PATCH] SecurityPkg: Add RPMC Index to the
> RpmcLib
> 
> 
> Reviewed-by: Jian J Wang <jian.j.wang at intel.com>
> 
> Regards,
> Jian
> 
> > -----Original Message-----
> > From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of
> Nishant
> > Mistry
> > Sent: Thursday, November 12, 2020 2:49 AM
> > To: devel at edk2.groups.io
> > Subject: [edk2-devel] [PATCH] SecurityPkg: Add RPMC Index to the RpmcLib
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2594
> >
> > The re-design requires multiple RPMC counter usages.
> > The consumer will be capable of selecting amongst multiple counters.
> >
> > Signed-off-by: Nishant C Mistry <nishant.c.mistry at intel.com>
> > ---
> >  SecurityPkg/Include/Library/RpmcLib.h         | 6 +++++-
> >  SecurityPkg/Library/RpmcLibNull/RpmcLibNull.c | 6 +++++-
> >  2 files changed, 10 insertions(+), 2 deletions(-)
> >
> > diff --git a/SecurityPkg/Include/Library/RpmcLib.h
> > b/SecurityPkg/Include/Library/RpmcLib.h
> > index 5882bfae2f..3c15bce1ce 100644
> > --- a/SecurityPkg/Include/Library/RpmcLib.h
> > +++ b/SecurityPkg/Include/Library/RpmcLib.h
> > @@ -14,6 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  /**
> >    Requests the monotonic counter from the designated RPMC counter.
> >
> > +  @param[in]    CounterIndex            The RPMC index
> >    @param[out]   CounterValue            A pointer to a buffer to store the
> RPMC
> > value.
> >
> >    @retval       EFI_SUCCESS             The operation completed successfully.
> > @@ -23,12 +24,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  EFI_STATUS
> >  EFIAPI
> >  RequestMonotonicCounter (
> > +  IN  UINT8   CounterIndex,
> >    OUT UINT32  *CounterValue
> >    );
> >
> >  /**
> >    Increments the monotonic counter in the SPI flash device by 1.
> >
> > +  @param[in]    CounterIndex            The RPMC index
> > +
> >    @retval       EFI_SUCCESS             The operation completed successfully.
> >    @retval       EFI_DEVICE_ERROR        A device error occurred while
> attempting
> > to update the counter.
> >    @retval       EFI_UNSUPPORTED         The operation is un-supported.
> > @@ -36,7 +40,7 @@ RequestMonotonicCounter (
> >  EFI_STATUS
> >  EFIAPI
> >  IncrementMonotonicCounter (
> > -  VOID
> > +  IN  UINT8   CounterIndex
> >    );
> >
> >  #endif
> > diff --git a/SecurityPkg/Library/RpmcLibNull/RpmcLibNull.c
> > b/SecurityPkg/Library/RpmcLibNull/RpmcLibNull.c
> > index e1dd09eb10..697e493a7c 100644
> > --- a/SecurityPkg/Library/RpmcLibNull/RpmcLibNull.c
> > +++ b/SecurityPkg/Library/RpmcLibNull/RpmcLibNull.c
> > @@ -12,6 +12,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  /**
> >    Requests the monotonic counter from the designated RPMC counter.
> >
> > +  @param[in]    CounterIndex            The RPMC index
> >    @param[out]   CounterValue            A pointer to a buffer to store the
> RPMC
> > value.
> >
> >    @retval       EFI_SUCCESS             The operation completed successfully.
> > @@ -21,6 +22,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  EFI_STATUS
> >  EFIAPI
> >  RequestMonotonicCounter (
> > +  IN  UINT8   CounterIndex,
> >    OUT UINT32  *CounterValue
> >    )
> >  {
> > @@ -31,6 +33,8 @@ RequestMonotonicCounter (
> >  /**
> >    Increments the monotonic counter in the SPI flash device by 1.
> >
> > +  @param[in]    CounterIndex            The RPMC index
> > +
> >    @retval       EFI_SUCCESS             The operation completed successfully.
> >    @retval       EFI_DEVICE_ERROR        A device error occurred while
> attempting
> > to update the counter.
> >    @retval       EFI_UNSUPPORTED         The operation is un-supported.
> > @@ -38,7 +42,7 @@ RequestMonotonicCounter (
> >  EFI_STATUS
> >  EFIAPI
> >  IncrementMonotonicCounter (
> > -  VOID
> > +  IN  UINT8   CounterIndex
> >    )
> >  {
> >    ASSERT (FALSE);
> > --
> > 2.16.2.windows.1
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#67756): https://edk2.groups.io/g/devel/message/67756
Mute This Topic: https://groups.io/mt/78195042/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list