]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Aug 2019 23:10:07 +0000 (16:10 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Aug 2019 23:10:07 +0000 (16:10 -0700)
added patches:
iommu-amd-move-iommu_init_pci-to-.init-section.patch
x86-boot-disable-the-address-of-packed-member-compiler-warning.patch
x86-vdso-remove-direct-hpet-access-through-the-vdso.patch

queue-4.4/iommu-amd-move-iommu_init_pci-to-.init-section.patch [new file with mode: 0644]
queue-4.4/series
queue-4.4/x86-boot-disable-the-address-of-packed-member-compiler-warning.patch [new file with mode: 0644]
queue-4.4/x86-vdso-remove-direct-hpet-access-through-the-vdso.patch [new file with mode: 0644]

diff --git a/queue-4.4/iommu-amd-move-iommu_init_pci-to-.init-section.patch b/queue-4.4/iommu-amd-move-iommu_init_pci-to-.init-section.patch
new file mode 100644 (file)
index 0000000..a913ed5
--- /dev/null
@@ -0,0 +1,30 @@
+From 24d2c521749d8547765b555b7a85cca179bb2275 Mon Sep 17 00:00:00 2001
+From: Joerg Roedel <jroedel@suse.de>
+Date: Fri, 5 Oct 2018 12:32:46 +0200
+Subject: iommu/amd: Move iommu_init_pci() to .init section
+
+From: Joerg Roedel <jroedel@suse.de>
+
+commit 24d2c521749d8547765b555b7a85cca179bb2275 upstream.
+
+The function is only called from another __init function, so
+it should be moved to .init too.
+
+Signed-off-by: Joerg Roedel <jroedel@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/amd_iommu_init.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/iommu/amd_iommu_init.c
++++ b/drivers/iommu/amd_iommu_init.c
+@@ -1223,7 +1223,7 @@ static const struct attribute_group *amd
+       NULL,
+ };
+-static int iommu_init_pci(struct amd_iommu *iommu)
++static int __init iommu_init_pci(struct amd_iommu *iommu)
+ {
+       int cap_ptr = iommu->cap_ptr;
+       u32 range, misc, low, high;
index bca43ae1475070f7fc89f9a39bc27c2321f083b7..28ecb04369255110e201672f8c4b18c065bee48c 100644 (file)
@@ -69,3 +69,6 @@ asm-generic-default-bug_on-x-to-if-x-bug.patch
 scsi-fcoe-embed-fc_rport_priv-in-fcoe_rport-structure.patch
 rdma-directly-cast-the-sockaddr-union-to-sockaddr.patch
 ib-mlx5-make-coding-style-more-consistent.patch
+x86-vdso-remove-direct-hpet-access-through-the-vdso.patch
+iommu-amd-move-iommu_init_pci-to-.init-section.patch
+x86-boot-disable-the-address-of-packed-member-compiler-warning.patch
diff --git a/queue-4.4/x86-boot-disable-the-address-of-packed-member-compiler-warning.patch b/queue-4.4/x86-boot-disable-the-address-of-packed-member-compiler-warning.patch
new file mode 100644 (file)
index 0000000..937b075
--- /dev/null
@@ -0,0 +1,52 @@
+From 20c6c189045539d29f4854d92b7ea9c329e1edfc Mon Sep 17 00:00:00 2001
+From: Matthias Kaehlcke <mka@chromium.org>
+Date: Tue, 25 Jul 2017 14:50:53 -0700
+Subject: x86/boot: Disable the address-of-packed-member compiler warning
+
+From: Matthias Kaehlcke <mka@chromium.org>
+
+commit 20c6c189045539d29f4854d92b7ea9c329e1edfc upstream.
+
+The clang warning 'address-of-packed-member' is disabled for the general
+kernel code, also disable it for the x86 boot code.
+
+This suppresses a bunch of warnings like this when building with clang:
+
+./arch/x86/include/asm/processor.h:535:30: warning: taking address of
+  packed member 'sp0' of class or structure 'x86_hw_tss' may result in an
+  unaligned pointer value [-Waddress-of-packed-member]
+    return this_cpu_read_stable(cpu_tss.x86_tss.sp0);
+                                ^~~~~~~~~~~~~~~~~~~
+./arch/x86/include/asm/percpu.h:391:59: note: expanded from macro
+  'this_cpu_read_stable'
+    #define this_cpu_read_stable(var)       percpu_stable_op("mov", var)
+                                                                    ^~~
+./arch/x86/include/asm/percpu.h:228:16: note: expanded from macro
+  'percpu_stable_op'
+    : "p" (&(var)));
+             ^~~
+
+Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
+Cc: Doug Anderson <dianders@chromium.org>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Link: http://lkml.kernel.org/r/20170725215053.135586-1-mka@chromium.org
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/boot/compressed/Makefile |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/x86/boot/compressed/Makefile
++++ b/arch/x86/boot/compressed/Makefile
+@@ -30,6 +30,7 @@ KBUILD_CFLAGS += $(cflags-y)
+ KBUILD_CFLAGS += -mno-mmx -mno-sse
+ KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
+ KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
++KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
+ KBUILD_AFLAGS  := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
diff --git a/queue-4.4/x86-vdso-remove-direct-hpet-access-through-the-vdso.patch b/queue-4.4/x86-vdso-remove-direct-hpet-access-through-the-vdso.patch
new file mode 100644 (file)
index 0000000..cad5e7a
--- /dev/null
@@ -0,0 +1,147 @@
+From 1ed95e52d902035e39a715ff3a314a893a96e5b7 Mon Sep 17 00:00:00 2001
+From: Andy Lutomirski <luto@kernel.org>
+Date: Thu, 7 Apr 2016 17:16:59 -0700
+Subject: x86/vdso: Remove direct HPET access through the vDSO
+
+From: Andy Lutomirski <luto@kernel.org>
+
+commit 1ed95e52d902035e39a715ff3a314a893a96e5b7 upstream.
+
+Allowing user code to map the HPET is problematic.  HPET
+implementations are notoriously buggy, and there are probably many
+machines on which even MMIO reads from bogus HPET addresses are
+problematic.
+
+We have a report that the Dell Precision M2800 with:
+
+  ACPI: HPET 0x00000000C8FE6238 000038 (v01 DELL   CBX3  01072009 AMI. 00000005)
+
+is either so slow when accessing the HPET or actually hangs in some
+regard, causing soft lockups to be reported if users do unexpected
+things to the HPET.
+
+The vclock HPET code has also always been a questionable speedup.
+Accessing an HPET is exceedingly slow (on the order of several
+microseconds), so the added overhead in requiring a syscall to read
+the HPET is a small fraction of the total code of accessing it.
+
+To avoid future problems, let's just delete the code entirely.
+
+In the long run, this could actually be a speedup.  Waiman Long as a
+patch to optimize the case where multiple CPUs contend for the HPET,
+but that won't help unless all the accesses are mediated by the
+kernel.
+
+Reported-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
+Signed-off-by: Andy Lutomirski <luto@kernel.org>
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Acked-by: Borislav Petkov <bp@alien8.de>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Waiman Long <Waiman.Long@hpe.com>
+Cc: Waiman Long <waiman.long@hpe.com>
+Link: http://lkml.kernel.org/r/d2f90bba98db9905041cff294646d290d378f67a.1460074438.git.luto@kernel.org
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/entry/vdso/vclock_gettime.c  |   15 ---------------
+ arch/x86/entry/vdso/vdso-layout.lds.S |    5 ++---
+ arch/x86/include/asm/clocksource.h    |    3 +--
+ arch/x86/kernel/hpet.c                |    1 -
+ arch/x86/kvm/trace.h                  |    3 +--
+ 5 files changed, 4 insertions(+), 23 deletions(-)
+
+--- a/arch/x86/entry/vdso/vclock_gettime.c
++++ b/arch/x86/entry/vdso/vclock_gettime.c
+@@ -13,7 +13,6 @@
+ #include <uapi/linux/time.h>
+ #include <asm/vgtod.h>
+-#include <asm/hpet.h>
+ #include <asm/vvar.h>
+ #include <asm/unistd.h>
+ #include <asm/msr.h>
+@@ -26,16 +25,6 @@ extern int __vdso_clock_gettime(clockid_
+ extern int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz);
+ extern time_t __vdso_time(time_t *t);
+-#ifdef CONFIG_HPET_TIMER
+-extern u8 hpet_page
+-      __attribute__((visibility("hidden")));
+-
+-static notrace cycle_t vread_hpet(void)
+-{
+-      return *(const volatile u32 *)(&hpet_page + HPET_COUNTER);
+-}
+-#endif
+-
+ #ifdef CONFIG_PARAVIRT_CLOCK
+ extern u8 pvclock_page
+       __attribute__((visibility("hidden")));
+@@ -209,10 +198,6 @@ notrace static inline u64 vgetsns(int *m
+       if (gtod->vclock_mode == VCLOCK_TSC)
+               cycles = vread_tsc();
+-#ifdef CONFIG_HPET_TIMER
+-      else if (gtod->vclock_mode == VCLOCK_HPET)
+-              cycles = vread_hpet();
+-#endif
+ #ifdef CONFIG_PARAVIRT_CLOCK
+       else if (gtod->vclock_mode == VCLOCK_PVCLOCK)
+               cycles = vread_pvclock(mode);
+--- a/arch/x86/entry/vdso/vdso-layout.lds.S
++++ b/arch/x86/entry/vdso/vdso-layout.lds.S
+@@ -25,7 +25,7 @@ SECTIONS
+        * segment.
+        */
+-      vvar_start = . - 3 * PAGE_SIZE;
++      vvar_start = . - 2 * PAGE_SIZE;
+       vvar_page = vvar_start;
+       /* Place all vvars at the offsets in asm/vvar.h. */
+@@ -35,8 +35,7 @@ SECTIONS
+ #undef __VVAR_KERNEL_LDS
+ #undef EMIT_VVAR
+-      hpet_page = vvar_start + PAGE_SIZE;
+-      pvclock_page = vvar_start + 2 * PAGE_SIZE;
++      pvclock_page = vvar_start + PAGE_SIZE;
+       . = SIZEOF_HEADERS;
+--- a/arch/x86/include/asm/clocksource.h
++++ b/arch/x86/include/asm/clocksource.h
+@@ -5,8 +5,7 @@
+ #define VCLOCK_NONE 0  /* No vDSO clock available.    */
+ #define VCLOCK_TSC  1  /* vDSO should use vread_tsc.  */
+-#define VCLOCK_HPET 2  /* vDSO should use vread_hpet. */
+-#define VCLOCK_PVCLOCK 3 /* vDSO should use vread_pvclock. */
++#define VCLOCK_PVCLOCK 2 /* vDSO should use vread_pvclock. */
+ struct arch_clocksource_data {
+       int vclock_mode;
+--- a/arch/x86/kernel/hpet.c
++++ b/arch/x86/kernel/hpet.c
+@@ -774,7 +774,6 @@ static struct clocksource clocksource_hp
+       .mask           = HPET_MASK,
+       .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
+       .resume         = hpet_resume_counter,
+-      .archdata       = { .vclock_mode = VCLOCK_HPET },
+ };
+ static int hpet_clocksource_register(void)
+--- a/arch/x86/kvm/trace.h
++++ b/arch/x86/kvm/trace.h
+@@ -809,8 +809,7 @@ TRACE_EVENT(kvm_write_tsc_offset,
+ #define host_clocks                                   \
+       {VCLOCK_NONE, "none"},                          \
+-      {VCLOCK_TSC,  "tsc"},                           \
+-      {VCLOCK_HPET, "hpet"}                           \
++      {VCLOCK_TSC,  "tsc"}                            \
+ TRACE_EVENT(kvm_update_master_clock,
+       TP_PROTO(bool use_master_clock, unsigned int host_clock, bool offset_matched),