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

Commit f39d7d78 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull x86 fixes from Thomas Gleixner:
 "A couple of fixlets for x86:

   - Fix the ESPFIX double fault handling for 5-level pagetables

   - Fix the commandline parsing for 'apic=' on 32bit systems and update
     documentation

   - Make zombie stack traces reliable

   - Fix kexec with stack canary

   - Fix the delivery mode for APICs which was missed when the x86
     vector management was converted to single target delivery. Caused a
     regression due to the broken hardware which ignores affinity
     settings in lowest prio delivery mode.

   - Unbreak modules when AMD memory encryption is enabled

   - Remove an unused parameter of prepare_switch_to"

* 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/apic: Switch all APICs to Fixed delivery mode
  x86/apic: Update the 'apic=' description of setting APIC driver
  x86/apic: Avoid wrong warning when parsing 'apic=' in X86-32 case
  x86-32: Fix kexec with stack canary (CONFIG_CC_STACKPROTECTOR)
  x86: Remove unused parameter of prepare_switch_to
  x86/stacktrace: Make zombie stack traces reliable
  x86/mm: Unbreak modules that use the DMA API
  x86/build: Make isoimage work on Debian
  x86/espfix/64: Fix espfix double-fault handling on 5-level systems
parents 52c90f2d a31e58e1
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -328,11 +328,15 @@
			not play well with APC CPU idle - disable it if you have
			APC and your system crashes randomly.

	apic=		[APIC,X86-32] Advanced Programmable Interrupt Controller
	apic=		[APIC,X86] Advanced Programmable Interrupt Controller
			Change the output verbosity whilst booting
			Format: { quiet (default) | verbose | debug }
			Change the amount of debugging information output
			when initialising the APIC and IO-APIC components.
			For X86-32, this can also be used to specify an APIC
			driver name.
			Format: apic=driver_name
			Examples: apic=bigsmp

	apic_extnmi=	[APIC,X86] External NMI delivery setting
			Format: { bsp (default) | all | none }
+16 −12
Original line number Diff line number Diff line
@@ -80,39 +80,43 @@ genfdimage288() {
	mcopy $FBZIMAGE w:linux
}

genisoimage() {
geniso() {
	tmp_dir=`dirname $FIMAGE`/isoimage
	rm -rf $tmp_dir
	mkdir $tmp_dir
	for i in lib lib64 share end ; do
	for i in lib lib64 share ; do
		for j in syslinux ISOLINUX ; do
			if [ -f /usr/$i/$j/isolinux.bin ] ; then
				isolinux=/usr/$i/$j/isolinux.bin
				cp $isolinux $tmp_dir
			fi
		done
		for j in syslinux syslinux/modules/bios ; do
			if [ -f /usr/$i/$j/ldlinux.c32 ]; then
				ldlinux=/usr/$i/$j/ldlinux.c32
				cp $ldlinux $tmp_dir
			fi
		done
		if [ -n "$isolinux" -a -n "$ldlinux" ] ; then
			break
		fi
		if [ $i = end -a -z "$isolinux" ] ; then
	done
	if [ -z "$isolinux" ] ; then
		echo 'Need an isolinux.bin file, please install syslinux/isolinux.'
		exit 1
	fi
	done
	if [ -z "$ldlinux" ] ; then
		echo 'Need an ldlinux.c32 file, please install syslinux/isolinux.'
		exit 1
	fi
	cp $isolinux $tmp_dir
	cp $ldlinux $tmp_dir
	cp $FBZIMAGE $tmp_dir/linux
	echo "$KCMDLINE" > $tmp_dir/isolinux.cfg
	if [ -f "$FDINITRD" ] ; then
		cp "$FDINITRD" $tmp_dir/initrd.img
	fi
	mkisofs -J -r -input-charset=utf-8 -quiet -o $FIMAGE -b isolinux.bin \
		-c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
		$tmp_dir
	genisoimage -J -r -input-charset=utf-8 -quiet -o $FIMAGE \
		-b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 \
		-boot-info-table $tmp_dir
	isohybrid $FIMAGE 2>/dev/null || true
	rm -rf $tmp_dir
}
@@ -121,6 +125,6 @@ case $1 in
	bzdisk)     genbzdisk;;
	fdimage144) genfdimage144;;
	fdimage288) genfdimage288;;
	isoimage)   genisoimage;;
	isoimage)   geniso;;
	*)          echo 'Unknown image format'; exit 1;
esac
+2 −3
Original line number Diff line number Diff line
@@ -16,8 +16,7 @@ void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,
		      struct tss_struct *tss);

/* This runs runs on the previous thread's stack. */
static inline void prepare_switch_to(struct task_struct *prev,
				     struct task_struct *next)
static inline void prepare_switch_to(struct task_struct *next)
{
#ifdef CONFIG_VMAP_STACK
	/*
@@ -70,7 +69,7 @@ struct fork_frame {

#define switch_to(prev, next, last)					\
do {									\
	prepare_switch_to(prev, next);					\
	prepare_switch_to(next);					\
									\
	((last) = __switch_to_asm((prev), (next)));			\
} while (0)
+2 −0
Original line number Diff line number Diff line
@@ -2626,11 +2626,13 @@ static int __init apic_set_verbosity(char *arg)
		apic_verbosity = APIC_DEBUG;
	else if (strcmp("verbose", arg) == 0)
		apic_verbosity = APIC_VERBOSE;
#ifdef CONFIG_X86_64
	else {
		pr_warning("APIC Verbosity level %s not recognised"
			" use apic=verbose or apic=debug\n", arg);
		return -EINVAL;
	}
#endif

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ static struct apic apic_flat __ro_after_init = {
	.apic_id_valid			= default_apic_id_valid,
	.apic_id_registered		= flat_apic_id_registered,

	.irq_delivery_mode		= dest_LowestPrio,
	.irq_delivery_mode		= dest_Fixed,
	.irq_dest_mode			= 1, /* logical */

	.disable_esr			= 0,
Loading