]> Git Repo - linux.git/commit - include/linux/efi.h
efi: Add 'capsule' update support
authorMatt Fleming <[email protected]>
Mon, 25 Apr 2016 20:06:59 +0000 (21:06 +0100)
committerIngo Molnar <[email protected]>
Thu, 28 Apr 2016 09:34:03 +0000 (11:34 +0200)
commitf0133f3c5b8bb34ec4dec50c27e7a655aeee8935
tree77cc29480d4aac1168560722f4bcb3c2b7658667
parent806b0351c9ff9890c1ef0ba2c46237baef49ac79
efi: Add 'capsule' update support

The EFI capsule mechanism allows data blobs to be passed to the EFI
firmware. A common use case is performing firmware updates. This patch
just introduces the main infrastructure for interacting with the
firmware, and a driver that allows users to upload capsules will come
in a later patch.

Once a capsule has been passed to the firmware, the next reboot must
be performed using the ResetSystem() EFI runtime service, which may
involve overriding the reboot type specified by reboot=. This ensures
the reset value returned by QueryCapsuleCapabilities() is used to
reset the system, which is required for the capsule to be processed.
efi_capsule_pending() is provided for this purpose.

At the moment we only allow a single capsule blob to be sent to the
firmware despite the fact that UpdateCapsule() takes a 'CapsuleCount'
parameter. This simplifies the API and shouldn't result in any
downside since it is still possible to send multiple capsules by
repeatedly calling UpdateCapsule().

Signed-off-by: Matt Fleming <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Bryan O'Donoghue <[email protected]>
Cc: Kweh Hock Leong <[email protected]>
Cc: Mark Salter <[email protected]>
Cc: Peter Jones <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: joeyli <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
drivers/firmware/efi/Makefile
drivers/firmware/efi/capsule.c [new file with mode: 0644]
drivers/firmware/efi/reboot.c
include/linux/efi.h
This page took 0.061885 seconds and 4 git commands to generate.