mbox series

[edk2,RFC,edk2-platforms,0/6] expand capsule to include SCP firmware

Message ID 20180316161322.6756-1-ard.biesheuvel@linaro.org
Headers show
Series expand capsule to include SCP firmware | expand

Message

Ard Biesheuvel March 16, 2018, 4:13 p.m. UTC
Now that the NOR flash layout has been updated to split the actual SCP
firmware from the startup code and the builtin flasher, we can add the
SCP image to the capsule update to make it field upgradeable.

This involves some rather nasty plumbing, since making changes to capsule
update installable via capsule update requires some additional care.

Patch #1 fixes a bug in the FVB handling code of the flash access library.

Patch #2 addresses an issue where we accidentally started to dereference
arbitrary data as an FV header by incorporating the secure firmware binary
into the flash device.

Patch #3 is an optimization that speeds up flashing of sparse capsules.

Patch #4 adds a PCD that holds the minimum firmware version that is allowed
by a platform. We will use this to ensure that systems using the new layout
cannot be flashed using older capsules, which is unlikely to work in any
case, but not guaranteed to fail in a harmless manner.

Patch #5 is a temporary hack we will need to use to build capsules that
allow upgrading from the old layout to the new layout

Patch #6 implements the new layout, and adds support to set the minimum
version on the build command line.

Ard Biesheuvel (6):
  Silicon/SynQuacerPlatformFlashAccessLib: fix return value on no FVB
    found
  Silicon/SynQuacerPlatformFlashAccessLib: don't dereference FVB header
    fields
  Silicon/SynQuacerPlatformFlashAccessLib: skip empty blocks
  Silicon/SynQuacer: make lowest supported f/w version PCD configurable
  TEMPORARY
  Platform/Socionext/DeveloperBox: add SCP firmware image to capsule

 Platform/Socionext/DeveloperBox/DeveloperBox.dsc                                                      |  3 ++
 Platform/Socionext/DeveloperBox/DeveloperBox.fdf                                                      | 15 ++++---
 Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf                 |  2 +
 Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptorTable.aslc           |  2 +-
 Platform/Socionext/DeveloperBox/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini             |  4 +-
 Silicon/Socionext/SynQuacer/Library/SynQuacerPlatformFlashAccessLib/SynQuacerPlatformFlashAccessLib.c | 46 ++++++++++++++++----
 Silicon/Socionext/SynQuacer/SynQuacer.dec                                                             |  3 ++
 7 files changed, 58 insertions(+), 17 deletions(-)

-- 
2.15.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Ard Biesheuvel May 31, 2018, 6:04 a.m. UTC | #1
On 16 March 2018 at 17:13, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> Now that the NOR flash layout has been updated to split the actual SCP

> firmware from the startup code and the builtin flasher, we can add the

> SCP image to the capsule update to make it field upgradeable.

>

> This involves some rather nasty plumbing, since making changes to capsule

> update installable via capsule update requires some additional care.

>

> Patch #1 fixes a bug in the FVB handling code of the flash access library.

>

> Patch #2 addresses an issue where we accidentally started to dereference

> arbitrary data as an FV header by incorporating the secure firmware binary

> into the flash device.

>

> Patch #3 is an optimization that speeds up flashing of sparse capsules.

>

> Patch #4 adds a PCD that holds the minimum firmware version that is allowed

> by a platform. We will use this to ensure that systems using the new layout

> cannot be flashed using older capsules, which is unlikely to work in any

> case, but not guaranteed to fail in a harmless manner.

>

> Patch #5 is a temporary hack we will need to use to build capsules that

> allow upgrading from the old layout to the new layout

>

> Patch #6 implements the new layout, and adds support to set the minimum

> version on the build command line.

>

> Ard Biesheuvel (6):

>   Silicon/SynQuacerPlatformFlashAccessLib: fix return value on no FVB

>     found

>   Silicon/SynQuacerPlatformFlashAccessLib: don't dereference FVB header

>     fields

>   Silicon/SynQuacerPlatformFlashAccessLib: skip empty blocks

>   Silicon/SynQuacer: make lowest supported f/w version PCD configurable

>   TEMPORARY

>   Platform/Socionext/DeveloperBox: add SCP firmware image to capsule

>

>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc                                                      |  3 ++

>  Platform/Socionext/DeveloperBox/DeveloperBox.fdf                                                      | 15 ++++---

>  Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf                 |  2 +

>  Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptorTable.aslc           |  2 +-

>  Platform/Socionext/DeveloperBox/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini             |  4 +-

>  Silicon/Socionext/SynQuacer/Library/SynQuacerPlatformFlashAccessLib/SynQuacerPlatformFlashAccessLib.c | 46 ++++++++++++++++----

>  Silicon/Socionext/SynQuacer/SynQuacer.dec                                                             |  3 ++

>  7 files changed, 58 insertions(+), 17 deletions(-)

>


Ping?
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Leif Lindholm June 1, 2018, 9:51 a.m. UTC | #2
On Fri, Mar 16, 2018 at 04:13:16PM +0000, Ard Biesheuvel wrote:
> Now that the NOR flash layout has been updated to split the actual SCP

