Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e1117b2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull EFI fixes from Ingo Molnar:
 "A fix for EFI capsules and an SGI UV platform fix"

* 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  efi/capsule: Allocate whole capsule into virtual memory
  x86/platform/uv: Skip UV runtime services mapping in the efi_runtime_disabled case
parents 99091700 6862e6ad
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -187,7 +187,8 @@ EXPORT_SYMBOL_GPL(uv_bios_set_legacy_vga_target);
void uv_bios_init(void)
{
	uv_systab = NULL;
	if ((efi.uv_systab == EFI_INVALID_TABLE_ADDR) || !efi.uv_systab) {
	if ((efi.uv_systab == EFI_INVALID_TABLE_ADDR) ||
	    !efi.uv_systab || efi_runtime_disabled()) {
		pr_crit("UV: UVsystab: missing\n");
		return;
	}
+5 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/mutex.h>
#include <linux/efi.h>
#include <linux/vmalloc.h>

#define NO_FURTHER_WRITE_ACTION -1

@@ -108,14 +109,15 @@ static ssize_t efi_capsule_submit_update(struct capsule_info *cap_info)
	int ret;
	void *cap_hdr_temp;

	cap_hdr_temp = kmap(cap_info->pages[0]);
	cap_hdr_temp = vmap(cap_info->pages, cap_info->index,
			VM_MAP, PAGE_KERNEL);
	if (!cap_hdr_temp) {
		pr_debug("%s: kmap() failed\n", __func__);
		pr_debug("%s: vmap() failed\n", __func__);
		return -EFAULT;
	}

	ret = efi_capsule_update(cap_hdr_temp, cap_info->pages);
	kunmap(cap_info->pages[0]);
	vunmap(cap_hdr_temp);
	if (ret) {
		pr_err("%s: efi_capsule_update() failed\n", __func__);
		return ret;
+3 −3
Original line number Diff line number Diff line
@@ -190,9 +190,9 @@ efi_capsule_update_locked(efi_capsule_header_t *capsule,
 * map the capsule described by @capsule with its data in @pages and
 * send it to the firmware via the UpdateCapsule() runtime service.
 *
 * @capsule must be a virtual mapping of the first page in @pages
 * (@pages[0]) in the kernel address space. That is, a
 * capsule_header_t that describes the entire contents of the capsule
 * @capsule must be a virtual mapping of the complete capsule update in the
 * kernel address space, as the capsule can be consumed immediately.
 * A capsule_header_t that describes the entire contents of the capsule
 * must be at the start of the first data page.
 *
 * Even though this function will validate that the firmware supports