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
This commit is contained in:
commit
0e1117b257
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue