On Wed, 11 Mar 2020 at 21:12, Qiuxu Zhuo <qiuxu.zhuo@xxxxxxxxx> wrote: > > Change Log v5->v6: > Part1: No changes. > Part2: Update capsule-pstore.c file header. > Move the variable 'efi_capsule_pstore_info' backward (for removing some function declarations). > This conflicts badly with the efi/core changes queued up in the tip tree (and hence linux-next) Please rebase and repost > > History: > The v5 was sent about two years ago [1]. At that time there was a concern about the EFI system table > entry 'CapsulePtr' as below: whether it was an array of capsules or an array of pointers to capsules. > > typedef struct { UINT32 CapsuleArrayNumber; VOID* CapsulePtr[1]; } EFI_CAPSULE_TABLE; > > The latest UEFI specification v2.8 [2] has a clarification in P268 for 'CapsulePtr' as below: > > "CapsulePtr A pointer to an array of capsules that contain the same CapsuleGuid value. > Each CapsulePtr points to an instance of an EFI_CAPSULE_HEADER, with the capsule data > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > concatenated on its end." > ^^^^^^^^^^^^^^^^^^^^^^^ > > According to the highlighted description above, the 'CapsulePtr' should be an array of pointers to capsules. > The capsule-pstore driver and the tested BIOS also use the 'CapsulePtr' as an array of pointers to capsules. > > > Test: > The v6 is well-tested on an Intel Kaby Lake client platform + BIOS(10/24/2016) and an Intel Ice Lake > client platform + BIOS(09/12/2019). > > Reference: > [1] https://lore.kernel.org/linux-efi/?q=capsule-pstore > [2] https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_A_Feb14.pdf > > Qiuxu Zhuo (2): > efi: Add 'nr_config_table' variable in efi structure > eif/capsule-pstore: Add capsule pstore backend > > arch/x86/platform/efi/efi.c | 1 + > drivers/firmware/efi/Kconfig | 21 + > drivers/firmware/efi/Makefile | 1 + > drivers/firmware/efi/arm-init.c | 4 +- > drivers/firmware/efi/capsule-pstore.c | 692 ++++++++++++++++++++++++++ > drivers/firmware/efi/efi.c | 1 + > include/linux/efi.h | 1 + > 7 files changed, 720 insertions(+), 1 deletion(-) > create mode 100644 drivers/firmware/efi/capsule-pstore.c > > -- > 2.17.1 >