Matt Fleming f0133f3c5b 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 <matt@codeblueprint.co.uk>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Cc: Kweh Hock Leong <hock.leong.kweh@intel.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Peter Jones <pjones@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: joeyli <jlee@suse.com>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/1461614832-17633-28-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-04-28 11:34:03 +02:00
..
2016-04-02 01:17:36 +02:00
2016-03-23 17:52:10 +02:00
2016-04-12 12:35:07 -07:00
2016-04-21 20:57:46 +02:00
2016-04-16 22:52:03 +05:30
2016-03-25 08:52:25 -07:00
2016-03-17 13:47:50 -07:00
2016-04-07 22:11:08 +02:00
2016-03-23 17:20:59 -07:00
2016-04-05 06:47:50 -07:00
2016-03-24 19:57:15 -07:00
2016-03-18 10:15:11 -07:00
2016-04-15 15:25:09 -07:00
2016-03-19 15:15:07 -07:00
2016-04-18 19:52:47 -07:00
2016-04-21 08:23:59 -07:00
2016-04-14 16:54:00 +02:00
2016-03-18 10:15:11 -07:00
2016-04-09 12:00:42 -07:00
2016-03-20 15:40:32 -07:00
2016-04-23 11:13:46 -07:00
2016-04-20 10:38:06 +03:00
2016-03-17 13:05:09 -07:00
2016-04-04 11:18:00 +01:00