diff options
Diffstat (limited to 'target')
-rw-r--r-- | target/config/Config.in.kernelversion | 2 | ||||
-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 @@ |