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

Commit c71a3552 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 Ingo Molnar.

A x32 socket ABI fix with a -stable backport tag among other fixes.

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x32: Use compat shims for {g,s}etsockopt
  Revert "x86-64/efi: Use EFI to deal with platform wall clock"
  x86, apic: fix broken legacy interrupts in the logical apic mode
  x86, build: Globally set -fno-pic
  x86, avx: don't use avx instructions with "noxsave" boot param
parents 53795ced 515c7af8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -27,6 +27,10 @@ ifeq ($(CONFIG_X86_32),y)

        KBUILD_CFLAGS += -msoft-float -mregparm=3 -freg-struct-return

        # Never want PIC in a 32-bit kernel, prevent breakage with GCC built
        # with nonstandard options
        KBUILD_CFLAGS += -fno-pic

        # prevent gcc from keeping the stack 16 byte aligned
        KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)

+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
		   -Wall -Wstrict-prototypes \
		   -march=i386 -mregparm=3 \
		   -include $(srctree)/$(src)/code16gcc.h \
		   -fno-strict-aliasing -fomit-frame-pointer \
		   -fno-strict-aliasing -fomit-frame-pointer -fno-pic \
		   $(call cc-option, -ffreestanding) \
		   $(call cc-option, -fno-toplevel-reorder,\
			$(call cc-option, -fno-unit-at-a-time)) \
+10 −0
Original line number Diff line number Diff line
@@ -1356,6 +1356,16 @@ static void setup_ioapic_irq(unsigned int irq, struct irq_cfg *cfg,
	if (!IO_APIC_IRQ(irq))
		return;

	/*
	 * For legacy irqs, cfg->domain starts with cpu 0. Now that IO-APIC
	 * can handle this irq and the apic driver is finialized at this point,
	 * update the cfg->domain.
	 */
	if (irq < legacy_pic->nr_legacy_irqs &&
	    cpumask_equal(cfg->domain, cpumask_of(0)))
		apic->vector_allocation_domain(0, cfg->domain,
					       apic->target_cpus());

	if (assign_irq_vector(irq, cfg, apic->target_cpus()))
		return;

+2 −0
Original line number Diff line number Diff line
@@ -144,6 +144,8 @@ static int __init x86_xsave_setup(char *s)
{
	setup_clear_cpu_cap(X86_FEATURE_XSAVE);
	setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT);
	setup_clear_cpu_cap(X86_FEATURE_AVX);
	setup_clear_cpu_cap(X86_FEATURE_AVX2);
	return 1;
}
__setup("noxsave", x86_xsave_setup);
+4 −6
Original line number Diff line number Diff line
@@ -919,13 +919,11 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,

	/*
	 * On success we use clflush, when the CPU supports it to
	 * avoid the wbindv. If the CPU does not support it, in the
	 * error case, and during early boot (for EFI) we fall back
	 * to cpa_flush_all (which uses wbinvd):
	 * avoid the wbindv. If the CPU does not support it and in the
	 * error case we fall back to cpa_flush_all (which uses
	 * wbindv):
	 */
	if (early_boot_irqs_disabled)
		__cpa_flush_all((void *)(long)cache);
	else if (!ret && cpu_has_clflush) {
	if (!ret && cpu_has_clflush) {
		if (cpa.flags & (CPA_PAGES_ARRAY | CPA_ARRAY)) {
			cpa_flush_array(addr, numpages, cache,
					cpa.flags, pages);
Loading