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

Commit 5a45a5a8 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 Thomas Gleixner:

 - a fix for the kexec/purgatory regression which was introduced in the
   merge window via an innocent sparse fix. We could have reverted that
   commit, but on deeper inspection it turned out that the whole
   machinery is neither documented nor robust. So a proper cleanup was
   done instead

 - the fix for the TLB flush issue which was discovered recently

 - a simple typo fix for a reboot quirk

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/tlb: Fix tlb flushing when lguest clears PGE
  kexec, x86/purgatory: Unbreak it and clean it up
  x86/reboot/quirks: Fix typo in ASUS EeeBook X205TA reboot quirk
parents ecade114 2c4ea6e2
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -116,13 +116,13 @@ dt_offset:


	.data
	.data
	.balign 8
	.balign 8
.globl sha256_digest
.globl purgatory_sha256_digest
sha256_digest:
purgatory_sha256_digest:
	.skip	32
	.skip	32
	.size sha256_digest, . - sha256_digest
	.size purgatory_sha256_digest, . - purgatory_sha256_digest


	.balign 8
	.balign 8
.globl sha_regions
.globl purgatory_sha_regions
sha_regions:
purgatory_sha_regions:
	.skip	8 * 2 * 16
	.skip	8 * 2 * 16
	.size sha_regions, . - sha_regions
	.size purgatory_sha_regions, . - purgatory_sha_regions
+20 −0
Original line number Original line Diff line number Diff line
#ifndef _ASM_X86_PURGATORY_H
#define _ASM_X86_PURGATORY_H

#ifndef __ASSEMBLY__
#include <linux/purgatory.h>

extern void purgatory(void);
/*
 * These forward declarations serve two purposes:
 *
 * 1) Make sparse happy when checking arch/purgatory
 * 2) Document that these are required to be global so the symbol
 *    lookup in kexec works
 */
extern unsigned long purgatory_backup_dest;
extern unsigned long purgatory_backup_src;
extern unsigned long purgatory_backup_sz;
#endif	/* __ASSEMBLY__ */

#endif /* _ASM_PURGATORY_H */
+1 −1
Original line number Original line Diff line number Diff line
@@ -188,7 +188,7 @@ static inline void __native_flush_tlb_single(unsigned long addr)


static inline void __flush_tlb_all(void)
static inline void __flush_tlb_all(void)
{
{
	if (static_cpu_has(X86_FEATURE_PGE))
	if (boot_cpu_has(X86_FEATURE_PGE))
		__flush_tlb_global();
		__flush_tlb_global();
	else
	else
		__flush_tlb();
		__flush_tlb();
+6 −3
Original line number Original line Diff line number Diff line
@@ -194,19 +194,22 @@ static int arch_update_purgatory(struct kimage *image)


	/* Setup copying of backup region */
	/* Setup copying of backup region */
	if (image->type == KEXEC_TYPE_CRASH) {
	if (image->type == KEXEC_TYPE_CRASH) {
		ret = kexec_purgatory_get_set_symbol(image, "backup_dest",
		ret = kexec_purgatory_get_set_symbol(image,
				"purgatory_backup_dest",
				&image->arch.backup_load_addr,
				&image->arch.backup_load_addr,
				sizeof(image->arch.backup_load_addr), 0);
				sizeof(image->arch.backup_load_addr), 0);
		if (ret)
		if (ret)
			return ret;
			return ret;


		ret = kexec_purgatory_get_set_symbol(image, "backup_src",
		ret = kexec_purgatory_get_set_symbol(image,
				"purgatory_backup_src",
				&image->arch.backup_src_start,
				&image->arch.backup_src_start,
				sizeof(image->arch.backup_src_start), 0);
				sizeof(image->arch.backup_src_start), 0);
		if (ret)
		if (ret)
			return ret;
			return ret;


		ret = kexec_purgatory_get_set_symbol(image, "backup_sz",
		ret = kexec_purgatory_get_set_symbol(image,
				"purgatory_backup_sz",
				&image->arch.backup_src_sz,
				&image->arch.backup_src_sz,
				sizeof(image->arch.backup_src_sz), 0);
				sizeof(image->arch.backup_src_sz), 0);
		if (ret)
		if (ret)
+1 −1
Original line number Original line Diff line number Diff line
@@ -228,7 +228,7 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
		.ident = "ASUS EeeBook X205TA",
		.ident = "ASUS EeeBook X205TA",
		.matches = {
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
			DMI_MATCH(DMI_PRODUCT_NAME, "X205TAW"),
			DMI_MATCH(DMI_PRODUCT_NAME, "X205TA"),
		},
		},
	},
	},
	{	/* Handle problems with rebooting on ASUS EeeBook X205TAW */
	{	/* Handle problems with rebooting on ASUS EeeBook X205TAW */
Loading