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

Commit cb03dc09 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull x86 fixes from Peter Anvin:
 "Another set of fixes, the biggest bit of this is yet another tweak to
  the UEFI anti-bricking code; apparently we finally got some feedback
  from Samsung as to what makes at least their systems fail.  This set
  should actually fix the boot regressions that some other systems (e.g.
  SGI) have exhibited.

  Other than that, there is a patch to avoid a panic with particularly
  unhappy memory layouts and two minor protocol fixes which may or may
  not be manifest bugs"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86: Fix typo in kexec register clearing
  x86, relocs: Move __vvar_page from S_ABS to S_REL
  Modify UEFI anti-bricking code
  x86: Fix adjust_range_size_mask calling position
parents cb7e9704 45df901c
Loading
Loading
Loading
Loading
+0 −47
Original line number Diff line number Diff line
@@ -251,51 +251,6 @@ static void find_bits(unsigned long mask, u8 *pos, u8 *size)
	*size = len;
}

static efi_status_t setup_efi_vars(struct boot_params *params)
{
	struct setup_data *data;
	struct efi_var_bootdata *efidata;
	u64 store_size, remaining_size, var_size;
	efi_status_t status;

	if (sys_table->runtime->hdr.revision < EFI_2_00_SYSTEM_TABLE_REVISION)
		return EFI_UNSUPPORTED;

	data = (struct setup_data *)(unsigned long)params->hdr.setup_data;

	while (data && data->next)
		data = (struct setup_data *)(unsigned long)data->next;

	status = efi_call_phys4((void *)sys_table->runtime->query_variable_info,
				EFI_VARIABLE_NON_VOLATILE |
				EFI_VARIABLE_BOOTSERVICE_ACCESS |
				EFI_VARIABLE_RUNTIME_ACCESS, &store_size,
				&remaining_size, &var_size);

	if (status != EFI_SUCCESS)
		return status;

	status = efi_call_phys3(sys_table->boottime->allocate_pool,
				EFI_LOADER_DATA, sizeof(*efidata), &efidata);

	if (status != EFI_SUCCESS)
		return status;

	efidata->data.type = SETUP_EFI_VARS;
	efidata->data.len = sizeof(struct efi_var_bootdata) -
		sizeof(struct setup_data);
	efidata->data.next = 0;
	efidata->store_size = store_size;
	efidata->remaining_size = remaining_size;
	efidata->max_var_size = var_size;

	if (data)
		data->next = (unsigned long)efidata;
	else
		params->hdr.setup_data = (unsigned long)efidata;

}

static efi_status_t setup_efi_pci(struct boot_params *params)
{
	efi_pci_io_protocol *pci;
@@ -1202,8 +1157,6 @@ struct boot_params *efi_main(void *handle, efi_system_table_t *_table,

	setup_graphics(boot_params);

	setup_efi_vars(boot_params);

	setup_efi_pci(boot_params);

	status = efi_call_phys3(sys_table->boottime->allocate_pool,
+0 −7
Original line number Diff line number Diff line
@@ -102,13 +102,6 @@ extern void efi_call_phys_epilog(void);
extern void efi_unmap_memmap(void);
extern void efi_memory_uc(u64 addr, unsigned long size);

struct efi_var_bootdata {
	struct setup_data data;
	u64 store_size;
	u64 remaining_size;
	u64 max_var_size;
};

#ifdef CONFIG_EFI

static inline bool efi_is_native(void)
+0 −1
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@
#define SETUP_E820_EXT			1
#define SETUP_DTB			2
#define SETUP_PCI			3
#define SETUP_EFI_VARS			4

/* ram_size flags */
#define RAMDISK_IMAGE_START_MASK	0x07FF
+1 −1
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ identity_mapped:
	xorq    %rbp, %rbp
	xorq	%r8,  %r8
	xorq	%r9,  %r9
	xorq	%r10, %r9
	xorq	%r10, %r10
	xorq	%r11, %r11
	xorq	%r12, %r12
	xorq	%r13, %r13
+3 −3
Original line number Diff line number Diff line
@@ -277,6 +277,9 @@ static int __meminit split_mem_range(struct map_range *mr, int nr_range,
	end_pfn = limit_pfn;
	nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);

	if (!after_bootmem)
		adjust_range_page_size_mask(mr, nr_range);

	/* try to merge same page size and continuous */
	for (i = 0; nr_range > 1 && i < nr_range - 1; i++) {
		unsigned long old_start;
@@ -291,9 +294,6 @@ static int __meminit split_mem_range(struct map_range *mr, int nr_range,
		nr_range--;
	}

	if (!after_bootmem)
		adjust_range_page_size_mask(mr, nr_range);

	for (i = 0; i < nr_range; i++)
		printk(KERN_DEBUG " [mem %#010lx-%#010lx] page %s\n",
				mr[i].start, mr[i].end - 1,
Loading