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). 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