> firmware from the startup code and the builtin flasher, we can add the

> SCP image to the capsule update to make it field upgradeable.

> 

> This involves some rather nasty plumbing, since making changes to capsule

> update installable via capsule update requires some additional care.

> 

> Patch #1 fixes a bug in the FVB handling code of the flash access library.

> 

> Patch #2 addresses an issue where we accidentally started to dereference

> arbitrary data as an FV header by incorporating the secure firmware binary

> into the flash device.

> 

> Patch #3 is an optimization that speeds up flashing of sparse capsules.

> 

> Patch #4 adds a PCD that holds the minimum firmware version that is allowed

> by a platform. We will use this to ensure that systems using the new layout

> cannot be flashed using older capsules, which is unlikely to work in any

> case, but not guaranteed to fail in a harmless manner.

> 

> Patch #5 is a temporary hack we will need to use to build capsules that

> allow upgrading from the old layout to the new layout

> 

> Patch #6 implements the new layout, and adds support to set the minimum

> version on the build command line.

> 

> Ard Biesheuvel (6):

>   Silicon/SynQuacerPlatformFlashAccessLib: fix return value on no FVB

>     found

>   Silicon/SynQuacerPlatformFlashAccessLib: don't dereference FVB header

>     fields

>   Silicon/SynQuacerPlatformFlashAccessLib: skip empty blocks

>   Silicon/SynQuacer: make lowest supported f/w version PCD configurable

>   TEMPORARY

>   Platform/Socionext/DeveloperBox: add SCP firmware image to capsule


I have a few comments on the 5/6 layout thing, but apart from that I'm
happy with the series. I guess 4 doesn't make much sense before we're
ready to include the SCP firmware in the build.
But still - for 1-4/6:
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>


Feel free to push as many or as few of those as you like.

>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc                                                      |  3 ++

>  Platform/Socionext/DeveloperBox/DeveloperBox.fdf                                                      | 15 ++++---

>  Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf                 |  2 +

>  Platform/Socionext/DeveloperBox/SystemFirmwareDescriptor/SystemFirmwareDescriptorTable.aslc           |  2 +-

>  Platform/Socionext/DeveloperBox/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini             |  4 +-

>  Silicon/Socionext/SynQuacer/Library/SynQuacerPlatformFlashAccessLib/SynQuacerPlatformFlashAccessLib.c | 46 ++++++++++++++++----

>  Silicon/Socionext/SynQuacer/SynQuacer.dec                                                             |  3 ++

>  7 files changed, 58 insertions(+), 17 deletions(-)

> 

> -- 

> 2.15.1

> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Ard Biesheuvel June 1, 2018, 9:59 a.m. UTC | #3
On 1 June 2018 at 11:51, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> On Fri, Mar 16, 2018 at 04:13:16PM +0000, Ard Biesheuvel wrote:

>> Now that the NOR flash layout has been updated to split the actual SCP

>> firmware from the startup code and the builtin flasher, we can add the

>> SCP image to the capsule update to make it field upgradeable.

>>

>> This involves some rather nasty plumbing, since making changes to capsule

>> update installable via capsule update requires some additional care.

>>

>> Patch #1 fixes a bug in the FVB handling code of the flash access library.

>>

>> Patch #2 addresses an issue where we accidentally started to dereference

>> arbitrary data as an FV header by incorporating the secure firmware binary

>> into the flash device.

>>

>> Patch #3 is an optimization that speeds up flashing of sparse capsules.

>>

>> Patch #4 adds a PCD that holds the minimum firmware version that is allowed

>> by a platform. We will use this to ensure that systems using the new layout

>> cannot be flashed using older capsules, which is unlikely to work in any

>> case, but not guaranteed to fail in a harmless manner.

>>

>> Patch #5 is a temporary hack we will need to use to build capsules that

>> allow upgrading from the old layout to the new layout

>>

>> Patch #6 implements the new layout, and adds support to set the minimum

>> version on the build command line.

>>

>> Ard Biesheuvel (6):

>>   Silicon/SynQuacerPlatformFlashAccessLib: fix return value on no FVB

>>     found

>>   Silicon/SynQuacerPlatformFlashAccessLib: don't dereference FVB header

>>     fields

>>   Silicon/SynQuacerPlatformFlashAccessLib: skip empty blocks

>>   Silicon/SynQuacer: make lowest supported f/w version PCD configurable

>>   TEMPORARY

>>   Platform/Socionext/DeveloperBox: add SCP firmware image to capsule

>

> I have a few comments on the 5/6 layout thing, but apart from that I'm

> happy with the series. I guess 4 doesn't make much sense before we're

> ready to include the SCP firmware in the build.

> But still - for 1-4/6:

> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

>

> Feel free to push as many or as few of those as you like.

>


Thanks

#1 - #3 pushed as c9be7b11ea10..e45ae44ec07e

#4 will be updated to use PcdLowestSupportedFirmwareVersion from
SignedCapsulePkg, and that patch is still under review.
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel