summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/config/Config.in.kernelversion2
-rw-r--r--target/linux/patches/4.4.112/coldfire-sighandler.patch (renamed from target/linux/patches/4.4.107/coldfire-sighandler.patch)0
-rw-r--r--target/linux/patches/4.4.112/crisv32.patch (renamed from target/linux/patches/4.4.107/crisv32.patch)0
-rw-r--r--target/linux/patches/4.4.112/crisv32_ethernet_driver.patch (renamed from target/linux/patches/4.4.107/crisv32_ethernet_driver.patch)0
-rw-r--r--target/linux/patches/4.4.112/h8300.patch (renamed from target/linux/patches/4.4.107/h8300.patch)0
-rw-r--r--target/linux/patches/4.4.112/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.4.107/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.4.112/ld-or1k.patch (renamed from target/linux/patches/4.4.107/ld-or1k.patch)0
-rw-r--r--target/linux/patches/4.4.112/macsonic.patch (renamed from target/linux/patches/4.4.107/macsonic.patch)0
-rw-r--r--target/linux/patches/4.4.112/mips-xz.patch (renamed from target/linux/patches/4.4.107/mips-xz.patch)0
-rw-r--r--target/linux/patches/4.4.112/patch-realtime (renamed from target/linux/patches/4.4.107/patch-realtime)1767
-rw-r--r--target/linux/patches/4.4.112/startup.patch (renamed from target/linux/patches/4.4.107/startup.patch)0
-rw-r--r--target/linux/patches/4.4.112/use-libgcc-for-sh.patch (renamed from target/linux/patches/4.4.107/use-libgcc-for-sh.patch)0
-rw-r--r--target/linux/patches/4.4.112/versatile-nommu.patch (renamed from target/linux/patches/4.4.107/versatile-nommu.patch)0
13 files changed, 1138 insertions, 631 deletions
diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion
index 85620f5e0..4cfbf4a41 100644
--- a/target/config/Config.in.kernelversion
+++ b/target/config/Config.in.kernelversion
@@ -59,7 +59,7 @@ config ADK_TARGET_KERNEL_VERSION_4_9
depends on !ADK_TARGET_SYSTEM_ORANGE_PI0
config ADK_TARGET_KERNEL_VERSION_4_4
- bool "4.4.107"
+ bool "4.4.112"
depends on !ADK_TARGET_ARCH_CSKY
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_NIOS2
diff --git a/target/linux/patches/4.4.107/coldfire-sighandler.patch b/target/linux/patches/4.4.112/coldfire-sighandler.patch
index c52a4e228..c52a4e228 100644
--- a/target/linux/patches/4.4.107/coldfire-sighandler.patch
+++ b/target/linux/patches/4.4.112/coldfire-sighandler.patch
diff --git a/target/linux/patches/4.4.107/crisv32.patch b/target/linux/patches/4.4.112/crisv32.patch
index cb9b0d028..cb9b0d028 100644
--- a/target/linux/patches/4.4.107/crisv32.patch
+++ b/target/linux/patches/4.4.112/crisv32.patch
diff --git a/target/linux/patches/4.4.107/crisv32_ethernet_driver.patch b/target/linux/patches/4.4.112/crisv32_ethernet_driver.patch
index 0cef202fc..0cef202fc 100644
--- a/target/linux/patches/4.4.107/crisv32_ethernet_driver.patch
+++ b/target/linux/patches/4.4.112/crisv32_ethernet_driver.patch
diff --git a/target/linux/patches/4.4.107/h8300.patch b/target/linux/patches/4.4.112/h8300.patch
index cf73989a6..cf73989a6 100644
--- a/target/linux/patches/4.4.107/h8300.patch
+++ b/target/linux/patches/4.4.112/h8300.patch
diff --git a/target/linux/patches/4.4.107/initramfs-nosizelimit.patch b/target/linux/patches/4.4.112/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/4.4.107/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.4.112/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.4.107/ld-or1k.patch b/target/linux/patches/4.4.112/ld-or1k.patch
index 264f9166f..264f9166f 100644
--- a/target/linux/patches/4.4.107/ld-or1k.patch
+++ b/target/linux/patches/4.4.112/ld-or1k.patch
diff --git a/target/linux/patches/4.4.107/macsonic.patch b/target/linux/patches/4.4.112/macsonic.patch
index 75a6fcad2..75a6fcad2 100644
--- a/target/linux/patches/4.4.107/macsonic.patch
+++ b/target/linux/patches/4.4.112/macsonic.patch
diff --git a/target/linux/patches/4.4.107/mips-xz.patch b/target/linux/patches/4.4.112/mips-xz.patch
index 5cfac6254..5cfac6254 100644
--- a/target/linux/patches/4.4.107/mips-xz.patch
+++ b/target/linux/patches/4.4.112/mips-xz.patch
diff --git a/target/linux/patches/4.4.107/patch-realtime b/target/linux/patches/4.4.112/patch-realtime
index b49cd6f03..9fe252409 100644
--- a/target/linux/patches/4.4.107/patch-realtime
+++ b/target/linux/patches/4.4.112/patch-realtime
@@ -69,7 +69,7 @@ index 000000000000..cb61516483d3
+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 --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
-index ca64ca566099..19bef799c902 100644
+index 39280b72f27a..c46295a8d55b 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1640,6 +1640,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
@@ -305,10 +305,10 @@ index 000000000000..6f2aeabf7faa
+
+These data are also reset when the wakeup histogram is reset.
diff --git a/Makefile b/Makefile
-index a5ecb29c6ed3..5521b0c3abf2 100644
+index 07070a1e6292..f04a8b6444b9 100644
--- a/Makefile
+++ b/Makefile
-@@ -785,6 +785,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=strict-prototypes)
+@@ -797,6 +797,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=strict-prototypes)
# Prohibit date/time macros, which would make the build non-deterministic
KBUILD_CFLAGS += $(call cc-option,-Werror=date-time)
@@ -441,7 +441,7 @@ diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 3ce377f7251f..d044cea59f54 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
-@@ -215,11 +215,18 @@ __irq_svc:
+@@ -215,11 +215,18 @@ ENDPROC(__dabt_svc)
#ifdef CONFIG_PREEMPT
get_thread_info tsk
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
@@ -462,7 +462,7 @@ index 3ce377f7251f..d044cea59f54 100644
#endif
svc_exit r5, irq = 1 @ return from exception
-@@ -234,8 +241,14 @@ svc_preempt:
+@@ -234,8 +241,14 @@ ENDPROC(__irq_svc)
1: bl preempt_schedule_irq @ irq en/disable is done inside
ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS
tst r0, #_TIF_NEED_RESCHED
@@ -482,7 +482,7 @@ diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 30a7228eaceb..c3bd6cbfce4b 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
-@@ -36,7 +36,9 @@ ret_fast_syscall:
+@@ -36,7 +36,9 @@
UNWIND(.cantunwind )
disable_irq_notrace @ disable interrupts
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
@@ -493,7 +493,7 @@ index 30a7228eaceb..c3bd6cbfce4b 100644
bne fast_work_pending
/* perform architecture specific actions before user return */
-@@ -62,8 +64,11 @@ ret_fast_syscall:
+@@ -62,8 +64,11 @@ ENDPROC(ret_fast_syscall)
str r0, [sp, #S_R0 + S_OFF]! @ save returned r0
disable_irq_notrace @ disable interrupts
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
@@ -820,7 +820,7 @@ index b0fa7dc7286d..28ca57a2060f 100644
#endif /* _AT91_GENERIC_H */
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
-index d687f860a2da..ab53332a9637 100644
+index 84eefbc2b4f9..bff0d062bf68 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -31,10 +31,13 @@
@@ -1347,10 +1347,10 @@ index c4ad6eae67fa..e830b20b212f 100644
return pen_release != -1 ? -ENOSYS : 0;
}
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
-index c095455d496e..276ac73f8650 100644
+index 0d20cd594017..a11dc6d8ca02 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
-@@ -430,6 +430,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
+@@ -433,6 +433,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
if (addr < TASK_SIZE)
return do_page_fault(addr, fsr, regs);
@@ -1360,7 +1360,7 @@ index c095455d496e..276ac73f8650 100644
if (user_mode(regs))
goto bad_area;
-@@ -497,6 +500,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
+@@ -500,6 +503,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
static int
do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
{
@@ -1618,10 +1618,10 @@ index 087cf9a65359..d74475928399 100644
DEFINE(TI_TASK, offsetof(struct thread_info, task));
DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
-index bd14849beb73..cf92d4ee51db 100644
+index dccd0c2e9023..a8d4d065fd81 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
-@@ -376,11 +376,16 @@ el1_irq:
+@@ -378,11 +378,16 @@ ENDPROC(el1_sync)
#ifdef CONFIG_PREEMPT
get_thread_info tsk
ldr w24, [tsk, #TI_PREEMPT] // get preempt count
@@ -1641,7 +1641,7 @@ index bd14849beb73..cf92d4ee51db 100644
#endif
#ifdef CONFIG_TRACE_IRQFLAGS
bl trace_hardirqs_on
-@@ -394,6 +399,7 @@ el1_preempt:
+@@ -396,6 +401,7 @@ ENDPROC(el1_irq)
1: bl preempt_schedule_irq // irq en/disable is done inside
ldr x0, [tsk, #TI_FLAGS] // get new tasks TI_FLAGS
tbnz x0, #TIF_NEED_RESCHED, 1b // needs rescheduling?
@@ -1649,7 +1649,7 @@ index bd14849beb73..cf92d4ee51db 100644
ret x24
#endif
-@@ -638,6 +644,7 @@ ret_fast_syscall_trace:
+@@ -640,6 +646,7 @@ ENDPROC(cpu_switch_to)
*/
work_pending:
tbnz x1, #TIF_NEED_RESCHED, work_resched
@@ -1697,7 +1697,7 @@ index a017b23ee4aa..8d4d9270140f 100644
/* low level hrtimer wake routine */
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
-index db49e0d796b1..1d2be228661c 100644
+index dfb1ee8c3e06..cdc3c20ef225 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -60,10 +60,11 @@ config LOCKDEP_SUPPORT
@@ -1818,7 +1818,7 @@ diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index 2405631e91a2..c21b4b42eaa0 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
-@@ -818,7 +818,14 @@ resume_kernel:
+@@ -818,7 +818,14 @@ user_exc_return: /* r10 contains MSR_KERNEL here */
cmpwi 0,r0,0 /* if non-zero, just restore regs and return */
bne restore
andi. r8,r8,_TIF_NEED_RESCHED
@@ -1833,7 +1833,7 @@ index 2405631e91a2..c21b4b42eaa0 100644
lwz r3,_MSR(r1)
andi. r0,r3,MSR_EE /* interrupts off? */
beq restore /* don't schedule if so */
-@@ -829,11 +836,11 @@ resume_kernel:
+@@ -829,11 +836,11 @@ user_exc_return: /* r10 contains MSR_KERNEL here */
*/
bl trace_hardirqs_off
#endif
@@ -1848,7 +1848,7 @@ index 2405631e91a2..c21b4b42eaa0 100644
#ifdef CONFIG_TRACE_IRQFLAGS
/* And now, to properly rebalance the above, we tell lockdep they
* are being turned back on, which will happen when we return
-@@ -1154,7 +1161,7 @@ global_dbcr0:
+@@ -1154,7 +1161,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
#endif /* !(CONFIG_4xx || CONFIG_BOOKE) */
do_work: /* r10 contains MSR_KERNEL here */
@@ -1857,7 +1857,7 @@ index 2405631e91a2..c21b4b42eaa0 100644
beq do_user_signal
do_resched: /* r10 contains MSR_KERNEL here */
-@@ -1175,7 +1182,7 @@ recheck:
+@@ -1175,7 +1182,7 @@ do_resched: /* r10 contains MSR_KERNEL here */
MTMSRD(r10) /* disable interrupts */
CURRENT_THREAD_INFO(r9, r1)
lwz r9,TI_FLAGS(r9)
@@ -1879,7 +1879,7 @@ index f6fd0332c3a2..96235fe0a581 100644
beq 2f
bl restore_interrupts
SCHEDULE_USER
-@@ -745,10 +745,18 @@ resume_kernel:
+@@ -745,10 +745,18 @@ _GLOBAL(ret_from_except_lite)
#ifdef CONFIG_PREEMPT
/* Check if we need to preempt */
@@ -1899,7 +1899,7 @@ index f6fd0332c3a2..96235fe0a581 100644
cmpwi cr1,r8,0
ld r0,SOFTE(r1)
cmpdi r0,0
-@@ -765,7 +773,7 @@ resume_kernel:
+@@ -765,7 +773,7 @@ _GLOBAL(ret_from_except_lite)
/* Re-test flags and eventually loop */
CURRENT_THREAD_INFO(r9, r1)
ld r4,TI_FLAGS(r9)
@@ -1981,7 +1981,7 @@ index c2024ac9d4e8..2303788da7e1 100644
select HAVE_KVM_IRQFD
select HAVE_KVM_IRQ_ROUTING
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
-index 3c3a367b6e59..2ac7a8b108ac 100644
+index 428563b195c3..4c42c3935025 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -114,11 +114,11 @@ static bool kvmppc_ipi_thread(int cpu)
@@ -2089,7 +2089,7 @@ diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index 6a75352f453c..cc862c486002 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
-@@ -868,13 +868,13 @@ no_timer:
+@@ -868,13 +868,13 @@ int kvm_s390_handle_wait(struct kvm_vcpu *vcpu)
void kvm_s390_vcpu_wakeup(struct kvm_vcpu *vcpu)
{
@@ -2126,7 +2126,7 @@ index 6c0378c0b8b5..abd58b4dff97 100644
static inline void handle_one_irq(unsigned int irq)
{
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
-index 56442d2d7bbc..8c9598f534c9 100644
+index 94f4ac21761b..d7c369d061cf 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -189,12 +189,10 @@ config NR_CPUS
@@ -2145,7 +2145,7 @@ index 56442d2d7bbc..8c9598f534c9 100644
config GENERIC_HWEIGHT
bool
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
-index e22416ce56ea..d359de71153a 100644
+index bfbde8c4ffb2..62e7e06013c5 100644
--- a/arch/sparc/kernel/irq_64.c
+++ b/arch/sparc/kernel/irq_64.c
@@ -854,6 +854,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs)
@@ -2165,7 +2165,7 @@ index e22416ce56ea..d359de71153a 100644
#ifdef CONFIG_HOTPLUG_CPU
void fixup_irqs(void)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 436639a31624..6ee1dd0deadc 100644
+index 0ef2cdd11616..2eaae0f372fa 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -17,6 +17,7 @@ config X86_64
@@ -2176,7 +2176,7 @@ index 436639a31624..6ee1dd0deadc 100644
select ACPI_LEGACY_TABLES_LOOKUP if ACPI
select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
select ANON_INODES
-@@ -212,8 +213,11 @@ config ARCH_MAY_HAVE_PC_FDC
+@@ -213,8 +214,11 @@ config ARCH_MAY_HAVE_PC_FDC
def_bool y
depends on ISA_DMA_API
@@ -2189,7 +2189,7 @@ index 436639a31624..6ee1dd0deadc 100644
config GENERIC_CALIBRATE_DELAY
def_bool y
-@@ -848,7 +852,7 @@ config IOMMU_HELPER
+@@ -849,7 +853,7 @@ config IOMMU_HELPER
config MAXSMP
bool "Enable Maximum number of SMP Processors and NUMA Nodes"
depends on X86_64 && SMP && DEBUG_KERNEL
@@ -2328,7 +2328,7 @@ index 8648158f3916..d7699130ee36 100644
return err;
}
-@@ -227,7 +226,7 @@ done:
+@@ -227,7 +226,7 @@ static unsigned int __cbc_decrypt(struct blkcipher_desc *desc,
static int cbc_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst,
struct scatterlist *src, unsigned int nbytes)
{
@@ -2352,7 +2352,7 @@ index 8648158f3916..d7699130ee36 100644
return err;
}
-@@ -311,7 +309,7 @@ done:
+@@ -311,7 +309,7 @@ static unsigned int __ctr_crypt(struct blkcipher_desc *desc,
static int ctr_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,
struct scatterlist *src, unsigned int nbytes)
{
@@ -2557,10 +2557,10 @@ index ae678ad128a9..3bcef8bdb911 100644
jz restore_all
call preempt_schedule_irq
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
-index a55697d19824..316081a2ca85 100644
+index 952b23b5d4e9..459a68cffcc2 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
-@@ -579,7 +579,23 @@ retint_kernel:
+@@ -607,7 +607,23 @@ GLOBAL(retint_user)
bt $9, EFLAGS(%rsp) /* were interrupts off? */
jnc 1f
0: cmpl $0, PER_CPU_VAR(__preempt_count)
@@ -2584,7 +2584,7 @@ index a55697d19824..316081a2ca85 100644
call preempt_schedule_irq
jmp 0b
1:
-@@ -867,6 +883,7 @@ bad_gs:
+@@ -897,6 +913,7 @@ END(native_load_gs_index)
jmp 2b
.previous
@@ -2592,7 +2592,7 @@ index a55697d19824..316081a2ca85 100644
/* Call softirq on interrupt stack. Interrupts are off. */
ENTRY(do_softirq_own_stack)
pushq %rbp
-@@ -879,6 +896,7 @@ ENTRY(do_softirq_own_stack)
+@@ -909,6 +926,7 @@ ENTRY(do_softirq_own_stack)
decl PER_CPU_VAR(irq_count)
ret
END(do_softirq_own_stack)
@@ -2794,7 +2794,7 @@ index ea7074784cc4..01ec643ce66e 100644
};
extern struct uv_blade_info *uv_blade_info;
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
-index e75907601a41..a29fc4f84fc4 100644
+index a1e4a6c3f394..86adbf86f366 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -87,7 +87,9 @@ static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
@@ -2808,7 +2808,7 @@ index e75907601a41..a29fc4f84fc4 100644
/* --------------------------------------------------------------------------
Boot-time Configuration
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
-index 1e5d2f07416b..ac0127bb155e 100644
+index fc91c98bee01..29c4f1b078a1 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1711,7 +1711,8 @@ static bool io_apic_level_ack_pending(struct mp_chip_data *data)
@@ -2922,7 +2922,7 @@ index 7e8a736d09db..430a4ec07811 100644
}
/*
-@@ -1301,7 +1289,7 @@ done:
+@@ -1301,7 +1289,7 @@ static void mce_timer_fn(unsigned long data)
*/
void mce_timer_kick(unsigned long interval)
{
@@ -3265,7 +3265,7 @@ index 38da8f29a9c8..ce71f7098f15 100644
bool handle_irq(struct irq_desc *desc, struct pt_regs *regs)
{
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
-index 47190bd399e7..807950860fb7 100644
+index 32187f8a49b4..1f456f1e06f8 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -36,6 +36,7 @@
@@ -3331,8 +3331,8 @@ index 47190bd399e7..807950860fb7 100644
if (hlist_unhashed(&n.link))
break;
-@@ -166,7 +167,7 @@ void kvm_async_pf_task_wait(u32 token)
- }
+@@ -168,7 +169,7 @@ void kvm_async_pf_task_wait(u32 token)
+ rcu_irq_enter();
}
if (!n.halted)
- finish_wait(&n.wq, &wait);
@@ -3340,7 +3340,7 @@ index 47190bd399e7..807950860fb7 100644
rcu_irq_exit();
return;
-@@ -178,8 +179,8 @@ static void apf_task_wake_one(struct kvm_task_sleep_node *n)
+@@ -180,8 +181,8 @@ static void apf_task_wake_one(struct kvm_task_sleep_node *n)
hlist_del_init(&n->link);
if (n->halted)
smp_send_reschedule(n->cpu);
@@ -3351,7 +3351,7 @@ index 47190bd399e7..807950860fb7 100644
}
static void apf_task_wake_all(void)
-@@ -189,14 +190,14 @@ static void apf_task_wake_all(void)
+@@ -191,14 +192,14 @@ static void apf_task_wake_all(void)
for (i = 0; i < KVM_TASK_SLEEP_HASHSIZE; i++) {
struct hlist_node *p, *next;
struct kvm_task_sleep_head *b = &async_pf_sleepers[i];
@@ -3368,7 +3368,7 @@ index 47190bd399e7..807950860fb7 100644
}
}
-@@ -212,7 +213,7 @@ void kvm_async_pf_task_wake(u32 token)
+@@ -214,7 +215,7 @@ void kvm_async_pf_task_wake(u32 token)
}
again:
@@ -3377,7 +3377,7 @@ index 47190bd399e7..807950860fb7 100644
n = _find_apf_task(b, token);
if (!n) {
/*
-@@ -225,17 +226,17 @@ again:
+@@ -227,17 +228,17 @@ void kvm_async_pf_task_wake(u32 token)
* Allocation failed! Busy wait while other cpu
* handles async PF.
*/
@@ -3398,7 +3398,7 @@ index 47190bd399e7..807950860fb7 100644
return;
}
EXPORT_SYMBOL_GPL(kvm_async_pf_task_wake);
-@@ -486,7 +487,7 @@ void __init kvm_guest_init(void)
+@@ -488,7 +489,7 @@ void __init kvm_guest_init(void)
paravirt_ops_setup();
register_reboot_notifier(&kvm_pv_reboot_nb);
for (i = 0; i < KVM_TASK_SLEEP_HASHSIZE; i++)
@@ -3506,10 +3506,10 @@ index 9f950917528b..4dd4beae917a 100644
* Leave lazy mode, flushing any hypercalls made here.
* This must be done before restoring TLS segments so
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
-index f660d63f40fe..8384207adde2 100644
+index 9a16932c7258..219ffb9ba3a9 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
-@@ -726,6 +726,7 @@ static int crashing_cpu;
+@@ -730,6 +730,7 @@ static int crashing_cpu;
static nmi_shootdown_cb shootdown_callback;
static atomic_t waiting_for_crash_ipi;
@@ -3517,7 +3517,7 @@ index f660d63f40fe..8384207adde2 100644
static int crash_nmi_callback(unsigned int val, struct pt_regs *regs)
{
-@@ -788,6 +789,9 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
+@@ -792,6 +793,9 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
smp_send_nmi_allbutself();
@@ -3527,7 +3527,7 @@ index f660d63f40fe..8384207adde2 100644
msecs = 1000; /* Wait at most a second for the other cpus to stop */
while ((atomic_read(&waiting_for_crash_ipi) > 0) && msecs) {
mdelay(1);
-@@ -796,6 +800,22 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
+@@ -800,6 +804,22 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
/* Leave the nmi callback set */
}
@@ -3583,10 +3583,10 @@ index 1c96f09367ae..ffb6d9859122 100644
/*
* APIC is created enabled. This will prevent kvm_lapic_set_base from
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index ae2b9cd358f2..50c9861d4219 100644
+index f973cfa8ff4f..b63350721623 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
-@@ -5827,6 +5827,13 @@ int kvm_arch_init(void *opaque)
+@@ -5836,6 +5836,13 @@ int kvm_arch_init(void *opaque)
goto out;
}
@@ -3685,10 +3685,10 @@ index 9c0ff045fdd4..dd25dd1671b6 100644
kmap_atomic_idx_pop();
}
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index b599a780a5a9..2e85c4117daf 100644
+index 79377e2a7bcd..dca36c1f1966 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
-@@ -208,7 +208,15 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache,
+@@ -209,7 +209,15 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache,
int in_flags, struct page **pages)
{
unsigned int i, level;
@@ -3879,7 +3879,7 @@ index 2b158a9fa1d7..5e0b122620cb 100644
/*
diff --git a/block/blk-core.c b/block/blk-core.c
-index ef083e7a37c5..7a7926b1b4b5 100644
+index f5f1a55703ae..75a76bcc7ac0 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -125,6 +125,9 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
@@ -3896,8 +3896,8 @@ index ef083e7a37c5..7a7926b1b4b5 100644
**/
void blk_start_queue(struct request_queue *q)
{
-- WARN_ON(!irqs_disabled());
-+ WARN_ON_NONRT(!irqs_disabled());
+- WARN_ON(!in_interrupt() && !irqs_disabled());
++ WARN_ON_NONRT(!in_interrupt() && !irqs_disabled());
queue_flag_clear(QUEUE_FLAG_STOPPED, q);
__blk_run_queue(q);
@@ -3996,7 +3996,7 @@ index 381cb50a673c..dc8785233d94 100644
spin_lock_irqsave_nested(&ioc->lock, flags, 1);
}
}
-@@ -187,7 +188,7 @@ retry:
+@@ -187,7 +188,7 @@ void put_io_context_active(struct io_context *ioc)
spin_unlock(icq->q->queue_lock);
} else {
spin_unlock_irqrestore(&ioc->lock, flags);
@@ -4260,7 +4260,7 @@ index 53b1737e978d..81c3c0a62edf 100644
}
return NOTIFY_OK;
-@@ -150,6 +152,7 @@ do_local:
+@@ -150,6 +152,7 @@ void __blk_complete_request(struct request *req)
goto do_local;
local_irq_restore(flags);
@@ -4287,10 +4287,10 @@ index 1cb5dd3a5da1..2f1ec8a67cbe 100644
#else /* CONFIG_HIGHMEM */
diff --git a/crypto/algapi.c b/crypto/algapi.c
-index 43f5bdb6b570..b54fd9187d12 100644
+index eb58b73ca925..ee228adf2dac 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
-@@ -720,13 +720,13 @@ EXPORT_SYMBOL_GPL(crypto_spawn_tfm2);
+@@ -732,13 +732,13 @@ EXPORT_SYMBOL_GPL(crypto_spawn_tfm2);
int crypto_register_notifier(struct notifier_block *nb)
{
@@ -4433,7 +4433,7 @@ index ce406e39b669..41a75eb3ae9d 100644
/* Delete the reader/writer lock */
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
-index 7dbba387d12a..65beb7abb4e7 100644
+index 18de4c457068..dfecf14df732 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
@@ -4466,7 +4466,7 @@ index 7dbba387d12a..65beb7abb4e7 100644
} else {
buf = page_address(page);
ap->ops->sff_data_xfer(qc->dev, buf + offset, qc->sect_size,
-@@ -864,7 +864,7 @@ next_sg:
+@@ -864,7 +864,7 @@ static int __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
unsigned long flags;
/* FIXME: use bounce buffer */
@@ -4475,7 +4475,7 @@ index 7dbba387d12a..65beb7abb4e7 100644
buf = kmap_atomic(page);
/* do the actual data transfer */
-@@ -872,7 +872,7 @@ next_sg:
+@@ -872,7 +872,7 @@ static int __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
count, rw);
kunmap_atomic(buf);
@@ -4485,7 +4485,7 @@ index 7dbba387d12a..65beb7abb4e7 100644
buf = page_address(page);
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
-index 62a93b685c54..5ad3c4e652a8 100644
+index 502406c9e6e1..91d909148688 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -520,6 +520,8 @@ static struct zram_meta *zram_meta_alloc(char *pool_name, u64 disksize)
@@ -4649,10 +4649,18 @@ index 8e92339686d7..9e3e953d680e 100644
+
#endif
diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 491a4dce13fe..cf69b6b42208 100644
+index 1822472dffab..46c0e27cf27f 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
-@@ -799,8 +799,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
+@@ -260,6 +260,7 @@
+ #include <linux/irq.h>
+ #include <linux/syscalls.h>
+ #include <linux/completion.h>
++#include <linux/locallock.h>
+
+ #include <asm/processor.h>
+ #include <asm/uaccess.h>
+@@ -799,8 +800,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
} sample;
long delta, delta2, delta3;
@@ -4661,7 +4669,7 @@ index 491a4dce13fe..cf69b6b42208 100644
sample.jiffies = jiffies;
sample.cycles = random_get_entropy();
sample.num = num;
-@@ -841,7 +839,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
+@@ -841,7 +840,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
*/
credit_entropy_bits(r, min_t(int, fls(delta>>1), 11));
}
@@ -4669,7 +4677,7 @@ index 491a4dce13fe..cf69b6b42208 100644
}
void add_input_randomness(unsigned int type, unsigned int code,
-@@ -894,28 +891,27 @@ static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
+@@ -894,28 +892,27 @@ static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
return *(ptr + f->reg_idx++);
}
@@ -4703,6 +4711,44 @@ index 491a4dce13fe..cf69b6b42208 100644
fast_mix(fast_pool);
add_interrupt_bench(cycles);
+@@ -1800,6 +1797,7 @@ int random_int_secret_init(void)
+
+ static DEFINE_PER_CPU(__u32 [MD5_DIGEST_WORDS], get_random_int_hash)
+ __aligned(sizeof(unsigned long));
++static DEFINE_LOCAL_IRQ_LOCK(hash_entropy_int_lock);
+
+ /*
+ * Get a random word for internal kernel use only. Similar to urandom but
+@@ -1815,12 +1813,12 @@ unsigned int get_random_int(void)
+ if (arch_get_random_int(&ret))
+ return ret;
+
+- hash = get_cpu_var(get_random_int_hash);
++ hash = get_locked_var(hash_entropy_int_lock, get_random_int_hash);
+
+ hash[0] += current->pid + jiffies + random_get_entropy();
+ md5_transform(hash, random_int_secret);
+ ret = hash[0];
+- put_cpu_var(get_random_int_hash);
++ put_locked_var(hash_entropy_int_lock, get_random_int_hash);
+
+ return ret;
+ }
+@@ -1837,12 +1835,12 @@ unsigned long get_random_long(void)
+ if (arch_get_random_long(&ret))
+ return ret;
+
+- hash = get_cpu_var(get_random_int_hash);
++ hash = get_locked_var(hash_entropy_int_lock, get_random_int_hash);
+
+ hash[0] += current->pid + jiffies + random_get_entropy();
+ md5_transform(hash, random_int_secret);
+ ret = *(unsigned long *)hash;
+- put_cpu_var(get_random_int_hash);
++ put_locked_var(hash_entropy_int_lock, get_random_int_hash);
+
+ return ret;
+ }
diff --git a/drivers/clk/at91/clk-generated.c b/drivers/clk/at91/clk-generated.c
index abc80949e1dd..4ad3298eb372 100644
--- a/drivers/clk/at91/clk-generated.c
@@ -5854,7 +5900,7 @@ index 620ea323356b..7d4a1864ea7c 100644
kfree(master);
}
-@@ -217,15 +195,15 @@ out_free_characteristics:
+@@ -217,15 +195,15 @@ of_at91_clk_master_get_characteristics(struct device_node *np)
}
static void __init
@@ -5888,7 +5934,7 @@ index 620ea323356b..7d4a1864ea7c 100644
parent_names, layout,
characteristics);
if (IS_ERR(clk))
-@@ -256,14 +234,16 @@ out_free_characteristics:
+@@ -256,14 +234,16 @@ of_at91_clk_master_setup(struct device_node *np, struct at91_pmc *pmc,
kfree(characteristics);
}
@@ -6449,7 +6495,7 @@ index 18b60f4895a6..fb2e0b56d4b7 100644
kfree(pll);
}
-@@ -483,12 +461,12 @@ out_free_characteristics:
+@@ -483,12 +461,12 @@ of_at91_clk_pll_get_characteristics(struct device_node *np)
}
static void __init
@@ -6485,7 +6531,7 @@ index 18b60f4895a6..fb2e0b56d4b7 100644
characteristics);
if (IS_ERR(clk))
goto out_free_characteristics;
-@@ -520,26 +498,30 @@ out_free_characteristics:
+@@ -520,26 +498,30 @@ of_at91_clk_pll_setup(struct device_node *np, struct at91_pmc *pmc,
kfree(characteristics);
}
@@ -8898,7 +8944,7 @@ index 36f76e28a0bf..394f142f90c7 100644
if (m5229_revision < 0xC2) {
/*
-@@ -325,7 +325,7 @@ out:
+@@ -325,7 +325,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
}
pci_dev_put(north);
pci_dev_put(isa_dev);
@@ -9121,7 +9167,7 @@ index 4a2a9e370be7..e970d9afd179 100644
if (t2 - t1 < tx) tx = t2 - t1;
}
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
-index a0ef57483ebb..b08732bae11a 100644
+index 52c36394dba5..d777d0197f64 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -2022,10 +2022,10 @@ static int __attach_device(struct iommu_dev_data *dev_data,
@@ -9178,7 +9224,7 @@ index 4d200883c505..98b64ed5cb81 100644
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 --git a/drivers/md/dm.c b/drivers/md/dm.c
-index 320eb3c4bb6b..aba2d71149e3 100644
+index 9ec6948e3b8b..ecbc23575114 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -2185,7 +2185,7 @@ static void dm_request_fn(struct request_queue *q)
@@ -9191,10 +9237,28 @@ index 320eb3c4bb6b..aba2d71149e3 100644
goto out;
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index 4384b46cee1a..6415f094a4eb 100644
+index 86ab6d14d782..573b9ac810da 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
-@@ -1920,8 +1920,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
+@@ -429,7 +429,7 @@ void raid5_release_stripe(struct stripe_head *sh)
+ md_wakeup_thread(conf->mddev->thread);
+ return;
+ slow_path:
+- local_irq_save(flags);
++ local_irq_save_nort(flags);
+ /* we are ok here if STRIPE_ON_RELEASE_LIST is set or not */
+ if (atomic_dec_and_lock(&sh->count, &conf->device_lock)) {
+ INIT_LIST_HEAD(&list);
+@@ -438,7 +438,7 @@ void raid5_release_stripe(struct stripe_head *sh)
+ spin_unlock(&conf->device_lock);
+ release_inactive_stripe_list(conf, &list, hash);
+ }
+- local_irq_restore(flags);
++ local_irq_restore_nort(flags);
+ }
+
+ static inline void remove_hash(struct stripe_head *sh)
+@@ -1929,8 +1929,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
struct raid5_percpu *percpu;
unsigned long cpu;
@@ -9205,7 +9269,7 @@ index 4384b46cee1a..6415f094a4eb 100644
if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) {
ops_run_biofill(sh);
overlap_clear++;
-@@ -1977,7 +1978,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
+@@ -1986,7 +1987,8 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
if (test_and_clear_bit(R5_Overlap, &dev->flags))
wake_up(&sh->raid_conf->wait_for_overlap);
}
@@ -9215,7 +9279,7 @@ index 4384b46cee1a..6415f094a4eb 100644
}
static struct stripe_head *alloc_stripe(struct kmem_cache *sc, gfp_t gfp)
-@@ -6416,6 +6418,7 @@ static int raid5_alloc_percpu(struct r5conf *conf)
+@@ -6433,6 +6435,7 @@ static int raid5_alloc_percpu(struct r5conf *conf)
__func__, cpu);
break;
}
@@ -11027,7 +11091,7 @@ index f4424063b860..cbbbebd86c6e 100644
#else
/*
* This a non-SMP scenario where the singular Rx thread is
-@@ -1566,11 +1566,11 @@ err2:
+@@ -1566,11 +1566,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev,
static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
{
struct fcoe_percpu_s *fps;
@@ -11250,7 +11314,7 @@ index 7fc919f7da4d..e03fa17b8670 100644
spin_lock_init(&pkg_work_lock);
platform_thermal_package_notify =
pkg_temp_thermal_platform_thermal_notify;
-@@ -608,7 +651,7 @@ err_ret:
+@@ -608,7 +651,7 @@ static int __init pkg_temp_thermal_init(void)
kfree(pkg_work_scheduled);
platform_thermal_package_notify = NULL;
platform_thermal_package_rate_control = NULL;
@@ -11290,7 +11354,7 @@ index 39126460c1f5..af7701ca4d48 100644
#include <asm/serial.h>
/*
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
-index 56ccbcefdd85..a0b9e854672c 100644
+index d42d66b72d5a..c08e0724a487 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -35,6 +35,7 @@
@@ -11301,7 +11365,7 @@ index 56ccbcefdd85..a0b9e854672c 100644
#include <linux/uaccess.h>
#include <linux/pm_runtime.h>
-@@ -2843,9 +2844,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s,
+@@ -2846,9 +2847,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s,
serial8250_rpm_get(up);
@@ -11351,7 +11415,7 @@ index 899a77187bde..3ff6363b3751 100644
clk_disable(uap->clk);
}
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
-index de1c143b475f..3fef536a1844 100644
+index 21fc9b3a27cf..2e32729e6a83 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1257,13 +1257,10 @@ serial_omap_console_write(struct console *co, const char *s,
@@ -11382,7 +11446,7 @@ index de1c143b475f..3fef536a1844 100644
static int __init
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index c3f4f2ab7b33..ae1ffb5f7610 100644
+index 87a83d925eea..995a37bde992 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1738,9 +1738,9 @@ static void __usb_hcd_giveback_urb(struct urb *urb)
@@ -11398,7 +11462,7 @@ index c3f4f2ab7b33..ae1ffb5f7610 100644
usb_anchor_resume_wakeups(anchor);
atomic_dec(&urb->use_count);
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
-index 9ad5145d3103..bf883695cdfb 100644
+index 39bb65265bff..49c167d150ce 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1404,7 +1404,7 @@ static void ffs_data_put(struct ffs_data *ffs)
@@ -11411,10 +11475,10 @@