diff options
-rw-r--r-- | mk/kernel-ver.mk | 6 | ||||
-rw-r--r-- | target/config/Config.in.kernelversion | 4 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/aufs.patch (renamed from target/linux/patches/4.1.24/aufs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/cleankernel.patch (renamed from target/linux/patches/4.1.24/cleankernel.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/cris-header.patch (renamed from target/linux/patches/4.1.24/cris-header.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.1.24/initramfs-nosizelimit.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/j2-core.patch (renamed from target/linux/patches/4.1.24/j2-core.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/mtd-rootfs.patch (renamed from target/linux/patches/4.1.24/mtd-rootfs.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/realtime.patch (renamed from target/linux/patches/4.1.24/realtime.patch) | 4442 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/regmap-default-on.patch (renamed from target/linux/patches/4.1.24/regmap-default-on.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/remove-warn.patch (renamed from target/linux/patches/4.1.24/remove-warn.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/startup.patch (renamed from target/linux/patches/4.1.24/startup.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/use-gawk.patch (renamed from target/linux/patches/4.1.24/use-gawk.patch) | 0 | ||||
-rw-r--r-- | target/linux/patches/4.1.26/use-libgcc-for-sh.patch (renamed from target/linux/patches/4.1.24/use-libgcc-for-sh.patch) | 0 |
14 files changed, 2219 insertions, 2233 deletions
diff --git a/mk/kernel-ver.mk b/mk/kernel-ver.mk index ce2f8fa44..752703658 100644 --- a/mk/kernel-ver.mk +++ b/mk/kernel-ver.mk @@ -37,11 +37,11 @@ KERNEL_RELEASE:= 1 KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE) KERNEL_HASH:= 4ac22e4a619417213cfdab24714413bb9118fbaebe6012c6c89c279cdadef2ce endif -ifeq ($(ADK_TARGET_KERNEL_VERSION_4_1_24),y) -KERNEL_FILE_VER:= 4.1.24 +ifeq ($(ADK_TARGET_KERNEL_VERSION_4_1_26),y) +KERNEL_FILE_VER:= 4.1.26 KERNEL_RELEASE:= 1 KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE) -KERNEL_HASH:= 9cc27b7f96adfa3bb48186eb497bebc5fbf5aef1f022d98ae5319300040278df +KERNEL_HASH:= babcfca252a1427278b7bc4372fdad40fa1388d8fad2d85ca74cf72222e7f071 endif ifeq ($(ADK_TARGET_KERNEL_VERSION_3_18_33),y) KERNEL_FILE_VER:= 3.18.33 diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion index d64d554dd..c6687d92a 100644 --- a/target/config/Config.in.kernelversion +++ b/target/config/Config.in.kernelversion @@ -28,8 +28,8 @@ config ADK_TARGET_KERNEL_VERSION_4_4_10 depends on !ADK_TARGET_ARCH_NIOS2 select ADK_TARGET_KERNEL_VERSION_4_4 -config ADK_TARGET_KERNEL_VERSION_4_1_24 - bool "4.1.24" +config ADK_TARGET_KERNEL_VERSION_4_1_26 + bool "4.1.26" depends on !ADK_TARGET_ARCH_ARC depends on !ADK_TARGET_ARCH_BFIN depends on !ADK_TARGET_ARCH_H8300 diff --git a/target/linux/patches/4.1.24/aufs.patch b/target/linux/patches/4.1.26/aufs.patch index 749c90989..749c90989 100644 --- a/target/linux/patches/4.1.24/aufs.patch +++ b/target/linux/patches/4.1.26/aufs.patch diff --git a/target/linux/patches/4.1.24/cleankernel.patch b/target/linux/patches/4.1.26/cleankernel.patch index 59693f426..59693f426 100644 --- a/target/linux/patches/4.1.24/cleankernel.patch +++ b/target/linux/patches/4.1.26/cleankernel.patch diff --git a/target/linux/patches/4.1.24/cris-header.patch b/target/linux/patches/4.1.26/cris-header.patch index 2b5a88461..2b5a88461 100644 --- a/target/linux/patches/4.1.24/cris-header.patch +++ b/target/linux/patches/4.1.26/cris-header.patch diff --git a/target/linux/patches/4.1.24/initramfs-nosizelimit.patch b/target/linux/patches/4.1.26/initramfs-nosizelimit.patch index 40d2f6bd8..40d2f6bd8 100644 --- a/target/linux/patches/4.1.24/initramfs-nosizelimit.patch +++ b/target/linux/patches/4.1.26/initramfs-nosizelimit.patch diff --git a/target/linux/patches/4.1.24/j2-core.patch b/target/linux/patches/4.1.26/j2-core.patch index 38136df2c..38136df2c 100644 --- a/target/linux/patches/4.1.24/j2-core.patch +++ b/target/linux/patches/4.1.26/j2-core.patch diff --git a/target/linux/patches/4.1.24/mtd-rootfs.patch b/target/linux/patches/4.1.26/mtd-rootfs.patch index 5f6d82b5c..5f6d82b5c 100644 --- a/target/linux/patches/4.1.24/mtd-rootfs.patch +++ b/target/linux/patches/4.1.26/mtd-rootfs.patch diff --git a/target/linux/patches/4.1.24/realtime.patch b/target/linux/patches/4.1.26/realtime.patch index 832b82fdf..6ecf019b9 100644 --- a/target/linux/patches/4.1.24/realtime.patch +++ b/target/linux/patches/4.1.26/realtime.patch @@ -1,306 +1,6 @@ -diff -Nur linux-4.1.20.orig/Documentation/hwlat_detector.txt linux-4.1.20/Documentation/hwlat_detector.txt ---- linux-4.1.20.orig/Documentation/hwlat_detector.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/Documentation/hwlat_detector.txt 2016-03-21 20:18:28.000000000 +0100 -@@ -0,0 +1,64 @@ -+Introduction: -+------------- -+ -+The module hwlat_detector is a special purpose kernel module that is used to -+detect large system latencies induced by the behavior of certain underlying -+hardware or firmware, independent of Linux itself. The code was developed -+originally to detect SMIs (System Management Interrupts) on x86 systems, -+however there is nothing x86 specific about this patchset. It was -+originally written for use by the "RT" patch since the Real Time -+kernel is highly latency sensitive. -+ -+SMIs are usually not serviced by the Linux kernel, which typically does not -+even know that they are occuring. SMIs are instead are set up by BIOS code -+and are serviced by BIOS code, usually for "critical" events such as -+management of thermal sensors and fans. Sometimes though, SMIs are used for -+other tasks and those tasks can spend an inordinate amount of time in the -+handler (sometimes measured in milliseconds). Obviously this is a problem if -+you are trying to keep event service latencies down in the microsecond range. -+ -+The hardware latency detector works by hogging all of the cpus for configurable -+amounts of time (by calling stop_machine()), polling the CPU Time Stamp Counter -+for some period, then looking for gaps in the TSC data. Any gap indicates a -+time when the polling was interrupted and since the machine is stopped and -+interrupts turned off the only thing that could do that would be an SMI. -+ -+Note that the SMI detector should *NEVER* be used in a production environment. -+It is intended to be run manually to determine if the hardware platform has a -+problem with long system firmware service routines. -+ -+Usage: -+------ -+ -+Loading the module hwlat_detector passing the parameter "enabled=1" (or by -+setting the "enable" entry in "hwlat_detector" debugfs toggled on) is the only -+step required to start the hwlat_detector. It is possible to redefine the -+threshold in microseconds (us) above which latency spikes will be taken -+into account (parameter "threshold="). -+ -+Example: -+ -+ # modprobe hwlat_detector enabled=1 threshold=100 -+ -+After the module is loaded, it creates a directory named "hwlat_detector" under -+the debugfs mountpoint, "/debug/hwlat_detector" for this text. It is necessary -+to have debugfs mounted, which might be on /sys/debug on your system. -+ -+The /debug/hwlat_detector interface contains the following files: -+ -+count - number of latency spikes observed since last reset -+enable - a global enable/disable toggle (0/1), resets count -+max - maximum hardware latency actually observed (usecs) -+sample - a pipe from which to read current raw sample data -+ in the format <timestamp> <latency observed usecs> -+ (can be opened O_NONBLOCK for a single sample) -+threshold - minimum latency value to be considered (usecs) -+width - time period to sample with CPUs held (usecs) -+ must be less than the total window size (enforced) -+window - total period of sampling, width being inside (usecs) -+ -+By default we will set width to 500,000 and window to 1,000,000, meaning that -+we will sample every 1,000,000 usecs (1s) for 500,000 usecs (0.5s). If we -+observe any latencies that exceed the threshold (initially 100 usecs), -+then we write to a global sample ring buffer of 8K samples, which is -+consumed by reading from the "sample" (pipe) debugfs file interface. -diff -Nur linux-4.1.20.orig/Documentation/sysrq.txt linux-4.1.20/Documentation/sysrq.txt ---- linux-4.1.20.orig/Documentation/sysrq.txt 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/Documentation/sysrq.txt 2016-03-21 20:18:28.000000000 +0100 -@@ -59,10 +59,17 @@ - On other - If you know of the key combos for other architectures, please - let me know so I can add them to this section. - --On all - write a character to /proc/sysrq-trigger. e.g.: -- -+On all - write a character to /proc/sysrq-trigger, e.g.: - echo t > /proc/sysrq-trigger - -+On all - Enable network SysRq by writing a cookie to icmp_echo_sysrq, e.g. -+ echo 0x01020304 >/proc/sys/net/ipv4/icmp_echo_sysrq -+ Send an ICMP echo request with this pattern plus the particular -+ SysRq command key. Example: -+ # ping -c1 -s57 -p0102030468 -+ will trigger the SysRq-H (help) command. -+ -+ - * What are the 'command' keys? - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 'b' - Will immediately reboot the system without syncing or unmounting -diff -Nur linux-4.1.20.orig/Documentation/trace/histograms.txt linux-4.1.20/Documentation/trace/histograms.txt ---- linux-4.1.20.orig/Documentation/trace/histograms.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/Documentation/trace/histograms.txt 2016-03-21 20:18:28.000000000 +0100 -@@ -0,0 +1,186 @@ -+ Using the Linux Kernel Latency Histograms -+ -+ -+This document gives a short explanation how to enable, configure and use -+latency histograms. Latency histograms are primarily relevant in the -+context of real-time enabled kernels (CONFIG_PREEMPT/CONFIG_PREEMPT_RT) -+and are used in the quality management of the Linux real-time -+capabilities. -+ -+ -+* Purpose of latency histograms -+ -+A latency histogram continuously accumulates the frequencies of latency -+data. There are two types of histograms -+- potential sources of latencies -+- effective latencies -+ -+ -+* Potential sources of latencies -+ -+Potential sources of latencies are code segments where interrupts, -+preemption or both are disabled (aka critical sections). To create -+histograms of potential sources of latency, the kernel stores the time -+stamp at the start of a critical section, determines the time elapsed -+when the end of the section is reached, and increments the frequency -+counter of that latency value - irrespective of whether any concurrently -+running process is affected by latency or not. -+- Configuration items (in the Kernel hacking/Tracers submenu) -+ CONFIG_INTERRUPT_OFF_LATENCY -+ CONFIG_PREEMPT_OFF_LATENCY -+ -+ -+* Effective latencies -+ -+Effective latencies are actually occuring during wakeup of a process. To -+determine effective latencies, the kernel stores the time stamp when a -+process is scheduled to be woken up, and determines the duration of the -+wakeup time shortly before control is passed over to this process. Note -+that the apparent latency in user space may be somewhat longer, since the -+process may be interrupted after control is passed over to it but before -+the execution in user space takes place. Simply measuring the interval -+between enqueuing and wakeup may also not appropriate in cases when a -+process is scheduled as a result of a timer expiration. The timer may have -+missed its deadline, e.g. due to disabled interrupts, but this latency -+would not be registered. Therefore, the offsets of missed timers are -+recorded in a separate histogram. If both wakeup latency and missed timer -+offsets are configured and enabled, a third histogram may be enabled that -+records the overall latency as a sum of the timer latency, if any, and the -+wakeup latency. This histogram is called "timerandwakeup". -+- Configuration items (in the Kernel hacking/Tracers submenu) -+ CONFIG_WAKEUP_LATENCY -+ CONFIG_MISSED_TIMER_OFSETS -+ -+ -+* Usage -+ -+The interface to the administration of the latency histograms is located -+in the debugfs file system. To mount it, either enter -+ -+mount -t sysfs nodev /sys -+mount -t debugfs nodev /sys/kernel/debug -+ -+from shell command line level, or add -+ -+nodev /sys sysfs defaults 0 0 -+nodev /sys/kernel/debug debugfs defaults 0 0 -+ -+to the file /etc/fstab. All latency histogram related files are then -+available in the directory /sys/kernel/debug/tracing/latency_hist. A -+particular histogram type is enabled by writing non-zero to the related -+variable in the /sys/kernel/debug/tracing/latency_hist/enable directory. -+Select "preemptirqsoff" for the histograms of potential sources of -+latencies and "wakeup" for histograms of effective latencies etc. The -+histogram data - one per CPU - are available in the files -+ -+/sys/kernel/debug/tracing/latency_hist/preemptoff/CPUx -+/sys/kernel/debug/tracing/latency_hist/irqsoff/CPUx -+/sys/kernel/debug/tracing/latency_hist/preemptirqsoff/CPUx -+/sys/kernel/debug/tracing/latency_hist/wakeup/CPUx -+/sys/kernel/debug/tracing/latency_hist/wakeup/sharedprio/CPUx -+/sys/kernel/debug/tracing/latency_hist/missed_timer_offsets/CPUx -+/sys/kernel/debug/tracing/latency_hist/timerandwakeup/CPUx -+ -+The histograms are reset by writing non-zero to the file "reset" in a -+particular latency directory. To reset all latency data, use -+ -+#!/bin/sh -+ -+TRACINGDIR=/sys/kernel/debug/tracing -+HISTDIR=$TRACINGDIR/latency_hist -+ -+if test -d $HISTDIR -+then -+ cd $HISTDIR -+ for i in `find . | grep /reset$` -+ do -+ echo 1 >$i -+ done -+fi -+ -+ -+* Data format -+ -+Latency data are stored with a resolution of one microsecond. The -+maximum latency is 10,240 microseconds. The data are only valid, if the -+overflow register is empty. Every output line contains the latency in -+microseconds in the first row and the number of samples in the second -+row. To display only lines with a positive latency count, use, for -+example, -+ -+grep -v " 0$" /sys/kernel/debug/tracing/latency_hist/preemptoff/CPU0 -+ -+#Minimum latency: 0 microseconds. -+#Average latency: 0 microseconds. -+#Maximum latency: 25 microseconds. -+#Total samples: 3104770694 -+#There are 0 samples greater or equal than 10240 microseconds -+#usecs samples -+ 0 2984486876 -+ 1 49843506 -+ 2 58219047 -+ 3 5348126 -+ 4 2187960 -+ 5 3388262 -+ 6 959289 -+ 7 208294 -+ 8 40420 -+ 9 4485 -+ 10 14918 -+ 11 18340 -+ 12 25052 -+ 13 19455 -+ 14 5602 -+ 15 969 -+ 16 47 -+ 17 18 -+ 18 14 -+ 19 1 -+ 20 3 -+ 21 2 -+ 22 5 -+ 23 2 -+ 25 1 -+ -+ -+* Wakeup latency of a selected process -+ -+To only collect wakeup latency data of a particular process, write the -+PID of the requested process to -+ -+/sys/kernel/debug/tracing/latency_hist/wakeup/pid -+ -+PIDs are not considered, if this variable is set to 0. -+ -+ -+* Details of the process with the highest wakeup latency so far -+ -+Selected data of the process that suffered from the highest wakeup -+latency that occurred in a particular CPU are available in the file -+ -+/sys/kernel/debug/tracing/latency_hist/wakeup/max_latency-CPUx. -+ -+In addition, other relevant system data at the time when the -+latency occurred are given. -+ -+The format of the data is (all in one line): -+<PID> <Priority> <Latency> (<Timeroffset>) <Command> \ -+<- <PID> <Priority> <Command> <Timestamp> -+ -+The value of <Timeroffset> is only relevant in the combined timer -+and wakeup latency recording. In the wakeup recording, it is -+always 0, in the missed_timer_offsets recording, it is the same -+as <Latency>. -+ -+When retrospectively searching for the origin of a latency and -+tracing was not enabled, it may be helpful to know the name and -+some basic data of the task that (finally) was switching to the -+late real-tlme task. In addition to the victim's data, also the -+data of the possible culprit are therefore displayed after the -+"<-" symbol. -+ -+Finally, the timestamp of the time when the latency occurred -+in <seconds>.<microseconds> after the most recent system boot -+is provided. -+ -+These data are also reset when the wakeup histogram is reset. -diff -Nur linux-4.1.20.orig/arch/Kconfig linux-4.1.20/arch/Kconfig ---- linux-4.1.20.orig/arch/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/Kconfig 2016-03-21 20:18:28.000000000 +0100 -@@ -6,6 +6,7 @@ - tristate "OProfile system profiling" - depends on PROFILING - depends on HAVE_OPROFILE -+ depends on !PREEMPT_RT_FULL - select RING_BUFFER - select RING_BUFFER_ALLOW_SWAP - help -@@ -49,6 +50,7 @@ - config JUMP_LABEL - bool "Optimize very unlikely/likely branches" - depends on HAVE_ARCH_JUMP_LABEL -+ depends on (!INTERRUPT_OFF_HIST && !PREEMPT_OFF_HIST && !WAKEUP_LATENCY_HIST && !MISSED_TIMER_OFFSETS_HIST) - help - This option enables a transparent branch optimization that - makes certain almost-always-true or almost-always-false branch -diff -Nur linux-4.1.20.orig/arch/alpha/mm/fault.c linux-4.1.20/arch/alpha/mm/fault.c ---- linux-4.1.20.orig/arch/alpha/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/alpha/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/alpha/mm/fault.c linux-4.1.26/arch/alpha/mm/fault.c +--- linux-4.1.26.orig/arch/alpha/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/alpha/mm/fault.c 2016-06-19 15:30:54.915151887 +0200 @@ -23,8 +23,7 @@ #include <linux/smp.h> #include <linux/interrupt.h> @@ -320,9 +20,9 @@ diff -Nur linux-4.1.20.orig/arch/alpha/mm/fault.c linux-4.1.20/arch/alpha/mm/fau goto no_context; #ifdef CONFIG_ALPHA_LARGE_VMALLOC -diff -Nur linux-4.1.20.orig/arch/arc/include/asm/futex.h linux-4.1.20/arch/arc/include/asm/futex.h ---- linux-4.1.20.orig/arch/arc/include/asm/futex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arc/include/asm/futex.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arc/include/asm/futex.h linux-4.1.26/arch/arc/include/asm/futex.h +--- linux-4.1.26.orig/arch/arc/include/asm/futex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arc/include/asm/futex.h 2016-06-19 15:30:54.915151887 +0200 @@ -53,7 +53,7 @@ if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) return -EFAULT; @@ -368,9 +68,9 @@ diff -Nur linux-4.1.20.orig/arch/arc/include/asm/futex.h linux-4.1.20/arch/arc/i *uval = val; return val; -diff -Nur linux-4.1.20.orig/arch/arc/mm/fault.c linux-4.1.20/arch/arc/mm/fault.c ---- linux-4.1.20.orig/arch/arc/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arc/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arc/mm/fault.c linux-4.1.26/arch/arc/mm/fault.c +--- linux-4.1.26.orig/arch/arc/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arc/mm/fault.c 2016-06-19 15:30:54.915151887 +0200 @@ -86,7 +86,7 @@ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -380,29 +80,9 @@ diff -Nur linux-4.1.20.orig/arch/arc/mm/fault.c linux-4.1.20/arch/arc/mm/fault.c goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/arm/Kconfig linux-4.1.20/arch/arm/Kconfig ---- linux-4.1.20.orig/arch/arm/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/Kconfig 2016-03-21 20:18:28.000000000 +0100 -@@ -31,7 +31,7 @@ - select HARDIRQS_SW_RESEND - select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) - select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 -- select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL -+ select HAVE_ARCH_JUMP_LABEL if (!XIP_KERNEL && !PREEMPT_RT_BASE) - select HAVE_ARCH_KGDB - select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) - select HAVE_ARCH_TRACEHOOK -@@ -66,6 +66,7 @@ - select HAVE_PERF_EVENTS - select HAVE_PERF_REGS - select HAVE_PERF_USER_STACK_DUMP -+ select HAVE_PREEMPT_LAZY - select HAVE_RCU_TABLE_FREE if (SMP && ARM_LPAE) - select HAVE_REGS_AND_STACK_ACCESS_API - select HAVE_SYSCALL_TRACEPOINTS -diff -Nur linux-4.1.20.orig/arch/arm/include/asm/cmpxchg.h linux-4.1.20/arch/arm/include/asm/cmpxchg.h ---- linux-4.1.20.orig/arch/arm/include/asm/cmpxchg.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/include/asm/cmpxchg.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/include/asm/cmpxchg.h linux-4.1.26/arch/arm/include/asm/cmpxchg.h +--- linux-4.1.26.orig/arch/arm/include/asm/cmpxchg.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/include/asm/cmpxchg.h 2016-06-19 15:30:54.919152041 +0200 @@ -129,6 +129,8 @@ #else /* min ARCH >= ARMv6 */ @@ -412,9 +92,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/include/asm/cmpxchg.h linux-4.1.20/arch/arm extern void __bad_cmpxchg(volatile void *ptr, int size); /* -diff -Nur linux-4.1.20.orig/arch/arm/include/asm/futex.h linux-4.1.20/arch/arm/include/asm/futex.h ---- linux-4.1.20.orig/arch/arm/include/asm/futex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/include/asm/futex.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/include/asm/futex.h linux-4.1.26/arch/arm/include/asm/futex.h +--- linux-4.1.26.orig/arch/arm/include/asm/futex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/include/asm/futex.h 2016-06-19 15:30:54.919152041 +0200 @@ -93,6 +93,7 @@ if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) return -EFAULT; @@ -456,9 +136,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/include/asm/futex.h linux-4.1.20/arch/arm/i if (!ret) { switch (cmp) { -diff -Nur linux-4.1.20.orig/arch/arm/include/asm/switch_to.h linux-4.1.20/arch/arm/include/asm/switch_to.h ---- linux-4.1.20.orig/arch/arm/include/asm/switch_to.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/include/asm/switch_to.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/include/asm/switch_to.h linux-4.1.26/arch/arm/include/asm/switch_to.h +--- linux-4.1.26.orig/arch/arm/include/asm/switch_to.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/include/asm/switch_to.h 2016-06-19 15:30:54.919152041 +0200 @@ -3,6 +3,13 @@ #include <linux/thread_info.h> @@ -481,9 +161,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/include/asm/switch_to.h linux-4.1.20/arch/a last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ } while (0) -diff -Nur linux-4.1.20.orig/arch/arm/include/asm/thread_info.h linux-4.1.20/arch/arm/include/asm/thread_info.h ---- linux-4.1.20.orig/arch/arm/include/asm/thread_info.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/include/asm/thread_info.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/include/asm/thread_info.h linux-4.1.26/arch/arm/include/asm/thread_info.h +--- linux-4.1.26.orig/arch/arm/include/asm/thread_info.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/include/asm/thread_info.h 2016-06-19 15:30:54.919152041 +0200 @@ -50,6 +50,7 @@ struct thread_info { unsigned long flags; /* low level flags */ @@ -508,9 +188,29 @@ diff -Nur linux-4.1.20.orig/arch/arm/include/asm/thread_info.h linux-4.1.20/arch #define _TIF_UPROBE (1 << TIF_UPROBE) #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) -diff -Nur linux-4.1.20.orig/arch/arm/kernel/asm-offsets.c linux-4.1.20/arch/arm/kernel/asm-offsets.c ---- linux-4.1.20.orig/arch/arm/kernel/asm-offsets.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/asm-offsets.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/Kconfig linux-4.1.26/arch/arm/Kconfig +--- linux-4.1.26.orig/arch/arm/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/Kconfig 2016-06-19 15:30:54.919152041 +0200 +@@ -31,7 +31,7 @@ + select HARDIRQS_SW_RESEND + select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT) + select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6 +- select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL ++ select HAVE_ARCH_JUMP_LABEL if (!XIP_KERNEL && !PREEMPT_RT_BASE) + select HAVE_ARCH_KGDB + select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) + select HAVE_ARCH_TRACEHOOK +@@ -66,6 +66,7 @@ + select HAVE_PERF_EVENTS + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP ++ select HAVE_PREEMPT_LAZY + select HAVE_RCU_TABLE_FREE if (SMP && ARM_LPAE) + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_SYSCALL_TRACEPOINTS +diff -Nur linux-4.1.26.orig/arch/arm/kernel/asm-offsets.c linux-4.1.26/arch/arm/kernel/asm-offsets.c +--- linux-4.1.26.orig/arch/arm/kernel/asm-offsets.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/asm-offsets.c 2016-06-19 15:30:54.919152041 +0200 @@ -65,6 +65,7 @@ BLANK(); DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); @@ -519,9 +219,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/asm-offsets.c linux-4.1.20/arch/arm/ DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); -diff -Nur linux-4.1.20.orig/arch/arm/kernel/entry-armv.S linux-4.1.20/arch/arm/kernel/entry-armv.S ---- linux-4.1.20.orig/arch/arm/kernel/entry-armv.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/entry-armv.S 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kernel/entry-armv.S linux-4.1.26/arch/arm/kernel/entry-armv.S +--- linux-4.1.26.orig/arch/arm/kernel/entry-armv.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/entry-armv.S 2016-06-19 15:30:54.919152041 +0200 @@ -208,11 +208,18 @@ #ifdef CONFIG_PREEMPT get_thread_info tsk @@ -552,9 +252,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/entry-armv.S linux-4.1.20/arch/arm/k reteq r8 @ go again b 1b #endif -diff -Nur linux-4.1.20.orig/arch/arm/kernel/process.c linux-4.1.20/arch/arm/kernel/process.c ---- linux-4.1.20.orig/arch/arm/kernel/process.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/process.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kernel/process.c linux-4.1.26/arch/arm/kernel/process.c +--- linux-4.1.26.orig/arch/arm/kernel/process.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/process.c 2016-06-19 15:30:54.919152041 +0200 @@ -290,6 +290,30 @@ } @@ -586,9 +286,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/process.c linux-4.1.20/arch/arm/kern #ifdef CONFIG_KUSER_HELPERS /* * The vectors page is always readable from user space for the -diff -Nur linux-4.1.20.orig/arch/arm/kernel/signal.c linux-4.1.20/arch/arm/kernel/signal.c ---- linux-4.1.20.orig/arch/arm/kernel/signal.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/signal.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kernel/signal.c linux-4.1.26/arch/arm/kernel/signal.c +--- linux-4.1.26.orig/arch/arm/kernel/signal.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/signal.c 2016-06-19 15:30:54.919152041 +0200 @@ -568,7 +568,8 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) { @@ -599,9 +299,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/signal.c linux-4.1.20/arch/arm/kerne schedule(); } else { if (unlikely(!user_mode(regs))) -diff -Nur linux-4.1.20.orig/arch/arm/kernel/smp.c linux-4.1.20/arch/arm/kernel/smp.c ---- linux-4.1.20.orig/arch/arm/kernel/smp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/smp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kernel/smp.c linux-4.1.26/arch/arm/kernel/smp.c +--- linux-4.1.26.orig/arch/arm/kernel/smp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/smp.c 2016-06-19 15:30:54.919152041 +0200 @@ -213,8 +213,6 @@ flush_cache_louis(); local_flush_tlb_all(); @@ -621,9 +321,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/smp.c linux-4.1.20/arch/arm/kernel/s pr_notice("CPU%u: shutdown\n", cpu); /* -diff -Nur linux-4.1.20.orig/arch/arm/kernel/unwind.c linux-4.1.20/arch/arm/kernel/unwind.c ---- linux-4.1.20.orig/arch/arm/kernel/unwind.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kernel/unwind.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kernel/unwind.c linux-4.1.26/arch/arm/kernel/unwind.c +--- linux-4.1.26.orig/arch/arm/kernel/unwind.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kernel/unwind.c 2016-06-19 15:30:54.919152041 +0200 @@ -93,7 +93,7 @@ static const struct unwind_idx *__origin_unwind_idx; extern const struct unwind_idx __stop_unwind_idx[]; @@ -675,9 +375,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kernel/unwind.c linux-4.1.20/arch/arm/kerne kfree(tab); } -diff -Nur linux-4.1.20.orig/arch/arm/kvm/arm.c linux-4.1.20/arch/arm/kvm/arm.c ---- linux-4.1.20.orig/arch/arm/kvm/arm.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kvm/arm.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kvm/arm.c linux-4.1.26/arch/arm/kvm/arm.c +--- linux-4.1.26.orig/arch/arm/kvm/arm.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kvm/arm.c 2016-06-19 15:30:54.919152041 +0200 @@ -474,9 +474,9 @@ static void vcpu_pause(struct kvm_vcpu *vcpu) @@ -690,9 +390,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kvm/arm.c linux-4.1.20/arch/arm/kvm/arm.c } static int kvm_vcpu_initialized(struct kvm_vcpu *vcpu) -diff -Nur linux-4.1.20.orig/arch/arm/kvm/psci.c linux-4.1.20/arch/arm/kvm/psci.c ---- linux-4.1.20.orig/arch/arm/kvm/psci.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/kvm/psci.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/kvm/psci.c linux-4.1.26/arch/arm/kvm/psci.c +--- linux-4.1.26.orig/arch/arm/kvm/psci.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/kvm/psci.c 2016-06-19 15:30:54.919152041 +0200 @@ -68,7 +68,7 @@ { struct kvm *kvm = source_vcpu->kvm; @@ -711,9 +411,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/kvm/psci.c linux-4.1.20/arch/arm/kvm/psci.c return PSCI_RET_SUCCESS; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-exynos/platsmp.c linux-4.1.20/arch/arm/mach-exynos/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-exynos/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-exynos/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-exynos/platsmp.c linux-4.1.26/arch/arm/mach-exynos/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-exynos/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-exynos/platsmp.c 2016-06-19 15:30:54.919152041 +0200 @@ -231,7 +231,7 @@ return (void __iomem *)(S5P_VA_SCU); } @@ -761,9 +461,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-exynos/platsmp.c linux-4.1.20/arch/arm return pen_release != -1 ? ret : 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-hisi/platmcpm.c linux-4.1.20/arch/arm/mach-hisi/platmcpm.c ---- linux-4.1.20.orig/arch/arm/mach-hisi/platmcpm.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-hisi/platmcpm.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-hisi/platmcpm.c linux-4.1.26/arch/arm/mach-hisi/platmcpm.c +--- linux-4.1.26.orig/arch/arm/mach-hisi/platmcpm.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-hisi/platmcpm.c 2016-06-19 15:30:54.923152195 +0200 @@ -57,7 +57,7 @@ static void __iomem *sysctrl, *fabric; @@ -866,9 +566,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-hisi/platmcpm.c linux-4.1.20/arch/arm/ } static void __naked hip04_mcpm_power_up_setup(unsigned int affinity_level) -diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/gpio.c linux-4.1.20/arch/arm/mach-omap2/gpio.c ---- linux-4.1.20.orig/arch/arm/mach-omap2/gpio.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-omap2/gpio.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-omap2/gpio.c linux-4.1.26/arch/arm/mach-omap2/gpio.c +--- linux-4.1.26.orig/arch/arm/mach-omap2/gpio.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-omap2/gpio.c 2016-06-19 15:30:54.923152195 +0200 @@ -130,7 +130,6 @@ } @@ -877,9 +577,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/gpio.c linux-4.1.20/arch/arm/mac pdev = omap_device_build(name, id - 1, oh, pdata, sizeof(*pdata)); kfree(pdata); -diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/omap-smp.c linux-4.1.20/arch/arm/mach-omap2/omap-smp.c ---- linux-4.1.20.orig/arch/arm/mach-omap2/omap-smp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-omap2/omap-smp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-omap2/omap-smp.c linux-4.1.26/arch/arm/mach-omap2/omap-smp.c +--- linux-4.1.26.orig/arch/arm/mach-omap2/omap-smp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-omap2/omap-smp.c 2016-06-19 15:30:54.923152195 +0200 @@ -43,7 +43,7 @@ /* SCU base address */ static void __iomem *scu_base; @@ -918,9 +618,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/omap-smp.c linux-4.1.20/arch/arm return 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.c linux-4.1.20/arch/arm/mach-omap2/powerdomain.c ---- linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-omap2/powerdomain.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-omap2/powerdomain.c linux-4.1.26/arch/arm/mach-omap2/powerdomain.c +--- linux-4.1.26.orig/arch/arm/mach-omap2/powerdomain.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-omap2/powerdomain.c 2016-06-19 15:30:54.923152195 +0200 @@ -1166,43 +1166,3 @@ return count; } @@ -965,9 +665,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.c linux-4.1.20/arch/ - - return 0; -} -diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.h linux-4.1.20/arch/arm/mach-omap2/powerdomain.h ---- linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-omap2/powerdomain.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-omap2/powerdomain.h linux-4.1.26/arch/arm/mach-omap2/powerdomain.h +--- linux-4.1.26.orig/arch/arm/mach-omap2/powerdomain.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-omap2/powerdomain.h 2016-06-19 15:30:54.923152195 +0200 @@ -244,7 +244,6 @@ int pwrdm_pre_transition(struct powerdomain *pwrdm); int pwrdm_post_transition(struct powerdomain *pwrdm); @@ -976,9 +676,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-omap2/powerdomain.h linux-4.1.20/arch/ extern int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 state); -diff -Nur linux-4.1.20.orig/arch/arm/mach-prima2/platsmp.c linux-4.1.20/arch/arm/mach-prima2/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-prima2/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-prima2/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-prima2/platsmp.c linux-4.1.26/arch/arm/mach-prima2/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-prima2/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-prima2/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -22,7 +22,7 @@ static void __iomem *clk_base; @@ -1017,9 +717,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-prima2/platsmp.c linux-4.1.20/arch/arm return pen_release != -1 ? -ENOSYS : 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-qcom/platsmp.c linux-4.1.20/arch/arm/mach-qcom/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-qcom/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-qcom/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-qcom/platsmp.c linux-4.1.26/arch/arm/mach-qcom/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-qcom/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-qcom/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -46,7 +46,7 @@ extern void secondary_startup_arm(void); @@ -1058,9 +758,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-qcom/platsmp.c linux-4.1.20/arch/arm/m return ret; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-spear/platsmp.c linux-4.1.20/arch/arm/mach-spear/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-spear/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-spear/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-spear/platsmp.c linux-4.1.26/arch/arm/mach-spear/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-spear/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-spear/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -32,7 +32,7 @@ sync_cache_w(&pen_release); } @@ -1099,9 +799,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-spear/platsmp.c linux-4.1.20/arch/arm/ return pen_release != -1 ? -ENOSYS : 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-sti/platsmp.c linux-4.1.20/arch/arm/mach-sti/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-sti/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-sti/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-sti/platsmp.c linux-4.1.26/arch/arm/mach-sti/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-sti/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-sti/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -34,7 +34,7 @@ sync_cache_w(&pen_release); } @@ -1140,9 +840,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-sti/platsmp.c linux-4.1.20/arch/arm/ma return pen_release != -1 ? -ENOSYS : 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mach-ux500/platsmp.c linux-4.1.20/arch/arm/mach-ux500/platsmp.c ---- linux-4.1.20.orig/arch/arm/mach-ux500/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mach-ux500/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mach-ux500/platsmp.c linux-4.1.26/arch/arm/mach-ux500/platsmp.c +--- linux-4.1.26.orig/arch/arm/mach-ux500/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mach-ux500/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -51,7 +51,7 @@ return NULL; } @@ -1181,9 +881,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mach-ux500/platsmp.c linux-4.1.20/arch/arm/ return pen_release != -1 ? -ENOSYS : 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mm/fault.c linux-4.1.20/arch/arm/mm/fault.c ---- linux-4.1.20.orig/arch/arm/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mm/fault.c linux-4.1.26/arch/arm/mm/fault.c +--- linux-4.1.26.orig/arch/arm/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mm/fault.c 2016-06-19 15:30:54.923152195 +0200 @@ -276,7 +276,7 @@ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -1213,9 +913,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mm/fault.c linux-4.1.20/arch/arm/mm/fault.c do_bad_area(addr, fsr, regs); return 0; } -diff -Nur linux-4.1.20.orig/arch/arm/mm/highmem.c linux-4.1.20/arch/arm/mm/highmem.c ---- linux-4.1.20.orig/arch/arm/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/mm/highmem.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/mm/highmem.c linux-4.1.26/arch/arm/mm/highmem.c +--- linux-4.1.26.orig/arch/arm/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/mm/highmem.c 2016-06-19 15:30:54.923152195 +0200 @@ -54,11 +54,13 @@ void *kmap_atomic(struct page *page) @@ -1318,9 +1018,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/mm/highmem.c linux-4.1.20/arch/arm/mm/highm + } +} +#endif -diff -Nur linux-4.1.20.orig/arch/arm/plat-versatile/platsmp.c linux-4.1.20/arch/arm/plat-versatile/platsmp.c ---- linux-4.1.20.orig/arch/arm/plat-versatile/platsmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm/plat-versatile/platsmp.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm/plat-versatile/platsmp.c linux-4.1.26/arch/arm/plat-versatile/platsmp.c +--- linux-4.1.26.orig/arch/arm/plat-versatile/platsmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm/plat-versatile/platsmp.c 2016-06-19 15:30:54.923152195 +0200 @@ -30,7 +30,7 @@ sync_cache_w(&pen_release); } @@ -1359,32 +1059,9 @@ diff -Nur linux-4.1.20.orig/arch/arm/plat-versatile/platsmp.c linux-4.1.20/arch/ return pen_release != -1 ? -ENOSYS : 0; } -diff -Nur linux-4.1.20.orig/arch/arm64/Kconfig linux-4.1.20/arch/arm64/Kconfig ---- linux-4.1.20.orig/arch/arm64/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/Kconfig 2016-03-21 20:18:28.000000000 +0100 -@@ -69,8 +69,10 @@ - select HAVE_PERF_REGS - select HAVE_PERF_USER_STACK_DUMP - select HAVE_RCU_TABLE_FREE -+ select HAVE_PREEMPT_LAZY - select HAVE_SYSCALL_TRACEPOINTS - select IRQ_DOMAIN -+ select IRQ_FORCED_THREADING - select MODULES_USE_ELF_RELA - select NO_BOOTMEM - select OF -@@ -599,7 +601,7 @@ - - config XEN - bool "Xen guest support on ARM64" -- depends on ARM64 && OF -+ depends on ARM64 && OF && !PREEMPT_RT_FULL - select SWIOTLB_XEN - help - Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64. -diff -Nur linux-4.1.20.orig/arch/arm64/include/asm/futex.h linux-4.1.20/arch/arm64/include/asm/futex.h ---- linux-4.1.20.orig/arch/arm64/include/asm/futex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/include/asm/futex.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/include/asm/futex.h linux-4.1.26/arch/arm64/include/asm/futex.h +--- linux-4.1.26.orig/arch/arm64/include/asm/futex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/include/asm/futex.h 2016-06-19 15:30:54.923152195 +0200 @@ -58,7 +58,7 @@ if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) return -EFAULT; @@ -1403,9 +1080,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/include/asm/futex.h linux-4.1.20/arch/arm if (!ret) { switch (cmp) { -diff -Nur linux-4.1.20.orig/arch/arm64/include/asm/thread_info.h linux-4.1.20/arch/arm64/include/asm/thread_info.h ---- linux-4.1.20.orig/arch/arm64/include/asm/thread_info.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/include/asm/thread_info.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/include/asm/thread_info.h linux-4.1.26/arch/arm64/include/asm/thread_info.h +--- linux-4.1.26.orig/arch/arm64/include/asm/thread_info.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/include/asm/thread_info.h 2016-06-19 15:30:54.923152195 +0200 @@ -47,6 +47,7 @@ mm_segment_t addr_limit; /* address limit */ struct task_struct *task; /* main task structure */ @@ -1430,9 +1107,32 @@ diff -Nur linux-4.1.20.orig/arch/arm64/include/asm/thread_info.h linux-4.1.20/ar #define _TIF_NOHZ (1 << TIF_NOHZ) #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) -diff -Nur linux-4.1.20.orig/arch/arm64/kernel/asm-offsets.c linux-4.1.20/arch/arm64/kernel/asm-offsets.c ---- linux-4.1.20.orig/arch/arm64/kernel/asm-offsets.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/kernel/asm-offsets.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/Kconfig linux-4.1.26/arch/arm64/Kconfig +--- linux-4.1.26.orig/arch/arm64/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/Kconfig 2016-06-19 15:30:54.923152195 +0200 +@@ -69,8 +69,10 @@ + select HAVE_PERF_REGS + select HAVE_PERF_USER_STACK_DUMP + select HAVE_RCU_TABLE_FREE ++ select HAVE_PREEMPT_LAZY + select HAVE_SYSCALL_TRACEPOINTS + select IRQ_DOMAIN ++ select IRQ_FORCED_THREADING + select MODULES_USE_ELF_RELA + select NO_BOOTMEM + select OF +@@ -599,7 +601,7 @@ + + config XEN + bool "Xen guest support on ARM64" +- depends on ARM64 && OF ++ depends on ARM64 && OF && !PREEMPT_RT_FULL + select SWIOTLB_XEN + help + Say Y if you want to run Linux in a Virtual Machine on Xen on ARM64. +diff -Nur linux-4.1.26.orig/arch/arm64/kernel/asm-offsets.c linux-4.1.26/arch/arm64/kernel/asm-offsets.c +--- linux-4.1.26.orig/arch/arm64/kernel/asm-offsets.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/kernel/asm-offsets.c 2016-06-19 15:30:54.923152195 +0200 @@ -35,6 +35,7 @@ BLANK(); DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); @@ -1441,9 +1141,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/kernel/asm-offsets.c linux-4.1.20/arch/ar DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); -diff -Nur linux-4.1.20.orig/arch/arm64/kernel/entry.S linux-4.1.20/arch/arm64/kernel/entry.S ---- linux-4.1.20.orig/arch/arm64/kernel/entry.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/kernel/entry.S 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/kernel/entry.S linux-4.1.26/arch/arm64/kernel/entry.S +--- linux-4.1.26.orig/arch/arm64/kernel/entry.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/kernel/entry.S 2016-06-19 15:30:58.591293647 +0200 @@ -367,11 +367,16 @@ #ifdef CONFIG_PREEMPT get_thread_info tsk @@ -1480,9 +1180,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/kernel/entry.S linux-4.1.20/arch/arm64/ke /* TIF_SIGPENDING, TIF_NOTIFY_RESUME or TIF_FOREIGN_FPSTATE case */ ldr x2, [sp, #S_PSTATE] mov x0, sp // 'regs' -diff -Nur linux-4.1.20.orig/arch/arm64/kernel/insn.c linux-4.1.20/arch/arm64/kernel/insn.c ---- linux-4.1.20.orig/arch/arm64/kernel/insn.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/kernel/insn.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/kernel/insn.c linux-4.1.26/arch/arm64/kernel/insn.c +--- linux-4.1.26.orig/arch/arm64/kernel/insn.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/kernel/insn.c 2016-06-19 15:30:58.595293802 +0200 @@ -77,7 +77,7 @@ } } @@ -1508,9 +1208,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/kernel/insn.c linux-4.1.20/arch/arm64/ker return ret; } -diff -Nur linux-4.1.20.orig/arch/arm64/kernel/perf_event.c linux-4.1.20/arch/arm64/kernel/perf_event.c ---- linux-4.1.20.orig/arch/arm64/kernel/perf_event.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/kernel/perf_event.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/kernel/perf_event.c linux-4.1.26/arch/arm64/kernel/perf_event.c +--- linux-4.1.26.orig/arch/arm64/kernel/perf_event.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/kernel/perf_event.c 2016-06-19 15:30:58.595293802 +0200 @@ -488,7 +488,7 @@ } @@ -1520,9 +1220,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/kernel/perf_event.c linux-4.1.20/arch/arm "arm-pmu", armpmu); if (err) { pr_err("unable to request IRQ%d for ARM PMU counters\n", -diff -Nur linux-4.1.20.orig/arch/arm64/mm/fault.c linux-4.1.20/arch/arm64/mm/fault.c ---- linux-4.1.20.orig/arch/arm64/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/arm64/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/arm64/mm/fault.c linux-4.1.26/arch/arm64/mm/fault.c +--- linux-4.1.26.orig/arch/arm64/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/arm64/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -211,7 +211,7 @@ * If we're in an interrupt or have no user context, we must not take * the fault. @@ -1532,9 +1232,9 @@ diff -Nur linux-4.1.20.orig/arch/arm64/mm/fault.c linux-4.1.20/arch/arm64/mm/fau goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/avr32/include/asm/uaccess.h linux-4.1.20/arch/avr32/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/avr32/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/avr32/include/asm/uaccess.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/avr32/include/asm/uaccess.h linux-4.1.26/arch/avr32/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/avr32/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/avr32/include/asm/uaccess.h 2016-06-19 15:30:58.595293802 +0200 @@ -97,7 +97,8 @@ * @x: Value to copy to user space. * @ptr: Destination address, in user space. @@ -1575,9 +1275,9 @@ diff -Nur linux-4.1.20.orig/arch/avr32/include/asm/uaccess.h linux-4.1.20/arch/a * * This macro copies a single simple variable from user space to kernel * space. It supports simple types like char and int, but not larger -diff -Nur linux-4.1.20.orig/arch/avr32/mm/fault.c linux-4.1.20/arch/avr32/mm/fault.c ---- linux-4.1.20.orig/arch/avr32/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/avr32/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/avr32/mm/fault.c linux-4.1.26/arch/avr32/mm/fault.c +--- linux-4.1.26.orig/arch/avr32/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/avr32/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -14,11 +14,11 @@ #include <linux/pagemap.h> #include <linux/kdebug.h> @@ -1600,9 +1300,9 @@ diff -Nur linux-4.1.20.orig/arch/avr32/mm/fault.c linux-4.1.20/arch/avr32/mm/fau goto no_context; local_irq_enable(); -diff -Nur linux-4.1.20.orig/arch/cris/mm/fault.c linux-4.1.20/arch/cris/mm/fault.c ---- linux-4.1.20.orig/arch/cris/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/cris/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/cris/mm/fault.c linux-4.1.26/arch/cris/mm/fault.c +--- linux-4.1.26.orig/arch/cris/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/cris/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -8,7 +8,7 @@ #include <linux/interrupt.h> #include <linux/module.h> @@ -1626,9 +1326,9 @@ diff -Nur linux-4.1.20.orig/arch/cris/mm/fault.c linux-4.1.20/arch/cris/mm/fault goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/frv/mm/fault.c linux-4.1.20/arch/frv/mm/fault.c ---- linux-4.1.20.orig/arch/frv/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/frv/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/frv/mm/fault.c linux-4.1.26/arch/frv/mm/fault.c +--- linux-4.1.26.orig/arch/frv/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/frv/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -19,9 +19,9 @@ #include <linux/kernel.h> #include <linux/ptrace.h> @@ -1649,9 +1349,9 @@ diff -Nur linux-4.1.20.orig/arch/frv/mm/fault.c linux-4.1.20/arch/frv/mm/fault.c goto no_context; if (user_mode(__frame)) -diff -Nur linux-4.1.20.orig/arch/frv/mm/highmem.c linux-4.1.20/arch/frv/mm/highmem.c ---- linux-4.1.20.orig/arch/frv/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/frv/mm/highmem.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/frv/mm/highmem.c linux-4.1.26/arch/frv/mm/highmem.c +--- linux-4.1.26.orig/arch/frv/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/frv/mm/highmem.c 2016-06-19 15:30:58.595293802 +0200 @@ -42,6 +42,7 @@ unsigned long paddr; int type; @@ -1667,9 +1367,9 @@ diff -Nur linux-4.1.20.orig/arch/frv/mm/highmem.c linux-4.1.20/arch/frv/mm/highm + preempt_enable(); } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/hexagon/include/asm/uaccess.h linux-4.1.20/arch/hexagon/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/hexagon/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/hexagon/include/asm/uaccess.h 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/hexagon/include/asm/uaccess.h linux-4.1.26/arch/hexagon/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/hexagon/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/hexagon/include/asm/uaccess.h 2016-06-19 15:30:58.595293802 +0200 @@ -36,7 +36,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -1680,9 +1380,9 @@ diff -Nur linux-4.1.20.orig/arch/hexagon/include/asm/uaccess.h linux-4.1.20/arch * * Checks if a pointer to a block of memory in user space is valid. * -diff -Nur linux-4.1.20.orig/arch/ia64/mm/fault.c linux-4.1.20/arch/ia64/mm/fault.c ---- linux-4.1.20.orig/arch/ia64/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/ia64/mm/fault.c 2016-03-21 20:18:28.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/ia64/mm/fault.c linux-4.1.26/arch/ia64/mm/fault.c +--- linux-4.1.26.orig/arch/ia64/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/ia64/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -11,10 +11,10 @@ #include <linux/kprobes.h> #include <linux/kdebug.h> @@ -1704,9 +1404,28 @@ diff -Nur linux-4.1.20.orig/arch/ia64/mm/fault.c linux-4.1.20/arch/ia64/mm/fault goto no_context; #ifdef CONFIG_VIRTUAL_MEM_MAP -diff -Nur linux-4.1.20.orig/arch/m32r/include/asm/uaccess.h linux-4.1.20/arch/m32r/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/m32r/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/m32r/include/asm/uaccess.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/Kconfig linux-4.1.26/arch/Kconfig +--- linux-4.1.26.orig/arch/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/Kconfig 2016-06-19 15:30:54.915151887 +0200 +@@ -6,6 +6,7 @@ + tristate "OProfile system profiling" + depends on PROFILING + depends on HAVE_OPROFILE ++ depends on !PREEMPT_RT_FULL + select RING_BUFFER + select RING_BUFFER_ALLOW_SWAP + help +@@ -49,6 +50,7 @@ + config JUMP_LABEL + bool "Optimize very unlikely/likely branches" + depends on HAVE_ARCH_JUMP_LABEL ++ depends on (!INTERRUPT_OFF_HIST && !PREEMPT_OFF_HIST && !WAKEUP_LATENCY_HIST && !MISSED_TIMER_OFFSETS_HIST) + help + This option enables a transparent branch optimization that + makes certain almost-always-true or almost-always-false branch +diff -Nur linux-4.1.26.orig/arch/m32r/include/asm/uaccess.h linux-4.1.26/arch/m32r/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/m32r/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/m32r/include/asm/uaccess.h 2016-06-19 15:30:58.595293802 +0200 @@ -91,7 +91,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -1807,9 +1526,9 @@ diff -Nur linux-4.1.20.orig/arch/m32r/include/asm/uaccess.h linux-4.1.20/arch/m3 * * Get the size of a NUL-terminated string in user space. * -diff -Nur linux-4.1.20.orig/arch/m32r/mm/fault.c linux-4.1.20/arch/m32r/mm/fault.c ---- linux-4.1.20.orig/arch/m32r/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/m32r/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/m32r/mm/fault.c linux-4.1.26/arch/m32r/mm/fault.c +--- linux-4.1.26.orig/arch/m32r/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/m32r/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -24,9 +24,9 @@ #include <linux/vt_kern.h> /* For unblank_screen() */ #include <linux/highmem.h> @@ -1835,9 +1554,9 @@ diff -Nur linux-4.1.20.orig/arch/m32r/mm/fault.c linux-4.1.20/arch/m32r/mm/fault goto bad_area_nosemaphore; if (error_code & ACE_USERMODE) -diff -Nur linux-4.1.20.orig/arch/m68k/mm/fault.c linux-4.1.20/arch/m68k/mm/fault.c ---- linux-4.1.20.orig/arch/m68k/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/m68k/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/m68k/mm/fault.c linux-4.1.26/arch/m68k/mm/fault.c +--- linux-4.1.26.orig/arch/m68k/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/m68k/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -10,10 +10,10 @@ #include <linux/ptrace.h> #include <linux/interrupt.h> @@ -1859,9 +1578,9 @@ diff -Nur linux-4.1.20.orig/arch/m68k/mm/fault.c linux-4.1.20/arch/m68k/mm/fault goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/metag/mm/fault.c linux-4.1.20/arch/metag/mm/fault.c ---- linux-4.1.20.orig/arch/metag/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/metag/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/metag/mm/fault.c linux-4.1.26/arch/metag/mm/fault.c +--- linux-4.1.26.orig/arch/metag/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/metag/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -105,7 +105,7 @@ mm = tsk->mm; @@ -1871,9 +1590,9 @@ diff -Nur linux-4.1.20.orig/arch/metag/mm/fault.c linux-4.1.20/arch/metag/mm/fau goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/metag/mm/highmem.c linux-4.1.20/arch/metag/mm/highmem.c ---- linux-4.1.20.orig/arch/metag/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/metag/mm/highmem.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/metag/mm/highmem.c linux-4.1.26/arch/metag/mm/highmem.c +--- linux-4.1.26.orig/arch/metag/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/metag/mm/highmem.c 2016-06-19 15:30:58.595293802 +0200 @@ -43,7 +43,7 @@ unsigned long vaddr; int type; @@ -1899,9 +1618,9 @@ diff -Nur linux-4.1.20.orig/arch/metag/mm/highmem.c linux-4.1.20/arch/metag/mm/h pagefault_disable(); type = kmap_atomic_idx_push(); -diff -Nur linux-4.1.20.orig/arch/microblaze/include/asm/uaccess.h linux-4.1.20/arch/microblaze/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/microblaze/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/microblaze/include/asm/uaccess.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/microblaze/include/asm/uaccess.h linux-4.1.26/arch/microblaze/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/microblaze/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/microblaze/include/asm/uaccess.h 2016-06-19 15:30:58.595293802 +0200 @@ -178,7 +178,8 @@ * @x: Variable to store result. * @ptr: Source address, in user space. @@ -1922,9 +1641,9 @@ diff -Nur linux-4.1.20.orig/arch/microblaze/include/asm/uaccess.h linux-4.1.20/a * * This macro copies a single simple value from kernel space to user * space. It supports simple types like char and int, but not larger -diff -Nur linux-4.1.20.orig/arch/microblaze/mm/fault.c linux-4.1.20/arch/microblaze/mm/fault.c ---- linux-4.1.20.orig/arch/microblaze/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/microblaze/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/microblaze/mm/fault.c linux-4.1.26/arch/microblaze/mm/fault.c +--- linux-4.1.26.orig/arch/microblaze/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/microblaze/mm/fault.c 2016-06-19 15:30:58.595293802 +0200 @@ -107,14 +107,14 @@ if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) is_write = 0; @@ -1944,9 +1663,9 @@ diff -Nur linux-4.1.20.orig/arch/microblaze/mm/fault.c linux-4.1.20/arch/microbl pr_emerg("r15 = %lx MSR = %lx\n", regs->r15, regs->msr); die("Weird page fault", regs, SIGSEGV); -diff -Nur linux-4.1.20.orig/arch/microblaze/mm/highmem.c linux-4.1.20/arch/microblaze/mm/highmem.c ---- linux-4.1.20.orig/arch/microblaze/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/microblaze/mm/highmem.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/microblaze/mm/highmem.c linux-4.1.26/arch/microblaze/mm/highmem.c +--- linux-4.1.26.orig/arch/microblaze/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/microblaze/mm/highmem.c 2016-06-19 15:30:58.599293956 +0200 @@ -37,7 +37,7 @@ unsigned long vaddr; int idx, type; @@ -1971,21 +1690,9 @@ diff -Nur linux-4.1.20.orig/arch/microblaze/mm/highmem.c linux-4.1.20/arch/micro + preempt_enable(); } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/mips/Kconfig linux-4.1.20/arch/mips/Kconfig ---- linux-4.1.20.orig/arch/mips/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/Kconfig 2016-03-21 20:18:29.000000000 +0100 -@@ -2366,7 +2366,7 @@ - # - config HIGHMEM - bool "High Memory Support" -- depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA -+ depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA && !PREEMPT_RT_FULL - - config CPU_SUPPORTS_HIGHMEM - bool -diff -Nur linux-4.1.20.orig/arch/mips/include/asm/uaccess.h linux-4.1.20/arch/mips/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/mips/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/include/asm/uaccess.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mips/include/asm/uaccess.h linux-4.1.26/arch/mips/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/mips/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/include/asm/uaccess.h 2016-06-19 15:30:58.599293956 +0200 @@ -103,7 +103,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -2136,9 +1843,21 @@ diff -Nur linux-4.1.20.orig/arch/mips/include/asm/uaccess.h linux-4.1.20/arch/mi * * Get the size of a NUL-terminated string in user space. * -diff -Nur linux-4.1.20.orig/arch/mips/kernel/signal-common.h linux-4.1.20/arch/mips/kernel/signal-common.h ---- linux-4.1.20.orig/arch/mips/kernel/signal-common.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/kernel/signal-common.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mips/Kconfig linux-4.1.26/arch/mips/Kconfig +--- linux-4.1.26.orig/arch/mips/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/Kconfig 2016-06-19 15:30:58.599293956 +0200 +@@ -2367,7 +2367,7 @@ + # + config HIGHMEM + bool "High Memory Support" +- depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA ++ depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA && !PREEMPT_RT_FULL + + config CPU_SUPPORTS_HIGHMEM + bool +diff -Nur linux-4.1.26.orig/arch/mips/kernel/signal-common.h linux-4.1.26/arch/mips/kernel/signal-common.h +--- linux-4.1.26.orig/arch/mips/kernel/signal-common.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/kernel/signal-common.h 2016-06-19 15:30:58.599293956 +0200 @@ -28,12 +28,7 @@ extern int fpcsr_pending(unsigned int __user *fpcsr); @@ -2154,9 +1873,9 @@ diff -Nur linux-4.1.20.orig/arch/mips/kernel/signal-common.h linux-4.1.20/arch/m +#define unlock_fpu_owner() ({ pagefault_enable(); preempt_enable(); }) #endif /* __SIGNAL_COMMON_H */ -diff -Nur linux-4.1.20.orig/arch/mips/mm/fault.c linux-4.1.20/arch/mips/mm/fault.c ---- linux-4.1.20.orig/arch/mips/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mips/mm/fault.c linux-4.1.26/arch/mips/mm/fault.c +--- linux-4.1.26.orig/arch/mips/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/mm/fault.c 2016-06-19 15:30:58.599293956 +0200 @@ -21,10 +21,10 @@ #include <linux/module.h> #include <linux/kprobes.h> @@ -2178,9 +1897,9 @@ diff -Nur linux-4.1.20.orig/arch/mips/mm/fault.c linux-4.1.20/arch/mips/mm/fault goto bad_area_nosemaphore; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/mips/mm/highmem.c linux-4.1.20/arch/mips/mm/highmem.c ---- linux-4.1.20.orig/arch/mips/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/mm/highmem.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mips/mm/highmem.c linux-4.1.26/arch/mips/mm/highmem.c +--- linux-4.1.26.orig/arch/mips/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/mm/highmem.c 2016-06-19 15:30:58.599293956 +0200 @@ -47,7 +47,7 @@ unsigned long vaddr; int idx, type; @@ -2214,9 +1933,9 @@ diff -Nur linux-4.1.20.orig/arch/mips/mm/highmem.c linux-4.1.20/arch/mips/mm/hig pagefault_disable(); type = kmap_atomic_idx_push(); -diff -Nur linux-4.1.20.orig/arch/mips/mm/init.c linux-4.1.20/arch/mips/mm/init.c ---- linux-4.1.20.orig/arch/mips/mm/init.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mips/mm/init.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mips/mm/init.c linux-4.1.26/arch/mips/mm/init.c +--- linux-4.1.26.orig/arch/mips/mm/init.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mips/mm/init.c 2016-06-19 15:30:58.599293956 +0200 @@ -90,6 +90,7 @@ BUG_ON(Page_dcache_dirty(page)); @@ -2233,9 +1952,9 @@ diff -Nur linux-4.1.20.orig/arch/mips/mm/init.c linux-4.1.20/arch/mips/mm/init.c } void copy_user_highpage(struct page *to, struct page *from, -diff -Nur linux-4.1.20.orig/arch/mn10300/include/asm/highmem.h linux-4.1.20/arch/mn10300/include/asm/highmem.h ---- linux-4.1.20.orig/arch/mn10300/include/asm/highmem.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mn10300/include/asm/highmem.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mn10300/include/asm/highmem.h linux-4.1.26/arch/mn10300/include/asm/highmem.h +--- linux-4.1.26.orig/arch/mn10300/include/asm/highmem.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mn10300/include/asm/highmem.h 2016-06-19 15:30:58.599293956 +0200 @@ -75,6 +75,7 @@ unsigned long vaddr; int idx, type; @@ -2260,9 +1979,9 @@ diff -Nur linux-4.1.20.orig/arch/mn10300/include/asm/highmem.h linux-4.1.20/arch } #endif /* __KERNEL__ */ -diff -Nur linux-4.1.20.orig/arch/mn10300/mm/fault.c linux-4.1.20/arch/mn10300/mm/fault.c ---- linux-4.1.20.orig/arch/mn10300/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/mn10300/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/mn10300/mm/fault.c linux-4.1.26/arch/mn10300/mm/fault.c +--- linux-4.1.26.orig/arch/mn10300/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/mn10300/mm/fault.c 2016-06-19 15:30:58.599293956 +0200 @@ -23,8 +23,8 @@ #include <linux/interrupt.h> #include <linux/init.h> @@ -2282,9 +2001,9 @@ diff -Nur linux-4.1.20.orig/arch/mn10300/mm/fault.c linux-4.1.20/arch/mn10300/mm goto no_context; if ((fault_code & MMUFCR_xFC_ACCESS) == MMUFCR_xFC_ACCESS_USR) -diff -Nur linux-4.1.20.orig/arch/nios2/mm/fault.c linux-4.1.20/arch/nios2/mm/fault.c ---- linux-4.1.20.orig/arch/nios2/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/nios2/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/nios2/mm/fault.c linux-4.1.26/arch/nios2/mm/fault.c +--- linux-4.1.26.orig/arch/nios2/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/nios2/mm/fault.c 2016-06-19 15:30:58.599293956 +0200 @@ -77,7 +77,7 @@ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -2294,9 +2013,9 @@ diff -Nur linux-4.1.20.orig/arch/nios2/mm/fault.c linux-4.1.20/arch/nios2/mm/fau goto bad_area_nosemaphore; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/parisc/include/asm/cacheflush.h linux-4.1.20/arch/parisc/include/asm/cacheflush.h ---- linux-4.1.20.orig/arch/parisc/include/asm/cacheflush.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/parisc/include/asm/cacheflush.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/parisc/include/asm/cacheflush.h linux-4.1.26/arch/parisc/include/asm/cacheflush.h +--- linux-4.1.26.orig/arch/parisc/include/asm/cacheflush.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/parisc/include/asm/cacheflush.h 2016-06-19 15:30:58.599293956 +0200 @@ -142,6 +142,7 @@ static inline void *kmap_atomic(struct page *page) @@ -2313,9 +2032,9 @@ diff -Nur linux-4.1.20.orig/arch/parisc/include/asm/cacheflush.h linux-4.1.20/ar } #define kmap_atomic_prot(page, prot) kmap_atomic(page) -diff -Nur linux-4.1.20.orig/arch/parisc/kernel/traps.c linux-4.1.20/arch/parisc/kernel/traps.c ---- linux-4.1.20.orig/arch/parisc/kernel/traps.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/parisc/kernel/traps.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/parisc/kernel/traps.c linux-4.1.26/arch/parisc/kernel/traps.c +--- linux-4.1.26.orig/arch/parisc/kernel/traps.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/parisc/kernel/traps.c 2016-06-19 15:30:58.599293956 +0200 @@ -26,9 +26,9 @@ #include <linux/console.h> #include <linux/bug.h> @@ -2334,11 +2053,11 @@ diff -Nur linux-4.1.20.orig/arch/parisc/kernel/traps.c linux-4.1.20/arch/parisc/ - if (fault_space == 0 && !in_atomic()) + if (fault_space == 0 && !faulthandler_disabled()) { - pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); - parisc_terminate("Kernel Fault", regs, code, fault_address); -diff -Nur linux-4.1.20.orig/arch/parisc/mm/fault.c linux-4.1.20/arch/parisc/mm/fault.c ---- linux-4.1.20.orig/arch/parisc/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/parisc/mm/fault.c 2016-03-21 20:18:29.000000000 +0100 + /* Clean up and return if in exception table. */ + if (fixup_exception(regs)) +diff -Nur linux-4.1.26.orig/arch/parisc/mm/fault.c linux-4.1.26/arch/parisc/mm/fault.c +--- linux-4.1.26.orig/arch/parisc/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/parisc/mm/fault.c 2016-06-19 15:30:58.599293956 +0200 @@ -15,8 +15,8 @@ #include <linux/sched.h> #include <linux/interrupt.h> @@ -2349,7 +2068,7 @@ diff -Nur linux-4.1.20.orig/arch/parisc/mm/fault.c linux-4.1.20/arch/parisc/mm/f #include <asm/traps.h> /* Various important other fields */ -@@ -207,7 +207,7 @@ +@@ -208,7 +208,7 @@ int fault; unsigned int flags; @@ -2358,42 +2077,9 @@ diff -Nur linux-4.1.20.orig/arch/parisc/mm/fault.c linux-4.1.20/arch/parisc/mm/f goto no_context; tsk = current; -diff -Nur linux-4.1.20.orig/arch/powerpc/Kconfig linux-4.1.20/arch/powerpc/Kconfig ---- linux-4.1.20.orig/arch/powerpc/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/Kconfig 2016-03-21 20:18:29.000000000 +0100 -@@ -60,10 +60,11 @@ - - config RWSEM_GENERIC_SPINLOCK - bool -+ default y if PREEMPT_RT_FULL - - config RWSEM_XCHGADD_ALGORITHM - bool -- default y -+ default y if !PREEMPT_RT_FULL - - config GENERIC_LOCKBREAK - bool -@@ -138,6 +139,7 @@ - select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST - select GENERIC_STRNCPY_FROM_USER - select GENERIC_STRNLEN_USER -+ select HAVE_PREEMPT_LAZY - select HAVE_MOD_ARCH_SPECIFIC - select MODULES_USE_ELF_RELA - select CLONE_BACKWARDS -@@ -312,7 +314,7 @@ - - config HIGHMEM - bool "High memory support" -- depends on PPC32 -+ depends on PPC32 && !PREEMPT_RT_FULL - - source kernel/Kconfig.hz - source kernel/Kconfig.preempt -diff -Nur linux-4.1.20.orig/arch/powerpc/include/asm/kvm_host.h linux-4.1.20/arch/powerpc/include/asm/kvm_host.h ---- linux-4.1.20.orig/arch/powerpc/include/asm/kvm_host.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/include/asm/kvm_host.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/include/asm/kvm_host.h linux-4.1.26/arch/powerpc/include/asm/kvm_host.h +--- linux-4.1.26.orig/arch/powerpc/include/asm/kvm_host.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/include/asm/kvm_host.h 2016-06-19 15:30:58.599293956 +0200 @@ -280,7 +280,7 @@ u8 in_guest; struct list_head runnable_threads; @@ -2412,9 +2098,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/include/asm/kvm_host.h linux-4.1.20/arc struct kvmppc_vcore *vcore; int ret; int trap; -diff -Nur linux-4.1.20.orig/arch/powerpc/include/asm/thread_info.h linux-4.1.20/arch/powerpc/include/asm/thread_info.h ---- linux-4.1.20.orig/arch/powerpc/include/asm/thread_info.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/include/asm/thread_info.h 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/include/asm/thread_info.h linux-4.1.26/arch/powerpc/include/asm/thread_info.h +--- linux-4.1.26.orig/arch/powerpc/include/asm/thread_info.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/include/asm/thread_info.h 2016-06-19 15:30:58.603294110 +0200 @@ -42,6 +42,8 @@ int cpu; /* cpu we're on */ int preempt_count; /* 0 => preemptable, @@ -2461,9 +2147,42 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/include/asm/thread_info.h linux-4.1.20/ /* Bits in local_flags */ /* Don't move TLF_NAPPING without adjusting the code in entry_32.S */ -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/asm-offsets.c linux-4.1.20/arch/powerpc/kernel/asm-offsets.c ---- linux-4.1.20.orig/arch/powerpc/kernel/asm-offsets.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/asm-offsets.c 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/Kconfig linux-4.1.26/arch/powerpc/Kconfig +--- linux-4.1.26.orig/arch/powerpc/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/Kconfig 2016-06-19 15:30:58.599293956 +0200 +@@ -60,10 +60,11 @@ + + config RWSEM_GENERIC_SPINLOCK + bool ++ default y if PREEMPT_RT_FULL + + config RWSEM_XCHGADD_ALGORITHM + bool +- default y ++ default y if !PREEMPT_RT_FULL + + config GENERIC_LOCKBREAK + bool +@@ -138,6 +139,7 @@ + select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST + select GENERIC_STRNCPY_FROM_USER + select GENERIC_STRNLEN_USER ++ select HAVE_PREEMPT_LAZY + select HAVE_MOD_ARCH_SPECIFIC + select MODULES_USE_ELF_RELA + select CLONE_BACKWARDS +@@ -312,7 +314,7 @@ + + config HIGHMEM + bool "High memory support" +- depends on PPC32 ++ depends on PPC32 && !PREEMPT_RT_FULL + + source kernel/Kconfig.hz + source kernel/Kconfig.preempt +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/asm-offsets.c linux-4.1.26/arch/powerpc/kernel/asm-offsets.c +--- linux-4.1.26.orig/arch/powerpc/kernel/asm-offsets.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/asm-offsets.c 2016-06-19 15:30:58.603294110 +0200 @@ -160,6 +160,7 @@ DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); DEFINE(TI_LOCAL_FLAGS, offsetof(struct thread_info, local_flags)); @@ -2472,9 +2191,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/asm-offsets.c linux-4.1.20/arch/ DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/entry_32.S linux-4.1.20/arch/powerpc/kernel/entry_32.S ---- linux-4.1.20.orig/arch/powerpc/kernel/entry_32.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/entry_32.S 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/entry_32.S linux-4.1.26/arch/powerpc/kernel/entry_32.S +--- linux-4.1.26.orig/arch/powerpc/kernel/entry_32.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/entry_32.S 2016-06-19 15:30:58.603294110 +0200 @@ -813,7 +813,14 @@ cmpwi 0,r0,0 /* if non-zero, just restore regs and return */ bne restore @@ -2523,9 +2242,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/entry_32.S linux-4.1.20/arch/pow bne- do_resched andi. r0,r9,_TIF_USER_WORK_MASK beq restore_user -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/entry_64.S linux-4.1.20/arch/powerpc/kernel/entry_64.S ---- linux-4.1.20.orig/arch/powerpc/kernel/entry_64.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/entry_64.S 2016-03-21 20:18:29.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/entry_64.S linux-4.1.26/arch/powerpc/kernel/entry_64.S +--- linux-4.1.26.orig/arch/powerpc/kernel/entry_64.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/entry_64.S 2016-06-19 15:30:58.603294110 +0200 @@ -636,7 +636,7 @@ #else beq restore @@ -2564,9 +2283,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/entry_64.S linux-4.1.20/arch/pow bne 1b /* -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/irq.c linux-4.1.20/arch/powerpc/kernel/irq.c ---- linux-4.1.20.orig/arch/powerpc/kernel/irq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/irq.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/irq.c linux-4.1.26/arch/powerpc/kernel/irq.c +--- linux-4.1.26.orig/arch/powerpc/kernel/irq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/irq.c 2016-06-19 15:30:58.603294110 +0200 @@ -614,6 +614,7 @@ } } @@ -2583,9 +2302,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/irq.c linux-4.1.20/arch/powerpc/ irq_hw_number_t virq_to_hw(unsigned int virq) { -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/misc_32.S linux-4.1.20/arch/powerpc/kernel/misc_32.S ---- linux-4.1.20.orig/arch/powerpc/kernel/misc_32.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/misc_32.S 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/misc_32.S linux-4.1.26/arch/powerpc/kernel/misc_32.S +--- linux-4.1.26.orig/arch/powerpc/kernel/misc_32.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/misc_32.S 2016-06-19 15:30:58.603294110 +0200 @@ -40,6 +40,7 @@ * We store the saved ksp_limit in the unused part * of the STACK_FRAME_OVERHEAD @@ -2602,9 +2321,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/misc_32.S linux-4.1.20/arch/powe /* * void call_do_irq(struct pt_regs *regs, struct thread_info *irqtp); -diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/misc_64.S linux-4.1.20/arch/powerpc/kernel/misc_64.S ---- linux-4.1.20.orig/arch/powerpc/kernel/misc_64.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kernel/misc_64.S 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kernel/misc_64.S linux-4.1.26/arch/powerpc/kernel/misc_64.S +--- linux-4.1.26.orig/arch/powerpc/kernel/misc_64.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kernel/misc_64.S 2016-06-19 15:30:58.603294110 +0200 @@ -29,6 +29,7 @@ .text @@ -2621,20 +2340,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kernel/misc_64.S linux-4.1.20/arch/powe _GLOBAL(call_do_irq) mflr r0 -diff -Nur linux-4.1.20.orig/arch/powerpc/kvm/Kconfig linux-4.1.20/arch/powerpc/kvm/Kconfig ---- linux-4.1.20.orig/arch/powerpc/kvm/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kvm/Kconfig 2016-03-21 20:18:30.000000000 +0100 -@@ -172,6 +172,7 @@ - config KVM_MPIC - bool "KVM in-kernel MPIC emulation" - depends on KVM && E500 -+ depends on !PREEMPT_RT_FULL - select HAVE_KVM_IRQCHIP - select HAVE_KVM_IRQFD - select HAVE_KVM_IRQ_ROUTING -diff -Nur linux-4.1.20.orig/arch/powerpc/kvm/book3s_hv.c linux-4.1.20/arch/powerpc/kvm/book3s_hv.c ---- linux-4.1.20.orig/arch/powerpc/kvm/book3s_hv.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/kvm/book3s_hv.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kvm/book3s_hv.c linux-4.1.26/arch/powerpc/kvm/book3s_hv.c +--- linux-4.1.26.orig/arch/powerpc/kvm/book3s_hv.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kvm/book3s_hv.c 2016-06-19 15:30:58.603294110 +0200 @@ -115,11 +115,11 @@ static void kvmppc_fast_vcpu_kick_hv(struct kvm_vcpu *vcpu) { @@ -2710,9 +2418,20 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/kvm/book3s_hv.c linux-4.1.20/arch/power } } -diff -Nur linux-4.1.20.orig/arch/powerpc/mm/fault.c linux-4.1.20/arch/powerpc/mm/fault.c ---- linux-4.1.20.orig/arch/powerpc/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/kvm/Kconfig linux-4.1.26/arch/powerpc/kvm/Kconfig +--- linux-4.1.26.orig/arch/powerpc/kvm/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/kvm/Kconfig 2016-06-19 15:30:58.603294110 +0200 +@@ -172,6 +172,7 @@ + config KVM_MPIC + bool "KVM in-kernel MPIC emulation" + depends on KVM && E500 ++ depends on !PREEMPT_RT_FULL + select HAVE_KVM_IRQCHIP + select HAVE_KVM_IRQFD + select HAVE_KVM_IRQ_ROUTING +diff -Nur linux-4.1.26.orig/arch/powerpc/mm/fault.c linux-4.1.26/arch/powerpc/mm/fault.c +--- linux-4.1.26.orig/arch/powerpc/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/mm/fault.c 2016-06-19 15:30:58.603294110 +0200 @@ -33,13 +33,13 @@ #include <linux/ratelimit.h> #include <linux/context_tracking.h> @@ -2748,9 +2467,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/mm/fault.c linux-4.1.20/arch/powerpc/mm printk(KERN_EMERG "NIP = %lx MSR = %lx\n", regs->nip, regs->msr); die("Weird page fault", regs, SIGSEGV); -diff -Nur linux-4.1.20.orig/arch/powerpc/mm/highmem.c linux-4.1.20/arch/powerpc/mm/highmem.c ---- linux-4.1.20.orig/arch/powerpc/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/mm/highmem.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/mm/highmem.c linux-4.1.26/arch/powerpc/mm/highmem.c +--- linux-4.1.26.orig/arch/powerpc/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/mm/highmem.c 2016-06-19 15:30:58.603294110 +0200 @@ -34,7 +34,7 @@ unsigned long vaddr; int idx, type; @@ -2775,9 +2494,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/mm/highmem.c linux-4.1.20/arch/powerpc/ + preempt_enable(); } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/powerpc/platforms/ps3/device-init.c linux-4.1.20/arch/powerpc/platforms/ps3/device-init.c ---- linux-4.1.20.orig/arch/powerpc/platforms/ps3/device-init.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/powerpc/platforms/ps3/device-init.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/powerpc/platforms/ps3/device-init.c linux-4.1.26/arch/powerpc/platforms/ps3/device-init.c +--- linux-4.1.26.orig/arch/powerpc/platforms/ps3/device-init.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/powerpc/platforms/ps3/device-init.c 2016-06-19 15:30:58.603294110 +0200 @@ -752,7 +752,7 @@ } pr_debug("%s:%u: notification %s issued\n", __func__, __LINE__, op); @@ -2787,9 +2506,9 @@ diff -Nur linux-4.1.20.orig/arch/powerpc/platforms/ps3/device-init.c linux-4.1.2 dev->done.done || kthread_should_stop()); if (kthread_should_stop()) res = -EINTR; -diff -Nur linux-4.1.20.orig/arch/s390/include/asm/kvm_host.h linux-4.1.20/arch/s390/include/asm/kvm_host.h ---- linux-4.1.20.orig/arch/s390/include/asm/kvm_host.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/s390/include/asm/kvm_host.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/s390/include/asm/kvm_host.h linux-4.1.26/arch/s390/include/asm/kvm_host.h +--- linux-4.1.26.orig/arch/s390/include/asm/kvm_host.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/s390/include/asm/kvm_host.h 2016-06-19 15:30:58.603294110 +0200 @@ -419,7 +419,7 @@ struct kvm_s390_local_interrupt { spinlock_t lock; @@ -2799,9 +2518,9 @@ diff -Nur linux-4.1.20.orig/arch/s390/include/asm/kvm_host.h linux-4.1.20/arch/s atomic_t *cpuflags; DECLARE_BITMAP(sigp_emerg_pending, KVM_MAX_VCPUS); struct kvm_s390_irq_payload irq; -diff -Nur linux-4.1.20.orig/arch/s390/include/asm/uaccess.h linux-4.1.20/arch/s390/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/s390/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/s390/include/asm/uaccess.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/s390/include/asm/uaccess.h linux-4.1.26/arch/s390/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/s390/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/s390/include/asm/uaccess.h 2016-06-19 15:30:58.603294110 +0200 @@ -98,7 +98,8 @@ * @from: Source address, in user space. * @n: Number of bytes to copy. @@ -2852,9 +2571,9 @@ diff -Nur linux-4.1.20.orig/arch/s390/include/asm/uaccess.h linux-4.1.20/arch/s3 * * Get the size of a NUL-terminated string in user space. * -diff -Nur linux-4.1.20.orig/arch/s390/kvm/interrupt.c linux-4.1.20/arch/s390/kvm/interrupt.c ---- linux-4.1.20.orig/arch/s390/kvm/interrupt.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/s390/kvm/interrupt.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/s390/kvm/interrupt.c linux-4.1.26/arch/s390/kvm/interrupt.c +--- linux-4.1.26.orig/arch/s390/kvm/interrupt.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/s390/kvm/interrupt.c 2016-06-19 15:30:58.607294264 +0200 @@ -875,13 +875,13 @@ void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu) @@ -2889,9 +2608,9 @@ diff -Nur linux-4.1.20.orig/arch/s390/kvm/interrupt.c linux-4.1.20/arch/s390/kvm spin_unlock(&li->lock); return rc; } -diff -Nur linux-4.1.20.orig/arch/s390/mm/fault.c linux-4.1.20/arch/s390/mm/fault.c ---- linux-4.1.20.orig/arch/s390/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/s390/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/s390/mm/fault.c linux-4.1.26/arch/s390/mm/fault.c +--- linux-4.1.26.orig/arch/s390/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/s390/mm/fault.c 2016-06-19 15:30:58.607294264 +0200 @@ -399,7 +399,7 @@ * user context. */ @@ -2901,9 +2620,9 @@ diff -Nur linux-4.1.20.orig/arch/s390/mm/fault.c linux-4.1.20/arch/s390/mm/fault goto out; address = trans_exc_code & __FAIL_ADDR_MASK; -diff -Nur linux-4.1.20.orig/arch/score/include/asm/uaccess.h linux-4.1.20/arch/score/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/score/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/score/include/asm/uaccess.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/score/include/asm/uaccess.h linux-4.1.26/arch/score/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/score/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/score/include/asm/uaccess.h 2016-06-19 15:30:58.607294264 +0200 @@ -36,7 +36,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -2954,9 +2673,9 @@ diff -Nur linux-4.1.20.orig/arch/score/include/asm/uaccess.h linux-4.1.20/arch/s * * This macro copies a single simple variable from user space to kernel * space. It supports simple types like char and int, but not larger -diff -Nur linux-4.1.20.orig/arch/score/mm/fault.c linux-4.1.20/arch/score/mm/fault.c ---- linux-4.1.20.orig/arch/score/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/score/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/score/mm/fault.c linux-4.1.26/arch/score/mm/fault.c +--- linux-4.1.26.orig/arch/score/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/score/mm/fault.c 2016-06-19 15:30:58.607294264 +0200 @@ -34,6 +34,7 @@ #include <linux/string.h> #include <linux/types.h> @@ -2974,9 +2693,9 @@ diff -Nur linux-4.1.20.orig/arch/score/mm/fault.c linux-4.1.20/arch/score/mm/fau goto bad_area_nosemaphore; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/sh/kernel/irq.c linux-4.1.20/arch/sh/kernel/irq.c ---- linux-4.1.20.orig/arch/sh/kernel/irq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sh/kernel/irq.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sh/kernel/irq.c linux-4.1.26/arch/sh/kernel/irq.c +--- linux-4.1.26.orig/arch/sh/kernel/irq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sh/kernel/irq.c 2016-06-19 15:30:58.607294264 +0200 @@ -147,6 +147,7 @@ hardirq_ctx[cpu] = NULL; } @@ -2993,9 +2712,9 @@ diff -Nur linux-4.1.20.orig/arch/sh/kernel/irq.c linux-4.1.20/arch/sh/kernel/irq #else static inline void handle_one_irq(unsigned int irq) { -diff -Nur linux-4.1.20.orig/arch/sh/mm/fault.c linux-4.1.20/arch/sh/mm/fault.c ---- linux-4.1.20.orig/arch/sh/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sh/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sh/mm/fault.c linux-4.1.26/arch/sh/mm/fault.c +--- linux-4.1.26.orig/arch/sh/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sh/mm/fault.c 2016-06-19 15:30:58.607294264 +0200 @@ -17,6 +17,7 @@ #include <linux/kprobes.h> #include <linux/perf_event.h> @@ -3016,9 +2735,9 @@ diff -Nur linux-4.1.20.orig/arch/sh/mm/fault.c linux-4.1.20/arch/sh/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -diff -Nur linux-4.1.20.orig/arch/sparc/Kconfig linux-4.1.20/arch/sparc/Kconfig ---- linux-4.1.20.orig/arch/sparc/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/Kconfig 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/Kconfig linux-4.1.26/arch/sparc/Kconfig +--- linux-4.1.26.orig/arch/sparc/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/Kconfig 2016-06-19 15:30:58.607294264 +0200 @@ -189,12 +189,10 @@ source kernel/Kconfig.hz @@ -3034,9 +2753,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/Kconfig linux-4.1.20/arch/sparc/Kconfig config GENERIC_HWEIGHT bool -diff -Nur linux-4.1.20.orig/arch/sparc/kernel/irq_64.c linux-4.1.20/arch/sparc/kernel/irq_64.c ---- linux-4.1.20.orig/arch/sparc/kernel/irq_64.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/kernel/irq_64.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/kernel/irq_64.c linux-4.1.26/arch/sparc/kernel/irq_64.c +--- linux-4.1.26.orig/arch/sparc/kernel/irq_64.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/kernel/irq_64.c 2016-06-19 15:30:58.607294264 +0200 @@ -849,6 +849,7 @@ set_irq_regs(old_regs); } @@ -3053,9 +2772,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/kernel/irq_64.c linux-4.1.20/arch/sparc/k #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) -diff -Nur linux-4.1.20.orig/arch/sparc/mm/fault_32.c linux-4.1.20/arch/sparc/mm/fault_32.c ---- linux-4.1.20.orig/arch/sparc/mm/fault_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/mm/fault_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/mm/fault_32.c linux-4.1.26/arch/sparc/mm/fault_32.c +--- linux-4.1.26.orig/arch/sparc/mm/fault_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/mm/fault_32.c 2016-06-19 15:30:58.607294264 +0200 @@ -21,6 +21,7 @@ #include <linux/perf_event.h> #include <linux/interrupt.h> @@ -3081,9 +2800,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/mm/fault_32.c linux-4.1.20/arch/sparc/mm/ goto no_context; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -diff -Nur linux-4.1.20.orig/arch/sparc/mm/fault_64.c linux-4.1.20/arch/sparc/mm/fault_64.c ---- linux-4.1.20.orig/arch/sparc/mm/fault_64.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/mm/fault_64.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/mm/fault_64.c linux-4.1.26/arch/sparc/mm/fault_64.c +--- linux-4.1.26.orig/arch/sparc/mm/fault_64.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/mm/fault_64.c 2016-06-19 15:30:58.607294264 +0200 @@ -22,12 +22,12 @@ #include <linux/kdebug.h> #include <linux/percpu.h> @@ -3107,9 +2826,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/mm/fault_64.c linux-4.1.20/arch/sparc/mm/ goto intr_or_no_mm; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -diff -Nur linux-4.1.20.orig/arch/sparc/mm/highmem.c linux-4.1.20/arch/sparc/mm/highmem.c ---- linux-4.1.20.orig/arch/sparc/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/mm/highmem.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/mm/highmem.c linux-4.1.26/arch/sparc/mm/highmem.c +--- linux-4.1.26.orig/arch/sparc/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/mm/highmem.c 2016-06-19 15:30:58.607294264 +0200 @@ -53,7 +53,7 @@ unsigned long vaddr; long idx, type; @@ -3134,9 +2853,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/mm/highmem.c linux-4.1.20/arch/sparc/mm/h + preempt_enable(); } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/sparc/mm/init_64.c linux-4.1.20/arch/sparc/mm/init_64.c ---- linux-4.1.20.orig/arch/sparc/mm/init_64.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/sparc/mm/init_64.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/sparc/mm/init_64.c linux-4.1.26/arch/sparc/mm/init_64.c +--- linux-4.1.26.orig/arch/sparc/mm/init_64.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/sparc/mm/init_64.c 2016-06-19 15:30:58.607294264 +0200 @@ -2738,7 +2738,7 @@ struct mm_struct *mm = current->mm; struct tsb_config *tp; @@ -3146,9 +2865,9 @@ diff -Nur linux-4.1.20.orig/arch/sparc/mm/init_64.c linux-4.1.20/arch/sparc/mm/i const struct exception_table_entry *entry; entry = search_exception_tables(regs->tpc); -diff -Nur linux-4.1.20.orig/arch/tile/include/asm/uaccess.h linux-4.1.20/arch/tile/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/tile/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/tile/include/asm/uaccess.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/tile/include/asm/uaccess.h linux-4.1.26/arch/tile/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/tile/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/tile/include/asm/uaccess.h 2016-06-19 15:30:58.611294419 +0200 @@ -78,7 +78,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -3209,9 +2928,9 @@ diff -Nur linux-4.1.20.orig/arch/tile/include/asm/uaccess.h linux-4.1.20/arch/ti * * Copy data from user space to user space. Caller must check * the specified blocks with access_ok() before calling this function. -diff -Nur linux-4.1.20.orig/arch/tile/mm/fault.c linux-4.1.20/arch/tile/mm/fault.c ---- linux-4.1.20.orig/arch/tile/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/tile/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/tile/mm/fault.c linux-4.1.26/arch/tile/mm/fault.c +--- linux-4.1.26.orig/arch/tile/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/tile/mm/fault.c 2016-06-19 15:30:58.611294419 +0200 @@ -354,9 +354,9 @@ /* @@ -3224,9 +2943,9 @@ diff -Nur linux-4.1.20.orig/arch/tile/mm/fault.c linux-4.1.20/arch/tile/mm/fault vma = NULL; /* happy compiler */ goto bad_area_nosemaphore; } -diff -Nur linux-4.1.20.orig/arch/tile/mm/highmem.c linux-4.1.20/arch/tile/mm/highmem.c ---- linux-4.1.20.orig/arch/tile/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/tile/mm/highmem.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/tile/mm/highmem.c linux-4.1.26/arch/tile/mm/highmem.c +--- linux-4.1.26.orig/arch/tile/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/tile/mm/highmem.c 2016-06-19 15:30:58.611294419 +0200 @@ -201,7 +201,7 @@ int idx, type; pte_t *pte; @@ -3244,9 +2963,9 @@ diff -Nur linux-4.1.20.orig/arch/tile/mm/highmem.c linux-4.1.20/arch/tile/mm/hig } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/um/kernel/trap.c linux-4.1.20/arch/um/kernel/trap.c ---- linux-4.1.20.orig/arch/um/kernel/trap.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/um/kernel/trap.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/um/kernel/trap.c linux-4.1.26/arch/um/kernel/trap.c +--- linux-4.1.26.orig/arch/um/kernel/trap.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/um/kernel/trap.c 2016-06-19 15:30:58.611294419 +0200 @@ -35,10 +35,10 @@ *code_out = SEGV_MAPERR; @@ -3260,9 +2979,9 @@ diff -Nur linux-4.1.20.orig/arch/um/kernel/trap.c linux-4.1.20/arch/um/kernel/tr goto out_nosemaphore; if (is_user) -diff -Nur linux-4.1.20.orig/arch/unicore32/mm/fault.c linux-4.1.20/arch/unicore32/mm/fault.c ---- linux-4.1.20.orig/arch/unicore32/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/unicore32/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/unicore32/mm/fault.c linux-4.1.26/arch/unicore32/mm/fault.c +--- linux-4.1.26.orig/arch/unicore32/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/unicore32/mm/fault.c 2016-06-19 15:30:58.611294419 +0200 @@ -218,7 +218,7 @@ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -3272,42 +2991,9 @@ diff -Nur linux-4.1.20.orig/arch/unicore32/mm/fault.c linux-4.1.20/arch/unicore3 goto no_context; if (user_mode(regs)) -diff -Nur linux-4.1.20.orig/arch/x86/Kconfig linux-4.1.20/arch/x86/Kconfig ---- linux-4.1.20.orig/arch/x86/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/Kconfig 2016-03-21 20:18:30.000000000 +0100 -@@ -22,6 +22,7 @@ - ### Arch settings - config X86 - def_bool y -+ select HAVE_PREEMPT_LAZY - select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI - select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI - select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS -@@ -203,8 +204,11 @@ - def_bool y - depends on ISA_DMA_API - -+config RWSEM_GENERIC_SPINLOCK -+ def_bool PREEMPT_RT_FULL -+ - config RWSEM_XCHGADD_ALGORITHM -- def_bool y -+ def_bool !RWSEM_GENERIC_SPINLOCK && !PREEMPT_RT_FULL - - config GENERIC_CALIBRATE_DELAY - def_bool y -@@ -838,7 +842,7 @@ - config MAXSMP - bool "Enable Maximum number of SMP Processors and NUMA Nodes" - depends on X86_64 && SMP && DEBUG_KERNEL -- select CPUMASK_OFFSTACK -+ select CPUMASK_OFFSTACK if !PREEMPT_RT_FULL - ---help--- - Enable maximum number of CPUS and NUMA Nodes for this architecture. - If unsure, say N. -diff -Nur linux-4.1.20.orig/arch/x86/crypto/aesni-intel_glue.c linux-4.1.20/arch/x86/crypto/aesni-intel_glue.c ---- linux-4.1.20.orig/arch/x86/crypto/aesni-intel_glue.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/crypto/aesni-intel_glue.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/crypto/aesni-intel_glue.c linux-4.1.26/arch/x86/crypto/aesni-intel_glue.c +--- linux-4.1.26.orig/arch/x86/crypto/aesni-intel_glue.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/crypto/aesni-intel_glue.c 2016-06-19 15:30:58.611294419 +0200 @@ -382,14 +382,14 @@ err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -3400,9 +3086,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/crypto/aesni-intel_glue.c linux-4.1.20/arch return err; } -diff -Nur linux-4.1.20.orig/arch/x86/crypto/cast5_avx_glue.c linux-4.1.20/arch/x86/crypto/cast5_avx_glue.c ---- linux-4.1.20.orig/arch/x86/crypto/cast5_avx_glue.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/crypto/cast5_avx_glue.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/crypto/cast5_avx_glue.c linux-4.1.26/arch/x86/crypto/cast5_avx_glue.c +--- linux-4.1.26.orig/arch/x86/crypto/cast5_avx_glue.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/crypto/cast5_avx_glue.c 2016-06-19 15:30:58.611294419 +0200 @@ -60,7 +60,7 @@ static int ecb_crypt(struct blkcipher_desc *desc, struct blkcipher_walk *walk, bool enc) @@ -3482,9 +3168,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/crypto/cast5_avx_glue.c linux-4.1.20/arch/x if (walk.nbytes) { ctr_crypt_final(desc, &walk); err = blkcipher_walk_done(desc, &walk, 0); -diff -Nur linux-4.1.20.orig/arch/x86/crypto/glue_helper.c linux-4.1.20/arch/x86/crypto/glue_helper.c ---- linux-4.1.20.orig/arch/x86/crypto/glue_helper.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/crypto/glue_helper.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/crypto/glue_helper.c linux-4.1.26/arch/x86/crypto/glue_helper.c +--- linux-4.1.26.orig/arch/x86/crypto/glue_helper.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/crypto/glue_helper.c 2016-06-19 15:30:58.611294419 +0200 @@ -39,7 +39,7 @@ void *ctx = crypto_blkcipher_ctx(desc->tfm); const unsigned int bsize = 128 / 8; @@ -3600,9 +3286,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/crypto/glue_helper.c linux-4.1.20/arch/x86/ return err; } EXPORT_SYMBOL_GPL(glue_xts_crypt_128bit); -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/preempt.h linux-4.1.20/arch/x86/include/asm/preempt.h ---- linux-4.1.20.orig/arch/x86/include/asm/preempt.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/preempt.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/preempt.h linux-4.1.26/arch/x86/include/asm/preempt.h +--- linux-4.1.26.orig/arch/x86/include/asm/preempt.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/preempt.h 2016-06-19 15:30:58.611294419 +0200 @@ -82,17 +82,33 @@ * a decrement which hits zero means we have no preempt_count and should * reschedule. @@ -3638,9 +3324,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/preempt.h linux-4.1.20/arch/x86 } #ifdef CONFIG_PREEMPT -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/signal.h linux-4.1.20/arch/x86/include/asm/signal.h ---- linux-4.1.20.orig/arch/x86/include/asm/signal.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/signal.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/signal.h linux-4.1.26/arch/x86/include/asm/signal.h +--- linux-4.1.26.orig/arch/x86/include/asm/signal.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/signal.h 2016-06-19 15:30:58.611294419 +0200 @@ -23,6 +23,19 @@ unsigned long sig[_NSIG_WORDS]; } sigset_t; @@ -3661,9 +3347,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/signal.h linux-4.1.20/arch/x86/ #ifndef CONFIG_COMPAT typedef sigset_t compat_sigset_t; #endif -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/stackprotector.h linux-4.1.20/arch/x86/include/asm/stackprotector.h ---- linux-4.1.20.orig/arch/x86/include/asm/stackprotector.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/stackprotector.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/stackprotector.h linux-4.1.26/arch/x86/include/asm/stackprotector.h +--- linux-4.1.26.orig/arch/x86/include/asm/stackprotector.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/stackprotector.h 2016-06-19 15:30:58.611294419 +0200 @@ -57,7 +57,7 @@ */ static __always_inline void boot_init_stack_canary(void) @@ -3690,9 +3376,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/stackprotector.h linux-4.1.20/a tsc = __native_read_tsc(); canary += tsc + (tsc << 32UL); -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/thread_info.h linux-4.1.20/arch/x86/include/asm/thread_info.h ---- linux-4.1.20.orig/arch/x86/include/asm/thread_info.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/thread_info.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/thread_info.h linux-4.1.26/arch/x86/include/asm/thread_info.h +--- linux-4.1.26.orig/arch/x86/include/asm/thread_info.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/thread_info.h 2016-06-19 15:30:58.611294419 +0200 @@ -55,6 +55,8 @@ __u32 status; /* thread synchronous flags */ __u32 cpu; /* current CPU */ @@ -3727,9 +3413,32 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/thread_info.h linux-4.1.20/arch #define STACK_WARN (THREAD_SIZE/8) /* -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uaccess.h linux-4.1.20/arch/x86/include/asm/uaccess.h ---- linux-4.1.20.orig/arch/x86/include/asm/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/uaccess.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/uaccess_32.h linux-4.1.26/arch/x86/include/asm/uaccess_32.h +--- linux-4.1.26.orig/arch/x86/include/asm/uaccess_32.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/uaccess_32.h 2016-06-19 15:30:58.615294573 +0200 +@@ -70,7 +70,8 @@ + * @from: Source address, in kernel space. + * @n: Number of bytes to copy. + * +- * Context: User context only. This function may sleep. ++ * Context: User context only. This function may sleep if pagefaults are ++ * enabled. + * + * Copy data from kernel space to user space. Caller must check + * the specified block with access_ok() before calling this function. +@@ -117,7 +118,8 @@ + * @from: Source address, in user space. + * @n: Number of bytes to copy. + * +- * Context: User context only. This function may sleep. ++ * Context: User context only. This function may sleep if pagefaults are ++ * enabled. + * + * Copy data from user space to kernel space. Caller must check + * the specified block with access_ok() before calling this function. +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/uaccess.h linux-4.1.26/arch/x86/include/asm/uaccess.h +--- linux-4.1.26.orig/arch/x86/include/asm/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/uaccess.h 2016-06-19 15:30:58.611294419 +0200 @@ -74,7 +74,8 @@ * @addr: User space pointer to start of block to check * @size: Size of block to check @@ -3780,32 +3489,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uaccess.h linux-4.1.20/arch/x86 * * This macro copies a single simple value from kernel space to user * space. It supports simple types like char and int, but not larger -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uaccess_32.h linux-4.1.20/arch/x86/include/asm/uaccess_32.h ---- linux-4.1.20.orig/arch/x86/include/asm/uaccess_32.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/uaccess_32.h 2016-03-21 20:18:30.000000000 +0100 -@@ -70,7 +70,8 @@ - * @from: Source address, in kernel space. - * @n: Number of bytes to copy. - * -- * Context: User context only. This function may sleep. -+ * Context: User context only. This function may sleep if pagefaults are -+ * enabled. - * - * Copy data from kernel space to user space. Caller must check - * the specified block with access_ok() before calling this function. -@@ -117,7 +118,8 @@ - * @from: Source address, in user space. - * @n: Number of bytes to copy. - * -- * Context: User context only. This function may sleep. -+ * Context: User context only. This function may sleep if pagefaults are -+ * enabled. - * - * Copy data from user space to kernel space. Caller must check - * the specified block with access_ok() before calling this function. -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uv/uv_bau.h linux-4.1.20/arch/x86/include/asm/uv/uv_bau.h ---- linux-4.1.20.orig/arch/x86/include/asm/uv/uv_bau.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/uv/uv_bau.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/uv/uv_bau.h linux-4.1.26/arch/x86/include/asm/uv/uv_bau.h +--- linux-4.1.26.orig/arch/x86/include/asm/uv/uv_bau.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/uv/uv_bau.h 2016-06-19 15:30:58.615294573 +0200 @@ -615,9 +615,9 @@ cycles_t send_message; cycles_t period_end; @@ -3839,9 +3525,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uv/uv_bau.h linux-4.1.20/arch/x return 1; } -diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uv/uv_hub.h linux-4.1.20/arch/x86/include/asm/uv/uv_hub.h ---- linux-4.1.20.orig/arch/x86/include/asm/uv/uv_hub.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/include/asm/uv/uv_hub.h 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/include/asm/uv/uv_hub.h linux-4.1.26/arch/x86/include/asm/uv/uv_hub.h +--- linux-4.1.26.orig/arch/x86/include/asm/uv/uv_hub.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/include/asm/uv/uv_hub.h 2016-06-19 15:30:58.615294573 +0200 @@ -492,7 +492,7 @@ unsigned short nr_online_cpus; unsigned short pnode; @@ -3851,9 +3537,42 @@ diff -Nur linux-4.1.20.orig/arch/x86/include/asm/uv/uv_hub.h linux-4.1.20/arch/x unsigned long nmi_count; /* obsolete, see uv_hub_nmi */ }; extern struct uv_blade_info *uv_blade_info; -diff -Nur linux-4.1.20.orig/arch/x86/kernel/apic/io_apic.c linux-4.1.20/arch/x86/kernel/apic/io_apic.c ---- linux-4.1.20.orig/arch/x86/kernel/apic/io_apic.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/apic/io_apic.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/Kconfig linux-4.1.26/arch/x86/Kconfig +--- linux-4.1.26.orig/arch/x86/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/Kconfig 2016-06-19 15:30:58.611294419 +0200 +@@ -22,6 +22,7 @@ + ### Arch settings + config X86 + def_bool y ++ select HAVE_PREEMPT_LAZY + select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI + select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI + select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS +@@ -203,8 +204,11 @@ + def_bool y + depends on ISA_DMA_API + ++config RWSEM_GENERIC_SPINLOCK ++ def_bool PREEMPT_RT_FULL ++ + config RWSEM_XCHGADD_ALGORITHM +- def_bool y ++ def_bool !RWSEM_GENERIC_SPINLOCK && !PREEMPT_RT_FULL + + config GENERIC_CALIBRATE_DELAY + def_bool y +@@ -838,7 +842,7 @@ + config MAXSMP + bool "Enable Maximum number of SMP Processors and NUMA Nodes" + depends on X86_64 && SMP && DEBUG_KERNEL +- select CPUMASK_OFFSTACK ++ select CPUMASK_OFFSTACK if !PREEMPT_RT_FULL + ---help--- + Enable maximum number of CPUS and NUMA Nodes for this architecture. + If unsure, say N. +diff -Nur linux-4.1.26.orig/arch/x86/kernel/apic/io_apic.c linux-4.1.26/arch/x86/kernel/apic/io_apic.c +--- linux-4.1.26.orig/arch/x86/kernel/apic/io_apic.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/apic/io_apic.c 2016-06-19 15:30:58.615294573 +0200 @@ -1891,7 +1891,8 @@ static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg) { @@ -3864,9 +3583,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/apic/io_apic.c linux-4.1.20/arch/x86 mask_ioapic(cfg); return true; } -diff -Nur linux-4.1.20.orig/arch/x86/kernel/apic/x2apic_uv_x.c linux-4.1.20/arch/x86/kernel/apic/x2apic_uv_x.c ---- linux-4.1.20.orig/arch/x86/kernel/apic/x2apic_uv_x.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/apic/x2apic_uv_x.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/apic/x2apic_uv_x.c linux-4.1.26/arch/x86/kernel/apic/x2apic_uv_x.c +--- linux-4.1.26.orig/arch/x86/kernel/apic/x2apic_uv_x.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/apic/x2apic_uv_x.c 2016-06-19 15:30:58.615294573 +0200 @@ -949,7 +949,7 @@ uv_blade_info[blade].pnode = pnode; uv_blade_info[blade].nr_possible_cpus = 0; @@ -3876,9 +3595,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/apic/x2apic_uv_x.c linux-4.1.20/arch min_pnode = min(pnode, min_pnode); max_pnode = max(pnode, max_pnode); blade++; -diff -Nur linux-4.1.20.orig/arch/x86/kernel/asm-offsets.c linux-4.1.20/arch/x86/kernel/asm-offsets.c ---- linux-4.1.20.orig/arch/x86/kernel/asm-offsets.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/asm-offsets.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/asm-offsets.c linux-4.1.26/arch/x86/kernel/asm-offsets.c +--- linux-4.1.26.orig/arch/x86/kernel/asm-offsets.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/asm-offsets.c 2016-06-19 15:30:58.615294573 +0200 @@ -32,6 +32,7 @@ OFFSET(TI_flags, thread_info, flags); OFFSET(TI_status, thread_info, status); @@ -3893,9 +3612,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/asm-offsets.c linux-4.1.20/arch/x86/ DEFINE(PTREGS_SIZE, sizeof(struct pt_regs)); + DEFINE(_PREEMPT_ENABLED, PREEMPT_ENABLED); } -diff -Nur linux-4.1.20.orig/arch/x86/kernel/cpu/mcheck/mce.c linux-4.1.20/arch/x86/kernel/cpu/mcheck/mce.c ---- linux-4.1.20.orig/arch/x86/kernel/cpu/mcheck/mce.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/cpu/mcheck/mce.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/cpu/mcheck/mce.c linux-4.1.26/arch/x86/kernel/cpu/mcheck/mce.c +--- linux-4.1.26.orig/arch/x86/kernel/cpu/mcheck/mce.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/cpu/mcheck/mce.c 2016-06-19 15:30:58.615294573 +0200 @@ -41,6 +41,8 @@ #include <linux/debugfs.h> #include <linux/irq_work.h> @@ -4137,9 +3856,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/cpu/mcheck/mce.c linux-4.1.20/arch/x if (!zalloc_cpumask_var(&mce_device_initialized, GFP_KERNEL)) { err = -ENOMEM; goto err_out; -diff -Nur linux-4.1.20.orig/arch/x86/kernel/dumpstack_32.c linux-4.1.20/arch/x86/kernel/dumpstack_32.c ---- linux-4.1.20.orig/arch/x86/kernel/dumpstack_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/dumpstack_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/dumpstack_32.c linux-4.1.26/arch/x86/kernel/dumpstack_32.c +--- linux-4.1.26.orig/arch/x86/kernel/dumpstack_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/dumpstack_32.c 2016-06-19 15:30:58.615294573 +0200 @@ -42,7 +42,7 @@ unsigned long *stack, unsigned long bp, const struct stacktrace_ops *ops, void *data) @@ -4158,9 +3877,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/dumpstack_32.c linux-4.1.20/arch/x86 } EXPORT_SYMBOL(dump_trace); -diff -Nur linux-4.1.20.orig/arch/x86/kernel/dumpstack_64.c linux-4.1.20/arch/x86/kernel/dumpstack_64.c ---- linux-4.1.20.orig/arch/x86/kernel/dumpstack_64.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/dumpstack_64.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/dumpstack_64.c linux-4.1.26/arch/x86/kernel/dumpstack_64.c +--- linux-4.1.26.orig/arch/x86/kernel/dumpstack_64.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/dumpstack_64.c 2016-06-19 15:30:58.615294573 +0200 @@ -152,7 +152,7 @@ unsigned long *stack, unsigned long bp, const struct stacktrace_ops *ops, void *data) @@ -4197,9 +3916,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/dumpstack_64.c linux-4.1.20/arch/x86 pr_cont("\n"); show_trace_log_lvl(task, regs, sp, bp, log_lvl); -diff -Nur linux-4.1.20.orig/arch/x86/kernel/entry_32.S linux-4.1.20/arch/x86/kernel/entry_32.S ---- linux-4.1.20.orig/arch/x86/kernel/entry_32.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/entry_32.S 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/entry_32.S linux-4.1.26/arch/x86/kernel/entry_32.S +--- linux-4.1.26.orig/arch/x86/kernel/entry_32.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/entry_32.S 2016-06-19 15:30:58.615294573 +0200 @@ -359,8 +359,24 @@ ENTRY(resume_kernel) DISABLE_INTERRUPTS(CLBR_ANY) @@ -4243,9 +3962,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/entry_32.S linux-4.1.20/arch/x86/ker jnz work_resched work_notifysig: # deal with pending signals and -diff -Nur linux-4.1.20.orig/arch/x86/kernel/entry_64.S linux-4.1.20/arch/x86/kernel/entry_64.S ---- linux-4.1.20.orig/arch/x86/kernel/entry_64.S 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/entry_64.S 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/entry_64.S linux-4.1.26/arch/x86/kernel/entry_64.S +--- linux-4.1.26.orig/arch/x86/kernel/entry_64.S 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/entry_64.S 2016-06-19 15:30:58.615294573 +0200 @@ -370,8 +370,8 @@ /* First do a reschedule test. */ /* edx: work, edi: workmask */ @@ -4308,9 +4027,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/entry_64.S linux-4.1.20/arch/x86/ker #ifdef CONFIG_XEN idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0 -diff -Nur linux-4.1.20.orig/arch/x86/kernel/irq_32.c linux-4.1.20/arch/x86/kernel/irq_32.c ---- linux-4.1.20.orig/arch/x86/kernel/irq_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/irq_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/irq_32.c linux-4.1.26/arch/x86/kernel/irq_32.c +--- linux-4.1.26.orig/arch/x86/kernel/irq_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/irq_32.c 2016-06-19 15:30:58.619294727 +0200 @@ -135,6 +135,7 @@ cpu, per_cpu(hardirq_stack, cpu), per_cpu(softirq_stack, cpu)); } @@ -4327,9 +4046,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/irq_32.c linux-4.1.20/arch/x86/kerne bool handle_irq(unsigned irq, struct pt_regs *regs) { -diff -Nur linux-4.1.20.orig/arch/x86/kernel/process_32.c linux-4.1.20/arch/x86/kernel/process_32.c ---- linux-4.1.20.orig/arch/x86/kernel/process_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/process_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/process_32.c linux-4.1.26/arch/x86/kernel/process_32.c +--- linux-4.1.26.orig/arch/x86/kernel/process_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/process_32.c 2016-06-19 15:30:58.619294727 +0200 @@ -35,6 +35,7 @@ #include <linux/uaccess.h> #include <linux/io.h> @@ -4383,9 +4102,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/process_32.c linux-4.1.20/arch/x86/k /* * Leave lazy mode, flushing any hypercalls made here. * This must be done before restoring TLS segments so -diff -Nur linux-4.1.20.orig/arch/x86/kernel/signal.c linux-4.1.20/arch/x86/kernel/signal.c ---- linux-4.1.20.orig/arch/x86/kernel/signal.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kernel/signal.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kernel/signal.c linux-4.1.26/arch/x86/kernel/signal.c +--- linux-4.1.26.orig/arch/x86/kernel/signal.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kernel/signal.c 2016-06-19 15:30:58.619294727 +0200 @@ -726,6 +726,14 @@ { user_exit(); @@ -4401,9 +4120,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kernel/signal.c linux-4.1.20/arch/x86/kerne if (thread_info_flags & _TIF_UPROBE) uprobe_notify_resume(regs); -diff -Nur linux-4.1.20.orig/arch/x86/kvm/lapic.c linux-4.1.20/arch/x86/kvm/lapic.c ---- linux-4.1.20.orig/arch/x86/kvm/lapic.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kvm/lapic.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/kvm/lapic.c linux-4.1.26/arch/x86/kvm/lapic.c +--- linux-4.1.26.orig/arch/x86/kvm/lapic.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kvm/lapic.c 2016-06-19 15:30:58.619294727 +0200 @@ -1106,7 +1106,7 @@ static void apic_timer_expired(struct kvm_lapic *apic) { @@ -4504,10 +4223,10 @@ diff -Nur linux-4.1.20.orig/arch/x86/kvm/lapic.c linux-4.1.20/arch/x86/kvm/lapic } /* -diff -Nur linux-4.1.20.orig/arch/x86/kvm/x86.c linux-4.1.20/arch/x86/kvm/x86.c ---- linux-4.1.20.orig/arch/x86/kvm/x86.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/kvm/x86.c 2016-03-21 20:18:30.000000000 +0100 -@@ -5809,6 +5809,13 @@ +diff -Nur linux-4.1.26.orig/arch/x86/kvm/x86.c linux-4.1.26/arch/x86/kvm/x86.c +--- linux-4.1.26.orig/arch/x86/kvm/x86.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/kvm/x86.c 2016-06-19 15:30:58.619294727 +0200 +@@ -5810,6 +5810,13 @@ goto out; } @@ -4521,9 +4240,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/kvm/x86.c linux-4.1.20/arch/x86/kvm/x86.c r = kvm_mmu_module_init(); if (r) goto out_free_percpu; -diff -Nur linux-4.1.20.orig/arch/x86/lib/usercopy_32.c linux-4.1.20/arch/x86/lib/usercopy_32.c ---- linux-4.1.20.orig/arch/x86/lib/usercopy_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/lib/usercopy_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/lib/usercopy_32.c linux-4.1.26/arch/x86/lib/usercopy_32.c +--- linux-4.1.26.orig/arch/x86/lib/usercopy_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/lib/usercopy_32.c 2016-06-19 15:30:58.619294727 +0200 @@ -647,7 +647,8 @@ * @from: Source address, in kernel space. * @n: Number of bytes to copy. @@ -4544,9 +4263,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/lib/usercopy_32.c linux-4.1.20/arch/x86/lib * * Copy data from user space to kernel space. * -diff -Nur linux-4.1.20.orig/arch/x86/mm/fault.c linux-4.1.20/arch/x86/mm/fault.c ---- linux-4.1.20.orig/arch/x86/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/mm/fault.c linux-4.1.26/arch/x86/mm/fault.c +--- linux-4.1.26.orig/arch/x86/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/mm/fault.c 2016-06-19 15:30:58.619294727 +0200 @@ -13,6 +13,7 @@ #include <linux/hugetlb.h> /* hstate_index_to_shift */ #include <linux/prefetch.h> /* prefetchw */ @@ -4567,9 +4286,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/mm/fault.c linux-4.1.20/arch/x86/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -diff -Nur linux-4.1.20.orig/arch/x86/mm/highmem_32.c linux-4.1.20/arch/x86/mm/highmem_32.c ---- linux-4.1.20.orig/arch/x86/mm/highmem_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/mm/highmem_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/mm/highmem_32.c linux-4.1.26/arch/x86/mm/highmem_32.c +--- linux-4.1.26.orig/arch/x86/mm/highmem_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/mm/highmem_32.c 2016-06-19 15:30:58.619294727 +0200 @@ -32,10 +32,11 @@ */ void *kmap_atomic_prot(struct page *page, pgprot_t prot) @@ -4613,9 +4332,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/mm/highmem_32.c linux-4.1.20/arch/x86/mm/hi } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/arch/x86/mm/iomap_32.c linux-4.1.20/arch/x86/mm/iomap_32.c ---- linux-4.1.20.orig/arch/x86/mm/iomap_32.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/mm/iomap_32.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/mm/iomap_32.c linux-4.1.26/arch/x86/mm/iomap_32.c +--- linux-4.1.26.orig/arch/x86/mm/iomap_32.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/mm/iomap_32.c 2016-06-19 15:30:58.619294727 +0200 @@ -56,15 +56,22 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) @@ -4655,9 +4374,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/mm/iomap_32.c linux-4.1.20/arch/x86/mm/ioma + preempt_enable(); } EXPORT_SYMBOL_GPL(iounmap_atomic); -diff -Nur linux-4.1.20.orig/arch/x86/platform/uv/tlb_uv.c linux-4.1.20/arch/x86/platform/uv/tlb_uv.c ---- linux-4.1.20.orig/arch/x86/platform/uv/tlb_uv.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/platform/uv/tlb_uv.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/platform/uv/tlb_uv.c linux-4.1.26/arch/x86/platform/uv/tlb_uv.c +--- linux-4.1.26.orig/arch/x86/platform/uv/tlb_uv.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/platform/uv/tlb_uv.c 2016-06-19 15:30:58.619294727 +0200 @@ -714,9 +714,9 @@ quiesce_local_uvhub(hmaster); @@ -4744,9 +4463,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/platform/uv/tlb_uv.c linux-4.1.20/arch/x86/ } } -diff -Nur linux-4.1.20.orig/arch/x86/platform/uv/uv_time.c linux-4.1.20/arch/x86/platform/uv/uv_time.c ---- linux-4.1.20.orig/arch/x86/platform/uv/uv_time.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/x86/platform/uv/uv_time.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/x86/platform/uv/uv_time.c linux-4.1.26/arch/x86/platform/uv/uv_time.c +--- linux-4.1.26.orig/arch/x86/platform/uv/uv_time.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/x86/platform/uv/uv_time.c 2016-06-19 15:30:58.623294881 +0200 @@ -58,7 +58,7 @@ /* There is one of these allocated per node */ @@ -4827,9 +4546,9 @@ diff -Nur linux-4.1.20.orig/arch/x86/platform/uv/uv_time.c linux-4.1.20/arch/x86 } /* -diff -Nur linux-4.1.20.orig/arch/xtensa/mm/fault.c linux-4.1.20/arch/xtensa/mm/fault.c ---- linux-4.1.20.orig/arch/xtensa/mm/fault.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/xtensa/mm/fault.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/xtensa/mm/fault.c linux-4.1.26/arch/xtensa/mm/fault.c +--- linux-4.1.26.orig/arch/xtensa/mm/fault.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/xtensa/mm/fault.c 2016-06-19 15:30:58.623294881 +0200 @@ -15,10 +15,10 @@ #include <linux/mm.h> #include <linux/module.h> @@ -4851,9 +4570,9 @@ diff -Nur linux-4.1.20.orig/arch/xtensa/mm/fault.c linux-4.1.20/arch/xtensa/mm/f bad_page_fault(regs, address, SIGSEGV); return; } -diff -Nur linux-4.1.20.orig/arch/xtensa/mm/highmem.c linux-4.1.20/arch/xtensa/mm/highmem.c ---- linux-4.1.20.orig/arch/xtensa/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/arch/xtensa/mm/highmem.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/arch/xtensa/mm/highmem.c linux-4.1.26/arch/xtensa/mm/highmem.c +--- linux-4.1.26.orig/arch/xtensa/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/arch/xtensa/mm/highmem.c 2016-06-19 15:30:58.623294881 +0200 @@ -42,6 +42,7 @@ enum fixed_addresses idx; unsigned long vaddr; @@ -4870,9 +4589,9 @@ diff -Nur linux-4.1.20.orig/arch/xtensa/mm/highmem.c linux-4.1.20/arch/xtensa/mm } EXPORT_SYMBOL(__kunmap_atomic); -diff -Nur linux-4.1.20.orig/block/blk-core.c linux-4.1.20/block/blk-core.c ---- linux-4.1.20.orig/block/blk-core.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-core.c 2016-03-21 20:18:30.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-core.c linux-4.1.26/block/blk-core.c +--- linux-4.1.26.orig/block/blk-core.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-core.c 2016-06-19 15:30:58.623294881 +0200 @@ -100,6 +100,9 @@ INIT_LIST_HEAD(&rq->queuelist); @@ -4948,9 +4667,9 @@ diff -Nur linux-4.1.20.orig/block/blk-core.c linux-4.1.20/block/blk-core.c } void blk_finish_plug(struct blk_plug *plug) -diff -Nur linux-4.1.20.orig/block/blk-ioc.c linux-4.1.20/block/blk-ioc.c ---- linux-4.1.20.orig/block/blk-ioc.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-ioc.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-ioc.c linux-4.1.26/block/blk-ioc.c +--- linux-4.1.26.orig/block/blk-ioc.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-ioc.c 2016-06-19 15:30:58.623294881 +0200 @@ -7,6 +7,7 @@ #include <linux/bio.h> #include <linux/blkdev.h> @@ -4977,9 +4696,9 @@ diff -Nur linux-4.1.20.orig/block/blk-ioc.c linux-4.1.20/block/blk-ioc.c goto retry; } } -diff -Nur linux-4.1.20.orig/block/blk-iopoll.c linux-4.1.20/block/blk-iopoll.c ---- linux-4.1.20.orig/block/blk-iopoll.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-iopoll.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-iopoll.c linux-4.1.26/block/blk-iopoll.c +--- linux-4.1.26.orig/block/blk-iopoll.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-iopoll.c 2016-06-19 15:30:58.623294881 +0200 @@ -35,6 +35,7 @@ list_add_tail(&iop->list, this_cpu_ptr(&blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); @@ -5004,63 +4723,9 @@ diff -Nur linux-4.1.20.orig/block/blk-iopoll.c linux-4.1.20/block/blk-iopoll.c } return NOTIFY_OK; -diff -Nur linux-4.1.20.orig/block/blk-mq-cpu.c linux-4.1.20/block/blk-mq-cpu.c ---- linux-4.1.20.orig/block/blk-mq-cpu.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-mq-cpu.c 2016-03-21 20:18:31.000000000 +0100 -@@ -16,7 +16,7 @@ - #include "blk-mq.h" - - static LIST_HEAD(blk_mq_cpu_notify_list); --static DEFINE_RAW_SPINLOCK(blk_mq_cpu_notify_lock); -+static DEFINE_SPINLOCK(blk_mq_cpu_notify_lock); - - static int blk_mq_main_cpu_notify(struct notifier_block *self, - unsigned long action, void *hcpu) -@@ -25,7 +25,10 @@ - struct blk_mq_cpu_notifier *notify; - int ret = NOTIFY_OK; - -- raw_spin_lock(&blk_mq_cpu_notify_lock); -+ if (action != CPU_POST_DEAD) -+ return NOTIFY_OK; -+ -+ spin_lock(&blk_mq_cpu_notify_lock); - - list_for_each_entry(notify, &blk_mq_cpu_notify_list, list) { - ret = notify->notify(notify->data, action, cpu); -@@ -33,7 +36,7 @@ - break; - } - -- raw_spin_unlock(&blk_mq_cpu_notify_lock); -+ spin_unlock(&blk_mq_cpu_notify_lock); - return ret; - } - -@@ -41,16 +44,16 @@ - { - BUG_ON(!notifier->notify); - -- raw_spin_lock(&blk_mq_cpu_notify_lock); -+ spin_lock(&blk_mq_cpu_notify_lock); - list_add_tail(¬ifier->list, &blk_mq_cpu_notify_list); -- raw_spin_unlock(&blk_mq_cpu_notify_lock); -+ spin_unlock(&blk_mq_cpu_notify_lock); - } - - void blk_mq_unregister_cpu_notifier(struct blk_mq_cpu_notifier *notifier) - { -- raw_spin_lock(&blk_mq_cpu_notify_lock); -+ spin_lock(&blk_mq_cpu_notify_lock); - list_del(¬ifier->list); -- raw_spin_unlock(&blk_mq_cpu_notify_lock); -+ spin_unlock(&blk_mq_cpu_notify_lock); - } - - void blk_mq_init_cpu_notifier(struct blk_mq_cpu_notifier *notifier, -diff -Nur linux-4.1.20.orig/block/blk-mq.c linux-4.1.20/block/blk-mq.c ---- linux-4.1.20.orig/block/blk-mq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-mq.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-mq.c linux-4.1.26/block/blk-mq.c +--- linux-4.1.26.orig/block/blk-mq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-mq.c 2016-06-19 15:30:58.623294881 +0200 @@ -88,7 +88,7 @@ if (!(gfp & __GFP_WAIT)) return -EBUSY; @@ -5196,9 +4861,63 @@ diff -Nur linux-4.1.20.orig/block/blk-mq.c linux-4.1.20/block/blk-mq.c return blk_mq_hctx_cpu_offline(hctx, cpu); /* -diff -Nur linux-4.1.20.orig/block/blk-mq.h linux-4.1.20/block/blk-mq.h ---- linux-4.1.20.orig/block/blk-mq.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-mq.h 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-mq-cpu.c linux-4.1.26/block/blk-mq-cpu.c +--- linux-4.1.26.orig/block/blk-mq-cpu.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-mq-cpu.c 2016-06-19 15:30:58.623294881 +0200 +@@ -16,7 +16,7 @@ + #include "blk-mq.h" + + static LIST_HEAD(blk_mq_cpu_notify_list); +-static DEFINE_RAW_SPINLOCK(blk_mq_cpu_notify_lock); ++static DEFINE_SPINLOCK(blk_mq_cpu_notify_lock); + + static int blk_mq_main_cpu_notify(struct notifier_block *self, + unsigned long action, void *hcpu) +@@ -25,7 +25,10 @@ + struct blk_mq_cpu_notifier *notify; + int ret = NOTIFY_OK; + +- raw_spin_lock(&blk_mq_cpu_notify_lock); ++ if (action != CPU_POST_DEAD) ++ return NOTIFY_OK; ++ ++ spin_lock(&blk_mq_cpu_notify_lock); + + list_for_each_entry(notify, &blk_mq_cpu_notify_list, list) { + ret = notify->notify(notify->data, action, cpu); +@@ -33,7 +36,7 @@ + break; + } + +- raw_spin_unlock(&blk_mq_cpu_notify_lock); ++ spin_unlock(&blk_mq_cpu_notify_lock); + return ret; + } + +@@ -41,16 +44,16 @@ + { + BUG_ON(!notifier->notify); + +- raw_spin_lock(&blk_mq_cpu_notify_lock); ++ spin_lock(&blk_mq_cpu_notify_lock); + list_add_tail(¬ifier->list, &blk_mq_cpu_notify_list); +- raw_spin_unlock(&blk_mq_cpu_notify_lock); ++ spin_unlock(&blk_mq_cpu_notify_lock); + } + + void blk_mq_unregister_cpu_notifier(struct blk_mq_cpu_notifier *notifier) + { +- raw_spin_lock(&blk_mq_cpu_notify_lock); ++ spin_lock(&blk_mq_cpu_notify_lock); + list_del(¬ifier->list); +- raw_spin_unlock(&blk_mq_cpu_notify_lock); ++ spin_unlock(&blk_mq_cpu_notify_lock); + } + + void blk_mq_init_cpu_notifier(struct blk_mq_cpu_notifier *notifier, +diff -Nur linux-4.1.26.orig/block/blk-mq.h linux-4.1.26/block/blk-mq.h +--- linux-4.1.26.orig/block/blk-mq.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-mq.h 2016-06-19 15:30:58.623294881 +0200 @@ -76,7 +76,10 @@ static inline struct blk_mq_ctx *__blk_mq_get_ctx(struct request_queue *q, unsigned int cpu) @@ -5226,9 +4945,9 @@ diff -Nur linux-4.1.20.orig/block/blk-mq.h linux-4.1.20/block/blk-mq.h } struct blk_mq_alloc_data { -diff -Nur linux-4.1.20.orig/block/blk-softirq.c linux-4.1.20/block/blk-softirq.c ---- linux-4.1.20.orig/block/blk-softirq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/blk-softirq.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/blk-softirq.c linux-4.1.26/block/blk-softirq.c +--- linux-4.1.26.orig/block/blk-softirq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/blk-softirq.c 2016-06-19 15:30:58.623294881 +0200 @@ -51,6 +51,7 @@ raise_softirq_irqoff(BLOCK_SOFTIRQ); @@ -5253,9 +4972,9 @@ diff -Nur linux-4.1.20.orig/block/blk-softirq.c linux-4.1.20/block/blk-softirq.c } /** -diff -Nur linux-4.1.20.orig/block/bounce.c linux-4.1.20/block/bounce.c ---- linux-4.1.20.orig/block/bounce.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/block/bounce.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/block/bounce.c linux-4.1.26/block/bounce.c +--- linux-4.1.26.orig/block/bounce.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/block/bounce.c 2016-06-19 15:30:58.623294881 +0200 @@ -54,11 +54,11 @@ unsigned long flags; unsigned char *vto; @@ -5270,9 +4989,9 @@ diff -Nur linux-4.1.20.orig/block/bounce.c linux-4.1.20/block/bounce.c } #else /* CONFIG_HIGHMEM */ -diff -Nur linux-4.1.20.orig/crypto/algapi.c linux-4.1.20/crypto/algapi.c ---- linux-4.1.20.orig/crypto/algapi.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/crypto/algapi.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/crypto/algapi.c linux-4.1.26/crypto/algapi.c +--- linux-4.1.26.orig/crypto/algapi.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/crypto/algapi.c 2016-06-19 15:30:58.623294881 +0200 @@ -695,13 +695,13 @@ int crypto_register_notifier(struct notifier_block *nb) @@ -5289,9 +5008,9 @@ diff -Nur linux-4.1.20.orig/crypto/algapi.c linux-4.1.20/crypto/algapi.c } EXPORT_SYMBOL_GPL(crypto_unregister_notifier); -diff -Nur linux-4.1.20.orig/crypto/api.c linux-4.1.20/crypto/api.c ---- linux-4.1.20.orig/crypto/api.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/crypto/api.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/crypto/api.c linux-4.1.26/crypto/api.c +--- linux-4.1.26.orig/crypto/api.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/crypto/api.c 2016-06-19 15:30:58.623294881 +0200 @@ -31,7 +31,7 @@ DECLARE_RWSEM(crypto_alg_sem); EXPORT_SYMBOL_GPL(crypto_alg_sem); @@ -5314,9 +5033,9 @@ diff -Nur linux-4.1.20.orig/crypto/api.c linux-4.1.20/crypto/api.c } return ok; -diff -Nur linux-4.1.20.orig/crypto/internal.h linux-4.1.20/crypto/internal.h ---- linux-4.1.20.orig/crypto/internal.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/crypto/internal.h 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/crypto/internal.h linux-4.1.26/crypto/internal.h +--- linux-4.1.26.orig/crypto/internal.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/crypto/internal.h 2016-06-19 15:30:58.623294881 +0200 @@ -48,7 +48,7 @@ extern struct list_head crypto_alg_list; @@ -5335,9 +5054,290 @@ diff -Nur linux-4.1.20.orig/crypto/internal.h linux-4.1.20/crypto/internal.h } #endif /* _CRYPTO_INTERNAL_H */ -diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/acglobal.h linux-4.1.20/drivers/acpi/acpica/acglobal.h ---- linux-4.1.20.orig/drivers/acpi/acpica/acglobal.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/acpi/acpica/acglobal.h 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/Documentation/hwlat_detector.txt linux-4.1.26/Documentation/hwlat_detector.txt +--- linux-4.1.26.orig/Documentation/hwlat_detector.txt 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/Documentation/hwlat_detector.txt 2016-06-19 15:30:54.915151887 +0200 +@@ -0,0 +1,64 @@ ++Introduction: ++------------- ++ ++The module hwlat_detector is a special purpose kernel module that is used to ++detect large system latencies induced by the behavior of certain underlying ++hardware or firmware, independent of Linux itself. The code was developed ++originally to detect SMIs (System Management Interrupts) on x86 systems, ++however there is nothing x86 specific about this patchset. It was ++originally written for use by the "RT" patch since the Real Time ++kernel is highly latency sensitive. ++ ++SMIs are usually not serviced by the Linux kernel, which typically does not ++even know that they are occuring. SMIs are instead are set up by BIOS code ++and are serviced by BIOS code, usually for "critical" events such as ++management of thermal sensors and fans. Sometimes though, SMIs are used for ++other tasks and those tasks can spend an inordinate amount of time in the ++handler (sometimes measured in milliseconds). Obviously this is a problem if ++you are trying to keep event service latencies down in the microsecond range. ++ ++The hardware latency detector works by hogging all of the cpus for configurable ++amounts of time (by calling stop_machine()), polling the CPU Time Stamp Counter ++for some period, then looking for gaps in the TSC data. Any gap indicates a ++time when the polling was interrupted and since the machine is stopped and ++interrupts turned off the only thing that could do that would be an SMI. ++ ++Note that the SMI detector should *NEVER* be used in a production environment. ++It is intended to be run manually to determine if the hardware platform has a ++problem with long system firmware service routines. ++ ++Usage: ++------ ++ ++Loading the module hwlat_detector passing the parameter "enabled=1" (or by ++setting the "enable" entry in "hwlat_detector" debugfs toggled on) is the only ++step required to start the hwlat_detector. It is possible to redefine the ++threshold in microseconds (us) above which latency spikes will be taken ++into account (parameter "threshold="). ++ ++Example: ++ ++ # modprobe hwlat_detector enabled=1 threshold=100 ++ ++After the module is loaded, it creates a directory named "hwlat_detector" under ++the debugfs mountpoint, "/debug/hwlat_detector" for this text. It is necessary ++to have debugfs mounted, which might be on /sys/debug on your system. ++ ++The /debug/hwlat_detector interface contains the following files: ++ ++count - number of latency spikes observed since last reset ++enable - a global enable/disable toggle (0/1), resets count ++max - maximum hardware latency actually observed (usecs) ++sample - a pipe from which to read current raw sample data ++ in the format <timestamp> <latency observed usecs> ++ (can be opened O_NONBLOCK for a single sample) ++threshold - minimum latency value to be considered (usecs) ++width - time period to sample with CPUs held (usecs) ++ must be less than the total window size (enforced) ++window - total period of sampling, width being inside (usecs) ++ ++By default we will set width to 500,000 and window to 1,000,000, meaning that ++we will sample every 1,000,000 usecs (1s) for 500,000 usecs (0.5s). If we ++observe any latencies that exceed the threshold (initially 100 usecs), ++then we write to a global sample ring buffer of 8K samples, which is ++consumed by reading from the "sample" (pipe) debugfs file interface. +diff -Nur linux-4.1.26.orig/Documentation/sysrq.txt linux-4.1.26/Documentation/sysrq.txt +--- linux-4.1.26.orig/Documentation/sysrq.txt 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/Documentation/sysrq.txt 2016-06-19 15:30:54.915151887 +0200 +@@ -59,10 +59,17 @@ + On other - If you know of the key combos for other architectures, please + let me know so I can add them to this section. + +-On all - write a character to /proc/sysrq-trigger. e.g.: +- ++On all - write a character to /proc/sysrq-trigger, e.g.: + echo t > /proc/sysrq-trigger + ++On all - Enable network SysRq by writing a cookie to icmp_echo_sysrq, e.g. ++ echo 0x01020304 >/proc/sys/net/ipv4/icmp_echo_sysrq ++ Send an ICMP echo request with this pattern plus the particular ++ SysRq command key. Example: ++ # ping -c1 -s57 -p0102030468 ++ will trigger the SysRq-H (help) command. ++ ++ + * What are the 'command' keys? + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 'b' - Will immediately reboot the system without syncing or unmounting +diff -Nur linux-4.1.26.orig/Documentation/trace/histograms.txt linux-4.1.26/Documentation/trace/histograms.txt +--- linux-4.1.26.orig/Documentation/trace/histograms.txt 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/Documentation/trace/histograms.txt 2016-06-19 15:30:54.915151887 +0200 +@@ -0,0 +1,186 @@ ++ Using the Linux Kernel Latency Histograms ++ ++ ++This document gives a short explanation how to enable, configure and use ++latency histograms. Latency histograms are primarily relevant in the ++context of real-time enabled kernels (CONFIG_PREEMPT/CONFIG_PREEMPT_RT) ++and are used in the quality management of the Linux real-time ++capabilities. ++ ++ ++* Purpose of latency histograms ++ ++A latency histogram continuously accumulates the frequencies of latency ++data. There are two types of histograms ++- potential sources of latencies ++- effective latencies ++ ++ ++* Potential sources of latencies ++ ++Potential sources of latencies are code segments where interrupts, ++preemption or both are disabled (aka critical sections). To create ++histograms of potential sources of latency, the kernel stores the time ++stamp at the start of a critical section, determines the time elapsed ++when the end of the section is reached, and increments the frequency ++counter of that latency value - irrespective of whether any concurrently ++running process is affected by latency or not. ++- Configuration items (in the Kernel hacking/Tracers submenu) ++ CONFIG_INTERRUPT_OFF_LATENCY ++ CONFIG_PREEMPT_OFF_LATENCY ++ ++ ++* Effective latencies ++ ++Effective latencies are actually occuring during wakeup of a process. To ++determine effective latencies, the kernel stores the time stamp when a ++process is scheduled to be woken up, and determines the duration of the ++wakeup time shortly before control is passed over to this process. Note ++that the apparent latency in user space may be somewhat longer, since the ++process may be interrupted after control is passed over to it but before ++the execution in user space takes place. Simply measuring the interval ++between enqueuing and wakeup may also not appropriate in cases when a ++process is scheduled as a result of a timer expiration. The timer may have ++missed its deadline, e.g. due to disabled interrupts, but this latency ++would not be registered. Therefore, the offsets of missed timers are ++recorded in a separate histogram. If both wakeup latency and missed timer ++offsets are configured and enabled, a third histogram may be enabled that ++records the overall latency as a sum of the timer latency, if any, and the ++wakeup latency. This histogram is called "timerandwakeup". ++- Configuration items (in the Kernel hacking/Tracers submenu) ++ CONFIG_WAKEUP_LATENCY ++ CONFIG_MISSED_TIMER_OFSETS ++ ++ ++* Usage ++ ++The interface to the administration of the latency histograms is located ++in the debugfs file system. To mount it, either enter ++ ++mount -t sysfs nodev /sys ++mount -t debugfs nodev /sys/kernel/debug ++ ++from shell command line level, or add ++ ++nodev /sys sysfs defaults 0 0 ++nodev /sys/kernel/debug debugfs defaults 0 0 ++ ++to the file /etc/fstab. All latency histogram related files are then ++available in the directory /sys/kernel/debug/tracing/latency_hist. A ++particular histogram type is enabled by writing non-zero to the related ++variable in the /sys/kernel/debug/tracing/latency_hist/enable directory. ++Select "preemptirqsoff" for the histograms of potential sources of ++latencies and "wakeup" for histograms of effective latencies etc. The ++histogram data - one per CPU - are available in the files ++ ++/sys/kernel/debug/tracing/latency_hist/preemptoff/CPUx ++/sys/kernel/debug/tracing/latency_hist/irqsoff/CPUx ++/sys/kernel/debug/tracing/latency_hist/preemptirqsoff/CPUx ++/sys/kernel/debug/tracing/latency_hist/wakeup/CPUx ++/sys/kernel/debug/tracing/latency_hist/wakeup/sharedprio/CPUx ++/sys/kernel/debug/tracing/latency_hist/missed_timer_offsets/CPUx ++/sys/kernel/debug/tracing/latency_hist/timerandwakeup/CPUx ++ ++The histograms are reset by writing non-zero to the file "reset" in a ++particular latency directory. To reset all latency data, use ++ ++#!/bin/sh ++ ++TRACINGDIR=/sys/kernel/debug/tracing ++HISTDIR=$TRACINGDIR/latency_hist ++ ++if test -d $HISTDIR ++then ++ cd $HISTDIR ++ for i in `find . | grep /reset$` ++ do ++ echo 1 >$i ++ done ++fi ++ ++ ++* Data format ++ ++Latency data are stored with a resolution of one microsecond. The ++maximum latency is 10,240 microseconds. The data are only valid, if the ++overflow register is empty. Every output line contains the latency in ++microseconds in the first row and the number of samples in the second ++row. To display only lines with a positive latency count, use, for ++example, ++ ++grep -v " 0$" /sys/kernel/debug/tracing/latency_hist/preemptoff/CPU0 ++ ++#Minimum latency: 0 microseconds. ++#Average latency: 0 microseconds. ++#Maximum latency: 25 microseconds. ++#Total samples: 3104770694 ++#There are 0 samples greater or equal than 10240 microseconds ++#usecs samples ++ 0 2984486876 ++ 1 49843506 ++ 2 58219047 ++ 3 5348126 ++ 4 2187960 ++ 5 3388262 ++ 6 959289 ++ 7 208294 ++ 8 40420 ++ 9 4485 ++ 10 14918 ++ 11 18340 ++ 12 25052 ++ 13 19455 ++ 14 5602 ++ 15 969 ++ 16 47 ++ 17 18 ++ 18 14 ++ 19 1 ++ 20 3 ++ 21 2 ++ 22 5 ++ 23 2 ++ 25 1 ++ ++ ++* Wakeup latency of a selected process ++ ++To only collect wakeup latency data of a particular process, write the ++PID of the requested process to ++ ++/sys/kernel/debug/tracing/latency_hist/wakeup/pid ++ ++PIDs are not considered, if this variable is set to 0. ++ ++ ++* Details of the process with the highest wakeup latency so far ++ ++Selected data of the process that suffered from the highest wakeup ++latency that occurred in a particular CPU are available in the file ++ ++/sys/kernel/debug/tracing/latency_hist/wakeup/max_latency-CPUx. ++ ++In addition, other relevant system data at the time when the ++latency occurred are given. ++ ++The format of the data is (all in one line): ++<PID> <Priority> <Latency> (<Timeroffset>) <Command> \ ++<- <PID> <Priority> <Command> <Timestamp> ++ ++The value of <Timeroffset> is only relevant in the combined timer ++and wakeup latency recording. In the wakeup recording, it is ++always 0, in the missed_timer_offsets recording, it is the same ++as <Latency>. ++ ++When retrospectively searching for the origin of a latency and ++tracing was not enabled, it may be helpful to know the name and ++some basic data of the task that (finally) was switching to the ++late real-tlme task. In addition to the victim's data, also the ++data of the possible culprit are therefore displayed after the ++"<-" symbol. ++ ++Finally, the timestamp of the time when the latency occurred ++in <seconds>.<microseconds> after the most recent system boot ++is provided. ++ ++These data are also reset when the wakeup histogram is reset. +diff -Nur linux-4.1.26.orig/drivers/acpi/acpica/acglobal.h linux-4.1.26/drivers/acpi/acpica/acglobal.h +--- linux-4.1.26.orig/drivers/acpi/acpica/acglobal.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/acpi/acpica/acglobal.h 2016-06-19 15:30:58.627295036 +0200 @@ -112,7 +112,7 @@ * interrupt level */ @@ -5347,9 +5347,9 @@ diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/acglobal.h linux-4.1.20/drivers/ ACPI_GLOBAL(acpi_spinlock, acpi_gbl_reference_count_lock); /* Mutex for _OSI support */ -diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/hwregs.c linux-4.1.20/drivers/acpi/acpica/hwregs.c ---- linux-4.1.20.orig/drivers/acpi/acpica/hwregs.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/acpi/acpica/hwregs.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/acpi/acpica/hwregs.c linux-4.1.26/drivers/acpi/acpica/hwregs.c +--- linux-4.1.26.orig/drivers/acpi/acpica/hwregs.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/acpi/acpica/hwregs.c 2016-06-19 15:30:58.627295036 +0200 @@ -269,14 +269,14 @@ ACPI_BITMASK_ALL_FIXED_STATUS, ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address))); @@ -5367,9 +5367,9 @@ diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/hwregs.c linux-4.1.20/drivers/ac if (ACPI_FAILURE(status)) { goto exit; -diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/hwxface.c linux-4.1.20/drivers/acpi/acpica/hwxface.c ---- linux-4.1.20.orig/drivers/acpi/acpica/hwxface.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/acpi/acpica/hwxface.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/acpi/acpica/hwxface.c linux-4.1.26/drivers/acpi/acpica/hwxface.c +--- linux-4.1.26.orig/drivers/acpi/acpica/hwxface.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/acpi/acpica/hwxface.c 2016-06-19 15:30:58.627295036 +0200 @@ -374,7 +374,7 @@ return_ACPI_STATUS(AE_BAD_PARAMETER); } @@ -5388,9 +5388,9 @@ diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/hwxface.c linux-4.1.20/drivers/a return_ACPI_STATUS(status); } -diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/utmutex.c linux-4.1.20/drivers/acpi/acpica/utmutex.c ---- linux-4.1.20.orig/drivers/acpi/acpica/utmutex.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/acpi/acpica/utmutex.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/acpi/acpica/utmutex.c linux-4.1.26/drivers/acpi/acpica/utmutex.c +--- linux-4.1.26.orig/drivers/acpi/acpica/utmutex.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/acpi/acpica/utmutex.c 2016-06-19 15:30:58.627295036 +0200 @@ -88,7 +88,7 @@ return_ACPI_STATUS (status); } @@ -5409,9 +5409,9 @@ diff -Nur linux-4.1.20.orig/drivers/acpi/acpica/utmutex.c linux-4.1.20/drivers/a acpi_os_delete_lock(acpi_gbl_reference_count_lock); /* Delete the reader/writer lock */ -diff -Nur linux-4.1.20.orig/drivers/ata/libata-sff.c linux-4.1.20/drivers/ata/libata-sff.c ---- linux-4.1.20.orig/drivers/ata/libata-sff.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ata/libata-sff.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ata/libata-sff.c linux-4.1.26/drivers/ata/libata-sff.c +--- linux-4.1.26.orig/drivers/ata/libata-sff.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ata/libata-sff.c 2016-06-19 15:30:58.627295036 +0200 @@ -678,9 +678,9 @@ unsigned long flags; unsigned int consumed; @@ -5460,9 +5460,9 @@ diff -Nur linux-4.1.20.orig/drivers/ata/libata-sff.c linux-4.1.20/drivers/ata/li } else { buf = page_address(page); consumed = ap->ops->sff_data_xfer(dev, buf + offset, -diff -Nur linux-4.1.20.orig/drivers/char/random.c linux-4.1.20/drivers/char/random.c ---- linux-4.1.20.orig/drivers/char/random.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/char/random.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/char/random.c linux-4.1.26/drivers/char/random.c +--- linux-4.1.26.orig/drivers/char/random.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/char/random.c 2016-06-19 15:30:58.627295036 +0200 @@ -776,8 +776,6 @@ } sample; long delta, delta2, delta3; @@ -5514,9 +5514,9 @@ diff -Nur linux-4.1.20.orig/drivers/char/random.c linux-4.1.20/drivers/char/rand fast_mix(fast_pool); add_interrupt_bench(cycles); -diff -Nur linux-4.1.20.orig/drivers/clocksource/tcb_clksrc.c linux-4.1.20/drivers/clocksource/tcb_clksrc.c ---- linux-4.1.20.orig/drivers/clocksource/tcb_clksrc.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/clocksource/tcb_clksrc.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/clocksource/tcb_clksrc.c linux-4.1.26/drivers/clocksource/tcb_clksrc.c +--- linux-4.1.26.orig/drivers/clocksource/tcb_clksrc.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/clocksource/tcb_clksrc.c 2016-06-19 15:30:58.627295036 +0200 @@ -23,8 +23,7 @@ * this 32 bit free-running counter. the second channel is not used. * @@ -5631,9 +5631,9 @@ diff -Nur linux-4.1.20.orig/drivers/clocksource/tcb_clksrc.c linux-4.1.20/driver if (ret) goto err_unregister_clksrc; -diff -Nur linux-4.1.20.orig/drivers/clocksource/timer-atmel-pit.c linux-4.1.20/drivers/clocksource/timer-atmel-pit.c ---- linux-4.1.20.orig/drivers/clocksource/timer-atmel-pit.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/clocksource/timer-atmel-pit.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/clocksource/timer-atmel-pit.c linux-4.1.26/drivers/clocksource/timer-atmel-pit.c +--- linux-4.1.26.orig/drivers/clocksource/timer-atmel-pit.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/clocksource/timer-atmel-pit.c 2016-06-19 15:30:58.627295036 +0200 @@ -90,6 +90,7 @@ return elapsed; } @@ -5659,9 +5659,9 @@ diff -Nur linux-4.1.20.orig/drivers/clocksource/timer-atmel-pit.c linux-4.1.20/d break; case CLOCK_EVT_MODE_RESUME: break; -diff -Nur linux-4.1.20.orig/drivers/clocksource/timer-atmel-st.c linux-4.1.20/drivers/clocksource/timer-atmel-st.c ---- linux-4.1.20.orig/drivers/clocksource/timer-atmel-st.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/clocksource/timer-atmel-st.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/clocksource/timer-atmel-st.c linux-4.1.26/drivers/clocksource/timer-atmel-st.c +--- linux-4.1.26.orig/drivers/clocksource/timer-atmel-st.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/clocksource/timer-atmel-st.c 2016-06-19 15:30:58.627295036 +0200 @@ -131,6 +131,7 @@ break; case CLOCK_EVT_MODE_SHUTDOWN: @@ -5670,21 +5670,9 @@ diff -Nur linux-4.1.20.orig/drivers/clocksource/timer-atmel-st.c linux-4.1.20/dr case CLOCK_EVT_MODE_RESUME: irqmask = 0; break; -diff -Nur linux-4.1.20.orig/drivers/cpufreq/Kconfig.x86 linux-4.1.20/drivers/cpufreq/Kconfig.x86 ---- linux-4.1.20.orig/drivers/cpufreq/Kconfig.x86 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/cpufreq/Kconfig.x86 2016-03-21 20:18:31.000000000 +0100 -@@ -123,7 +123,7 @@ - - config X86_POWERNOW_K8 - tristate "AMD Opteron/Athlon64 PowerNow!" -- depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ -+ depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ && !PREEMPT_RT_BASE - help - This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors. - Support for K10 and newer processors is now in acpi-cpufreq. -diff -Nur linux-4.1.20.orig/drivers/cpufreq/cpufreq.c linux-4.1.20/drivers/cpufreq/cpufreq.c ---- linux-4.1.20.orig/drivers/cpufreq/cpufreq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/cpufreq/cpufreq.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/cpufreq/cpufreq.c linux-4.1.26/drivers/cpufreq/cpufreq.c +--- linux-4.1.26.orig/drivers/cpufreq/cpufreq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/cpufreq/cpufreq.c 2016-06-19 15:30:58.627295036 +0200 @@ -64,12 +64,6 @@ return cpufreq_driver->target_index || cpufreq_driver->target; } @@ -5821,21 +5809,21 @@ diff -Nur linux-4.1.20.orig/drivers/cpufreq/cpufreq.c linux-4.1.20/drivers/cpufr return 0; } -diff -Nur linux-4.1.20.orig/drivers/gpio/Kconfig linux-4.1.20/drivers/gpio/Kconfig ---- linux-4.1.20.orig/drivers/gpio/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpio/Kconfig 2016-03-21 20:18:31.000000000 +0100 -@@ -308,7 +308,7 @@ - family of SOCs. +diff -Nur linux-4.1.26.orig/drivers/cpufreq/Kconfig.x86 linux-4.1.26/drivers/cpufreq/Kconfig.x86 +--- linux-4.1.26.orig/drivers/cpufreq/Kconfig.x86 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/cpufreq/Kconfig.x86 2016-06-19 15:30:58.627295036 +0200 +@@ -123,7 +123,7 @@ - config GPIO_OMAP -- bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS -+ tristate "TI OMAP GPIO support" if ARCH_OMAP2PLUS || COMPILE_TEST - default y if ARCH_OMAP - depends on ARM - select GENERIC_IRQ_CHIP -diff -Nur linux-4.1.20.orig/drivers/gpio/gpio-omap.c linux-4.1.20/drivers/gpio/gpio-omap.c ---- linux-4.1.20.orig/drivers/gpio/gpio-omap.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpio/gpio-omap.c 2016-03-21 20:18:31.000000000 +0100 + config X86_POWERNOW_K8 + tristate "AMD Opteron/Athlon64 PowerNow!" +- depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ ++ depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ && !PREEMPT_RT_BASE + help + This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors. + Support for K10 and newer processors is now in acpi-cpufreq. +diff -Nur linux-4.1.26.orig/drivers/gpio/gpio-omap.c linux-4.1.26/drivers/gpio/gpio-omap.c +--- linux-4.1.26.orig/drivers/gpio/gpio-omap.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpio/gpio-omap.c 2016-06-19 15:30:58.631295190 +0200 @@ -29,6 +29,7 @@ #include <linux/platform_data/gpio-omap.h> @@ -6633,9 +6621,21 @@ diff -Nur linux-4.1.20.orig/drivers/gpio/gpio-omap.c linux-4.1.20/drivers/gpio/g +MODULE_DESCRIPTION("omap gpio driver"); +MODULE_ALIAS("platform:gpio-omap"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-4.1.20/drivers/gpu/drm/i915/i915_gem_execbuffer.c ---- linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/gpio/Kconfig linux-4.1.26/drivers/gpio/Kconfig +--- linux-4.1.26.orig/drivers/gpio/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpio/Kconfig 2016-06-19 15:30:58.631295190 +0200 +@@ -308,7 +308,7 @@ + family of SOCs. + + config GPIO_OMAP +- bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS ++ tristate "TI OMAP GPIO support" if ARCH_OMAP2PLUS || COMPILE_TEST + default y if ARCH_OMAP + depends on ARM + select GENERIC_IRQ_CHIP +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-4.1.26/drivers/gpu/drm/i915/i915_gem_execbuffer.c +--- linux-4.1.26.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/i915/i915_gem_execbuffer.c 2016-06-19 15:30:58.631295190 +0200 @@ -32,6 +32,7 @@ #include "i915_trace.h" #include "intel_drv.h" @@ -6663,9 +6663,9 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c linux-4.1 i915_gem_execbuffer_move_to_active(vmas, ring); i915_gem_execbuffer_retire_commands(dev, file, ring, batch_obj); -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_shrinker.c linux-4.1.20/drivers/gpu/drm/i915/i915_gem_shrinker.c ---- linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_shrinker.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/i915/i915_gem_shrinker.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/i915/i915_gem_shrinker.c linux-4.1.26/drivers/gpu/drm/i915/i915_gem_shrinker.c +--- linux-4.1.26.orig/drivers/gpu/drm/i915/i915_gem_shrinker.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/i915/i915_gem_shrinker.c 2016-06-19 15:30:58.631295190 +0200 @@ -39,7 +39,7 @@ if (!mutex_is_locked(mutex)) return false; @@ -6675,9 +6675,9 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_gem_shrinker.c linux-4.1.2 return mutex->owner == task; #else /* Since UP may be pre-empted, we cannot assume that we own the lock */ -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_irq.c linux-4.1.20/drivers/gpu/drm/i915/i915_irq.c ---- linux-4.1.20.orig/drivers/gpu/drm/i915/i915_irq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/i915/i915_irq.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/i915/i915_irq.c linux-4.1.26/drivers/gpu/drm/i915/i915_irq.c +--- linux-4.1.26.orig/drivers/gpu/drm/i915/i915_irq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/i915/i915_irq.c 2016-06-19 15:30:58.631295190 +0200 @@ -676,6 +676,7 @@ spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); @@ -6694,10 +6694,10 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/i915_irq.c linux-4.1.20/drivers spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/intel_display.c linux-4.1.20/drivers/gpu/drm/i915/intel_display.c ---- linux-4.1.20.orig/drivers/gpu/drm/i915/intel_display.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/i915/intel_display.c 2016-03-21 20:18:31.000000000 +0100 -@@ -10088,7 +10088,7 @@ +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/i915/intel_display.c linux-4.1.26/drivers/gpu/drm/i915/intel_display.c +--- linux-4.1.26.orig/drivers/gpu/drm/i915/intel_display.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/i915/intel_display.c 2016-06-19 15:30:58.635295344 +0200 +@@ -10084,7 +10084,7 @@ struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); @@ -6706,9 +6706,9 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/intel_display.c linux-4.1.20/dr if (crtc == NULL) return; -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/intel_sprite.c linux-4.1.20/drivers/gpu/drm/i915/intel_sprite.c ---- linux-4.1.20.orig/drivers/gpu/drm/i915/intel_sprite.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/i915/intel_sprite.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/i915/intel_sprite.c linux-4.1.26/drivers/gpu/drm/i915/intel_sprite.c +--- linux-4.1.26.orig/drivers/gpu/drm/i915/intel_sprite.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/i915/intel_sprite.c 2016-06-19 15:30:58.635295344 +0200 @@ -37,6 +37,7 @@ #include "intel_drv.h" #include <drm/i915_drm.h> @@ -6758,9 +6758,9 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/i915/intel_sprite.c linux-4.1.20/dri if (start_vbl_count != end_vbl_count) DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u)\n", -diff -Nur linux-4.1.20.orig/drivers/gpu/drm/radeon/radeon_display.c linux-4.1.20/drivers/gpu/drm/radeon/radeon_display.c ---- linux-4.1.20.orig/drivers/gpu/drm/radeon/radeon_display.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/gpu/drm/radeon/radeon_display.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/gpu/drm/radeon/radeon_display.c linux-4.1.26/drivers/gpu/drm/radeon/radeon_display.c +--- linux-4.1.26.orig/drivers/gpu/drm/radeon/radeon_display.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/gpu/drm/radeon/radeon_display.c 2016-06-19 15:30:58.635295344 +0200 @@ -1798,6 +1798,7 @@ struct radeon_device *rdev = dev->dev_private; @@ -6777,9 +6777,9 @@ diff -Nur linux-4.1.20.orig/drivers/gpu/drm/radeon/radeon_display.c linux-4.1.20 /* Decode into vertical and horizontal scanout position. */ *vpos = position & 0x1fff; -diff -Nur linux-4.1.20.orig/drivers/i2c/busses/i2c-omap.c linux-4.1.20/drivers/i2c/busses/i2c-omap.c ---- linux-4.1.20.orig/drivers/i2c/busses/i2c-omap.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/i2c/busses/i2c-omap.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/i2c/busses/i2c-omap.c linux-4.1.26/drivers/i2c/busses/i2c-omap.c +--- linux-4.1.26.orig/drivers/i2c/busses/i2c-omap.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/i2c/busses/i2c-omap.c 2016-06-19 15:30:58.635295344 +0200 @@ -996,15 +996,12 @@ u16 mask; u16 stat; @@ -6797,9 +6797,9 @@ diff -Nur linux-4.1.20.orig/drivers/i2c/busses/i2c-omap.c linux-4.1.20/drivers/i return ret; } -diff -Nur linux-4.1.20.orig/drivers/ide/alim15x3.c linux-4.1.20/drivers/ide/alim15x3.c ---- linux-4.1.20.orig/drivers/ide/alim15x3.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/alim15x3.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ide/alim15x3.c linux-4.1.26/drivers/ide/alim15x3.c +--- linux-4.1.26.orig/drivers/ide/alim15x3.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/alim15x3.c 2016-06-19 15:30:58.635295344 +0200 @@ -234,7 +234,7 @@ isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); @@ -6818,9 +6818,9 @@ diff -Nur linux-4.1.20.orig/drivers/ide/alim15x3.c linux-4.1.20/drivers/ide/alim return 0; } -diff -Nur linux-4.1.20.orig/drivers/ide/hpt366.c linux-4.1.20/drivers/ide/hpt366.c ---- linux-4.1.20.orig/drivers/ide/hpt366.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/hpt366.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ide/hpt366.c linux-4.1.26/drivers/ide/hpt366.c +--- linux-4.1.26.orig/drivers/ide/hpt366.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/hpt366.c 2016-06-19 15:30:58.635295344 +0200 @@ -1241,7 +1241,7 @@ dma_old = inb(base + 2); @@ -6839,9 +6839,39 @@ diff -Nur linux-4.1.20.orig/drivers/ide/hpt366.c linux-4.1.20/drivers/ide/hpt366 printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", hwif->name, base, base + 7); -diff -Nur linux-4.1.20.orig/drivers/ide/ide-io-std.c linux-4.1.20/drivers/ide/ide-io-std.c ---- linux-4.1.20.orig/drivers/ide/ide-io-std.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/ide-io-std.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ide/ide-io.c linux-4.1.26/drivers/ide/ide-io.c +--- linux-4.1.26.orig/drivers/ide/ide-io.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/ide-io.c 2016-06-19 15:30:58.635295344 +0200 +@@ -659,7 +659,7 @@ + /* disable_irq_nosync ?? */ + disable_irq(hwif->irq); + /* local CPU only, as if we were handling an interrupt */ +- local_irq_disable(); ++ local_irq_disable_nort(); + if (hwif->polling) { + startstop = handler(drive); + } else if (drive_is_ready(drive)) { +diff -Nur linux-4.1.26.orig/drivers/ide/ide-iops.c linux-4.1.26/drivers/ide/ide-iops.c +--- linux-4.1.26.orig/drivers/ide/ide-iops.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/ide-iops.c 2016-06-19 15:30:58.635295344 +0200 +@@ -129,12 +129,12 @@ + if ((stat & ATA_BUSY) == 0) + break; + +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + *rstat = stat; + return -EBUSY; + } + } +- local_irq_restore(flags); ++ local_irq_restore_nort(flags); + } + /* + * Allow status to settle, then read it again. +diff -Nur linux-4.1.26.orig/drivers/ide/ide-io-std.c linux-4.1.26/drivers/ide/ide-io-std.c +--- linux-4.1.26.orig/drivers/ide/ide-io-std.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/ide-io-std.c 2016-06-19 15:30:58.635295344 +0200 @@ -175,7 +175,7 @@ unsigned long uninitialized_var(flags); @@ -6878,39 +6908,9 @@ diff -Nur linux-4.1.20.orig/drivers/ide/ide-io-std.c linux-4.1.20/drivers/ide/id if (((len + 1) & 3) < 2) return; -diff -Nur linux-4.1.20.orig/drivers/ide/ide-io.c linux-4.1.20/drivers/ide/ide-io.c ---- linux-4.1.20.orig/drivers/ide/ide-io.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/ide-io.c 2016-03-21 20:18:31.000000000 +0100 -@@ -659,7 +659,7 @@ - /* disable_irq_nosync ?? */ - disable_irq(hwif->irq); - /* local CPU only, as if we were handling an interrupt */ -- local_irq_disable(); -+ local_irq_disable_nort(); - if (hwif->polling) { - startstop = handler(drive); - } else if (drive_is_ready(drive)) { -diff -Nur linux-4.1.20.orig/drivers/ide/ide-iops.c linux-4.1.20/drivers/ide/ide-iops.c ---- linux-4.1.20.orig/drivers/ide/ide-iops.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/ide-iops.c 2016-03-21 20:18:31.000000000 +0100 -@@ -129,12 +129,12 @@ - if ((stat & ATA_BUSY) == 0) - break; - -- local_irq_restore(flags); -+ local_irq_restore_nort(flags); - *rstat = stat; - return -EBUSY; - } - } -- local_irq_restore(flags); -+ local_irq_restore_nort(flags); - } - /* - * Allow status to settle, then read it again. -diff -Nur linux-4.1.20.orig/drivers/ide/ide-probe.c linux-4.1.20/drivers/ide/ide-probe.c ---- linux-4.1.20.orig/drivers/ide/ide-probe.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/ide-probe.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ide/ide-probe.c linux-4.1.26/drivers/ide/ide-probe.c +--- linux-4.1.26.orig/drivers/ide/ide-probe.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/ide-probe.c 2016-06-19 15:30:58.635295344 +0200 @@ -196,10 +196,10 @@ int bswap = 1; @@ -6924,9 +6924,9 @@ diff -Nur linux-4.1.20.orig/drivers/ide/ide-probe.c linux-4.1.20/drivers/ide/ide drive->dev_flags |= IDE_DFLAG_ID_READ; #ifdef DEBUG -diff -Nur linux-4.1.20.orig/drivers/ide/ide-taskfile.c linux-4.1.20/drivers/ide/ide-taskfile.c ---- linux-4.1.20.orig/drivers/ide/ide-taskfile.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/ide/ide-taskfile.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/ide/ide-taskfile.c linux-4.1.26/drivers/ide/ide-taskfile.c +--- linux-4.1.26.orig/drivers/ide/ide-taskfile.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/ide/ide-taskfile.c 2016-06-19 15:30:58.635295344 +0200 @@ -250,7 +250,7 @@ page_is_high = PageHighMem(page); @@ -6954,9 +6954,9 @@ diff -Nur linux-4.1.20.orig/drivers/ide/ide-taskfile.c linux-4.1.20/drivers/ide/ ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE); -diff -Nur linux-4.1.20.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c linux-4.1.20/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ---- linux-4.1.20.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c linux-4.1.26/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +--- linux-4.1.26.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/infiniband/ulp/ipoib/ipoib_multicast.c 2016-06-19 15:30:58.639295498 +0200 @@ -821,7 +821,7 @@ ipoib_dbg_mcast(priv, "restarting multicast task\n"); @@ -6975,9 +6975,9 @@ diff -Nur linux-4.1.20.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c linux /* * make sure the in-flight joins have finished before we attempt -diff -Nur linux-4.1.20.orig/drivers/input/gameport/gameport.c linux-4.1.20/drivers/input/gameport/gameport.c ---- linux-4.1.20.orig/drivers/input/gameport/gameport.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/input/gameport/gameport.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/input/gameport/gameport.c linux-4.1.26/drivers/input/gameport/gameport.c +--- linux-4.1.26.orig/drivers/input/gameport/gameport.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/input/gameport/gameport.c 2016-06-19 15:30:58.639295498 +0200 @@ -124,12 +124,12 @@ tx = 1 << 30; @@ -7007,9 +7007,9 @@ diff -Nur linux-4.1.20.orig/drivers/input/gameport/gameport.c linux-4.1.20/drive udelay(i * 10); if (t2 - t1 < tx) tx = t2 - t1; } -diff -Nur linux-4.1.20.orig/drivers/leds/trigger/Kconfig linux-4.1.20/drivers/leds/trigger/Kconfig ---- linux-4.1.20.orig/drivers/leds/trigger/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/leds/trigger/Kconfig 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/leds/trigger/Kconfig linux-4.1.26/drivers/leds/trigger/Kconfig +--- linux-4.1.26.orig/drivers/leds/trigger/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/leds/trigger/Kconfig 2016-06-19 15:30:58.639295498 +0200 @@ -61,7 +61,7 @@ config LEDS_TRIGGER_CPU @@ -7019,9 +7019,9 @@ diff -Nur linux-4.1.20.orig/drivers/leds/trigger/Kconfig linux-4.1.20/drivers/le help This allows LEDs to be controlled by active CPUs. This shows the active CPUs across an array of LEDs so you can see which -diff -Nur linux-4.1.20.orig/drivers/md/bcache/Kconfig linux-4.1.20/drivers/md/bcache/Kconfig ---- linux-4.1.20.orig/drivers/md/bcache/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/md/bcache/Kconfig 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/md/bcache/Kconfig linux-4.1.26/drivers/md/bcache/Kconfig +--- linux-4.1.26.orig/drivers/md/bcache/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/md/bcache/Kconfig 2016-06-19 15:30:58.639295498 +0200 @@ -1,6 +1,7 @@ config BCACHE @@ -7030,10 +7030,10 @@ diff -Nur linux-4.1.20.orig/drivers/md/bcache/Kconfig linux-4.1.20/drivers/md/bc ---help--- Allows a block device to be used as cache for other devices; uses a btree for indexing and the layout is optimized for SSDs. -diff -Nur linux-4.1.20.orig/drivers/md/dm.c linux-4.1.20/drivers/md/dm.c ---- linux-4.1.20.orig/drivers/md/dm.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/md/dm.c 2016-03-21 20:18:31.000000000 +0100 -@@ -2134,7 +2134,7 @@ +diff -Nur linux-4.1.26.orig/drivers/md/dm.c linux-4.1.26/drivers/md/dm.c +--- linux-4.1.26.orig/drivers/md/dm.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/md/dm.c 2016-06-19 15:30:58.639295498 +0200 +@@ -2133,7 +2133,7 @@ /* Establish tio->ti before queuing work (map_tio_request) */ tio->ti = ti; queue_kthread_work(&md->kworker, &tio->work); @@ -7042,9 +7042,9 @@ diff -Nur linux-4.1.20.orig/drivers/md/dm.c linux-4.1.20/drivers/md/dm.c } goto out; -diff -Nur linux-4.1.20.orig/drivers/md/raid5.c linux-4.1.20/drivers/md/raid5.c ---- linux-4.1.20.orig/drivers/md/raid5.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/md/raid5.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/md/raid5.c linux-4.1.26/drivers/md/raid5.c +--- linux-4.1.26.orig/drivers/md/raid5.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/md/raid5.c 2016-06-19 15:30:58.639295498 +0200 @@ -1918,8 +1918,9 @@ struct raid5_percpu *percpu; unsigned long cpu; @@ -7066,7 +7066,7 @@ diff -Nur linux-4.1.20.orig/drivers/md/raid5.c linux-4.1.20/drivers/md/raid5.c } static struct stripe_head *alloc_stripe(struct kmem_cache *sc, gfp_t gfp) -@@ -6363,6 +6365,7 @@ +@@ -6375,6 +6377,7 @@ __func__, cpu); break; } @@ -7074,9 +7074,9 @@ diff -Nur linux-4.1.20.orig/drivers/md/raid5.c linux-4.1.20/drivers/md/raid5.c } put_online_cpus(); -diff -Nur linux-4.1.20.orig/drivers/md/raid5.h linux-4.1.20/drivers/md/raid5.h ---- linux-4.1.20.orig/drivers/md/raid5.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/md/raid5.h 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/md/raid5.h linux-4.1.26/drivers/md/raid5.h +--- linux-4.1.26.orig/drivers/md/raid5.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/md/raid5.h 2016-06-19 15:30:58.639295498 +0200 @@ -495,6 +495,7 @@ int recovery_disabled; /* per cpu variables */ @@ -7085,93 +7085,9 @@ diff -Nur linux-4.1.20.orig/drivers/md/raid5.h linux-4.1.20/drivers/md/raid5.h struct page *spare_page; /* Used when checking P/Q in raid6 */ struct flex_array *scribble; /* space for constructing buffer * lists and performing address -diff -Nur linux-4.1.20.orig/drivers/misc/Kconfig linux-4.1.20/drivers/misc/Kconfig ---- linux-4.1.20.orig/drivers/misc/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/misc/Kconfig 2016-03-21 20:18:31.000000000 +0100 -@@ -54,6 +54,7 @@ - config ATMEL_TCLIB - bool "Atmel AT32/AT91 Timer/Counter Library" - depends on (AVR32 || ARCH_AT91) -+ default y if PREEMPT_RT_FULL - help - Select this if you want a library to allocate the Timer/Counter - blocks found on many Atmel processors. This facilitates using -@@ -69,8 +70,7 @@ - are combined to make a single 32-bit timer. - - When GENERIC_CLOCKEVENTS is defined, the third timer channel -- may be used as a clock event device supporting oneshot mode -- (delays of up to two seconds) based on the 32 KiHz clock. -+ may be used as a clock event device supporting oneshot mode. - - config ATMEL_TCB_CLKSRC_BLOCK - int -@@ -84,6 +84,15 @@ - TC can be used for other purposes, such as PWM generation and - interval timing. - -+config ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK -+ bool "TC Block use 32 KiHz clock" -+ depends on ATMEL_TCB_CLKSRC -+ default y if !PREEMPT_RT_FULL -+ help -+ Select this to use 32 KiHz base clock rate as TC block clock -+ source for clock events. -+ -+ - config DUMMY_IRQ - tristate "Dummy IRQ handler" - default n -@@ -113,6 +122,35 @@ - for information on the specific driver level and support statement - for your IBM server. - -+config HWLAT_DETECTOR -+ tristate "Testing module to detect hardware-induced latencies" -+ depends on DEBUG_FS -+ depends on RING_BUFFER -+ default m -+ ---help--- -+ A simple hardware latency detector. Use this module to detect -+ large latencies introduced by the behavior of the underlying -+ system firmware external to Linux. We do this using periodic -+ use of stop_machine to grab all available CPUs and measure -+ for unexplainable gaps in the CPU timestamp counter(s). By -+ default, the module is not enabled until the "enable" file -+ within the "hwlat_detector" debugfs directory is toggled. -+ -+ This module is often used to detect SMI (System Management -+ Interrupts) on x86 systems, though is not x86 specific. To -+ this end, we default to using a sample window of 1 second, -+ during which we will sample for 0.5 seconds. If an SMI or -+ similar event occurs during that time, it is recorded -+ into an 8K samples global ring buffer until retreived. -+ -+ WARNING: This software should never be enabled (it can be built -+ but should not be turned on after it is loaded) in a production -+ environment where high latencies are a concern since the -+ sampling mechanism actually introduces latencies for -+ regular tasks while the CPU(s) are being held. -+ -+ If unsure, say N -+ - config PHANTOM - tristate "Sensable PHANToM (PCI)" - depends on PCI -diff -Nur linux-4.1.20.orig/drivers/misc/Makefile linux-4.1.20/drivers/misc/Makefile ---- linux-4.1.20.orig/drivers/misc/Makefile 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/misc/Makefile 2016-03-21 20:18:31.000000000 +0100 -@@ -38,6 +38,7 @@ - obj-$(CONFIG_HMC6352) += hmc6352.o - obj-y += eeprom/ - obj-y += cb710/ -+obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o - obj-$(CONFIG_SPEAR13XX_PCIE_GADGET) += spear13xx_pcie_gadget.o - obj-$(CONFIG_VMWARE_BALLOON) += vmw_balloon.o - obj-$(CONFIG_ARM_CHARLCD) += arm-charlcd.o -diff -Nur linux-4.1.20.orig/drivers/misc/hwlat_detector.c linux-4.1.20/drivers/misc/hwlat_detector.c ---- linux-4.1.20.orig/drivers/misc/hwlat_detector.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/drivers/misc/hwlat_detector.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/misc/hwlat_detector.c linux-4.1.26/drivers/misc/hwlat_detector.c +--- linux-4.1.26.orig/drivers/misc/hwlat_detector.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/drivers/misc/hwlat_detector.c 2016-06-19 15:30:58.643295653 +0200 @@ -0,0 +1,1240 @@ +/* + * hwlat_detector.c - A simple Hardware Latency detector. @@ -8413,9 +8329,93 @@ diff -Nur linux-4.1.20.orig/drivers/misc/hwlat_detector.c linux-4.1.20/drivers/m + +module_init(detector_init); +module_exit(detector_exit); -diff -Nur linux-4.1.20.orig/drivers/mmc/host/mmci.c linux-4.1.20/drivers/mmc/host/mmci.c ---- linux-4.1.20.orig/drivers/mmc/host/mmci.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/mmc/host/mmci.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/misc/Kconfig linux-4.1.26/drivers/misc/Kconfig +--- linux-4.1.26.orig/drivers/misc/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/misc/Kconfig 2016-06-19 15:30:58.639295498 +0200 +@@ -54,6 +54,7 @@ + config ATMEL_TCLIB + bool "Atmel AT32/AT91 Timer/Counter Library" + depends on (AVR32 || ARCH_AT91) ++ default y if PREEMPT_RT_FULL + help + Select this if you want a library to allocate the Timer/Counter + blocks found on many Atmel processors. This facilitates using +@@ -69,8 +70,7 @@ + are combined to make a single 32-bit timer. + + When GENERIC_CLOCKEVENTS is defined, the third timer channel +- may be used as a clock event device supporting oneshot mode +- (delays of up to two seconds) based on the 32 KiHz clock. ++ may be used as a clock event device supporting oneshot mode. + + config ATMEL_TCB_CLKSRC_BLOCK + int +@@ -84,6 +84,15 @@ + TC can be used for other purposes, such as PWM generation and + interval timing. + ++config ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK ++ bool "TC Block use 32 KiHz clock" ++ depends on ATMEL_TCB_CLKSRC ++ default y if !PREEMPT_RT_FULL ++ help ++ Select this to use 32 KiHz base clock rate as TC block clock ++ source for clock events. ++ ++ + config DUMMY_IRQ + tristate "Dummy IRQ handler" + default n +@@ -113,6 +122,35 @@ + for information on the specific driver level and support statement + for your IBM server. + ++config HWLAT_DETECTOR ++ tristate "Testing module to detect hardware-induced latencies" ++ depends on DEBUG_FS ++ depends on RING_BUFFER ++ default m ++ ---help--- ++ A simple hardware latency detector. Use this module to detect ++ large latencies introduced by the behavior of the underlying ++ system firmware external to Linux. We do this using periodic ++ use of stop_machine to grab all available CPUs and measure ++ for unexplainable gaps in the CPU timestamp counter(s). By ++ default, the module is not enabled until the "enable" file ++ within the "hwlat_detector" debugfs directory is toggled. ++ ++ This module is often used to detect SMI (System Management ++ Interrupts) on x86 systems, though is not x86 specific. To ++ this end, we default to using a sample window of 1 second, ++ during which we will sample for 0.5 seconds. If an SMI or ++ similar event occurs during that time, it is recorded ++ into an 8K samples global ring buffer until retreived. ++ ++ WARNING: This software should never be enabled (it can be built ++ but should not be turned on after it is loaded) in a production ++ environment where high latencies are a concern since the ++ sampling mechanism actually introduces latencies for ++ regular tasks while the CPU(s) are being held. ++ ++ If unsure, say N ++ + config PHANTOM + tristate "Sensable PHANToM (PCI)" + depends on PCI +diff -Nur linux-4.1.26.orig/drivers/misc/Makefile linux-4.1.26/drivers/misc/Makefile +--- linux-4.1.26.orig/drivers/misc/Makefile 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/misc/Makefile 2016-06-19 15:30:58.639295498 +0200 +@@ -38,6 +38,7 @@ + obj-$(CONFIG_HMC6352) += hmc6352.o + obj-y += eeprom/ + obj-y += cb710/ ++obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o + obj-$(CONFIG_SPEAR13XX_PCIE_GADGET) += spear13xx_pcie_gadget.o + obj-$(CONFIG_VMWARE_BALLOON) += vmw_balloon.o + obj-$(CONFIG_ARM_CHARLCD) += arm-charlcd.o +diff -Nur linux-4.1.26.orig/drivers/mmc/host/mmci.c linux-4.1.26/drivers/mmc/host/mmci.c +--- linux-4.1.26.orig/drivers/mmc/host/mmci.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/mmc/host/mmci.c 2016-06-19 15:30:58.643295653 +0200 @@ -1155,15 +1155,12 @@ struct sg_mapping_iter *sg_miter = &host->sg_miter; struct variant_data *variant = host->variant; @@ -8441,9 +8441,9 @@ diff -Nur linux-4.1.20.orig/drivers/mmc/host/mmci.c linux-4.1.20/drivers/mmc/hos /* * If we have less than the fifo 'half-full' threshold to transfer, * trigger a PIO interrupt as soon as any data is available. -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/3com/3c59x.c linux-4.1.20/drivers/net/ethernet/3com/3c59x.c ---- linux-4.1.20.orig/drivers/net/ethernet/3com/3c59x.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/3com/3c59x.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/3com/3c59x.c linux-4.1.26/drivers/net/ethernet/3com/3c59x.c +--- linux-4.1.26.orig/drivers/net/ethernet/3com/3c59x.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/3com/3c59x.c 2016-06-19 15:30:58.643295653 +0200 @@ -842,9 +842,9 @@ { struct vortex_private *vp = netdev_priv(dev); @@ -8471,9 +8471,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/3com/3c59x.c linux-4.1.20/drive } } -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c linux-4.1.20/drivers/net/ethernet/atheros/atl1c/atl1c_main.c ---- linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/atheros/atl1c/atl1c_main.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c linux-4.1.26/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +--- linux-4.1.26.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/atheros/atl1c/atl1c_main.c 2016-06-19 15:30:58.643295653 +0200 @@ -2212,11 +2212,7 @@ } @@ -8487,9 +8487,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c linu if (atl1c_tpd_avail(adapter, type) < tpd_req) { /* no enough descriptor, just stop queue */ -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c linux-4.1.20/drivers/net/ethernet/atheros/atl1e/atl1e_main.c ---- linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/atheros/atl1e/atl1e_main.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c linux-4.1.26/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +--- linux-4.1.26.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/atheros/atl1e/atl1e_main.c 2016-06-19 15:30:58.643295653 +0200 @@ -1880,8 +1880,7 @@ return NETDEV_TX_OK; } @@ -8500,9 +8500,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c linu if (atl1e_tpd_avail(adapter) < tpd_req) { /* no enough descriptor, just stop queue */ -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/chelsio/cxgb/sge.c linux-4.1.20/drivers/net/ethernet/chelsio/cxgb/sge.c ---- linux-4.1.20.orig/drivers/net/ethernet/chelsio/cxgb/sge.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/chelsio/cxgb/sge.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/chelsio/cxgb/sge.c linux-4.1.26/drivers/net/ethernet/chelsio/cxgb/sge.c +--- linux-4.1.26.orig/drivers/net/ethernet/chelsio/cxgb/sge.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/chelsio/cxgb/sge.c 2016-06-19 15:30:58.643295653 +0200 @@ -1664,8 +1664,7 @@ struct cmdQ *q = &sge->cmdQ[qid]; unsigned int credits, pidx, genbit, count, use_sched_skb = 0; @@ -8513,9 +8513,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/chelsio/cxgb/sge.c linux-4.1.20 reclaim_completed_tx(sge, q); -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/freescale/gianfar.c linux-4.1.20/drivers/net/ethernet/freescale/gianfar.c ---- linux-4.1.20.orig/drivers/net/ethernet/freescale/gianfar.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/freescale/gianfar.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/freescale/gianfar.c linux-4.1.26/drivers/net/ethernet/freescale/gianfar.c +--- linux-4.1.26.orig/drivers/net/ethernet/freescale/gianfar.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/freescale/gianfar.c 2016-06-19 15:30:58.643295653 +0200 @@ -1540,7 +1540,7 @@ if (netif_running(ndev)) { @@ -8569,9 +8569,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/freescale/gianfar.c linux-4.1.2 } netif_dbg(priv, tx_err, dev, "Transmit Error\n"); } -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/neterion/s2io.c linux-4.1.20/drivers/net/ethernet/neterion/s2io.c ---- linux-4.1.20.orig/drivers/net/ethernet/neterion/s2io.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/neterion/s2io.c 2016-03-21 20:18:31.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/neterion/s2io.c linux-4.1.26/drivers/net/ethernet/neterion/s2io.c +--- linux-4.1.26.orig/drivers/net/ethernet/neterion/s2io.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/neterion/s2io.c 2016-06-19 15:30:58.647295807 +0200 @@ -4084,12 +4084,7 @@ [skb->priority & (MAX_TX_FIFOS - 1)]; fifo = &mac_control->fifos[queue]; @@ -8586,9 +8586,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/neterion/s2io.c linux-4.1.20/dr if (sp->config.multiq) { if (__netif_subqueue_stopped(dev, fifo->fifo_no)) { -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c linux-4.1.20/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c ---- linux-4.1.20.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c linux-4.1.26/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +--- linux-4.1.26.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 2016-06-19 15:30:58.647295807 +0200 @@ -2137,10 +2137,8 @@ struct pch_gbe_tx_ring *tx_ring = adapter->tx_ring; unsigned long flags; @@ -8602,9 +8602,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) { netif_stop_queue(netdev); spin_unlock_irqrestore(&tx_ring->tx_lock, flags); -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/realtek/8139too.c linux-4.1.20/drivers/net/ethernet/realtek/8139too.c ---- linux-4.1.20.orig/drivers/net/ethernet/realtek/8139too.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/realtek/8139too.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/realtek/8139too.c linux-4.1.26/drivers/net/ethernet/realtek/8139too.c +--- linux-4.1.26.orig/drivers/net/ethernet/realtek/8139too.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/realtek/8139too.c 2016-06-19 15:30:58.647295807 +0200 @@ -2229,7 +2229,7 @@ struct rtl8139_private *tp = netdev_priv(dev); const int irq = tp->pci_dev->irq; @@ -8614,9 +8614,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/realtek/8139too.c linux-4.1.20/ rtl8139_interrupt(irq, dev); enable_irq(irq); } -diff -Nur linux-4.1.20.orig/drivers/net/ethernet/tehuti/tehuti.c linux-4.1.20/drivers/net/ethernet/tehuti/tehuti.c ---- linux-4.1.20.orig/drivers/net/ethernet/tehuti/tehuti.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/ethernet/tehuti/tehuti.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/ethernet/tehuti/tehuti.c linux-4.1.26/drivers/net/ethernet/tehuti/tehuti.c +--- linux-4.1.26.orig/drivers/net/ethernet/tehuti/tehuti.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/ethernet/tehuti/tehuti.c 2016-06-19 15:30:58.647295807 +0200 @@ -1629,13 +1629,8 @@ unsigned long flags; @@ -8633,9 +8633,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/ethernet/tehuti/tehuti.c linux-4.1.20/dr /* build tx descriptor */ BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */ -diff -Nur linux-4.1.20.orig/drivers/net/rionet.c linux-4.1.20/drivers/net/rionet.c ---- linux-4.1.20.orig/drivers/net/rionet.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/rionet.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/rionet.c linux-4.1.26/drivers/net/rionet.c +--- linux-4.1.26.orig/drivers/net/rionet.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/rionet.c 2016-06-19 15:30:58.647295807 +0200 @@ -174,11 +174,7 @@ unsigned long flags; int add_num = 1; @@ -8649,9 +8649,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/rionet.c linux-4.1.20/drivers/net/rionet if (is_multicast_ether_addr(eth->h_dest)) add_num = nets[rnet->mport->id].nact; -diff -Nur linux-4.1.20.orig/drivers/net/wireless/orinoco/orinoco_usb.c linux-4.1.20/drivers/net/wireless/orinoco/orinoco_usb.c ---- linux-4.1.20.orig/drivers/net/wireless/orinoco/orinoco_usb.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/net/wireless/orinoco/orinoco_usb.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/net/wireless/orinoco/orinoco_usb.c linux-4.1.26/drivers/net/wireless/orinoco/orinoco_usb.c +--- linux-4.1.26.orig/drivers/net/wireless/orinoco/orinoco_usb.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/net/wireless/orinoco/orinoco_usb.c 2016-06-19 15:30:58.647295807 +0200 @@ -697,7 +697,7 @@ while (!ctx->done.done && msecs--) udelay(1000); @@ -8661,9 +8661,9 @@ diff -Nur linux-4.1.20.orig/drivers/net/wireless/orinoco/orinoco_usb.c linux-4.1 ctx->done.done); } break; -diff -Nur linux-4.1.20.orig/drivers/pci/access.c linux-4.1.20/drivers/pci/access.c ---- linux-4.1.20.orig/drivers/pci/access.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/pci/access.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/pci/access.c linux-4.1.26/drivers/pci/access.c +--- linux-4.1.26.orig/drivers/pci/access.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/pci/access.c 2016-06-19 15:30:58.647295807 +0200 @@ -561,7 +561,7 @@ WARN_ON(!dev->block_cfg_access); @@ -8673,9 +8673,9 @@ diff -Nur linux-4.1.20.orig/drivers/pci/access.c linux-4.1.20/drivers/pci/access raw_spin_unlock_irqrestore(&pci_lock, flags); } EXPORT_SYMBOL_GPL(pci_cfg_access_unlock); -diff -Nur linux-4.1.20.orig/drivers/scsi/fcoe/fcoe.c linux-4.1.20/drivers/scsi/fcoe/fcoe.c ---- linux-4.1.20.orig/drivers/scsi/fcoe/fcoe.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/scsi/fcoe/fcoe.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/scsi/fcoe/fcoe.c linux-4.1.26/drivers/scsi/fcoe/fcoe.c +--- linux-4.1.26.orig/drivers/scsi/fcoe/fcoe.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/scsi/fcoe/fcoe.c 2016-06-19 15:30:58.647295807 +0200 @@ -1287,7 +1287,7 @@ struct sk_buff *skb; #ifdef CONFIG_SMP @@ -8739,9 +8739,9 @@ diff -Nur linux-4.1.20.orig/drivers/scsi/fcoe/fcoe.c linux-4.1.20/drivers/scsi/f kfree_skb(skb); } -diff -Nur linux-4.1.20.orig/drivers/scsi/fcoe/fcoe_ctlr.c linux-4.1.20/drivers/scsi/fcoe/fcoe_ctlr.c ---- linux-4.1.20.orig/drivers/scsi/fcoe/fcoe_ctlr.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/scsi/fcoe/fcoe_ctlr.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/scsi/fcoe/fcoe_ctlr.c linux-4.1.26/drivers/scsi/fcoe/fcoe_ctlr.c +--- linux-4.1.26.orig/drivers/scsi/fcoe/fcoe_ctlr.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/scsi/fcoe/fcoe_ctlr.c 2016-06-19 15:30:58.651295961 +0200 @@ -831,7 +831,7 @@ INIT_LIST_HEAD(&del_list); @@ -8760,9 +8760,9 @@ diff -Nur linux-4.1.20.orig/drivers/scsi/fcoe/fcoe_ctlr.c linux-4.1.20/drivers/s list_for_each_entry_safe(fcf, next, &del_list, list) { /* Removes fcf from current list */ -diff -Nur linux-4.1.20.orig/drivers/scsi/libfc/fc_exch.c linux-4.1.20/drivers/scsi/libfc/fc_exch.c ---- linux-4.1.20.orig/drivers/scsi/libfc/fc_exch.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/scsi/libfc/fc_exch.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/scsi/libfc/fc_exch.c linux-4.1.26/drivers/scsi/libfc/fc_exch.c +--- linux-4.1.26.orig/drivers/scsi/libfc/fc_exch.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/scsi/libfc/fc_exch.c 2016-06-19 15:30:58.651295961 +0200 @@ -814,10 +814,10 @@ } memset(ep, 0, sizeof(*ep)); @@ -8776,9 +8776,9 @@ diff -Nur linux-4.1.20.orig/drivers/scsi/libfc/fc_exch.c linux-4.1.20/drivers/sc /* peek cache of free slot */ if (pool->left != FC_XID_UNKNOWN) { -diff -Nur linux-4.1.20.orig/drivers/scsi/libsas/sas_ata.c linux-4.1.20/drivers/scsi/libsas/sas_ata.c ---- linux-4.1.20.orig/drivers/scsi/libsas/sas_ata.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/scsi/libsas/sas_ata.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/scsi/libsas/sas_ata.c linux-4.1.26/drivers/scsi/libsas/sas_ata.c +--- linux-4.1.26.orig/drivers/scsi/libsas/sas_ata.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/scsi/libsas/sas_ata.c 2016-06-19 15:30:58.651295961 +0200 @@ -190,7 +190,7 @@ /* TODO: audit callers to ensure they are ready for qc_issue to * unconditionally re-enable interrupts @@ -8797,9 +8797,9 @@ diff -Nur linux-4.1.20.orig/drivers/scsi/libsas/sas_ata.c linux-4.1.20/drivers/s return ret; } -diff -Nur linux-4.1.20.orig/drivers/scsi/qla2xxx/qla_inline.h linux-4.1.20/drivers/scsi/qla2xxx/qla_inline.h ---- linux-4.1.20.orig/drivers/scsi/qla2xxx/qla_inline.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/scsi/qla2xxx/qla_inline.h 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/scsi/qla2xxx/qla_inline.h linux-4.1.26/drivers/scsi/qla2xxx/qla_inline.h +--- linux-4.1.26.orig/drivers/scsi/qla2xxx/qla_inline.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/scsi/qla2xxx/qla_inline.h 2016-06-19 15:30:58.651295961 +0200 @@ -59,12 +59,12 @@ { unsigned long flags; @@ -8815,9 +8815,9 @@ diff -Nur linux-4.1.20.orig/drivers/scsi/qla2xxx/qla_inline.h linux-4.1.20/drive } static inline uint8_t * -diff -Nur linux-4.1.20.orig/drivers/thermal/x86_pkg_temp_thermal.c linux-4.1.20/drivers/thermal/x86_pkg_temp_thermal.c ---- linux-4.1.20.orig/drivers/thermal/x86_pkg_temp_thermal.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/thermal/x86_pkg_temp_thermal.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/thermal/x86_pkg_temp_thermal.c linux-4.1.26/drivers/thermal/x86_pkg_temp_thermal.c +--- linux-4.1.26.orig/drivers/thermal/x86_pkg_temp_thermal.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/thermal/x86_pkg_temp_thermal.c 2016-06-19 15:30:58.651295961 +0200 @@ -29,6 +29,7 @@ #include <linux/pm.h> #include <linux/thermal.h> @@ -8920,9 +8920,9 @@ diff -Nur linux-4.1.20.orig/drivers/thermal/x86_pkg_temp_thermal.c linux-4.1.20/ for_each_online_cpu(i) cancel_delayed_work_sync( &per_cpu(pkg_temp_thermal_threshold_work, i)); -diff -Nur linux-4.1.20.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.20/drivers/tty/serial/8250/8250_core.c ---- linux-4.1.20.orig/drivers/tty/serial/8250/8250_core.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/tty/serial/8250/8250_core.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.26/drivers/tty/serial/8250/8250_core.c +--- linux-4.1.26.orig/drivers/tty/serial/8250/8250_core.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/tty/serial/8250/8250_core.c 2016-06-19 15:30:58.651295961 +0200 @@ -36,6 +36,7 @@ #include <linux/nmi.h> #include <linux/mutex.h> @@ -8958,9 +8958,9 @@ diff -Nur linux-4.1.20.orig/drivers/tty/serial/8250/8250_core.c linux-4.1.20/dri locked = spin_trylock_irqsave(&port->lock, flags); else spin_lock_irqsave(&port->lock, flags); -diff -Nur linux-4.1.20.orig/drivers/tty/serial/amba-pl011.c linux-4.1.20/drivers/tty/serial/amba-pl011.c ---- linux-4.1.20.orig/drivers/tty/serial/amba-pl011.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/tty/serial/amba-pl011.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/tty/serial/amba-pl011.c linux-4.1.26/drivers/tty/serial/amba-pl011.c +--- linux-4.1.26.orig/drivers/tty/serial/amba-pl011.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/tty/serial/amba-pl011.c 2016-06-19 15:30:58.651295961 +0200 @@ -2000,13 +2000,19 @@ clk_enable(uap->clk); @@ -8994,9 +8994,9 @@ diff -Nur linux-4.1.20.orig/drivers/tty/serial/amba-pl011.c linux-4.1.20/drivers clk_disable(uap->clk); } -diff -Nur linux-4.1.20.orig/drivers/tty/serial/omap-serial.c linux-4.1.20/drivers/tty/serial/omap-serial.c ---- linux-4.1.20.orig/drivers/tty/serial/omap-serial.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/tty/serial/omap-serial.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/tty/serial/omap-serial.c linux-4.1.26/drivers/tty/serial/omap-serial.c +--- linux-4.1.26.orig/drivers/tty/serial/omap-serial.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/tty/serial/omap-serial.c 2016-06-19 15:30:58.651295961 +0200 @@ -1282,13 +1282,10 @@ pm_runtime_get_sync(up->dev); @@ -9024,9 +9024,9 @@ diff -Nur linux-4.1.20.orig/drivers/tty/serial/omap-serial.c linux-4.1.20/driver } static int __init -diff -Nur linux-4.1.20.orig/drivers/usb/core/hcd.c linux-4.1.20/drivers/usb/core/hcd.c ---- linux-4.1.20.orig/drivers/usb/core/hcd.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/usb/core/hcd.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/usb/core/hcd.c linux-4.1.26/drivers/usb/core/hcd.c +--- linux-4.1.26.orig/drivers/usb/core/hcd.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/usb/core/hcd.c 2016-06-19 15:30:58.655296115 +0200 @@ -1684,9 +1684,9 @@ * and no one may trigger the above deadlock situation when * running complete() in tasklet. @@ -9039,10 +9039,10 @@ diff -Nur linux-4.1.20.orig/drivers/usb/core/hcd.c linux-4.1.20/drivers/usb/core usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count); -diff -Nur linux-4.1.20.orig/drivers/usb/gadget/function/f_fs.c linux-4.1.20/drivers/usb/gadget/function/f_fs.c ---- linux-4.1.20.orig/drivers/usb/gadget/function/f_fs.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/usb/gadget/function/f_fs.c 2016-03-21 20:18:32.000000000 +0100 -@@ -1405,7 +1405,7 @@ +diff -Nur linux-4.1.26.orig/drivers/usb/gadget/function/f_fs.c linux-4.1.26/drivers/usb/gadget/function/f_fs.c +--- linux-4.1.26.orig/drivers/usb/gadget/function/f_fs.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/usb/gadget/function/f_fs.c 2016-06-19 15:30:58.655296115 +0200 +@@ -1404,7 +1404,7 @@ pr_info("%s(): freeing\n", __func__); ffs_data_clear(ffs); BUG_ON(waitqueue_active(&ffs->ev.waitq) || @@ -9051,9 +9051,9 @@ diff -Nur linux-4.1.20.orig/drivers/usb/gadget/function/f_fs.c linux-4.1.20/driv kfree(ffs->dev_name); kfree(ffs); } -diff -Nur linux-4.1.20.orig/drivers/usb/gadget/legacy/inode.c linux-4.1.20/drivers/usb/gadget/legacy/inode.c ---- linux-4.1.20.orig/drivers/usb/gadget/legacy/inode.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/drivers/usb/gadget/legacy/inode.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/drivers/usb/gadget/legacy/inode.c linux-4.1.26/drivers/usb/gadget/legacy/inode.c +--- linux-4.1.26.orig/drivers/usb/gadget/legacy/inode.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/drivers/usb/gadget/legacy/inode.c 2016-06-19 15:30:58.655296115 +0200 @@ -345,7 +345,7 @@ spin_unlock_irq (&epdata->dev->lock); @@ -9072,9 +9072,9 @@ diff -Nur linux-4.1.20.orig/drivers/usb/gadget/legacy/inode.c linux-4.1.20/drive if (epdata->status == -ECONNRESET) epdata->status = -EINTR; } else { -diff -Nur linux-4.1.20.orig/fs/aio.c linux-4.1.20/fs/aio.c ---- linux-4.1.20.orig/fs/aio.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/aio.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/aio.c linux-4.1.26/fs/aio.c +--- linux-4.1.26.orig/fs/aio.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/aio.c 2016-06-19 15:30:58.655296115 +0200 @@ -40,6 +40,7 @@ #include <linux/ramfs.h> #include <linux/percpu-refcount.h> @@ -9150,9 +9150,9 @@ diff -Nur linux-4.1.20.orig/fs/aio.c linux-4.1.20/fs/aio.c static int ioctx_add_table(struct kioctx *ctx, struct mm_struct *mm) { unsigned i, new_nr; -diff -Nur linux-4.1.20.orig/fs/autofs4/autofs_i.h linux-4.1.20/fs/autofs4/autofs_i.h ---- linux-4.1.20.orig/fs/autofs4/autofs_i.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/autofs4/autofs_i.h 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/autofs4/autofs_i.h linux-4.1.26/fs/autofs4/autofs_i.h +--- linux-4.1.26.orig/fs/autofs4/autofs_i.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/autofs4/autofs_i.h 2016-06-19 15:30:58.655296115 +0200 @@ -34,6 +34,7 @@ #include <linux/sched.h> #include <linux/mount.h> @@ -9161,9 +9161,9 @@ diff -Nur linux-4.1.20.orig/fs/autofs4/autofs_i.h linux-4.1.20/fs/autofs4/autofs #include <asm/current.h> #include <asm/uaccess.h> -diff -Nur linux-4.1.20.orig/fs/autofs4/expire.c linux-4.1.20/fs/autofs4/expire.c ---- linux-4.1.20.orig/fs/autofs4/expire.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/autofs4/expire.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/autofs4/expire.c linux-4.1.26/fs/autofs4/expire.c +--- linux-4.1.26.orig/fs/autofs4/expire.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/autofs4/expire.c 2016-06-19 15:30:58.655296115 +0200 @@ -150,7 +150,7 @@ parent = p->d_parent; if (!spin_trylock(&parent->d_lock)) { @@ -9173,9 +9173,9 @@ diff -Nur linux-4.1.20.orig/fs/autofs4/expire.c linux-4.1.20/fs/autofs4/expire.c goto relock; } spin_unlock(&p->d_lock); -diff -Nur linux-4.1.20.orig/fs/buffer.c linux-4.1.20/fs/buffer.c ---- linux-4.1.20.orig/fs/buffer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/buffer.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/buffer.c linux-4.1.26/fs/buffer.c +--- linux-4.1.26.orig/fs/buffer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/buffer.c 2016-06-19 15:30:58.655296115 +0200 @@ -301,8 +301,7 @@ * decide that the page is now completely done. */ @@ -9243,9 +9243,9 @@ diff -Nur linux-4.1.20.orig/fs/buffer.c linux-4.1.20/fs/buffer.c preempt_disable(); __this_cpu_inc(bh_accounting.nr); recalc_bh_state(); -diff -Nur linux-4.1.20.orig/fs/dcache.c linux-4.1.20/fs/dcache.c ---- linux-4.1.20.orig/fs/dcache.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/dcache.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/dcache.c linux-4.1.26/fs/dcache.c +--- linux-4.1.26.orig/fs/dcache.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/dcache.c 2016-06-19 15:30:58.655296115 +0200 @@ -19,6 +19,7 @@ #include <linux/mm.h> #include <linux/fs.h> @@ -9272,9 +9272,9 @@ diff -Nur linux-4.1.20.orig/fs/dcache.c linux-4.1.20/fs/dcache.c goto again; } dentry->d_flags &= ~DCACHE_CANT_MOUNT; -diff -Nur linux-4.1.20.orig/fs/eventpoll.c linux-4.1.20/fs/eventpoll.c ---- linux-4.1.20.orig/fs/eventpoll.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/eventpoll.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/eventpoll.c linux-4.1.26/fs/eventpoll.c +--- linux-4.1.26.orig/fs/eventpoll.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/eventpoll.c 2016-06-19 15:30:58.655296115 +0200 @@ -505,12 +505,12 @@ */ static void ep_poll_safewake(wait_queue_head_t *wq) @@ -9290,9 +9290,9 @@ diff -Nur linux-4.1.20.orig/fs/eventpoll.c linux-4.1.20/fs/eventpoll.c } static void ep_remove_wait_queue(struct eppoll_entry *pwq) -diff -Nur linux-4.1.20.orig/fs/exec.c linux-4.1.20/fs/exec.c ---- linux-4.1.20.orig/fs/exec.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/exec.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/exec.c linux-4.1.26/fs/exec.c +--- linux-4.1.26.orig/fs/exec.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/exec.c 2016-06-19 15:30:58.659296270 +0200 @@ -859,12 +859,14 @@ } } @@ -9308,9 +9308,9 @@ diff -Nur linux-4.1.20.orig/fs/exec.c linux-4.1.20/fs/exec.c task_unlock(tsk); if (old_mm) { up_read(&old_mm->mmap_sem); -diff -Nur linux-4.1.20.orig/fs/f2fs/f2fs.h linux-4.1.20/fs/f2fs/f2fs.h ---- linux-4.1.20.orig/fs/f2fs/f2fs.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/f2fs/f2fs.h 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/f2fs/f2fs.h linux-4.1.26/fs/f2fs/f2fs.h +--- linux-4.1.26.orig/fs/f2fs/f2fs.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/f2fs/f2fs.h 2016-06-19 15:30:58.659296270 +0200 @@ -22,7 +22,6 @@ #ifdef CONFIG_F2FS_CHECK_FS @@ -9336,9 +9336,9 @@ diff -Nur linux-4.1.20.orig/fs/f2fs/f2fs.h linux-4.1.20/fs/f2fs/f2fs.h } static inline void f2fs_unlock_all(struct f2fs_sb_info *sbi) -diff -Nur linux-4.1.20.orig/fs/jbd/checkpoint.c linux-4.1.20/fs/jbd/checkpoint.c ---- linux-4.1.20.orig/fs/jbd/checkpoint.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/jbd/checkpoint.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/jbd/checkpoint.c linux-4.1.26/fs/jbd/checkpoint.c +--- linux-4.1.26.orig/fs/jbd/checkpoint.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/jbd/checkpoint.c 2016-06-19 15:30:58.659296270 +0200 @@ -129,6 +129,8 @@ if (journal->j_flags & JFS_ABORT) return; @@ -9348,9 +9348,9 @@ diff -Nur linux-4.1.20.orig/fs/jbd/checkpoint.c linux-4.1.20/fs/jbd/checkpoint.c mutex_lock(&journal->j_checkpoint_mutex); /* -diff -Nur linux-4.1.20.orig/fs/jbd2/checkpoint.c linux-4.1.20/fs/jbd2/checkpoint.c ---- linux-4.1.20.orig/fs/jbd2/checkpoint.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/jbd2/checkpoint.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/jbd2/checkpoint.c linux-4.1.26/fs/jbd2/checkpoint.c +--- linux-4.1.26.orig/fs/jbd2/checkpoint.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/jbd2/checkpoint.c 2016-06-19 15:30:58.659296270 +0200 @@ -116,6 +116,8 @@ nblocks = jbd2_space_needed(journal); while (jbd2_log_space_left(journal) < nblocks) { @@ -9360,9 +9360,9 @@ diff -Nur linux-4.1.20.orig/fs/jbd2/checkpoint.c linux-4.1.20/fs/jbd2/checkpoint mutex_lock(&journal->j_checkpoint_mutex); /* -diff -Nur linux-4.1.20.orig/fs/namespace.c linux-4.1.20/fs/namespace.c ---- linux-4.1.20.orig/fs/namespace.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/namespace.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/namespace.c linux-4.1.26/fs/namespace.c +--- linux-4.1.26.orig/fs/namespace.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/namespace.c 2016-06-19 15:30:58.659296270 +0200 @@ -14,6 +14,7 @@ #include <linux/mnt_namespace.h> #include <linux/user_namespace.h> @@ -9385,9 +9385,9 @@ diff -Nur linux-4.1.20.orig/fs/namespace.c linux-4.1.20/fs/namespace.c /* * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will * be set to match its requirements. So we must not load that until -diff -Nur linux-4.1.20.orig/fs/ntfs/aops.c linux-4.1.20/fs/ntfs/aops.c ---- linux-4.1.20.orig/fs/ntfs/aops.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/ntfs/aops.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/ntfs/aops.c linux-4.1.26/fs/ntfs/aops.c +--- linux-4.1.26.orig/fs/ntfs/aops.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/ntfs/aops.c 2016-06-19 15:30:58.659296270 +0200 @@ -107,8 +107,7 @@ "0x%llx.", (unsigned long long)bh->b_blocknr); } @@ -9435,9 +9435,9 @@ diff -Nur linux-4.1.20.orig/fs/ntfs/aops.c linux-4.1.20/fs/ntfs/aops.c } /** -diff -Nur linux-4.1.20.orig/fs/timerfd.c linux-4.1.20/fs/timerfd.c ---- linux-4.1.20.orig/fs/timerfd.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/timerfd.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/timerfd.c linux-4.1.26/fs/timerfd.c +--- linux-4.1.26.orig/fs/timerfd.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/timerfd.c 2016-06-19 15:30:58.659296270 +0200 @@ -450,7 +450,10 @@ break; } @@ -9450,9 +9450,9 @@ diff -Nur linux-4.1.20.orig/fs/timerfd.c linux-4.1.20/fs/timerfd.c } /* -diff -Nur linux-4.1.20.orig/fs/xfs/xfs_inode.c linux-4.1.20/fs/xfs/xfs_inode.c ---- linux-4.1.20.orig/fs/xfs/xfs_inode.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/xfs/xfs_inode.c 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/xfs/xfs_inode.c linux-4.1.26/fs/xfs/xfs_inode.c +--- linux-4.1.26.orig/fs/xfs/xfs_inode.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/xfs/xfs_inode.c 2016-06-19 15:30:58.659296270 +0200 @@ -164,7 +164,7 @@ (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL)); ASSERT((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL)) != @@ -9575,9 +9575,9 @@ diff -Nur linux-4.1.20.orig/fs/xfs/xfs_inode.c linux-4.1.20/fs/xfs/xfs_inode.c try_lock = 0; i = 0; -diff -Nur linux-4.1.20.orig/fs/xfs/xfs_inode.h linux-4.1.20/fs/xfs/xfs_inode.h ---- linux-4.1.20.orig/fs/xfs/xfs_inode.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/fs/xfs/xfs_inode.h 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/fs/xfs/xfs_inode.h linux-4.1.26/fs/xfs/xfs_inode.h +--- linux-4.1.26.orig/fs/xfs/xfs_inode.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/fs/xfs/xfs_inode.h 2016-06-19 15:30:58.659296270 +0200 @@ -284,9 +284,9 @@ * Flags for lockdep annotations. * @@ -9641,29 +9641,22 @@ diff -Nur linux-4.1.20.orig/fs/xfs/xfs_inode.h linux-4.1.20/fs/xfs/xfs_inode.h - -#define XFS_IOLOCK_SHIFT 16 -#define XFS_IOLOCK_PARENT (XFS_LOCK_PARENT << XFS_IOLOCK_SHIFT) -- --#define XFS_MMAPLOCK_SHIFT 20 -- --#define XFS_ILOCK_SHIFT 24 --#define XFS_ILOCK_PARENT (XFS_LOCK_PARENT << XFS_ILOCK_SHIFT) --#define XFS_ILOCK_RTBITMAP (XFS_LOCK_RTBITMAP << XFS_ILOCK_SHIFT) --#define XFS_ILOCK_RTSUM (XFS_LOCK_RTSUM << XFS_ILOCK_SHIFT) -- --#define XFS_IOLOCK_DEP_MASK 0x000f0000 --#define XFS_MMAPLOCK_DEP_MASK 0x00f00000 --#define XFS_ILOCK_DEP_MASK 0xff000000 --#define XFS_LOCK_DEP_MASK (XFS_IOLOCK_DEP_MASK | \ +#define XFS_IOLOCK_SHIFT 16 +#define XFS_IOLOCK_PARENT_VAL 4 +#define XFS_IOLOCK_MAX_SUBCLASS (XFS_IOLOCK_PARENT_VAL - 1) +#define XFS_IOLOCK_DEP_MASK 0x000f0000 +#define XFS_IOLOCK_PARENT (XFS_IOLOCK_PARENT_VAL << XFS_IOLOCK_SHIFT) -+ + +-#define XFS_MMAPLOCK_SHIFT 20 +#define XFS_MMAPLOCK_SHIFT 20 +#define XFS_MMAPLOCK_NUMORDER 0 +#define XFS_MMAPLOCK_MAX_SUBCLASS 3 +#define XFS_MMAPLOCK_DEP_MASK 0x00f00000 -+ + +-#define XFS_ILOCK_SHIFT 24 +-#define XFS_ILOCK_PARENT (XFS_LOCK_PARENT << XFS_ILOCK_SHIFT) +-#define XFS_ILOCK_RTBITMAP (XFS_LOCK_RTBITMAP << XFS_ILOCK_SHIFT) +-#define XFS_ILOCK_RTSUM (XFS_LOCK_RTSUM << XFS_ILOCK_SHIFT) +#define XFS_ILOCK_SHIFT 24 +#define XFS_ILOCK_PARENT_VAL 5 +#define XFS_ILOCK_MAX_SUBCLASS (XFS_ILOCK_PARENT_VAL - 1) @@ -9673,14 +9666,18 @@ diff -Nur linux-4.1.20.orig/fs/xfs/xfs_inode.h linux-4.1.20/fs/xfs/xfs_inode.h +#define XFS_ILOCK_PARENT (XFS_ILOCK_PARENT_VAL << XFS_ILOCK_SHIFT) +#define XFS_ILOCK_RTBITMAP (XFS_ILOCK_RTBITMAP_VAL << XFS_ILOCK_SHIFT) +#define XFS_ILOCK_RTSUM (XFS_ILOCK_RTSUM_VAL << XFS_ILOCK_SHIFT) -+ + +-#define XFS_IOLOCK_DEP_MASK 0x000f0000 +-#define XFS_MMAPLOCK_DEP_MASK 0x00f00000 +-#define XFS_ILOCK_DEP_MASK 0xff000000 +-#define XFS_LOCK_DEP_MASK (XFS_IOLOCK_DEP_MASK | \ +#define XFS_LOCK_SUBCLASS_MASK (XFS_IOLOCK_DEP_MASK | \ XFS_MMAPLOCK_DEP_MASK | \ XFS_ILOCK_DEP_MASK) -diff -Nur linux-4.1.20.orig/include/acpi/platform/aclinux.h linux-4.1.20/include/acpi/platform/aclinux.h ---- linux-4.1.20.orig/include/acpi/platform/aclinux.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/acpi/platform/aclinux.h 2016-03-21 20:18:32.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/acpi/platform/aclinux.h linux-4.1.26/include/acpi/platform/aclinux.h +--- linux-4.1.26.orig/include/acpi/platform/aclinux.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/acpi/platform/aclinux.h 2016-06-19 15:30:58.659296270 +0200 @@ -123,6 +123,7 @@ #define acpi_cache_t struct kmem_cache @@ -9710,9 +9707,9 @@ diff -Nur linux-4.1.20.orig/include/acpi/platform/aclinux.h linux-4.1.20/include /* * OSL interfaces used by debugger/disassembler */ -diff -Nur linux-4.1.20.orig/include/asm-generic/bug.h linux-4.1.20/include/asm-generic/bug.h ---- linux-4.1.20.orig/include/asm-generic/bug.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/asm-generic/bug.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/asm-generic/bug.h linux-4.1.26/include/asm-generic/bug.h +--- linux-4.1.26.orig/include/asm-generic/bug.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/asm-generic/bug.h 2016-06-19 15:30:58.663296424 +0200 @@ -206,6 +206,20 @@ # define WARN_ON_SMP(x) ({0;}) #endif @@ -9734,9 +9731,9 @@ diff -Nur linux-4.1.20.orig/include/asm-generic/bug.h linux-4.1.20/include/asm-g #endif /* __ASSEMBLY__ */ #endif -diff -Nur linux-4.1.20.orig/include/asm-generic/futex.h linux-4.1.20/include/asm-generic/futex.h ---- linux-4.1.20.orig/include/asm-generic/futex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/asm-generic/futex.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/asm-generic/futex.h linux-4.1.26/include/asm-generic/futex.h +--- linux-4.1.26.orig/include/asm-generic/futex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/asm-generic/futex.h 2016-06-19 15:30:58.663296424 +0200 @@ -8,8 +8,7 @@ #ifndef CONFIG_SMP /* @@ -9779,20 +9776,9 @@ diff -Nur linux-4.1.20.orig/include/asm-generic/futex.h linux-4.1.20/include/asm return 0; } -diff -Nur linux-4.1.20.orig/include/linux/blk-mq.h linux-4.1.20/include/linux/blk-mq.h ---- linux-4.1.20.orig/include/linux/blk-mq.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/blk-mq.h 2016-03-21 20:18:33.000000000 +0100 -@@ -202,6 +202,7 @@ - - struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index); - struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_tag_set *, unsigned int, int); -+void __blk_mq_complete_request_remote_work(struct work_struct *work); - - int blk_mq_request_started(struct request *rq); - void blk_mq_start_request(struct request *rq); -diff -Nur linux-4.1.20.orig/include/linux/blkdev.h linux-4.1.20/include/linux/blkdev.h ---- linux-4.1.20.orig/include/linux/blkdev.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/blkdev.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/blkdev.h linux-4.1.26/include/linux/blkdev.h +--- linux-4.1.26.orig/include/linux/blkdev.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/blkdev.h 2016-06-19 15:30:58.663296424 +0200 @@ -101,6 +101,7 @@ struct list_head queuelist; union { @@ -9810,9 +9796,20 @@ diff -Nur linux-4.1.20.orig/include/linux/blkdev.h linux-4.1.20/include/linux/bl struct percpu_ref mq_usage_counter; struct list_head all_q_node; -diff -Nur linux-4.1.20.orig/include/linux/bottom_half.h linux-4.1.20/include/linux/bottom_half.h ---- linux-4.1.20.orig/include/linux/bottom_half.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/bottom_half.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/blk-mq.h linux-4.1.26/include/linux/blk-mq.h +--- linux-4.1.26.orig/include/linux/blk-mq.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/blk-mq.h 2016-06-19 15:30:58.663296424 +0200 +@@ -202,6 +202,7 @@ + + struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index); + struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_tag_set *, unsigned int, int); ++void __blk_mq_complete_request_remote_work(struct work_struct *work); + + int blk_mq_request_started(struct request *rq); + void blk_mq_start_request(struct request *rq); +diff -Nur linux-4.1.26.orig/include/linux/bottom_half.h linux-4.1.26/include/linux/bottom_half.h +--- linux-4.1.26.orig/include/linux/bottom_half.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/bottom_half.h 2016-06-19 15:30:58.663296424 +0200 @@ -4,6 +4,39 @@ #include <linux/preempt.h> #include <linux/preempt_mask.h> @@ -9860,9 +9857,9 @@ diff -Nur linux-4.1.20.orig/include/linux/bottom_half.h linux-4.1.20/include/lin +#endif #endif /* _LINUX_BH_H */ -diff -Nur linux-4.1.20.orig/include/linux/buffer_head.h linux-4.1.20/include/linux/buffer_head.h ---- linux-4.1.20.orig/include/linux/buffer_head.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/buffer_head.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/buffer_head.h linux-4.1.26/include/linux/buffer_head.h +--- linux-4.1.26.orig/include/linux/buffer_head.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/buffer_head.h 2016-06-19 15:30:58.663296424 +0200 @@ -75,8 +75,52 @@ struct address_space *b_assoc_map; /* mapping this buffer is associated with */ @@ -9916,9 +9913,9 @@ diff -Nur linux-4.1.20.orig/include/linux/buffer_head.h linux-4.1.20/include/lin /* * macro tricks to expand the set_buffer_foo(), clear_buffer_foo() * and buffer_foo() functions. -diff -Nur linux-4.1.20.orig/include/linux/cgroup-defs.h linux-4.1.20/include/linux/cgroup-defs.h ---- linux-4.1.20.orig/include/linux/cgroup-defs.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/cgroup-defs.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/cgroup-defs.h linux-4.1.26/include/linux/cgroup-defs.h +--- linux-4.1.26.orig/include/linux/cgroup-defs.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/cgroup-defs.h 2016-06-19 15:30:58.663296424 +0200 @@ -124,6 +124,7 @@ /* percpu_ref killing and RCU release */ struct rcu_head rcu_head; @@ -9927,9 +9924,9 @@ diff -Nur linux-4.1.20.orig/include/linux/cgroup-defs.h linux-4.1.20/include/lin }; /* -diff -Nur linux-4.1.20.orig/include/linux/cgroup.h linux-4.1.20/include/linux/cgroup.h ---- linux-4.1.20.orig/include/linux/cgroup.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/cgroup.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/cgroup.h linux-4.1.26/include/linux/cgroup.h +--- linux-4.1.26.orig/include/linux/cgroup.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/cgroup.h 2016-06-19 15:30:58.663296424 +0200 @@ -17,6 +17,8 @@ #include <linux/fs.h> #include <linux/seq_file.h> @@ -9939,9 +9936,9 @@ diff -Nur linux-4.1.20.orig/include/linux/cgroup.h linux-4.1.20/include/linux/cg #include <linux/cgroup-defs.h> -diff -Nur linux-4.1.20.orig/include/linux/completion.h linux-4.1.20/include/linux/completion.h ---- linux-4.1.20.orig/include/linux/completion.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/completion.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/completion.h linux-4.1.26/include/linux/completion.h +--- linux-4.1.26.orig/include/linux/completion.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/completion.h 2016-06-19 15:30:58.663296424 +0200 @@ -7,8 +7,7 @@ * Atomic wait-for-completion handler data structures. * See kernel/sched/completion.c for details. @@ -9975,9 +9972,9 @@ diff -Nur linux-4.1.20.orig/include/linux/completion.h linux-4.1.20/include/linu } /** -diff -Nur linux-4.1.20.orig/include/linux/cpu.h linux-4.1.20/include/linux/cpu.h ---- linux-4.1.20.orig/include/linux/cpu.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/cpu.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/cpu.h linux-4.1.26/include/linux/cpu.h +--- linux-4.1.26.orig/include/linux/cpu.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/cpu.h 2016-06-19 15:30:58.663296424 +0200 @@ -231,6 +231,8 @@ extern void put_online_cpus(void); extern void cpu_hotplug_disable(void); @@ -9996,9 +9993,9 @@ diff -Nur linux-4.1.20.orig/include/linux/cpu.h linux-4.1.20/include/linux/cpu.h #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) #define __hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) /* These aren't inline functions due to a GCC bug. */ -diff -Nur linux-4.1.20.orig/include/linux/delay.h linux-4.1.20/include/linux/delay.h ---- linux-4.1.20.orig/include/linux/delay.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/delay.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/delay.h linux-4.1.26/include/linux/delay.h +--- linux-4.1.26.orig/include/linux/delay.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/delay.h 2016-06-19 15:30:58.663296424 +0200 @@ -52,4 +52,10 @@ msleep(seconds * 1000); } @@ -10010,9 +10007,22 @@ diff -Nur linux-4.1.20.orig/include/linux/delay.h linux-4.1.20/include/linux/del +#endif + #endif /* defined(_LINUX_DELAY_H) */ -diff -Nur linux-4.1.20.orig/include/linux/ftrace.h linux-4.1.20/include/linux/ftrace.h ---- linux-4.1.20.orig/include/linux/ftrace.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/ftrace.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/ftrace_event.h linux-4.1.26/include/linux/ftrace_event.h +--- linux-4.1.26.orig/include/linux/ftrace_event.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/ftrace_event.h 2016-06-19 15:30:58.663296424 +0200 +@@ -66,6 +66,9 @@ + unsigned char flags; + unsigned char preempt_count; + int pid; ++ unsigned short migrate_disable; ++ unsigned short padding; ++ unsigned char preempt_lazy_count; + }; + + #define FTRACE_MAX_EVENT \ +diff -Nur linux-4.1.26.orig/include/linux/ftrace.h linux-4.1.26/include/linux/ftrace.h +--- linux-4.1.26.orig/include/linux/ftrace.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/ftrace.h 2016-06-19 15:30:58.663296424 +0200 @@ -682,6 +682,18 @@ #define CALLER_ADDR5 ((unsigned long)ftrace_return_address(5)) #define CALLER_ADDR6 ((unsigned long)ftrace_return_address(6)) @@ -10032,22 +10042,9 @@ diff -Nur linux-4.1.20.orig/include/linux/ftrace.h linux-4.1.20/include/linux/ft #ifdef CONFIG_IRQSOFF_TRACER extern void time_hardirqs_on(unsigned long a0, unsigned long a1); extern void time_hardirqs_off(unsigned long a0, unsigned long a1); -diff -Nur linux-4.1.20.orig/include/linux/ftrace_event.h linux-4.1.20/include/linux/ftrace_event.h ---- linux-4.1.20.orig/include/linux/ftrace_event.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/ftrace_event.h 2016-03-21 20:18:33.000000000 +0100 -@@ -66,6 +66,9 @@ - unsigned char flags; - unsigned char preempt_count; - int pid; -+ unsigned short migrate_disable; -+ unsigned short padding; -+ unsigned char preempt_lazy_count; - }; - - #define FTRACE_MAX_EVENT \ -diff -Nur linux-4.1.20.orig/include/linux/highmem.h linux-4.1.20/include/linux/highmem.h ---- linux-4.1.20.orig/include/linux/highmem.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/highmem.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/highmem.h linux-4.1.26/include/linux/highmem.h +--- linux-4.1.26.orig/include/linux/highmem.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/highmem.h 2016-06-19 15:30:58.663296424 +0200 @@ -7,6 +7,7 @@ #include <linux/mm.h> #include <linux/uaccess.h> @@ -10128,9 +10125,9 @@ diff -Nur linux-4.1.20.orig/include/linux/highmem.h linux-4.1.20/include/linux/h #endif } -diff -Nur linux-4.1.20.orig/include/linux/hrtimer.h linux-4.1.20/include/linux/hrtimer.h ---- linux-4.1.20.orig/include/linux/hrtimer.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/hrtimer.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/hrtimer.h linux-4.1.26/include/linux/hrtimer.h +--- linux-4.1.26.orig/include/linux/hrtimer.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/hrtimer.h 2016-06-19 15:30:58.663296424 +0200 @@ -111,6 +111,11 @@ enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; @@ -10175,9 +10172,9 @@ diff -Nur linux-4.1.20.orig/include/linux/hrtimer.h linux-4.1.20/include/linux/h /* Query timers: */ extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); -diff -Nur linux-4.1.20.orig/include/linux/idr.h linux-4.1.20/include/linux/idr.h ---- linux-4.1.20.orig/include/linux/idr.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/idr.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/idr.h linux-4.1.26/include/linux/idr.h +--- linux-4.1.26.orig/include/linux/idr.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/idr.h 2016-06-19 15:30:58.663296424 +0200 @@ -95,10 +95,14 @@ * Each idr_preload() should be matched with an invocation of this * function. See idr_preload() for details. @@ -10193,9 +10190,9 @@ diff -Nur linux-4.1.20.orig/include/linux/idr.h linux-4.1.20/include/linux/idr.h /** * idr_find - return pointer for given id -diff -Nur linux-4.1.20.orig/include/linux/init_task.h linux-4.1.20/include/linux/init_task.h ---- linux-4.1.20.orig/include/linux/init_task.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/init_task.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/init_task.h linux-4.1.26/include/linux/init_task.h +--- linux-4.1.26.orig/include/linux/init_task.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/init_task.h 2016-06-19 15:30:58.667296578 +0200 @@ -147,9 +147,16 @@ # define INIT_PERF_EVENTS(tsk) #endif @@ -10222,9 +10219,9 @@ diff -Nur linux-4.1.20.orig/include/linux/init_task.h linux-4.1.20/include/linux .pids = { \ [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ -diff -Nur linux-4.1.20.orig/include/linux/interrupt.h linux-4.1.20/include/linux/interrupt.h ---- linux-4.1.20.orig/include/linux/interrupt.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/interrupt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/interrupt.h linux-4.1.26/include/linux/interrupt.h +--- linux-4.1.26.orig/include/linux/interrupt.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/interrupt.h 2016-06-19 15:30:58.667296578 +0200 @@ -61,6 +61,7 @@ * interrupt handler after suspending interrupts. For system * wakeup devices users need to implement wakeup detection in @@ -10409,9 +10406,9 @@ diff -Nur linux-4.1.20.orig/include/linux/interrupt.h linux-4.1.20/include/linux /* * Autoprobing for irqs: * -diff -Nur linux-4.1.20.orig/include/linux/io-mapping.h linux-4.1.20/include/linux/io-mapping.h ---- linux-4.1.20.orig/include/linux/io-mapping.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/io-mapping.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/io-mapping.h linux-4.1.26/include/linux/io-mapping.h +--- linux-4.1.26.orig/include/linux/io-mapping.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/io-mapping.h 2016-06-19 15:30:58.667296578 +0200 @@ -141,6 +141,7 @@ io_mapping_map_atomic_wc(struct io_mapping *mapping, unsigned long offset) @@ -10428,58 +10425,9 @@ diff -Nur linux-4.1.20.orig/include/linux/io-mapping.h linux-4.1.20/include/linu } /* Non-atomic map/unmap */ -diff -Nur linux-4.1.20.orig/include/linux/irq.h linux-4.1.20/include/linux/irq.h ---- linux-4.1.20.orig/include/linux/irq.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/irq.h 2016-03-21 20:18:33.000000000 +0100 -@@ -72,6 +72,7 @@ - * IRQ_IS_POLLED - Always polled by another interrupt. Exclude - * it from the spurious interrupt detection - * mechanism and from core side polling. -+ * IRQ_NO_SOFTIRQ_CALL - No softirq processing in the irq thread context (RT) - */ - enum { - IRQ_TYPE_NONE = 0x00000000, -@@ -97,13 +98,14 @@ - IRQ_NOTHREAD = (1 << 16), - IRQ_PER_CPU_DEVID = (1 << 17), - IRQ_IS_POLLED = (1 << 18), -+ IRQ_NO_SOFTIRQ_CALL = (1 << 19), - }; - - #define IRQF_MODIFY_MASK \ - (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \ - IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \ - IRQ_PER_CPU | IRQ_NESTED_THREAD | IRQ_NOTHREAD | IRQ_PER_CPU_DEVID | \ -- IRQ_IS_POLLED) -+ IRQ_IS_POLLED | IRQ_NO_SOFTIRQ_CALL) - - #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) - -diff -Nur linux-4.1.20.orig/include/linux/irq_work.h linux-4.1.20/include/linux/irq_work.h ---- linux-4.1.20.orig/include/linux/irq_work.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/irq_work.h 2016-03-21 20:18:33.000000000 +0100 -@@ -16,6 +16,7 @@ - #define IRQ_WORK_BUSY 2UL - #define IRQ_WORK_FLAGS 3UL - #define IRQ_WORK_LAZY 4UL /* Doesn't want IPI, wait for tick */ -+#define IRQ_WORK_HARD_IRQ 8UL /* Run hard IRQ context, even on RT */ - - struct irq_work { - unsigned long flags; -@@ -51,4 +52,10 @@ - static inline void irq_work_run(void) { } - #endif - -+#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) -+void irq_work_tick_soft(void); -+#else -+static inline void irq_work_tick_soft(void) { } -+#endif -+ - #endif /* _LINUX_IRQ_WORK_H */ -diff -Nur linux-4.1.20.orig/include/linux/irqdesc.h linux-4.1.20/include/linux/irqdesc.h ---- linux-4.1.20.orig/include/linux/irqdesc.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/irqdesc.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/irqdesc.h linux-4.1.26/include/linux/irqdesc.h +--- linux-4.1.26.orig/include/linux/irqdesc.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/irqdesc.h 2016-06-19 15:30:58.667296578 +0200 @@ -63,6 +63,7 @@ unsigned int irqs_unhandled; atomic_t threads_handled; @@ -10488,9 +10436,9 @@ diff -Nur linux-4.1.20.orig/include/linux/irqdesc.h linux-4.1.20/include/linux/i raw_spinlock_t lock; struct cpumask *percpu_enabled; #ifdef CONFIG_SMP -diff -Nur linux-4.1.20.orig/include/linux/irqflags.h linux-4.1.20/include/linux/irqflags.h ---- linux-4.1.20.orig/include/linux/irqflags.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/irqflags.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/irqflags.h linux-4.1.26/include/linux/irqflags.h +--- linux-4.1.26.orig/include/linux/irqflags.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/irqflags.h 2016-06-19 15:30:58.667296578 +0200 @@ -25,8 +25,6 @@ # define trace_softirqs_enabled(p) ((p)->softirqs_enabled) # define trace_hardirq_enter() do { current->hardirq_context++; } while (0) @@ -10541,9 +10489,58 @@ diff -Nur linux-4.1.20.orig/include/linux/irqflags.h linux-4.1.20/include/linux/ +#endif + #endif -diff -Nur linux-4.1.20.orig/include/linux/jbd_common.h linux-4.1.20/include/linux/jbd_common.h ---- linux-4.1.20.orig/include/linux/jbd_common.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/jbd_common.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/irq.h linux-4.1.26/include/linux/irq.h +--- linux-4.1.26.orig/include/linux/irq.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/irq.h 2016-06-19 15:30:58.667296578 +0200 +@@ -72,6 +72,7 @@ + * IRQ_IS_POLLED - Always polled by another interrupt. Exclude + * it from the spurious interrupt detection + * mechanism and from core side polling. ++ * IRQ_NO_SOFTIRQ_CALL - No softirq processing in the irq thread context (RT) + */ + enum { + IRQ_TYPE_NONE = 0x00000000, +@@ -97,13 +98,14 @@ + IRQ_NOTHREAD = (1 << 16), + IRQ_PER_CPU_DEVID = (1 << 17), + IRQ_IS_POLLED = (1 << 18), ++ IRQ_NO_SOFTIRQ_CALL = (1 << 19), + }; + + #define IRQF_MODIFY_MASK \ + (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \ + IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \ + IRQ_PER_CPU | IRQ_NESTED_THREAD | IRQ_NOTHREAD | IRQ_PER_CPU_DEVID | \ +- IRQ_IS_POLLED) ++ IRQ_IS_POLLED | IRQ_NO_SOFTIRQ_CALL) + + #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) + +diff -Nur linux-4.1.26.orig/include/linux/irq_work.h linux-4.1.26/include/linux/irq_work.h +--- linux-4.1.26.orig/include/linux/irq_work.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/irq_work.h 2016-06-19 15:30:58.667296578 +0200 +@@ -16,6 +16,7 @@ + #define IRQ_WORK_BUSY 2UL + #define IRQ_WORK_FLAGS 3UL + #define IRQ_WORK_LAZY 4UL /* Doesn't want IPI, wait for tick */ ++#define IRQ_WORK_HARD_IRQ 8UL /* Run hard IRQ context, even on RT */ + + struct irq_work { + unsigned long flags; +@@ -51,4 +52,10 @@ + static inline void irq_work_run(void) { } + #endif + ++#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL) ++void irq_work_tick_soft(void); ++#else ++static inline void irq_work_tick_soft(void) { } ++#endif ++ + #endif /* _LINUX_IRQ_WORK_H */ +diff -Nur linux-4.1.26.orig/include/linux/jbd_common.h linux-4.1.26/include/linux/jbd_common.h +--- linux-4.1.26.orig/include/linux/jbd_common.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/jbd_common.h 2016-06-19 15:30:58.667296578 +0200 @@ -15,32 +15,56 @@ static inline void jbd_lock_bh_state(struct buffer_head *bh) @@ -10601,9 +10598,9 @@ diff -Nur linux-4.1.20.orig/include/linux/jbd_common.h linux-4.1.20/include/linu } #endif -diff -Nur linux-4.1.20.orig/include/linux/kdb.h linux-4.1.20/include/linux/kdb.h ---- linux-4.1.20.orig/include/linux/kdb.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/kdb.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/kdb.h linux-4.1.26/include/linux/kdb.h +--- linux-4.1.26.orig/include/linux/kdb.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/kdb.h 2016-06-19 15:30:58.667296578 +0200 @@ -167,6 +167,7 @@ extern __printf(1, 2) int kdb_printf(const char *, ...); typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); @@ -10620,9 +10617,9 @@ diff -Nur linux-4.1.20.orig/include/linux/kdb.h linux-4.1.20/include/linux/kdb.h static inline void kdb_init(int level) {} static inline int kdb_register(char *cmd, kdb_func_t func, char *usage, char *help, short minlen) { return 0; } -diff -Nur linux-4.1.20.orig/include/linux/kernel.h linux-4.1.20/include/linux/kernel.h ---- linux-4.1.20.orig/include/linux/kernel.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/kernel.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/kernel.h linux-4.1.26/include/linux/kernel.h +--- linux-4.1.26.orig/include/linux/kernel.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/kernel.h 2016-06-19 15:30:58.667296578 +0200 @@ -188,6 +188,9 @@ */ # define might_sleep() \ @@ -10659,9 +10656,9 @@ diff -Nur linux-4.1.20.orig/include/linux/kernel.h linux-4.1.20/include/linux/ke } system_state; #define TAINT_PROPRIETARY_MODULE 0 -diff -Nur linux-4.1.20.orig/include/linux/kvm_host.h linux-4.1.20/include/linux/kvm_host.h ---- linux-4.1.20.orig/include/linux/kvm_host.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/kvm_host.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/kvm_host.h linux-4.1.26/include/linux/kvm_host.h +--- linux-4.1.26.orig/include/linux/kvm_host.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/kvm_host.h 2016-06-19 15:30:58.667296578 +0200 @@ -230,7 +230,7 @@ int fpu_active; @@ -10680,9 +10677,9 @@ diff -Nur linux-4.1.20.orig/include/linux/kvm_host.h linux-4.1.20/include/linux/ { #ifdef __KVM_HAVE_ARCH_WQP return vcpu->arch.wqp; -diff -Nur linux-4.1.20.orig/include/linux/lglock.h linux-4.1.20/include/linux/lglock.h ---- linux-4.1.20.orig/include/linux/lglock.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/lglock.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/lglock.h linux-4.1.26/include/linux/lglock.h +--- linux-4.1.26.orig/include/linux/lglock.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/lglock.h 2016-06-19 15:30:58.667296578 +0200 @@ -34,22 +34,39 @@ #endif @@ -10738,9 +10735,9 @@ diff -Nur linux-4.1.20.orig/include/linux/lglock.h linux-4.1.20/include/linux/lg #else /* When !CONFIG_SMP, map lglock to spinlock */ #define lglock spinlock -diff -Nur linux-4.1.20.orig/include/linux/list_bl.h linux-4.1.20/include/linux/list_bl.h ---- linux-4.1.20.orig/include/linux/list_bl.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/list_bl.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/list_bl.h linux-4.1.26/include/linux/list_bl.h +--- linux-4.1.26.orig/include/linux/list_bl.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/list_bl.h 2016-06-19 15:30:58.667296578 +0200 @@ -2,6 +2,7 @@ #define _LINUX_LIST_BL_H @@ -10801,9 +10798,9 @@ diff -Nur linux-4.1.20.orig/include/linux/list_bl.h linux-4.1.20/include/linux/l } static inline bool hlist_bl_is_locked(struct hlist_bl_head *b) -diff -Nur linux-4.1.20.orig/include/linux/locallock.h linux-4.1.20/include/linux/locallock.h ---- linux-4.1.20.orig/include/linux/locallock.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/locallock.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/locallock.h linux-4.1.26/include/linux/locallock.h +--- linux-4.1.26.orig/include/linux/locallock.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/locallock.h 2016-06-19 15:30:58.667296578 +0200 @@ -0,0 +1,270 @@ +#ifndef _LINUX_LOCALLOCK_H +#define _LINUX_LOCALLOCK_H @@ -11075,9 +11072,9 @@ diff -Nur linux-4.1.20.orig/include/linux/locallock.h linux-4.1.20/include/linux +#endif + +#endif -diff -Nur linux-4.1.20.orig/include/linux/mm_types.h linux-4.1.20/include/linux/mm_types.h ---- linux-4.1.20.orig/include/linux/mm_types.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/mm_types.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/mm_types.h linux-4.1.26/include/linux/mm_types.h +--- linux-4.1.26.orig/include/linux/mm_types.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/mm_types.h 2016-06-19 15:30:58.667296578 +0200 @@ -11,6 +11,7 @@ #include <linux/completion.h> #include <linux/cpumask.h> @@ -11096,9 +11093,9 @@ diff -Nur linux-4.1.20.orig/include/linux/mm_types.h linux-4.1.20/include/linux/ #ifdef CONFIG_X86_INTEL_MPX /* address of the bounds directory */ void __user *bd_addr; -diff -Nur linux-4.1.20.orig/include/linux/mutex.h linux-4.1.20/include/linux/mutex.h ---- linux-4.1.20.orig/include/linux/mutex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/mutex.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/mutex.h linux-4.1.26/include/linux/mutex.h +--- linux-4.1.26.orig/include/linux/mutex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/mutex.h 2016-06-19 15:30:58.671296732 +0200 @@ -19,6 +19,17 @@ #include <asm/processor.h> #include <linux/osq_lock.h> @@ -11140,9 +11137,9 @@ diff -Nur linux-4.1.20.orig/include/linux/mutex.h linux-4.1.20/include/linux/mut extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); #endif /* __LINUX_MUTEX_H */ -diff -Nur linux-4.1.20.orig/include/linux/mutex_rt.h linux-4.1.20/include/linux/mutex_rt.h ---- linux-4.1.20.orig/include/linux/mutex_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/mutex_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/mutex_rt.h linux-4.1.26/include/linux/mutex_rt.h +--- linux-4.1.26.orig/include/linux/mutex_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/mutex_rt.h 2016-06-19 15:30:58.671296732 +0200 @@ -0,0 +1,84 @@ +#ifndef __LINUX_MUTEX_RT_H +#define __LINUX_MUTEX_RT_H @@ -11228,9 +11225,9 @@ diff -Nur linux-4.1.20.orig/include/linux/mutex_rt.h linux-4.1.20/include/linux/ +} while (0) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/netdevice.h linux-4.1.20/include/linux/netdevice.h ---- linux-4.1.20.orig/include/linux/netdevice.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/netdevice.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/netdevice.h linux-4.1.26/include/linux/netdevice.h +--- linux-4.1.26.orig/include/linux/netdevice.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/netdevice.h 2016-06-19 15:30:58.671296732 +0200 @@ -2192,11 +2192,20 @@ void synchronize_net(void); int init_dummy_netdev(struct net_device *dev); @@ -11260,9 +11257,9 @@ diff -Nur linux-4.1.20.orig/include/linux/netdevice.h linux-4.1.20/include/linux }; -diff -Nur linux-4.1.20.orig/include/linux/netfilter/x_tables.h linux-4.1.20/include/linux/netfilter/x_tables.h ---- linux-4.1.20.orig/include/linux/netfilter/x_tables.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/netfilter/x_tables.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/netfilter/x_tables.h linux-4.1.26/include/linux/netfilter/x_tables.h +--- linux-4.1.26.orig/include/linux/netfilter/x_tables.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/netfilter/x_tables.h 2016-06-19 15:30:58.671296732 +0200 @@ -3,6 +3,7 @@ @@ -11298,9 +11295,9 @@ diff -Nur linux-4.1.20.orig/include/linux/netfilter/x_tables.h linux-4.1.20/incl } /* -diff -Nur linux-4.1.20.orig/include/linux/notifier.h linux-4.1.20/include/linux/notifier.h ---- linux-4.1.20.orig/include/linux/notifier.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/notifier.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/notifier.h linux-4.1.26/include/linux/notifier.h +--- linux-4.1.26.orig/include/linux/notifier.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/notifier.h 2016-06-19 15:30:58.671296732 +0200 @@ -6,7 +6,7 @@ * * Alan Cox <Alan.Cox@linux.org> @@ -11380,9 +11377,9 @@ diff -Nur linux-4.1.20.orig/include/linux/notifier.h linux-4.1.20/include/linux/ /* CPU notfiers are defined in include/linux/cpu.h. */ /* netdevice notifiers are defined in include/linux/netdevice.h */ -diff -Nur linux-4.1.20.orig/include/linux/percpu.h linux-4.1.20/include/linux/percpu.h ---- linux-4.1.20.orig/include/linux/percpu.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/percpu.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/percpu.h linux-4.1.26/include/linux/percpu.h +--- linux-4.1.26.orig/include/linux/percpu.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/percpu.h 2016-06-19 15:30:58.671296732 +0200 @@ -24,6 +24,35 @@ PERCPU_MODULE_RESERVE) #endif @@ -11419,9 +11416,9 @@ diff -Nur linux-4.1.20.orig/include/linux/percpu.h linux-4.1.20/include/linux/pe /* minimum unit size, also is the maximum supported allocation size */ #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10) -diff -Nur linux-4.1.20.orig/include/linux/pid.h linux-4.1.20/include/linux/pid.h ---- linux-4.1.20.orig/include/linux/pid.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/pid.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/pid.h linux-4.1.26/include/linux/pid.h +--- linux-4.1.26.orig/include/linux/pid.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/pid.h 2016-06-19 15:30:58.671296732 +0200 @@ -2,6 +2,7 @@ #define _LINUX_PID_H @@ -11430,9 +11427,9 @@ diff -Nur linux-4.1.20.orig/include/linux/pid.h linux-4.1.20/include/linux/pid.h enum pid_type { -diff -Nur linux-4.1.20.orig/include/linux/platform_data/gpio-omap.h linux-4.1.20/include/linux/platform_data/gpio-omap.h ---- linux-4.1.20.orig/include/linux/platform_data/gpio-omap.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/platform_data/gpio-omap.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/platform_data/gpio-omap.h linux-4.1.26/include/linux/platform_data/gpio-omap.h +--- linux-4.1.26.orig/include/linux/platform_data/gpio-omap.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/platform_data/gpio-omap.h 2016-06-19 15:30:58.671296732 +0200 @@ -198,7 +198,6 @@ int bank_width; /* GPIO bank width */ int bank_stride; /* Only needed for omap1 MPUIO */ @@ -11461,9 +11458,9 @@ diff -Nur linux-4.1.20.orig/include/linux/platform_data/gpio-omap.h linux-4.1.20 +#endif #endif -diff -Nur linux-4.1.20.orig/include/linux/preempt.h linux-4.1.20/include/linux/preempt.h ---- linux-4.1.20.orig/include/linux/preempt.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/preempt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/preempt.h linux-4.1.26/include/linux/preempt.h +--- linux-4.1.26.orig/include/linux/preempt.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/preempt.h 2016-06-19 15:30:58.671296732 +0200 @@ -34,6 +34,20 @@ #define preempt_count_inc() preempt_count_add(1) #define preempt_count_dec() preempt_count_sub(1) @@ -11567,9 +11564,9 @@ diff -Nur linux-4.1.20.orig/include/linux/preempt.h linux-4.1.20/include/linux/p #ifdef CONFIG_PREEMPT_NOTIFIERS struct preempt_notifier; -diff -Nur linux-4.1.20.orig/include/linux/preempt_mask.h linux-4.1.20/include/linux/preempt_mask.h ---- linux-4.1.20.orig/include/linux/preempt_mask.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/preempt_mask.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/preempt_mask.h linux-4.1.26/include/linux/preempt_mask.h +--- linux-4.1.26.orig/include/linux/preempt_mask.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/preempt_mask.h 2016-06-19 15:30:58.671296732 +0200 @@ -44,16 +44,26 @@ #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) #define NMI_OFFSET (1UL << NMI_SHIFT) @@ -11619,9 +11616,9 @@ diff -Nur linux-4.1.20.orig/include/linux/preempt_mask.h linux-4.1.20/include/li /* * The preempt_count offset needed for things like: -diff -Nur linux-4.1.20.orig/include/linux/printk.h linux-4.1.20/include/linux/printk.h ---- linux-4.1.20.orig/include/linux/printk.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/printk.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/printk.h linux-4.1.26/include/linux/printk.h +--- linux-4.1.26.orig/include/linux/printk.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/printk.h 2016-06-19 15:30:58.671296732 +0200 @@ -115,9 +115,11 @@ #ifdef CONFIG_EARLY_PRINTK extern asmlinkage __printf(1, 2) @@ -11634,9 +11631,9 @@ diff -Nur linux-4.1.20.orig/include/linux/printk.h linux-4.1.20/include/linux/pr #endif typedef int(*printk_func_t)(const char *fmt, va_list args); -diff -Nur linux-4.1.20.orig/include/linux/radix-tree.h linux-4.1.20/include/linux/radix-tree.h ---- linux-4.1.20.orig/include/linux/radix-tree.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/radix-tree.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/radix-tree.h linux-4.1.26/include/linux/radix-tree.h +--- linux-4.1.26.orig/include/linux/radix-tree.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/radix-tree.h 2016-06-19 15:30:58.671296732 +0200 @@ -277,8 +277,13 @@ unsigned int radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results, unsigned long *indices, @@ -11660,9 +11657,9 @@ diff -Nur linux-4.1.20.orig/include/linux/radix-tree.h linux-4.1.20/include/linu } /** -diff -Nur linux-4.1.20.orig/include/linux/random.h linux-4.1.20/include/linux/random.h ---- linux-4.1.20.orig/include/linux/random.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/random.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/random.h linux-4.1.26/include/linux/random.h +--- linux-4.1.26.orig/include/linux/random.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/random.h 2016-06-19 15:30:58.671296732 +0200 @@ -11,7 +11,7 @@ extern void add_device_randomness(const void *, unsigned int); extern void add_input_randomness(unsigned int type, unsigned int code, @@ -11672,9 +11669,9 @@ diff -Nur linux-4.1.20.orig/include/linux/random.h linux-4.1.20/include/linux/ra extern void get_random_bytes(void *buf, int nbytes); extern void get_random_bytes_arch(void *buf, int nbytes); -diff -Nur linux-4.1.20.orig/include/linux/rcupdate.h linux-4.1.20/include/linux/rcupdate.h ---- linux-4.1.20.orig/include/linux/rcupdate.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/rcupdate.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rcupdate.h linux-4.1.26/include/linux/rcupdate.h +--- linux-4.1.26.orig/include/linux/rcupdate.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/rcupdate.h 2016-06-19 15:30:58.671296732 +0200 @@ -167,6 +167,9 @@ #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ @@ -11759,9 +11756,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rcupdate.h linux-4.1.20/include/linux/ local_bh_enable(); } -diff -Nur linux-4.1.20.orig/include/linux/rcutree.h linux-4.1.20/include/linux/rcutree.h ---- linux-4.1.20.orig/include/linux/rcutree.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/rcutree.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rcutree.h linux-4.1.26/include/linux/rcutree.h +--- linux-4.1.26.orig/include/linux/rcutree.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/rcutree.h 2016-06-19 15:30:58.671296732 +0200 @@ -46,7 +46,11 @@ rcu_note_context_switch(); } @@ -11814,9 +11811,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rcutree.h linux-4.1.20/include/linux/r void rcu_all_qs(void); #endif /* __LINUX_RCUTREE_H */ -diff -Nur linux-4.1.20.orig/include/linux/rtmutex.h linux-4.1.20/include/linux/rtmutex.h ---- linux-4.1.20.orig/include/linux/rtmutex.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/rtmutex.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rtmutex.h linux-4.1.26/include/linux/rtmutex.h +--- linux-4.1.26.orig/include/linux/rtmutex.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/rtmutex.h 2016-06-19 15:30:58.675296887 +0200 @@ -14,10 +14,14 @@ #include <linux/linkage.h> @@ -11890,9 +11887,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rtmutex.h linux-4.1.20/include/linux/r extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout); -diff -Nur linux-4.1.20.orig/include/linux/rwlock_rt.h linux-4.1.20/include/linux/rwlock_rt.h ---- linux-4.1.20.orig/include/linux/rwlock_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/rwlock_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rwlock_rt.h linux-4.1.26/include/linux/rwlock_rt.h +--- linux-4.1.26.orig/include/linux/rwlock_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/rwlock_rt.h 2016-06-19 15:30:58.675296887 +0200 @@ -0,0 +1,99 @@ +#ifndef __LINUX_RWLOCK_RT_H +#define __LINUX_RWLOCK_RT_H @@ -11993,9 +11990,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rwlock_rt.h linux-4.1.20/include/linux + } while (0) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/rwlock_types.h linux-4.1.20/include/linux/rwlock_types.h ---- linux-4.1.20.orig/include/linux/rwlock_types.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/rwlock_types.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rwlock_types.h linux-4.1.26/include/linux/rwlock_types.h +--- linux-4.1.26.orig/include/linux/rwlock_types.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/rwlock_types.h 2016-06-19 15:30:58.675296887 +0200 @@ -1,6 +1,10 @@ #ifndef __LINUX_RWLOCK_TYPES_H #define __LINUX_RWLOCK_TYPES_H @@ -12016,9 +12013,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rwlock_types.h linux-4.1.20/include/li + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) #endif /* __LINUX_RWLOCK_TYPES_H */ -diff -Nur linux-4.1.20.orig/include/linux/rwlock_types_rt.h linux-4.1.20/include/linux/rwlock_types_rt.h ---- linux-4.1.20.orig/include/linux/rwlock_types_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/rwlock_types_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rwlock_types_rt.h linux-4.1.26/include/linux/rwlock_types_rt.h +--- linux-4.1.26.orig/include/linux/rwlock_types_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/rwlock_types_rt.h 2016-06-19 15:30:58.675296887 +0200 @@ -0,0 +1,33 @@ +#ifndef __LINUX_RWLOCK_TYPES_RT_H +#define __LINUX_RWLOCK_TYPES_RT_H @@ -12053,9 +12050,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rwlock_types_rt.h linux-4.1.20/include + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/rwsem.h linux-4.1.20/include/linux/rwsem.h ---- linux-4.1.20.orig/include/linux/rwsem.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/rwsem.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rwsem.h linux-4.1.26/include/linux/rwsem.h +--- linux-4.1.26.orig/include/linux/rwsem.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/rwsem.h 2016-06-19 15:30:58.675296887 +0200 @@ -18,6 +18,10 @@ #include <linux/osq_lock.h> #endif @@ -12074,9 +12071,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rwsem.h linux-4.1.20/include/linux/rws +#endif /* !PREEMPT_RT_FULL */ + #endif /* _LINUX_RWSEM_H */ -diff -Nur linux-4.1.20.orig/include/linux/rwsem_rt.h linux-4.1.20/include/linux/rwsem_rt.h ---- linux-4.1.20.orig/include/linux/rwsem_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/rwsem_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/rwsem_rt.h linux-4.1.26/include/linux/rwsem_rt.h +--- linux-4.1.26.orig/include/linux/rwsem_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/rwsem_rt.h 2016-06-19 15:30:58.675296887 +0200 @@ -0,0 +1,140 @@ +#ifndef _LINUX_RWSEM_RT_H +#define _LINUX_RWSEM_RT_H @@ -12218,9 +12215,9 @@ diff -Nur linux-4.1.20.orig/include/linux/rwsem_rt.h linux-4.1.20/include/linux/ +} +#endif +#endif -diff -Nur linux-4.1.20.orig/include/linux/sched.h linux-4.1.20/include/linux/sched.h ---- linux-4.1.20.orig/include/linux/sched.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/sched.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/sched.h linux-4.1.26/include/linux/sched.h +--- linux-4.1.26.orig/include/linux/sched.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/sched.h 2016-06-19 15:30:58.675296887 +0200 @@ -26,6 +26,7 @@ #include <linux/nodemask.h> #include <linux/mm_types.h> @@ -12647,9 +12644,9 @@ diff -Nur linux-4.1.20.orig/include/linux/sched.h linux-4.1.20/include/linux/sch extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); extern long sched_getaffinity(pid_t pid, struct cpumask *mask); -diff -Nur linux-4.1.20.orig/include/linux/seqlock.h linux-4.1.20/include/linux/seqlock.h ---- linux-4.1.20.orig/include/linux/seqlock.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/seqlock.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/seqlock.h linux-4.1.26/include/linux/seqlock.h +--- linux-4.1.26.orig/include/linux/seqlock.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/seqlock.h 2016-06-19 15:30:58.675296887 +0200 @@ -219,20 +219,30 @@ return __read_seqcount_retry(s, start); } @@ -12779,10 +12776,10 @@ diff -Nur linux-4.1.20.orig/include/linux/seqlock.h linux-4.1.20/include/linux/s spin_unlock_irqrestore(&sl->lock, flags); } -diff -Nur linux-4.1.20.orig/include/linux/signal.h linux-4.1.20/include/linux/signal.h ---- linux-4.1.20.orig/include/linux/signal.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/signal.h 2016-03-21 20:18:33.000000000 +0100 -@@ -218,6 +218,7 @@ +diff -Nur linux-4.1.26.orig/include/linux/signal.h linux-4.1.26/include/linux/signal.h +--- linux-4.1.26.orig/include/linux/signal.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/signal.h 2016-06-19 15:30:58.675296887 +0200 +@@ -233,6 +233,7 @@ } extern void flush_sigqueue(struct sigpending *queue); @@ -12790,9 +12787,9 @@ diff -Nur linux-4.1.20.orig/include/linux/signal.h linux-4.1.20/include/linux/si /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ static inline int valid_signal(unsigned long sig) -diff -Nur linux-4.1.20.orig/include/linux/skbuff.h linux-4.1.20/include/linux/skbuff.h ---- linux-4.1.20.orig/include/linux/skbuff.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/skbuff.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/skbuff.h linux-4.1.26/include/linux/skbuff.h +--- linux-4.1.26.orig/include/linux/skbuff.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/skbuff.h 2016-06-19 15:30:58.675296887 +0200 @@ -187,6 +187,7 @@ __u32 qlen; @@ -12814,9 +12811,9 @@ diff -Nur linux-4.1.20.orig/include/linux/skbuff.h linux-4.1.20/include/linux/sk static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { -diff -Nur linux-4.1.20.orig/include/linux/smp.h linux-4.1.20/include/linux/smp.h ---- linux-4.1.20.orig/include/linux/smp.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/smp.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/smp.h linux-4.1.26/include/linux/smp.h +--- linux-4.1.26.orig/include/linux/smp.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/smp.h 2016-06-19 15:30:58.675296887 +0200 @@ -185,6 +185,9 @@ #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() @@ -12827,9 +12824,22 @@ diff -Nur linux-4.1.20.orig/include/linux/smp.h linux-4.1.20/include/linux/smp.h /* * Callback to arch code if there's nosmp or maxcpus=0 on the * boot command line: -diff -Nur linux-4.1.20.orig/include/linux/spinlock.h linux-4.1.20/include/linux/spinlock.h ---- linux-4.1.20.orig/include/linux/spinlock.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_api_smp.h linux-4.1.26/include/linux/spinlock_api_smp.h +--- linux-4.1.26.orig/include/linux/spinlock_api_smp.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/spinlock_api_smp.h 2016-06-19 15:30:58.679297041 +0200 +@@ -189,6 +189,8 @@ + return 0; + } + +-#include <linux/rwlock_api_smp.h> ++#ifndef CONFIG_PREEMPT_RT_FULL ++# include <linux/rwlock_api_smp.h> ++#endif + + #endif /* __LINUX_SPINLOCK_API_SMP_H */ +diff -Nur linux-4.1.26.orig/include/linux/spinlock.h linux-4.1.26/include/linux/spinlock.h +--- linux-4.1.26.orig/include/linux/spinlock.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/spinlock.h 2016-06-19 15:30:58.679297041 +0200 @@ -281,7 +281,11 @@ #define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock)) @@ -12861,22 +12871,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock.h linux-4.1.20/include/linux/ +#endif /* !PREEMPT_RT_FULL */ + #endif /* __LINUX_SPINLOCK_H */ -diff -Nur linux-4.1.20.orig/include/linux/spinlock_api_smp.h linux-4.1.20/include/linux/spinlock_api_smp.h ---- linux-4.1.20.orig/include/linux/spinlock_api_smp.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_api_smp.h 2016-03-21 20:18:33.000000000 +0100 -@@ -189,6 +189,8 @@ - return 0; - } - --#include <linux/rwlock_api_smp.h> -+#ifndef CONFIG_PREEMPT_RT_FULL -+# include <linux/rwlock_api_smp.h> -+#endif - - #endif /* __LINUX_SPINLOCK_API_SMP_H */ -diff -Nur linux-4.1.20.orig/include/linux/spinlock_rt.h linux-4.1.20/include/linux/spinlock_rt.h ---- linux-4.1.20.orig/include/linux/spinlock_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_rt.h linux-4.1.26/include/linux/spinlock_rt.h +--- linux-4.1.26.orig/include/linux/spinlock_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/spinlock_rt.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,174 @@ +#ifndef __LINUX_SPINLOCK_RT_H +#define __LINUX_SPINLOCK_RT_H @@ -13052,9 +13049,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock_rt.h linux-4.1.20/include/lin + atomic_dec_and_spin_lock(atomic, lock) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/spinlock_types.h linux-4.1.20/include/linux/spinlock_types.h ---- linux-4.1.20.orig/include/linux/spinlock_types.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_types.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_types.h linux-4.1.26/include/linux/spinlock_types.h +--- linux-4.1.26.orig/include/linux/spinlock_types.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/spinlock_types.h 2016-06-19 15:30:58.679297041 +0200 @@ -9,80 +9,15 @@ * Released under the General Public License (GPL). */ @@ -13143,9 +13140,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock_types.h linux-4.1.20/include/ -#include <linux/rwlock_types.h> - #endif /* __LINUX_SPINLOCK_TYPES_H */ -diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_nort.h linux-4.1.20/include/linux/spinlock_types_nort.h ---- linux-4.1.20.orig/include/linux/spinlock_types_nort.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_types_nort.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_types_nort.h linux-4.1.26/include/linux/spinlock_types_nort.h +--- linux-4.1.26.orig/include/linux/spinlock_types_nort.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/spinlock_types_nort.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,33 @@ +#ifndef __LINUX_SPINLOCK_TYPES_NORT_H +#define __LINUX_SPINLOCK_TYPES_NORT_H @@ -13180,9 +13177,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_nort.h linux-4.1.20/inc +#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_raw.h linux-4.1.20/include/linux/spinlock_types_raw.h ---- linux-4.1.20.orig/include/linux/spinlock_types_raw.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_types_raw.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_types_raw.h linux-4.1.26/include/linux/spinlock_types_raw.h +--- linux-4.1.26.orig/include/linux/spinlock_types_raw.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/spinlock_types_raw.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,56 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RAW_H +#define __LINUX_SPINLOCK_TYPES_RAW_H @@ -13240,9 +13237,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_raw.h linux-4.1.20/incl +#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_rt.h linux-4.1.20/include/linux/spinlock_types_rt.h ---- linux-4.1.20.orig/include/linux/spinlock_types_rt.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/spinlock_types_rt.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/spinlock_types_rt.h linux-4.1.26/include/linux/spinlock_types_rt.h +--- linux-4.1.26.orig/include/linux/spinlock_types_rt.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/spinlock_types_rt.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,51 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RT_H +#define __LINUX_SPINLOCK_TYPES_RT_H @@ -13295,9 +13292,9 @@ diff -Nur linux-4.1.20.orig/include/linux/spinlock_types_rt.h linux-4.1.20/inclu + spinlock_t name __cacheline_aligned_in_smp = __SPIN_LOCK_UNLOCKED(name) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/srcu.h linux-4.1.20/include/linux/srcu.h ---- linux-4.1.20.orig/include/linux/srcu.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/srcu.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/srcu.h linux-4.1.26/include/linux/srcu.h +--- linux-4.1.26.orig/include/linux/srcu.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/srcu.h 2016-06-19 15:30:58.679297041 +0200 @@ -84,10 +84,10 @@ void process_srcu(struct work_struct *work); @@ -13320,9 +13317,9 @@ diff -Nur linux-4.1.20.orig/include/linux/srcu.h linux-4.1.20/include/linux/srcu #define DEFINE_SRCU(name) __DEFINE_SRCU(name, /* not static */) #define DEFINE_STATIC_SRCU(name) __DEFINE_SRCU(name, static) -diff -Nur linux-4.1.20.orig/include/linux/swap.h linux-4.1.20/include/linux/swap.h ---- linux-4.1.20.orig/include/linux/swap.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/swap.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/swap.h linux-4.1.26/include/linux/swap.h +--- linux-4.1.26.orig/include/linux/swap.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/swap.h 2016-06-19 15:30:58.679297041 +0200 @@ -11,6 +11,7 @@ #include <linux/fs.h> #include <linux/atomic.h> @@ -13349,9 +13346,9 @@ diff -Nur linux-4.1.20.orig/include/linux/swap.h linux-4.1.20/include/linux/swap extern void lru_cache_add(struct page *); extern void lru_cache_add_anon(struct page *page); extern void lru_cache_add_file(struct page *page); -diff -Nur linux-4.1.20.orig/include/linux/thread_info.h linux-4.1.20/include/linux/thread_info.h ---- linux-4.1.20.orig/include/linux/thread_info.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/thread_info.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/thread_info.h linux-4.1.26/include/linux/thread_info.h +--- linux-4.1.26.orig/include/linux/thread_info.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/thread_info.h 2016-06-19 15:30:58.679297041 +0200 @@ -102,7 +102,17 @@ #define test_thread_flag(flag) \ test_ti_thread_flag(current_thread_info(), flag) @@ -13371,9 +13368,9 @@ diff -Nur linux-4.1.20.orig/include/linux/thread_info.h linux-4.1.20/include/lin #if defined TIF_RESTORE_SIGMASK && !defined HAVE_SET_RESTORE_SIGMASK /* -diff -Nur linux-4.1.20.orig/include/linux/timer.h linux-4.1.20/include/linux/timer.h ---- linux-4.1.20.orig/include/linux/timer.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/timer.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/timer.h linux-4.1.26/include/linux/timer.h +--- linux-4.1.26.orig/include/linux/timer.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/timer.h 2016-06-19 15:30:58.679297041 +0200 @@ -241,7 +241,7 @@ extern int try_to_del_timer_sync(struct timer_list *timer); @@ -13383,9 +13380,9 @@ diff -Nur linux-4.1.20.orig/include/linux/timer.h linux-4.1.20/include/linux/tim extern int del_timer_sync(struct timer_list *timer); #else # define del_timer_sync(t) del_timer(t) -diff -Nur linux-4.1.20.orig/include/linux/uaccess.h linux-4.1.20/include/linux/uaccess.h ---- linux-4.1.20.orig/include/linux/uaccess.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/uaccess.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/uaccess.h linux-4.1.26/include/linux/uaccess.h +--- linux-4.1.26.orig/include/linux/uaccess.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/uaccess.h 2016-06-19 15:30:58.679297041 +0200 @@ -1,21 +1,31 @@ #ifndef __LINUX_UACCESS_H__ #define __LINUX_UACCESS_H__ @@ -13464,9 +13461,9 @@ diff -Nur linux-4.1.20.orig/include/linux/uaccess.h linux-4.1.20/include/linux/u #ifndef ARCH_HAS_NOCACHE_UACCESS static inline unsigned long __copy_from_user_inatomic_nocache(void *to, -diff -Nur linux-4.1.20.orig/include/linux/uprobes.h linux-4.1.20/include/linux/uprobes.h ---- linux-4.1.20.orig/include/linux/uprobes.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/uprobes.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/uprobes.h linux-4.1.26/include/linux/uprobes.h +--- linux-4.1.26.orig/include/linux/uprobes.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/uprobes.h 2016-06-19 15:30:58.679297041 +0200 @@ -27,6 +27,7 @@ #include <linux/errno.h> #include <linux/rbtree.h> @@ -13475,9 +13472,9 @@ diff -Nur linux-4.1.20.orig/include/linux/uprobes.h linux-4.1.20/include/linux/u struct vm_area_struct; struct mm_struct; -diff -Nur linux-4.1.20.orig/include/linux/vmstat.h linux-4.1.20/include/linux/vmstat.h ---- linux-4.1.20.orig/include/linux/vmstat.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/vmstat.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/vmstat.h linux-4.1.26/include/linux/vmstat.h +--- linux-4.1.26.orig/include/linux/vmstat.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/vmstat.h 2016-06-19 15:30:58.679297041 +0200 @@ -33,7 +33,9 @@ */ static inline void __count_vm_event(enum vm_event_item item) @@ -13498,9 +13495,20 @@ diff -Nur linux-4.1.20.orig/include/linux/vmstat.h linux-4.1.20/include/linux/vm } static inline void count_vm_events(enum vm_event_item item, long delta) -diff -Nur linux-4.1.20.orig/include/linux/wait-simple.h linux-4.1.20/include/linux/wait-simple.h ---- linux-4.1.20.orig/include/linux/wait-simple.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/wait-simple.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/wait.h linux-4.1.26/include/linux/wait.h +--- linux-4.1.26.orig/include/linux/wait.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/linux/wait.h 2016-06-19 15:30:58.679297041 +0200 +@@ -8,6 +8,7 @@ + #include <linux/spinlock.h> + #include <asm/current.h> + #include <uapi/linux/wait.h> ++#include <linux/atomic.h> + + typedef struct __wait_queue wait_queue_t; + typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key); +diff -Nur linux-4.1.26.orig/include/linux/wait-simple.h linux-4.1.26/include/linux/wait-simple.h +--- linux-4.1.26.orig/include/linux/wait-simple.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/wait-simple.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,207 @@ +#ifndef _LINUX_WAIT_SIMPLE_H +#define _LINUX_WAIT_SIMPLE_H @@ -13709,20 +13717,9 @@ diff -Nur linux-4.1.20.orig/include/linux/wait-simple.h linux-4.1.20/include/lin +}) + +#endif -diff -Nur linux-4.1.20.orig/include/linux/wait.h linux-4.1.20/include/linux/wait.h ---- linux-4.1.20.orig/include/linux/wait.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/linux/wait.h 2016-03-21 20:18:33.000000000 +0100 -@@ -8,6 +8,7 @@ - #include <linux/spinlock.h> - #include <asm/current.h> - #include <uapi/linux/wait.h> -+#include <linux/atomic.h> - - typedef struct __wait_queue wait_queue_t; - typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key); -diff -Nur linux-4.1.20.orig/include/linux/work-simple.h linux-4.1.20/include/linux/work-simple.h ---- linux-4.1.20.orig/include/linux/work-simple.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/linux/work-simple.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/linux/work-simple.h linux-4.1.26/include/linux/work-simple.h +--- linux-4.1.26.orig/include/linux/work-simple.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/linux/work-simple.h 2016-06-19 15:30:58.679297041 +0200 @@ -0,0 +1,24 @@ +#ifndef _LINUX_SWORK_H +#define _LINUX_SWORK_H @@ -13748,9 +13745,9 @@ diff -Nur linux-4.1.20.orig/include/linux/work-simple.h linux-4.1.20/include/lin +void swork_put(void); + +#endif /* _LINUX_SWORK_H */ -diff -Nur linux-4.1.20.orig/include/net/dst.h linux-4.1.20/include/net/dst.h ---- linux-4.1.20.orig/include/net/dst.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/net/dst.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/net/dst.h linux-4.1.26/include/net/dst.h +--- linux-4.1.26.orig/include/net/dst.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/net/dst.h 2016-06-19 15:30:58.679297041 +0200 @@ -436,7 +436,7 @@ static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n, struct sk_buff *skb) @@ -13760,9 +13757,9 @@ diff -Nur linux-4.1.20.orig/include/net/dst.h linux-4.1.20/include/net/dst.h if (dst->pending_confirm) { unsigned long now = jiffies; -diff -Nur linux-4.1.20.orig/include/net/neighbour.h linux-4.1.20/include/net/neighbour.h ---- linux-4.1.20.orig/include/net/neighbour.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/net/neighbour.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/net/neighbour.h linux-4.1.26/include/net/neighbour.h +--- linux-4.1.26.orig/include/net/neighbour.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/net/neighbour.h 2016-06-19 15:30:58.679297041 +0200 @@ -445,7 +445,7 @@ } #endif @@ -13781,9 +13778,9 @@ diff -Nur linux-4.1.20.orig/include/net/neighbour.h linux-4.1.20/include/net/nei const struct net_device *dev) { unsigned int seq; -diff -Nur linux-4.1.20.orig/include/net/netns/ipv4.h linux-4.1.20/include/net/netns/ipv4.h ---- linux-4.1.20.orig/include/net/netns/ipv4.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/net/netns/ipv4.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/net/netns/ipv4.h linux-4.1.26/include/net/netns/ipv4.h +--- linux-4.1.26.orig/include/net/netns/ipv4.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/net/netns/ipv4.h 2016-06-19 15:30:58.683297195 +0200 @@ -69,6 +69,7 @@ int sysctl_icmp_echo_ignore_all; @@ -13792,9 +13789,9 @@ diff -Nur linux-4.1.20.orig/include/net/netns/ipv4.h linux-4.1.20/include/net/ne int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; -diff -Nur linux-4.1.20.orig/include/trace/events/hist.h linux-4.1.20/include/trace/events/hist.h ---- linux-4.1.20.orig/include/trace/events/hist.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/trace/events/hist.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/trace/events/hist.h linux-4.1.26/include/trace/events/hist.h +--- linux-4.1.26.orig/include/trace/events/hist.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/trace/events/hist.h 2016-06-19 15:30:58.683297195 +0200 @@ -0,0 +1,74 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM hist @@ -13870,9 +13867,9 @@ diff -Nur linux-4.1.20.orig/include/trace/events/hist.h linux-4.1.20/include/tra + +/* This part must be outside protection */ +#include <trace/define_trace.h> -diff -Nur linux-4.1.20.orig/include/trace/events/latency_hist.h linux-4.1.20/include/trace/events/latency_hist.h ---- linux-4.1.20.orig/include/trace/events/latency_hist.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/include/trace/events/latency_hist.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/trace/events/latency_hist.h linux-4.1.26/include/trace/events/latency_hist.h +--- linux-4.1.26.orig/include/trace/events/latency_hist.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/include/trace/events/latency_hist.h 2016-06-19 15:30:58.683297195 +0200 @@ -0,0 +1,29 @@ +#ifndef _LATENCY_HIST_H +#define _LATENCY_HIST_H @@ -13903,9 +13900,9 @@ diff -Nur linux-4.1.20.orig/include/trace/events/latency_hist.h linux-4.1.20/inc +} + +#endif /* _LATENCY_HIST_H */ -diff -Nur linux-4.1.20.orig/include/trace/events/sched.h linux-4.1.20/include/trace/events/sched.h ---- linux-4.1.20.orig/include/trace/events/sched.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/include/trace/events/sched.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/include/trace/events/sched.h linux-4.1.26/include/trace/events/sched.h +--- linux-4.1.26.orig/include/trace/events/sched.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/include/trace/events/sched.h 2016-06-19 15:30:58.683297195 +0200 @@ -55,9 +55,9 @@ */ DECLARE_EVENT_CLASS(sched_wakeup_template, @@ -13963,9 +13960,9 @@ diff -Nur linux-4.1.20.orig/include/trace/events/sched.h linux-4.1.20/include/tr #ifdef CREATE_TRACE_POINTS static inline long __trace_sched_switch_state(struct task_struct *p) -diff -Nur linux-4.1.20.orig/init/Kconfig linux-4.1.20/init/Kconfig ---- linux-4.1.20.orig/init/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/init/Kconfig 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/init/Kconfig linux-4.1.26/init/Kconfig +--- linux-4.1.26.orig/init/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/init/Kconfig 2016-06-19 15:30:58.683297195 +0200 @@ -637,7 +637,7 @@ config RCU_FAST_NO_HZ @@ -14017,18 +14014,9 @@ diff -Nur linux-4.1.20.orig/init/Kconfig linux-4.1.20/init/Kconfig bool "SLUB per cpu partial cache" help Per cpu partial caches accellerate objects allocation and freeing -diff -Nur linux-4.1.20.orig/init/Makefile linux-4.1.20/init/Makefile ---- linux-4.1.20.orig/init/Makefile 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/init/Makefile 2016-03-21 20:18:33.000000000 +0100 -@@ -33,4 +33,4 @@ - include/generated/compile.h: FORCE - @$($(quiet)chk_compile.h) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ -- "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)" -+ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)" -diff -Nur linux-4.1.20.orig/init/main.c linux-4.1.20/init/main.c ---- linux-4.1.20.orig/init/main.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/init/main.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/init/main.c linux-4.1.26/init/main.c +--- linux-4.1.26.orig/init/main.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/init/main.c 2016-06-19 15:30:58.683297195 +0200 @@ -525,6 +525,7 @@ setup_command_line(command_line); setup_nr_cpu_ids(); @@ -14037,9 +14025,18 @@ diff -Nur linux-4.1.20.orig/init/main.c linux-4.1.20/init/main.c smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ build_all_zonelists(NULL, NULL); -diff -Nur linux-4.1.20.orig/ipc/mqueue.c linux-4.1.20/ipc/mqueue.c ---- linux-4.1.20.orig/ipc/mqueue.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/ipc/mqueue.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/init/Makefile linux-4.1.26/init/Makefile +--- linux-4.1.26.orig/init/Makefile 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/init/Makefile 2016-06-19 15:30:58.683297195 +0200 +@@ -33,4 +33,4 @@ + include/generated/compile.h: FORCE + @$($(quiet)chk_compile.h) + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ +- "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)" ++ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)" +diff -Nur linux-4.1.26.orig/ipc/mqueue.c linux-4.1.26/ipc/mqueue.c +--- linux-4.1.26.orig/ipc/mqueue.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/ipc/mqueue.c 2016-06-19 15:30:58.683297195 +0200 @@ -47,8 +47,7 @@ #define RECV 1 @@ -14180,9 +14177,9 @@ diff -Nur linux-4.1.20.orig/ipc/mqueue.c linux-4.1.20/ipc/mqueue.c ret = 0; } if (ret == 0) { -diff -Nur linux-4.1.20.orig/ipc/msg.c linux-4.1.20/ipc/msg.c ---- linux-4.1.20.orig/ipc/msg.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/ipc/msg.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/ipc/msg.c linux-4.1.26/ipc/msg.c +--- linux-4.1.26.orig/ipc/msg.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/ipc/msg.c 2016-06-19 15:30:58.683297195 +0200 @@ -188,6 +188,12 @@ struct msg_receiver *msr, *t; @@ -14232,9 +14229,9 @@ diff -Nur linux-4.1.20.orig/ipc/msg.c linux-4.1.20/ipc/msg.c return 0; } -diff -Nur linux-4.1.20.orig/ipc/sem.c linux-4.1.20/ipc/sem.c ---- linux-4.1.20.orig/ipc/sem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/ipc/sem.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/ipc/sem.c linux-4.1.26/ipc/sem.c +--- linux-4.1.26.orig/ipc/sem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/ipc/sem.c 2016-06-19 15:30:58.683297195 +0200 @@ -690,6 +690,13 @@ static void wake_up_sem_queue_prepare(struct list_head *pt, struct sem_queue *q, int error) @@ -14273,81 +14270,9 @@ diff -Nur linux-4.1.20.orig/ipc/sem.c linux-4.1.20/ipc/sem.c } static void unlink_queue(struct sem_array *sma, struct sem_queue *q) -diff -Nur linux-4.1.20.orig/kernel/Kconfig.locks linux-4.1.20/kernel/Kconfig.locks ---- linux-4.1.20.orig/kernel/Kconfig.locks 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/Kconfig.locks 2016-03-21 20:18:33.000000000 +0100 -@@ -225,11 +225,11 @@ - - config MUTEX_SPIN_ON_OWNER - def_bool y -- depends on SMP && !DEBUG_MUTEXES && ARCH_SUPPORTS_ATOMIC_RMW -+ depends on SMP && !DEBUG_MUTEXES && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL - - config RWSEM_SPIN_ON_OWNER - def_bool y -- depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW -+ depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL - - config LOCK_SPIN_ON_OWNER - def_bool y -diff -Nur linux-4.1.20.orig/kernel/Kconfig.preempt linux-4.1.20/kernel/Kconfig.preempt ---- linux-4.1.20.orig/kernel/Kconfig.preempt 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/Kconfig.preempt 2016-03-21 20:18:33.000000000 +0100 -@@ -1,3 +1,16 @@ -+config PREEMPT -+ bool -+ select PREEMPT_COUNT -+ -+config PREEMPT_RT_BASE -+ bool -+ select PREEMPT -+ -+config HAVE_PREEMPT_LAZY -+ bool -+ -+config PREEMPT_LAZY -+ def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT_FULL - - choice - prompt "Preemption Model" -@@ -33,9 +46,9 @@ - - Select this if you are building a kernel for a desktop system. - --config PREEMPT -+config PREEMPT__LL - bool "Preemptible Kernel (Low-Latency Desktop)" -- select PREEMPT_COUNT -+ select PREEMPT - select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK - help - This option reduces the latency of the kernel by making -@@ -52,6 +65,22 @@ - embedded system with latency requirements in the milliseconds - range. - -+config PREEMPT_RTB -+ bool "Preemptible Kernel (Basic RT)" -+ select PREEMPT_RT_BASE -+ help -+ This option is basically the same as (Low-Latency Desktop) but -+ enables changes which are preliminary for the full preemptible -+ RT kernel. -+ -+config PREEMPT_RT_FULL -+ bool "Fully Preemptible Kernel (RT)" -+ depends on IRQ_FORCED_THREADING -+ select PREEMPT_RT_BASE -+ select PREEMPT_RCU -+ help -+ All and everything -+ - endchoice - - config PREEMPT_COUNT -diff -Nur linux-4.1.20.orig/kernel/bpf/hashtab.c linux-4.1.20/kernel/bpf/hashtab.c ---- linux-4.1.20.orig/kernel/bpf/hashtab.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/bpf/hashtab.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/bpf/hashtab.c linux-4.1.26/kernel/bpf/hashtab.c +--- linux-4.1.26.orig/kernel/bpf/hashtab.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/bpf/hashtab.c 2016-06-19 15:30:58.683297195 +0200 @@ -17,7 +17,7 @@ struct bpf_htab { struct bpf_map map; @@ -14407,9 +14332,9 @@ diff -Nur linux-4.1.20.orig/kernel/bpf/hashtab.c linux-4.1.20/kernel/bpf/hashtab return ret; } -diff -Nur linux-4.1.20.orig/kernel/cgroup.c linux-4.1.20/kernel/cgroup.c ---- linux-4.1.20.orig/kernel/cgroup.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/cgroup.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/cgroup.c linux-4.1.26/kernel/cgroup.c +--- linux-4.1.26.orig/kernel/cgroup.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/cgroup.c 2016-06-19 15:30:58.687297349 +0200 @@ -4422,10 +4422,10 @@ queue_work(cgroup_destroy_wq, &css->destroy_work); } @@ -14442,9 +14367,9 @@ diff -Nur linux-4.1.20.orig/kernel/cgroup.c linux-4.1.20/kernel/cgroup.c /* * Used to destroy pidlists and separate to serve as flush domain. -diff -Nur linux-4.1.20.orig/kernel/cpu.c linux-4.1.20/kernel/cpu.c ---- linux-4.1.20.orig/kernel/cpu.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/cpu.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/cpu.c linux-4.1.26/kernel/cpu.c +--- linux-4.1.26.orig/kernel/cpu.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/cpu.c 2016-06-19 15:30:58.687297349 +0200 @@ -74,8 +74,8 @@ #endif } cpu_hotplug = { @@ -14825,9 +14750,9 @@ diff -Nur linux-4.1.20.orig/kernel/cpu.c linux-4.1.20/kernel/cpu.c return err; } -diff -Nur linux-4.1.20.orig/kernel/debug/kdb/kdb_io.c linux-4.1.20/kernel/debug/kdb/kdb_io.c ---- linux-4.1.20.orig/kernel/debug/kdb/kdb_io.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/debug/kdb/kdb_io.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/debug/kdb/kdb_io.c linux-4.1.26/kernel/debug/kdb/kdb_io.c +--- linux-4.1.26.orig/kernel/debug/kdb/kdb_io.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/debug/kdb/kdb_io.c 2016-06-19 15:30:58.687297349 +0200 @@ -554,7 +554,6 @@ int linecount; int colcount; @@ -14865,9 +14790,9 @@ diff -Nur linux-4.1.20.orig/kernel/debug/kdb/kdb_io.c linux-4.1.20/kernel/debug/ return r; } -diff -Nur linux-4.1.20.orig/kernel/events/core.c linux-4.1.20/kernel/events/core.c ---- linux-4.1.20.orig/kernel/events/core.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/events/core.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/events/core.c linux-4.1.26/kernel/events/core.c +--- linux-4.1.26.orig/kernel/events/core.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/events/core.c 2016-06-19 15:30:58.687297349 +0200 @@ -6925,6 +6925,7 @@ hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -14876,9 +14801,9 @@ diff -Nur linux-4.1.20.orig/kernel/events/core.c linux-4.1.20/kernel/events/core /* * Since hrtimers have a fixed rate, we can do a static freq->period -diff -Nur linux-4.1.20.orig/kernel/exit.c linux-4.1.20/kernel/exit.c ---- linux-4.1.20.orig/kernel/exit.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/exit.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/exit.c linux-4.1.26/kernel/exit.c +--- linux-4.1.26.orig/kernel/exit.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/exit.c 2016-06-19 15:30:58.687297349 +0200 @@ -144,7 +144,7 @@ * Do this under ->siglock, we can race with another thread * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. @@ -14888,9 +14813,9 @@ diff -Nur linux-4.1.20.orig/kernel/exit.c linux-4.1.20/kernel/exit.c tsk->sighand = NULL; spin_unlock(&sighand->siglock); -diff -Nur linux-4.1.20.orig/kernel/fork.c linux-4.1.20/kernel/fork.c ---- linux-4.1.20.orig/kernel/fork.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/fork.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/fork.c linux-4.1.26/kernel/fork.c +--- linux-4.1.26.orig/kernel/fork.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/fork.c 2016-06-19 15:30:58.687297349 +0200 @@ -108,7 +108,7 @@ DEFINE_PER_CPU(unsigned long, process_counts) = 0; @@ -14996,9 +14921,9 @@ diff -Nur linux-4.1.20.orig/kernel/fork.c linux-4.1.20/kernel/fork.c #ifdef CONFIG_LOCKDEP p->lockdep_depth = 0; /* no locks held yet */ p->curr_chain_key = 0; -diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c ---- linux-4.1.20.orig/kernel/futex.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/futex.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/futex.c linux-4.1.26/kernel/futex.c +--- linux-4.1.26.orig/kernel/futex.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/futex.c 2016-06-19 15:32:42.447298576 +0200 @@ -738,7 +738,9 @@ * task still owns the PI-state: */ @@ -15061,7 +14986,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c int ret = 0; if (!pi_state) -@@ -1178,7 +1177,17 @@ +@@ -1188,7 +1187,17 @@ raw_spin_unlock_irq(&new_owner->pi_lock); raw_spin_unlock(&pi_state->pi_mutex.wait_lock); @@ -15080,7 +15005,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c return 0; } -@@ -1217,6 +1226,7 @@ +@@ -1227,6 +1236,7 @@ struct futex_q *this, *next; union futex_key key = FUTEX_KEY_INIT; int ret; @@ -15088,7 +15013,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c if (!bitset) return -EINVAL; -@@ -1244,13 +1254,14 @@ +@@ -1254,13 +1264,14 @@ if (!(this->bitset & bitset)) continue; @@ -15104,7 +15029,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c out_put_key: put_futex_key(&key); out: -@@ -1269,6 +1280,7 @@ +@@ -1279,6 +1290,7 @@ struct futex_hash_bucket *hb1, *hb2; struct futex_q *this, *next; int ret, op_ret; @@ -15112,7 +15037,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c retry: ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, VERIFY_READ); -@@ -1320,7 +1332,7 @@ +@@ -1330,7 +1342,7 @@ ret = -EINVAL; goto out_unlock; } @@ -15121,7 +15046,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c if (++ret >= nr_wake) break; } -@@ -1334,7 +1346,7 @@ +@@ -1344,7 +1356,7 @@ ret = -EINVAL; goto out_unlock; } @@ -15130,7 +15055,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c if (++op_ret >= nr_wake2) break; } -@@ -1344,6 +1356,7 @@ +@@ -1354,6 +1366,7 @@ out_unlock: double_unlock_hb(hb1, hb2); @@ -15138,7 +15063,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c out_put_keys: put_futex_key(&key2); out_put_key1: -@@ -1503,6 +1516,7 @@ +@@ -1513,6 +1526,7 @@ struct futex_pi_state *pi_state = NULL; struct futex_hash_bucket *hb1, *hb2; struct futex_q *this, *next; @@ -15146,7 +15071,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c if (requeue_pi) { /* -@@ -1679,7 +1693,7 @@ +@@ -1689,7 +1703,7 @@ * woken by futex_unlock_pi(). */ if (++task_count <= nr_wake && !requeue_pi) { @@ -15155,7 +15080,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c continue; } -@@ -1705,6 +1719,16 @@ +@@ -1715,6 +1729,16 @@ requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -15172,7 +15097,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c } else if (ret) { /* -EDEADLK */ this->pi_state = NULL; -@@ -1719,6 +1743,7 @@ +@@ -1729,6 +1753,7 @@ out_unlock: free_pi_state(pi_state); double_unlock_hb(hb1, hb2); @@ -15180,35 +15105,24 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c hb_waiters_dec(hb2); /* -@@ -2412,13 +2437,26 @@ +@@ -2422,7 +2447,15 @@ */ match = futex_top_waiter(hb, &key); if (match) { - ret = wake_futex_pi(uaddr, uval, match); -+ ret = wake_futex_pi(uaddr, uval, match, hb); ++ ret = wake_futex_pi(uaddr, uval, match, hb); + -+ /* -+ * In case of success wake_futex_pi dropped the hash -+ * bucket lock. -+ */ -+ if (!ret) -+ goto out_putkey; ++ /* ++ * In case of success wake_futex_pi dropped the hash ++ * bucket lock. ++ */ ++ if (!ret) ++ goto out_putkey; + /* * The atomic access to the futex value generated a * pagefault, so retry the user-access and the wakeup: - */ - if (ret == -EFAULT) - goto pi_faulted; -+ -+ /* -+ * wake_futex_pi has detected invalid state. Tell user -+ * space. -+ */ - goto out_unlock; - } - -@@ -2439,6 +2477,7 @@ +@@ -2458,6 +2491,7 @@ out_unlock: spin_unlock(&hb->lock); @@ -15216,7 +15130,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c put_futex_key(&key); return ret; -@@ -2549,7 +2588,7 @@ +@@ -2568,7 +2602,7 @@ struct hrtimer_sleeper timeout, *to = NULL; struct rt_mutex_waiter rt_waiter; struct rt_mutex *pi_mutex = NULL; @@ -15225,7 +15139,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -2574,10 +2613,7 @@ +@@ -2593,10 +2627,7 @@ * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. */ @@ -15237,7 +15151,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); if (unlikely(ret != 0)) -@@ -2608,20 +2644,55 @@ +@@ -2627,20 +2658,55 @@ /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -15304,7 +15218,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -2630,14 +2701,15 @@ +@@ -2649,14 +2715,15 @@ * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -15322,7 +15236,7 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c } } else { /* -@@ -2650,7 +2722,8 @@ +@@ -2669,7 +2736,8 @@ ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter); debug_rt_mutex_free_waiter(&rt_waiter); @@ -15332,9 +15246,9 @@ diff -Nur linux-4.1.20.orig/kernel/futex.c linux-4.1.20/kernel/futex.c /* * Fixup the pi_state owner and possibly acquire the lock if we * haven't already. -diff -Nur linux-4.1.20.orig/kernel/irq/handle.c linux-4.1.20/kernel/irq/handle.c ---- linux-4.1.20.orig/kernel/irq/handle.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/irq/handle.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/irq/handle.c linux-4.1.26/kernel/irq/handle.c +--- linux-4.1.26.orig/kernel/irq/handle.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/irq/handle.c 2016-06-19 15:30:58.691297504 +0200 @@ -133,6 +133,8 @@ irqreturn_t handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) @@ -15357,9 +15271,9 @@ diff -Nur linux-4.1.20.orig/kernel/irq/handle.c linux-4.1.20/kernel/irq/handle.c if (!noirqdebug) note_interrupt(irq, desc, retval); -diff -Nur linux-4.1.20.orig/kernel/irq/manage.c linux-4.1.20/kernel/irq/manage.c ---- linux-4.1.20.orig/kernel/irq/manage.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/irq/manage.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/irq/manage.c linux-4.1.26/kernel/irq/manage.c +--- linux-4.1.26.orig/kernel/irq/manage.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/irq/manage.c 2016-06-19 15:30:58.691297504 +0200 @@ -22,6 +22,7 @@ #include "internals.h" @@ -15796,9 +15710,9 @@ diff -Nur linux-4.1.20.orig/kernel/irq/manage.c linux-4.1.20/kernel/irq/manage.c #ifdef CONFIG_DEBUG_SHIRQ_FIXME if (!retval && (irqflags & IRQF_SHARED)) { -diff -Nur linux-4.1.20.orig/kernel/irq/settings.h linux-4.1.20/kernel/irq/settings.h ---- linux-4.1.20.orig/kernel/irq/settings.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/irq/settings.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/irq/settings.h linux-4.1.26/kernel/irq/settings.h +--- linux-4.1.26.orig/kernel/irq/settings.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/irq/settings.h 2016-06-19 15:30:58.691297504 +0200 @@ -15,6 +15,7 @@ _IRQ_NESTED_THREAD = IRQ_NESTED_THREAD, _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID, @@ -15832,9 +15746,9 @@ diff -Nur linux-4.1.20.orig/kernel/irq/settings.h linux-4.1.20/kernel/irq/settin static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) { return desc->status_use_accessors & _IRQ_PER_CPU; -diff -Nur linux-4.1.20.orig/kernel/irq/spurious.c linux-4.1.20/kernel/irq/spurious.c ---- linux-4.1.20.orig/kernel/irq/spurious.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/irq/spurious.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/irq/spurious.c linux-4.1.26/kernel/irq/spurious.c +--- linux-4.1.26.orig/kernel/irq/spurious.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/irq/spurious.c 2016-06-19 15:30:58.691297504 +0200 @@ -444,6 +444,10 @@ static int __init irqfixup_setup(char *str) @@ -15857,9 +15771,9 @@ diff -Nur linux-4.1.20.orig/kernel/irq/spurious.c linux-4.1.20/kernel/irq/spurio irqfixup = 2; printk(KERN_WARNING "Misrouted IRQ fixup and polling support " "enabled\n"); -diff -Nur linux-4.1.20.orig/kernel/irq_work.c linux-4.1.20/kernel/irq_work.c ---- linux-4.1.20.orig/kernel/irq_work.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/irq_work.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/irq_work.c linux-4.1.26/kernel/irq_work.c +--- linux-4.1.26.orig/kernel/irq_work.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/irq_work.c 2016-06-19 15:30:58.691297504 +0200 @@ -17,6 +17,7 @@ #include <linux/cpu.h> #include <linux/notifier.h> @@ -15981,9 +15895,81 @@ diff -Nur linux-4.1.20.orig/kernel/irq_work.c linux-4.1.20/kernel/irq_work.c /* * Synchronize against the irq_work @entry, ensures the entry is not -diff -Nur linux-4.1.20.orig/kernel/ksysfs.c linux-4.1.20/kernel/ksysfs.c ---- linux-4.1.20.orig/kernel/ksysfs.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/ksysfs.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/Kconfig.locks linux-4.1.26/kernel/Kconfig.locks +--- linux-4.1.26.orig/kernel/Kconfig.locks 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/Kconfig.locks 2016-06-19 15:30:58.683297195 +0200 +@@ -225,11 +225,11 @@ + + config MUTEX_SPIN_ON_OWNER + def_bool y +- depends on SMP && !DEBUG_MUTEXES && ARCH_SUPPORTS_ATOMIC_RMW ++ depends on SMP && !DEBUG_MUTEXES && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL + + config RWSEM_SPIN_ON_OWNER + def_bool y +- depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW ++ depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW && !PREEMPT_RT_FULL + + config LOCK_SPIN_ON_OWNER + def_bool y +diff -Nur linux-4.1.26.orig/kernel/Kconfig.preempt linux-4.1.26/kernel/Kconfig.preempt +--- linux-4.1.26.orig/kernel/Kconfig.preempt 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/Kconfig.preempt 2016-06-19 15:30:58.683297195 +0200 +@@ -1,3 +1,16 @@ ++config PREEMPT ++ bool ++ select PREEMPT_COUNT ++ ++config PREEMPT_RT_BASE ++ bool ++ select PREEMPT ++ ++config HAVE_PREEMPT_LAZY ++ bool ++ ++config PREEMPT_LAZY ++ def_bool y if HAVE_PREEMPT_LAZY && PREEMPT_RT_FULL + + choice + prompt "Preemption Model" +@@ -33,9 +46,9 @@ + + Select this if you are building a kernel for a desktop system. + +-config PREEMPT ++config PREEMPT__LL + bool "Preemptible Kernel (Low-Latency Desktop)" +- select PREEMPT_COUNT ++ select PREEMPT + select UNINLINE_SPIN_UNLOCK if !ARCH_INLINE_SPIN_UNLOCK + help + This option reduces the latency of the kernel by making +@@ -52,6 +65,22 @@ + embedded system with latency requirements in the milliseconds + range. + ++config PREEMPT_RTB ++ bool "Preemptible Kernel (Basic RT)" ++ select PREEMPT_RT_BASE ++ help ++ This option is basically the same as (Low-Latency Desktop) but ++ enables changes which are preliminary for the full preemptible ++ RT kernel. ++ ++config PREEMPT_RT_FULL ++ bool "Fully Preemptible Kernel (RT)" ++ depends on IRQ_FORCED_THREADING ++ select PREEMPT_RT_BASE ++ select PREEMPT_RCU ++ help ++ All and everything ++ + endchoice + + config PREEMPT_COUNT +diff -Nur linux-4.1.26.orig/kernel/ksysfs.c linux-4.1.26/kernel/ksysfs.c +--- linux-4.1.26.orig/kernel/ksysfs.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/ksysfs.c 2016-06-19 15:30:58.691297504 +0200 @@ -136,6 +136,15 @@ #endif /* CONFIG_KEXEC */ @@ -16010,43 +15996,9 @@ diff -Nur linux-4.1.20.orig/kernel/ksysfs.c linux-4.1.20/kernel/ksysfs.c NULL }; -diff -Nur linux-4.1.20.orig/kernel/locking/Makefile linux-4.1.20/kernel/locking/Makefile ---- linux-4.1.20.orig/kernel/locking/Makefile 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/Makefile 2016-03-21 20:18:33.000000000 +0100 -@@ -1,5 +1,5 @@ - --obj-y += mutex.o semaphore.o rwsem.o -+obj-y += semaphore.o - - ifdef CONFIG_FUNCTION_TRACER - CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE) -@@ -8,7 +8,11 @@ - CFLAGS_REMOVE_rtmutex-debug.o = $(CC_FLAGS_FTRACE) - endif - -+ifneq ($(CONFIG_PREEMPT_RT_FULL),y) -+obj-y += mutex.o - obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o -+obj-y += rwsem.o -+endif - obj-$(CONFIG_LOCKDEP) += lockdep.o - ifeq ($(CONFIG_PROC_FS),y) - obj-$(CONFIG_LOCKDEP) += lockdep_proc.o -@@ -22,8 +26,11 @@ - obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o - obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o - obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o -+ifneq ($(CONFIG_PREEMPT_RT_FULL),y) - obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o - obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem-xadd.o -+endif - obj-$(CONFIG_PERCPU_RWSEM) += percpu-rwsem.o -+obj-$(CONFIG_PREEMPT_RT_FULL) += rt.o - obj-$(CONFIG_QUEUE_RWLOCK) += qrwlock.o - obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o -diff -Nur linux-4.1.20.orig/kernel/locking/lglock.c linux-4.1.20/kernel/locking/lglock.c ---- linux-4.1.20.orig/kernel/locking/lglock.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/lglock.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/lglock.c linux-4.1.26/kernel/locking/lglock.c +--- linux-4.1.26.orig/kernel/locking/lglock.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/lglock.c 2016-06-19 15:30:58.691297504 +0200 @@ -4,6 +4,15 @@ #include <linux/cpu.h> #include <linux/string.h> @@ -16191,9 +16143,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/lglock.c linux-4.1.20/kernel/locking/ + } +} +#endif -diff -Nur linux-4.1.20.orig/kernel/locking/lockdep.c linux-4.1.20/kernel/locking/lockdep.c ---- linux-4.1.20.orig/kernel/locking/lockdep.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/lockdep.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/lockdep.c linux-4.1.26/kernel/locking/lockdep.c +--- linux-4.1.26.orig/kernel/locking/lockdep.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/lockdep.c 2016-06-19 15:30:58.691297504 +0200 @@ -3563,6 +3563,7 @@ } } @@ -16210,9 +16162,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/lockdep.c linux-4.1.20/kernel/locking if (!debug_locks) print_irqtrace_events(current); -diff -Nur linux-4.1.20.orig/kernel/locking/locktorture.c linux-4.1.20/kernel/locking/locktorture.c ---- linux-4.1.20.orig/kernel/locking/locktorture.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/locktorture.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/locktorture.c linux-4.1.26/kernel/locking/locktorture.c +--- linux-4.1.26.orig/kernel/locking/locktorture.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/locktorture.c 2016-06-19 15:30:58.695297658 +0200 @@ -24,7 +24,6 @@ #include <linux/module.h> #include <linux/kthread.h> @@ -16221,9 +16173,43 @@ diff -Nur linux-4.1.20.orig/kernel/locking/locktorture.c linux-4.1.20/kernel/loc #include <linux/mutex.h> #include <linux/rwsem.h> #include <linux/smp.h> -diff -Nur linux-4.1.20.orig/kernel/locking/rt.c linux-4.1.20/kernel/locking/rt.c ---- linux-4.1.20.orig/kernel/locking/rt.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/kernel/locking/rt.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/Makefile linux-4.1.26/kernel/locking/Makefile +--- linux-4.1.26.orig/kernel/locking/Makefile 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/Makefile 2016-06-19 15:30:58.691297504 +0200 +@@ -1,5 +1,5 @@ + +-obj-y += mutex.o semaphore.o rwsem.o ++obj-y += semaphore.o + + ifdef CONFIG_FUNCTION_TRACER + CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE) +@@ -8,7 +8,11 @@ + CFLAGS_REMOVE_rtmutex-debug.o = $(CC_FLAGS_FTRACE) + endif + ++ifneq ($(CONFIG_PREEMPT_RT_FULL),y) ++obj-y += mutex.o + obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o ++obj-y += rwsem.o ++endif + obj-$(CONFIG_LOCKDEP) += lockdep.o + ifeq ($(CONFIG_PROC_FS),y) + obj-$(CONFIG_LOCKDEP) += lockdep_proc.o +@@ -22,8 +26,11 @@ + obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o + obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock.o + obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o ++ifneq ($(CONFIG_PREEMPT_RT_FULL),y) + obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o + obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem-xadd.o ++endif + obj-$(CONFIG_PERCPU_RWSEM) += percpu-rwsem.o ++obj-$(CONFIG_PREEMPT_RT_FULL) += rt.o + obj-$(CONFIG_QUEUE_RWLOCK) += qrwlock.o + obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o +diff -Nur linux-4.1.26.orig/kernel/locking/rt.c linux-4.1.26/kernel/locking/rt.c +--- linux-4.1.26.orig/kernel/locking/rt.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/kernel/locking/rt.c 2016-06-19 15:30:58.695297658 +0200 @@ -0,0 +1,461 @@ +/* + * kernel/rt.c @@ -16686,9 +16672,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/rt.c linux-4.1.20/kernel/locking/rt.c + return 1; +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); -diff -Nur linux-4.1.20.orig/kernel/locking/rtmutex.c linux-4.1.20/kernel/locking/rtmutex.c ---- linux-4.1.20.orig/kernel/locking/rtmutex.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/rtmutex.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/rtmutex.c linux-4.1.26/kernel/locking/rtmutex.c +--- linux-4.1.26.orig/kernel/locking/rtmutex.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/rtmutex.c 2016-06-19 15:30:58.695297658 +0200 @@ -7,6 +7,11 @@ * Copyright (C) 2005-2006 Timesys Corp., Thomas Gleixner <tglx@timesys.com> * Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt @@ -17786,9 +17772,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/rtmutex.c linux-4.1.20/kernel/locking +} +EXPORT_SYMBOL(ww_mutex_unlock); +#endif -diff -Nur linux-4.1.20.orig/kernel/locking/rtmutex_common.h linux-4.1.20/kernel/locking/rtmutex_common.h ---- linux-4.1.20.orig/kernel/locking/rtmutex_common.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/rtmutex_common.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/rtmutex_common.h linux-4.1.26/kernel/locking/rtmutex_common.h +--- linux-4.1.26.orig/kernel/locking/rtmutex_common.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/rtmutex_common.h 2016-06-19 15:30:58.695297658 +0200 @@ -49,6 +49,7 @@ struct rb_node pi_tree_entry; struct task_struct *task; @@ -17832,9 +17818,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/rtmutex_common.h linux-4.1.20/kernel/ +} + #endif -diff -Nur linux-4.1.20.orig/kernel/locking/spinlock.c linux-4.1.20/kernel/locking/spinlock.c ---- linux-4.1.20.orig/kernel/locking/spinlock.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/spinlock.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/spinlock.c linux-4.1.26/kernel/locking/spinlock.c +--- linux-4.1.26.orig/kernel/locking/spinlock.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/spinlock.c 2016-06-19 15:30:58.695297658 +0200 @@ -124,8 +124,11 @@ * __[spin|read|write]_lock_bh() */ @@ -17865,9 +17851,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/spinlock.c linux-4.1.20/kernel/lockin #ifdef CONFIG_DEBUG_LOCK_ALLOC void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) -diff -Nur linux-4.1.20.orig/kernel/locking/spinlock_debug.c linux-4.1.20/kernel/locking/spinlock_debug.c ---- linux-4.1.20.orig/kernel/locking/spinlock_debug.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/locking/spinlock_debug.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/locking/spinlock_debug.c linux-4.1.26/kernel/locking/spinlock_debug.c +--- linux-4.1.26.orig/kernel/locking/spinlock_debug.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/locking/spinlock_debug.c 2016-06-19 15:30:58.695297658 +0200 @@ -31,6 +31,7 @@ EXPORT_SYMBOL(__raw_spin_lock_init); @@ -17898,9 +17884,9 @@ diff -Nur linux-4.1.20.orig/kernel/locking/spinlock_debug.c linux-4.1.20/kernel/ } + +#endif -diff -Nur linux-4.1.20.orig/kernel/panic.c linux-4.1.20/kernel/panic.c ---- linux-4.1.20.orig/kernel/panic.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/panic.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/panic.c linux-4.1.26/kernel/panic.c +--- linux-4.1.26.orig/kernel/panic.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/panic.c 2016-06-19 15:30:58.695297658 +0200 @@ -399,9 +399,11 @@ static int init_oops_id(void) @@ -17913,9 +17899,9 @@ diff -Nur linux-4.1.20.orig/kernel/panic.c linux-4.1.20/kernel/panic.c oops_id++; return 0; -diff -Nur linux-4.1.20.orig/kernel/power/hibernate.c linux-4.1.20/kernel/power/hibernate.c ---- linux-4.1.20.orig/kernel/power/hibernate.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/power/hibernate.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/power/hibernate.c linux-4.1.26/kernel/power/hibernate.c +--- linux-4.1.26.orig/kernel/power/hibernate.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/power/hibernate.c 2016-06-19 15:30:58.695297658 +0200 @@ -285,6 +285,8 @@ local_irq_disable(); @@ -17965,9 +17951,9 @@ diff -Nur linux-4.1.20.orig/kernel/power/hibernate.c linux-4.1.20/kernel/power/h local_irq_enable(); enable_nonboot_cpus(); -diff -Nur linux-4.1.20.orig/kernel/power/suspend.c linux-4.1.20/kernel/power/suspend.c ---- linux-4.1.20.orig/kernel/power/suspend.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/power/suspend.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/power/suspend.c linux-4.1.26/kernel/power/suspend.c +--- linux-4.1.26.orig/kernel/power/suspend.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/power/suspend.c 2016-06-19 15:30:58.695297658 +0200 @@ -356,6 +356,8 @@ arch_suspend_disable_irqs(); BUG_ON(!irqs_disabled()); @@ -17986,9 +17972,9 @@ diff -Nur linux-4.1.20.orig/kernel/power/suspend.c linux-4.1.20/kernel/power/sus arch_suspend_enable_irqs(); BUG_ON(irqs_disabled()); -diff -Nur linux-4.1.20.orig/kernel/printk/printk.c linux-4.1.20/kernel/printk/printk.c ---- linux-4.1.20.orig/kernel/printk/printk.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/printk/printk.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/printk/printk.c linux-4.1.26/kernel/printk/printk.c +--- linux-4.1.26.orig/kernel/printk/printk.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/printk/printk.c 2016-06-19 15:30:58.695297658 +0200 @@ -1163,6 +1163,7 @@ { char *text; @@ -18241,9 +18227,9 @@ diff -Nur linux-4.1.20.orig/kernel/printk/printk.c linux-4.1.20/kernel/printk/pr if (do_cond_resched) cond_resched(); -diff -Nur linux-4.1.20.orig/kernel/ptrace.c linux-4.1.20/kernel/ptrace.c ---- linux-4.1.20.orig/kernel/ptrace.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/ptrace.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/ptrace.c linux-4.1.26/kernel/ptrace.c +--- linux-4.1.26.orig/kernel/ptrace.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/ptrace.c 2016-06-19 15:30:58.699297812 +0200 @@ -129,7 +129,14 @@ spin_lock_irq(&task->sighand->siglock); @@ -18260,9 +18246,9 @@ diff -Nur linux-4.1.20.orig/kernel/ptrace.c linux-4.1.20/kernel/ptrace.c ret = true; } spin_unlock_irq(&task->sighand->siglock); -diff -Nur linux-4.1.20.orig/kernel/rcu/rcutorture.c linux-4.1.20/kernel/rcu/rcutorture.c ---- linux-4.1.20.orig/kernel/rcu/rcutorture.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/rcu/rcutorture.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/rcu/rcutorture.c linux-4.1.26/kernel/rcu/rcutorture.c +--- linux-4.1.26.orig/kernel/rcu/rcutorture.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/rcu/rcutorture.c 2016-06-19 15:30:58.699297812 +0200 @@ -389,6 +389,7 @@ .name = "rcu" }; @@ -18284,9 +18270,9 @@ diff -Nur linux-4.1.20.orig/kernel/rcu/rcutorture.c linux-4.1.20/kernel/rcu/rcut /* * Don't even think about trying any of these in real life!!! * The names includes "busted", and they really means it! -diff -Nur linux-4.1.20.orig/kernel/rcu/tree.c linux-4.1.20/kernel/rcu/tree.c ---- linux-4.1.20.orig/kernel/rcu/tree.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/rcu/tree.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/rcu/tree.c linux-4.1.26/kernel/rcu/tree.c +--- linux-4.1.26.orig/kernel/rcu/tree.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/rcu/tree.c 2016-06-19 15:30:58.699297812 +0200 @@ -56,6 +56,11 @@ #include <linux/random.h> #include <linux/ftrace_event.h> @@ -18574,9 +18560,9 @@ diff -Nur linux-4.1.20.orig/kernel/rcu/tree.c linux-4.1.20/kernel/rcu/tree.c /* * We don't need protection against CPU-hotplug here because -diff -Nur linux-4.1.20.orig/kernel/rcu/tree.h linux-4.1.20/kernel/rcu/tree.h ---- linux-4.1.20.orig/kernel/rcu/tree.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/rcu/tree.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/rcu/tree.h linux-4.1.26/kernel/rcu/tree.h +--- linux-4.1.26.orig/kernel/rcu/tree.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/rcu/tree.h 2016-06-19 15:30:58.699297812 +0200 @@ -27,6 +27,7 @@ #include <linux/threads.h> #include <linux/cpumask.h> @@ -18637,9 +18623,9 @@ diff -Nur linux-4.1.20.orig/kernel/rcu/tree.h linux-4.1.20/kernel/rcu/tree.h static int rcu_spawn_one_boost_kthread(struct rcu_state *rsp, struct rcu_node *rnp); #endif /* #ifdef CONFIG_RCU_BOOST */ -diff -Nur linux-4.1.20.orig/kernel/rcu/tree_plugin.h linux-4.1.20/kernel/rcu/tree_plugin.h ---- linux-4.1.20.orig/kernel/rcu/tree_plugin.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/rcu/tree_plugin.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/rcu/tree_plugin.h linux-4.1.26/kernel/rcu/tree_plugin.h +--- linux-4.1.26.orig/kernel/rcu/tree_plugin.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/rcu/tree_plugin.h 2016-06-19 15:30:58.699297812 +0200 @@ -24,27 +24,20 @@ * Paul E. McKenney <paulmck@linux.vnet.ibm.com> */ @@ -18974,9 +18960,9 @@ diff -Nur linux-4.1.20.orig/kernel/rcu/tree_plugin.h linux-4.1.20/kernel/rcu/tre rdp->nocb_follower_tail = &rdp->nocb_follower_head; } -diff -Nur linux-4.1.20.orig/kernel/rcu/update.c linux-4.1.20/kernel/rcu/update.c ---- linux-4.1.20.orig/kernel/rcu/update.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/rcu/update.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/rcu/update.c linux-4.1.26/kernel/rcu/update.c +--- linux-4.1.26.orig/kernel/rcu/update.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/rcu/update.c 2016-06-19 15:30:58.699297812 +0200 @@ -227,6 +227,7 @@ } EXPORT_SYMBOL_GPL(rcu_read_lock_held); @@ -18993,9 +18979,9 @@ diff -Nur linux-4.1.20.orig/kernel/rcu/update.c linux-4.1.20/kernel/rcu/update.c #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ -diff -Nur linux-4.1.20.orig/kernel/relay.c linux-4.1.20/kernel/relay.c ---- linux-4.1.20.orig/kernel/relay.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/relay.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/relay.c linux-4.1.26/kernel/relay.c +--- linux-4.1.26.orig/kernel/relay.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/relay.c 2016-06-19 15:30:58.699297812 +0200 @@ -339,6 +339,10 @@ { struct rchan_buf *buf = (struct rchan_buf *)data; @@ -19031,21 +19017,9 @@ diff -Nur linux-4.1.20.orig/kernel/relay.c linux-4.1.20/kernel/relay.c } old = buf->data; -diff -Nur linux-4.1.20.orig/kernel/sched/Makefile linux-4.1.20/kernel/sched/Makefile ---- linux-4.1.20.orig/kernel/sched/Makefile 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/Makefile 2016-03-21 20:18:33.000000000 +0100 -@@ -13,7 +13,7 @@ - - obj-y += core.o proc.o clock.o cputime.o - obj-y += idle_task.o fair.o rt.o deadline.o stop_task.o --obj-y += wait.o completion.o idle.o -+obj-y += wait.o wait-simple.o work-simple.o completion.o idle.o - obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o - obj-$(CONFIG_SCHED_AUTOGROUP) += auto_group.o - obj-$(CONFIG_SCHEDSTATS) += stats.o -diff -Nur linux-4.1.20.orig/kernel/sched/completion.c linux-4.1.20/kernel/sched/completion.c ---- linux-4.1.20.orig/kernel/sched/completion.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/completion.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/completion.c linux-4.1.26/kernel/sched/completion.c +--- linux-4.1.26.orig/kernel/sched/completion.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/completion.c 2016-06-19 15:30:58.699297812 +0200 @@ -30,10 +30,10 @@ { unsigned long flags; @@ -19136,9 +19110,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/completion.c linux-4.1.20/kernel/sched/ return true; } EXPORT_SYMBOL(completion_done); -diff -Nur linux-4.1.20.orig/kernel/sched/core.c linux-4.1.20/kernel/sched/core.c ---- linux-4.1.20.orig/kernel/sched/core.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/core.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/core.c linux-4.1.26/kernel/sched/core.c +--- linux-4.1.26.orig/kernel/sched/core.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/core.c 2016-06-19 15:30:58.703297966 +0200 @@ -282,7 +282,11 @@ * Number of tasks to iterate in a single balance run. * Limited because this is done with IRQs disabled. @@ -19958,9 +19932,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/core.c linux-4.1.20/kernel/sched/core.c return (nested == preempt_offset); } -diff -Nur linux-4.1.20.orig/kernel/sched/cputime.c linux-4.1.20/kernel/sched/cputime.c ---- linux-4.1.20.orig/kernel/sched/cputime.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/cputime.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/cputime.c linux-4.1.26/kernel/sched/cputime.c +--- linux-4.1.26.orig/kernel/sched/cputime.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/cputime.c 2016-06-19 15:30:58.703297966 +0200 @@ -675,37 +675,45 @@ void vtime_account_system(struct task_struct *tsk) @@ -20114,9 +20088,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/cputime.c linux-4.1.20/kernel/sched/cpu } -diff -Nur linux-4.1.20.orig/kernel/sched/deadline.c linux-4.1.20/kernel/sched/deadline.c ---- linux-4.1.20.orig/kernel/sched/deadline.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/deadline.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/deadline.c linux-4.1.26/kernel/sched/deadline.c +--- linux-4.1.26.orig/kernel/sched/deadline.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/deadline.c 2016-06-19 15:30:58.703297966 +0200 @@ -637,6 +637,7 @@ hrtimer_init(timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -20125,9 +20099,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/deadline.c linux-4.1.20/kernel/sched/de } static -diff -Nur linux-4.1.20.orig/kernel/sched/debug.c linux-4.1.20/kernel/sched/debug.c ---- linux-4.1.20.orig/kernel/sched/debug.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/debug.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/debug.c linux-4.1.26/kernel/sched/debug.c +--- linux-4.1.26.orig/kernel/sched/debug.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/debug.c 2016-06-19 15:30:58.703297966 +0200 @@ -260,6 +260,9 @@ P(rt_throttled); PN(rt_time); @@ -20149,9 +20123,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/debug.c linux-4.1.20/kernel/sched/debug #undef PN #undef __PN #undef P -diff -Nur linux-4.1.20.orig/kernel/sched/fair.c linux-4.1.20/kernel/sched/fair.c ---- linux-4.1.20.orig/kernel/sched/fair.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/fair.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/fair.c linux-4.1.26/kernel/sched/fair.c +--- linux-4.1.26.orig/kernel/sched/fair.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/fair.c 2016-06-19 15:30:58.703297966 +0200 @@ -3201,7 +3201,7 @@ ideal_runtime = sched_slice(cfs_rq, curr); delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; @@ -20224,9 +20198,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/fair.c linux-4.1.20/kernel/sched/fair.c } else check_preempt_curr(rq, p, 0); } -diff -Nur linux-4.1.20.orig/kernel/sched/features.h linux-4.1.20/kernel/sched/features.h ---- linux-4.1.20.orig/kernel/sched/features.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/features.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/features.h linux-4.1.26/kernel/sched/features.h +--- linux-4.1.26.orig/kernel/sched/features.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/features.h 2016-06-19 15:30:58.707298121 +0200 @@ -50,11 +50,19 @@ */ SCHED_FEAT(NONTASK_CAPACITY, true) @@ -20247,9 +20221,21 @@ diff -Nur linux-4.1.20.orig/kernel/sched/features.h linux-4.1.20/kernel/sched/fe #ifdef HAVE_RT_PUSH_IPI /* -diff -Nur linux-4.1.20.orig/kernel/sched/rt.c linux-4.1.20/kernel/sched/rt.c ---- linux-4.1.20.orig/kernel/sched/rt.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/rt.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/Makefile linux-4.1.26/kernel/sched/Makefile +--- linux-4.1.26.orig/kernel/sched/Makefile 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/Makefile 2016-06-19 15:30:58.699297812 +0200 +@@ -13,7 +13,7 @@ + + obj-y += core.o proc.o clock.o cputime.o + obj-y += idle_task.o fair.o rt.o deadline.o stop_task.o +-obj-y += wait.o completion.o idle.o ++obj-y += wait.o wait-simple.o work-simple.o completion.o idle.o + obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o + obj-$(CONFIG_SCHED_AUTOGROUP) += auto_group.o + obj-$(CONFIG_SCHEDSTATS) += stats.o +diff -Nur linux-4.1.26.orig/kernel/sched/rt.c linux-4.1.26/kernel/sched/rt.c +--- linux-4.1.26.orig/kernel/sched/rt.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/rt.c 2016-06-19 15:30:58.707298121 +0200 @@ -44,6 +44,7 @@ hrtimer_init(&rt_b->rt_period_timer, @@ -20266,9 +20252,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/rt.c linux-4.1.20/kernel/sched/rt.c #endif #endif /* CONFIG_SMP */ /* We start is dequeued state, because no RT tasks are queued */ -diff -Nur linux-4.1.20.orig/kernel/sched/sched.h linux-4.1.20/kernel/sched/sched.h ---- linux-4.1.20.orig/kernel/sched/sched.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/sched/sched.h 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/sched.h linux-4.1.26/kernel/sched/sched.h +--- linux-4.1.26.orig/kernel/sched/sched.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/sched/sched.h 2016-06-19 15:30:58.707298121 +0200 @@ -1093,6 +1093,7 @@ #define WF_SYNC 0x01 /* waker goes to sleep after wakeup */ #define WF_FORK 0x02 /* child wakeup after fork */ @@ -20293,9 +20279,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/sched.h linux-4.1.20/kernel/sched/sched extern struct rt_bandwidth def_rt_bandwidth; extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); -diff -Nur linux-4.1.20.orig/kernel/sched/wait-simple.c linux-4.1.20/kernel/sched/wait-simple.c ---- linux-4.1.20.orig/kernel/sched/wait-simple.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/kernel/sched/wait-simple.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/wait-simple.c linux-4.1.26/kernel/sched/wait-simple.c +--- linux-4.1.26.orig/kernel/sched/wait-simple.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/kernel/sched/wait-simple.c 2016-06-19 15:30:58.707298121 +0200 @@ -0,0 +1,115 @@ +/* + * Simple waitqueues without fancy flags and callbacks @@ -20412,9 +20398,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/wait-simple.c linux-4.1.20/kernel/sched + return woken; +} +EXPORT_SYMBOL(__swait_wake); -diff -Nur linux-4.1.20.orig/kernel/sched/work-simple.c linux-4.1.20/kernel/sched/work-simple.c ---- linux-4.1.20.orig/kernel/sched/work-simple.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/kernel/sched/work-simple.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/sched/work-simple.c linux-4.1.26/kernel/sched/work-simple.c +--- linux-4.1.26.orig/kernel/sched/work-simple.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/kernel/sched/work-simple.c 2016-06-19 15:30:58.707298121 +0200 @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2014 BMW Car IT GmbH, Daniel Wagner daniel.wagner@bmw-carit.de @@ -20589,9 +20575,9 @@ diff -Nur linux-4.1.20.orig/kernel/sched/work-simple.c linux-4.1.20/kernel/sched + mutex_unlock(&worker_mutex); +} +EXPORT_SYMBOL_GPL(swork_put); -diff -Nur linux-4.1.20.orig/kernel/signal.c linux-4.1.20/kernel/signal.c ---- linux-4.1.20.orig/kernel/signal.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/signal.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/signal.c linux-4.1.26/kernel/signal.c +--- linux-4.1.26.orig/kernel/signal.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/signal.c 2016-06-19 15:30:58.707298121 +0200 @@ -14,6 +14,7 @@ #include <linux/export.h> #include <linux/init.h> @@ -20836,9 +20822,9 @@ diff -Nur linux-4.1.20.orig/kernel/signal.c linux-4.1.20/kernel/signal.c freezable_schedule(); } else { /* -diff -Nur linux-4.1.20.orig/kernel/softirq.c linux-4.1.20/kernel/softirq.c ---- linux-4.1.20.orig/kernel/softirq.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/softirq.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/softirq.c linux-4.1.26/kernel/softirq.c +--- linux-4.1.26.orig/kernel/softirq.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/softirq.c 2016-06-19 15:30:58.707298121 +0200 @@ -21,10 +21,12 @@ #include <linux/freezer.h> #include <linux/kthread.h> @@ -21809,9 +21795,9 @@ diff -Nur linux-4.1.20.orig/kernel/softirq.c linux-4.1.20/kernel/softirq.c return 0; } -diff -Nur linux-4.1.20.orig/kernel/stop_machine.c linux-4.1.20/kernel/stop_machine.c ---- linux-4.1.20.orig/kernel/stop_machine.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/stop_machine.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/stop_machine.c linux-4.1.26/kernel/stop_machine.c +--- linux-4.1.26.orig/kernel/stop_machine.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/stop_machine.c 2016-06-19 15:30:58.707298121 +0200 @@ -35,7 +35,7 @@ /* the actual stopper, one per every possible cpu, enabled on online cpus */ @@ -21995,9 +21981,9 @@ diff -Nur linux-4.1.20.orig/kernel/stop_machine.c linux-4.1.20/kernel/stop_machi ret = multi_cpu_stop(&msdata); /* Busy wait for completion. */ -diff -Nur linux-4.1.20.orig/kernel/time/hrtimer.c linux-4.1.20/kernel/time/hrtimer.c ---- linux-4.1.20.orig/kernel/time/hrtimer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/hrtimer.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/hrtimer.c linux-4.1.26/kernel/time/hrtimer.c +--- linux-4.1.26.orig/kernel/time/hrtimer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/hrtimer.c 2016-06-19 15:30:58.707298121 +0200 @@ -48,11 +48,13 @@ #include <linux/sched/rt.h> #include <linux/sched/deadline.h> @@ -22602,9 +22588,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/hrtimer.c linux-4.1.20/kernel/time/hrtim } /** -diff -Nur linux-4.1.20.orig/kernel/time/itimer.c linux-4.1.20/kernel/time/itimer.c ---- linux-4.1.20.orig/kernel/time/itimer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/itimer.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/itimer.c linux-4.1.26/kernel/time/itimer.c +--- linux-4.1.26.orig/kernel/time/itimer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/itimer.c 2016-06-19 15:30:58.711298275 +0200 @@ -213,6 +213,7 @@ /* We are sharing ->siglock with it_real_fn() */ if (hrtimer_try_to_cancel(timer) < 0) { @@ -22613,9 +22599,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/itimer.c linux-4.1.20/kernel/time/itimer goto again; } expires = timeval_to_ktime(value->it_value); -diff -Nur linux-4.1.20.orig/kernel/time/jiffies.c linux-4.1.20/kernel/time/jiffies.c ---- linux-4.1.20.orig/kernel/time/jiffies.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/jiffies.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/jiffies.c linux-4.1.26/kernel/time/jiffies.c +--- linux-4.1.26.orig/kernel/time/jiffies.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/jiffies.c 2016-06-19 15:30:58.711298275 +0200 @@ -74,7 +74,8 @@ .max_cycles = 10, }; @@ -22638,9 +22624,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/jiffies.c linux-4.1.20/kernel/time/jiffi return ret; } EXPORT_SYMBOL(get_jiffies_64); -diff -Nur linux-4.1.20.orig/kernel/time/ntp.c linux-4.1.20/kernel/time/ntp.c ---- linux-4.1.20.orig/kernel/time/ntp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/ntp.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/ntp.c linux-4.1.26/kernel/time/ntp.c +--- linux-4.1.26.orig/kernel/time/ntp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/ntp.c 2016-06-19 15:30:58.711298275 +0200 @@ -10,6 +10,7 @@ #include <linux/workqueue.h> #include <linux/hrtimer.h> @@ -22702,9 +22688,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/ntp.c linux-4.1.20/kernel/time/ntp.c #else void ntp_notify_cmos_timer(void) { } -diff -Nur linux-4.1.20.orig/kernel/time/posix-cpu-timers.c linux-4.1.20/kernel/time/posix-cpu-timers.c ---- linux-4.1.20.orig/kernel/time/posix-cpu-timers.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/posix-cpu-timers.c 2016-03-21 20:18:33.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/posix-cpu-timers.c linux-4.1.26/kernel/time/posix-cpu-timers.c +--- linux-4.1.26.orig/kernel/time/posix-cpu-timers.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/posix-cpu-timers.c 2016-06-19 15:30:58.711298275 +0200 @@ -3,6 +3,7 @@ */ @@ -22952,9 +22938,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/posix-cpu-timers.c linux-4.1.20/kernel/t /* * Set one of the process-wide special case CPU timers or RLIMIT_CPU. * The tsk->sighand->siglock must be held by the caller. -diff -Nur linux-4.1.20.orig/kernel/time/posix-timers.c linux-4.1.20/kernel/time/posix-timers.c ---- linux-4.1.20.orig/kernel/time/posix-timers.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/posix-timers.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/posix-timers.c linux-4.1.26/kernel/time/posix-timers.c +--- linux-4.1.26.orig/kernel/time/posix-timers.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/posix-timers.c 2016-06-19 15:30:58.711298275 +0200 @@ -499,6 +499,7 @@ static struct pid *good_sigevent(sigevent_t * event) { @@ -23050,9 +23036,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/posix-timers.c linux-4.1.20/kernel/time/ goto retry_delete; } list_del(&timer->list); -diff -Nur linux-4.1.20.orig/kernel/time/tick-broadcast-hrtimer.c linux-4.1.20/kernel/time/tick-broadcast-hrtimer.c ---- linux-4.1.20.orig/kernel/time/tick-broadcast-hrtimer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/tick-broadcast-hrtimer.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/tick-broadcast-hrtimer.c linux-4.1.26/kernel/time/tick-broadcast-hrtimer.c +--- linux-4.1.26.orig/kernel/time/tick-broadcast-hrtimer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/tick-broadcast-hrtimer.c 2016-06-19 15:30:58.711298275 +0200 @@ -109,5 +109,6 @@ { hrtimer_init(&bctimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); @@ -23060,9 +23046,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/tick-broadcast-hrtimer.c linux-4.1.20/ke + bctimer.irqsafe = true; clockevents_register_device(&ce_broadcast_hrtimer); } -diff -Nur linux-4.1.20.orig/kernel/time/tick-common.c linux-4.1.20/kernel/time/tick-common.c ---- linux-4.1.20.orig/kernel/time/tick-common.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/tick-common.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/tick-common.c linux-4.1.26/kernel/time/tick-common.c +--- linux-4.1.26.orig/kernel/time/tick-common.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/tick-common.c 2016-06-19 15:30:58.711298275 +0200 @@ -78,13 +78,15 @@ static void tick_periodic(int cpu) { @@ -23093,9 +23079,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/tick-common.c linux-4.1.20/kernel/time/t clockevents_set_state(dev, CLOCK_EVT_STATE_ONESHOT); -diff -Nur linux-4.1.20.orig/kernel/time/tick-sched.c linux-4.1.20/kernel/time/tick-sched.c ---- linux-4.1.20.orig/kernel/time/tick-sched.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/tick-sched.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/tick-sched.c linux-4.1.26/kernel/time/tick-sched.c +--- linux-4.1.26.orig/kernel/time/tick-sched.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/tick-sched.c 2016-06-19 15:30:58.711298275 +0200 @@ -62,7 +62,8 @@ return; @@ -23195,9 +23181,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/tick-sched.c linux-4.1.20/kernel/time/ti ts->sched_timer.function = tick_sched_timer; /* Get the next period (per cpu) */ -diff -Nur linux-4.1.20.orig/kernel/time/timekeeping.c linux-4.1.20/kernel/time/timekeeping.c ---- linux-4.1.20.orig/kernel/time/timekeeping.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/timekeeping.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/timekeeping.c linux-4.1.26/kernel/time/timekeeping.c +--- linux-4.1.26.orig/kernel/time/timekeeping.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/timekeeping.c 2016-06-19 15:30:58.711298275 +0200 @@ -2064,8 +2064,10 @@ */ void xtime_update(unsigned long ticks) @@ -23211,9 +23197,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/timekeeping.c linux-4.1.20/kernel/time/t + raw_spin_unlock(&jiffies_lock); update_wall_time(); } -diff -Nur linux-4.1.20.orig/kernel/time/timekeeping.h linux-4.1.20/kernel/time/timekeeping.h ---- linux-4.1.20.orig/kernel/time/timekeeping.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/timekeeping.h 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/timekeeping.h linux-4.1.26/kernel/time/timekeeping.h +--- linux-4.1.26.orig/kernel/time/timekeeping.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/timekeeping.h 2016-06-19 15:30:58.711298275 +0200 @@ -22,7 +22,8 @@ extern void do_timer(unsigned long ticks); extern void update_wall_time(void); @@ -23224,9 +23210,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/timekeeping.h linux-4.1.20/kernel/time/t #define CS_NAME_LEN 32 -diff -Nur linux-4.1.20.orig/kernel/time/timer.c linux-4.1.20/kernel/time/timer.c ---- linux-4.1.20.orig/kernel/time/timer.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/time/timer.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/time/timer.c linux-4.1.26/kernel/time/timer.c +--- linux-4.1.26.orig/kernel/time/timer.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/time/timer.c 2016-06-19 15:30:58.711298275 +0200 @@ -78,6 +78,9 @@ struct tvec_base { spinlock_t lock; @@ -23426,9 +23412,9 @@ diff -Nur linux-4.1.20.orig/kernel/time/timer.c linux-4.1.20/kernel/time/timer.c for (j = 0; j < TVN_SIZE; j++) { INIT_LIST_HEAD(base->tv5.vec + j); -diff -Nur linux-4.1.20.orig/kernel/trace/Kconfig linux-4.1.20/kernel/trace/Kconfig ---- linux-4.1.20.orig/kernel/trace/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/Kconfig 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/Kconfig linux-4.1.26/kernel/trace/Kconfig +--- linux-4.1.26.orig/kernel/trace/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/Kconfig 2016-06-19 15:30:58.711298275 +0200 @@ -187,6 +187,24 @@ enabled. This option and the preempt-off timing option can be used together or separately.) @@ -23554,23 +23540,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/Kconfig linux-4.1.20/kernel/trace/Kconf config ENABLE_DEFAULT_TRACERS bool "Trace process context switches and events" depends on !GENERIC_TRACER -diff -Nur linux-4.1.20.orig/kernel/trace/Makefile linux-4.1.20/kernel/trace/Makefile ---- linux-4.1.20.orig/kernel/trace/Makefile 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/Makefile 2016-03-21 20:18:34.000000000 +0100 -@@ -36,6 +36,10 @@ - obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o - obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o - obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o -+obj-$(CONFIG_INTERRUPT_OFF_HIST) += latency_hist.o -+obj-$(CONFIG_PREEMPT_OFF_HIST) += latency_hist.o -+obj-$(CONFIG_WAKEUP_LATENCY_HIST) += latency_hist.o -+obj-$(CONFIG_MISSED_TIMER_OFFSETS_HIST) += latency_hist.o - obj-$(CONFIG_NOP_TRACER) += trace_nop.o - obj-$(CONFIG_STACK_TRACER) += trace_stack.o - obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o -diff -Nur linux-4.1.20.orig/kernel/trace/latency_hist.c linux-4.1.20/kernel/trace/latency_hist.c ---- linux-4.1.20.orig/kernel/trace/latency_hist.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-4.1.20/kernel/trace/latency_hist.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/latency_hist.c linux-4.1.26/kernel/trace/latency_hist.c +--- linux-4.1.26.orig/kernel/trace/latency_hist.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-4.1.26/kernel/trace/latency_hist.c 2016-06-19 15:30:58.715298429 +0200 @@ -0,0 +1,1178 @@ +/* + * kernel/trace/latency_hist.c @@ -24750,9 +24722,23 @@ diff -Nur linux-4.1.20.orig/kernel/trace/latency_hist.c linux-4.1.20/kernel/trac +} + +device_initcall(latency_hist_init); -diff -Nur linux-4.1.20.orig/kernel/trace/trace.c linux-4.1.20/kernel/trace/trace.c ---- linux-4.1.20.orig/kernel/trace/trace.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/Makefile linux-4.1.26/kernel/trace/Makefile +--- linux-4.1.26.orig/kernel/trace/Makefile 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/Makefile 2016-06-19 15:30:58.715298429 +0200 +@@ -36,6 +36,10 @@ + obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o + obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o + obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o ++obj-$(CONFIG_INTERRUPT_OFF_HIST) += latency_hist.o ++obj-$(CONFIG_PREEMPT_OFF_HIST) += latency_hist.o ++obj-$(CONFIG_WAKEUP_LATENCY_HIST) += latency_hist.o ++obj-$(CONFIG_MISSED_TIMER_OFFSETS_HIST) += latency_hist.o + obj-$(CONFIG_NOP_TRACER) += trace_nop.o + obj-$(CONFIG_STACK_TRACER) += trace_stack.o + obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o +diff -Nur linux-4.1.26.orig/kernel/trace/trace.c linux-4.1.26/kernel/trace/trace.c +--- linux-4.1.26.orig/kernel/trace/trace.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace.c 2016-06-19 15:30:58.715298429 +0200 @@ -1630,6 +1630,7 @@ struct task_struct *tsk = current; @@ -24820,9 +24806,21 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace.c linux-4.1.20/kernel/trace/trace } void -diff -Nur linux-4.1.20.orig/kernel/trace/trace.h linux-4.1.20/kernel/trace/trace.h ---- linux-4.1.20.orig/kernel/trace/trace.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace.h 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/trace_events.c linux-4.1.26/kernel/trace/trace_events.c +--- linux-4.1.26.orig/kernel/trace/trace_events.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace_events.c 2016-06-19 15:30:58.715298429 +0200 +@@ -162,6 +162,8 @@ + __common_field(unsigned char, flags); + __common_field(unsigned char, preempt_count); + __common_field(int, pid); ++ __common_field(unsigned short, migrate_disable); ++ __common_field(unsigned short, padding); + + return ret; + } +diff -Nur linux-4.1.26.orig/kernel/trace/trace.h linux-4.1.26/kernel/trace/trace.h +--- linux-4.1.26.orig/kernel/trace/trace.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace.h 2016-06-19 15:30:58.715298429 +0200 @@ -120,6 +120,7 @@ * NEED_RESCHED - reschedule is requested * HARDIRQ - inside an interrupt handler @@ -24839,21 +24837,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace.h linux-4.1.20/kernel/trace/trace }; #define TRACE_BUF_SIZE 1024 -diff -Nur linux-4.1.20.orig/kernel/trace/trace_events.c linux-4.1.20/kernel/trace/trace_events.c ---- linux-4.1.20.orig/kernel/trace/trace_events.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace_events.c 2016-03-21 20:18:34.000000000 +0100 -@@ -162,6 +162,8 @@ - __common_field(unsigned char, flags); - __common_field(unsigned char, preempt_count); - __common_field(int, pid); -+ __common_field(unsigned short, migrate_disable); -+ __common_field(unsigned short, padding); - - return ret; - } -diff -Nur linux-4.1.20.orig/kernel/trace/trace_irqsoff.c linux-4.1.20/kernel/trace/trace_irqsoff.c ---- linux-4.1.20.orig/kernel/trace/trace_irqsoff.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace_irqsoff.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/trace_irqsoff.c linux-4.1.26/kernel/trace/trace_irqsoff.c +--- linux-4.1.26.orig/kernel/trace/trace_irqsoff.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace_irqsoff.c 2016-06-19 15:30:58.715298429 +0200 @@ -13,6 +13,7 @@ #include <linux/uaccess.h> #include <linux/module.h> @@ -24937,9 +24923,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace_irqsoff.c linux-4.1.20/kernel/tra if (preempt_trace() && !irq_trace()) start_critical_timing(a0, a1); } -diff -Nur linux-4.1.20.orig/kernel/trace/trace_output.c linux-4.1.20/kernel/trace/trace_output.c ---- linux-4.1.20.orig/kernel/trace/trace_output.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace_output.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/trace_output.c linux-4.1.26/kernel/trace/trace_output.c +--- linux-4.1.26.orig/kernel/trace/trace_output.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace_output.c 2016-06-19 15:30:58.715298429 +0200 @@ -430,6 +430,7 @@ { char hardsoft_irq; @@ -24985,9 +24971,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace_output.c linux-4.1.20/kernel/trac return !trace_seq_has_overflowed(s); } -diff -Nur linux-4.1.20.orig/kernel/trace/trace_sched_switch.c linux-4.1.20/kernel/trace/trace_sched_switch.c ---- linux-4.1.20.orig/kernel/trace/trace_sched_switch.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace_sched_switch.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/trace_sched_switch.c linux-4.1.26/kernel/trace/trace_sched_switch.c +--- linux-4.1.26.orig/kernel/trace/trace_sched_switch.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace_sched_switch.c 2016-06-19 15:30:58.715298429 +0200 @@ -26,7 +26,7 @@ } @@ -24997,9 +24983,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace_sched_switch.c linux-4.1.20/kerne { if (unlikely(!sched_ref)) return; -diff -Nur linux-4.1.20.orig/kernel/trace/trace_sched_wakeup.c linux-4.1.20/kernel/trace/trace_sched_wakeup.c ---- linux-4.1.20.orig/kernel/trace/trace_sched_wakeup.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/trace/trace_sched_wakeup.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/trace/trace_sched_wakeup.c linux-4.1.26/kernel/trace/trace_sched_wakeup.c +--- linux-4.1.26.orig/kernel/trace/trace_sched_wakeup.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/trace/trace_sched_wakeup.c 2016-06-19 15:30:58.719298583 +0200 @@ -514,7 +514,7 @@ } @@ -25009,9 +24995,9 @@ diff -Nur linux-4.1.20.orig/kernel/trace/trace_sched_wakeup.c linux-4.1.20/kerne { struct trace_array_cpu *data; int cpu = smp_processor_id(); -diff -Nur linux-4.1.20.orig/kernel/user.c linux-4.1.20/kernel/user.c ---- linux-4.1.20.orig/kernel/user.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/user.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/user.c linux-4.1.26/kernel/user.c +--- linux-4.1.26.orig/kernel/user.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/user.c 2016-06-19 15:30:58.719298583 +0200 @@ -161,11 +161,11 @@ if (!up) return; @@ -25026,9 +25012,9 @@ diff -Nur linux-4.1.20.orig/kernel/user.c linux-4.1.20/kernel/user.c } struct user_struct *alloc_uid(kuid_t uid) -diff -Nur linux-4.1.20.orig/kernel/watchdog.c linux-4.1.20/kernel/watchdog.c ---- linux-4.1.20.orig/kernel/watchdog.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/watchdog.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/watchdog.c linux-4.1.26/kernel/watchdog.c +--- linux-4.1.26.orig/kernel/watchdog.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/watchdog.c 2016-06-19 15:30:58.719298583 +0200 @@ -262,6 +262,8 @@ #ifdef CONFIG_HARDLOCKUP_DETECTOR @@ -25070,9 +25056,9 @@ diff -Nur linux-4.1.20.orig/kernel/watchdog.c linux-4.1.20/kernel/watchdog.c /* Enable the perf event */ watchdog_nmi_enable(cpu); -diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c ---- linux-4.1.20.orig/kernel/workqueue.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/workqueue.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/workqueue.c linux-4.1.26/kernel/workqueue.c +--- linux-4.1.26.orig/kernel/workqueue.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/workqueue.c 2016-06-19 15:30:58.719298583 +0200 @@ -48,6 +48,8 @@ #include <linux/nodemask.h> #include <linux/moduleparam.h> @@ -25215,7 +25201,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c * If the pwq needs to be used beyond the locking in effect, the caller is * responsible for guaranteeing that the pwq stays online. * -@@ -677,8 +710,8 @@ +@@ -706,8 +739,8 @@ * @work: the work item of interest * * Pools are created and destroyed under wq_pool_mutex, and allows read @@ -25226,7 +25212,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c * * All fields of the returned pool are accessible as long as the above * mentioned locking is in effect. If the returned pool needs to be used -@@ -815,51 +848,44 @@ +@@ -844,51 +877,44 @@ */ static void wake_up_worker(struct worker_pool *pool) { @@ -25297,7 +25283,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c struct worker_pool *pool; /* -@@ -868,29 +894,26 @@ +@@ -897,29 +923,26 @@ * checking NOT_RUNNING. */ if (worker->flags & WORKER_NOT_RUNNING) @@ -25337,7 +25323,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /** -@@ -1084,12 +1107,12 @@ +@@ -1113,12 +1136,12 @@ { if (pwq) { /* @@ -25353,7 +25339,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } } -@@ -1191,7 +1214,7 @@ +@@ -1220,7 +1243,7 @@ struct worker_pool *pool; struct pool_workqueue *pwq; @@ -25362,7 +25348,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c /* try to steal the timer if it exists */ if (is_dwork) { -@@ -1210,6 +1233,7 @@ +@@ -1239,6 +1262,7 @@ if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) return 0; @@ -25370,7 +25356,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c /* * The queueing is in progress, or it is already queued. Try to * steal it from ->worklist without clearing WORK_STRUCT_PENDING. -@@ -1248,14 +1272,16 @@ +@@ -1277,14 +1301,16 @@ set_work_pool_and_keep_pending(work, pool->id); spin_unlock(&pool->lock); @@ -25389,7 +25375,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return -EAGAIN; } -@@ -1324,7 +1350,7 @@ +@@ -1353,7 +1379,7 @@ * queued or lose PENDING. Grabbing PENDING and queueing should * happen with IRQ disabled. */ @@ -25398,7 +25384,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c debug_work_activate(work); -@@ -1332,6 +1358,8 @@ +@@ -1361,6 +1387,8 @@ if (unlikely(wq->flags & __WQ_DRAINING) && WARN_ON_ONCE(!is_chained_work(wq))) return; @@ -25407,7 +25393,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c retry: if (req_cpu == WORK_CPU_UNBOUND) cpu = raw_smp_processor_id(); -@@ -1388,10 +1416,8 @@ +@@ -1417,10 +1445,8 @@ /* pwq determined, queue */ trace_workqueue_queue_work(req_cpu, pwq, work); @@ -25420,7 +25406,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c pwq->nr_in_flight[pwq->work_color]++; work_flags = work_color_to_flags(pwq->work_color); -@@ -1407,7 +1433,9 @@ +@@ -1436,7 +1462,9 @@ insert_work(pwq, work, worklist, work_flags); @@ -25430,7 +25416,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /** -@@ -1427,14 +1455,14 @@ +@@ -1456,14 +1484,14 @@ bool ret = false; unsigned long flags; @@ -25447,7 +25433,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return ret; } EXPORT_SYMBOL(queue_work_on); -@@ -1501,14 +1529,14 @@ +@@ -1530,14 +1558,14 @@ unsigned long flags; /* read the comment in __queue_work() */ @@ -25464,7 +25450,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return ret; } EXPORT_SYMBOL(queue_delayed_work_on); -@@ -1543,7 +1571,7 @@ +@@ -1572,7 +1600,7 @@ if (likely(ret >= 0)) { __queue_delayed_work(cpu, wq, dwork, delay); @@ -25473,7 +25459,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /* -ENOENT from try_to_grab_pending() becomes %true */ -@@ -1576,7 +1604,9 @@ +@@ -1605,7 +1633,9 @@ worker->last_active = jiffies; /* idle_list is LIFO */ @@ -25483,7 +25469,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c if (too_many_workers(pool) && !timer_pending(&pool->idle_timer)) mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT); -@@ -1609,7 +1639,9 @@ +@@ -1638,7 +1668,9 @@ return; worker_clr_flags(worker, WORKER_IDLE); pool->nr_idle--; @@ -25493,7 +25479,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } static struct worker *alloc_worker(int node) -@@ -1777,7 +1809,9 @@ +@@ -1806,7 +1838,9 @@ pool->nr_workers--; pool->nr_idle--; @@ -25503,7 +25489,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c worker->flags |= WORKER_DIE; wake_up_process(worker->task); } -@@ -2694,14 +2728,14 @@ +@@ -2723,14 +2757,14 @@ might_sleep(); @@ -25521,7 +25507,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2728,10 +2762,11 @@ +@@ -2757,10 +2791,11 @@ else lock_map_acquire_read(&pwq->wq->lockdep_map); lock_map_release(&pwq->wq->lockdep_map); @@ -25534,7 +25520,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return false; } -@@ -2818,7 +2853,7 @@ +@@ -2847,7 +2882,7 @@ /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -25543,7 +25529,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c flush_work(work); clear_work_data(work); -@@ -2873,10 +2908,10 @@ +@@ -2902,10 +2937,10 @@ */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -25556,7 +25542,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -2911,7 +2946,7 @@ +@@ -2940,7 +2975,7 @@ set_work_pool_and_clear_pending(&dwork->work, get_work_pool_id(&dwork->work)); @@ -25565,7 +25551,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return ret; } EXPORT_SYMBOL(cancel_delayed_work); -@@ -3169,7 +3204,7 @@ +@@ -3198,7 +3233,7 @@ * put_unbound_pool - put a worker_pool * @pool: worker_pool to put * @@ -25574,7 +25560,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c * safe manner. get_unbound_pool() calls this function on its failure path * and this function should be able to release pools which went through, * successfully or not, init_worker_pool(). -@@ -3223,8 +3258,8 @@ +@@ -3252,8 +3287,8 @@ del_timer_sync(&pool->idle_timer); del_timer_sync(&pool->mayday_timer); @@ -25585,7 +25571,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /** -@@ -3329,14 +3364,14 @@ +@@ -3358,14 +3393,14 @@ put_unbound_pool(pool); mutex_unlock(&wq_pool_mutex); @@ -25602,7 +25588,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /** -@@ -3974,7 +4009,7 @@ +@@ -4003,7 +4038,7 @@ * The base ref is never dropped on per-cpu pwqs. Directly * schedule RCU free. */ @@ -25611,7 +25597,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } else { /* * We're the sole accessor of @wq at this point. Directly -@@ -4067,7 +4102,8 @@ +@@ -4096,7 +4131,8 @@ struct pool_workqueue *pwq; bool ret; @@ -25621,7 +25607,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4078,7 +4114,8 @@ +@@ -4107,7 +4143,8 @@ pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); ret = !list_empty(&pwq->delayed_works); @@ -25631,7 +25617,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return ret; } -@@ -4104,15 +4141,15 @@ +@@ -4133,15 +4170,15 @@ if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -25651,7 +25637,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return ret; } -@@ -4301,7 +4338,7 @@ +@@ -4330,7 +4367,7 @@ unsigned long flags; int pi; @@ -25660,7 +25646,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c pr_info("Showing busy workqueues and worker pools:\n"); -@@ -4352,7 +4389,7 @@ +@@ -4381,7 +4418,7 @@ spin_unlock_irqrestore(&pool->lock, flags); } @@ -25669,7 +25655,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } /* -@@ -4702,16 +4739,16 @@ +@@ -4742,16 +4779,16 @@ * nr_active is monotonically decreasing. It's safe * to peek without lock. */ @@ -25689,7 +25675,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c } out_unlock: mutex_unlock(&wq_pool_mutex); -@@ -4825,7 +4862,8 @@ +@@ -4865,7 +4902,8 @@ const char *delim = ""; int node, written = 0; @@ -25699,7 +25685,7 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c for_each_node(node) { written += scnprintf(buf + written, PAGE_SIZE - written, "%s%d:%d", delim, node, -@@ -4833,7 +4871,8 @@ +@@ -4873,7 +4911,8 @@ delim = " "; } written += scnprintf(buf + written, PAGE_SIZE - written, "\n"); @@ -25709,9 +25695,9 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue.c linux-4.1.20/kernel/workqueue.c return written; } -diff -Nur linux-4.1.20.orig/kernel/workqueue_internal.h linux-4.1.20/kernel/workqueue_internal.h ---- linux-4.1.20.orig/kernel/workqueue_internal.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/kernel/workqueue_internal.h 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/kernel/workqueue_internal.h linux-4.1.26/kernel/workqueue_internal.h +--- linux-4.1.26.orig/kernel/workqueue_internal.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/kernel/workqueue_internal.h 2016-06-19 15:30:58.719298583 +0200 @@ -43,6 +43,7 @@ unsigned long last_active; /* L: last active timestamp */ unsigned int flags; /* X: flags */ @@ -25730,20 +25716,9 @@ diff -Nur linux-4.1.20.orig/kernel/workqueue_internal.h linux-4.1.20/kernel/work +void wq_worker_sleeping(struct task_struct *task); #endif /* _KERNEL_WORKQUEUE_INTERNAL_H */ -diff -Nur linux-4.1.20.orig/lib/Kconfig linux-4.1.20/lib/Kconfig ---- linux-4.1.20.orig/lib/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/Kconfig 2016-03-21 20:18:34.000000000 +0100 -@@ -391,6 +391,7 @@ - - config CPUMASK_OFFSTACK - bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS -+ depends on !PREEMPT_RT_FULL - help - Use dynamic allocation for cpumask_var_t, instead of putting - them on the stack. This is a bit more expensive, but avoids -diff -Nur linux-4.1.20.orig/lib/debugobjects.c linux-4.1.20/lib/debugobjects.c ---- linux-4.1.20.orig/lib/debugobjects.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/debugobjects.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/debugobjects.c linux-4.1.26/lib/debugobjects.c +--- linux-4.1.26.orig/lib/debugobjects.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/debugobjects.c 2016-06-19 15:30:58.719298583 +0200 @@ -309,7 +309,10 @@ struct debug_obj *obj; unsigned long flags; @@ -25756,9 +25731,9 @@ diff -Nur linux-4.1.20.orig/lib/debugobjects.c linux-4.1.20/lib/debugobjects.c db = get_bucket((unsigned long) addr); -diff -Nur linux-4.1.20.orig/lib/dump_stack.c linux-4.1.20/lib/dump_stack.c ---- linux-4.1.20.orig/lib/dump_stack.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/dump_stack.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/dump_stack.c linux-4.1.26/lib/dump_stack.c +--- linux-4.1.26.orig/lib/dump_stack.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/dump_stack.c 2016-06-19 15:30:58.719298583 +0200 @@ -8,6 +8,7 @@ #include <linux/sched.h> #include <linux/smp.h> @@ -25767,9 +25742,9 @@ diff -Nur linux-4.1.20.orig/lib/dump_stack.c linux-4.1.20/lib/dump_stack.c static void __dump_stack(void) { -diff -Nur linux-4.1.20.orig/lib/idr.c linux-4.1.20/lib/idr.c ---- linux-4.1.20.orig/lib/idr.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/idr.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/idr.c linux-4.1.26/lib/idr.c +--- linux-4.1.26.orig/lib/idr.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/idr.c 2016-06-19 15:30:58.723298738 +0200 @@ -30,6 +30,7 @@ #include <linux/idr.h> #include <linux/spinlock.h> @@ -25835,9 +25810,20 @@ diff -Nur linux-4.1.20.orig/lib/idr.c linux-4.1.20/lib/idr.c if (!new) break; -diff -Nur linux-4.1.20.orig/lib/locking-selftest.c linux-4.1.20/lib/locking-selftest.c ---- linux-4.1.20.orig/lib/locking-selftest.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/locking-selftest.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/Kconfig linux-4.1.26/lib/Kconfig +--- linux-4.1.26.orig/lib/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/Kconfig 2016-06-19 15:30:58.719298583 +0200 +@@ -391,6 +391,7 @@ + + config CPUMASK_OFFSTACK + bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS ++ depends on !PREEMPT_RT_FULL + help + Use dynamic allocation for cpumask_var_t, instead of putting + them on the stack. This is a bit more expensive, but avoids +diff -Nur linux-4.1.26.orig/lib/locking-selftest.c linux-4.1.26/lib/locking-selftest.c +--- linux-4.1.26.orig/lib/locking-selftest.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/locking-selftest.c 2016-06-19 15:30:58.723298738 +0200 @@ -590,6 +590,8 @@ #include "locking-selftest-spin-hardirq.h" GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_spin) @@ -25986,9 +25972,9 @@ diff -Nur linux-4.1.20.orig/lib/locking-selftest.c linux-4.1.20/lib/locking-self ww_tests(); -diff -Nur linux-4.1.20.orig/lib/percpu_ida.c linux-4.1.20/lib/percpu_ida.c ---- linux-4.1.20.orig/lib/percpu_ida.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/percpu_ida.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/percpu_ida.c linux-4.1.26/lib/percpu_ida.c +--- linux-4.1.26.orig/lib/percpu_ida.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/percpu_ida.c 2016-06-19 15:30:58.723298738 +0200 @@ -26,6 +26,9 @@ #include <linux/string.h> #include <linux/spinlock.h> @@ -26077,9 +26063,9 @@ diff -Nur linux-4.1.20.orig/lib/percpu_ida.c linux-4.1.20/lib/percpu_ida.c return err; } EXPORT_SYMBOL_GPL(percpu_ida_for_each_free); -diff -Nur linux-4.1.20.orig/lib/radix-tree.c linux-4.1.20/lib/radix-tree.c ---- linux-4.1.20.orig/lib/radix-tree.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/radix-tree.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/radix-tree.c linux-4.1.26/lib/radix-tree.c +--- linux-4.1.26.orig/lib/radix-tree.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/radix-tree.c 2016-06-19 15:30:58.723298738 +0200 @@ -195,12 +195,13 @@ * succeed in getting a node here (and never reach * kmem_cache_alloc) @@ -26111,9 +26097,9 @@ diff -Nur linux-4.1.20.orig/lib/radix-tree.c linux-4.1.20/lib/radix-tree.c /* * Return the maximum key which can be store into a -diff -Nur linux-4.1.20.orig/lib/scatterlist.c linux-4.1.20/lib/scatterlist.c ---- linux-4.1.20.orig/lib/scatterlist.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/scatterlist.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/scatterlist.c linux-4.1.26/lib/scatterlist.c +--- linux-4.1.26.orig/lib/scatterlist.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/scatterlist.c 2016-06-19 15:30:58.723298738 +0200 @@ -592,7 +592,7 @@ flush_kernel_dcache_page(miter->page); @@ -26141,9 +26127,9 @@ diff -Nur linux-4.1.20.orig/lib/scatterlist.c linux-4.1.20/lib/scatterlist.c return offset; } -diff -Nur linux-4.1.20.orig/lib/smp_processor_id.c linux-4.1.20/lib/smp_processor_id.c ---- linux-4.1.20.orig/lib/smp_processor_id.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/smp_processor_id.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/smp_processor_id.c linux-4.1.26/lib/smp_processor_id.c +--- linux-4.1.26.orig/lib/smp_processor_id.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/smp_processor_id.c 2016-06-19 15:30:58.723298738 +0200 @@ -39,8 +39,9 @@ if (!printk_ratelimit()) goto out_enable; @@ -26156,9 +26142,9 @@ diff -Nur linux-4.1.20.orig/lib/smp_processor_id.c linux-4.1.20/lib/smp_processo print_symbol("caller is %s\n", (long)__builtin_return_address(0)); dump_stack(); -diff -Nur linux-4.1.20.orig/lib/strnlen_user.c linux-4.1.20/lib/strnlen_user.c ---- linux-4.1.20.orig/lib/strnlen_user.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/lib/strnlen_user.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/lib/strnlen_user.c linux-4.1.26/lib/strnlen_user.c +--- linux-4.1.26.orig/lib/strnlen_user.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/lib/strnlen_user.c 2016-06-19 15:30:58.723298738 +0200 @@ -85,7 +85,8 @@ * @str: The string to measure. * @count: Maximum count (including NUL character) @@ -26179,22 +26165,10 @@ diff -Nur linux-4.1.20.orig/lib/strnlen_user.c linux-4.1.20/lib/strnlen_user.c * * Get the size of a NUL-terminated string in user space. * -diff -Nur linux-4.1.20.orig/mm/Kconfig linux-4.1.20/mm/Kconfig ---- linux-4.1.20.orig/mm/Kconfig 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/Kconfig 2016-03-21 20:18:34.000000000 +0100 -@@ -409,7 +409,7 @@ - - config TRANSPARENT_HUGEPAGE - bool "Transparent Hugepage Support" -- depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE -+ depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE && !PREEMPT_RT_FULL - select COMPACTION - help - Transparent Hugepages allows the kernel to use huge pages and -diff -Nur linux-4.1.20.orig/mm/compaction.c linux-4.1.20/mm/compaction.c ---- linux-4.1.20.orig/mm/compaction.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/compaction.c 2016-03-21 20:18:34.000000000 +0100 -@@ -1406,10 +1406,12 @@ +diff -Nur linux-4.1.26.orig/mm/compaction.c linux-4.1.26/mm/compaction.c +--- linux-4.1.26.orig/mm/compaction.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/compaction.c 2016-06-19 15:30:58.823302594 +0200 +@@ -1398,10 +1398,12 @@ cc->migrate_pfn & ~((1UL << cc->order) - 1); if (last_migrated_pfn < current_block_start) { @@ -26209,9 +26183,9 @@ diff -Nur linux-4.1.20.orig/mm/compaction.c linux-4.1.20/mm/compaction.c /* No more flushing until we migrate again */ last_migrated_pfn = 0; } -diff -Nur linux-4.1.20.orig/mm/filemap.c linux-4.1.20/mm/filemap.c ---- linux-4.1.20.orig/mm/filemap.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/filemap.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/filemap.c linux-4.1.26/mm/filemap.c +--- linux-4.1.26.orig/mm/filemap.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/filemap.c 2016-06-19 15:30:58.823302594 +0200 @@ -167,7 +167,9 @@ if (!workingset_node_pages(node) && list_empty(&node->private_list)) { @@ -26238,9 +26212,9 @@ diff -Nur linux-4.1.20.orig/mm/filemap.c linux-4.1.20/mm/filemap.c } return 0; } -diff -Nur linux-4.1.20.orig/mm/highmem.c linux-4.1.20/mm/highmem.c ---- linux-4.1.20.orig/mm/highmem.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/highmem.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/highmem.c linux-4.1.26/mm/highmem.c +--- linux-4.1.26.orig/mm/highmem.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/highmem.c 2016-06-19 15:30:58.823302594 +0200 @@ -29,10 +29,11 @@ #include <linux/kgdb.h> #include <asm/tlbflush.h> @@ -26265,9 +26239,21 @@ diff -Nur linux-4.1.20.orig/mm/highmem.c linux-4.1.20/mm/highmem.c unsigned int nr_free_highpages (void) { -diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c ---- linux-4.1.20.orig/mm/memcontrol.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/memcontrol.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/Kconfig linux-4.1.26/mm/Kconfig +--- linux-4.1.26.orig/mm/Kconfig 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/Kconfig 2016-06-19 15:30:58.823302594 +0200 +@@ -409,7 +409,7 @@ + + config TRANSPARENT_HUGEPAGE + bool "Transparent Hugepage Support" +- depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE ++ depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE && !PREEMPT_RT_FULL + select COMPACTION + help + Transparent Hugepages allows the kernel to use huge pages and +diff -Nur linux-4.1.26.orig/mm/memcontrol.c linux-4.1.26/mm/memcontrol.c +--- linux-4.1.26.orig/mm/memcontrol.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/memcontrol.c 2016-06-19 15:30:58.827302748 +0200 @@ -66,6 +66,8 @@ #include <net/sock.h> #include <net/ip.h> @@ -26338,7 +26324,7 @@ diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c out_unlock: unlock_page(page); out: -@@ -5545,10 +5551,10 @@ +@@ -5551,10 +5557,10 @@ VM_BUG_ON_PAGE(!PageTransHuge(page), page); } @@ -26351,7 +26337,7 @@ diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c if (do_swap_account && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; -@@ -5604,14 +5610,14 @@ +@@ -5610,14 +5616,14 @@ memcg_oom_recover(memcg); } @@ -26368,7 +26354,7 @@ diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c if (!mem_cgroup_is_root(memcg)) css_put_many(&memcg->css, nr_pages); -@@ -5815,6 +5821,7 @@ +@@ -5821,6 +5827,7 @@ { struct mem_cgroup *memcg; unsigned short oldid; @@ -26376,7 +26362,7 @@ diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -5837,9 +5844,11 @@ +@@ -5843,9 +5850,11 @@ if (!mem_cgroup_is_root(memcg)) page_counter_uncharge(&memcg->memory, 1); @@ -26388,9 +26374,9 @@ diff -Nur linux-4.1.20.orig/mm/memcontrol.c linux-4.1.20/mm/memcontrol.c } /** -diff -Nur linux-4.1.20.orig/mm/memory.c linux-4.1.20/mm/memory.c ---- linux-4.1.20.orig/mm/memory.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/memory.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/memory.c linux-4.1.26/mm/memory.c +--- linux-4.1.26.orig/mm/memory.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/memory.c 2016-06-19 15:30:58.827302748 +0200 @@ -3753,7 +3753,7 @@ } @@ -26427,9 +26413,9 @@ diff -Nur linux-4.1.20.orig/mm/memory.c linux-4.1.20/mm/memory.c #endif #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) -diff -Nur linux-4.1.20.orig/mm/mmu_context.c linux-4.1.20/mm/mmu_context.c ---- linux-4.1.20.orig/mm/mmu_context.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/mmu_context.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/mmu_context.c linux-4.1.26/mm/mmu_context.c +--- linux-4.1.26.orig/mm/mmu_context.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/mmu_context.c 2016-06-19 15:30:58.827302748 +0200 @@ -23,6 +23,7 @@ struct task_struct *tsk = current; @@ -26446,9 +26432,9 @@ diff -Nur linux-4.1.20.orig/mm/mmu_context.c linux-4.1.20/mm/mmu_context.c task_unlock(tsk); #ifdef finish_arch_post_lock_switch finish_arch_post_lock_switch(); -diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c ---- linux-4.1.20.orig/mm/page_alloc.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/page_alloc.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/page_alloc.c linux-4.1.26/mm/page_alloc.c +--- linux-4.1.26.orig/mm/page_alloc.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/page_alloc.c 2016-06-19 15:30:58.827302748 +0200 @@ -60,6 +60,7 @@ #include <linux/page_ext.h> #include <linux/hugetlb.h> @@ -26476,7 +26462,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c int page_group_by_mobility_disabled __read_mostly; void set_pageblock_migratetype(struct page *page, int migratetype) -@@ -681,7 +694,7 @@ +@@ -701,7 +714,7 @@ } /* @@ -26485,7 +26471,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c * Assumes all pages on list are in same zone, and of same order. * count is the number of pages to free. * -@@ -692,18 +705,51 @@ +@@ -712,18 +725,51 @@ * pinned" detection logic. */ static void free_pcppages_bulk(struct zone *zone, int count, @@ -26541,7 +26527,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c while (to_free) { struct page *page; struct list_head *list; -@@ -719,7 +765,7 @@ +@@ -739,7 +785,7 @@ batch_free++; if (++migratetype == MIGRATE_PCPTYPES) migratetype = 0; @@ -26550,7 +26536,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } while (list_empty(list)); /* This is the only non-empty list. Free them all. */ -@@ -727,21 +773,11 @@ +@@ -747,21 +793,11 @@ batch_free = to_free; do { @@ -26574,7 +26560,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } static void free_one_page(struct zone *zone, -@@ -750,7 +786,9 @@ +@@ -770,7 +806,9 @@ int migratetype) { unsigned long nr_scanned; @@ -26585,7 +26571,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c nr_scanned = zone_page_state(zone, NR_PAGES_SCANNED); if (nr_scanned) __mod_zone_page_state(zone, NR_PAGES_SCANNED, -nr_scanned); -@@ -760,7 +798,7 @@ +@@ -780,7 +818,7 @@ migratetype = get_pfnblock_migratetype(page, pfn); } __free_one_page(page, pfn, zone, order, migratetype); @@ -26594,7 +26580,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } static int free_tail_pages_check(struct page *head_page, struct page *page) -@@ -825,11 +863,11 @@ +@@ -845,11 +883,11 @@ return; migratetype = get_pfnblock_migratetype(page, pfn); @@ -26607,8 +26593,8 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c + local_unlock_irqrestore(pa_lock, flags); } - void __init __free_pages_bootmem(struct page *page, unsigned int order) -@@ -1371,16 +1409,18 @@ + void __init __free_pages_bootmem(struct page *page, unsigned long pfn, +@@ -1396,16 +1434,18 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; @@ -26630,7 +26616,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } #endif -@@ -1396,16 +1436,21 @@ +@@ -1421,16 +1461,21 @@ unsigned long flags; struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -26656,7 +26642,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } /* -@@ -1491,8 +1536,17 @@ +@@ -1516,8 +1561,17 @@ else cpumask_clear_cpu(cpu, &cpus_with_pcps); } @@ -26674,7 +26660,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } #ifdef CONFIG_HIBERNATION -@@ -1548,7 +1602,7 @@ +@@ -1573,7 +1627,7 @@ migratetype = get_pfnblock_migratetype(page, pfn); set_freepage_migratetype(page, migratetype); @@ -26683,7 +26669,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c __count_vm_event(PGFREE); /* -@@ -1574,12 +1628,17 @@ +@@ -1599,12 +1653,17 @@ pcp->count++; if (pcp->count >= pcp->high) { unsigned long batch = READ_ONCE(pcp->batch); @@ -26703,7 +26689,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } /* -@@ -1710,7 +1769,7 @@ +@@ -1735,7 +1794,7 @@ struct per_cpu_pages *pcp; struct list_head *list; @@ -26712,7 +26698,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c pcp = &this_cpu_ptr(zone->pageset)->pcp; list = &pcp->lists[migratetype]; if (list_empty(list)) { -@@ -1742,13 +1801,15 @@ +@@ -1767,13 +1826,15 @@ */ WARN_ON_ONCE(order > 1); } @@ -26731,7 +26717,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order)); -@@ -1758,13 +1819,13 @@ +@@ -1783,13 +1844,13 @@ __count_zone_vm_events(PGALLOC, zone, 1 << order); zone_statistics(preferred_zone, zone, gfp_flags); @@ -26747,7 +26733,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c return NULL; } -@@ -5653,6 +5714,7 @@ +@@ -5680,6 +5741,7 @@ void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); @@ -26755,7 +26741,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } /* -@@ -6547,7 +6609,7 @@ +@@ -6575,7 +6637,7 @@ struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -26764,7 +26750,7 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -6556,7 +6618,7 @@ +@@ -6584,7 +6646,7 @@ free_percpu(zone->pageset); zone->pageset = &boot_pageset; } @@ -26773,9 +26759,9 @@ diff -Nur linux-4.1.20.orig/mm/page_alloc.c linux-4.1.20/mm/page_alloc.c } #ifdef CONFIG_MEMORY_HOTREMOVE -diff -Nur linux-4.1.20.orig/mm/slab.h linux-4.1.20/mm/slab.h ---- linux-4.1.20.orig/mm/slab.h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/slab.h 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/slab.h linux-4.1.26/mm/slab.h +--- linux-4.1.26.orig/mm/slab.h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/slab.h 2016-06-19 15:30:58.827302748 +0200 @@ -330,7 +330,11 @@ * The slab lists for all objects. */ @@ -26788,9 +26774,9 @@ diff -Nur linux-4.1.20.orig/mm/slab.h linux-4.1.20/mm/slab.h #ifdef CONFIG_SLAB struct list_head slabs_partial; /* partial list first, better asm code */ -diff -Nur linux-4.1.20.orig/mm/slub.c linux-4.1.20/mm/slub.c ---- linux-4.1.20.orig/mm/slub.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/slub.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/slub.c linux-4.1.26/mm/slub.c +--- linux-4.1.26.orig/mm/slub.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/slub.c 2016-06-19 15:30:58.827302748 +0200 @@ -1069,7 +1069,7 @@ { struct kmem_cache_node *n = get_node(s, page_to_nid(page)); @@ -27275,9 +27261,9 @@ diff -Nur linux-4.1.20.orig/mm/slub.c linux-4.1.20/mm/slub.c } for (i = 0; i < t.count; i++) { -diff -Nur linux-4.1.20.orig/mm/swap.c linux-4.1.20/mm/swap.c ---- linux-4.1.20.orig/mm/swap.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/swap.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/swap.c linux-4.1.26/mm/swap.c +--- linux-4.1.26.orig/mm/swap.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/swap.c 2016-06-19 15:30:58.831302903 +0200 @@ -32,6 +32,7 @@ #include <linux/gfp.h> #include <linux/uio.h> @@ -27396,9 +27382,9 @@ diff -Nur linux-4.1.20.orig/mm/swap.c linux-4.1.20/mm/swap.c } static void lru_add_drain_per_cpu(struct work_struct *dummy) -diff -Nur linux-4.1.20.orig/mm/truncate.c linux-4.1.20/mm/truncate.c ---- linux-4.1.20.orig/mm/truncate.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/truncate.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/truncate.c linux-4.1.26/mm/truncate.c +--- linux-4.1.26.orig/mm/truncate.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/truncate.c 2016-06-19 15:30:58.831302903 +0200 @@ -56,8 +56,11 @@ * protected by mapping->tree_lock. */ @@ -27413,9 +27399,9 @@ diff -Nur linux-4.1.20.orig/mm/truncate.c linux-4.1.20/mm/truncate.c __radix_tree_delete_node(&mapping->page_tree, node); unlock: spin_unlock_irq(&mapping->tree_lock); -diff -Nur linux-4.1.20.orig/mm/vmalloc.c linux-4.1.20/mm/vmalloc.c ---- linux-4.1.20.orig/mm/vmalloc.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/vmalloc.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/vmalloc.c linux-4.1.26/mm/vmalloc.c +--- linux-4.1.26.orig/mm/vmalloc.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/vmalloc.c 2016-06-19 15:30:58.831302903 +0200 @@ -819,7 +819,7 @@ struct vmap_block *vb; struct vmap_area *va; @@ -27467,9 +27453,9 @@ diff -Nur linux-4.1.20.orig/mm/vmalloc.c linux-4.1.20/mm/vmalloc.c rcu_read_unlock(); /* Allocate new block if nothing was found */ -diff -Nur linux-4.1.20.orig/mm/vmstat.c linux-4.1.20/mm/vmstat.c ---- linux-4.1.20.orig/mm/vmstat.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/vmstat.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/vmstat.c linux-4.1.26/mm/vmstat.c +--- linux-4.1.26.orig/mm/vmstat.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/vmstat.c 2016-06-19 15:30:58.831302903 +0200 @@ -226,6 +226,7 @@ long x; long t; @@ -27518,9 +27504,9 @@ diff -Nur linux-4.1.20.orig/mm/vmstat.c linux-4.1.20/mm/vmstat.c } void __dec_zone_page_state(struct page *page, enum zone_stat_item item) -diff -Nur linux-4.1.20.orig/mm/workingset.c linux-4.1.20/mm/workingset.c ---- linux-4.1.20.orig/mm/workingset.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/mm/workingset.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/mm/workingset.c linux-4.1.26/mm/workingset.c +--- linux-4.1.26.orig/mm/workingset.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/mm/workingset.c 2016-06-19 15:30:58.835303057 +0200 @@ -264,7 +264,8 @@ * point where they would still be useful. */ @@ -27588,9 +27574,9 @@ diff -Nur linux-4.1.20.orig/mm/workingset.c linux-4.1.20/mm/workingset.c err: return ret; } -diff -Nur linux-4.1.20.orig/net/core/dev.c linux-4.1.20/net/core/dev.c ---- linux-4.1.20.orig/net/core/dev.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/core/dev.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/core/dev.c linux-4.1.26/net/core/dev.c +--- linux-4.1.26.orig/net/core/dev.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/core/dev.c 2016-06-19 15:30:58.839303211 +0200 @@ -184,6 +184,7 @@ static DEFINE_HASHTABLE(napi_hash, 8); @@ -27965,9 +27951,9 @@ diff -Nur linux-4.1.20.orig/net/core/dev.c linux-4.1.20/net/core/dev.c INIT_LIST_HEAD(&sd->poll_list); sd->output_queue_tailp = &sd->output_queue; #ifdef CONFIG_RPS -diff -Nur linux-4.1.20.orig/net/core/skbuff.c linux-4.1.20/net/core/skbuff.c ---- linux-4.1.20.orig/net/core/skbuff.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/core/skbuff.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/core/skbuff.c linux-4.1.26/net/core/skbuff.c +--- linux-4.1.26.orig/net/core/skbuff.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/core/skbuff.c 2016-06-19 15:30:58.839303211 +0200 @@ -63,6 +63,7 @@ #include <linux/errqueue.h> #include <linux/prefetch.h> @@ -28011,9 +27997,9 @@ diff -Nur linux-4.1.20.orig/net/core/skbuff.c linux-4.1.20/net/core/skbuff.c } void *napi_alloc_frag(unsigned int fragsz) -diff -Nur linux-4.1.20.orig/net/core/sock.c linux-4.1.20/net/core/sock.c ---- linux-4.1.20.orig/net/core/sock.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/core/sock.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/core/sock.c linux-4.1.26/net/core/sock.c +--- linux-4.1.26.orig/net/core/sock.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/core/sock.c 2016-06-19 15:30:58.839303211 +0200 @@ -2369,12 +2369,11 @@ if (sk->sk_lock.owned) __lock_sock(sk); @@ -28028,9 +28014,9 @@ diff -Nur linux-4.1.20.orig/net/core/sock.c linux-4.1.20/net/core/sock.c } EXPORT_SYMBOL(lock_sock_nested); -diff -Nur linux-4.1.20.orig/net/ipv4/icmp.c linux-4.1.20/net/ipv4/icmp.c ---- linux-4.1.20.orig/net/ipv4/icmp.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/ipv4/icmp.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/ipv4/icmp.c linux-4.1.26/net/ipv4/icmp.c +--- linux-4.1.26.orig/net/ipv4/icmp.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/ipv4/icmp.c 2016-06-19 15:30:58.839303211 +0200 @@ -69,6 +69,7 @@ #include <linux/jiffies.h> #include <linux/kernel.h> @@ -28082,9 +28068,9 @@ diff -Nur linux-4.1.20.orig/net/ipv4/icmp.c linux-4.1.20/net/ipv4/icmp.c } /* should there be an ICMP stat for ignored echos? */ return true; -diff -Nur linux-4.1.20.orig/net/ipv4/sysctl_net_ipv4.c linux-4.1.20/net/ipv4/sysctl_net_ipv4.c ---- linux-4.1.20.orig/net/ipv4/sysctl_net_ipv4.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/ipv4/sysctl_net_ipv4.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/ipv4/sysctl_net_ipv4.c linux-4.1.26/net/ipv4/sysctl_net_ipv4.c +--- linux-4.1.26.orig/net/ipv4/sysctl_net_ipv4.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/ipv4/sysctl_net_ipv4.c 2016-06-19 15:30:58.839303211 +0200 @@ -779,6 +779,13 @@ .proc_handler = proc_dointvec }, @@ -28099,10 +28085,10 @@ diff -Nur linux-4.1.20.orig/net/ipv4/sysctl_net_ipv4.c linux-4.1.20/net/ipv4/sys .procname = "icmp_ignore_bogus_error_responses", .data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses, .maxlen = sizeof(int), -diff -Nur linux-4.1.20.orig/net/mac80211/rx.c linux-4.1.20/net/mac80211/rx.c ---- linux-4.1.20.orig/net/mac80211/rx.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/mac80211/rx.c 2016-03-21 20:18:34.000000000 +0100 -@@ -3554,7 +3554,7 @@ +diff -Nur linux-4.1.26.orig/net/mac80211/rx.c linux-4.1.26/net/mac80211/rx.c +--- linux-4.1.26.orig/net/mac80211/rx.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/mac80211/rx.c 2016-06-19 15:30:58.839303211 +0200 +@@ -3573,7 +3573,7 @@ struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); @@ -28111,9 +28097,9 @@ diff -Nur linux-4.1.20.orig/net/mac80211/rx.c linux-4.1.20/net/mac80211/rx.c if (WARN_ON(status->band >= IEEE80211_NUM_BANDS)) goto drop; -diff -Nur linux-4.1.20.orig/net/netfilter/core.c linux-4.1.20/net/netfilter/core.c ---- linux-4.1.20.orig/net/netfilter/core.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/netfilter/core.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/netfilter/core.c linux-4.1.26/net/netfilter/core.c +--- linux-4.1.26.orig/net/netfilter/core.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/netfilter/core.c 2016-06-19 15:30:58.839303211 +0200 @@ -22,11 +22,17 @@ #include <linux/proc_fs.h> #include <linux/mutex.h> @@ -28132,9 +28118,9 @@ diff -Nur linux-4.1.20.orig/net/netfilter/core.c linux-4.1.20/net/netfilter/core static DEFINE_MUTEX(afinfo_mutex); const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly; -diff -Nur linux-4.1.20.orig/net/packet/af_packet.c linux-4.1.20/net/packet/af_packet.c ---- linux-4.1.20.orig/net/packet/af_packet.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/packet/af_packet.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/packet/af_packet.c linux-4.1.26/net/packet/af_packet.c +--- linux-4.1.26.orig/net/packet/af_packet.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/packet/af_packet.c 2016-06-19 15:30:58.839303211 +0200 @@ -63,6 +63,7 @@ #include <linux/if_packet.h> #include <linux/wireless.h> @@ -28161,9 +28147,9 @@ diff -Nur linux-4.1.20.orig/net/packet/af_packet.c linux-4.1.20/net/packet/af_pa } } prb_close_block(pkc, pbd, po, status); -diff -Nur linux-4.1.20.orig/net/rds/ib_rdma.c linux-4.1.20/net/rds/ib_rdma.c ---- linux-4.1.20.orig/net/rds/ib_rdma.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/rds/ib_rdma.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/rds/ib_rdma.c linux-4.1.26/net/rds/ib_rdma.c +--- linux-4.1.26.orig/net/rds/ib_rdma.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/rds/ib_rdma.c 2016-06-19 15:30:58.843303365 +0200 @@ -34,6 +34,7 @@ #include <linux/slab.h> #include <linux/rculist.h> @@ -28181,9 +28167,9 @@ diff -Nur linux-4.1.20.orig/net/rds/ib_rdma.c linux-4.1.20/net/rds/ib_rdma.c } } -diff -Nur linux-4.1.20.orig/net/sched/sch_generic.c linux-4.1.20/net/sched/sch_generic.c ---- linux-4.1.20.orig/net/sched/sch_generic.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/sched/sch_generic.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/sched/sch_generic.c linux-4.1.26/net/sched/sch_generic.c +--- linux-4.1.26.orig/net/sched/sch_generic.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/sched/sch_generic.c 2016-06-19 15:30:58.843303365 +0200 @@ -896,7 +896,7 @@ /* Wait for outstanding qdisc_run calls. */ list_for_each_entry(dev, head, close_list) @@ -28193,9 +28179,9 @@ diff -Nur linux-4.1.20.orig/net/sched/sch_generic.c linux-4.1.20/net/sched/sch_g } void dev_deactivate(struct net_device *dev) -diff -Nur linux-4.1.20.orig/net/sunrpc/svc_xprt.c linux-4.1.20/net/sunrpc/svc_xprt.c ---- linux-4.1.20.orig/net/sunrpc/svc_xprt.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/net/sunrpc/svc_xprt.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/net/sunrpc/svc_xprt.c linux-4.1.26/net/sunrpc/svc_xprt.c +--- linux-4.1.26.orig/net/sunrpc/svc_xprt.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/net/sunrpc/svc_xprt.c 2016-06-19 15:30:58.843303365 +0200 @@ -341,7 +341,7 @@ goto out; } @@ -28223,9 +28209,9 @@ diff -Nur linux-4.1.20.orig/net/sunrpc/svc_xprt.c linux-4.1.20/net/sunrpc/svc_xp out: trace_svc_xprt_do_enqueue(xprt, rqstp); } -diff -Nur linux-4.1.20.orig/scripts/mkcompile_h linux-4.1.20/scripts/mkcompile_h ---- linux-4.1.20.orig/scripts/mkcompile_h 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/scripts/mkcompile_h 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/scripts/mkcompile_h linux-4.1.26/scripts/mkcompile_h +--- linux-4.1.26.orig/scripts/mkcompile_h 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/scripts/mkcompile_h 2016-06-19 15:30:58.843303365 +0200 @@ -4,7 +4,8 @@ ARCH=$2 SMP=$3 @@ -28244,9 +28230,9 @@ diff -Nur linux-4.1.20.orig/scripts/mkcompile_h linux-4.1.20/scripts/mkcompile_h UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP" # Truncate to maximum length -diff -Nur linux-4.1.20.orig/sound/core/pcm_native.c linux-4.1.20/sound/core/pcm_native.c ---- linux-4.1.20.orig/sound/core/pcm_native.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/sound/core/pcm_native.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/sound/core/pcm_native.c linux-4.1.26/sound/core/pcm_native.c +--- linux-4.1.26.orig/sound/core/pcm_native.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/sound/core/pcm_native.c 2016-06-19 15:30:58.843303365 +0200 @@ -135,7 +135,7 @@ void snd_pcm_stream_lock_irq(struct snd_pcm_substream *substream) { @@ -28283,9 +28269,9 @@ diff -Nur linux-4.1.20.orig/sound/core/pcm_native.c linux-4.1.20/sound/core/pcm_ } EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock_irqrestore); -diff -Nur linux-4.1.20.orig/sound/soc/intel/atom/sst/sst.c linux-4.1.20/sound/soc/intel/atom/sst/sst.c ---- linux-4.1.20.orig/sound/soc/intel/atom/sst/sst.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/sound/soc/intel/atom/sst/sst.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/sound/soc/intel/atom/sst/sst.c linux-4.1.26/sound/soc/intel/atom/sst/sst.c +--- linux-4.1.26.orig/sound/soc/intel/atom/sst/sst.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/sound/soc/intel/atom/sst/sst.c 2016-06-19 15:30:58.843303365 +0200 @@ -368,8 +368,8 @@ * initialize by FW or driver when firmware is loaded */ @@ -28297,9 +28283,9 @@ diff -Nur linux-4.1.20.orig/sound/soc/intel/atom/sst/sst.c linux-4.1.20/sound/so spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); } -diff -Nur linux-4.1.20.orig/virt/kvm/async_pf.c linux-4.1.20/virt/kvm/async_pf.c ---- linux-4.1.20.orig/virt/kvm/async_pf.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/virt/kvm/async_pf.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/virt/kvm/async_pf.c linux-4.1.26/virt/kvm/async_pf.c +--- linux-4.1.26.orig/virt/kvm/async_pf.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/virt/kvm/async_pf.c 2016-06-19 15:30:58.843303365 +0200 @@ -94,8 +94,8 @@ trace_kvm_async_pf_completed(addr, gva); @@ -28311,9 +28297,9 @@ diff -Nur linux-4.1.20.orig/virt/kvm/async_pf.c linux-4.1.20/virt/kvm/async_pf.c mmput(mm); kvm_put_kvm(vcpu->kvm); -diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c ---- linux-4.1.20.orig/virt/kvm/kvm_main.c 2016-03-17 19:11:03.000000000 +0100 -+++ linux-4.1.20/virt/kvm/kvm_main.c 2016-03-21 20:18:34.000000000 +0100 +diff -Nur linux-4.1.26.orig/virt/kvm/kvm_main.c linux-4.1.26/virt/kvm/kvm_main.c +--- linux-4.1.26.orig/virt/kvm/kvm_main.c 2016-06-07 01:13:11.000000000 +0200 ++++ linux-4.1.26/virt/kvm/kvm_main.c 2016-06-19 15:30:58.843303365 +0200 @@ -218,7 +218,7 @@ vcpu->kvm = kvm; vcpu->vcpu_id = id; @@ -28323,7 +28309,7 @@ diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c kvm_async_pf_vcpu_init(vcpu); page = alloc_page(GFP_KERNEL | __GFP_ZERO); -@@ -1779,7 +1779,7 @@ +@@ -1780,7 +1780,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) { ktime_t start, cur; @@ -28332,7 +28318,7 @@ diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c bool waited = false; start = cur = ktime_get(); -@@ -1800,7 +1800,7 @@ +@@ -1801,7 +1801,7 @@ } for (;;) { @@ -28341,7 +28327,7 @@ diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c if (kvm_vcpu_check_block(vcpu) < 0) break; -@@ -1809,7 +1809,7 @@ +@@ -1810,7 +1810,7 @@ schedule(); } @@ -28350,7 +28336,7 @@ diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c cur = ktime_get(); out: -@@ -1825,11 +1825,11 @@ +@@ -1826,11 +1826,11 @@ { int me; int cpu = vcpu->cpu; @@ -28365,7 +28351,7 @@ diff -Nur linux-4.1.20.orig/virt/kvm/kvm_main.c linux-4.1.20/virt/kvm/kvm_main.c ++vcpu->stat.halt_wakeup; } -@@ -1930,7 +1930,7 @@ +@@ -1931,7 +1931,7 @@ continue; if (vcpu == me) continue; diff --git a/target/linux/patches/4.1.24/regmap-default-on.patch b/target/linux/patches/4.1.26/regmap-default-on.patch index 8d72224bf..8d72224bf 100644 --- a/target/linux/patches/4.1.24/regmap-default-on.patch +++ b/target/linux/patches/4.1.26/regmap-default-on.patch diff --git a/target/linux/patches/4.1.24/remove-warn.patch b/target/linux/patches/4.1.26/remove-warn.patch index 1f89c710d..1f89c710d 100644 --- a/target/linux/patches/4.1.24/remove-warn.patch +++ b/target/linux/patches/4.1.26/remove-warn.patch diff --git a/target/linux/patches/4.1.24/startup.patch b/target/linux/patches/4.1.26/startup.patch index d396b75e4..d396b75e4 100644 --- a/target/linux/patches/4.1.24/startup.patch +++ b/target/linux/patches/4.1.26/startup.patch diff --git a/target/linux/patches/4.1.24/use-gawk.patch b/target/linux/patches/4.1.26/use-gawk.patch index 5b312589d..5b312589d 100644 --- a/target/linux/patches/4.1.24/use-gawk.patch +++ b/target/linux/patches/4.1.26/use-gawk.patch diff --git a/target/linux/patches/4.1.24/use-libgcc-for-sh.patch b/target/linux/patches/4.1.26/use-libgcc-for-sh.patch index 6420219b0..6420219b0 100644 --- a/target/linux/patches/4.1.24/use-libgcc-for-sh.patch +++ b/target/linux/patches/4.1.26/use-libgcc-for-sh.patch |