diff --git a/0000-kernel-5.10.0-99.0.0-rt62.patch b/0000-kernel-5.10.0-121.0.0-rt62.patch similarity index 92% rename from 0000-kernel-5.10.0-99.0.0-rt62.patch rename to 0000-kernel-5.10.0-121.0.0-rt62.patch index 40f557747e5b1c22481ed3e64353744d67003bd8..da34686ddf398a391d7984f6cf438327e297ac17 100644 --- a/0000-kernel-5.10.0-99.0.0-rt62.patch +++ b/0000-kernel-5.10.0-121.0.0-rt62.patch @@ -1,5 +1,454 @@ +From 6982834c08696ca48a6c4dd3e04c59d037c651ce Mon Sep 17 00:00:00 2001 +From: ryan +Date: Wed, 2 Nov 2022 21:50:44 +0800 +Subject: [PATCH] test + +--- + .../Expedited-Grace-Periods.rst | 4 +- + .../RCU/Design/Requirements/Requirements.rst | 26 +- + Documentation/RCU/checklist.rst | 2 +- + Documentation/RCU/rcubarrier.rst | 6 +- + Documentation/RCU/stallwarn.rst | 4 +- + Documentation/RCU/whatisRCU.rst | 10 +- + .../admin-guide/kernel-parameters.txt | 11 + + Documentation/driver-api/io-mapping.rst | 92 +- + arch/Kconfig | 8 +- + arch/alpha/include/asm/kmap_types.h | 15 - + arch/alpha/include/asm/spinlock_types.h | 4 - + arch/arc/Kconfig | 1 + + arch/arc/include/asm/highmem.h | 26 +- + arch/arc/include/asm/kmap_types.h | 14 - + arch/arc/mm/highmem.c | 54 +- + arch/arm/Kconfig | 6 +- + arch/arm/include/asm/fixmap.h | 4 +- + arch/arm/include/asm/hardirq.h | 11 +- + arch/arm/include/asm/highmem.h | 34 +- + arch/arm/include/asm/irq.h | 2 + + arch/arm/include/asm/kmap_types.h | 10 - + arch/arm/include/asm/spinlock_types.h | 4 - + arch/arm/include/asm/thread_info.h | 10 +- + arch/arm/kernel/asm-offsets.c | 1 + + arch/arm/kernel/entry-armv.S | 19 +- + arch/arm/kernel/entry-common.S | 9 +- + arch/arm/kernel/signal.c | 3 +- + arch/arm/kernel/smp.c | 2 - + arch/arm/mm/Makefile | 1 - + arch/arm/mm/cache-feroceon-l2.c | 6 +- + arch/arm/mm/cache-xsc3l2.c | 4 +- + arch/arm/mm/fault.c | 3 + + arch/arm/mm/highmem.c | 121 -- + arch/arm64/Kconfig | 3 + + arch/arm64/include/asm/hardirq.h | 7 +- + arch/arm64/include/asm/preempt.h | 28 +- + arch/arm64/include/asm/spinlock_types.h | 4 - + arch/arm64/include/asm/thread_info.h | 7 +- + arch/arm64/kernel/asm-offsets.c | 1 + + arch/arm64/kernel/entry.S | 13 +- + arch/arm64/kernel/fpsimd.c | 14 +- + arch/arm64/kernel/ipi_nmi.c | 2 - + arch/arm64/kernel/signal.c | 2 +- + arch/arm64/kvm/arm.c | 6 +- + arch/csky/Kconfig | 1 + + arch/csky/include/asm/fixmap.h | 4 +- + arch/csky/include/asm/highmem.h | 6 +- + arch/csky/mm/highmem.c | 75 +- + arch/hexagon/include/asm/spinlock_types.h | 4 - + arch/ia64/include/asm/kmap_types.h | 13 - + arch/ia64/include/asm/spinlock_types.h | 4 - + arch/ia64/kernel/time.c | 20 +- + arch/microblaze/Kconfig | 1 + + arch/microblaze/include/asm/fixmap.h | 4 +- + arch/microblaze/include/asm/highmem.h | 6 +- + arch/microblaze/mm/Makefile | 1 - + arch/microblaze/mm/highmem.c | 78 - + arch/microblaze/mm/init.c | 6 - + arch/mips/Kconfig | 1 + + arch/mips/include/asm/fixmap.h | 4 +- + arch/mips/include/asm/highmem.h | 6 +- + arch/mips/include/asm/kmap_types.h | 13 - + arch/mips/kernel/crash_dump.c | 42 +- + arch/mips/mm/highmem.c | 77 - + arch/mips/mm/init.c | 4 - + arch/nds32/Kconfig.cpu | 1 + + arch/nds32/include/asm/fixmap.h | 4 +- + arch/nds32/include/asm/highmem.h | 22 +- + arch/nds32/mm/Makefile | 1 - + arch/nds32/mm/highmem.c | 48 - + arch/openrisc/mm/init.c | 1 - + arch/openrisc/mm/ioremap.c | 1 - + arch/parisc/include/asm/hardirq.h | 1 - + arch/parisc/include/asm/kmap_types.h | 13 - + arch/powerpc/Kconfig | 4 + + arch/powerpc/include/asm/cmpxchg.h | 2 +- + arch/powerpc/include/asm/fixmap.h | 4 +- + arch/powerpc/include/asm/highmem.h | 7 +- + arch/powerpc/include/asm/kmap_types.h | 13 - + .../include/asm/simple_spinlock_types.h | 2 +- + arch/powerpc/include/asm/spinlock_types.h | 4 - + arch/powerpc/include/asm/stackprotector.h | 4 + + arch/powerpc/include/asm/thread_info.h | 17 +- + arch/powerpc/kernel/asm-offsets.c | 1 + + arch/powerpc/kernel/entry_32.S | 23 +- + arch/powerpc/kernel/exceptions-64e.S | 16 +- + arch/powerpc/kernel/irq.c | 2 + + arch/powerpc/kernel/misc_32.S | 2 + + arch/powerpc/kernel/misc_64.S | 2 + + arch/powerpc/kernel/nvram_64.c | 12 +- + arch/powerpc/kernel/syscall_64.c | 10 +- + arch/powerpc/kernel/time.c | 56 +- + arch/powerpc/kernel/traps.c | 8 +- + arch/powerpc/kernel/watchdog.c | 5 - + arch/powerpc/kexec/crash.c | 3 - + arch/powerpc/kvm/Kconfig | 1 + + arch/powerpc/mm/Makefile | 1 - + arch/powerpc/mm/highmem.c | 67 - + arch/powerpc/mm/mem.c | 7 - + arch/powerpc/platforms/powernv/opal-kmsg.c | 3 +- + arch/powerpc/platforms/pseries/iommu.c | 31 +- + arch/powerpc/xmon/xmon.c | 6 +- + arch/s390/Kconfig | 1 + + arch/s390/include/asm/spinlock_types.h | 4 - + arch/s390/include/asm/vtime.h | 1 - + arch/s390/kernel/vtime.c | 51 +- + arch/sh/include/asm/fixmap.h | 8 - + arch/sh/include/asm/hardirq.h | 14 +- + arch/sh/include/asm/kmap_types.h | 15 - + arch/sh/include/asm/spinlock_types.h | 4 - + arch/sh/kernel/irq.c | 4 +- + arch/sh/kernel/traps.c | 2 +- + arch/sh/mm/init.c | 8 - + arch/sparc/Kconfig | 1 + + arch/sparc/include/asm/highmem.h | 8 +- + arch/sparc/include/asm/kmap_types.h | 11 - + arch/sparc/include/asm/vaddrs.h | 4 +- + arch/sparc/kernel/irq_64.c | 2 + + arch/sparc/mm/Makefile | 3 - + arch/sparc/mm/highmem.c | 115 -- + arch/sparc/mm/srmmu.c | 2 - + arch/um/include/asm/fixmap.h | 1 - + arch/um/include/asm/hardirq.h | 17 +- + arch/um/include/asm/kmap_types.h | 13 - + arch/um/kernel/kmsg_dump.c | 13 +- + arch/x86/Kconfig | 3 + + arch/x86/crypto/aesni-intel_glue.c | 22 +- + arch/x86/crypto/cast5_avx_glue.c | 21 +- + arch/x86/crypto/glue_helper.c | 26 +- + arch/x86/include/asm/fixmap.h | 5 +- + arch/x86/include/asm/fpu/api.h | 24 +- + arch/x86/include/asm/highmem.h | 13 +- + arch/x86/include/asm/iomap.h | 13 +- + arch/x86/include/asm/kmap_types.h | 13 - + arch/x86/include/asm/paravirt_types.h | 1 - + arch/x86/include/asm/preempt.h | 37 +- + arch/x86/include/asm/signal.h | 13 + + arch/x86/include/asm/stackprotector.h | 8 +- + arch/x86/include/asm/thread_info.h | 11 + + arch/x86/kernel/crash_dump_32.c | 48 +- + arch/x86/kernel/fpu/core.c | 12 + + arch/x86/kernel/irq_32.c | 2 + + arch/x86/kernel/irq_64.c | 2 + + arch/x86/kvm/x86.c | 8 + + arch/x86/mm/highmem_32.c | 59 - + arch/x86/mm/init_32.c | 15 - + arch/x86/mm/iomap_32.c | 57 +- + arch/xtensa/Kconfig | 1 + + arch/xtensa/include/asm/fixmap.h | 4 +- + arch/xtensa/include/asm/highmem.h | 12 +- + arch/xtensa/include/asm/spinlock_types.h | 4 - + arch/xtensa/mm/highmem.c | 46 +- + block/blk-mq.c | 124 +- + crypto/cryptd.c | 15 +- + drivers/atm/eni.c | 2 +- + drivers/block/zram/zram_drv.c | 36 + + drivers/block/zram/zram_drv.h | 1 + + drivers/char/tpm/tpm-dev-common.c | 1 - + drivers/char/tpm/tpm_tis.c | 29 +- + drivers/firewire/ohci.c | 4 +- + drivers/firmware/efi/efi.c | 5 +- + drivers/gpu/drm/i915/display/intel_sprite.c | 15 +- + .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 7 +- + drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 5 +- + drivers/gpu/drm/i915/gt/intel_engine_pm.c | 8 +- + drivers/gpu/drm/i915/i915_gem.c | 40 +- + drivers/gpu/drm/i915/i915_irq.c | 2 + + drivers/gpu/drm/i915/i915_trace.h | 6 +- + drivers/gpu/drm/i915/selftests/i915_gem.c | 4 +- + drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 8 +- + .../drm/nouveau/nvkm/subdev/devinit/fbmem.h | 8 +- + drivers/gpu/drm/qxl/qxl_image.c | 18 +- + drivers/gpu/drm/qxl/qxl_ioctl.c | 27 +- + drivers/gpu/drm/qxl/qxl_object.c | 12 +- + drivers/gpu/drm/qxl/qxl_object.h | 4 +- + drivers/gpu/drm/qxl/qxl_release.c | 4 +- + drivers/gpu/drm/radeon/radeon_display.c | 2 + + drivers/gpu/drm/ttm/ttm_bo_util.c | 20 +- + drivers/gpu/drm/vmwgfx/vmwgfx_blit.c | 30 +- + drivers/hv/hyperv_vmbus.h | 1 + + drivers/hv/vmbus_drv.c | 8 +- + drivers/leds/trigger/Kconfig | 1 + + drivers/md/raid5.c | 7 +- + drivers/md/raid5.h | 1 + + drivers/mtd/mtdoops.c | 5 +- + drivers/net/arcnet/arc-rimi.c | 4 +- + drivers/net/arcnet/arcdevice.h | 6 + + drivers/net/arcnet/arcnet.c | 66 +- + drivers/net/arcnet/com20020-isa.c | 4 +- + drivers/net/arcnet/com20020-pci.c | 2 +- + drivers/net/arcnet/com20020_cs.c | 2 +- + drivers/net/arcnet/com90io.c | 4 +- + drivers/net/arcnet/com90xx.c | 4 +- + drivers/net/ethernet/chelsio/cxgb/common.h | 6 +- + drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 54 +- + drivers/net/ethernet/chelsio/cxgb/sge.c | 53 +- + drivers/net/ethernet/chelsio/cxgb/sge.h | 3 +- + drivers/net/ethernet/chelsio/cxgb/subr.c | 64 +- + drivers/net/ethernet/dlink/sundance.c | 2 +- + drivers/net/ethernet/jme.c | 10 +- + drivers/net/ethernet/jme.h | 2 +- + drivers/net/wireless/ath/ath9k/beacon.c | 2 +- + drivers/pci/controller/pci-hyperv.c | 2 +- + drivers/scsi/fcoe/fcoe.c | 16 +- + drivers/scsi/fcoe/fcoe_ctlr.c | 4 +- + drivers/scsi/libfc/fc_exch.c | 4 +- + drivers/tty/serial/8250/8250.h | 47 +- + drivers/tty/serial/8250/8250_core.c | 17 +- + drivers/tty/serial/8250/8250_fsl.c | 9 + + drivers/tty/serial/8250/8250_ingenic.c | 7 + + drivers/tty/serial/8250/8250_mtk.c | 29 +- + drivers/tty/serial/8250/8250_port.c | 92 +- + drivers/tty/serial/amba-pl011.c | 17 +- + drivers/tty/serial/omap-serial.c | 12 +- + drivers/tty/tty_buffer.c | 4 +- + fs/afs/dir_silly.c | 2 +- + fs/aio.c | 3 +- + fs/btrfs/ctree.h | 1 - + fs/cifs/readdir.c | 2 +- + fs/dcache.c | 39 +- + fs/eventfd.c | 12 +- + fs/fscache/internal.h | 1 - + fs/fscache/main.c | 6 - + fs/fscache/object.c | 13 +- + fs/fuse/readdir.c | 2 +- + fs/inode.c | 2 +- + fs/namei.c | 4 +- + fs/namespace.c | 8 +- + fs/nfs/dir.c | 4 +- + fs/nfs/unlink.c | 4 +- + fs/proc/array.c | 4 +- + fs/proc/base.c | 3 +- + fs/proc/proc_sysctl.c | 2 +- + fs/pstore/platform.c | 5 +- + include/asm-generic/Kbuild | 2 +- + include/asm-generic/hardirq.h | 6 +- + include/asm-generic/kmap_size.h | 12 + + include/asm-generic/kmap_types.h | 11 - + include/asm-generic/preempt.h | 3 + + include/linux/blkdev.h | 2 +- + include/linux/bottom_half.h | 8 +- + include/linux/console.h | 11 + + include/linux/cpuhotplug.h | 1 + + include/linux/cpumask.h | 6 + + include/linux/dcache.h | 4 +- + include/linux/debug_locks.h | 3 +- + include/linux/delay.h | 6 + + include/linux/entry-common.h | 2 +- + include/linux/eventfd.h | 11 +- + include/linux/fs.h | 2 +- + include/linux/hardirq.h | 7 +- + include/linux/highmem-internal.h | 222 +++ + include/linux/highmem.h | 294 ++- + include/linux/interrupt.h | 34 +- + include/linux/io-mapping.h | 28 +- + include/linux/irq_cpustat.h | 28 - + include/linux/irq_work.h | 8 + + include/linux/irqdesc.h | 1 + + include/linux/irqflags.h | 23 +- + include/linux/kernel.h | 26 +- + include/linux/kmsg_dump.h | 52 +- + include/linux/local_lock_internal.h | 111 +- + include/linux/mm_types.h | 4 + + include/linux/mutex.h | 34 +- + include/linux/mutex_rt.h | 130 ++ + include/linux/nfs_xdr.h | 2 +- + include/linux/notifier.h | 6 +- + include/linux/pid.h | 1 + + include/linux/preempt.h | 190 +- + include/linux/printk.h | 30 +- + include/linux/random.h.rej | 11 + + include/linux/rbtree.h | 27 +- + include/linux/rbtree_type.h | 31 + + include/linux/rcupdate.h | 10 +- + include/linux/rtmutex.h | 46 +- + include/linux/rwlock_rt.h | 109 ++ + include/linux/rwlock_types.h | 4 + + include/linux/rwlock_types_rt.h | 56 + + include/linux/rwsem-rt.h | 70 + + include/linux/rwsem.h | 12 + + include/linux/sched.h | 123 +- + include/linux/sched/hotplug.h | 2 + + include/linux/sched/mm.h | 11 + + include/linux/sched/rt.h | 8 - + include/linux/sched/wake_q.h | 13 +- + include/linux/serial_8250.h | 5 + + include/linux/shmem_fs.h | 2 +- + include/linux/signal.h | 1 + + include/linux/skbuff.h | 7 + + include/linux/smp.h | 3 + + include/linux/spinlock.h | 12 +- + include/linux/spinlock_api_smp.h | 4 +- + include/linux/spinlock_rt.h | 155 ++ + include/linux/spinlock_types.h | 92 +- + include/linux/spinlock_types_nort.h | 39 + + include/linux/spinlock_types_raw.h | 65 + + include/linux/spinlock_types_rt.h | 38 + + include/linux/spinlock_types_up.h | 2 +- + include/linux/stop_machine.h | 5 + + include/linux/thread_info.h | 12 +- + include/linux/trace_events.h | 65 +- + include/linux/u64_stats_sync.h | 42 +- + include/linux/vmstat.h | 4 + + include/linux/vtime.h | 42 +- + include/linux/wait.h | 1 + + include/linux/ww_mutex.h | 8 + + include/net/gen_stats.h | 11 +- + include/net/net_seq_lock.h | 15 + + include/net/netns/xfrm.h | 2 +- + include/net/sch_generic.h | 27 +- + include/trace/events/sched.h | 12 + + init/Kconfig | 7 +- + kernel/Kconfig.locks | 2 +- + kernel/Kconfig.preempt | 7 + + kernel/cgroup/cpuset.c | 82 +- + kernel/cgroup/rstat.c | 5 +- + kernel/cpu.c | 9 +- + kernel/debug/kdb/kdb_main.c | 10 +- + kernel/entry/common.c | 14 +- + kernel/exit.c | 2 +- + kernel/fork.c | 28 +- + kernel/futex.c | 87 +- + kernel/irq/handle.c | 8 + + kernel/irq/manage.c | 16 +- + kernel/irq/spurious.c | 8 + + kernel/irq_work.c | 134 +- + kernel/kexec_core.c | 1 - + kernel/ksysfs.c | 12 + + kernel/kthread.c | 16 +- + kernel/locking/Makefile | 10 +- + kernel/locking/lockdep.c | 2 + + kernel/locking/mutex-rt.c | 224 +++ + kernel/locking/rtmutex-debug.c | 102 - + kernel/locking/rtmutex-debug.h | 11 - + kernel/locking/rtmutex.c | 939 +++++++-- + kernel/locking/rtmutex.h | 7 - + kernel/locking/rtmutex_common.h | 36 +- + kernel/locking/rwlock-rt.c | 334 ++++ + kernel/locking/rwsem-rt.c | 317 ++++ + kernel/locking/rwsem.c | 6 + + kernel/locking/spinlock.c | 7 + + kernel/locking/spinlock_debug.c | 5 + + kernel/notifier.c | 12 +- + kernel/panic.c | 33 +- + kernel/printk/Makefile | 1 - + kernel/printk/internal.h | 4 - + kernel/printk/printk.c | 1678 +++++++++-------- + kernel/printk/printk_safe.c | 349 +--- + kernel/ptrace.c | 32 +- + kernel/rcu/Kconfig | 4 +- + kernel/rcu/tree.c | 4 +- + kernel/rcu/update.c | 4 +- + kernel/sched/core.c | 1274 ++++++++++--- + kernel/sched/cpudeadline.c | 4 +- + kernel/sched/cpupri.c | 4 +- + kernel/sched/cputime.c | 36 +- + kernel/sched/deadline.c | 47 +- + kernel/sched/fair.c | 16 +- + kernel/sched/features.h | 8 + + kernel/sched/rt.c | 83 +- + kernel/sched/sched.h | 73 +- + kernel/sched/swait.c | 1 + + kernel/signal.c | 105 +- + kernel/smp.c | 14 +- + kernel/softirq.c | 428 ++++- + kernel/stop_machine.c | 27 +- + kernel/time/hrtimer.c | 30 + + kernel/time/tick-sched.c | 2 +- + kernel/time/timer.c | 9 +- + kernel/trace/trace.c | 93 +- + kernel/trace/trace.h | 19 - + kernel/trace/trace_events.c | 2 + + kernel/trace/trace_output.c | 19 +- + kernel/workqueue.c | 4 + + lib/Kconfig.debug | 2 +- + lib/bug.c | 1 + + lib/cpumask.c | 18 + + lib/debugobjects.c | 5 +- + lib/dump_stack.c | 2 + + lib/irq_poll.c | 5 + + lib/locking-selftest.c | 51 + + lib/nmi_backtrace.c | 6 - + lib/scatterlist.c | 2 +- + lib/smp_processor_id.c | 5 + + lib/test_lockup.c | 16 + + mm/Kconfig | 5 +- + mm/highmem.c | 262 ++- + mm/memcontrol.c | 67 +- + mm/page_alloc.c | 180 +- + mm/shmem.c | 31 +- + mm/slab.c | 90 +- + mm/slab.h | 2 +- + mm/slub.c | 148 +- + mm/vmalloc.c | 13 +- + mm/vmstat.c | 12 + + mm/workingset.c | 5 +- + mm/z3fold.c | 17 +- + mm/zsmalloc.c | 85 +- + net/Kconfig | 2 +- + net/core/dev.c | 33 +- + net/core/gen_estimator.c | 6 +- + net/core/gen_stats.c | 12 +- + net/core/sock.c | 6 +- + net/sched/sch_api.c | 2 +- + net/sched/sch_generic.c | 10 + + net/sunrpc/svc_xprt.c | 4 +- + net/xfrm/xfrm_state.c | 3 +- + 407 files changed, 9011 insertions(+), 4785 deletions(-) + delete mode 100644 arch/alpha/include/asm/kmap_types.h + delete mode 100644 arch/arc/include/asm/kmap_types.h + delete mode 100644 arch/arm/include/asm/kmap_types.h + delete mode 100644 arch/arm/mm/highmem.c + delete mode 100644 arch/ia64/include/asm/kmap_types.h + delete mode 100644 arch/microblaze/mm/highmem.c + delete mode 100644 arch/mips/include/asm/kmap_types.h + delete mode 100644 arch/nds32/mm/highmem.c + delete mode 100644 arch/parisc/include/asm/kmap_types.h + delete mode 100644 arch/powerpc/include/asm/kmap_types.h + delete mode 100644 arch/powerpc/mm/highmem.c + delete mode 100644 arch/sh/include/asm/kmap_types.h + delete mode 100644 arch/sparc/include/asm/kmap_types.h + delete mode 100644 arch/sparc/mm/highmem.c + delete mode 100644 arch/um/include/asm/kmap_types.h + delete mode 100644 arch/x86/include/asm/kmap_types.h + create mode 100644 include/asm-generic/kmap_size.h + delete mode 100644 include/asm-generic/kmap_types.h + create mode 100644 include/linux/highmem-internal.h + delete mode 100644 include/linux/irq_cpustat.h + create mode 100644 include/linux/mutex_rt.h + create mode 100644 include/linux/random.h.rej + create mode 100644 include/linux/rbtree_type.h + create mode 100644 include/linux/rwlock_rt.h + create mode 100644 include/linux/rwlock_types_rt.h + create mode 100644 include/linux/rwsem-rt.h + create mode 100644 include/linux/spinlock_rt.h + create mode 100644 include/linux/spinlock_types_nort.h + create mode 100644 include/linux/spinlock_types_raw.h + create mode 100644 include/linux/spinlock_types_rt.h + create mode 100644 include/net/net_seq_lock.h + create mode 100644 kernel/locking/mutex-rt.c + create mode 100644 kernel/locking/rwlock-rt.c + create mode 100644 kernel/locking/rwsem-rt.c + diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst -index 72f0f6fbd..6f89cf1e5 100644 +index 72f0f6fbd53c..6f89cf1e567d 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst @@ -38,7 +38,7 @@ sections. @@ -21,7 +470,7 @@ index 72f0f6fbd..6f89cf1e5 100644 shown in the following diagram: diff --git a/Documentation/RCU/Design/Requirements/Requirements.rst b/Documentation/RCU/Design/Requirements/Requirements.rst -index 1ae79a10a..17d38480e 100644 +index 1ae79a10a8de..17d38480ef5c 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.rst +++ b/Documentation/RCU/Design/Requirements/Requirements.rst @@ -78,7 +78,7 @@ RCU treats a nested set as one big RCU read-side critical section. @@ -120,7 +569,7 @@ index 1ae79a10a..17d38480e 100644 for voluntary context switches. diff --git a/Documentation/RCU/checklist.rst b/Documentation/RCU/checklist.rst -index 2efed9926..7ed495604 100644 +index 2efed9926c3f..7ed4956043bd 100644 --- a/Documentation/RCU/checklist.rst +++ b/Documentation/RCU/checklist.rst @@ -214,7 +214,7 @@ over a rather long period of time, but improvements are always welcome! @@ -133,7 +582,7 @@ index 2efed9926..7ed495604 100644 then the corresponding readers my use rcu_read_lock() and rcu_read_unlock(), rcu_read_lock_bh() and rcu_read_unlock_bh(), diff --git a/Documentation/RCU/rcubarrier.rst b/Documentation/RCU/rcubarrier.rst -index f64f4413a..3b4a24877 100644 +index f64f4413a47c..3b4a24877496 100644 --- a/Documentation/RCU/rcubarrier.rst +++ b/Documentation/RCU/rcubarrier.rst @@ -9,7 +9,7 @@ RCU (read-copy update) is a synchronization mechanism that can be thought @@ -159,7 +608,7 @@ index f64f4413a..3b4a24877 100644 Therefore, on_each_cpu() disables preemption across its call to smp_call_function() and also across the local call to diff --git a/Documentation/RCU/stallwarn.rst b/Documentation/RCU/stallwarn.rst -index c9ab6af4d..e97d1b487 100644 +index c9ab6af4d3be..e97d1b4876ef 100644 --- a/Documentation/RCU/stallwarn.rst +++ b/Documentation/RCU/stallwarn.rst @@ -25,7 +25,7 @@ warnings: @@ -181,7 +630,7 @@ index c9ab6af4d..e97d1b487 100644 read-side critical section. This is especially damaging if that low-priority task is not permitted to run on any other CPU, diff --git a/Documentation/RCU/whatisRCU.rst b/Documentation/RCU/whatisRCU.rst -index fb3ff76c3..3b2b1479f 100644 +index fb3ff76c3e73..3b2b1479fd0f 100644 --- a/Documentation/RCU/whatisRCU.rst +++ b/Documentation/RCU/whatisRCU.rst @@ -684,7 +684,7 @@ Quick Quiz #1: @@ -225,10 +674,10 @@ index fb3ff76c3..3b2b1479f 100644 read-side critical sections. It also permits spinlocks blocking while in RCU read-side critical diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index e67e9dbb2..c8692370c 100644 +index 216b28514abe..0954357bbe51 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -4269,6 +4269,10 @@ +@@ -4314,6 +4314,10 @@ value, meaning that RCU_SOFTIRQ is used by default. Specify rcutree.use_softirq=0 to use rcuc kthreads. @@ -239,7 +688,7 @@ index e67e9dbb2..c8692370c 100644 rcutree.rcu_fanout_exact= [KNL] Disable autobalancing of the rcu_node combining tree. This is used by rcutorture, and might -@@ -4647,6 +4651,13 @@ +@@ -4692,6 +4696,13 @@ only normal grace-period primitives. No effect on CONFIG_TINY_RCU kernels. @@ -254,7 +703,7 @@ index e67e9dbb2..c8692370c 100644 Set time in jiffies during which RCU tasks will avoid sending IPIs, starting with the beginning diff --git a/Documentation/driver-api/io-mapping.rst b/Documentation/driver-api/io-mapping.rst -index a966239f0..a7830c594 100644 +index a966239f04e4..a7830c59481f 100644 --- a/Documentation/driver-api/io-mapping.rst +++ b/Documentation/driver-api/io-mapping.rst @@ -20,78 +20,64 @@ A mapping object is created during driver initialization using:: @@ -376,7 +825,7 @@ index a966239f0..a7830c594 100644 -performs an IPI to inform all processors about the new mapping. This results -in a significant performance penalty. diff --git a/arch/Kconfig b/arch/Kconfig -index 7a8e3d45b..4dbc4c659 100644 +index 7800502d9b6e..5fd528b87932 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -50,6 +50,7 @@ config OPROFILE @@ -410,7 +859,7 @@ index 7a8e3d45b..4dbc4c659 100644 help diff --git a/arch/alpha/include/asm/kmap_types.h b/arch/alpha/include/asm/kmap_types.h deleted file mode 100644 -index 651714b45..000000000 +index 651714b45729..000000000000 --- a/arch/alpha/include/asm/kmap_types.h +++ /dev/null @@ -1,15 +0,0 @@ @@ -430,7 +879,7 @@ index 651714b45..000000000 - -#endif diff --git a/arch/alpha/include/asm/spinlock_types.h b/arch/alpha/include/asm/spinlock_types.h -index 1d5716bc0..6883bc952 100644 +index 1d5716bc060b..6883bc952d22 100644 --- a/arch/alpha/include/asm/spinlock_types.h +++ b/arch/alpha/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -445,7 +894,7 @@ index 1d5716bc0..6883bc952 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig -index 0a89cc9de..d8804001d 100644 +index 0a89cc9def65..d8804001d550 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -507,6 +507,7 @@ config LINUX_RAM_BASE @@ -457,7 +906,7 @@ index 0a89cc9de..d8804001d 100644 With ARC 2G:2G address split, only upper 2G is directly addressable by kernel. Enable this to potentially allow access to rest of 2G and PAE diff --git a/arch/arc/include/asm/highmem.h b/arch/arc/include/asm/highmem.h -index 6e5eafb3a..a6b8e2c35 100644 +index 6e5eafb3afdd..a6b8e2c352c4 100644 --- a/arch/arc/include/asm/highmem.h +++ b/arch/arc/include/asm/highmem.h @@ -9,17 +9,29 @@ @@ -512,7 +961,7 @@ index 6e5eafb3a..a6b8e2c35 100644 #endif diff --git a/arch/arc/include/asm/kmap_types.h b/arch/arc/include/asm/kmap_types.h deleted file mode 100644 -index fecf7851e..000000000 +index fecf7851ec32..000000000000 --- a/arch/arc/include/asm/kmap_types.h +++ /dev/null @@ -1,14 +0,0 @@ @@ -531,7 +980,7 @@ index fecf7851e..000000000 - */ -#endif diff --git a/arch/arc/mm/highmem.c b/arch/arc/mm/highmem.c -index 1b9f473c6..c79912a6b 100644 +index 1b9f473c6369..c79912a6b196 100644 --- a/arch/arc/mm/highmem.c +++ b/arch/arc/mm/highmem.c @@ -36,9 +36,8 @@ @@ -610,7 +1059,7 @@ index 1b9f473c6..c79912a6b 100644 + alloc_kmap_pgtable(FIXMAP_BASE); } diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 29a634b7d..77c96bea6 100644 +index 9096aa34e482..9457b01b63ef 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -31,6 +31,7 @@ config ARM @@ -630,7 +1079,7 @@ index 29a634b7d..77c96bea6 100644 select HAVE_ARCH_KFENCE if MMU select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL -@@ -108,6 +109,7 @@ config ARM +@@ -109,6 +110,7 @@ config ARM select HAVE_PERF_EVENTS select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -638,7 +1087,7 @@ index 29a634b7d..77c96bea6 100644 select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_RSEQ -@@ -123,6 +125,7 @@ config ARM +@@ -124,6 +126,7 @@ config ARM select OLD_SIGSUSPEND3 select PCI_SYSCALL if PCI select PERF_USE_VMALLOC @@ -646,7 +1095,7 @@ index 29a634b7d..77c96bea6 100644 select RTC_LIB select SET_FS select SYS_SUPPORTS_APM_EMULATION -@@ -1512,6 +1515,7 @@ config HAVE_ARCH_PFN_VALID +@@ -1509,6 +1512,7 @@ config HAVE_ARCH_PFN_VALID config HIGHMEM bool "High Memory Support" depends on MMU @@ -655,7 +1104,7 @@ index 29a634b7d..77c96bea6 100644 The address space of ARM processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h -index 9575b4040..707068f85 100644 +index 9575b404019c..707068f852c2 100644 --- a/arch/arm/include/asm/fixmap.h +++ b/arch/arm/include/asm/fixmap.h @@ -7,14 +7,14 @@ @@ -676,7 +1125,7 @@ index 9575b4040..707068f85 100644 /* Support writing RO kernel text via kprobes, jump labels, etc. */ FIX_TEXT_POKE0, diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h -index b95848ed2..706efafbf 100644 +index b95848ed2bc7..706efafbf972 100644 --- a/arch/arm/include/asm/hardirq.h +++ b/arch/arm/include/asm/hardirq.h @@ -2,16 +2,11 @@ @@ -700,7 +1149,7 @@ index b95848ed2..706efafbf 100644 #endif /* __ASM_HARDIRQ_H */ diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h -index 31811be38..b22dffa8c 100644 +index 31811be38d78..b22dffa8c7eb 100644 --- a/arch/arm/include/asm/highmem.h +++ b/arch/arm/include/asm/highmem.h @@ -2,7 +2,8 @@ @@ -756,7 +1205,7 @@ index 31811be38..b22dffa8c 100644 #endif diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h -index 54b0180c8..36d040c68 100644 +index 54b0180c8aeb..36d040c68163 100644 --- a/arch/arm/include/asm/irq.h +++ b/arch/arm/include/asm/irq.h @@ -31,6 +31,8 @@ void handle_IRQ(unsigned int, struct pt_regs *); @@ -770,7 +1219,7 @@ index 54b0180c8..36d040c68 100644 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace diff --git a/arch/arm/include/asm/kmap_types.h b/arch/arm/include/asm/kmap_types.h deleted file mode 100644 -index 5590940ee..000000000 +index 5590940ee43d..000000000000 --- a/arch/arm/include/asm/kmap_types.h +++ /dev/null @@ -1,10 +0,0 @@ @@ -785,7 +1234,7 @@ index 5590940ee..000000000 - -#endif diff --git a/arch/arm/include/asm/spinlock_types.h b/arch/arm/include/asm/spinlock_types.h -index 597695864..a37c08039 100644 +index 5976958647fe..a37c0803954b 100644 --- a/arch/arm/include/asm/spinlock_types.h +++ b/arch/arm/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -800,7 +1249,7 @@ index 597695864..a37c08039 100644 typedef struct { diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h -index 9f7ca79cc..9f31470f6 100644 +index 9f7ca79cc76a..9f31470f695a 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h @@ -55,6 +55,7 @@ struct cpu_context_save { @@ -842,7 +1291,7 @@ index 9f7ca79cc..9f31470f6 100644 #endif /* __KERNEL__ */ #endif /* __ASM_ARM_THREAD_INFO_H */ diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c -index 70993af22..024c65c3a 100644 +index 70993af22d80..024c65c3a0f2 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c @@ -43,6 +43,7 @@ int main(void) @@ -854,7 +1303,7 @@ index 70993af22..024c65c3a 100644 DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index d74678d95..875f8ed46 100644 +index 4332e5950042..efb2d0755ce7 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -207,11 +207,18 @@ __irq_svc: @@ -895,7 +1344,7 @@ index d74678d95..875f8ed46 100644 __und_fault: diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S -index 7a2e63dfb..37c91a550 100644 +index 7a2e63dfb4d9..37c91a55027e 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -54,7 +54,9 @@ __ret_fast_syscall: @@ -923,7 +1372,7 @@ index 7a2e63dfb..37c91a550 100644 ENDPROC(ret_fast_syscall) diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c -index 2f81d3af5..6e69f7b3d 100644 +index 2f81d3af5f9a..6e69f7b3d581 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -649,7 +649,8 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) @@ -937,7 +1386,7 @@ index 2f81d3af5..6e69f7b3d 100644 } else { if (unlikely(!user_mode(regs))) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index d94e39a21..44383bfbf 100644 +index d94e39a21698..44383bfbf98b 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -671,9 +671,7 @@ static void do_handle_IPI(int ipinr) @@ -951,7 +1400,7 @@ index d94e39a21..44383bfbf 100644 default: diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile -index 4536159bc..3510503bc 100644 +index 4536159bc8fa..3510503bc5e6 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile @@ -21,7 +21,6 @@ KASAN_SANITIZE_physaddr.o := n @@ -963,7 +1412,7 @@ index 4536159bc..3510503bc 100644 obj-$(CONFIG_ARM_PV_FIXUP) += pv-fixup-asm.o diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c -index 10f909744..fd9e3e740 100644 +index 10f909744d5e..fd9e3e740b3d 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c @@ -49,9 +49,9 @@ static inline unsigned long l2_get_va(unsigned long paddr) @@ -988,7 +1437,7 @@ index 10f909744..fd9e3e740 100644 } diff --git a/arch/arm/mm/cache-xsc3l2.c b/arch/arm/mm/cache-xsc3l2.c -index 581473165..f34845da3 100644 +index 5814731653d9..f34845da3522 100644 --- a/arch/arm/mm/cache-xsc3l2.c +++ b/arch/arm/mm/cache-xsc3l2.c @@ -59,7 +59,7 @@ static inline void l2_unmap_va(unsigned long va) @@ -1010,7 +1459,7 @@ index 581473165..f34845da3 100644 return va + (pa_offset >> (32 - PAGE_SHIFT)); #else diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c -index 91965fb04..d34166682 100644 +index 91965fb043de..d34166682b7f 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, @@ -1025,7 +1474,7 @@ index 91965fb04..d34166682 100644 diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c deleted file mode 100644 -index 187fab227..000000000 +index 187fab227b50..000000000000 --- a/arch/arm/mm/highmem.c +++ /dev/null @@ -1,121 +0,0 @@ @@ -1151,7 +1600,7 @@ index 187fab227..000000000 - return (void *)vaddr; -} diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index e253fdba1..c5c7f87a9 100644 +index df28741e49c9..3ff788c8b040 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -76,6 +76,7 @@ config ARM64 @@ -1162,7 +1611,7 @@ index e253fdba1..c5c7f87a9 100644 select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT select ARCH_WANT_DEFAULT_BPF_JIT select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT -@@ -178,6 +179,7 @@ config ARM64 +@@ -179,6 +180,7 @@ config ARM64 select HAVE_PERF_EVENTS select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -1170,7 +1619,7 @@ index e253fdba1..c5c7f87a9 100644 select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_FUNCTION_ARG_ACCESS_API select HAVE_FUTEX_CMPXCHG if FUTEX -@@ -200,6 +202,7 @@ config ARM64 +@@ -202,6 +204,7 @@ config ARM64 select PCI_DOMAINS_GENERIC if PCI select PCI_ECAM if (ACPI && PCI) select PCI_SYSCALL if PCI @@ -1179,7 +1628,7 @@ index e253fdba1..c5c7f87a9 100644 select POWER_SUPPLY select SPARSE_IRQ diff --git a/arch/arm64/include/asm/hardirq.h b/arch/arm64/include/asm/hardirq.h -index 5ffa4bacd..cbfa7b6f2 100644 +index 5ffa4bacdad3..cbfa7b6f2e09 100644 --- a/arch/arm64/include/asm/hardirq.h +++ b/arch/arm64/include/asm/hardirq.h @@ -13,11 +13,8 @@ @@ -1197,7 +1646,7 @@ index 5ffa4bacd..cbfa7b6f2 100644 #define __ARCH_IRQ_EXIT_IRQS_DISABLED 1 diff --git a/arch/arm64/include/asm/preempt.h b/arch/arm64/include/asm/preempt.h -index e83f0982b..7a5770d82 100644 +index e83f0982b99c..7a5770d825b9 100644 --- a/arch/arm64/include/asm/preempt.h +++ b/arch/arm64/include/asm/preempt.h @@ -70,17 +70,43 @@ static inline bool __preempt_count_dec_and_test(void) @@ -1246,7 +1695,7 @@ index e83f0982b..7a5770d82 100644 void preempt_schedule_notrace(void); #define __preempt_schedule_notrace() preempt_schedule_notrace() diff --git a/arch/arm64/include/asm/spinlock_types.h b/arch/arm64/include/asm/spinlock_types.h -index 18782f0c4..6672b0535 100644 +index 18782f0c4721..6672b05350b4 100644 --- a/arch/arm64/include/asm/spinlock_types.h +++ b/arch/arm64/include/asm/spinlock_types.h @@ -5,10 +5,6 @@ @@ -1261,7 +1710,7 @@ index 18782f0c4..6672b0535 100644 #include diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h -index af49b6190..0ad7b958c 100644 +index af49b6190aee..0ad7b958c566 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -27,6 +27,7 @@ struct thread_info { @@ -1300,7 +1749,7 @@ index af49b6190..0ad7b958c 100644 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ _TIF_SYSCALL_EMU) diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c -index 5f59e24c9..4f522206c 100644 +index 5f59e24c95d3..4f522206c47a 100644 --- a/arch/arm64/kernel/asm-offsets.c +++ b/arch/arm64/kernel/asm-offsets.c @@ -31,6 +31,7 @@ int main(void) @@ -1312,7 +1761,7 @@ index 5f59e24c9..4f522206c 100644 DEFINE(TSK_TI_TTBR0, offsetof(struct task_struct, thread_info.ttbr0)); #endif diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S -index 64145bfab..4cdbba720 100644 +index 64145bfab48f..4cdbba7202af 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -521,9 +521,18 @@ alternative_if ARM64_HAS_IRQ_PRIO_MASKING @@ -1337,7 +1786,7 @@ index 64145bfab..4cdbba720 100644 mov x0, sp diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c -index 5335a6bd1..84520f116 100644 +index 5335a6bd1a0d..84520f11667d 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -226,6 +226,16 @@ static void sve_free(struct task_struct *task) @@ -1383,7 +1832,7 @@ index 5335a6bd1..84520f116 100644 /* diff --git a/arch/arm64/kernel/ipi_nmi.c b/arch/arm64/kernel/ipi_nmi.c -index 2cf28e511..fc58fada5 100644 +index 2cf28e511b23..fc58fada5aca 100644 --- a/arch/arm64/kernel/ipi_nmi.c +++ b/arch/arm64/kernel/ipi_nmi.c @@ -35,9 +35,7 @@ void arm64_send_nmi(cpumask_t *mask) @@ -1397,10 +1846,10 @@ index 2cf28e511..fc58fada5 100644 static void arm64_send_ipi(cpumask_t *mask) diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c -index d288bb4a1..3e5b354dd 100644 +index e5e2f1e888a2..c5fd06d5285b 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c -@@ -692,7 +692,7 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, +@@ -694,7 +694,7 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags) { do { @@ -1410,10 +1859,10 @@ index d288bb4a1..3e5b354dd 100644 local_daif_restore(DAIF_PROCCTX_NOIRQ); diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c -index d7745ff2e..3c99b499e 100644 +index 384cc56a6549..d5fd6e3038d5 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c -@@ -779,7 +779,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -821,7 +821,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) * involves poking the GIC, which must be done in a * non-preemptible context. */ @@ -1422,7 +1871,7 @@ index d7745ff2e..3c99b499e 100644 kvm_pmu_flush_hwstate(vcpu); -@@ -828,7 +828,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -845,7 +845,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) kvm_timer_sync_user(vcpu); kvm_vgic_sync_hwstate(vcpu); local_irq_enable(); @@ -1431,7 +1880,7 @@ index d7745ff2e..3c99b499e 100644 continue; } -@@ -907,7 +907,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) +@@ -924,7 +924,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu) /* Exit types that need handling before we can be preempted */ handle_exit_early(vcpu, ret); @@ -1441,7 +1890,7 @@ index d7745ff2e..3c99b499e 100644 /* * The ARMv8 architecture doesn't give the hypervisor diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig -index 7bf0a617e..c9f2533cc 100644 +index 7bf0a617e94c..c9f2533cc53d 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -286,6 +286,7 @@ config NR_CPUS @@ -1453,7 +1902,7 @@ index 7bf0a617e..c9f2533cc 100644 config FORCE_MAX_ZONEORDER diff --git a/arch/csky/include/asm/fixmap.h b/arch/csky/include/asm/fixmap.h -index 81f9477d5..4b589cc20 100644 +index 81f9477d5330..4b589cc20900 100644 --- a/arch/csky/include/asm/fixmap.h +++ b/arch/csky/include/asm/fixmap.h @@ -8,7 +8,7 @@ @@ -1475,7 +1924,7 @@ index 81f9477d5..4b589cc20 100644 __end_of_fixed_addresses }; diff --git a/arch/csky/include/asm/highmem.h b/arch/csky/include/asm/highmem.h -index 14645e3d5..1f4ed3f4c 100644 +index 14645e3d5cd5..1f4ed3f4c0d9 100644 --- a/arch/csky/include/asm/highmem.h +++ b/arch/csky/include/asm/highmem.h @@ -9,7 +9,7 @@ @@ -1502,7 +1951,7 @@ index 14645e3d5..1f4ed3f4c 100644 #endif /* __KERNEL__ */ diff --git a/arch/csky/mm/highmem.c b/arch/csky/mm/highmem.c -index 89c10800a..4161df3c6 100644 +index 89c10800a002..4161df3c6c15 100644 --- a/arch/csky/mm/highmem.c +++ b/arch/csky/mm/highmem.c @@ -9,8 +9,6 @@ @@ -1599,7 +2048,7 @@ index 89c10800a..4161df3c6 100644 - kmap_pte = pte_offset_kernel((pmd_t *)pgd_offset_k(vaddr), vaddr); -} diff --git a/arch/hexagon/include/asm/spinlock_types.h b/arch/hexagon/include/asm/spinlock_types.h -index 19d233497..de72fb230 100644 +index 19d233497ba5..de72fb23016d 100644 --- a/arch/hexagon/include/asm/spinlock_types.h +++ b/arch/hexagon/include/asm/spinlock_types.h @@ -8,10 +8,6 @@ @@ -1615,7 +2064,7 @@ index 19d233497..de72fb230 100644 } arch_spinlock_t; diff --git a/arch/ia64/include/asm/kmap_types.h b/arch/ia64/include/asm/kmap_types.h deleted file mode 100644 -index 5c268cf7c..000000000 +index 5c268cf7c2bd..000000000000 --- a/arch/ia64/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -1633,7 +2082,7 @@ index 5c268cf7c..000000000 - -#endif /* _ASM_IA64_KMAP_TYPES_H */ diff --git a/arch/ia64/include/asm/spinlock_types.h b/arch/ia64/include/asm/spinlock_types.h -index 6e345fefc..681408d68 100644 +index 6e345fefcdca..681408d6816f 100644 --- a/arch/ia64/include/asm/spinlock_types.h +++ b/arch/ia64/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -1648,7 +2097,7 @@ index 6e345fefc..681408d68 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c -index 7abc5f37b..733e0e332 100644 +index 7abc5f37bfaf..733e0e3324b8 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c @@ -138,12 +138,8 @@ void vtime_account_kernel(struct task_struct *tsk) @@ -1687,7 +2136,7 @@ index 7abc5f37b..733e0e332 100644 static irqreturn_t diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig -index 33925ffed..7f6ca0ab4 100644 +index 33925ffed68f..7f6ca0ab4f81 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -155,6 +155,7 @@ config XILINX_UNCACHED_SHADOW @@ -1699,7 +2148,7 @@ index 33925ffed..7f6ca0ab4 100644 The address space of Microblaze processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/microblaze/include/asm/fixmap.h b/arch/microblaze/include/asm/fixmap.h -index 0379ce522..e6e9288bf 100644 +index 0379ce5229e3..e6e9288bff76 100644 --- a/arch/microblaze/include/asm/fixmap.h +++ b/arch/microblaze/include/asm/fixmap.h @@ -20,7 +20,7 @@ @@ -1721,7 +2170,7 @@ index 0379ce522..e6e9288bf 100644 __end_of_fixed_addresses }; diff --git a/arch/microblaze/include/asm/highmem.h b/arch/microblaze/include/asm/highmem.h -index 284ca8fb5..4418633fb 100644 +index 284ca8fb54c1..4418633fb163 100644 --- a/arch/microblaze/include/asm/highmem.h +++ b/arch/microblaze/include/asm/highmem.h @@ -25,7 +25,6 @@ @@ -1745,7 +2194,7 @@ index 284ca8fb5..4418633fb 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/microblaze/mm/Makefile b/arch/microblaze/mm/Makefile -index 1b16875ce..8ced71100 100644 +index 1b16875cea70..8ced71100047 100644 --- a/arch/microblaze/mm/Makefile +++ b/arch/microblaze/mm/Makefile @@ -6,4 +6,3 @@ @@ -1755,7 +2204,7 @@ index 1b16875ce..8ced71100 100644 -obj-$(CONFIG_HIGHMEM) += highmem.o diff --git a/arch/microblaze/mm/highmem.c b/arch/microblaze/mm/highmem.c deleted file mode 100644 -index 92e089041..000000000 +index 92e0890416c9..000000000000 --- a/arch/microblaze/mm/highmem.c +++ /dev/null @@ -1,78 +0,0 @@ @@ -1838,7 +2287,7 @@ index 92e089041..000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c -index 45da639bd..1f4b5b34e 100644 +index 4a0c30ced72b..498eaa4d3978 100644 --- a/arch/microblaze/mm/init.c +++ b/arch/microblaze/mm/init.c @@ -49,17 +49,11 @@ unsigned long lowmem_size; @@ -1860,7 +2309,7 @@ index 45da639bd..1f4b5b34e 100644 static void highmem_setup(void) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig -index 896a29df1..1b3593d53 100644 +index 896a29df1a6d..1b3593d53978 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2727,6 +2727,7 @@ config WAR_MIPS34K_MISSED_ITLB @@ -1872,7 +2321,7 @@ index 896a29df1..1b3593d53 100644 config CPU_SUPPORTS_HIGHMEM bool diff --git a/arch/mips/include/asm/fixmap.h b/arch/mips/include/asm/fixmap.h -index 743535be7..beea14761 100644 +index 743535be7528..beea14761cef 100644 --- a/arch/mips/include/asm/fixmap.h +++ b/arch/mips/include/asm/fixmap.h @@ -17,7 +17,7 @@ @@ -1894,7 +2343,7 @@ index 743535be7..beea14761 100644 __end_of_fixed_addresses }; diff --git a/arch/mips/include/asm/highmem.h b/arch/mips/include/asm/highmem.h -index 9f021cf51..1716181ea 100644 +index 9f021cf51aa7..1716181ea66d 100644 --- a/arch/mips/include/asm/highmem.h +++ b/arch/mips/include/asm/highmem.h @@ -24,7 +24,7 @@ @@ -1922,7 +2371,7 @@ index 9f021cf51..1716181ea 100644 diff --git a/arch/mips/include/asm/kmap_types.h b/arch/mips/include/asm/kmap_types.h deleted file mode 100644 -index 16665dc24..000000000 +index 16665dc2431b..000000000000 --- a/arch/mips/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -1940,7 +2389,7 @@ index 16665dc24..000000000 - -#endif diff --git a/arch/mips/kernel/crash_dump.c b/arch/mips/kernel/crash_dump.c -index 01b2bd95b..9aba83e1e 100644 +index 01b2bd95ba1f..9aba83e1eeb4 100644 --- a/arch/mips/kernel/crash_dump.c +++ b/arch/mips/kernel/crash_dump.c @@ -5,8 +5,6 @@ @@ -2012,7 +2461,7 @@ index 01b2bd95b..9aba83e1e 100644 -} -arch_initcall(kdump_buf_page_init); diff --git a/arch/mips/mm/highmem.c b/arch/mips/mm/highmem.c -index 5fec7f45d..57e2f08f0 100644 +index 5fec7f45d79a..57e2f08f00d0 100644 --- a/arch/mips/mm/highmem.c +++ b/arch/mips/mm/highmem.c @@ -8,8 +8,6 @@ @@ -2104,7 +2553,7 @@ index 5fec7f45d..57e2f08f0 100644 - kmap_pte = virt_to_kpte(kmap_vstart); -} diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c -index 07e84a774..bc80893e5 100644 +index 07e84a774938..bc80893e5c0f 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c @@ -36,7 +36,6 @@ @@ -2126,7 +2575,7 @@ index 07e84a774..bc80893e5 100644 max_zone_pfns[ZONE_DMA] = MAX_DMA_PFN; #endif diff --git a/arch/nds32/Kconfig.cpu b/arch/nds32/Kconfig.cpu -index f88a12fdf..c10759952 100644 +index f88a12fdf0f3..c10759952485 100644 --- a/arch/nds32/Kconfig.cpu +++ b/arch/nds32/Kconfig.cpu @@ -157,6 +157,7 @@ config HW_SUPPORT_UNALIGNMENT_ACCESS @@ -2138,7 +2587,7 @@ index f88a12fdf..c10759952 100644 The address space of Andes processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address diff --git a/arch/nds32/include/asm/fixmap.h b/arch/nds32/include/asm/fixmap.h -index 5a4bf11e5..2fa09a2de 100644 +index 5a4bf11e5800..2fa09a2de428 100644 --- a/arch/nds32/include/asm/fixmap.h +++ b/arch/nds32/include/asm/fixmap.h @@ -6,7 +6,7 @@ @@ -2160,7 +2609,7 @@ index 5a4bf11e5..2fa09a2de 100644 FIX_EARLYCON_MEM_BASE, __end_of_fixed_addresses diff --git a/arch/nds32/include/asm/highmem.h b/arch/nds32/include/asm/highmem.h -index fe986d0e6..16159a871 100644 +index fe986d0e6e3f..16159a8716f2 100644 --- a/arch/nds32/include/asm/highmem.h +++ b/arch/nds32/include/asm/highmem.h @@ -5,7 +5,6 @@ @@ -2200,7 +2649,7 @@ index fe986d0e6..16159a871 100644 #endif diff --git a/arch/nds32/mm/Makefile b/arch/nds32/mm/Makefile -index 897ecaf5c..14fb2e8eb 100644 +index 897ecaf5cf54..14fb2e8eb036 100644 --- a/arch/nds32/mm/Makefile +++ b/arch/nds32/mm/Makefile @@ -3,7 +3,6 @@ obj-y := extable.o tlb.o fault.o init.o mmap.o \ @@ -2213,7 +2662,7 @@ index 897ecaf5c..14fb2e8eb 100644 CFLAGS_REMOVE_proc.o = $(CC_FLAGS_FTRACE) diff --git a/arch/nds32/mm/highmem.c b/arch/nds32/mm/highmem.c deleted file mode 100644 -index 4284cd59e..000000000 +index 4284cd59e21a..000000000000 --- a/arch/nds32/mm/highmem.c +++ /dev/null @@ -1,48 +0,0 @@ @@ -2266,7 +2715,7 @@ index 4284cd59e..000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c -index 5e88c351e..f3fa02b88 100644 +index 5e88c351e6a4..f3fa02b8838a 100644 --- a/arch/openrisc/mm/init.c +++ b/arch/openrisc/mm/init.c @@ -33,7 +33,6 @@ @@ -2278,7 +2727,7 @@ index 5e88c351e..f3fa02b88 100644 #include #include diff --git a/arch/openrisc/mm/ioremap.c b/arch/openrisc/mm/ioremap.c -index a978590d8..5aed97a18 100644 +index a978590d802d..5aed97a18bac 100644 --- a/arch/openrisc/mm/ioremap.c +++ b/arch/openrisc/mm/ioremap.c @@ -15,7 +15,6 @@ @@ -2290,7 +2739,7 @@ index a978590d8..5aed97a18 100644 #include #include diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h -index 7f7039516..fad29aa6f 100644 +index 7f7039516e53..fad29aa6f45f 100644 --- a/arch/parisc/include/asm/hardirq.h +++ b/arch/parisc/include/asm/hardirq.h @@ -32,7 +32,6 @@ typedef struct { @@ -2303,7 +2752,7 @@ index 7f7039516..fad29aa6f 100644 #define ack_bad_irq(irq) WARN(1, "unexpected IRQ trap at vector %02x\n", irq) diff --git a/arch/parisc/include/asm/kmap_types.h b/arch/parisc/include/asm/kmap_types.h deleted file mode 100644 -index 3e70b5cd1..000000000 +index 3e70b5cd1123..000000000000 --- a/arch/parisc/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2321,7 +2770,7 @@ index 3e70b5cd1..000000000 - -#endif diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig -index 4e6f30473..42851014e 100644 +index ed06e0c32727..a0cf63581f24 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -146,6 +146,7 @@ config PPC @@ -2357,7 +2806,7 @@ index 4e6f30473..42851014e 100644 source "kernel/Kconfig.hz" diff --git a/arch/powerpc/include/asm/cmpxchg.h b/arch/powerpc/include/asm/cmpxchg.h -index cf091c4c2..7371f7e23 100644 +index cf091c4c22e5..7371f7e23c35 100644 --- a/arch/powerpc/include/asm/cmpxchg.h +++ b/arch/powerpc/include/asm/cmpxchg.h @@ -5,7 +5,7 @@ @@ -2370,7 +2819,7 @@ index cf091c4c2..7371f7e23 100644 #ifdef __BIG_ENDIAN #define BITOFF_CAL(size, off) ((sizeof(u32) - size - off) * BITS_PER_BYTE) diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h -index 897cc6875..a832aeafe 100644 +index 897cc68758d4..a832aeafe560 100644 --- a/arch/powerpc/include/asm/fixmap.h +++ b/arch/powerpc/include/asm/fixmap.h @@ -20,7 +20,7 @@ @@ -2392,7 +2841,7 @@ index 897cc6875..a832aeafe 100644 #ifdef CONFIG_PPC_8xx /* For IMMR we need an aligned 512K area */ diff --git a/arch/powerpc/include/asm/highmem.h b/arch/powerpc/include/asm/highmem.h -index 104026f7d..80a5ae771 100644 +index 104026f7d6bc..80a5ae771c65 100644 --- a/arch/powerpc/include/asm/highmem.h +++ b/arch/powerpc/include/asm/highmem.h @@ -24,12 +24,10 @@ @@ -2422,7 +2871,7 @@ index 104026f7d..80a5ae771 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h deleted file mode 100644 -index c8fa182d4..000000000 +index c8fa182d48c8..000000000000 --- a/arch/powerpc/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -2440,7 +2889,7 @@ index c8fa182d4..000000000 -#endif /* __KERNEL__ */ -#endif /* _ASM_POWERPC_KMAP_TYPES_H */ diff --git a/arch/powerpc/include/asm/simple_spinlock_types.h b/arch/powerpc/include/asm/simple_spinlock_types.h -index 0f3cdd8fa..d45561e9e 100644 +index 0f3cdd8faa95..d45561e9e6ba 100644 --- a/arch/powerpc/include/asm/simple_spinlock_types.h +++ b/arch/powerpc/include/asm/simple_spinlock_types.h @@ -2,7 +2,7 @@ @@ -2453,7 +2902,7 @@ index 0f3cdd8fa..d45561e9e 100644 #endif diff --git a/arch/powerpc/include/asm/spinlock_types.h b/arch/powerpc/include/asm/spinlock_types.h -index c5d742f18..cc6922a01 100644 +index c5d742f18021..cc6922a011ba 100644 --- a/arch/powerpc/include/asm/spinlock_types.h +++ b/arch/powerpc/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -2468,7 +2917,7 @@ index c5d742f18..cc6922a01 100644 #include #include diff --git a/arch/powerpc/include/asm/stackprotector.h b/arch/powerpc/include/asm/stackprotector.h -index 1c8460e23..b1653c160 100644 +index 1c8460e23583..b1653c160bab 100644 --- a/arch/powerpc/include/asm/stackprotector.h +++ b/arch/powerpc/include/asm/stackprotector.h @@ -24,7 +24,11 @@ static __always_inline void boot_init_stack_canary(void) @@ -2484,10 +2933,10 @@ index 1c8460e23..b1653c160 100644 canary ^= LINUX_VERSION_CODE; canary &= CANARY_MASK; diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h -index 28d2908af..22e85007f 100644 +index 7480fbc4d79d..0f7ccf38a014 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h -@@ -48,6 +48,8 @@ +@@ -54,6 +54,8 @@ struct thread_info { int preempt_count; /* 0 => preemptable, <0 => BUG */ @@ -2496,7 +2945,7 @@ index 28d2908af..22e85007f 100644 #ifdef CONFIG_SMP unsigned int cpu; #endif -@@ -100,11 +102,12 @@ void arch_setup_new_exec(void); +@@ -106,11 +108,12 @@ void arch_setup_new_exec(void); #define TIF_SINGLESTEP 8 /* singlestepping active */ #define TIF_NOHZ 9 /* in adaptive nohz mode */ #define TIF_SECCOMP 10 /* secure computing */ @@ -2512,7 +2961,7 @@ index 28d2908af..22e85007f 100644 #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation for stack store? */ #define TIF_MEMDIE 17 /* is terminating due to OOM killer */ -@@ -113,6 +116,9 @@ void arch_setup_new_exec(void); +@@ -119,6 +122,9 @@ void arch_setup_new_exec(void); #endif #define TIF_POLLING_NRFLAG 19 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_32BIT 20 /* 32 bit binary */ @@ -2522,7 +2971,7 @@ index 28d2908af..22e85007f 100644 /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<version = cpu_to_be16(OOPS_HDR_VERSION); diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall_64.c -index 310bcd768..ae3212dcf 100644 +index 310bcd768cd5..ae3212dcf562 100644 --- a/arch/powerpc/kernel/syscall_64.c +++ b/arch/powerpc/kernel/syscall_64.c @@ -193,7 +193,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3, @@ -2816,7 +3265,7 @@ index 310bcd768..ae3212dcf 100644 } diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c -index 1d20f0f77..7e0a497a3 100644 +index 1d20f0f77a92..7e0a497a36ee 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -312,12 +312,11 @@ static unsigned long vtime_delta_scaled(struct cpu_accounting_data *acct, @@ -2914,10 +3363,10 @@ index 1d20f0f77..7e0a497a3 100644 struct cpu_accounting_data *acct) { diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c -index 069d45124..8eaa8c240 100644 +index d2f6b2e30b6a..6a028453f587 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c -@@ -170,7 +170,6 @@ extern void panic_flush_kmsg_start(void) +@@ -173,7 +173,6 @@ extern void panic_flush_kmsg_start(void) extern void panic_flush_kmsg_end(void) { @@ -2925,7 +3374,7 @@ index 069d45124..8eaa8c240 100644 kmsg_dump(KMSG_DUMP_PANIC); bust_spinlocks(0); debug_locks_off(); -@@ -260,12 +259,17 @@ static char *get_mmu_str(void) +@@ -263,12 +262,17 @@ static char *get_mmu_str(void) static int __die(const char *str, struct pt_regs *regs, long err) { @@ -2945,7 +3394,7 @@ index 069d45124..8eaa8c240 100644 IS_ENABLED(CONFIG_SMP) ? (" NR_CPUS=" __stringify(NR_CPUS)) : "", debug_pagealloc_enabled() ? " DEBUG_PAGEALLOC" : "", diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c -index 75b2a6c4d..db40e20d0 100644 +index 75b2a6c4db5a..db40e20d0c54 100644 --- a/arch/powerpc/kernel/watchdog.c +++ b/arch/powerpc/kernel/watchdog.c @@ -185,11 +185,6 @@ static void watchdog_smp_panic(int cpu, u64 tb) @@ -2961,7 +3410,7 @@ index 75b2a6c4d..db40e20d0 100644 trigger_allbutself_cpu_backtrace(); diff --git a/arch/powerpc/kexec/crash.c b/arch/powerpc/kexec/crash.c -index c9a889880..d488311ef 100644 +index c9a889880214..d488311efab1 100644 --- a/arch/powerpc/kexec/crash.c +++ b/arch/powerpc/kexec/crash.c @@ -311,9 +311,6 @@ void default_machine_crash_shutdown(struct pt_regs *regs) @@ -2975,7 +3424,7 @@ index c9a889880..d488311ef 100644 * This function is only called after the system * has panicked or is otherwise in a critical state. diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig -index 549591d9a..efb5bfe93 100644 +index 549591d9aaa2..efb5bfe93f70 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig @@ -178,6 +178,7 @@ config KVM_E500MC @@ -2987,7 +3436,7 @@ index 549591d9a..efb5bfe93 100644 select HAVE_KVM_IRQFD select HAVE_KVM_IRQ_ROUTING diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile -index 55b4a8bd4..3b4e9e4e2 100644 +index 55b4a8bd408a..3b4e9e4e25ea 100644 --- a/arch/powerpc/mm/Makefile +++ b/arch/powerpc/mm/Makefile @@ -16,7 +16,6 @@ obj-$(CONFIG_NEED_MULTIPLE_NODES) += numa.o @@ -3000,7 +3449,7 @@ index 55b4a8bd4..3b4e9e4e2 100644 obj-$(CONFIG_KASAN) += kasan/ diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c deleted file mode 100644 -index 624b4438a..000000000 +index 624b4438aff9..000000000000 --- a/arch/powerpc/mm/highmem.c +++ /dev/null @@ -1,67 +0,0 @@ @@ -3072,7 +3521,7 @@ index 624b4438a..000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c -index 22eb1c718..1b74565b3 100644 +index 22eb1c718e62..1b74565b3e16 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -62,11 +62,6 @@ @@ -3097,7 +3546,7 @@ index 22eb1c718..1b74565b3 100644 printk(KERN_DEBUG "Top of RAM: 0x%llx, Total RAM: 0x%llx\n", diff --git a/arch/powerpc/platforms/powernv/opal-kmsg.c b/arch/powerpc/platforms/powernv/opal-kmsg.c -index 6c3bc4b4d..ec862846b 100644 +index 6c3bc4b4da98..ec862846bc82 100644 --- a/arch/powerpc/platforms/powernv/opal-kmsg.c +++ b/arch/powerpc/platforms/powernv/opal-kmsg.c @@ -20,7 +20,8 @@ @@ -3111,7 +3560,7 @@ index 6c3bc4b4d..ec862846b 100644 /* * Outside of a panic context the pollers will continue to run, diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c -index 245f1f8df..f05555dde 100644 +index 245f1f8df656..f05555dde8e7 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -24,6 +24,7 @@ @@ -3206,7 +3655,7 @@ index 245f1f8df..f05555dde 100644 } diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c -index 5559edf36..d62b8e053 100644 +index 5559edf36756..d62b8e053d4c 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -3005,7 +3005,7 @@ print_address(unsigned long addr) @@ -3231,7 +3680,7 @@ index 5559edf36..d62b8e053 100644 printf("%s", buf); } diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig -index a7e386000..d3ed5b2ae 100644 +index a7e38600096d..d3ed5b2aedc2 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -183,6 +183,7 @@ config S390 @@ -3243,7 +3692,7 @@ index a7e386000..d3ed5b2ae 100644 select IOMMU_SUPPORT if PCI select MODULES_USE_ELF_RELA diff --git a/arch/s390/include/asm/spinlock_types.h b/arch/s390/include/asm/spinlock_types.h -index cfed272e4..8e28e8176 100644 +index cfed272e4fd5..8e28e8176ec8 100644 --- a/arch/s390/include/asm/spinlock_types.h +++ b/arch/s390/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -3258,7 +3707,7 @@ index cfed272e4..8e28e8176 100644 int lock; } __attribute__ ((aligned (4))) arch_spinlock_t; diff --git a/arch/s390/include/asm/vtime.h b/arch/s390/include/asm/vtime.h -index 3622d4ebc..fac6a6798 100644 +index 3622d4ebc73a..fac6a67988eb 100644 --- a/arch/s390/include/asm/vtime.h +++ b/arch/s390/include/asm/vtime.h @@ -2,7 +2,6 @@ @@ -3270,7 +3719,7 @@ index 3622d4ebc..fac6a6798 100644 #endif /* _S390_VTIME_H */ diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c -index 579ec3a8c..9b3c5978b 100644 +index 579ec3a8c816..9b3c5978b668 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c @@ -223,35 +223,50 @@ void vtime_flush(struct task_struct *tsk) @@ -3343,7 +3792,7 @@ index 579ec3a8c..9b3c5978b 100644 * Sorted add to a list. List is linear searched until first bigger * element is found. diff --git a/arch/sh/include/asm/fixmap.h b/arch/sh/include/asm/fixmap.h -index f38adc189..b07fbc7f7 100644 +index f38adc189b83..b07fbc7f7bc6 100644 --- a/arch/sh/include/asm/fixmap.h +++ b/arch/sh/include/asm/fixmap.h @@ -13,9 +13,6 @@ @@ -3369,7 +3818,7 @@ index f38adc189..b07fbc7f7 100644 /* * FIX_IOREMAP entries are useful for mapping physical address diff --git a/arch/sh/include/asm/hardirq.h b/arch/sh/include/asm/hardirq.h -index edaea3559..9fe4495a8 100644 +index edaea3559a23..9fe4495a8e90 100644 --- a/arch/sh/include/asm/hardirq.h +++ b/arch/sh/include/asm/hardirq.h @@ -2,16 +2,10 @@ @@ -3395,7 +3844,7 @@ index edaea3559..9fe4495a8 100644 #endif /* __ASM_SH_HARDIRQ_H */ diff --git a/arch/sh/include/asm/kmap_types.h b/arch/sh/include/asm/kmap_types.h deleted file mode 100644 -index b78107f92..000000000 +index b78107f923dd..000000000000 --- a/arch/sh/include/asm/kmap_types.h +++ /dev/null @@ -1,15 +0,0 @@ @@ -3415,7 +3864,7 @@ index b78107f92..000000000 - -#endif diff --git a/arch/sh/include/asm/spinlock_types.h b/arch/sh/include/asm/spinlock_types.h -index e82369f28..22ca9a98b 100644 +index e82369f286a2..22ca9a98bbb8 100644 --- a/arch/sh/include/asm/spinlock_types.h +++ b/arch/sh/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -3430,7 +3879,7 @@ index e82369f28..22ca9a98b 100644 volatile unsigned int lock; } arch_spinlock_t; diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c -index 5717c7cbd..5db7af565 100644 +index 5717c7cbdd97..5db7af565dec 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c @@ -44,7 +44,7 @@ int arch_show_interrupts(struct seq_file *p, int prec) @@ -3459,7 +3908,7 @@ index 5717c7cbd..5db7af565 100644 static inline void handle_one_irq(unsigned int irq) { diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c -index 9c3d32b80..f5beecdac 100644 +index 9c3d32b80038..f5beecdac693 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c @@ -186,7 +186,7 @@ BUILD_TRAP_HANDLER(nmi) @@ -3472,7 +3921,7 @@ index 9c3d32b80..f5beecdac 100644 switch (notify_die(DIE_NMI, "NMI", regs, 0, vec & 0xff, SIGINT)) { case NOTIFY_OK: diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c -index 3348e0c4d..0db6919af 100644 +index 3348e0c4d769..0db6919af8d3 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c @@ -362,9 +362,6 @@ void __init mem_init(void) @@ -3498,7 +3947,7 @@ index 3348e0c4d..0db6919af 100644 (VMALLOC_END - VMALLOC_START) >> 20, diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig -index 530b7ec5d..a38d00d8b 100644 +index 530b7ec5d3ca..a38d00d8b783 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -139,6 +139,7 @@ config MMU @@ -3510,7 +3959,7 @@ index 530b7ec5d..a38d00d8b 100644 config ZONE_DMA bool diff --git a/arch/sparc/include/asm/highmem.h b/arch/sparc/include/asm/highmem.h -index 6c35f0d27..875116209 100644 +index 6c35f0d27ee1..875116209ec1 100644 --- a/arch/sparc/include/asm/highmem.h +++ b/arch/sparc/include/asm/highmem.h @@ -24,7 +24,6 @@ @@ -3544,7 +3993,7 @@ index 6c35f0d27..875116209 100644 #endif /* _ASM_HIGHMEM_H */ diff --git a/arch/sparc/include/asm/kmap_types.h b/arch/sparc/include/asm/kmap_types.h deleted file mode 100644 -index 55a99b6bd..000000000 +index 55a99b6bd91e..000000000000 --- a/arch/sparc/include/asm/kmap_types.h +++ /dev/null @@ -1,11 +0,0 @@ @@ -3560,7 +4009,7 @@ index 55a99b6bd..000000000 - -#endif diff --git a/arch/sparc/include/asm/vaddrs.h b/arch/sparc/include/asm/vaddrs.h -index 84d054b07..4fec0341e 100644 +index 84d054b07a6f..4fec0341e2a8 100644 --- a/arch/sparc/include/asm/vaddrs.h +++ b/arch/sparc/include/asm/vaddrs.h @@ -32,13 +32,13 @@ @@ -3580,7 +4029,7 @@ index 84d054b07..4fec0341e 100644 __end_of_fixed_addresses }; diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c -index 3ec9f1402..eb21682ab 100644 +index 3ec9f1402aad..eb21682abfcb 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) @@ -3600,7 +4049,7 @@ index 3ec9f1402..eb21682ab 100644 #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile -index b078205b7..68db1f859 100644 +index b078205b70e0..68db1f859b02 100644 --- a/arch/sparc/mm/Makefile +++ b/arch/sparc/mm/Makefile @@ -15,6 +15,3 @@ obj-$(CONFIG_SPARC32) += leon_mm.o @@ -3612,7 +4061,7 @@ index b078205b7..68db1f859 100644 -obj-$(CONFIG_HIGHMEM) += highmem.o diff --git a/arch/sparc/mm/highmem.c b/arch/sparc/mm/highmem.c deleted file mode 100644 -index 8f2a2afb0..000000000 +index 8f2a2afb048a..000000000000 --- a/arch/sparc/mm/highmem.c +++ /dev/null @@ -1,115 +0,0 @@ @@ -3732,7 +4181,7 @@ index 8f2a2afb0..000000000 -} -EXPORT_SYMBOL(kunmap_atomic_high); diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c -index 0070f8b9a..a03caa5f6 100644 +index 0070f8b9a753..a03caa5f6628 100644 --- a/arch/sparc/mm/srmmu.c +++ b/arch/sparc/mm/srmmu.c @@ -971,8 +971,6 @@ void __init srmmu_paging_init(void) @@ -3745,7 +4194,7 @@ index 0070f8b9a..a03caa5f6 100644 unsigned long max_zone_pfn[MAX_NR_ZONES] = { 0 }; diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h -index 2c697a145..2efac5827 100644 +index 2c697a145ac1..2efac5827188 100644 --- a/arch/um/include/asm/fixmap.h +++ b/arch/um/include/asm/fixmap.h @@ -3,7 +3,6 @@ @@ -3757,7 +4206,7 @@ index 2c697a145..2efac5827 100644 #include #include diff --git a/arch/um/include/asm/hardirq.h b/arch/um/include/asm/hardirq.h -index b426796d2..52e2c3626 100644 +index b426796d26fd..52e2c36267a9 100644 --- a/arch/um/include/asm/hardirq.h +++ b/arch/um/include/asm/hardirq.h @@ -2,22 +2,7 @@ @@ -3786,7 +4235,7 @@ index b426796d2..52e2c3626 100644 diff --git a/arch/um/include/asm/kmap_types.h b/arch/um/include/asm/kmap_types.h deleted file mode 100644 -index b0bd12de1..000000000 +index b0bd12de1d23..000000000000 --- a/arch/um/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -3804,7 +4253,7 @@ index b0bd12de1..000000000 - -#endif diff --git a/arch/um/kernel/kmsg_dump.c b/arch/um/kernel/kmsg_dump.c -index e4abac6c9..173999422 100644 +index e4abac6c9727..173999422ed8 100644 --- a/arch/um/kernel/kmsg_dump.c +++ b/arch/um/kernel/kmsg_dump.c @@ -1,15 +1,19 @@ @@ -3847,7 +4296,7 @@ index e4abac6c9..173999422 100644 static struct kmsg_dumper kmsg_dumper = { diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 040fb7736..79c0da581 100644 +index c5fda7ab3b08..649c5bdc96ee 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -16,6 +16,7 @@ config X86_32 @@ -3866,7 +4315,7 @@ index 040fb7736..79c0da581 100644 select ARCH_USE_BUILTIN_BSWAP select ARCH_USE_QUEUED_RWLOCKS select ARCH_USE_QUEUED_SPINLOCKS -@@ -216,6 +218,7 @@ config X86 +@@ -217,6 +219,7 @@ config X86 select HAVE_PCI select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -3875,7 +4324,7 @@ index 040fb7736..79c0da581 100644 select HAVE_POSIX_CPU_TIMERS_TASK_WORK select HAVE_REGS_AND_STACK_ACCESS_API diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c -index be891fdf8..29c716ed1 100644 +index be891fdf8d17..29c716ed103f 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c @@ -379,14 +379,14 @@ static int ecb_encrypt(struct skcipher_request *req) @@ -3970,7 +4419,7 @@ index be891fdf8..29c716ed1 100644 return err; } diff --git a/arch/x86/crypto/cast5_avx_glue.c b/arch/x86/crypto/cast5_avx_glue.c -index 384ccb00f..2f8df8ef8 100644 +index 384ccb00f9e1..2f8df8ef8644 100644 --- a/arch/x86/crypto/cast5_avx_glue.c +++ b/arch/x86/crypto/cast5_avx_glue.c @@ -46,7 +46,7 @@ static inline void cast5_fpu_end(bool fpu_enabled) @@ -4053,7 +4502,7 @@ index 384ccb00f..2f8df8ef8 100644 ctr_crypt_final(&walk, ctx); err = skcipher_walk_done(&walk, 0); diff --git a/arch/x86/crypto/glue_helper.c b/arch/x86/crypto/glue_helper.c -index d3d91a0ab..6d0774721 100644 +index d3d91a0abf88..6d0774721514 100644 --- a/arch/x86/crypto/glue_helper.c +++ b/arch/x86/crypto/glue_helper.c @@ -24,7 +24,7 @@ int glue_ecb_req_128bit(const struct common_glue_ctx *gctx, @@ -4163,7 +4612,7 @@ index d3d91a0ab..6d0774721 100644 nbytes = walk.nbytes; } diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h -index 77217bd29..8eba66a33 100644 +index 77217bd292bd..8eba66a33e39 100644 --- a/arch/x86/include/asm/fixmap.h +++ b/arch/x86/include/asm/fixmap.h @@ -31,7 +31,7 @@ @@ -4193,7 +4642,7 @@ index 77217bd29..8eba66a33 100644 void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h -index 8b9bfaad6..d31b08865 100644 +index 8b9bfaad6e66..d31b0886592a 100644 --- a/arch/x86/include/asm/fpu/api.h +++ b/arch/x86/include/asm/fpu/api.h @@ -28,6 +28,7 @@ extern void kernel_fpu_begin_mask(unsigned int kfpu_mask); @@ -4242,7 +4691,7 @@ index 8b9bfaad6..d31b08865 100644 #ifdef CONFIG_X86_DEBUG_FPU diff --git a/arch/x86/include/asm/highmem.h b/arch/x86/include/asm/highmem.h -index 0f420b24e..032e02085 100644 +index 0f420b24e0fc..032e020853aa 100644 --- a/arch/x86/include/asm/highmem.h +++ b/arch/x86/include/asm/highmem.h @@ -23,7 +23,6 @@ @@ -4275,7 +4724,7 @@ index 0f420b24e..032e02085 100644 unsigned long end_pfn); diff --git a/arch/x86/include/asm/iomap.h b/arch/x86/include/asm/iomap.h -index bacf68c4d..e2de092fc 100644 +index bacf68c4d70e..e2de092fc38c 100644 --- a/arch/x86/include/asm/iomap.h +++ b/arch/x86/include/asm/iomap.h @@ -9,19 +9,14 @@ @@ -4304,7 +4753,7 @@ index bacf68c4d..e2de092fc 100644 #endif /* _ASM_X86_IOMAP_H */ diff --git a/arch/x86/include/asm/kmap_types.h b/arch/x86/include/asm/kmap_types.h deleted file mode 100644 -index 04ab8266e..000000000 +index 04ab8266e347..000000000000 --- a/arch/x86/include/asm/kmap_types.h +++ /dev/null @@ -1,13 +0,0 @@ @@ -4322,7 +4771,7 @@ index 04ab8266e..000000000 - -#endif /* _ASM_X86_KMAP_TYPES_H */ diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h -index b30b56d47..9632218bf 100644 +index b30b56d47619..9632218bfd41 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -43,7 +43,6 @@ @@ -4334,7 +4783,7 @@ index b30b56d47..9632218bf 100644 #include diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h -index 2380df419..a3b73de27 100644 +index 2380df419a82..a3b73de276c3 100644 --- a/arch/x86/include/asm/preempt.h +++ b/arch/x86/include/asm/preempt.h @@ -90,21 +90,54 @@ static __always_inline void __preempt_count_sub(int val) @@ -4395,7 +4844,7 @@ index 2380df419..a3b73de27 100644 extern asmlinkage void preempt_schedule_thunk(void); diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h -index 6fd8410a3..f3bf2f515 100644 +index 6fd8410a3910..f3bf2f515edb 100644 --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -28,6 +28,19 @@ typedef struct { @@ -4419,7 +4868,7 @@ index 6fd8410a3..f3bf2f515 100644 typedef sigset_t compat_sigset_t; #endif diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h -index 7fb482f0f..3df0a95c9 100644 +index 7fb482f0f25b..3df0a95c9e13 100644 --- a/arch/x86/include/asm/stackprotector.h +++ b/arch/x86/include/asm/stackprotector.h @@ -65,7 +65,7 @@ @@ -4447,7 +4896,7 @@ index 7fb482f0f..3df0a95c9 100644 canary += tsc + (tsc << 32UL); canary &= CANARY_MASK; diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h -index a225c6e2c..414c90f04 100644 +index a225c6e2ca6d..414c90f04bc3 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h @@ -60,6 +60,8 @@ struct thread_info { @@ -4502,26 +4951,8 @@ index a225c6e2c..414c90f04 100644 #define STACK_WARN (THREAD_SIZE/8) /* -diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 65d11711c..180981654 100644 ---- a/arch/x86/kernel/cpu/mshyperv.c -+++ b/arch/x86/kernel/cpu/mshyperv.c -@@ -80,11 +80,12 @@ EXPORT_SYMBOL_GPL(hv_remove_vmbus_irq); - DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_stimer0) - { - struct pt_regs *old_regs = set_irq_regs(regs); -+ u64 ip = regs ? instruction_pointer(regs) : 0; - - inc_irq_stat(hyperv_stimer0_count); - if (hv_stimer0_handler) - hv_stimer0_handler(); -- add_interrupt_randomness(HYPERV_STIMER0_VECTOR, 0); -+ add_interrupt_randomness(HYPERV_STIMER0_VECTOR, 0, ip); - ack_APIC_irq(); - - set_irq_regs(old_regs); diff --git a/arch/x86/kernel/crash_dump_32.c b/arch/x86/kernel/crash_dump_32.c -index 33ee47670..5fcac46aa 100644 +index 33ee47670b99..5fcac46aaf6b 100644 --- a/arch/x86/kernel/crash_dump_32.c +++ b/arch/x86/kernel/crash_dump_32.c @@ -13,8 +13,6 @@ @@ -4599,7 +5030,7 @@ index 33ee47670..5fcac46aa 100644 } -arch_initcall(kdump_buf_page_init); diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c -index 571220ac8..d315d45b6 100644 +index 571220ac8bea..d315d45b64fa 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -159,6 +159,18 @@ void kernel_fpu_end(void) @@ -4622,7 +5053,7 @@ index 571220ac8..d315d45b6 100644 * Save the FPU state (mark it for reload if necessary): * diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c -index 0b79efc87..93c6b88b3 100644 +index 0b79efc87be5..93c6b88b382a 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -131,6 +131,7 @@ int irq_init_percpu_irqstack(unsigned int cpu) @@ -4642,7 +5073,7 @@ index 0b79efc87..93c6b88b3 100644 void __handle_irq(struct irq_desc *desc, struct pt_regs *regs) { diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c -index 440eed558..7cfc4e6b7 100644 +index 440eed558558..7cfc4e6b7c94 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -72,7 +72,9 @@ int irq_init_percpu_irqstack(unsigned int cpu) @@ -4656,10 +5087,10 @@ index 440eed558..7cfc4e6b7 100644 } +#endif diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 92b3c3748..8a6affc62 100644 +index 3ca342670e64..1b3e789ec42f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -8038,6 +8038,14 @@ int kvm_arch_init(void *opaque) +@@ -8094,6 +8094,14 @@ int kvm_arch_init(void *opaque) goto out; } @@ -4675,7 +5106,7 @@ index 92b3c3748..8a6affc62 100644 x86_fpu_cache = kmem_cache_create("x86_fpu", sizeof(struct fpu), __alignof__(struct fpu), SLAB_ACCOUNT, diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c -index 075fe5131..2c54b76d8 100644 +index 075fe51317b0..2c54b76d8f84 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c @@ -4,65 +4,6 @@ @@ -4745,7 +5176,7 @@ index 075fe5131..2c54b76d8 100644 { struct zone *zone; diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c -index 7c055259d..da31c2635 100644 +index 7c055259de3a..da31c2635ee4 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -394,19 +394,6 @@ kernel_physical_mapping_init(unsigned long start, @@ -4778,7 +5209,7 @@ index 7c055259d..da31c2635 100644 * NOTE: at this point the bootmem allocator is fully available. */ diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c -index f60398aeb..9aaa756dd 100644 +index f60398aeb644..9aaa756ddf21 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c @@ -44,28 +44,7 @@ void iomap_free(resource_size_t base, unsigned long size) @@ -4851,7 +5282,7 @@ index f60398aeb..9aaa756dd 100644 -EXPORT_SYMBOL_GPL(iounmap_atomic); +EXPORT_SYMBOL_GPL(__iomap_local_pfn_prot); diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig -index 87e08ad38..03cbf6b53 100644 +index 87e08ad38ea7..03cbf6b53622 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -666,6 +666,7 @@ endchoice @@ -4863,7 +5294,7 @@ index 87e08ad38..03cbf6b53 100644 Linux can use the full amount of RAM in the system by default. However, the default MMUv2 setup only maps the diff --git a/arch/xtensa/include/asm/fixmap.h b/arch/xtensa/include/asm/fixmap.h -index a06ffb0c6..92049b61c 100644 +index a06ffb0c61c7..92049b61c351 100644 --- a/arch/xtensa/include/asm/fixmap.h +++ b/arch/xtensa/include/asm/fixmap.h @@ -16,7 +16,7 @@ @@ -4885,7 +5316,7 @@ index a06ffb0c6..92049b61c 100644 __end_of_fixed_addresses }; diff --git a/arch/xtensa/include/asm/highmem.h b/arch/xtensa/include/asm/highmem.h -index eac503215..0fc3b1ceb 100644 +index eac503215f17..0fc3b1cebc56 100644 --- a/arch/xtensa/include/asm/highmem.h +++ b/arch/xtensa/include/asm/highmem.h @@ -16,9 +16,8 @@ @@ -4916,7 +5347,7 @@ index eac503215..0fc3b1ceb 100644 #endif diff --git a/arch/xtensa/include/asm/spinlock_types.h b/arch/xtensa/include/asm/spinlock_types.h -index 64c938925..dc846323b 100644 +index 64c9389254f1..dc846323b1cd 100644 --- a/arch/xtensa/include/asm/spinlock_types.h +++ b/arch/xtensa/include/asm/spinlock_types.h @@ -2,10 +2,6 @@ @@ -4931,7 +5362,7 @@ index 64c938925..dc846323b 100644 #include diff --git a/arch/xtensa/mm/highmem.c b/arch/xtensa/mm/highmem.c -index 673196fe8..0735ca5e8 100644 +index 673196fe862e..0735ca5e8f86 100644 --- a/arch/xtensa/mm/highmem.c +++ b/arch/xtensa/mm/highmem.c @@ -12,8 +12,6 @@ @@ -5009,7 +5440,7 @@ index 673196fe8..0735ca5e8 100644 kmap_waitqueues_init(); } diff --git a/block/blk-mq.c b/block/blk-mq.c -index 41885145e..d1fb336f3 100644 +index b9827b3d3f63..f87ec8c465f6 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -44,7 +44,7 @@ @@ -5021,7 +5452,7 @@ index 41885145e..d1fb336f3 100644 static void blk_mq_poll_stats_start(struct request_queue *q); static void blk_mq_poll_stats_fn(struct blk_stat_callback *cb); -@@ -590,80 +590,29 @@ void blk_mq_end_request(struct request *rq, blk_status_t error) +@@ -646,80 +646,29 @@ void blk_mq_end_request(struct request *rq, blk_status_t error) } EXPORT_SYMBOL(blk_mq_end_request); @@ -5110,7 +5541,7 @@ index 41885145e..d1fb336f3 100644 } static inline bool blk_mq_complete_need_ipi(struct request *rq) -@@ -673,6 +622,14 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq) +@@ -729,6 +678,14 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq) if (!IS_ENABLED(CONFIG_SMP) || !test_bit(QUEUE_FLAG_SAME_COMP, &rq->q->queue_flags)) return false; @@ -5125,7 +5556,7 @@ index 41885145e..d1fb336f3 100644 /* same CPU or cache domain? Complete locally */ if (cpu == rq->mq_ctx->cpu || -@@ -684,6 +641,31 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq) +@@ -740,6 +697,31 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq) return cpu_online(rq->mq_ctx->cpu); } @@ -5157,7 +5588,7 @@ index 41885145e..d1fb336f3 100644 bool blk_mq_complete_request_remote(struct request *rq) { WRITE_ONCE(rq->state, MQ_RQ_COMPLETE); -@@ -696,15 +678,15 @@ bool blk_mq_complete_request_remote(struct request *rq) +@@ -752,15 +734,15 @@ bool blk_mq_complete_request_remote(struct request *rq) return false; if (blk_mq_complete_need_ipi(rq)) { @@ -5180,7 +5611,7 @@ index 41885145e..d1fb336f3 100644 } EXPORT_SYMBOL_GPL(blk_mq_complete_request_remote); -@@ -1617,14 +1599,14 @@ static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async, +@@ -1674,14 +1656,14 @@ static void __blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async, return; if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) { @@ -5198,7 +5629,7 @@ index 41885145e..d1fb336f3 100644 } /* -@@ -4114,7 +4096,7 @@ static int __init blk_mq_init(void) +@@ -4172,7 +4154,7 @@ static int __init blk_mq_init(void) int i; for_each_possible_cpu(i) @@ -5208,7 +5639,7 @@ index 41885145e..d1fb336f3 100644 cpuhp_setup_state_nocalls(CPUHP_BLOCK_SOFTIRQ_DEAD, diff --git a/crypto/cryptd.c b/crypto/cryptd.c -index a1bea0f4b..5f8ca8c1f 100644 +index 668095eca0fa..02ea3d0fe51d 100644 --- a/crypto/cryptd.c +++ b/crypto/cryptd.c @@ -36,6 +36,7 @@ static struct workqueue_struct *cryptd_wq; @@ -5219,7 +5650,7 @@ index a1bea0f4b..5f8ca8c1f 100644 }; struct cryptd_queue { -@@ -105,6 +106,7 @@ static int cryptd_init_queue(struct cryptd_queue *queue, +@@ -109,6 +110,7 @@ static int cryptd_init_queue(struct cryptd_queue *queue, cpu_queue = per_cpu_ptr(queue->cpu_queue, cpu); crypto_init_queue(&cpu_queue->queue, max_cpu_qlen); INIT_WORK(&cpu_queue->work, cryptd_queue_worker); @@ -5227,49 +5658,44 @@ index a1bea0f4b..5f8ca8c1f 100644 } pr_info("cryptd: max_cpu_qlen set to %d\n", max_cpu_qlen); return 0; -@@ -129,8 +131,10 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, +@@ -133,8 +135,10 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, struct cryptd_cpu_queue *cpu_queue; refcount_t *refcnt; -- cpu = get_cpu(); +- local_bh_disable(); - cpu_queue = this_cpu_ptr(queue->cpu_queue); + cpu_queue = raw_cpu_ptr(queue->cpu_queue); + spin_lock_bh(&cpu_queue->qlock); -+ cpu = smp_processor_id(); ++ // cpu = smp_processor_id(); + err = crypto_enqueue_request(&cpu_queue->queue, request); refcnt = crypto_tfm_ctx(request->tfm); -@@ -146,7 +150,7 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, +@@ -150,7 +154,7 @@ static int cryptd_enqueue_request(struct cryptd_queue *queue, refcount_inc(refcnt); - out_put_cpu: -- put_cpu(); + out: +- local_bh_enable(); + spin_unlock_bh(&cpu_queue->qlock); return err; } -@@ -162,16 +166,11 @@ static void cryptd_queue_worker(struct work_struct *work) - cpu_queue = container_of(work, struct cryptd_cpu_queue, work); +@@ -167,10 +171,11 @@ static void cryptd_queue_worker(struct work_struct *work) /* * Only handle one request at a time to avoid hogging crypto workqueue. -- * preempt_disable/enable is used to prevent being preempted by -- * cryptd_enqueue_request(). local_bh_disable/enable is used to prevent -- * cryptd_enqueue_request() being accessed from software interrupts. */ - local_bh_disable(); -- preempt_disable(); + spin_lock_bh(&cpu_queue->qlock); backlog = crypto_get_backlog(&cpu_queue->queue); req = crypto_dequeue_request(&cpu_queue->queue); -- preempt_enable(); - local_bh_enable(); + spin_unlock_bh(&cpu_queue->qlock); ++ if (!req) return; diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c -index 9fcc49be4..a31ffe16e 100644 +index 9fcc49be499f..a31ffe16e626 100644 --- a/drivers/atm/eni.c +++ b/drivers/atm/eni.c @@ -2056,7 +2056,7 @@ static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb) @@ -5282,7 +5708,7 @@ index 9fcc49be4..a31ffe16e 100644 tasklet_enable(&ENI_DEV(vcc->dev)->task); if (res == enq_ok) return 0; diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c -index 0636df6b6..1a7523cef 100644 +index 0636df6b67db..1a7523cefbe9 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -59,6 +59,40 @@ static void zram_free_page(struct zram *zram, size_t index); @@ -5343,7 +5769,7 @@ index 0636df6b6..1a7523cef 100644 } diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h -index f2fd46daa..7e4dd447e 100644 +index f2fd46daa760..7e4dd447e1dd 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -63,6 +63,7 @@ struct zram_table_entry { @@ -5354,46 +5780,8 @@ index f2fd46daa..7e4dd447e 100644 #ifdef CONFIG_ZRAM_MEMORY_TRACKING ktime_t ac_time; #endif -diff --git a/drivers/char/random.c b/drivers/char/random.c -index 8f29cbc08..2cf5ba921 100644 ---- a/drivers/char/random.c -+++ b/drivers/char/random.c -@@ -1272,28 +1272,27 @@ static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs) - return *ptr; - } - --void add_interrupt_randomness(int irq, int irq_flags) -+void add_interrupt_randomness(int irq, int irq_flags, __u64 ip) - { - struct entropy_store *r; - struct fast_pool *fast_pool = this_cpu_ptr(&irq_randomness); -- struct pt_regs *regs = get_irq_regs(); - unsigned long now = jiffies; - cycles_t cycles = random_get_entropy(); - __u32 c_high, j_high; -- __u64 ip; - unsigned long seed; - int credit = 0; - - if (cycles == 0) -- cycles = get_reg(fast_pool, regs); -+ cycles = get_reg(fast_pool, NULL); - c_high = (sizeof(cycles) > 4) ? cycles >> 32 : 0; - j_high = (sizeof(now) > 4) ? now >> 32 : 0; - fast_pool->pool[0] ^= cycles ^ j_high ^ irq; - fast_pool->pool[1] ^= now ^ c_high; -- ip = regs ? instruction_pointer(regs) : _RET_IP_; -+ if (!ip) -+ ip = _RET_IP_; - fast_pool->pool[2] ^= ip; - fast_pool->pool[3] ^= (sizeof(ip) > 4) ? ip >> 32 : -- get_reg(fast_pool, regs); -+ get_reg(fast_pool, NULL); - - fast_mix(fast_pool); - add_interrupt_bench(cycles); diff --git a/drivers/char/tpm/tpm-dev-common.c b/drivers/char/tpm/tpm-dev-common.c -index 1784530b8..c08cbb306 100644 +index b99e1941c52c..dc4c0a0a5129 100644 --- a/drivers/char/tpm/tpm-dev-common.c +++ b/drivers/char/tpm/tpm-dev-common.c @@ -20,7 +20,6 @@ @@ -5405,7 +5793,7 @@ index 1784530b8..c08cbb306 100644 static ssize_t tpm_dev_transmit(struct tpm_chip *chip, struct tpm_space *space, u8 *buf, size_t bufsiz) diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c -index 4ed6e6602..c2bd0d40b 100644 +index 4ed6e660273a..c2bd0d40b5fc 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c @@ -50,6 +50,31 @@ static inline struct tpm_tis_tcg_phy *to_tpm_tis_tcg_phy(struct tpm_tis_data *da @@ -5459,7 +5847,7 @@ index 4ed6e6602..c2bd0d40b 100644 return 0; } diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c -index 9811c4095..17c9d8251 100644 +index 9811c40956e5..17c9d825188b 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -2545,7 +2545,7 @@ static int ohci_cancel_packet(struct fw_card *card, struct fw_packet *packet) @@ -5481,7 +5869,7 @@ index 9811c4095..17c9d8251 100644 if (!test_and_set_bit_lock(0, &ctx->flushing_completions)) { context_tasklet((unsigned long)&ctx->context); diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index c406de008..7792bca9e 100644 +index c406de00883a..7792bca9ee76 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -66,7 +66,7 @@ struct mm_struct efi_mm = { @@ -5504,7 +5892,7 @@ index c406de008..7792bca9e 100644 set_bit(EFI_MEM_NO_SOFT_RESERVE, &efi.flags); diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c -index 12f7128b7..a65061e3e 100644 +index 12f7128b777f..a65061e3e1d3 100644 --- a/drivers/gpu/drm/i915/display/intel_sprite.c +++ b/drivers/gpu/drm/i915/display/intel_sprite.c @@ -118,7 +118,8 @@ void intel_pipe_update_start(const struct intel_crtc_state *new_crtc_state) @@ -5554,7 +5942,7 @@ index 12f7128b7..a65061e3e 100644 if (intel_vgpu_active(dev_priv)) return; diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c -index 0c083af5a..2abf043d3 100644 +index 0c083af5a59d..2abf043d3d9d 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1080,7 +1080,7 @@ static void reloc_cache_reset(struct reloc_cache *cache, struct i915_execbuffer @@ -5586,7 +5974,7 @@ index 0c083af5a..2abf043d3 100644 cache->vaddr = (unsigned long)vaddr; diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c -index 0040b4765..3f4f85478 100644 +index 0040b4765a54..3f4f854786f2 100644 --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c @@ -342,10 +342,9 @@ void intel_breadcrumbs_park(struct intel_breadcrumbs *b) @@ -5603,7 +5991,7 @@ index 0040b4765..3f4f85478 100644 GEM_BUG_ON(!list_empty(&b->signalers)); } diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c b/drivers/gpu/drm/i915/gt/intel_engine_pm.c -index f7b2e07e2..313d8a28e 100644 +index f7b2e07e2229..313d8a28e776 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c @@ -60,9 +60,10 @@ static int __engine_unpark(struct intel_wakeref *wf) @@ -5630,7 +6018,7 @@ index f7b2e07e2..313d8a28e 100644 #else diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c -index 58276694c..88944c3b1 100644 +index 58276694c848..88944c3b1bc8 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -355,22 +355,15 @@ gtt_user_read(struct io_mapping *mapping, @@ -5692,7 +6080,7 @@ index 58276694c..88944c3b1 100644 /** diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c -index 759f523c6..7339a42ab 100644 +index 759f523c6a6b..7339a42ab2b8 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -847,6 +847,7 @@ static bool i915_get_crtc_scanoutpos(struct drm_crtc *_crtc, @@ -5712,7 +6100,7 @@ index 759f523c6..7339a42ab 100644 spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags); diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h -index a4addcc64..396b65986 100644 +index a4addcc64978..396b6598694d 100644 --- a/drivers/gpu/drm/i915/i915_trace.h +++ b/drivers/gpu/drm/i915/i915_trace.h @@ -2,6 +2,10 @@ @@ -5736,7 +6124,7 @@ index a4addcc64..396b65986 100644 TP_PROTO(struct i915_request *rq), TP_ARGS(rq) diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c b/drivers/gpu/drm/i915/selftests/i915_gem.c -index 412e21604..432493183 100644 +index 412e21604a05..432493183d20 100644 --- a/drivers/gpu/drm/i915/selftests/i915_gem.c +++ b/drivers/gpu/drm/i915/selftests/i915_gem.c @@ -57,12 +57,12 @@ static void trash_stolen(struct drm_i915_private *i915) @@ -5755,7 +6143,7 @@ index 412e21604..432493183 100644 ggtt->vm.clear_range(&ggtt->vm, slot, PAGE_SIZE); diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c -index 65e28c4cd..ca483285f 100644 +index 65e28c4cd4ce..ca483285f267 100644 --- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c @@ -1201,9 +1201,9 @@ static int igt_ggtt_page(void *arg) @@ -5783,7 +6171,7 @@ index 65e28c4cd..ca483285f 100644 if (val != n) { pr_err("insert page failed: found %d, expected %d\n", diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h -index 6c5bbff12..411f91ee2 100644 +index 6c5bbff12eb4..411f91ee20fa 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h @@ -60,19 +60,19 @@ fbmem_fini(struct io_mapping *fb) @@ -5811,7 +6199,7 @@ index 6c5bbff12..411f91ee2 100644 static inline bool diff --git a/drivers/gpu/drm/qxl/qxl_image.c b/drivers/gpu/drm/qxl/qxl_image.c -index 60ab7151b..93f92ccd4 100644 +index 60ab7151b84d..93f92ccd42e5 100644 --- a/drivers/gpu/drm/qxl/qxl_image.c +++ b/drivers/gpu/drm/qxl/qxl_image.c @@ -124,12 +124,12 @@ qxl_image_init_helper(struct qxl_device *qdev, @@ -5888,7 +6276,7 @@ index 60ab7151b..93f92ccd4 100644 return 0; } diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c -index 5cea6eea7..785023081 100644 +index 5cea6eea72ab..785023081b79 100644 --- a/drivers/gpu/drm/qxl/qxl_ioctl.c +++ b/drivers/gpu/drm/qxl/qxl_ioctl.c @@ -89,11 +89,11 @@ apply_reloc(struct qxl_device *qdev, struct qxl_reloc_info *info) @@ -5957,7 +6345,7 @@ index 5cea6eea7..785023081 100644 } diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c -index 544a9e4df..5ee5171d4 100644 +index 544a9e4df2a8..5ee5171d46ef 100644 --- a/drivers/gpu/drm/qxl/qxl_object.c +++ b/drivers/gpu/drm/qxl/qxl_object.c @@ -173,8 +173,8 @@ int qxl_bo_kmap(struct qxl_bo *bo, void **ptr) @@ -5999,7 +6387,7 @@ index 544a9e4df..5ee5171d4 100644 fallback: qxl_bo_kunmap(bo); diff --git a/drivers/gpu/drm/qxl/qxl_object.h b/drivers/gpu/drm/qxl/qxl_object.h -index 5762ea40d..6ae89b1b3 100644 +index 5762ea40d047..6ae89b1b36f4 100644 --- a/drivers/gpu/drm/qxl/qxl_object.h +++ b/drivers/gpu/drm/qxl/qxl_object.h @@ -89,8 +89,8 @@ extern int qxl_bo_create(struct qxl_device *qdev, @@ -6014,7 +6402,7 @@ index 5762ea40d..6ae89b1b3 100644 extern void qxl_bo_unref(struct qxl_bo **bo); extern int qxl_bo_pin(struct qxl_bo *bo); diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c -index b2a475a0c..b665a33b4 100644 +index b2a475a0ca4a..b665a33b449b 100644 --- a/drivers/gpu/drm/qxl/qxl_release.c +++ b/drivers/gpu/drm/qxl/qxl_release.c @@ -414,7 +414,7 @@ union qxl_release_info *qxl_release_map(struct qxl_device *qdev, @@ -6036,7 +6424,7 @@ index b2a475a0c..b665a33b4 100644 void qxl_release_fence_buffer_objects(struct qxl_release *release) diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c -index 07d23a1e6..add8e6044 100644 +index 07d23a1e62a0..add8e60440b2 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c @@ -1828,6 +1828,7 @@ int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, @@ -6056,7 +6444,7 @@ index 07d23a1e6..add8e6044 100644 /* Decode into vertical and horizontal scanout position. */ *vpos = position & 0x1fff; diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c -index fb2a25f84..164b9a015 100644 +index fb2a25f8408f..164b9a015d32 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -181,13 +181,15 @@ static int ttm_copy_io_ttm_page(struct ttm_tt *ttm, void *src, @@ -6100,7 +6488,7 @@ index fb2a25f84..164b9a015 100644 return 0; } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c -index e8d66182c..71dba228f 100644 +index e8d66182cd7b..71dba228f68e 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c @@ -375,12 +375,12 @@ static int vmw_bo_cpu_blit_line(struct vmw_bo_blit_line_data *d, @@ -6174,7 +6562,7 @@ index e8d66182c..71dba228f 100644 return ret; } diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h -index 7845fa5de..043e058bb 100644 +index 7845fa5de79e..043e058bb27c 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -19,6 +19,7 @@ @@ -6186,7 +6574,7 @@ index 7845fa5de..043e058bb 100644 #include "hv_trace.h" diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index 362da2a83..3dd429a5e 100644 +index 5d820037e291..ef5e12364119 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -22,6 +22,7 @@ @@ -6206,15 +6594,6 @@ index 362da2a83..3dd429a5e 100644 bool handled = false; if (unlikely(page_addr == NULL)) -@@ -1351,7 +1354,7 @@ static void vmbus_isr(void) - tasklet_schedule(&hv_cpu->msg_dpc); - } - -- add_interrupt_randomness(hv_get_vector(), 0); -+ add_interrupt_randomness(hv_get_vector(), 0, ip); - } - - /* @@ -1359,7 +1362,8 @@ static void vmbus_isr(void) * buffer and call into Hyper-V to transfer the data. */ @@ -6235,7 +6614,7 @@ index 362da2a83..3dd429a5e 100644 if (bytes_written) hyperv_report_panic_msg(panic_pa, bytes_written); diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig -index ce9429ca6..29ccbd6ac 100644 +index ce9429ca6dde..29ccbd6acf43 100644 --- a/drivers/leds/trigger/Kconfig +++ b/drivers/leds/trigger/Kconfig @@ -64,6 +64,7 @@ config LEDS_TRIGGER_BACKLIGHT @@ -6247,7 +6626,7 @@ index ce9429ca6..29ccbd6ac 100644 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 --git a/drivers/md/raid5.c b/drivers/md/raid5.c -index c82953a32..061fea763 100644 +index ce1adb6a53b1..1d5d03b8fbc5 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2217,8 +2217,9 @@ static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request) @@ -6271,7 +6650,7 @@ index c82953a32..061fea763 100644 } static void free_stripe(struct kmem_cache *sc, struct stripe_head *sh) -@@ -7099,6 +7101,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) +@@ -7089,6 +7091,7 @@ static int raid456_cpu_up_prepare(unsigned int cpu, struct hlist_node *node) __func__, cpu); return -ENOMEM; } @@ -6280,7 +6659,7 @@ index c82953a32..061fea763 100644 } diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h -index 5c05acf20..665fe138a 100644 +index 5c05acf20e1f..665fe138ab4f 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -635,6 +635,7 @@ struct r5conf { @@ -6292,7 +6671,7 @@ index 5c05acf20..665fe138a 100644 void *scribble; /* space for constructing buffer * lists and performing address diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c -index 774970bfc..6bc2c728a 100644 +index 774970bfcf85..6bc2c728adb7 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c @@ -267,7 +267,8 @@ static void find_next_position(struct mtdoops_context *cxt) @@ -6315,7 +6694,7 @@ index 774970bfc..6bc2c728a 100644 if (reason != KMSG_DUMP_OOPS) { diff --git a/drivers/net/arcnet/arc-rimi.c b/drivers/net/arcnet/arc-rimi.c -index 98df38fe5..12d085405 100644 +index 98df38fe553c..12d085405bd0 100644 --- a/drivers/net/arcnet/arc-rimi.c +++ b/drivers/net/arcnet/arc-rimi.c @@ -332,7 +332,7 @@ static int __init arc_rimi_init(void) @@ -6337,7 +6716,7 @@ index 98df38fe5..12d085405 100644 #ifndef MODULE diff --git a/drivers/net/arcnet/arcdevice.h b/drivers/net/arcnet/arcdevice.h -index 22a49c6d7..5d4a4c7ef 100644 +index 22a49c6d7ae6..5d4a4c7efbbf 100644 --- a/drivers/net/arcnet/arcdevice.h +++ b/drivers/net/arcnet/arcdevice.h @@ -298,6 +298,10 @@ struct arcnet_local { @@ -6362,7 +6741,7 @@ index 22a49c6d7..5d4a4c7ef 100644 int arcnet_open(struct net_device *dev); int arcnet_close(struct net_device *dev); diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c -index e04efc0a5..d76dd7d14 100644 +index e04efc0a5c97..d76dd7d14299 100644 --- a/drivers/net/arcnet/arcnet.c +++ b/drivers/net/arcnet/arcnet.c @@ -387,10 +387,44 @@ static void arcnet_timer(struct timer_list *t) @@ -6485,7 +6864,7 @@ index e04efc0a5..d76dd7d14 100644 return retval; } diff --git a/drivers/net/arcnet/com20020-isa.c b/drivers/net/arcnet/com20020-isa.c -index f983c4ce6..be618e4b9 100644 +index f983c4ce6b07..be618e4b9ed5 100644 --- a/drivers/net/arcnet/com20020-isa.c +++ b/drivers/net/arcnet/com20020-isa.c @@ -169,7 +169,7 @@ static int __init com20020_init(void) @@ -6507,7 +6886,7 @@ index f983c4ce6..be618e4b9 100644 #ifndef MODULE diff --git a/drivers/net/arcnet/com20020-pci.c b/drivers/net/arcnet/com20020-pci.c -index 9f44e2e45..b4f8798d8 100644 +index 9f44e2e458df..b4f8798d8c50 100644 --- a/drivers/net/arcnet/com20020-pci.c +++ b/drivers/net/arcnet/com20020-pci.c @@ -294,7 +294,7 @@ static void com20020pci_remove(struct pci_dev *pdev) @@ -6520,7 +6899,7 @@ index 9f44e2e45..b4f8798d8 100644 } diff --git a/drivers/net/arcnet/com20020_cs.c b/drivers/net/arcnet/com20020_cs.c -index cf607ffcf..9cc5eb6a8 100644 +index cf607ffcf358..9cc5eb6a8e90 100644 --- a/drivers/net/arcnet/com20020_cs.c +++ b/drivers/net/arcnet/com20020_cs.c @@ -177,7 +177,7 @@ static void com20020_detach(struct pcmcia_device *link) @@ -6533,7 +6912,7 @@ index cf607ffcf..9cc5eb6a8 100644 dev_dbg(&link->dev, "kfree2...\n"); kfree(info); diff --git a/drivers/net/arcnet/com90io.c b/drivers/net/arcnet/com90io.c -index cf214b730..3856b447d 100644 +index cf214b730671..3856b447d38e 100644 --- a/drivers/net/arcnet/com90io.c +++ b/drivers/net/arcnet/com90io.c @@ -396,7 +396,7 @@ static int __init com90io_init(void) @@ -6555,7 +6934,7 @@ index cf214b730..3856b447d 100644 module_init(com90io_init) diff --git a/drivers/net/arcnet/com90xx.c b/drivers/net/arcnet/com90xx.c -index 3dc3d533c..d8dfb9ea0 100644 +index 3dc3d533cb19..d8dfb9ea0de8 100644 --- a/drivers/net/arcnet/com90xx.c +++ b/drivers/net/arcnet/com90xx.c @@ -554,7 +554,7 @@ static int __init com90xx_found(int ioaddr, int airq, u_long shmem, @@ -6577,7 +6956,7 @@ index 3dc3d533c..d8dfb9ea0 100644 } diff --git a/drivers/net/ethernet/chelsio/cxgb/common.h b/drivers/net/ethernet/chelsio/cxgb/common.h -index 647506064..0321be773 100644 +index 6475060649e9..0321be77366c 100644 --- a/drivers/net/ethernet/chelsio/cxgb/common.h +++ b/drivers/net/ethernet/chelsio/cxgb/common.h @@ -238,7 +238,6 @@ struct adapter { @@ -6615,7 +6994,7 @@ index 647506064..0321be773 100644 void t1_link_negotiated(adapter_t *adapter, int port_id, int link_stat, int speed, int duplex, int pause); diff --git a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c -index 1311eac9e..c827273c4 100644 +index 1311eac9eef2..c827273c4bd7 100644 --- a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c +++ b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c @@ -211,9 +211,10 @@ static int cxgb_up(struct adapter *adapter) @@ -6694,7 +7073,7 @@ index 1311eac9e..c827273c4 100644 mac_stats_task); diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c -index 2d9c2b5a6..cda01f22c 100644 +index 2d9c2b5a690a..cda01f22c71c 100644 --- a/drivers/net/ethernet/chelsio/cxgb/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb/sge.c @@ -940,10 +940,11 @@ void t1_sge_intr_clear(struct sge *sge) @@ -6790,7 +7169,7 @@ index 2d9c2b5a6..cda01f22c 100644 /* diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.h b/drivers/net/ethernet/chelsio/cxgb/sge.h -index a1ba591b3..716705b96 100644 +index a1ba591b3431..716705b96f26 100644 --- a/drivers/net/ethernet/chelsio/cxgb/sge.h +++ b/drivers/net/ethernet/chelsio/cxgb/sge.h @@ -74,6 +74,7 @@ struct sge *t1_sge_create(struct adapter *, struct sge_params *); @@ -6811,7 +7190,7 @@ index a1ba591b3..716705b96 100644 void t1_sge_intr_disable(struct sge *); void t1_sge_intr_clear(struct sge *); diff --git a/drivers/net/ethernet/chelsio/cxgb/subr.c b/drivers/net/ethernet/chelsio/cxgb/subr.c -index ea0f8741d..310add28f 100644 +index ea0f8741d7cf..310add28fcf5 100644 --- a/drivers/net/ethernet/chelsio/cxgb/subr.c +++ b/drivers/net/ethernet/chelsio/cxgb/subr.c @@ -170,7 +170,7 @@ void t1_link_changed(adapter_t *adapter, int port_id) @@ -6939,7 +7318,7 @@ index ea0f8741d..310add28f 100644 #ifdef CONFIG_CHELSIO_T1_1G if (!t1_is_asic(adapter)) diff --git a/drivers/net/ethernet/dlink/sundance.c b/drivers/net/ethernet/dlink/sundance.c -index e3a885891..df0eab479 100644 +index e3a8858915b3..df0eab479d51 100644 --- a/drivers/net/ethernet/dlink/sundance.c +++ b/drivers/net/ethernet/dlink/sundance.c @@ -963,7 +963,7 @@ static void tx_timeout(struct net_device *dev, unsigned int txqueue) @@ -6952,7 +7331,7 @@ index e3a885891..df0eab479 100644 printk(KERN_WARNING "%s: Transmit timed out, TxStatus %2.2x " "TxFrameId %2.2x," diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c -index 4185ca3dd..cf5c33d0f 100644 +index 4185ca3dd575..cf5c33d0fbdb 100644 --- a/drivers/net/ethernet/jme.c +++ b/drivers/net/ethernet/jme.c @@ -1265,9 +1265,9 @@ jme_stop_shutdown_timer(struct jme_adapter *jme) @@ -7002,7 +7381,7 @@ index 4185ca3dd..cf5c33d0f 100644 jme->reg_ghc = 0; diff --git a/drivers/net/ethernet/jme.h b/drivers/net/ethernet/jme.h -index a2c3b00d9..2af76329b 100644 +index a2c3b00d939d..2af76329b4a2 100644 --- a/drivers/net/ethernet/jme.h +++ b/drivers/net/ethernet/jme.h @@ -411,7 +411,7 @@ struct jme_adapter { @@ -7015,7 +7394,7 @@ index a2c3b00d9..2af76329b 100644 unsigned long flags; u32 reg_txcs; diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c -index 71e2ada86..72e2e71aa 100644 +index 71e2ada86793..72e2e71aac0e 100644 --- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c @@ -251,7 +251,7 @@ void ath9k_beacon_ensure_primary_slot(struct ath_softc *sc) @@ -7028,7 +7407,7 @@ index 71e2ada86..72e2e71aa 100644 /* Find first taken slot. */ for (slot = 0; slot < ATH_BCBUF; slot++) { diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index a070e69bb..1fea850af 100644 +index a070e69bb49c..1fea850af7c9 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -1457,7 +1457,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) @@ -7041,7 +7420,7 @@ index a070e69bb..1fea850af 100644 /* * Since this function is called with IRQ locks held, can't diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c -index 0f9274960..dc97e4f1f 100644 +index 0f9274960dc6..dc97e4f1f4ad 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1452,11 +1452,11 @@ static int fcoe_rcv(struct sk_buff *skb, struct net_device *netdev, @@ -7099,7 +7478,7 @@ index 0f9274960..dc97e4f1f 100644 } diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c -index 5ea426eff..0d6b9acc7 100644 +index 5ea426effa60..0d6b9acc7cf8 100644 --- a/drivers/scsi/fcoe/fcoe_ctlr.c +++ b/drivers/scsi/fcoe/fcoe_ctlr.c @@ -828,7 +828,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) @@ -7121,7 +7500,7 @@ index 5ea426eff..0d6b9acc7 100644 list_for_each_entry_safe(fcf, next, &del_list, list) { /* Removes fcf from current list */ diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c -index a50f1eef0..0b2acad7c 100644 +index 4261380af97b..65160eaaa929 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c @@ -826,10 +826,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, @@ -7138,7 +7517,7 @@ index a50f1eef0..0b2acad7c 100644 /* peek cache of free slot */ if (pool->left != FC_XID_UNKNOWN) { diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h -index 34aa2714f..42cd2baa7 100644 +index 34aa2714f3c9..42cd2baa7663 100644 --- a/drivers/tty/serial/8250/8250.h +++ b/drivers/tty/serial/8250/8250.h @@ -131,12 +131,55 @@ static inline void serial_dl_write(struct uart_8250_port *up, int value) @@ -7208,7 +7587,7 @@ index 34aa2714f..42cd2baa7 100644 } diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index cae61d1eb..47dd23056 100644 +index cae61d1ebec5..47dd23056271 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -274,10 +274,8 @@ static void serial8250_backup_timeout(struct timer_list *t) @@ -7257,7 +7636,7 @@ index cae61d1eb..47dd23056 100644 .device = uart_console_device, .setup = univ8250_console_setup, diff --git a/drivers/tty/serial/8250/8250_fsl.c b/drivers/tty/serial/8250/8250_fsl.c -index fbcc90c31..b33cb454c 100644 +index fbcc90c31ca1..b33cb454ce03 100644 --- a/drivers/tty/serial/8250/8250_fsl.c +++ b/drivers/tty/serial/8250/8250_fsl.c @@ -60,9 +60,18 @@ int fsl8250_handle_irq(struct uart_port *port) @@ -7280,7 +7659,7 @@ index fbcc90c31..b33cb454c 100644 port->ops->stop_rx(port); } else { diff --git a/drivers/tty/serial/8250/8250_ingenic.c b/drivers/tty/serial/8250/8250_ingenic.c -index 988bf6bcc..bcd26d672 100644 +index 988bf6bcce42..bcd26d672539 100644 --- a/drivers/tty/serial/8250/8250_ingenic.c +++ b/drivers/tty/serial/8250/8250_ingenic.c @@ -146,6 +146,8 @@ OF_EARLYCON_DECLARE(x1000_uart, "ingenic,x1000-uart", @@ -7306,10 +7685,10 @@ index 988bf6bcc..bcd26d672 100644 if (ier & UART_IER_MSI) value |= UART_MCR_MDCE | UART_MCR_FCM; diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c -index fb65dc601..5bc734c70 100644 +index de48a58460f4..d246f2755fed 100644 --- a/drivers/tty/serial/8250/8250_mtk.c +++ b/drivers/tty/serial/8250/8250_mtk.c -@@ -218,12 +218,37 @@ static void mtk8250_shutdown(struct uart_port *port) +@@ -222,12 +222,37 @@ static void mtk8250_shutdown(struct uart_port *port) static void mtk8250_disable_intrs(struct uart_8250_port *up, int mask) { @@ -7350,7 +7729,7 @@ index fb65dc601..5bc734c70 100644 static void mtk8250_set_flow_ctrl(struct uart_8250_port *up, int mode) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index 7c07ebb37..a0a617caa 100644 +index e0fa24f0f732..34ae1c3a0351 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -762,7 +762,7 @@ static void serial8250_set_sleep(struct uart_8250_port *p, int sleep) @@ -7380,7 +7759,7 @@ index 7c07ebb37..a0a617caa 100644 } } EXPORT_SYMBOL_GPL(serial8250_em485_stop_tx); -@@ -1694,7 +1694,7 @@ static void serial8250_disable_ms(struct uart_port *port) +@@ -1706,7 +1706,7 @@ static void serial8250_disable_ms(struct uart_port *port) mctrl_gpio_disable_ms(up->gpios); up->ier &= ~UART_IER_MSI; @@ -7389,7 +7768,7 @@ index 7c07ebb37..a0a617caa 100644 } static void serial8250_enable_ms(struct uart_port *port) -@@ -1710,7 +1710,7 @@ static void serial8250_enable_ms(struct uart_port *port) +@@ -1722,7 +1722,7 @@ static void serial8250_enable_ms(struct uart_port *port) up->ier |= UART_IER_MSI; serial8250_rpm_get(up); @@ -7398,7 +7777,7 @@ index 7c07ebb37..a0a617caa 100644 serial8250_rpm_put(up); } -@@ -2130,14 +2130,7 @@ static void serial8250_put_poll_char(struct uart_port *port, +@@ -2140,14 +2140,7 @@ static void serial8250_put_poll_char(struct uart_port *port, struct uart_8250_port *up = up_to_u8250p(port); serial8250_rpm_get(up); @@ -7414,7 +7793,7 @@ index 7c07ebb37..a0a617caa 100644 wait_for_xmitr(up, BOTH_EMPTY); /* -@@ -2150,7 +2143,7 @@ static void serial8250_put_poll_char(struct uart_port *port, +@@ -2160,7 +2153,7 @@ static void serial8250_put_poll_char(struct uart_port *port, * and restore the IER */ wait_for_xmitr(up, BOTH_EMPTY); @@ -7423,7 +7802,7 @@ index 7c07ebb37..a0a617caa 100644 serial8250_rpm_put(up); } -@@ -2453,7 +2446,7 @@ void serial8250_do_shutdown(struct uart_port *port) +@@ -2463,7 +2456,7 @@ void serial8250_do_shutdown(struct uart_port *port) */ spin_lock_irqsave(&port->lock, flags); up->ier = 0; @@ -7432,7 +7811,7 @@ index 7c07ebb37..a0a617caa 100644 spin_unlock_irqrestore(&port->lock, flags); synchronize_irq(port->irq); -@@ -2809,7 +2802,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2819,7 +2812,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, if (up->capabilities & UART_CAP_RTOIE) up->ier |= UART_IER_RTOIE; @@ -7441,7 +7820,7 @@ index 7c07ebb37..a0a617caa 100644 if (up->capabilities & UART_CAP_EFR) { unsigned char efr = 0; -@@ -3275,7 +3268,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_defaults); +@@ -3285,7 +3278,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_defaults); #ifdef CONFIG_SERIAL_8250_CONSOLE @@ -7450,7 +7829,7 @@ index 7c07ebb37..a0a617caa 100644 { struct uart_8250_port *up = up_to_u8250p(port); -@@ -3283,6 +3276,18 @@ static void serial8250_console_putchar(struct uart_port *port, int ch) +@@ -3293,6 +3286,18 @@ static void serial8250_console_putchar(struct uart_port *port, int ch) serial_port_out(port, UART_TX, ch); } @@ -7469,8 +7848,8 @@ index 7c07ebb37..a0a617caa 100644 /* * Restore serial console when h/w power-off detected */ -@@ -3304,6 +3309,32 @@ static void serial8250_console_restore(struct uart_8250_port *up) - serial8250_out_MCR(up, UART_MCR_DTR | UART_MCR_RTS); +@@ -3314,6 +3319,32 @@ static void serial8250_console_restore(struct uart_8250_port *up) + serial8250_out_MCR(up, up->mcr | UART_MCR_DTR | UART_MCR_RTS); } +void serial8250_console_write_atomic(struct uart_8250_port *up, @@ -7502,7 +7881,7 @@ index 7c07ebb37..a0a617caa 100644 /* * Print a string to the serial port trying not to disturb * any possible real use of the port... -@@ -3320,24 +3351,12 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3330,24 +3361,12 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, struct uart_port *port = &up->port; unsigned long flags; unsigned int ier; @@ -7529,7 +7908,7 @@ index 7c07ebb37..a0a617caa 100644 /* check scratch reg to see if port powered off during system sleep */ if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) { -@@ -3351,7 +3370,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3361,7 +3380,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, mdelay(port->rs485.delay_rts_before_send); } @@ -7539,7 +7918,7 @@ index 7c07ebb37..a0a617caa 100644 /* * Finally, wait for transmitter to become empty -@@ -3364,8 +3385,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3374,8 +3395,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, if (em485->tx_stopped) up->rs485_stop_tx(up); } @@ -7549,7 +7928,7 @@ index 7c07ebb37..a0a617caa 100644 /* * The receive handling will happen properly because the -@@ -3377,8 +3397,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3387,8 +3407,7 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, if (up->msr_saved_flags) serial8250_modem_status(up); @@ -7559,7 +7938,7 @@ index 7c07ebb37..a0a617caa 100644 } static unsigned int probe_baud(struct uart_port *port) -@@ -3398,6 +3417,7 @@ static unsigned int probe_baud(struct uart_port *port) +@@ -3408,6 +3427,7 @@ static unsigned int probe_baud(struct uart_port *port) int serial8250_console_setup(struct uart_port *port, char *options, bool probe) { @@ -7567,7 +7946,7 @@ index 7c07ebb37..a0a617caa 100644 int baud = 9600; int bits = 8; int parity = 'n'; -@@ -3407,6 +3427,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) +@@ -3417,6 +3437,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) if (!port->iobase && !port->membase) return -ENODEV; @@ -7577,7 +7956,7 @@ index 7c07ebb37..a0a617caa 100644 uart_parse_options(options, &baud, &parity, &bits, &flow); else if (probe) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 859d0c30d..b1da1d2f8 100644 +index 90b370ee9a34..99c0d1f29aac 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -2249,18 +2249,24 @@ pl011_console_write(struct console *co, const char *s, unsigned int count) @@ -7620,7 +7999,7 @@ index 859d0c30d..b1da1d2f8 100644 clk_disable(uap->clk); } diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c -index 84e815808..342005ed5 100644 +index 84e8158088cd..342005ed5ebf 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -1311,13 +1311,10 @@ serial_omap_console_write(struct console *co, const char *s, @@ -7651,21 +8030,24 @@ index 84e815808..342005ed5 100644 static int __init diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c -index 713cfa72d..0fc473321 100644 +index c3abcd0439f9..2479ea4c843b 100644 --- a/drivers/tty/tty_buffer.c +++ b/drivers/tty/tty_buffer.c -@@ -172,9 +172,7 @@ static struct tty_buffer *tty_buffer_alloc(struct tty_port *port, size_t size) +@@ -172,10 +172,10 @@ static struct tty_buffer *tty_buffer_alloc(struct tty_port *port, size_t size) have queued and recycle that ? */ if (atomic_read(&port->buf.mem_used) > port->buf.mem_limit) return NULL; - printk_safe_enter(); - p = kmalloc(sizeof(struct tty_buffer) + 2 * size, GFP_ATOMIC); ++ + p = kmalloc(sizeof(struct tty_buffer) + 2 * size, + GFP_ATOMIC | __GFP_NOWARN); - printk_safe_exit(); ++ if (p == NULL) return NULL; diff --git a/fs/afs/dir_silly.c b/fs/afs/dir_silly.c -index dae9a57d7..9a6a0ec4d 100644 +index dae9a57d7ec0..9a6a0ec4d1fb 100644 --- a/fs/afs/dir_silly.c +++ b/fs/afs/dir_silly.c @@ -239,7 +239,7 @@ int afs_silly_iput(struct dentry *dentry, struct inode *inode) @@ -7678,7 +8060,7 @@ index dae9a57d7..9a6a0ec4d 100644 _enter("%p{%pd},%llx", dentry, dentry, vnode->fid.vnode); diff --git a/fs/aio.c b/fs/aio.c -index 5e5333d72..cc16ac777 100644 +index 5e5333d72c69..cc16ac777f0d 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -43,7 +43,6 @@ @@ -7699,7 +8081,7 @@ index 5e5333d72..cc16ac777 100644 INIT_WORK(&req->work, aio_poll_put_work); schedule_work(&req->work); diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h -index bcc6848bb..fabbf6cc4 100644 +index bcc6848bb6d6..fabbf6cc45bf 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -17,7 +17,6 @@ @@ -7711,7 +8093,7 @@ index bcc6848bb..fabbf6cc4 100644 #include #include diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c -index 799be3a5d..d5165a7da 100644 +index 799be3a5d25e..d5165a7da071 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -81,7 +81,7 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name, @@ -7724,7 +8106,7 @@ index 799be3a5d..d5165a7da 100644 cifs_dbg(FYI, "%s: for %s\n", __func__, name->name); diff --git a/fs/dcache.c b/fs/dcache.c -index f5b78cc80..b2e0d1a07 100644 +index f5b78cc80a00..b2e0d1a07644 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -2566,9 +2566,10 @@ EXPORT_SYMBOL(d_rehash); @@ -7811,7 +8193,7 @@ index f5b78cc80..b2e0d1a07 100644 hlist_bl_unlock(b); INIT_HLIST_NODE(&dentry->d_u.d_alias); diff --git a/fs/eventfd.c b/fs/eventfd.c -index df466ef81..9035ca60b 100644 +index df466ef81ddd..9035ca60bfcf 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c @@ -25,8 +25,6 @@ @@ -7851,7 +8233,7 @@ index df466ef81..9035ca60b 100644 return n; diff --git a/fs/fscache/internal.h b/fs/fscache/internal.h -index 64aa552b2..7dae569da 100644 +index 64aa552b296d..7dae569dafb9 100644 --- a/fs/fscache/internal.h +++ b/fs/fscache/internal.h @@ -95,7 +95,6 @@ extern unsigned fscache_debug; @@ -7863,7 +8245,7 @@ index 64aa552b2..7dae569da 100644 extern unsigned int fscache_hash(unsigned int salt, unsigned int *data, unsigned int n); diff --git a/fs/fscache/main.c b/fs/fscache/main.c -index 4207f98e4..85f8cf3a3 100644 +index 4207f98e405f..85f8cf3a323d 100644 --- a/fs/fscache/main.c +++ b/fs/fscache/main.c @@ -41,8 +41,6 @@ struct kobject *fscache_root; @@ -7894,7 +8276,7 @@ index 4207f98e4..85f8cf3a3 100644 if (ret < 0) goto error_proc; diff --git a/fs/fscache/object.c b/fs/fscache/object.c -index cb2146e02..fb9794dce 100644 +index cb2146e02cd5..fb9794dce721 100644 --- a/fs/fscache/object.c +++ b/fs/fscache/object.c @@ -807,6 +807,8 @@ void fscache_object_destroy(struct fscache_object *object) @@ -7944,7 +8326,7 @@ index cb2146e02..fb9794dce 100644 return fscache_object_congested(); } diff --git a/fs/fuse/readdir.c b/fs/fuse/readdir.c -index bc2678323..3176913fa 100644 +index bc267832310c..3176913fae6c 100644 --- a/fs/fuse/readdir.c +++ b/fs/fuse/readdir.c @@ -158,7 +158,7 @@ static int fuse_direntplus_link(struct file *file, @@ -7957,7 +8339,7 @@ index bc2678323..3176913fa 100644 if (!o->nodeid) { /* diff --git a/fs/inode.c b/fs/inode.c -index 82090bfad..96ddef6c6 100644 +index 82090bfadb07..96ddef6c63dd 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -158,7 +158,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode) @@ -7970,7 +8352,7 @@ index 82090bfad..96ddef6c6 100644 inode->dirtied_when = 0; diff --git a/fs/namei.c b/fs/namei.c -index 0782401c6..a3003d832 100644 +index 4b55e176cbfc..2c2684aa9a0c 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1526,7 +1526,7 @@ static struct dentry *__lookup_slow(const struct qstr *name, @@ -7992,7 +8374,7 @@ index 0782401c6..a3003d832 100644 if (unlikely(IS_DEADDIR(dir_inode))) return ERR_PTR(-ENOENT); diff --git a/fs/namespace.c b/fs/namespace.c -index 6e76f2a72..dbd1119a5 100644 +index 6e76f2a72cfc..dbd1119a539f 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -14,6 +14,7 @@ @@ -8018,7 +8400,7 @@ index 6e76f2a72..dbd1119a5 100644 * 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 --git a/fs/nfs/dir.c b/fs/nfs/dir.c -index 9f88ca7b2..bc8a78ecf 100644 +index 9f88ca7b2001..bc8a78ecfe1c 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -484,7 +484,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry, @@ -8040,7 +8422,7 @@ index 9f88ca7b2..bc8a78ecf 100644 struct dentry *res; struct iattr attr = { .ia_valid = ATTR_OPEN }; diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c -index b27ebdcce..f86c98a7e 100644 +index b27ebdccef70..f86c98a7ed04 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c @@ -13,7 +13,7 @@ @@ -8062,7 +8444,7 @@ index b27ebdcce..f86c98a7e 100644 status = -EBUSY; spin_lock(&dentry->d_lock); diff --git a/fs/proc/array.c b/fs/proc/array.c -index 18a4588c3..decaa7768 100644 +index 18a4588c35be..decaa7768044 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -384,9 +384,9 @@ static inline void task_context_switch_counts(struct seq_file *m, @@ -8078,7 +8460,7 @@ index 18a4588c3..decaa7768 100644 static inline void task_core_dumping(struct seq_file *m, struct mm_struct *mm) diff --git a/fs/proc/base.c b/fs/proc/base.c -index b9052be86..e7c748689 100644 +index 9b4666e757f0..9c4ef7650198 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -97,6 +97,7 @@ @@ -8099,10 +8481,10 @@ index b9052be86..e7c748689 100644 if (IS_ERR(child)) goto end_instantiate; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c -index ffed75f83..15f837dc0 100644 +index df435cd91a5b..eb19a342909c 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c -@@ -683,7 +683,7 @@ static bool proc_sys_fill_cache(struct file *file, +@@ -684,7 +684,7 @@ static bool proc_sys_fill_cache(struct file *file, child = d_lookup(dir, &qname); if (!child) { @@ -8112,10 +8494,10 @@ index ffed75f83..15f837dc0 100644 if (IS_ERR(child)) return false; diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c -index b1ebf7b61..b7e3a6bac 100644 +index ce03c3dbb5c3..5c2c14d5f6fc 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c -@@ -383,7 +383,8 @@ void pstore_record_init(struct pstore_record *record, +@@ -384,7 +384,8 @@ void pstore_record_init(struct pstore_record *record, * end of the buffer. */ static void pstore_dump(struct kmsg_dumper *dumper, @@ -8125,7 +8507,7 @@ index b1ebf7b61..b7e3a6bac 100644 { unsigned long total = 0; const char *why; -@@ -435,7 +436,7 @@ static void pstore_dump(struct kmsg_dumper *dumper, +@@ -434,7 +435,7 @@ static void pstore_dump(struct kmsg_dumper *dumper, dst_size -= header_size; /* Write dump contents. */ @@ -8135,7 +8517,7 @@ index b1ebf7b61..b7e3a6bac 100644 break; diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild -index d1300c6e0..267f6dfb8 100644 +index d1300c6e0a47..267f6dfb8960 100644 --- a/include/asm-generic/Kbuild +++ b/include/asm-generic/Kbuild @@ -30,7 +30,7 @@ mandatory-y += irq.h @@ -8148,7 +8530,7 @@ index d1300c6e0..267f6dfb8 100644 mandatory-y += linkage.h mandatory-y += local.h diff --git a/include/asm-generic/hardirq.h b/include/asm-generic/hardirq.h -index d14214dfc..7317e8258 100644 +index d14214dfc10b..7317e8258b48 100644 --- a/include/asm-generic/hardirq.h +++ b/include/asm-generic/hardirq.h @@ -7,9 +7,13 @@ @@ -8168,7 +8550,7 @@ index d14214dfc..7317e8258 100644 #ifndef ack_bad_irq diff --git a/include/asm-generic/kmap_size.h b/include/asm-generic/kmap_size.h new file mode 100644 -index 000000000..9d6c7786a +index 000000000000..9d6c7786a645 --- /dev/null +++ b/include/asm-generic/kmap_size.h @@ -0,0 +1,12 @@ @@ -8186,7 +8568,7 @@ index 000000000..9d6c7786a +#endif diff --git a/include/asm-generic/kmap_types.h b/include/asm-generic/kmap_types.h deleted file mode 100644 -index 9f95b7b63..000000000 +index 9f95b7b63d19..000000000000 --- a/include/asm-generic/kmap_types.h +++ /dev/null @@ -1,11 +0,0 @@ @@ -8202,7 +8584,7 @@ index 9f95b7b63..000000000 - -#endif diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h -index b4d43a4af..ac255e889 100644 +index b4d43a4af5f7..ac255e889462 100644 --- a/include/asm-generic/preempt.h +++ b/include/asm-generic/preempt.h @@ -79,6 +79,9 @@ static __always_inline bool should_resched(int preempt_offset) @@ -8216,7 +8598,7 @@ index b4d43a4af..ac255e889 100644 #define __preempt_schedule() preempt_schedule() extern asmlinkage void preempt_schedule_notrace(void); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h -index 6a4b2a01a..a307ef4f1 100644 +index 49540ce9e325..d5d10207c08c 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -163,7 +163,7 @@ struct request { @@ -8229,7 +8611,7 @@ index 6a4b2a01a..a307ef4f1 100644 /* diff --git a/include/linux/bottom_half.h b/include/linux/bottom_half.h -index a19519f42..eed86eb0a 100644 +index a19519f4241d..eed86eb0a1de 100644 --- a/include/linux/bottom_half.h +++ b/include/linux/bottom_half.h @@ -4,7 +4,7 @@ @@ -8253,7 +8635,7 @@ index a19519f42..eed86eb0a 100644 + #endif /* _LINUX_BH_H */ diff --git a/include/linux/console.h b/include/linux/console.h -index bc2a749e6..027278792 100644 +index bc2a749e6f0d..027278792eea 100644 --- a/include/linux/console.h +++ b/include/linux/console.h @@ -16,6 +16,7 @@ @@ -8298,7 +8680,7 @@ index bc2a749e6..027278792 100644 + #endif /* _LINUX_CONSOLE_H */ diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h -index b98b9eb7d..c986a9543 100644 +index 5571bfc2ec6e..82a43ee0b1f7 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -155,6 +155,7 @@ enum cpuhp_state { @@ -8310,7 +8692,7 @@ index b98b9eb7d..c986a9543 100644 CPUHP_AP_X86_VDSO_VMA_ONLINE, CPUHP_AP_IRQ_AFFINITY_ONLINE, diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h -index 0159986ac..c53364c42 100644 +index 0159986ac9ce..c53364c4296d 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -199,6 +199,11 @@ static inline int cpumask_any_and_distribute(const struct cpumask *src1p, @@ -8334,7 +8716,7 @@ index 0159986ac..c53364c42 100644 /** * for_each_cpu - iterate over every cpu in a mask diff --git a/include/linux/dcache.h b/include/linux/dcache.h -index 4bb8b1759..c5821c04a 100644 +index 4bb8b1759438..c5821c04ab88 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -108,7 +108,7 @@ struct dentry { @@ -8356,7 +8738,7 @@ index 4bb8b1759..c5821c04a 100644 extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); extern struct dentry * d_exact_alias(struct dentry *, struct inode *); diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h -index edb5c186b..3f49e6516 100644 +index edb5c186b0b7..3f49e65169c6 100644 --- a/include/linux/debug_locks.h +++ b/include/linux/debug_locks.h @@ -3,8 +3,7 @@ @@ -8370,7 +8752,7 @@ index edb5c186b..3f49e6516 100644 struct task_struct; diff --git a/include/linux/delay.h b/include/linux/delay.h -index e8607992c..cd24f34b4 100644 +index e8607992c68a..cd24f34b4ad0 100644 --- a/include/linux/delay.h +++ b/include/linux/delay.h @@ -88,4 +88,10 @@ static inline void fsleep(unsigned long usecs) @@ -8385,7 +8767,7 @@ index e8607992c..cd24f34b4 100644 + #endif /* defined(_LINUX_DELAY_H) */ diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h -index d8e1c798d..d2aca09f7 100644 +index d8e1c798dc9d..d2aca09f7027 100644 --- a/include/linux/entry-common.h +++ b/include/linux/entry-common.h @@ -70,7 +70,7 @@ @@ -8398,7 +8780,7 @@ index d8e1c798d..d2aca09f7 100644 /** diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h -index dc4fd8a66..836b4c021 100644 +index dc4fd8a6644d..836b4c021a0a 100644 --- a/include/linux/eventfd.h +++ b/include/linux/eventfd.h @@ -14,6 +14,7 @@ @@ -8436,7 +8818,7 @@ index dc4fd8a66..836b4c021 100644 #endif diff --git a/include/linux/fs.h b/include/linux/fs.h -index 18259e38d..b71d98518 100644 +index fa9d89379da1..7208089cb30a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -719,7 +719,7 @@ struct inode { @@ -8449,7 +8831,7 @@ index 18259e38d..b71d98518 100644 __u32 i_generation; diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h -index 754f67ac4..76878b357 100644 +index 754f67ac4326..76878b357ffa 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h @@ -6,6 +6,7 @@ @@ -8499,7 +8881,7 @@ index 754f67ac4..76878b357 100644 } while (0) diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-internal.h new file mode 100644 -index 000000000..f9bc6acd3 +index 000000000000..f9bc6acd3679 --- /dev/null +++ b/include/linux/highmem-internal.h @@ -0,0 +1,222 @@ @@ -8726,7 +9108,7 @@ index 000000000..f9bc6acd3 + +#endif diff --git a/include/linux/highmem.h b/include/linux/highmem.h -index 6b27af8fe..ec1edaf12 100644 +index 6b27af8fe624..ec1edaf12485 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -11,217 +11,137 @@ @@ -9055,7 +9437,7 @@ index 6b27af8fe..ec1edaf12 100644 #ifndef clear_user_highpage static inline void clear_user_highpage(struct page *page, unsigned long vaddr) diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h -index 22240a8c3..fc162c252 100644 +index 22240a8c3a1e..fc162c2525ea 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -542,7 +542,7 @@ struct softirq_action @@ -9121,7 +9503,7 @@ index 22240a8c3..fc162c252 100644 { tasklet_disable_nosync(t); diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h -index c75e4d3d8..4bb8223f2 100644 +index c75e4d3d8833..4bb8223f2f82 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h @@ -60,22 +60,20 @@ io_mapping_fini(struct io_mapping *mapping) @@ -9193,7 +9575,7 @@ index c75e4d3d8..4bb8223f2 100644 io_mapping_create_wc(resource_size_t base, diff --git a/include/linux/irq_cpustat.h b/include/linux/irq_cpustat.h deleted file mode 100644 -index 6e8895cd4..000000000 +index 6e8895cd4d92..000000000000 --- a/include/linux/irq_cpustat.h +++ /dev/null @@ -1,28 +0,0 @@ @@ -9226,7 +9608,7 @@ index 6e8895cd4..000000000 - -#endif /* __irq_cpustat_h */ diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h -index ec2a47a81..9448e2bfc 100644 +index ec2a47a81e42..9448e2bfc602 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h @@ -3,6 +3,7 @@ @@ -9264,7 +9646,7 @@ index ec2a47a81..9448e2bfc 100644 bool irq_work_queue_on(struct irq_work *work, int cpu); diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h -index dc1b213ae..9bbcd8cba 100644 +index dc1b213ae941..9bbcd8cbac50 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h @@ -68,6 +68,7 @@ struct irq_desc { @@ -9276,7 +9658,7 @@ index dc1b213ae..9bbcd8cba 100644 struct cpumask *percpu_enabled; const struct cpumask *percpu_affinity; diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h -index fef2d43a7..741aa2008 100644 +index fef2d43a7a1d..741aa2008a34 100644 --- a/include/linux/irqflags.h +++ b/include/linux/irqflags.h @@ -71,14 +71,6 @@ do { \ @@ -9317,7 +9699,7 @@ index fef2d43a7..741aa2008 100644 defined(CONFIG_PREEMPT_TRACER) extern void stop_critical_timings(void); diff --git a/include/linux/kernel.h b/include/linux/kernel.h -index 78a0907f0..e6270bfa6 100644 +index 78a0907f0b04..e6270bfa6105 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -220,6 +220,7 @@ static __always_inline void might_resched(void) @@ -9383,7 +9765,7 @@ index 78a0907f0..e6270bfa6 100644 * abs - return absolute value of an argument * @x: the value. If it is unsigned type, it is converted to signed type first. diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h -index 3378bcbe5..86673930c 100644 +index 3378bcbe585e..86673930c8ea 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h @@ -29,6 +29,18 @@ enum kmsg_dump_reason { @@ -9480,7 +9862,7 @@ index 3378bcbe5..86673930c 100644 } diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lock_internal.h -index 3f02b8186..1b8ae0349 100644 +index 3f02b818625e..1b8ae034946f 100644 --- a/include/linux/local_lock_internal.h +++ b/include/linux/local_lock_internal.h @@ -7,13 +7,39 @@ @@ -9640,7 +10022,7 @@ index 3f02b8186..1b8ae0349 100644 + +#endif diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 1c22e294f..41aed4e91 100644 +index 1c22e294f083..41aed4e91fe1 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -13,6 +13,7 @@ @@ -9662,7 +10044,7 @@ index 1c22e294f..41aed4e91 100644 atomic_long_t hugetlb_usage; #endif diff --git a/include/linux/mutex.h b/include/linux/mutex.h -index 4d671fba3..90923d300 100644 +index 4d671fba3cab..90923d3008fc 100644 --- a/include/linux/mutex.h +++ b/include/linux/mutex.h @@ -22,6 +22,20 @@ @@ -9727,7 +10109,7 @@ index 4d671fba3..90923d300 100644 #endif /* __LINUX_MUTEX_H */ diff --git a/include/linux/mutex_rt.h b/include/linux/mutex_rt.h new file mode 100644 -index 000000000..f0b2e07cd +index 000000000000..f0b2e07cd5c5 --- /dev/null +++ b/include/linux/mutex_rt.h @@ -0,0 +1,130 @@ @@ -9862,7 +10244,7 @@ index 000000000..f0b2e07cd + +#endif diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h -index 5491ad5f4..cd9e5b3f1 100644 +index 5491ad5f48a9..cd9e5b3f1831 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -1675,7 +1675,7 @@ struct nfs_unlinkdata { @@ -9875,7 +10257,7 @@ index 5491ad5f4..cd9e5b3f1 100644 struct nfs_fattr dir_attr; long timeout; diff --git a/include/linux/notifier.h b/include/linux/notifier.h -index 2fb373a5c..723bc2df6 100644 +index 2fb373a5c1ed..723bc2df6388 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h @@ -58,7 +58,7 @@ struct notifier_block { @@ -9906,7 +10288,7 @@ index 2fb373a5c..723bc2df6 100644 #define BLOCKING_NOTIFIER_INIT(name) { \ .rwsem = __RWSEM_INITIALIZER((name).rwsem), \ diff --git a/include/linux/pid.h b/include/linux/pid.h -index 34afff2dc..514dd026c 100644 +index 34afff2dc888..514dd026c6b8 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h @@ -3,6 +3,7 @@ @@ -9918,7 +10300,7 @@ index 34afff2dc..514dd026c 100644 #include diff --git a/include/linux/preempt.h b/include/linux/preempt.h -index 7d9c1c0e1..7b5b2ed55 100644 +index 7d9c1c0e149c..7b5b2ed55531 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -77,31 +77,37 @@ @@ -10204,7 +10586,7 @@ index 7d9c1c0e1..7b5b2ed55 100644 + #endif /* __LINUX_PREEMPT_H */ diff --git a/include/linux/printk.h b/include/linux/printk.h -index 7d787f91d..9331b131b 100644 +index 7d787f91db92..9331b131ba25 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -46,6 +46,12 @@ static inline const char *printk_skip_headers(const char *buffer) @@ -10272,21 +10654,25 @@ index 7d787f91d..9331b131b 100644 /* * ratelimited messages with local ratelimit_state, * no local ratelimit_state used in the !PRINTK case -diff --git a/include/linux/random.h b/include/linux/random.h -index f45b8be3e..0e41d0527 100644 ---- a/include/linux/random.h -+++ b/include/linux/random.h -@@ -35,7 +35,7 @@ static inline void add_latent_entropy(void) {} - - extern void add_input_randomness(unsigned int type, unsigned int code, - unsigned int value) __latent_entropy; --extern void add_interrupt_randomness(int irq, int irq_flags) __latent_entropy; -+extern void add_interrupt_randomness(int irq, int irq_flags, __u64 ip) __latent_entropy; - - extern void get_random_bytes(void *buf, int nbytes); - extern int wait_for_random_bytes(void); +diff --git a/include/linux/random.h.rej b/include/linux/random.h.rej +new file mode 100644 +index 000000000000..a7b7c57cf369 +--- /dev/null ++++ b/include/linux/random.h.rej +@@ -0,0 +1,11 @@ ++--- include/linux/random.h +++++ include/linux/random.h ++@@ -35,7 +35,7 @@ static inline void add_latent_entropy(void) {} ++ ++ extern void add_input_randomness(unsigned int type, unsigned int code, ++ unsigned int value) __latent_entropy; ++-extern void add_interrupt_randomness(int irq, int irq_flags) __latent_entropy; +++extern void add_interrupt_randomness(int irq, int irq_flags, __u64 ip) __latent_entropy; ++ ++ extern void get_random_bytes(void *buf, int nbytes); ++ extern int wait_for_random_bytes(void); diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h -index d7db17996..c33b0e16d 100644 +index e0b300de8f3f..fa6b6baddd9a 100644 --- a/include/linux/rbtree.h +++ b/include/linux/rbtree.h @@ -19,19 +19,9 @@ @@ -10334,7 +10720,7 @@ index d7db17996..c33b0e16d 100644 /* Same as rb_first(), but O(1) */ diff --git a/include/linux/rbtree_type.h b/include/linux/rbtree_type.h new file mode 100644 -index 000000000..77a89dd2c +index 000000000000..77a89dd2c7c6 --- /dev/null +++ b/include/linux/rbtree_type.h @@ -0,0 +1,31 @@ @@ -10370,7 +10756,7 @@ index 000000000..77a89dd2c + +#endif diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h -index 095b3b39b..1effcae06 100644 +index 095b3b39bd03..1effcae06ea1 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -54,6 +54,11 @@ void __rcu_read_unlock(void); @@ -10405,7 +10791,7 @@ index 095b3b39b..1effcae06 100644 RCU_LOCKDEP_WARN(lock_is_held(&rcu_sched_lock_map), \ "Illegal context switch in RCU-sched read-side critical section"); \ diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h -index 6fd615a0e..b02009f53 100644 +index 6fd615a0eea9..b02009f53026 100644 --- a/include/linux/rtmutex.h +++ b/include/linux/rtmutex.h @@ -14,11 +14,15 @@ @@ -10511,7 +10897,7 @@ index 6fd615a0e..b02009f53 100644 extern void rt_mutex_unlock(struct rt_mutex *lock); diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h new file mode 100644 -index 000000000..aafdb0a68 +index 000000000000..aafdb0a685d5 --- /dev/null +++ b/include/linux/rwlock_rt.h @@ -0,0 +1,109 @@ @@ -10625,7 +11011,7 @@ index 000000000..aafdb0a68 + +#endif diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h -index 3bd03e180..0ad226b5d 100644 +index 3bd03e18061c..0ad226b5d8fd 100644 --- a/include/linux/rwlock_types.h +++ b/include/linux/rwlock_types.h @@ -1,6 +1,10 @@ @@ -10641,7 +11027,7 @@ index 3bd03e180..0ad226b5d 100644 * and initializers diff --git a/include/linux/rwlock_types_rt.h b/include/linux/rwlock_types_rt.h new file mode 100644 -index 000000000..4762391d6 +index 000000000000..4762391d659b --- /dev/null +++ b/include/linux/rwlock_types_rt.h @@ -0,0 +1,56 @@ @@ -10703,7 +11089,7 @@ index 000000000..4762391d6 +#endif diff --git a/include/linux/rwsem-rt.h b/include/linux/rwsem-rt.h new file mode 100644 -index 000000000..0ba8aae9a +index 000000000000..0ba8aae9a198 --- /dev/null +++ b/include/linux/rwsem-rt.h @@ -0,0 +1,70 @@ @@ -10778,7 +11164,7 @@ index 000000000..0ba8aae9a + +#endif diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h -index 4c715be48..9323af8a9 100644 +index 4c715be48717..9323af8a9244 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -16,6 +16,11 @@ @@ -10808,7 +11194,7 @@ index 4c715be48..9323af8a9 100644 * lock for reading */ diff --git a/include/linux/sched.h b/include/linux/sched.h -index 47f462040..0cbd285a7 100644 +index d8c974338ce2..279a18dac9c3 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -36,6 +36,7 @@ @@ -10875,7 +11261,7 @@ index 47f462040..0cbd285a7 100644 /* * This begins the randomizable portion of task_struct. Only -@@ -760,6 +772,11 @@ struct task_struct { +@@ -761,6 +773,11 @@ struct task_struct { int nr_cpus_allowed; const cpumask_t *cpus_ptr; cpumask_t cpus_mask; @@ -10887,7 +11273,7 @@ index 47f462040..0cbd285a7 100644 #ifdef CONFIG_PREEMPT_RCU int rcu_read_lock_nesting; -@@ -865,6 +882,10 @@ struct task_struct { +@@ -866,6 +883,10 @@ struct task_struct { /* Stalled due to lack of memory */ unsigned in_memstall:1; #endif @@ -10898,7 +11284,7 @@ index 47f462040..0cbd285a7 100644 unsigned long atomic_flags; /* Flags requiring atomic access. */ -@@ -1006,11 +1027,16 @@ struct task_struct { +@@ -1007,11 +1028,16 @@ struct task_struct { /* Signal handlers: */ struct signal_struct *signal; struct sighand_struct __rcu *sighand; @@ -10915,7 +11301,7 @@ index 47f462040..0cbd285a7 100644 unsigned long sas_ss_sp; size_t sas_ss_size; unsigned int sas_ss_flags; -@@ -1037,6 +1063,7 @@ struct task_struct { +@@ -1038,6 +1064,7 @@ struct task_struct { raw_spinlock_t pi_lock; struct wake_q_node wake_q; @@ -10923,7 +11309,7 @@ index 47f462040..0cbd285a7 100644 #ifdef CONFIG_RT_MUTEXES /* PI waiters blocked on a rt_mutex held by this task: */ -@@ -1064,6 +1091,9 @@ struct task_struct { +@@ -1065,6 +1092,9 @@ struct task_struct { int softirq_context; int irq_config; #endif @@ -10933,7 +11319,7 @@ index 47f462040..0cbd285a7 100644 #ifdef CONFIG_LOCKDEP # define MAX_LOCK_DEPTH 48UL -@@ -1349,6 +1379,7 @@ struct task_struct { +@@ -1350,6 +1380,7 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif @@ -10941,7 +11327,7 @@ index 47f462040..0cbd285a7 100644 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; #endif -@@ -1813,6 +1844,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); +@@ -1821,6 +1852,7 @@ extern struct task_struct *find_get_task_by_vpid(pid_t nr); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -10949,7 +11335,7 @@ index 47f462040..0cbd285a7 100644 extern void wake_up_new_task(struct task_struct *tsk); #ifdef CONFIG_SMP -@@ -1910,6 +1942,89 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) +@@ -1918,6 +1950,89 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -11040,7 +11426,7 @@ index 47f462040..0cbd285a7 100644 * cond_resched() and cond_resched_lock(): latency reduction via * explicit rescheduling in places that are safe. The return diff --git a/include/linux/sched/hotplug.h b/include/linux/sched/hotplug.h -index 9a62ffdd2..412cdaba3 100644 +index 9a62ffdd296f..412cdaba33eb 100644 --- a/include/linux/sched/hotplug.h +++ b/include/linux/sched/hotplug.h @@ -11,8 +11,10 @@ extern int sched_cpu_activate(unsigned int cpu); @@ -11055,7 +11441,7 @@ index 9a62ffdd2..412cdaba3 100644 #endif diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h -index dc1f4dcd9..9796cc213 100644 +index e3e5e149b00e..6d39ad0f55bb 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -49,6 +49,17 @@ static inline void mmdrop(struct mm_struct *mm) @@ -11077,7 +11463,7 @@ index dc1f4dcd9..9796cc213 100644 * mmget() - Pin the address space associated with a &struct mm_struct. * @mm: The address space to pin. diff --git a/include/linux/sched/rt.h b/include/linux/sched/rt.h -index e5af028c0..994c25640 100644 +index e5af028c08b4..994c25640e15 100644 --- a/include/linux/sched/rt.h +++ b/include/linux/sched/rt.h @@ -39,20 +39,12 @@ static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *p) @@ -11102,7 +11488,7 @@ index e5af028c0..994c25640 100644 extern void normalize_rt_tasks(void); diff --git a/include/linux/sched/wake_q.h b/include/linux/sched/wake_q.h -index 26a2013ac..6e2dff721 100644 +index 26a2013ac39c..6e2dff721547 100644 --- a/include/linux/sched/wake_q.h +++ b/include/linux/sched/wake_q.h @@ -58,6 +58,17 @@ static inline bool wake_q_empty(struct wake_q_head *head) @@ -11125,7 +11511,7 @@ index 26a2013ac..6e2dff721 100644 #endif /* _LINUX_SCHED_WAKE_Q_H */ diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h -index 2b70f736b..68d756373 100644 +index 9e655055112d..ffef674deda7 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h @@ -7,6 +7,7 @@ @@ -11155,7 +11541,7 @@ index 2b70f736b..68d756373 100644 int serial8250_console_exit(struct uart_port *port); diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h -index 93240799a..df2871ed8 100644 +index 93240799a404..df2871ed82dc 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -32,7 +32,7 @@ struct shmem_sb_info { @@ -11168,7 +11554,7 @@ index 93240799a..df2871ed8 100644 unsigned char huge; /* Whether to try for hugepages */ kuid_t uid; /* Mount uid for root directory */ diff --git a/include/linux/signal.h b/include/linux/signal.h -index b256f9c65..ebf6c515a 100644 +index b256f9c65661..ebf6c515a7b2 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -265,6 +265,7 @@ static inline void init_sigpending(struct sigpending *sig) @@ -11180,7 +11566,7 @@ index b256f9c65..ebf6c515a 100644 /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ static inline int valid_signal(unsigned long sig) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 68efccc15..3cfa2988b 100644 +index 72cfb047fd2c..ab2cb5a0345d 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -298,6 +298,7 @@ struct sk_buff_head { @@ -11205,7 +11591,7 @@ index 68efccc15..3cfa2988b 100644 struct lock_class_key *class) { diff --git a/include/linux/smp.h b/include/linux/smp.h -index 84a0b4828..8348fa412 100644 +index 84a0b4828f66..8348fa4127a0 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h @@ -260,6 +260,9 @@ static inline int get_boot_cpu_id(void) @@ -11219,7 +11605,7 @@ index 84a0b4828..8348fa412 100644 * Callback to arch code if there's nosmp or maxcpus=0 on the * boot command line: diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h -index 79897841a..c3c70291b 100644 +index 79897841a2cc..c3c70291b46c 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h @@ -309,7 +309,11 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) @@ -11256,7 +11642,7 @@ index 79897841a..c3c70291b 100644 * Pull the atomic_t declaration: * (asm-mips/atomic.h needs above definitions) diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h -index 19a9be9d9..da38149f2 100644 +index 19a9be9d97ee..da38149f2843 100644 --- a/include/linux/spinlock_api_smp.h +++ b/include/linux/spinlock_api_smp.h @@ -187,6 +187,8 @@ static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock) @@ -11271,7 +11657,7 @@ index 19a9be9d9..da38149f2 100644 #endif /* __LINUX_SPINLOCK_API_SMP_H */ diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h new file mode 100644 -index 000000000..3085132ea +index 000000000000..3085132eae38 --- /dev/null +++ b/include/linux/spinlock_rt.h @@ -0,0 +1,155 @@ @@ -11431,7 +11817,7 @@ index 000000000..3085132ea + +#endif diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h -index b981caafe..8d896d3e1 100644 +index b981caafe8bf..8d896d3e1a01 100644 --- a/include/linux/spinlock_types.h +++ b/include/linux/spinlock_types.h @@ -9,93 +9,15 @@ @@ -11537,7 +11923,7 @@ index b981caafe..8d896d3e1 100644 #endif /* __LINUX_SPINLOCK_TYPES_H */ diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h new file mode 100644 -index 000000000..e4549f0dd +index 000000000000..e4549f0dd197 --- /dev/null +++ b/include/linux/spinlock_types_nort.h @@ -0,0 +1,39 @@ @@ -11582,7 +11968,7 @@ index 000000000..e4549f0dd +#endif diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h new file mode 100644 -index 000000000..1d4a180e9 +index 000000000000..1d4a180e983d --- /dev/null +++ b/include/linux/spinlock_types_raw.h @@ -0,0 +1,65 @@ @@ -11653,7 +12039,7 @@ index 000000000..1d4a180e9 +#endif diff --git a/include/linux/spinlock_types_rt.h b/include/linux/spinlock_types_rt.h new file mode 100644 -index 000000000..446da786e +index 000000000000..446da786e5d5 --- /dev/null +++ b/include/linux/spinlock_types_rt.h @@ -0,0 +1,38 @@ @@ -11696,7 +12082,7 @@ index 000000000..446da786e + +#endif diff --git a/include/linux/spinlock_types_up.h b/include/linux/spinlock_types_up.h -index c09b6407a..d9b371fa1 100644 +index c09b6407ae1b..d9b371fa13e0 100644 --- a/include/linux/spinlock_types_up.h +++ b/include/linux/spinlock_types_up.h @@ -1,7 +1,7 @@ @@ -11709,7 +12095,7 @@ index c09b6407a..d9b371fa1 100644 #endif diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h -index 08ec8e2fd..06ad3ae7b 100644 +index 08ec8e2fd9b2..06ad3ae7b27c 100644 --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h @@ -25,6 +25,7 @@ typedef int (*cpu_stop_fn_t)(void *arg); @@ -11739,7 +12125,7 @@ index 08ec8e2fd..06ad3ae7b 100644 /* diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h -index 19f76d87f..7c841bf0a 100644 +index 19f76d87f20f..7c841bf0a250 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h @@ -36,7 +36,17 @@ static inline long set_restart_fn(struct restart_block *restart, @@ -11762,7 +12148,7 @@ index 19f76d87f..7c841bf0a 100644 #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES static inline int arch_within_stack_frames(const void * const stack, diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 409385b25..3b3c9de82 100644 +index 409385b25ecb..3b3c9de8247b 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -67,6 +67,8 @@ struct trace_entry { @@ -11849,7 +12235,7 @@ index 409385b25..3b3c9de82 100644 struct trace_event_file; diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h -index e81856c0b..66eb968a0 100644 +index e81856c0ba13..66eb968a09d4 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h @@ -66,7 +66,7 @@ @@ -11978,7 +12364,7 @@ index e81856c0b..66eb968a0 100644 #endif return __u64_stats_fetch_retry(syncp, start); diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h -index 322dcbfcc..9a3a10ea3 100644 +index 322dcbfcc933..9a3a10ea3e3c 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -63,7 +63,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states); @@ -12002,7 +12388,7 @@ index 322dcbfcc..9a3a10ea3 100644 static inline void count_vm_events(enum vm_event_item item, long delta) diff --git a/include/linux/vtime.h b/include/linux/vtime.h -index 2cdeca062..041d6524d 100644 +index 2cdeca062db3..041d6524d144 100644 --- a/include/linux/vtime.h +++ b/include/linux/vtime.h @@ -83,36 +83,46 @@ static inline void vtime_init_idle(struct task_struct *tsk, int cpu) { } @@ -12069,7 +12455,7 @@ index 2cdeca062..041d6524d 100644 #endif /* _LINUX_KERNEL_VTIME_H */ diff --git a/include/linux/wait.h b/include/linux/wait.h -index 9b8b08331..33001b534 100644 +index 9b8b0833100a..33001b534a84 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -10,6 +10,7 @@ @@ -12081,7 +12467,7 @@ index 9b8b08331..33001b534 100644 typedef struct wait_queue_entry wait_queue_entry_t; diff --git a/include/linux/ww_mutex.h b/include/linux/ww_mutex.h -index 6ecf2a022..3145de598 100644 +index 6ecf2a0220db..3145de598645 100644 --- a/include/linux/ww_mutex.h +++ b/include/linux/ww_mutex.h @@ -28,6 +28,14 @@ struct ww_class { @@ -12100,7 +12486,7 @@ index 6ecf2a022..3145de598 100644 struct task_struct *task; unsigned long stamp; diff --git a/include/net/gen_stats.h b/include/net/gen_stats.h -index 1424e02ce..163f8415e 100644 +index 1424e02cef90..163f8415e5db 100644 --- a/include/net/gen_stats.h +++ b/include/net/gen_stats.h @@ -6,6 +6,7 @@ @@ -12148,7 +12534,7 @@ index 1424e02ce..163f8415e 100644 struct gnet_stats_rate_est64 *sample); diff --git a/include/net/net_seq_lock.h b/include/net/net_seq_lock.h new file mode 100644 -index 000000000..67710bace +index 000000000000..67710bace741 --- /dev/null +++ b/include/net/net_seq_lock.h @@ -0,0 +1,15 @@ @@ -12168,7 +12554,7 @@ index 000000000..67710bace + +#endif diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h -index 9144e0f09..464d14b2a 100644 +index 9144e0f09a30..464d14b2aca3 100644 --- a/include/net/netns/xfrm.h +++ b/include/net/netns/xfrm.h @@ -74,7 +74,7 @@ struct netns_xfrm { @@ -12181,7 +12567,7 @@ index 9144e0f09..464d14b2a 100644 spinlock_t xfrm_policy_lock; diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h -index 330094583..346eeb7fc 100644 +index 250569d8df65..c8b8dba10d9a 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -10,6 +10,7 @@ @@ -12213,7 +12599,7 @@ index 330094583..346eeb7fc 100644 } static inline bool qdisc_is_percpu_stats(const struct Qdisc *q) -@@ -207,17 +212,35 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc) +@@ -187,17 +192,35 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc) } else if (qdisc_is_running(qdisc)) { return false; } @@ -12249,7 +12635,7 @@ index 330094583..346eeb7fc 100644 if (qdisc->flags & TCQ_F_NOLOCK) { spin_unlock(&qdisc->seqlock); -@@ -605,7 +628,7 @@ static inline spinlock_t *qdisc_root_sleeping_lock(const struct Qdisc *qdisc) +@@ -591,7 +614,7 @@ static inline spinlock_t *qdisc_root_sleeping_lock(const struct Qdisc *qdisc) return qdisc_lock(root); } @@ -12259,7 +12645,7 @@ index 330094583..346eeb7fc 100644 struct Qdisc *root = qdisc_root_sleeping(qdisc); diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h -index eb5ec1fb6..122d96db9 100644 +index eb5ec1fb66b4..122d96db9d26 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -732,6 +732,18 @@ DEFINE_EVENT(psi_memstall_template, psi_memstall_leave, @@ -12282,10 +12668,10 @@ index eb5ec1fb6..122d96db9 100644 /* This part must be outside protection */ diff --git a/init/Kconfig b/init/Kconfig -index 27c5ed16f..848a2e5bd 100644 +index beb4a6d1cbcb..51b3bfe343ab 100644 --- a/init/Kconfig +++ b/init/Kconfig -@@ -861,7 +861,7 @@ config NUMA_BALANCING +@@ -866,7 +866,7 @@ config NUMA_BALANCING bool "Memory placement aware NUMA scheduler" depends on ARCH_SUPPORTS_NUMA_BALANCING depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY @@ -12294,7 +12680,7 @@ index 27c5ed16f..848a2e5bd 100644 help This option adds support for automatic NUMA aware memory/task placement. The mechanism is quite primitive and is based on migrating memory when -@@ -994,6 +994,7 @@ config CFS_BANDWIDTH +@@ -1000,6 +1000,7 @@ config CFS_BANDWIDTH config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on CGROUP_SCHED @@ -12302,7 +12688,7 @@ index 27c5ed16f..848a2e5bd 100644 default n help This feature lets you explicitly allocate real CPU bandwidth -@@ -1956,6 +1957,7 @@ choice +@@ -1962,6 +1963,7 @@ choice config SLAB bool "SLAB" @@ -12310,7 +12696,7 @@ index 27c5ed16f..848a2e5bd 100644 select HAVE_HARDENED_USERCOPY_ALLOCATOR help The regular slab allocator that is established and known to work -@@ -1976,6 +1978,7 @@ config SLUB +@@ -1982,6 +1984,7 @@ config SLUB config SLOB depends on EXPERT bool "SLOB (Simple Allocator)" @@ -12318,7 +12704,7 @@ index 27c5ed16f..848a2e5bd 100644 help SLOB replaces the stock allocator with a drastically simpler allocator. SLOB is generally more space efficient but -@@ -2042,7 +2045,7 @@ config SHUFFLE_PAGE_ALLOCATOR +@@ -2048,7 +2051,7 @@ config SHUFFLE_PAGE_ALLOCATOR config SLUB_CPU_PARTIAL default y @@ -12328,7 +12714,7 @@ index 27c5ed16f..848a2e5bd 100644 help Per cpu partial caches accelerate objects allocation and freeing diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks -index 3de8fd118..4198f0273 100644 +index 3de8fd11873b..4198f0273ecd 100644 --- a/kernel/Kconfig.locks +++ b/kernel/Kconfig.locks @@ -251,7 +251,7 @@ config ARCH_USE_QUEUED_RWLOCKS @@ -12341,7 +12727,7 @@ index 3de8fd118..4198f0273 100644 config ARCH_HAS_MMIOWB bool diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt -index 416017301..90837a6cb 100644 +index e62a623031ea..b95f8784c4e4 100644 --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt @@ -1,5 +1,11 @@ @@ -12365,7 +12751,7 @@ index 416017301..90837a6cb 100644 This option turns the kernel into a real-time kernel by replacing various locking primitives (spinlocks, rwlocks, etc.) with diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c -index b7a936e5d..f80a8f91b 100644 +index ad09f3fd3382..43ed0a0dda4b 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -351,7 +351,7 @@ void cpuset_read_unlock(void) @@ -12630,7 +13016,7 @@ index b7a936e5d..f80a8f91b 100644 update_tasks_nodemask(&top_cpuset); } -@@ -3337,11 +3337,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) +@@ -3340,11 +3340,11 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask) { unsigned long flags; @@ -12644,7 +13030,7 @@ index b7a936e5d..f80a8f91b 100644 } /** -@@ -3402,11 +3402,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) +@@ -3405,11 +3405,11 @@ nodemask_t cpuset_mems_allowed(struct task_struct *tsk) nodemask_t mask; unsigned long flags; @@ -12658,7 +13044,7 @@ index b7a936e5d..f80a8f91b 100644 return mask; } -@@ -3498,14 +3498,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) +@@ -3501,14 +3501,14 @@ bool __cpuset_node_allowed(int node, gfp_t gfp_mask) return true; /* Not hardwall and node outside mems_allowed: scan up cpusets */ @@ -12676,7 +13062,7 @@ index b7a936e5d..f80a8f91b 100644 } diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c -index d2ae14d0b..7b3bea56d 100644 +index d2ae14d0b9e5..7b3bea56d593 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -156,8 +156,9 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp, bool may_sleep) @@ -12700,7 +13086,7 @@ index d2ae14d0b..7b3bea56d 100644 /* if @may_sleep, play nice and yield if necessary */ if (may_sleep && (need_resched() || diff --git a/kernel/cpu.c b/kernel/cpu.c -index c06ced18f..10b6287af 100644 +index c06ced18f78a..10b6287afe97 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1662,7 +1662,7 @@ static struct cpuhp_step cpuhp_hp_states[] = { @@ -12727,10 +13113,10 @@ index c06ced18f..10b6287af 100644 [CPUHP_AP_SMPBOOT_THREADS] = { .name = "smpboot/threads:online", diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c -index 930ac1b25..dbf1d126a 100644 +index 4e09fab52faf..1f5c577b926e 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c -@@ -2101,7 +2101,7 @@ static int kdb_dmesg(int argc, const char **argv) +@@ -2157,7 +2157,7 @@ static int kdb_dmesg(int argc, const char **argv) int adjust = 0; int n = 0; int skip = 0; @@ -12739,7 +13125,7 @@ index 930ac1b25..dbf1d126a 100644 size_t len; char buf[201]; -@@ -2126,8 +2126,8 @@ static int kdb_dmesg(int argc, const char **argv) +@@ -2182,8 +2182,8 @@ static int kdb_dmesg(int argc, const char **argv) kdb_set(2, setargs); } @@ -12750,7 +13136,7 @@ index 930ac1b25..dbf1d126a 100644 n++; if (lines < 0) { -@@ -2159,8 +2159,8 @@ static int kdb_dmesg(int argc, const char **argv) +@@ -2215,8 +2215,8 @@ static int kdb_dmesg(int argc, const char **argv) if (skip >= n || skip < 0) return 0; @@ -12762,7 +13148,7 @@ index 930ac1b25..dbf1d126a 100644 skip--; continue; diff --git a/kernel/entry/common.c b/kernel/entry/common.c -index cea3957eb..790b0992e 100644 +index cea3957ebdbc..790b0992ef77 100644 --- a/kernel/entry/common.c +++ b/kernel/entry/common.c @@ -2,6 +2,7 @@ @@ -12810,7 +13196,7 @@ index cea3957eb..790b0992e 100644 } } diff --git a/kernel/exit.c b/kernel/exit.c -index d13d67fc5..f5933bd07 100644 +index d13d67fc5f4e..f5933bd07932 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -152,7 +152,7 @@ static void __exit_signal(struct task_struct *tsk) @@ -12823,7 +13209,7 @@ index d13d67fc5..f5933bd07 100644 spin_unlock(&sighand->siglock); diff --git a/kernel/fork.c b/kernel/fork.c -index 0fb86b65a..240e256f0 100644 +index 8a2e827815b6..e70cd01fc69c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -42,6 +42,7 @@ @@ -12879,7 +13265,7 @@ index 0fb86b65a..240e256f0 100644 io_uring_free(tsk); cgroup_free(tsk); task_numa_free(tsk, true); -@@ -929,10 +952,12 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) +@@ -930,10 +953,12 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) tsk->splice_pipe = NULL; tsk->task_frag.page = NULL; tsk->wake_q.next = NULL; @@ -12892,7 +13278,7 @@ index 0fb86b65a..240e256f0 100644 #ifdef CONFIG_FAULT_INJECTION tsk->fail_nth = 0; -@@ -2028,6 +2053,7 @@ static __latent_entropy struct task_struct *copy_process( +@@ -2029,6 +2054,7 @@ static __latent_entropy struct task_struct *copy_process( spin_lock_init(&p->alloc_lock); init_sigpending(&p->pending); @@ -12901,7 +13287,7 @@ index 0fb86b65a..240e256f0 100644 p->utime = p->stime = p->gtime = 0; #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME diff --git a/kernel/futex.c b/kernel/futex.c -index 98a6e1b80..b2b275bc1 100644 +index 98a6e1b80bfe..b2b275bc1958 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1498,6 +1498,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_pi_state *pi_ @@ -13070,54 +13456,58 @@ index 98a6e1b80..b2b275bc1 100644 ret = 0; diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c -index 762a928e1..7929fcdb7 100644 +index 8806444a6855..acbce92f99b8 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c -@@ -192,10 +192,16 @@ irqreturn_t handle_irq_event_percpu(struct irq_desc *desc) - { +@@ -193,9 +193,17 @@ irqreturn_t handle_irq_event_percpu(struct irq_desc *desc) irqreturn_t retval; unsigned int flags = 0; + + struct pt_regs *regs = get_irq_regs(); + u64 ip = regs ? instruction_pointer(regs) : 0; - ++ retval = __handle_irq_event_percpu(desc, &flags); -- add_interrupt_randomness(desc->irq_data.irq, flags); +#ifdef CONFIG_PREEMPT_RT + desc->random_ip = ip; +#else -+ add_interrupt_randomness(desc->irq_data.irq, flags, ip); + add_interrupt_randomness(desc->irq_data.irq); +#endif ++ if (!noirqdebug) note_interrupt(desc, retval); diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index d3033e1f9..4f7885934 100644 +index 239f5084bfb2..bc59cb61fbe9 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c -@@ -1260,6 +1260,8 @@ static int irq_thread(void *data) - irqreturn_t (*handler_fn)(struct irq_desc *desc, - struct irqaction *action); +@@ -1302,6 +1302,8 @@ static int irq_thread(void *data) + + irq_thread_set_ready(desc, action); + sched_set_fifo(current); + if (force_irqthreads && test_bit(IRQTF_FORCED_THREAD, &action->thread_flags)) handler_fn = irq_forced_thread_fn; -@@ -1280,6 +1282,12 @@ static int irq_thread(void *data) +@@ -1322,6 +1324,16 @@ static int irq_thread(void *data) if (action_ret == IRQ_WAKE_THREAD) irq_wake_secondary(desc, action); + if (IS_ENABLED(CONFIG_PREEMPT_RT)) { + migrate_disable(); -+ add_interrupt_randomness(action->irq, 0, -+ desc->random_ip ^ (unsigned long) action); ++ // add_interrupt_randomness(action->irq, 0, ++ // desc->random_ip ^ (unsigned long) action); ++ ++ add_interrupt_randomness(action->irq); ++ ++ + migrate_enable(); + } wake_threads_waitq(desc); } -@@ -1425,8 +1433,6 @@ setup_irq_thread(struct irqaction *new, unsigned int irq, bool secondary) +@@ -1467,8 +1479,6 @@ setup_irq_thread(struct irqaction *new, unsigned int irq, bool secondary) if (IS_ERR(t)) return PTR_ERR(t); @@ -13126,7 +13516,7 @@ index d3033e1f9..4f7885934 100644 /* * We keep the reference to the task struct even if * the thread dies to avoid that the interrupt code -@@ -2823,7 +2829,7 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state); +@@ -2857,7 +2867,7 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state); * This call sets the internal irqchip state of an interrupt, * depending on the value of @which. * @@ -13136,7 +13526,7 @@ index d3033e1f9..4f7885934 100644 */ int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c -index f865e5f4d..dc7311dd7 100644 +index f865e5f4d382..dc7311dd74b1 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c @@ -443,6 +443,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true"); @@ -13162,7 +13552,7 @@ index f865e5f4d..dc7311dd7 100644 printk(KERN_WARNING "Misrouted IRQ fixup and polling support " "enabled\n"); diff --git a/kernel/irq_work.c b/kernel/irq_work.c -index fbff25adb..d3466e3ba 100644 +index fbff25adb574..d3466e3bacc1 100644 --- a/kernel/irq_work.c +++ b/kernel/irq_work.c @@ -18,11 +18,36 @@ @@ -13365,7 +13755,7 @@ index fbff25adb..d3466e3ba 100644 +} +early_initcall(irq_work_init_threads); diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c -index b9a6f4658..c26219f34 100644 +index b9a6f4658f89..c26219f34445 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -984,7 +984,6 @@ void crash_kexec(struct pt_regs *regs) @@ -13377,7 +13767,7 @@ index b9a6f4658..c26219f34 100644 /* diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c -index 35859da8b..dfff31ed6 100644 +index 35859da8bd4f..dfff31ed644a 100644 --- a/kernel/ksysfs.c +++ b/kernel/ksysfs.c @@ -138,6 +138,15 @@ KERNEL_ATTR_RO(vmcoreinfo); @@ -13407,7 +13797,7 @@ index 35859da8b..dfff31ed6 100644 NULL }; diff --git a/kernel/kthread.c b/kernel/kthread.c -index 508fe5278..3ce6a31db 100644 +index 508fe5278285..3ce6a31db7b4 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -264,6 +264,7 @@ EXPORT_SYMBOL_GPL(kthread_parkme); @@ -13455,7 +13845,7 @@ index 508fe5278..3ce6a31db 100644 kfree(create); return task; diff --git a/kernel/locking/Makefile b/kernel/locking/Makefile -index 6d11cfb9b..c7fbf737e 100644 +index 6d11cfb9b41f..c7fbf737e16e 100644 --- a/kernel/locking/Makefile +++ b/kernel/locking/Makefile @@ -3,7 +3,7 @@ @@ -13494,10 +13884,10 @@ index 6d11cfb9b..c7fbf737e 100644 obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o obj-$(CONFIG_WW_MUTEX_SELFTEST) += test-ww_mutex.o diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index af4b35450..787099636 100644 +index b6683cefe19a..4be12aad9527 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -5410,6 +5410,7 @@ static noinstr void check_flags(unsigned long flags) +@@ -5412,6 +5412,7 @@ static noinstr void check_flags(unsigned long flags) } } @@ -13505,7 +13895,7 @@ index af4b35450..787099636 100644 /* * We dont accurately track softirq state in e.g. * hardirq contexts (such as on 4KSTACKS), so only -@@ -5424,6 +5425,7 @@ static noinstr void check_flags(unsigned long flags) +@@ -5426,6 +5427,7 @@ static noinstr void check_flags(unsigned long flags) DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled); } } @@ -13515,7 +13905,7 @@ index af4b35450..787099636 100644 print_irqtrace_events(current); diff --git a/kernel/locking/mutex-rt.c b/kernel/locking/mutex-rt.c new file mode 100644 -index 000000000..2b849e6b9 +index 000000000000..2b849e6b9b4a --- /dev/null +++ b/kernel/locking/mutex-rt.c @@ -0,0 +1,224 @@ @@ -13744,7 +14134,7 @@ index 000000000..2b849e6b9 +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); diff --git a/kernel/locking/rtmutex-debug.c b/kernel/locking/rtmutex-debug.c -index 36e69100e..fb1501003 100644 +index 36e69100e8e0..fb150100335f 100644 --- a/kernel/locking/rtmutex-debug.c +++ b/kernel/locking/rtmutex-debug.c @@ -32,110 +32,12 @@ @@ -13883,7 +14273,7 @@ index 36e69100e..fb1501003 100644 } - diff --git a/kernel/locking/rtmutex-debug.h b/kernel/locking/rtmutex-debug.h -index fc549713b..659e93e25 100644 +index fc549713bba3..659e93e256c6 100644 --- a/kernel/locking/rtmutex-debug.h +++ b/kernel/locking/rtmutex-debug.h @@ -18,20 +18,9 @@ extern void debug_rt_mutex_unlock(struct rt_mutex *lock); @@ -13908,7 +14298,7 @@ index fc549713b..659e93e25 100644 - debug_rt_mutex_print_deadlock(w); -} diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c -index f00dd928f..d64d961d0 100644 +index f00dd928fc71..d64d961d048c 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -8,6 +8,11 @@ @@ -15260,7 +15650,7 @@ index f00dd928f..d64d961d0 100644 +EXPORT_SYMBOL(__rt_mutex_owner_current); +#endif diff --git a/kernel/locking/rtmutex.h b/kernel/locking/rtmutex.h -index 732f96abf..338ccd291 100644 +index 732f96abf462..338ccd29119a 100644 --- a/kernel/locking/rtmutex.h +++ b/kernel/locking/rtmutex.h @@ -19,15 +19,8 @@ @@ -15280,7 +15670,7 @@ index 732f96abf..338ccd291 100644 enum rtmutex_chainwalk walk) { diff --git a/kernel/locking/rtmutex_common.h b/kernel/locking/rtmutex_common.h -index ca6fb4890..248a7d915 100644 +index ca6fb489007b..248a7d91583b 100644 --- a/kernel/locking/rtmutex_common.h +++ b/kernel/locking/rtmutex_common.h @@ -15,6 +15,7 @@ @@ -15354,7 +15744,7 @@ index ca6fb4890..248a7d915 100644 # include "rtmutex-debug.h" diff --git a/kernel/locking/rwlock-rt.c b/kernel/locking/rwlock-rt.c new file mode 100644 -index 000000000..3d2d1f14b +index 000000000000..3d2d1f14b513 --- /dev/null +++ b/kernel/locking/rwlock-rt.c @@ -0,0 +1,334 @@ @@ -15694,7 +16084,7 @@ index 000000000..3d2d1f14b +EXPORT_SYMBOL(__rt_rwlock_init); diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c new file mode 100644 -index 000000000..b61edc4dc +index 000000000000..b61edc4dcb73 --- /dev/null +++ b/kernel/locking/rwsem-rt.c @@ -0,0 +1,317 @@ @@ -16016,7 +16406,7 @@ index 000000000..b61edc4dc + __up_write_unlock(sem, WRITER_BIAS - 1, flags); +} diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c -index cc5cc889b..f7c909ef1 100644 +index cc5cc889b5b7..f7c909ef1261 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -28,6 +28,7 @@ @@ -16056,7 +16446,7 @@ index cc5cc889b..f7c909ef1 100644 } EXPORT_SYMBOL(up_read_non_owner); diff --git a/kernel/locking/spinlock.c b/kernel/locking/spinlock.c -index 0ff08380f..45445a2f1 100644 +index 0ff08380f531..45445a2f1799 100644 --- a/kernel/locking/spinlock.c +++ b/kernel/locking/spinlock.c @@ -124,8 +124,11 @@ void __lockfunc __raw_##op##_lock_bh(locktype##_t *lock) \ @@ -16090,7 +16480,7 @@ index 0ff08380f..45445a2f1 100644 void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) diff --git a/kernel/locking/spinlock_debug.c b/kernel/locking/spinlock_debug.c -index b9d93087e..72e306e0e 100644 +index b9d93087ee66..72e306e0e8a3 100644 --- a/kernel/locking/spinlock_debug.c +++ b/kernel/locking/spinlock_debug.c @@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, @@ -16124,7 +16514,7 @@ index b9d93087e..72e306e0e 100644 + +#endif diff --git a/kernel/notifier.c b/kernel/notifier.c -index 1b019cbca..c20782f07 100644 +index 1b019cbca594..c20782f07643 100644 --- a/kernel/notifier.c +++ b/kernel/notifier.c @@ -142,9 +142,9 @@ int atomic_notifier_chain_register(struct atomic_notifier_head *nh, @@ -16164,7 +16554,7 @@ index 1b019cbca..c20782f07 100644 return ret; } diff --git a/kernel/panic.c b/kernel/panic.c -index d991c3b1b..fa3025e0c 100644 +index d991c3b1b559..fa3025e0c601 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -177,12 +177,28 @@ static void panic_print_sys_info(void) @@ -16259,7 +16649,7 @@ index d991c3b1b..fa3025e0c 100644 /* diff --git a/kernel/printk/Makefile b/kernel/printk/Makefile -index eee3dc9b6..59cb24e25 100644 +index eee3dc9b60a9..59cb24e25f00 100644 --- a/kernel/printk/Makefile +++ b/kernel/printk/Makefile @@ -1,5 +1,4 @@ @@ -16269,7 +16659,7 @@ index eee3dc9b6..59cb24e25 100644 obj-$(CONFIG_A11Y_BRAILLE_CONSOLE) += braille.o obj-$(CONFIG_PRINTK) += printk_ringbuffer.o diff --git a/kernel/printk/internal.h b/kernel/printk/internal.h -index b1c155328..059c3d876 100644 +index b1c155328b04..059c3d876e33 100644 --- a/kernel/printk/internal.h +++ b/kernel/printk/internal.h @@ -12,8 +12,6 @@ @@ -16297,7 +16687,7 @@ index b1c155328..059c3d876 100644 static inline bool printk_percpu_data_ready(void) { return false; } #endif /* CONFIG_PRINTK */ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 43f8f2573..eeeb590e1 100644 +index ecd28d4fa20e..7859f42a60cf 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -44,6 +44,9 @@ @@ -16318,7 +16708,7 @@ index 43f8f2573..eeeb590e1 100644 int console_printk[4] = { CONSOLE_LOGLEVEL_DEFAULT, /* console_loglevel */ -@@ -225,19 +227,7 @@ static int nr_ext_console_drivers; +@@ -227,19 +229,7 @@ static int nr_ext_console_drivers; static int __down_trylock_console_sem(unsigned long ip) { @@ -16339,7 +16729,7 @@ index 43f8f2573..eeeb590e1 100644 return 1; mutex_acquire(&console_lock_dep_map, 0, 1, ip); return 0; -@@ -246,13 +236,9 @@ static int __down_trylock_console_sem(unsigned long ip) +@@ -248,13 +238,9 @@ static int __down_trylock_console_sem(unsigned long ip) static void __up_console_sem(unsigned long ip) { @@ -16353,7 +16743,7 @@ index 43f8f2573..eeeb590e1 100644 } #define up_console_sem() __up_console_sem(_RET_IP_) -@@ -266,11 +252,6 @@ static void __up_console_sem(unsigned long ip) +@@ -268,11 +254,6 @@ static void __up_console_sem(unsigned long ip) */ static int console_locked, console_suspended; @@ -16365,7 +16755,7 @@ index 43f8f2573..eeeb590e1 100644 /* * Array of consoles built from command line options (console=) */ -@@ -355,61 +336,43 @@ enum log_flags { +@@ -357,61 +338,43 @@ enum log_flags { LOG_CONT = 8, /* text is a fragment of a continuation line */ }; @@ -16449,7 +16839,7 @@ index 43f8f2573..eeeb590e1 100644 #define LOG_LINE_MAX (1024 - PREFIX_MAX) #define LOG_LEVEL(v) ((v) & 0x07) -@@ -447,11 +410,36 @@ static struct printk_ringbuffer *prb = &printk_rb_static; +@@ -449,11 +412,36 @@ static struct printk_ringbuffer *prb = &printk_rb_static; */ static bool __printk_percpu_data_ready __read_mostly; @@ -16487,7 +16877,7 @@ index 43f8f2573..eeeb590e1 100644 /* Return log buffer address */ char *log_buf_addr_get(void) { -@@ -493,52 +481,6 @@ static void truncate_msg(u16 *text_len, u16 *trunc_msg_len) +@@ -495,52 +483,6 @@ static void truncate_msg(u16 *text_len, u16 *trunc_msg_len) *trunc_msg_len = 0; } @@ -16540,7 +16930,7 @@ index 43f8f2573..eeeb590e1 100644 int dmesg_restrict = IS_ENABLED(CONFIG_SECURITY_DMESG_RESTRICT); static int syslog_action_restricted(int type) -@@ -667,7 +609,7 @@ static ssize_t msg_print_ext_body(char *buf, size_t size, +@@ -669,7 +611,7 @@ static ssize_t msg_print_ext_body(char *buf, size_t size, /* /dev/kmsg - userspace message inject/listen interface */ struct devkmsg_user { @@ -16549,7 +16939,7 @@ index 43f8f2573..eeeb590e1 100644 struct ratelimit_state rs; struct mutex lock; char buf[CONSOLE_EXT_LOG_MAX]; -@@ -768,27 +710,22 @@ static ssize_t devkmsg_read(struct file *file, char __user *buf, +@@ -770,27 +712,22 @@ static ssize_t devkmsg_read(struct file *file, char __user *buf, if (ret) return ret; @@ -16581,7 +16971,7 @@ index 43f8f2573..eeeb590e1 100644 goto out; } -@@ -797,8 +734,7 @@ static ssize_t devkmsg_read(struct file *file, char __user *buf, +@@ -799,8 +736,7 @@ static ssize_t devkmsg_read(struct file *file, char __user *buf, &r->text_buf[0], r->info->text_len, &r->info->dev_info); @@ -16591,7 +16981,7 @@ index 43f8f2573..eeeb590e1 100644 if (len > count) { ret = -EINVAL; -@@ -833,11 +769,10 @@ static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence) +@@ -835,11 +771,10 @@ static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence) if (offset) return -ESPIPE; @@ -16604,7 +16994,7 @@ index 43f8f2573..eeeb590e1 100644 break; case SEEK_DATA: /* -@@ -845,16 +780,15 @@ static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence) +@@ -847,16 +782,15 @@ static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence) * like issued by 'dmesg -c'. Reading /dev/kmsg itself * changes no global state, and does not clear anything. */ @@ -16623,7 +17013,7 @@ index 43f8f2573..eeeb590e1 100644 return ret; } -@@ -869,15 +803,13 @@ static __poll_t devkmsg_poll(struct file *file, poll_table *wait) +@@ -871,15 +805,13 @@ static __poll_t devkmsg_poll(struct file *file, poll_table *wait) poll_wait(file, &log_wait, wait); @@ -16641,7 +17031,7 @@ index 43f8f2573..eeeb590e1 100644 return ret; } -@@ -910,9 +842,7 @@ static int devkmsg_open(struct inode *inode, struct file *file) +@@ -912,9 +844,7 @@ static int devkmsg_open(struct inode *inode, struct file *file) prb_rec_init_rd(&user->record, &user->info, &user->text_buf[0], sizeof(user->text_buf)); @@ -16652,7 +17042,7 @@ index 43f8f2573..eeeb590e1 100644 file->private_data = user; return 0; -@@ -1004,6 +934,9 @@ void log_buf_vmcoreinfo_setup(void) +@@ -1006,6 +936,9 @@ void log_buf_vmcoreinfo_setup(void) VMCOREINFO_SIZE(atomic_long_t); VMCOREINFO_TYPE_OFFSET(atomic_long_t, counter); @@ -16662,7 +17052,7 @@ index 43f8f2573..eeeb590e1 100644 } #endif -@@ -1075,9 +1008,6 @@ static inline void log_buf_add_cpu(void) {} +@@ -1077,9 +1010,6 @@ static inline void log_buf_add_cpu(void) {} static void __init set_percpu_data_ready(void) { @@ -16672,7 +17062,7 @@ index 43f8f2573..eeeb590e1 100644 __printk_percpu_data_ready = true; } -@@ -1117,7 +1047,6 @@ void __init setup_log_buf(int early) +@@ -1119,7 +1049,6 @@ void __init setup_log_buf(int early) struct printk_record r; size_t new_descs_size; size_t new_infos_size; @@ -16680,7 +17070,7 @@ index 43f8f2573..eeeb590e1 100644 char *new_log_buf; unsigned int free; u64 seq; -@@ -1175,8 +1104,6 @@ void __init setup_log_buf(int early) +@@ -1177,8 +1106,6 @@ void __init setup_log_buf(int early) new_descs, ilog2(new_descs_count), new_infos); @@ -16689,7 +17079,7 @@ index 43f8f2573..eeeb590e1 100644 log_buf_len = new_log_buf_len; log_buf = new_log_buf; new_log_buf_len = 0; -@@ -1192,8 +1119,6 @@ void __init setup_log_buf(int early) +@@ -1194,8 +1121,6 @@ void __init setup_log_buf(int early) */ prb = &printk_rb_dynamic; @@ -16698,7 +17088,7 @@ index 43f8f2573..eeeb590e1 100644 if (seq != prb_next_seq(&printk_rb_static)) { pr_err("dropped %llu messages\n", prb_next_seq(&printk_rb_static) - seq); -@@ -1470,6 +1395,50 @@ static size_t get_record_print_text_size(struct printk_info *info, +@@ -1472,6 +1397,50 @@ static size_t get_record_print_text_size(struct printk_info *info, return ((prefix_len * line_count) + info->text_len + 1); } @@ -16749,7 +17139,7 @@ index 43f8f2573..eeeb590e1 100644 static int syslog_print(char __user *buf, int size) { struct printk_info info; -@@ -1477,19 +1446,19 @@ static int syslog_print(char __user *buf, int size) +@@ -1479,19 +1448,19 @@ static int syslog_print(char __user *buf, int size) char *text; int len = 0; @@ -16773,7 +17163,7 @@ index 43f8f2573..eeeb590e1 100644 break; } if (r.info->seq != syslog_seq) { -@@ -1518,7 +1487,7 @@ static int syslog_print(char __user *buf, int size) +@@ -1520,7 +1489,7 @@ static int syslog_print(char __user *buf, int size) syslog_partial += n; } else n = 0; @@ -16782,7 +17172,7 @@ index 43f8f2573..eeeb590e1 100644 if (!n) break; -@@ -1541,34 +1510,25 @@ static int syslog_print(char __user *buf, int size) +@@ -1543,34 +1512,25 @@ static int syslog_print(char __user *buf, int size) static int syslog_print_all(char __user *buf, int size, bool clear) { struct printk_info info; @@ -16821,7 +17211,7 @@ index 43f8f2573..eeeb590e1 100644 len = 0; prb_for_each_record(seq, prb, seq, &r) { -@@ -1581,20 +1541,20 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1583,20 +1543,20 @@ static int syslog_print_all(char __user *buf, int size, bool clear) break; } @@ -16847,7 +17237,7 @@ index 43f8f2573..eeeb590e1 100644 kfree(text); return len; -@@ -1602,9 +1562,21 @@ static int syslog_print_all(char __user *buf, int size, bool clear) +@@ -1604,9 +1564,21 @@ static int syslog_print_all(char __user *buf, int size, bool clear) static void syslog_clear(void) { @@ -16872,7 +17262,7 @@ index 43f8f2573..eeeb590e1 100644 } int do_syslog(int type, char __user *buf, int len, int source) -@@ -1630,8 +1602,9 @@ int do_syslog(int type, char __user *buf, int len, int source) +@@ -1632,8 +1604,9 @@ int do_syslog(int type, char __user *buf, int len, int source) return 0; if (!access_ok(buf, len)) return -EFAULT; @@ -16883,7 +17273,7 @@ index 43f8f2573..eeeb590e1 100644 if (error) return error; error = syslog_print(buf, len); -@@ -1679,10 +1652,10 @@ int do_syslog(int type, char __user *buf, int len, int source) +@@ -1681,10 +1654,10 @@ int do_syslog(int type, char __user *buf, int len, int source) break; /* Number of chars in the log buffer */ case SYSLOG_ACTION_SIZE_UNREAD: @@ -16896,7 +17286,7 @@ index 43f8f2573..eeeb590e1 100644 return 0; } if (info.seq != syslog_seq) { -@@ -1710,7 +1683,7 @@ int do_syslog(int type, char __user *buf, int len, int source) +@@ -1712,7 +1685,7 @@ int do_syslog(int type, char __user *buf, int len, int source) } error -= syslog_partial; } @@ -16905,7 +17295,7 @@ index 43f8f2573..eeeb590e1 100644 break; /* Size of the log buffer */ case SYSLOG_ACTION_SIZE_BUFFER: -@@ -1729,20 +1702,114 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) +@@ -1731,20 +1704,114 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) return do_syslog(type, buf, len, SYSLOG_FROM_READER); } @@ -17032,7 +17422,7 @@ index 43f8f2573..eeeb590e1 100644 #if defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI) void zap_locks(void) -@@ -1763,272 +1830,269 @@ void zap_locks(void) +@@ -1765,272 +1832,269 @@ void zap_locks(void) } #endif @@ -17509,7 +17899,7 @@ index 43f8f2573..eeeb590e1 100644 } asmlinkage int vprintk_emit(int facility, int level, -@@ -2036,60 +2100,43 @@ asmlinkage int vprintk_emit(int facility, int level, +@@ -2038,60 +2102,43 @@ asmlinkage int vprintk_emit(int facility, int level, const char *fmt, va_list args) { int printed_len; @@ -17588,7 +17978,7 @@ index 43f8f2573..eeeb590e1 100644 /** * printk - print a kernel message -@@ -2125,38 +2172,158 @@ asmlinkage __visible int printk(const char *fmt, ...) +@@ -2127,38 +2174,158 @@ asmlinkage __visible int printk(const char *fmt, ...) } EXPORT_SYMBOL(printk); @@ -17771,7 +18161,7 @@ index 43f8f2573..eeeb590e1 100644 #endif /* CONFIG_PRINTK */ -@@ -2401,34 +2568,6 @@ int is_console_locked(void) +@@ -2403,34 +2570,6 @@ int is_console_locked(void) } EXPORT_SYMBOL(is_console_locked); @@ -17806,7 +18196,7 @@ index 43f8f2573..eeeb590e1 100644 /** * console_unlock - unlock the console system * -@@ -2445,142 +2584,14 @@ static inline int can_use_console(void) +@@ -2447,142 +2586,14 @@ static inline int can_use_console(void) */ void console_unlock(void) { @@ -17949,7 +18339,7 @@ index 43f8f2573..eeeb590e1 100644 } EXPORT_SYMBOL(console_unlock); -@@ -2630,23 +2641,20 @@ void console_unblank(void) +@@ -2632,23 +2643,20 @@ void console_unblank(void) */ void console_flush_on_panic(enum con_flush_mode mode) { @@ -17984,7 +18374,7 @@ index 43f8f2573..eeeb590e1 100644 console_unlock(); } EXPORT_SYMBOL(console_flush_on_panic); -@@ -2782,7 +2790,6 @@ static int try_enable_new_console(struct console *newcon, bool user_specified) +@@ -2784,7 +2792,6 @@ static int try_enable_new_console(struct console *newcon, bool user_specified) */ void register_console(struct console *newcon) { @@ -17992,7 +18382,7 @@ index 43f8f2573..eeeb590e1 100644 struct console *bcon = NULL; int err; -@@ -2806,6 +2813,8 @@ void register_console(struct console *newcon) +@@ -2808,6 +2815,8 @@ void register_console(struct console *newcon) } } @@ -18001,7 +18391,7 @@ index 43f8f2573..eeeb590e1 100644 if (console_drivers && console_drivers->flags & CON_BOOT) bcon = console_drivers; -@@ -2847,8 +2856,10 @@ void register_console(struct console *newcon) +@@ -2849,8 +2858,10 @@ void register_console(struct console *newcon) * the real console are the same physical device, it's annoying to * see the beginning boot messages twice */ @@ -18013,7 +18403,7 @@ index 43f8f2573..eeeb590e1 100644 /* * Put this console in the list - keep the -@@ -2870,26 +2881,12 @@ void register_console(struct console *newcon) +@@ -2872,26 +2883,12 @@ void register_console(struct console *newcon) if (newcon->flags & CON_EXTENDED) nr_ext_console_drivers++; @@ -18046,7 +18436,7 @@ index 43f8f2573..eeeb590e1 100644 console_unlock(); console_sysfs_notify(); -@@ -2963,6 +2960,9 @@ int unregister_console(struct console *console) +@@ -2965,6 +2962,9 @@ int unregister_console(struct console *console) console_unlock(); console_sysfs_notify(); @@ -18056,7 +18446,7 @@ index 43f8f2573..eeeb590e1 100644 if (console->exit) res = console->exit(console); -@@ -3045,6 +3045,15 @@ static int __init printk_late_init(void) +@@ -3047,6 +3047,15 @@ static int __init printk_late_init(void) unregister_console(con); } } @@ -18072,7 +18462,7 @@ index 43f8f2573..eeeb590e1 100644 ret = cpuhp_setup_state_nocalls(CPUHP_PRINTK_DEAD, "printk:dead", NULL, console_cpu_notify); WARN_ON(ret < 0); -@@ -3060,7 +3069,6 @@ late_initcall(printk_late_init); +@@ -3062,7 +3071,6 @@ late_initcall(printk_late_init); * Delayed printk version, for scheduler-internal messages: */ #define PRINTK_PENDING_WAKEUP 0x01 @@ -18080,7 +18470,7 @@ index 43f8f2573..eeeb590e1 100644 static DEFINE_PER_CPU(int, printk_pending); -@@ -3068,14 +3076,8 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) +@@ -3070,14 +3078,8 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) { int pending = __this_cpu_xchg(printk_pending, 0); @@ -18096,7 +18486,7 @@ index 43f8f2573..eeeb590e1 100644 } static DEFINE_PER_CPU(struct irq_work, wake_up_klogd_work) = -@@ -3094,25 +3096,10 @@ void wake_up_klogd(void) +@@ -3096,25 +3098,10 @@ void wake_up_klogd(void) preempt_enable(); } @@ -18125,7 +18515,7 @@ index 43f8f2573..eeeb590e1 100644 } int printk_deferred(const char *fmt, ...) -@@ -3251,8 +3238,26 @@ EXPORT_SYMBOL_GPL(kmsg_dump_reason_str); +@@ -3253,8 +3240,26 @@ EXPORT_SYMBOL_GPL(kmsg_dump_reason_str); */ void kmsg_dump(enum kmsg_dump_reason reason) { @@ -18153,7 +18543,7 @@ index 43f8f2573..eeeb590e1 100644 rcu_read_lock(); list_for_each_entry_rcu(dumper, &dump_list, list) { -@@ -3270,25 +3275,18 @@ void kmsg_dump(enum kmsg_dump_reason reason) +@@ -3272,25 +3277,18 @@ void kmsg_dump(enum kmsg_dump_reason reason) continue; /* initialize iterator with data about the stored records */ @@ -18184,7 +18574,7 @@ index 43f8f2573..eeeb590e1 100644 * @syslog: include the "<4>" prefixes * @line: buffer to copy the line to * @size: maximum size of the buffer -@@ -3302,11 +3300,9 @@ void kmsg_dump(enum kmsg_dump_reason reason) +@@ -3304,11 +3302,9 @@ void kmsg_dump(enum kmsg_dump_reason reason) * * A return value of FALSE indicates that there are no more records to * read. @@ -18198,7 +18588,7 @@ index 43f8f2573..eeeb590e1 100644 { struct printk_info info; unsigned int line_count; -@@ -3316,16 +3312,16 @@ bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, +@@ -3318,16 +3314,16 @@ bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, prb_rec_init_rd(&r, &info, line, size); @@ -18218,7 +18608,7 @@ index 43f8f2573..eeeb590e1 100644 &info, &line_count)) { goto out; } -@@ -3334,48 +3330,18 @@ bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, +@@ -3336,48 +3332,18 @@ bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, } @@ -18269,7 +18659,7 @@ index 43f8f2573..eeeb590e1 100644 * @syslog: include the "<4>" prefixes * @buf: buffer to copy the line to * @size: maximum size of the buffer -@@ -3392,116 +3358,256 @@ EXPORT_SYMBOL_GPL(kmsg_dump_get_line); +@@ -3394,116 +3360,256 @@ EXPORT_SYMBOL_GPL(kmsg_dump_get_line); * A return value of FALSE indicates that there are no more records to * read. */ @@ -18593,7 +18983,7 @@ index 43f8f2573..eeeb590e1 100644 +} +EXPORT_SYMBOL(pr_flush); diff --git a/kernel/printk/printk_safe.c b/kernel/printk/printk_safe.c -index b774685cc..218e42566 100644 +index b774685ccf80..218e42566550 100644 --- a/kernel/printk/printk_safe.c +++ b/kernel/printk/printk_safe.c @@ -15,295 +15,9 @@ @@ -18988,7 +19378,7 @@ index b774685cc..218e42566 100644 - printk_safe_flush(); -} diff --git a/kernel/ptrace.c b/kernel/ptrace.c -index 072033f40..b93f9bfd7 100644 +index 6d82fba43c97..8a65ec16c512 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -197,7 +197,14 @@ static bool ptrace_freeze_traced(struct task_struct *task) @@ -19045,10 +19435,10 @@ index 072033f40..b93f9bfd7 100644 } diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig -index 84dfa8dae..e222aa0a5 100644 +index b1d7aef10e6a..5e11e30f45eb 100644 --- a/kernel/rcu/Kconfig +++ b/kernel/rcu/Kconfig -@@ -189,8 +189,8 @@ config RCU_FAST_NO_HZ +@@ -190,8 +190,8 @@ config RCU_FAST_NO_HZ config RCU_BOOST bool "Enable RCU priority boosting" @@ -19060,7 +19450,7 @@ index 84dfa8dae..e222aa0a5 100644 This option boosts the priority of preempted RCU readers that block the current preemptible RCU grace period for too long. diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index 310bcc79b..fb2288701 100644 +index 4e6a44683248..8937a7a2b33f 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -100,8 +100,10 @@ static struct rcu_state rcu_state = { @@ -19076,7 +19466,7 @@ index 310bcc79b..fb2288701 100644 static bool rcu_fanout_exact; module_param(rcu_fanout_exact, bool, 0444); diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c -index 849f0aa99..dd94a602a 100644 +index 849f0aa99333..dd94a602a6d2 100644 --- a/kernel/rcu/update.c +++ b/kernel/rcu/update.c @@ -56,8 +56,10 @@ @@ -19092,10 +19482,10 @@ index 849f0aa99..dd94a602a 100644 #ifdef CONFIG_DEBUG_LOCK_ALLOC diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index b55de01ec..cb7ce358f 100644 +index c936c042297b..dc00c714a849 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -64,7 +64,11 @@ const_debug unsigned int sysctl_sched_features = +@@ -65,7 +65,11 @@ const_debug unsigned int sysctl_sched_features = * Number of tasks to iterate in a single balance run. * Limited because this is done with IRQs disabled. */ @@ -19107,7 +19497,7 @@ index b55de01ec..cb7ce358f 100644 /* * period over which we measure -rt task CPU usage in us. -@@ -502,9 +506,15 @@ static bool set_nr_if_polling(struct task_struct *p) +@@ -856,9 +860,15 @@ static bool set_nr_if_polling(struct task_struct *p) #endif #endif @@ -19125,7 +19515,7 @@ index b55de01ec..cb7ce358f 100644 /* * Atomically grab the task, if ->wake_q is !nil already it means -@@ -540,7 +550,13 @@ static bool __wake_q_add(struct wake_q_head *head, struct task_struct *task) +@@ -894,7 +904,13 @@ static bool __wake_q_add(struct wake_q_head *head, struct task_struct *task) */ void wake_q_add(struct wake_q_head *head, struct task_struct *task) { @@ -19140,7 +19530,7 @@ index b55de01ec..cb7ce358f 100644 get_task_struct(task); } -@@ -563,28 +579,39 @@ void wake_q_add(struct wake_q_head *head, struct task_struct *task) +@@ -917,28 +933,39 @@ void wake_q_add(struct wake_q_head *head, struct task_struct *task) */ void wake_q_add_safe(struct wake_q_head *head, struct task_struct *task) { @@ -19185,7 +19575,7 @@ index b55de01ec..cb7ce358f 100644 put_task_struct(task); } } -@@ -620,6 +647,48 @@ void resched_curr(struct rq *rq) +@@ -974,6 +1001,48 @@ void resched_curr(struct rq *rq) trace_sched_wake_idle_without_ipi(cpu); } @@ -19210,7 +19600,7 @@ index b55de01ec..cb7ce358f 100644 + return; + } + -+ lockdep_assert_held(&rq->lock); ++ lockdep_assert_held(&rq->__lock); + + if (test_tsk_need_resched(curr)) + return; @@ -19234,7 +19624,7 @@ index b55de01ec..cb7ce358f 100644 void resched_cpu(int cpu) { struct rq *rq = cpu_rq(cpu); -@@ -1702,6 +1771,82 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags) +@@ -2062,6 +2131,82 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags) #ifdef CONFIG_SMP @@ -19317,7 +19707,7 @@ index b55de01ec..cb7ce358f 100644 /* * Per-CPU kthreads are allowed to run on !active && online CPUs, see * __set_cpus_allowed_ptr() and select_fallback_rq(). -@@ -1711,7 +1856,7 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) +@@ -2071,7 +2216,7 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) if (!cpumask_test_cpu(cpu, p->cpus_ptr)) return false; @@ -19326,7 +19716,7 @@ index b55de01ec..cb7ce358f 100644 return cpu_online(cpu); return cpu_active(cpu); -@@ -1756,8 +1901,21 @@ static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf, +@@ -2116,8 +2261,21 @@ static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf, } struct migration_arg { @@ -19350,7 +19740,7 @@ index b55de01ec..cb7ce358f 100644 }; /* -@@ -1790,15 +1948,17 @@ static struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf, +@@ -2150,15 +2308,17 @@ static struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf, static int migration_cpu_stop(void *data) { struct migration_arg *arg = data; @@ -19369,7 +19759,7 @@ index b55de01ec..cb7ce358f 100644 /* * We need to explicitly wake pending tasks before running * __migrate_task() such that we will not miss enforcing cpus_ptr -@@ -1808,21 +1968,121 @@ static int migration_cpu_stop(void *data) +@@ -2168,21 +2328,121 @@ static int migration_cpu_stop(void *data) raw_spin_lock(&p->pi_lock); rq_lock(rq, &rf); @@ -19443,11 +19833,11 @@ index b55de01ec..cb7ce358f 100644 + if (pending) + pending->stop_pending = false; + task_rq_unlock(rq, p, &rf); -+ -+ if (complete) -+ complete_all(&pending->done); - local_irq_enable(); ++ if (complete) ++ complete_all(&pending->done); ++ + return 0; +} + @@ -19457,7 +19847,7 @@ index b55de01ec..cb7ce358f 100644 + struct task_struct *p = arg; + + raw_spin_lock_irq(&p->pi_lock); -+ raw_spin_lock(&rq->lock); ++ raw_spin_lock(&rq->__lock); + + if (task_rq(p) != rq) + goto out_unlock; @@ -19487,14 +19877,14 @@ index b55de01ec..cb7ce358f 100644 + +out_unlock: + rq->push_busy = false; -+ raw_spin_unlock(&rq->lock); ++ raw_spin_unlock(&rq->__lock); + raw_spin_unlock_irq(&p->pi_lock); + + put_task_struct(p); return 0; } -@@ -1830,18 +2090,39 @@ static int migration_cpu_stop(void *data) +@@ -2190,18 +2450,39 @@ static int migration_cpu_stop(void *data) * sched_class::set_cpus_allowed must do the below, but is not required to * actually call this function. */ @@ -19537,7 +19927,7 @@ index b55de01ec..cb7ce358f 100644 queued = task_on_rq_queued(p); running = task_current(rq, p); -@@ -1857,7 +2138,7 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) +@@ -2217,7 +2498,7 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) if (running) put_prev_task(rq, p); @@ -19546,7 +19936,7 @@ index b55de01ec..cb7ce358f 100644 if (queued) enqueue_task(rq, p, ENQUEUE_RESTORE | ENQUEUE_NOCLOCK); -@@ -1865,6 +2146,222 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) +@@ -2225,6 +2506,222 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) set_next_task(rq, p); } @@ -19769,7 +20159,7 @@ index b55de01ec..cb7ce358f 100644 /* * Change a given task's CPU affinity. Migrate the thread to a * proper CPU and schedule it away if the CPU it's executing on -@@ -1875,7 +2372,8 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) +@@ -2235,7 +2732,8 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) * call is not atomic; no spinlocks may be held. */ static int __set_cpus_allowed_ptr(struct task_struct *p, @@ -19779,7 +20169,7 @@ index b55de01ec..cb7ce358f 100644 { const struct cpumask *cpu_valid_mask = cpu_active_mask; unsigned int dest_cpu; -@@ -1886,9 +2384,14 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -2246,9 +2744,14 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, rq = task_rq_lock(p, &rf); update_rq_clock(rq); @@ -19796,7 +20186,7 @@ index b55de01ec..cb7ce358f 100644 */ cpu_valid_mask = cpu_online_mask; } -@@ -1897,13 +2400,22 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -2257,13 +2760,22 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, * Must re-check here, to close a race against __kthread_bind(), * sched_setaffinity() is not guaranteed to observe the flag. */ @@ -19822,7 +20212,7 @@ index b55de01ec..cb7ce358f 100644 /* * Picking a ~random cpu helps in cases where we are changing affinity -@@ -1916,7 +2428,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -2276,7 +2788,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, goto out; } @@ -19831,7 +20221,7 @@ index b55de01ec..cb7ce358f 100644 if (p->flags & PF_KTHREAD) { /* -@@ -1928,23 +2440,8 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -2288,23 +2800,8 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, p->nr_cpus_allowed != 1); } @@ -19856,7 +20246,7 @@ index b55de01ec..cb7ce358f 100644 out: task_rq_unlock(rq, p, &rf); -@@ -1953,7 +2450,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, +@@ -2313,7 +2810,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p, int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) { @@ -19865,7 +20255,7 @@ index b55de01ec..cb7ce358f 100644 } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); -@@ -1994,6 +2491,8 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu) +@@ -2354,6 +2851,8 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu) * Clearly, migrating tasks to offline CPUs is a fairly daft thing. */ WARN_ON_ONCE(!cpu_online(new_cpu)); @@ -19874,7 +20264,7 @@ index b55de01ec..cb7ce358f 100644 #endif trace_sched_migrate_task(p, new_cpu); -@@ -2126,6 +2625,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, +@@ -2486,6 +2985,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, } #endif /* CONFIG_NUMA_BALANCING */ @@ -19893,7 +20283,7 @@ index b55de01ec..cb7ce358f 100644 /* * wait_task_inactive - wait for a thread to unschedule. * -@@ -2170,7 +2681,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -2530,7 +3041,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) * is actually now running somewhere else! */ while (task_running(rq, p)) { @@ -19902,7 +20292,7 @@ index b55de01ec..cb7ce358f 100644 return 0; cpu_relax(); } -@@ -2185,7 +2696,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -2545,7 +3056,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) running = task_running(rq, p); queued = task_on_rq_queued(p); ncsw = 0; @@ -19912,7 +20302,7 @@ index b55de01ec..cb7ce358f 100644 ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ task_rq_unlock(rq, p, &rf); -@@ -2219,7 +2731,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -2579,7 +3091,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) ktime_t to = NSEC_PER_SEC / HZ; set_current_state(TASK_UNINTERRUPTIBLE); @@ -19921,7 +20311,7 @@ index b55de01ec..cb7ce358f 100644 continue; } -@@ -2324,6 +2836,12 @@ static int select_fallback_rq(int cpu, struct task_struct *p) +@@ -2684,6 +3196,12 @@ static int select_fallback_rq(int cpu, struct task_struct *p) } fallthrough; case possible: @@ -19934,7 +20324,7 @@ index b55de01ec..cb7ce358f 100644 do_set_cpus_allowed(p, cpu_possible_mask); state = fail; break; -@@ -2358,7 +2876,7 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) +@@ -2718,7 +3236,7 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) { lockdep_assert_held(&p->pi_lock); @@ -19943,7 +20333,7 @@ index b55de01ec..cb7ce358f 100644 cpu = p->sched_class->select_task_rq(p, cpu, sd_flags, wake_flags); else cpu = cpumask_any(p->cpus_ptr); -@@ -2381,6 +2899,7 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) +@@ -2741,6 +3259,7 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) void sched_set_stop_task(int cpu, struct task_struct *stop) { @@ -19951,7 +20341,7 @@ index b55de01ec..cb7ce358f 100644 struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 }; struct task_struct *old_stop = cpu_rq(cpu)->stop; -@@ -2396,6 +2915,20 @@ void sched_set_stop_task(int cpu, struct task_struct *stop) +@@ -2756,6 +3275,20 @@ void sched_set_stop_task(int cpu, struct task_struct *stop) sched_setscheduler_nocheck(stop, SCHED_FIFO, ¶m); stop->sched_class = &stop_sched_class; @@ -19972,7 +20362,7 @@ index b55de01ec..cb7ce358f 100644 } cpu_rq(cpu)->stop = stop; -@@ -2409,15 +2942,23 @@ void sched_set_stop_task(int cpu, struct task_struct *stop) +@@ -2769,15 +3302,23 @@ void sched_set_stop_task(int cpu, struct task_struct *stop) } } @@ -19999,7 +20389,7 @@ index b55de01ec..cb7ce358f 100644 static void ttwu_stat(struct task_struct *p, int cpu, int wake_flags) -@@ -2838,7 +3379,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) +@@ -3198,7 +3739,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) int cpu, success = 0; preempt_disable(); @@ -20008,7 +20398,7 @@ index b55de01ec..cb7ce358f 100644 /* * We're waking current, this means 'p->on_rq' and 'task_cpu(p) * == smp_processor_id()'. Together this means we can special -@@ -2868,8 +3409,26 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) +@@ -3228,8 +3769,26 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) */ raw_spin_lock_irqsave(&p->pi_lock, flags); smp_mb__after_spinlock(); @@ -20036,7 +20426,7 @@ index b55de01ec..cb7ce358f 100644 trace_sched_waking(p); -@@ -3058,6 +3617,18 @@ int wake_up_process(struct task_struct *p) +@@ -3418,6 +3977,18 @@ int wake_up_process(struct task_struct *p) } EXPORT_SYMBOL(wake_up_process); @@ -20055,7 +20445,7 @@ index b55de01ec..cb7ce358f 100644 int wake_up_state(struct task_struct *p, unsigned int state) { return try_to_wake_up(p, state, 0); -@@ -3111,6 +3682,7 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) +@@ -3471,6 +4042,7 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) init_numa_balancing(clone_flags, p); #ifdef CONFIG_SMP p->wake_entry.u_flags = CSD_TYPE_TTWU; @@ -20063,7 +20453,7 @@ index b55de01ec..cb7ce358f 100644 #endif } -@@ -3316,6 +3888,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) +@@ -3676,6 +4248,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) p->on_cpu = 0; #endif init_task_preempt_count(p); @@ -20073,11 +20463,21 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_SMP plist_node_init(&p->pushable_tasks, MAX_PRIO); RB_CLEAR_NODE(&p->pushable_dl_tasks); -@@ -3494,51 +4069,135 @@ fire_sched_out_preempt_notifiers(struct task_struct *curr, - __fire_sched_out_preempt_notifiers(curr, next); +@@ -3846,59 +4421,143 @@ __fire_sched_out_preempt_notifiers(struct task_struct *curr, + notifier->ops->sched_out(notifier, next); } --#else /* !CONFIG_PREEMPT_NOTIFIERS */ +-static __always_inline void +-fire_sched_out_preempt_notifiers(struct task_struct *curr, +- struct task_struct *next) ++static __always_inline void ++fire_sched_out_preempt_notifiers(struct task_struct *curr, ++ struct task_struct *next) ++{ ++ if (static_branch_unlikely(&preempt_notifier_key)) ++ __fire_sched_out_preempt_notifiers(curr, next); ++} ++ +#else /* !CONFIG_PREEMPT_NOTIFIERS */ + +static inline void fire_sched_in_preempt_notifiers(struct task_struct *curr) @@ -20130,7 +20530,7 @@ index b55de01ec..cb7ce358f 100644 + void (*func)(struct rq *rq); + struct callback_head *next; + -+ lockdep_assert_held(&rq->lock); ++ lockdep_assert_held(&rq->__lock); + + while (head) { + func = (void (*)(struct rq *))head->func; @@ -20146,7 +20546,7 @@ index b55de01ec..cb7ce358f 100644 +{ + struct callback_head *head = rq->balance_callback; + -+ lockdep_assert_held(&rq->lock); ++ lockdep_assert_held(&rq->__lock); + if (head) { + rq->balance_callback = NULL; + rq->balance_flags &= ~BALANCE_WORK; @@ -20165,16 +20565,18 @@ index b55de01ec..cb7ce358f 100644 + unsigned long flags; + + if (unlikely(head)) { -+ raw_spin_lock_irqsave(&rq->lock, flags); ++ raw_spin_lock_irqsave(&rq->__lock, flags); + do_balance_callbacks(rq, head); -+ raw_spin_unlock_irqrestore(&rq->lock, flags); ++ raw_spin_unlock_irqrestore(&rq->__lock, flags); + } +} + +static void balance_push(struct rq *rq); + +static inline void balance_switch(struct rq *rq) -+{ + { +- if (static_branch_unlikely(&preempt_notifier_key)) +- __fire_sched_out_preempt_notifiers(curr, next); + if (likely(!rq->balance_flags)) + return; + @@ -20184,8 +20586,9 @@ index b55de01ec..cb7ce358f 100644 + } + + __balance_callbacks(rq); -+} -+ + } + +-#else /* !CONFIG_PREEMPT_NOTIFIERS */ +#else -static inline void fire_sched_in_preempt_notifiers(struct task_struct *curr) @@ -20241,15 +20644,7 @@ index b55de01ec..cb7ce358f 100644 static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next, struct rq_flags *rf) { -@@ -3564,6 +4223,7 @@ static inline void finish_lock_switch(struct rq *rq) - * prev into current: - */ - spin_acquire(&rq->lock.dep_map, 0, 0, _THIS_IP_); -+ balance_switch(rq); - raw_spin_unlock_irq(&rq->lock); - } - -@@ -3579,6 +4239,22 @@ static inline void finish_lock_switch(struct rq *rq) +@@ -3939,6 +4598,22 @@ static inline void finish_lock_switch(struct rq *rq) # define finish_arch_post_lock_switch() do { } while (0) #endif @@ -20272,7 +20667,7 @@ index b55de01ec..cb7ce358f 100644 /** * prepare_task_switch - prepare to switch tasks * @rq: the runqueue preparing to switch -@@ -3601,6 +4277,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev, +@@ -3961,6 +4636,7 @@ prepare_task_switch(struct rq *rq, struct task_struct *prev, perf_event_task_sched_out(prev, next); rseq_preempt(prev); fire_sched_out_preempt_notifiers(prev, next); @@ -20280,7 +20675,7 @@ index b55de01ec..cb7ce358f 100644 prepare_task(next); prepare_arch_switch(next); } -@@ -3668,6 +4345,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) +@@ -4028,6 +4704,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) finish_lock_switch(rq); finish_arch_post_lock_switch(); kcov_finish_switch(current); @@ -20288,14 +20683,8 @@ index b55de01ec..cb7ce358f 100644 fire_sched_in_preempt_notifiers(current); /* -@@ -3682,66 +4360,24 @@ static struct rq *finish_task_switch(struct task_struct *prev) - * provided by mmdrop(), - * - a sync_core for SYNC_CORE. +@@ -4044,63 +4721,19 @@ static struct rq *finish_task_switch(struct task_struct *prev) */ -+ /* -+ * We use mmdrop_delayed() here so we don't have to do the -+ * full __mmdrop() when we are the last user. -+ */ if (mm) { membarrier_mm_sync_core_before_usermode(mm); - mmdrop(mm); @@ -20329,7 +20718,7 @@ index b55de01ec..cb7ce358f 100644 - void (*func)(struct rq *rq); - unsigned long flags; - -- raw_spin_lock_irqsave(&rq->lock, flags); +- raw_spin_rq_lock_irqsave(rq, flags); - head = rq->balance_callback; - rq->balance_callback = NULL; - while (head) { @@ -20340,7 +20729,7 @@ index b55de01ec..cb7ce358f 100644 - - func(rq); - } -- raw_spin_unlock_irqrestore(&rq->lock, flags); +- raw_spin_rq_unlock_irqrestore(rq, flags); -} - -static inline void balance_callback(struct rq *rq) @@ -20354,13 +20743,12 @@ index b55de01ec..cb7ce358f 100644 -static inline void balance_callback(struct rq *rq) -{ -} -- + -#endif -- + /** * schedule_tail - first thing a freshly forked thread must call. - * @prev: the thread we just switched away from. -@@ -3761,7 +4397,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev) +@@ -4121,7 +4754,6 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev) */ rq = finish_task_switch(prev); @@ -20368,7 +20756,7 @@ index b55de01ec..cb7ce358f 100644 preempt_enable(); if (current->set_child_tid) -@@ -4455,7 +5090,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) +@@ -5278,7 +5910,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) * * WARNING: must be called with preemption disabled! */ @@ -20377,7 +20765,7 @@ index b55de01ec..cb7ce358f 100644 { struct task_struct *prev, *next; unsigned long *switch_count; -@@ -4508,7 +5143,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5331,7 +5963,7 @@ static void __sched notrace __schedule(bool preempt) * - ptrace_{,un}freeze_traced() can change ->state underneath us. */ prev_state = prev->state; @@ -20386,7 +20774,7 @@ index b55de01ec..cb7ce358f 100644 if (signal_pending_state(prev_state, prev)) { prev->state = TASK_RUNNING; } else { -@@ -4543,6 +5178,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5366,6 +5998,7 @@ static void __sched notrace __schedule(bool preempt) next = pick_next_task(rq, prev, &rf); clear_tsk_need_resched(prev); @@ -20394,7 +20782,7 @@ index b55de01ec..cb7ce358f 100644 clear_preempt_need_resched(); if (likely(prev != next)) { -@@ -4568,6 +5204,7 @@ static void __sched notrace __schedule(bool preempt) +@@ -5391,6 +6024,7 @@ static void __sched notrace __schedule(bool preempt) */ ++*switch_count; @@ -20402,7 +20790,7 @@ index b55de01ec..cb7ce358f 100644 psi_sched_switch(prev, next, !task_on_rq_queued(prev)); trace_sched_switch(preempt, prev, next); -@@ -4576,10 +5213,11 @@ static void __sched notrace __schedule(bool preempt) +@@ -5399,10 +6033,11 @@ static void __sched notrace __schedule(bool preempt) rq = context_switch(rq, prev, next, &rf); } else { rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP); @@ -20412,12 +20800,12 @@ index b55de01ec..cb7ce358f 100644 - balance_callback(rq); + rq_unpin_lock(rq, &rf); + __balance_callbacks(rq); -+ raw_spin_unlock_irq(&rq->lock); ++ raw_spin_unlock_irq(&rq->__lock); + } } void __noreturn do_task_dead(void) -@@ -4590,7 +5228,7 @@ void __noreturn do_task_dead(void) +@@ -5413,7 +6048,7 @@ void __noreturn do_task_dead(void) /* Tell freezer to ignore us: */ current->flags |= PF_NOFREEZE; @@ -20426,7 +20814,7 @@ index b55de01ec..cb7ce358f 100644 BUG(); /* Avoid "noreturn function does return" - but don't continue if BUG() is a NOP: */ -@@ -4623,9 +5261,6 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -5446,9 +6081,6 @@ static inline void sched_submit_work(struct task_struct *tsk) preempt_enable_no_resched(); } @@ -20436,7 +20824,7 @@ index b55de01ec..cb7ce358f 100644 /* * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. -@@ -4651,7 +5286,7 @@ asmlinkage __visible void __sched schedule(void) +@@ -5474,7 +6106,7 @@ asmlinkage __visible void __sched schedule(void) sched_submit_work(tsk); do { preempt_disable(); @@ -20445,7 +20833,7 @@ index b55de01ec..cb7ce358f 100644 sched_preempt_enable_no_resched(); } while (need_resched()); sched_update_worker(tsk); -@@ -4679,7 +5314,7 @@ void __sched schedule_idle(void) +@@ -5502,7 +6134,7 @@ void __sched schedule_idle(void) */ WARN_ON_ONCE(current->state); do { @@ -20454,7 +20842,7 @@ index b55de01ec..cb7ce358f 100644 } while (need_resched()); } -@@ -4732,7 +5367,7 @@ static void __sched notrace preempt_schedule_common(void) +@@ -5555,7 +6187,7 @@ static void __sched notrace preempt_schedule_common(void) */ preempt_disable_notrace(); preempt_latency_start(1); @@ -20463,7 +20851,7 @@ index b55de01ec..cb7ce358f 100644 preempt_latency_stop(1); preempt_enable_no_resched_notrace(); -@@ -4743,6 +5378,30 @@ static void __sched notrace preempt_schedule_common(void) +@@ -5566,6 +6198,30 @@ static void __sched notrace preempt_schedule_common(void) } while (need_resched()); } @@ -20494,7 +20882,7 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_PREEMPTION /* * This is the entry point to schedule() from in-kernel preemption -@@ -4756,12 +5415,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) +@@ -5579,12 +6235,26 @@ asmlinkage __visible void __sched notrace preempt_schedule(void) */ if (likely(!preemptible())) return; @@ -20522,7 +20910,7 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_PREEMPT_DYNAMIC DEFINE_STATIC_CALL(preempt_schedule, __preempt_schedule_func); EXPORT_STATIC_CALL(preempt_schedule); -@@ -4789,6 +5462,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) +@@ -5612,6 +6282,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) if (likely(!preemptible())) return; @@ -20532,7 +20920,7 @@ index b55de01ec..cb7ce358f 100644 do { /* * Because the function tracer can trace preempt_count_sub() -@@ -4811,7 +5487,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) +@@ -5634,7 +6307,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void) * an infinite recursion. */ prev_ctx = exception_enter(); @@ -20541,7 +20929,7 @@ index b55de01ec..cb7ce358f 100644 exception_exit(prev_ctx); preempt_latency_stop(1); -@@ -5029,7 +5705,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) +@@ -5852,7 +6525,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void) do { preempt_disable(); local_irq_enable(); @@ -20550,7 +20938,7 @@ index b55de01ec..cb7ce358f 100644 local_irq_disable(); sched_preempt_enable_no_resched(); } while (need_resched()); -@@ -5195,9 +5871,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) +@@ -6018,9 +6691,11 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) out_unlock: /* Avoid rq from going away on us: */ preempt_disable(); @@ -20559,12 +20947,12 @@ index b55de01ec..cb7ce358f 100644 - balance_callback(rq); + rq_unpin_lock(rq, &rf); + __balance_callbacks(rq); -+ raw_spin_unlock(&rq->lock); ++ raw_spin_unlock(&rq->__lock); + preempt_enable(); } #else -@@ -5440,6 +6118,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6263,6 +6938,7 @@ static int __sched_setscheduler(struct task_struct *p, int oldpolicy = -1, policy = attr->sched_policy; int retval, oldprio, newprio, queued, running; const struct sched_class *prev_class; @@ -20572,7 +20960,7 @@ index b55de01ec..cb7ce358f 100644 struct rq_flags rf; int reset_on_fork; int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK; -@@ -5694,6 +6373,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6517,6 +7193,7 @@ static int __sched_setscheduler(struct task_struct *p, /* Avoid rq from going away on us: */ preempt_disable(); @@ -20580,7 +20968,7 @@ index b55de01ec..cb7ce358f 100644 task_rq_unlock(rq, p, &rf); if (pi) { -@@ -5702,7 +6382,7 @@ static int __sched_setscheduler(struct task_struct *p, +@@ -6525,7 +7202,7 @@ static int __sched_setscheduler(struct task_struct *p, } /* Run balance callbacks after we've adjusted the PI chain: */ @@ -20589,7 +20977,7 @@ index b55de01ec..cb7ce358f 100644 preempt_enable(); return 0; -@@ -6197,7 +6877,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) +@@ -7020,7 +7697,7 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask) } #endif again: @@ -20598,7 +20986,7 @@ index b55de01ec..cb7ce358f 100644 if (!retval) { cpuset_cpus_allowed(p, cpus_allowed); -@@ -6783,7 +7463,7 @@ void __init init_idle(struct task_struct *idle, int cpu) +@@ -7606,7 +8283,7 @@ void __init init_idle(struct task_struct *idle, int cpu) * * And since this is boot we can forgo the serialization. */ @@ -20607,7 +20995,7 @@ index b55de01ec..cb7ce358f 100644 #endif /* * We're having a chicken and egg problem, even though we are -@@ -6810,7 +7490,9 @@ void __init init_idle(struct task_struct *idle, int cpu) +@@ -7633,7 +8310,9 @@ void __init init_idle(struct task_struct *idle, int cpu) /* Set the preempt count _outside_ the spinlocks! */ init_idle_preempt_count(idle, cpu); @@ -20618,7 +21006,7 @@ index b55de01ec..cb7ce358f 100644 /* * The idle tasks have their own, simple scheduling class: */ -@@ -6915,6 +7597,7 @@ void sched_setnuma(struct task_struct *p, int nid) +@@ -7738,6 +8417,7 @@ void sched_setnuma(struct task_struct *p, int nid) #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_HOTPLUG_CPU @@ -20626,7 +21014,7 @@ index b55de01ec..cb7ce358f 100644 /* * Ensure that the idle task is using init_mm right before its CPU goes * offline. -@@ -6934,119 +7617,126 @@ void idle_task_exit(void) +@@ -7757,119 +8437,126 @@ void idle_task_exit(void) /* finish_cpu(), as ran on the BP, will clean up the active_mm state */ } @@ -20701,7 +21089,7 @@ index b55de01ec..cb7ce358f 100644 - int dest_cpu; + struct task_struct *push_task = rq->curr; + -+ lockdep_assert_held(&rq->lock); ++ lockdep_assert_held(&rq->__lock); + SCHED_WARN_ON(rq->cpu != smp_processor_id()); /* @@ -20730,9 +21118,9 @@ index b55de01ec..cb7ce358f 100644 + */ + if (!rq->nr_running && !rq_has_pinned_tasks(rq) && + rcuwait_active(&rq->hotplug_wait)) { -+ raw_spin_unlock(&rq->lock); ++ raw_spin_unlock(&rq->__lock); + rcuwait_wake_up(&rq->hotplug_wait); -+ raw_spin_lock(&rq->lock); ++ raw_spin_lock(&rq->__lock); + } + return; + } @@ -20746,7 +21134,7 @@ index b55de01ec..cb7ce358f 100644 + * Both preemption and IRQs are still disabled. */ - update_rq_clock(rq); -+ raw_spin_unlock(&rq->lock); ++ raw_spin_unlock(&rq->__lock); + stop_one_cpu_nowait(rq->cpu, __balance_push_cpu_stop, push_task, + this_cpu_ptr(&push_work)); + /* @@ -20754,7 +21142,7 @@ index b55de01ec..cb7ce358f 100644 + * schedule(). The next pick is obviously going to be the stop task + * which is_per_cpu_kthread() and will push this task away. + */ -+ raw_spin_lock(&rq->lock); ++ raw_spin_lock(&rq->__lock); +} - for (;;) { @@ -20843,7 +21231,7 @@ index b55de01ec..cb7ce358f 100644 #endif /* CONFIG_HOTPLUG_CPU */ void set_rq_online(struct rq *rq) -@@ -7132,6 +7822,8 @@ int sched_cpu_activate(unsigned int cpu) +@@ -7955,6 +8642,8 @@ int sched_cpu_activate(unsigned int cpu) struct rq *rq = cpu_rq(cpu); struct rq_flags rf; @@ -20852,7 +21240,7 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_SCHED_SMT /* * When going up, increment the number of cores with SMT present. -@@ -7167,6 +7859,8 @@ int sched_cpu_activate(unsigned int cpu) +@@ -7990,6 +8679,8 @@ int sched_cpu_activate(unsigned int cpu) int sched_cpu_deactivate(unsigned int cpu) { @@ -20861,7 +21249,7 @@ index b55de01ec..cb7ce358f 100644 int ret; set_cpu_active(cpu, false); -@@ -7179,6 +7873,16 @@ int sched_cpu_deactivate(unsigned int cpu) +@@ -8002,6 +8693,16 @@ int sched_cpu_deactivate(unsigned int cpu) */ synchronize_rcu(); @@ -20878,7 +21266,7 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_SCHED_SMT /* * When going down, decrement the number of cores with SMT present. -@@ -7192,6 +7896,7 @@ int sched_cpu_deactivate(unsigned int cpu) +@@ -8017,6 +8718,7 @@ int sched_cpu_deactivate(unsigned int cpu) ret = cpuset_cpu_inactive(cpu); if (ret) { @@ -20886,7 +21274,7 @@ index b55de01ec..cb7ce358f 100644 set_cpu_active(cpu, true); return ret; } -@@ -7215,6 +7920,41 @@ int sched_cpu_starting(unsigned int cpu) +@@ -8041,6 +8743,41 @@ int sched_cpu_starting(unsigned int cpu) } #ifdef CONFIG_HOTPLUG_CPU @@ -20928,7 +21316,7 @@ index b55de01ec..cb7ce358f 100644 int sched_cpu_dying(unsigned int cpu) { struct rq *rq = cpu_rq(cpu); -@@ -7224,12 +7964,7 @@ int sched_cpu_dying(unsigned int cpu) +@@ -8050,12 +8787,7 @@ int sched_cpu_dying(unsigned int cpu) sched_tick_stop(cpu); rq_lock_irqsave(rq, &rf); @@ -20942,7 +21330,7 @@ index b55de01ec..cb7ce358f 100644 rq_unlock_irqrestore(rq, &rf); calc_load_migrate(rq); -@@ -7439,6 +8174,9 @@ void __init sched_init(void) +@@ -8266,6 +8998,9 @@ void __init sched_init(void) INIT_CSD(&rq->nohz_csd, nohz_csd_func, rq); #endif @@ -20952,7 +21340,7 @@ index b55de01ec..cb7ce358f 100644 #endif /* CONFIG_SMP */ hrtick_rq_init(rq); atomic_set(&rq->nr_iowait, 0); -@@ -7479,7 +8217,7 @@ void __init sched_init(void) +@@ -8316,7 +9051,7 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { @@ -20961,7 +21349,7 @@ index b55de01ec..cb7ce358f 100644 return (nested == preempt_offset); } -@@ -7576,6 +8314,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset) +@@ -8413,6 +9148,39 @@ void __cant_sleep(const char *file, int line, int preempt_offset) add_taint(TAINT_WARN, LOCKDEP_STILL_OK); } EXPORT_SYMBOL_GPL(__cant_sleep); @@ -21002,7 +21390,7 @@ index b55de01ec..cb7ce358f 100644 #ifdef CONFIG_MAGIC_SYSRQ diff --git a/kernel/sched/cpudeadline.c b/kernel/sched/cpudeadline.c -index 8cb06c8c7..ceb03d76c 100644 +index 8cb06c8c7eb1..ceb03d76c0cc 100644 --- a/kernel/sched/cpudeadline.c +++ b/kernel/sched/cpudeadline.c @@ -120,7 +120,7 @@ int cpudl_find(struct cpudl *cp, struct task_struct *p, @@ -21024,7 +21412,7 @@ index 8cb06c8c7..ceb03d76c 100644 if (later_mask) cpumask_set_cpu(best_cpu, later_mask); diff --git a/kernel/sched/cpupri.c b/kernel/sched/cpupri.c -index 0033731a0..11c4df201 100644 +index 0033731a0797..11c4df2010de 100644 --- a/kernel/sched/cpupri.c +++ b/kernel/sched/cpupri.c @@ -73,11 +73,11 @@ static inline int __cpupri_find(struct cpupri *cp, struct task_struct *p, @@ -21042,7 +21430,7 @@ index 0033731a0..11c4df201 100644 /* * We have to ensure that we have at least one bit diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c -index ca0eef7d3..02a5aa60f 100644 +index ca0eef7d3852..02a5aa60fe7e 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -44,12 +44,13 @@ static void irqtime_account_delta(struct irqtime *irqtime, u64 delta, @@ -21121,7 +21509,7 @@ index ca0eef7d3..02a5aa60f 100644 void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev, u64 *ut, u64 *st) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c -index 8255267ce..5ab09ef74 100644 +index cb487d7d33e1..6aa18aa2db18 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -565,7 +565,7 @@ static int push_dl_task(struct rq *rq); @@ -21133,7 +21521,7 @@ index 8255267ce..5ab09ef74 100644 } static DEFINE_PER_CPU(struct callback_head, dl_push_head); -@@ -1919,7 +1919,7 @@ static void task_fork_dl(struct task_struct *p) +@@ -1931,7 +1931,7 @@ static void task_fork_dl(struct task_struct *p) static int pick_dl_task(struct rq *rq, struct task_struct *p, int cpu) { if (!task_running(rq, p) && @@ -21142,7 +21530,7 @@ index 8255267ce..5ab09ef74 100644 return 1; return 0; } -@@ -2009,8 +2009,8 @@ static int find_later_rq(struct task_struct *task) +@@ -2021,8 +2021,8 @@ static int find_later_rq(struct task_struct *task) return this_cpu; } @@ -21153,7 +21541,7 @@ index 8255267ce..5ab09ef74 100644 /* * Last chance: if a CPU being in both later_mask * and current sd span is valid, that becomes our -@@ -2032,7 +2032,7 @@ static int find_later_rq(struct task_struct *task) +@@ -2044,7 +2044,7 @@ static int find_later_rq(struct task_struct *task) if (this_cpu != -1) return this_cpu; @@ -21162,7 +21550,7 @@ index 8255267ce..5ab09ef74 100644 if (cpu < nr_cpu_ids) return cpu; -@@ -2097,7 +2097,7 @@ static struct rq *find_lock_later_rq(struct task_struct *task, struct rq *rq) +@@ -2109,7 +2109,7 @@ static struct rq *find_lock_later_rq(struct task_struct *task, struct rq *rq) */ next_task = pick_next_pushable_dl_task(rq); if (unlikely(next_task != task || @@ -21171,7 +21559,7 @@ index 8255267ce..5ab09ef74 100644 double_unlock_balance(rq, later_rq); later_rq = NULL; break; -@@ -2141,6 +2141,9 @@ static int push_dl_task(struct rq *rq) +@@ -2153,6 +2153,9 @@ static int push_dl_task(struct rq *rq) return 0; retry: @@ -21181,7 +21569,7 @@ index 8255267ce..5ab09ef74 100644 if (WARN_ON(next_task == rq->curr)) return 0; -@@ -2218,7 +2221,7 @@ static void push_dl_tasks(struct rq *rq) +@@ -2230,7 +2233,7 @@ static void push_dl_tasks(struct rq *rq) static void pull_dl_task(struct rq *this_rq) { int this_cpu = this_rq->cpu, cpu; @@ -21190,7 +21578,7 @@ index 8255267ce..5ab09ef74 100644 bool resched = false; struct rq *src_rq; u64 dmin = LONG_MAX; -@@ -2248,6 +2251,7 @@ static void pull_dl_task(struct rq *this_rq) +@@ -2260,6 +2263,7 @@ static void pull_dl_task(struct rq *this_rq) continue; /* Might drop this_rq->lock */ @@ -21198,7 +21586,7 @@ index 8255267ce..5ab09ef74 100644 double_lock_balance(this_rq, src_rq); /* -@@ -2279,17 +2283,28 @@ static void pull_dl_task(struct rq *this_rq) +@@ -2291,17 +2295,28 @@ static void pull_dl_task(struct rq *this_rq) src_rq->curr->dl.deadline)) goto skip; @@ -21225,15 +21613,15 @@ index 8255267ce..5ab09ef74 100644 double_unlock_balance(this_rq, src_rq); + + if (push_task) { -+ raw_spin_unlock(&this_rq->lock); ++ raw_spin_unlock(&this_rq->__lock); + stop_one_cpu_nowait(src_rq->cpu, push_cpu_stop, + push_task, &src_rq->push_work); -+ raw_spin_lock(&this_rq->lock); ++ raw_spin_lock(&this_rq->__lock); + } } if (resched) -@@ -2313,7 +2328,8 @@ static void task_woken_dl(struct rq *rq, struct task_struct *p) +@@ -2325,7 +2340,8 @@ static void task_woken_dl(struct rq *rq, struct task_struct *p) } static void set_cpus_allowed_dl(struct task_struct *p, @@ -21243,7 +21631,7 @@ index 8255267ce..5ab09ef74 100644 { struct root_domain *src_rd; struct rq *rq; -@@ -2342,7 +2358,7 @@ static void set_cpus_allowed_dl(struct task_struct *p, +@@ -2354,7 +2370,7 @@ static void set_cpus_allowed_dl(struct task_struct *p, raw_spin_unlock(&src_dl_b->lock); } @@ -21252,7 +21640,7 @@ index 8255267ce..5ab09ef74 100644 } /* Assumes rq->lock is held */ -@@ -2537,6 +2553,7 @@ const struct sched_class dl_sched_class +@@ -2550,6 +2566,7 @@ const struct sched_class dl_sched_class .rq_online = rq_online_dl, .rq_offline = rq_offline_dl, .task_woken = task_woken_dl, @@ -21261,10 +21649,10 @@ index 8255267ce..5ab09ef74 100644 .task_tick = task_tick_dl, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 50d457979..3af523aab 100644 +index 20b482688e3a..bbc3b1e7f72e 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -4499,7 +4499,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4453,7 +4453,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) ideal_runtime = sched_slice(cfs_rq, curr); delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; if (delta_exec > ideal_runtime) { @@ -21273,7 +21661,7 @@ index 50d457979..3af523aab 100644 /* * The current task ran long enough, ensure it doesn't get * re-elected due to buddy favours. -@@ -4523,7 +4523,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) +@@ -4477,7 +4477,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) return; if (delta > ideal_runtime) @@ -21282,7 +21670,7 @@ index 50d457979..3af523aab 100644 } static void -@@ -4666,7 +4666,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -4620,7 +4620,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -21291,7 +21679,7 @@ index 50d457979..3af523aab 100644 return; } /* -@@ -4815,7 +4815,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -4769,7 +4769,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -21300,7 +21688,7 @@ index 50d457979..3af523aab 100644 } static __always_inline -@@ -5567,7 +5567,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -5521,7 +5521,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (rq->curr == p) @@ -21309,7 +21697,7 @@ index 50d457979..3af523aab 100644 return; } hrtick_start(rq, delta); -@@ -7176,7 +7176,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -7142,7 +7142,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -21318,7 +21706,7 @@ index 50d457979..3af523aab 100644 /* * Only set the backward buddy when the current task is still * on the rq. This can happen when a wakeup gets interleaved -@@ -11594,7 +11594,7 @@ static void task_fork_fair(struct task_struct *p) +@@ -11719,7 +11719,7 @@ static void task_fork_fair(struct task_struct *p) * 'current' within the tree based on its new key value. */ swap(curr->vruntime, se->vruntime); @@ -21327,7 +21715,7 @@ index 50d457979..3af523aab 100644 } se->vruntime -= cfs_rq->min_vruntime; -@@ -11621,7 +11621,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -11746,7 +11746,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (rq->curr == p) { if (p->prio > oldprio) @@ -21337,7 +21725,7 @@ index 50d457979..3af523aab 100644 check_preempt_curr(rq, p, 0); } diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index 97ed11bd2..0dade2e74 100644 +index 97ed11bd25e7..0dade2e7422e 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h @@ -45,11 +45,19 @@ SCHED_FEAT(DOUBLE_TICK, false) @@ -21361,7 +21749,7 @@ index 97ed11bd2..0dade2e74 100644 /* * When doing wakeups, attempt to limit superfluous scans of the LLC domain. diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 59c3e2094..46b93fe56 100644 +index 5dbf51ebdaed..7cb737a3d90e 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -270,7 +270,7 @@ static void pull_rt_task(struct rq *this_rq); @@ -21373,7 +21761,7 @@ index 59c3e2094..46b93fe56 100644 } static inline int rt_overloaded(struct rq *rq) -@@ -1665,7 +1665,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) +@@ -1676,7 +1676,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) static int pick_rt_task(struct rq *rq, struct task_struct *p, int cpu) { if (!task_running(rq, p) && @@ -21382,7 +21770,7 @@ index 59c3e2094..46b93fe56 100644 return 1; return 0; -@@ -1759,8 +1759,8 @@ static int find_lowest_rq(struct task_struct *task) +@@ -1770,8 +1770,8 @@ static int find_lowest_rq(struct task_struct *task) return this_cpu; } @@ -21393,7 +21781,7 @@ index 59c3e2094..46b93fe56 100644 if (best_cpu < nr_cpu_ids) { rcu_read_unlock(); return best_cpu; -@@ -1777,7 +1777,7 @@ static int find_lowest_rq(struct task_struct *task) +@@ -1788,7 +1788,7 @@ static int find_lowest_rq(struct task_struct *task) if (this_cpu != -1) return this_cpu; @@ -21402,7 +21790,7 @@ index 59c3e2094..46b93fe56 100644 if (cpu < nr_cpu_ids) return cpu; -@@ -1838,7 +1838,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) +@@ -1849,7 +1849,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) */ struct task_struct *next_task = pick_next_pushable_task(rq); if (unlikely(next_task != task || @@ -21411,7 +21799,7 @@ index 59c3e2094..46b93fe56 100644 double_unlock_balance(rq, lowest_rq); lowest_rq = NULL; break; -@@ -1862,7 +1862,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) +@@ -1873,7 +1873,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) * running task can migrate over to a CPU that is running a task * of lesser priority. */ @@ -21420,7 +21808,7 @@ index 59c3e2094..46b93fe56 100644 { struct task_struct *next_task; struct rq *lowest_rq; -@@ -1876,6 +1876,39 @@ static int push_rt_task(struct rq *rq) +@@ -1887,6 +1887,39 @@ static int push_rt_task(struct rq *rq) return 0; retry: @@ -21448,10 +21836,10 @@ index 59c3e2094..46b93fe56 100644 + */ + push_task = get_push_task(rq); + if (push_task) { -+ raw_spin_unlock(&rq->lock); ++ raw_spin_unlock(&rq->__lock); + stop_one_cpu_nowait(rq->cpu, push_cpu_stop, + push_task, &rq->push_work); -+ raw_spin_lock(&rq->lock); ++ raw_spin_lock(&rq->__lock); + } + + return 0; @@ -21460,7 +21848,7 @@ index 59c3e2094..46b93fe56 100644 if (WARN_ON(next_task == rq->curr)) return 0; -@@ -1930,12 +1963,10 @@ static int push_rt_task(struct rq *rq) +@@ -1941,12 +1974,10 @@ static int push_rt_task(struct rq *rq) deactivate_task(rq, next_task, 0); set_task_cpu(next_task, lowest_rq->cpu); activate_task(lowest_rq, next_task, 0); @@ -21474,7 +21862,7 @@ index 59c3e2094..46b93fe56 100644 out: put_task_struct(next_task); -@@ -1945,7 +1976,7 @@ static int push_rt_task(struct rq *rq) +@@ -1956,7 +1987,7 @@ static int push_rt_task(struct rq *rq) static void push_rt_tasks(struct rq *rq) { /* push_rt_task will return true if it moved an RT */ @@ -21483,17 +21871,19 @@ index 59c3e2094..46b93fe56 100644 ; } -@@ -2098,7 +2129,8 @@ void rto_push_irq_work_func(struct irq_work *work) +@@ -2109,7 +2140,10 @@ void rto_push_irq_work_func(struct irq_work *work) */ if (has_pushable_tasks(rq)) { - raw_spin_lock(&rq->lock); + raw_spin_rq_lock(rq); - push_rt_tasks(rq); ++ + while (push_rt_task(rq, true)) + ; - raw_spin_unlock(&rq->lock); ++ + raw_spin_rq_unlock(rq); } -@@ -2123,7 +2155,7 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2134,7 +2168,7 @@ static void pull_rt_task(struct rq *this_rq) { int this_cpu = this_rq->cpu, cpu; bool resched = false; @@ -21502,7 +21892,7 @@ index 59c3e2094..46b93fe56 100644 struct rq *src_rq; int rt_overload_count = rt_overloaded(this_rq); -@@ -2170,6 +2202,7 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2181,6 +2215,7 @@ static void pull_rt_task(struct rq *this_rq) * double_lock_balance, and another CPU could * alter this_rq */ @@ -21510,7 +21900,7 @@ index 59c3e2094..46b93fe56 100644 double_lock_balance(this_rq, src_rq); /* -@@ -2197,11 +2230,15 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2208,11 +2243,15 @@ static void pull_rt_task(struct rq *this_rq) if (p->prio < src_rq->curr->prio) goto skip; @@ -21531,21 +21921,21 @@ index 59c3e2094..46b93fe56 100644 /* * We continue with the search, just in * case there's an even higher prio task -@@ -2211,6 +2248,13 @@ static void pull_rt_task(struct rq *this_rq) +@@ -2222,6 +2261,13 @@ static void pull_rt_task(struct rq *this_rq) } skip: double_unlock_balance(this_rq, src_rq); + + if (push_task) { -+ raw_spin_unlock(&this_rq->lock); ++ raw_spin_unlock(&this_rq->__lock); + stop_one_cpu_nowait(src_rq->cpu, push_cpu_stop, + push_task, &src_rq->push_work); -+ raw_spin_lock(&this_rq->lock); ++ raw_spin_lock(&this_rq->__lock); + } } if (resched) -@@ -2459,6 +2503,7 @@ const struct sched_class rt_sched_class +@@ -2471,6 +2517,7 @@ const struct sched_class rt_sched_class .rq_offline = rq_offline_rt, .task_woken = task_woken_rt, .switched_from = switched_from_rt, @@ -21554,10 +21944,10 @@ index 59c3e2094..46b93fe56 100644 .task_tick = task_tick_rt, diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index e41a5207a..b60a830e1 100644 +index 3bd6c988652a..287f7bc85ad0 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -1019,6 +1019,7 @@ struct rq { +@@ -1025,6 +1025,7 @@ struct rq { unsigned long cpu_capacity_orig; struct callback_head *balance_callback; @@ -21565,7 +21955,7 @@ index e41a5207a..b60a830e1 100644 unsigned char nohz_idle_balance; unsigned char idle_balance; -@@ -1049,6 +1050,10 @@ struct rq { +@@ -1055,6 +1056,10 @@ struct rq { /* This is used to determine avg_idle's max value */ u64 max_idle_balance_cost; @@ -21576,8 +21966,8 @@ index e41a5207a..b60a830e1 100644 #endif /* CONFIG_SMP */ #ifdef CONFIG_IRQ_TIME_ACCOUNTING -@@ -1107,6 +1112,12 @@ struct rq { - struct cpuidle_state *idle_state; +@@ -1129,6 +1134,12 @@ struct rq { + unsigned int core_forceidle_seq; #endif +#ifdef CONFIG_SMP @@ -21589,7 +21979,7 @@ index e41a5207a..b60a830e1 100644 KABI_RESERVE(1) KABI_RESERVE(2) KABI_RESERVE(3) -@@ -1142,6 +1153,17 @@ static inline int cpu_of(struct rq *rq) +@@ -1164,6 +1175,17 @@ static inline int cpu_of(struct rq *rq) #endif } @@ -21607,7 +21997,7 @@ index e41a5207a..b60a830e1 100644 #ifdef CONFIG_QOS_SCHED enum task_qos_level { QOS_LEVEL_OFFLINE = -1, -@@ -1296,6 +1318,9 @@ static inline void rq_pin_lock(struct rq *rq, struct rq_flags *rf) +@@ -1558,6 +1580,9 @@ static inline void rq_pin_lock(struct rq *rq, struct rq_flags *rf) rq->clock_update_flags &= (RQCF_REQ_SKIP|RQCF_ACT_SKIP); rf->clock_update_flags = 0; #endif @@ -21617,7 +22007,7 @@ index e41a5207a..b60a830e1 100644 } static inline void rq_unpin_lock(struct rq *rq, struct rq_flags *rf) -@@ -1461,6 +1486,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p) +@@ -1723,6 +1748,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p) #ifdef CONFIG_SMP @@ -21627,9 +22017,9 @@ index e41a5207a..b60a830e1 100644 static inline void queue_balance_callback(struct rq *rq, struct callback_head *head, -@@ -1468,12 +1496,13 @@ queue_balance_callback(struct rq *rq, +@@ -1730,12 +1758,13 @@ queue_balance_callback(struct rq *rq, { - lockdep_assert_held(&rq->lock); + lockdep_assert_rq_held(rq); - if (unlikely(head->next)) + if (unlikely(head->next || (rq->balance_flags & BALANCE_PUSH))) @@ -21642,7 +22032,7 @@ index e41a5207a..b60a830e1 100644 } #define rcu_dereference_check_sched_domain(p) \ -@@ -1798,6 +1827,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) +@@ -2060,6 +2089,7 @@ static inline int task_on_rq_migrating(struct task_struct *p) #define WF_FORK 0x02 /* Child wakeup after fork */ #define WF_MIGRATED 0x04 /* Internal use, task got migrated */ #define WF_ON_CPU 0x08 /* Wakee is on_cpu */ @@ -21650,7 +22040,7 @@ index e41a5207a..b60a830e1 100644 /* * To aid in avoiding the subversion of "niceness" due to uneven distribution -@@ -1879,10 +1909,13 @@ struct sched_class { +@@ -2141,10 +2171,13 @@ struct sched_class { void (*task_woken)(struct rq *this_rq, struct task_struct *task); void (*set_cpus_allowed)(struct task_struct *p, @@ -21665,7 +22055,7 @@ index e41a5207a..b60a830e1 100644 #endif void (*task_tick)(struct rq *rq, struct task_struct *p, int queued); -@@ -1969,13 +2002,38 @@ static inline bool sched_fair_runnable(struct rq *rq) +@@ -2234,13 +2267,38 @@ static inline bool sched_fair_runnable(struct rq *rq) extern struct task_struct *pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf); extern struct task_struct *pick_next_task_idle(struct rq *rq); @@ -21686,7 +22076,7 @@ index e41a5207a..b60a830e1 100644 +{ + struct task_struct *p = rq->curr; + -+ lockdep_assert_held(&rq->lock); ++ lockdep_assert_held(&rq->__lock); + + if (rq->push_busy) + return NULL; @@ -21705,7 +22095,7 @@ index e41a5207a..b60a830e1 100644 #endif -@@ -2019,6 +2077,15 @@ extern void reweight_task(struct task_struct *p, int prio); +@@ -2284,6 +2342,15 @@ extern void reweight_task(struct task_struct *p, int prio); extern void resched_curr(struct rq *rq); extern void resched_cpu(int cpu); @@ -21722,7 +22112,7 @@ index e41a5207a..b60a830e1 100644 extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); diff --git a/kernel/sched/swait.c b/kernel/sched/swait.c -index e1c655f92..f230b1ac7 100644 +index e1c655f928c7..f230b1ac7f91 100644 --- a/kernel/sched/swait.c +++ b/kernel/sched/swait.c @@ -64,6 +64,7 @@ void swake_up_all(struct swait_queue_head *q) @@ -21734,7 +22124,7 @@ index e1c655f92..f230b1ac7 100644 list_splice_init(&q->task_list, &tmp); while (!list_empty(&tmp)) { diff --git a/kernel/signal.c b/kernel/signal.c -index 54f86e0b9..28d34857e 100644 +index 54f86e0b97f3..28d34857e912 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -20,6 +20,7 @@ @@ -21928,7 +22318,7 @@ index 54f86e0b9..28d34857e 100644 cgroup_leave_frozen(true); } else { diff --git a/kernel/smp.c b/kernel/smp.c -index b04ab01eb..31269d781 100644 +index 114776d0d11e..6d35929a1990 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -480,8 +480,18 @@ void flush_smp_call_function_from_idle(void) @@ -21953,7 +22343,7 @@ index b04ab01eb..31269d781 100644 local_irq_restore(flags); } diff --git a/kernel/softirq.c b/kernel/softirq.c -index 09229ad82..c9adc5c46 100644 +index 09229ad82209..c9adc5c46248 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -13,6 +13,7 @@ @@ -22524,7 +22914,7 @@ index 09229ad82..c9adc5c46 100644 #ifdef CONFIG_HOTPLUG_CPU diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c -index dd5aeddbe..8bf1fb832 100644 +index dd5aeddbed5d..8bf1fb832cb8 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -47,11 +47,27 @@ struct cpu_stopper { @@ -22602,7 +22992,7 @@ index dd5aeddbe..8bf1fb832 100644 "cpu_stop: %ps(%p) leaked preempt count\n", fn, arg); goto repeat; diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 4ef90718c..6eb443234 100644 +index 4ef90718c114..6eb4432347ad 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -2052,6 +2052,36 @@ SYSCALL_DEFINE2(nanosleep_time32, struct old_timespec32 __user *, rqtp, @@ -22643,7 +23033,7 @@ index 4ef90718c..6eb443234 100644 * Functions related to boot-time initialization: */ diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c -index 2d7899700..e4e09ad9e 100644 +index d0440f5d5b45..f0c435f83700 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -990,7 +990,7 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) @@ -22656,7 +23046,7 @@ index 2d7899700..e4e09ad9e 100644 pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n", (unsigned int) local_softirq_pending()); diff --git a/kernel/time/timer.c b/kernel/time/timer.c -index 351420c23..2a9e0b89d 100644 +index f7d3a108e27c..f24e6fed6633 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1287,7 +1287,7 @@ static void del_timer_wait_running(struct timer_list *timer) @@ -22683,7 +23073,7 @@ index 351420c23..2a9e0b89d 100644 ret = try_to_del_timer_sync(timer); diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index b3a0ee21d..39a375fad 100644 +index 4e130e2bb566..50a2db7a791d 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2592,60 +2592,43 @@ enum print_line_t trace_handle_return(struct trace_seq *s) @@ -22816,7 +23206,7 @@ index b3a0ee21d..39a375fad 100644 } void -@@ -9424,7 +9413,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) +@@ -9431,7 +9420,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) tracing_off(); local_irq_save(flags); @@ -22824,7 +23214,7 @@ index b3a0ee21d..39a375fad 100644 /* Simulate the iterator */ trace_init_global_iter(&iter); -@@ -9504,7 +9492,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) +@@ -9511,7 +9499,6 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) atomic_dec(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled); } atomic_dec(&dump_running); @@ -22833,7 +23223,7 @@ index b3a0ee21d..39a375fad 100644 } EXPORT_SYMBOL_GPL(ftrace_dump); diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h -index c0596e250..44943a9be 100644 +index c0596e250c2a..44943a9be317 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -141,25 +141,6 @@ struct kretprobe_trace_entry_head { @@ -22863,7 +23253,7 @@ index c0596e250..44943a9be 100644 struct trace_array; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c -index f4b11f609..a2abc0b40 100644 +index f4b11f6098ae..a2abc0b40456 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -183,6 +183,8 @@ static int trace_define_common_fields(void) @@ -22876,7 +23266,7 @@ index f4b11f609..a2abc0b40 100644 return ret; } diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 7042544c5..c711eb334 100644 +index 7042544c5bde..c711eb334811 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -441,6 +441,7 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) @@ -22926,10 +23316,10 @@ index 7042544c5..c711eb334 100644 } diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 6bef482a1..855f2d8c9 100644 +index 14d4c072c79b..9fefb9f05a03 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -4933,6 +4933,10 @@ static void unbind_workers(int cpu) +@@ -4934,6 +4934,10 @@ static void unbind_workers(int cpu) pool->flags |= POOL_DISASSOCIATED; raw_spin_unlock_irq(&pool->lock); @@ -22941,7 +23331,7 @@ index 6bef482a1..855f2d8c9 100644 /* diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index f906df9db..c52d39d10 100644 +index ec28c65075e8..e49ab3b66e44 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1366,7 +1366,7 @@ config DEBUG_ATOMIC_SLEEP @@ -22954,7 +23344,7 @@ index f906df9db..c52d39d10 100644 Say Y here if you want the kernel to run a short self-test during bootup. The self-test checks whether common types of locking bugs diff --git a/lib/bug.c b/lib/bug.c -index 4ab398a2d..9c681f29e 100644 +index 4ab398a2de93..9c681f29e61e 100644 --- a/lib/bug.c +++ b/lib/bug.c @@ -202,6 +202,7 @@ enum bug_trap_type report_bug(unsigned long bugaddr, struct pt_regs *regs) @@ -22966,7 +23356,7 @@ index 4ab398a2d..9c681f29e 100644 return BUG_TRAP_TYPE_BUG; } diff --git a/lib/cpumask.c b/lib/cpumask.c -index fb22fb266..c3c76b833 100644 +index fb22fb266f93..c3c76b833384 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c @@ -261,3 +261,21 @@ int cpumask_any_and_distribute(const struct cpumask *src1p, @@ -22992,7 +23382,7 @@ index fb22fb266..c3c76b833 100644 +} +EXPORT_SYMBOL(cpumask_any_distribute); diff --git a/lib/debugobjects.c b/lib/debugobjects.c -index 9e14ae023..083882a3c 100644 +index 9e14ae02306b..083882a3cf2f 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -557,7 +557,10 @@ __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack @@ -23008,7 +23398,7 @@ index 9e14ae023..083882a3c 100644 db = get_bucket((unsigned long) addr); diff --git a/lib/dump_stack.c b/lib/dump_stack.c -index a00ee6eed..f5a33b6f7 100644 +index a00ee6eedc7c..f5a33b6f773f 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -12,6 +12,7 @@ @@ -23028,7 +23418,7 @@ index a00ee6eed..f5a33b6f7 100644 /** diff --git a/lib/irq_poll.c b/lib/irq_poll.c -index 2f17b488d..7557bf7ec 100644 +index 2f17b488d58e..7557bf7ecf1f 100644 --- a/lib/irq_poll.c +++ b/lib/irq_poll.c @@ -37,6 +37,7 @@ void irq_poll_sched(struct irq_poll *iop) @@ -23072,7 +23462,7 @@ index 2f17b488d..7557bf7ec 100644 return 0; } diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c -index 76c52b0b7..98c376b02 100644 +index 76c52b0b76d3..98c376b02dff 100644 --- a/lib/locking-selftest.c +++ b/lib/locking-selftest.c @@ -787,6 +787,8 @@ GENERATE_TESTCASE(init_held_rtmutex); @@ -23225,7 +23615,7 @@ index 76c52b0b7..98c376b02 100644 force_read_lock_recursive = 0; diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c -index 8abe1870d..b09a490f5 100644 +index 8abe1870dba4..b09a490f5f70 100644 --- a/lib/nmi_backtrace.c +++ b/lib/nmi_backtrace.c @@ -75,12 +75,6 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask, @@ -23242,7 +23632,7 @@ index 8abe1870d..b09a490f5 100644 put_cpu(); } diff --git a/lib/scatterlist.c b/lib/scatterlist.c -index a59778946..907f59045 100644 +index a59778946404..907f59045998 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -892,7 +892,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter) @@ -23255,7 +23645,7 @@ index a59778946..907f59045 100644 } else kunmap(miter->page); diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c -index 525222e4f..1c1dbd300 100644 +index 525222e4f409..1c1dbd300325 100644 --- a/lib/smp_processor_id.c +++ b/lib/smp_processor_id.c @@ -26,6 +26,11 @@ unsigned int check_preemption_disabled(const char *what1, const char *what2) @@ -23271,10 +23661,10 @@ index 525222e4f..1c1dbd300 100644 * It is valid to assume CPU-locality during early bootup: */ diff --git a/lib/test_lockup.c b/lib/test_lockup.c -index f1a020bcc..864554e76 100644 +index 78a630bbd03d..d27a80502204 100644 --- a/lib/test_lockup.c +++ b/lib/test_lockup.c -@@ -480,6 +480,21 @@ static int __init test_lockup_init(void) +@@ -485,6 +485,21 @@ static int __init test_lockup_init(void) return -EINVAL; #ifdef CONFIG_DEBUG_SPINLOCK @@ -23296,7 +23686,7 @@ index f1a020bcc..864554e76 100644 if (test_magic(lock_spinlock_ptr, offsetof(spinlock_t, rlock.magic), SPINLOCK_MAGIC) || -@@ -493,6 +508,7 @@ static int __init test_lockup_init(void) +@@ -498,6 +513,7 @@ static int __init test_lockup_init(void) offsetof(struct rw_semaphore, wait_lock.magic), SPINLOCK_MAGIC)) return -EINVAL; @@ -23305,7 +23695,7 @@ index f1a020bcc..864554e76 100644 if ((wait_state != TASK_RUNNING || diff --git a/mm/Kconfig b/mm/Kconfig -index 4475bd9f8..00931cbec 100644 +index 5e1175da720e..9220eec06ba7 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -404,7 +404,7 @@ config NOMMU_INITIAL_TRIM_EXCESS @@ -23317,7 +23707,7 @@ index 4475bd9f8..00931cbec 100644 select COMPACTION select XARRAY_MULTI help -@@ -932,6 +932,9 @@ config ARCH_HAS_HUGEPD +@@ -943,6 +943,9 @@ config ARCH_HAS_HUGEPD config MAPPING_DIRTY_HELPERS bool @@ -23328,7 +23718,7 @@ index 4475bd9f8..00931cbec 100644 bool "Support for pin memory" depends on MMU && ARM64 diff --git a/mm/highmem.c b/mm/highmem.c -index efe38ab47..ad72e587c 100644 +index efe38ab479b5..ad72e587ce54 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -31,10 +31,6 @@ @@ -23636,7 +24026,7 @@ index efe38ab47..ad72e587c 100644 #if defined(HASHED_PAGE_VIRTUAL) diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 1938e69ad..691f14432 100644 +index ac07a0ffbe20..47e3d110ae7a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -67,6 +67,7 @@ @@ -23647,10 +24037,11 @@ index 1938e69ad..691f14432 100644 #include -@@ -97,6 +98,13 @@ bool cgroup_memory_noswap __read_mostly; +@@ -97,6 +98,14 @@ bool cgroup_memory_noswap __read_mostly; static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); #endif ++ +struct event_lock { + local_lock_t l; +}; @@ -23658,10 +24049,10 @@ index 1938e69ad..691f14432 100644 + .l = INIT_LOCAL_LOCK(l), +}; + - static bool cgroup_memory_kswapd = false; - DEFINE_STATIC_KEY_FALSE(memcg_kswapd_key); - EXPORT_SYMBOL(memcg_kswapd_key); -@@ -743,6 +751,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, + /* Whether legacy memory+swap accounting is active */ + static bool do_memsw_account(void) + { +@@ -755,6 +764,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec); memcg = pn->memcg; @@ -23669,7 +24060,7 @@ index 1938e69ad..691f14432 100644 /* Update memcg */ __this_cpu_add(memcg->vmstats_percpu->state[idx], val); -@@ -750,6 +759,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, +@@ -762,6 +772,7 @@ void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, __this_cpu_add(pn->lruvec_stats_percpu->state[idx], val); memcg_rstat_updated(memcg); @@ -23677,7 +24068,7 @@ index 1938e69ad..691f14432 100644 } /** -@@ -2159,6 +2169,7 @@ void unlock_page_memcg(struct page *page) +@@ -2171,6 +2182,7 @@ void unlock_page_memcg(struct page *page) EXPORT_SYMBOL(unlock_page_memcg); struct memcg_stock_pcp { @@ -23685,7 +24076,7 @@ index 1938e69ad..691f14432 100644 struct mem_cgroup *cached; /* this never be root cgroup */ unsigned int nr_pages; -@@ -2210,7 +2221,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2222,7 +2234,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) if (nr_pages > MEMCG_CHARGE_BATCH) return ret; @@ -23694,7 +24085,7 @@ index 1938e69ad..691f14432 100644 stock = this_cpu_ptr(&memcg_stock); if (memcg == stock->cached && stock->nr_pages >= nr_pages) { -@@ -2218,7 +2229,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2230,7 +2242,7 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages) ret = true; } @@ -23703,7 +24094,7 @@ index 1938e69ad..691f14432 100644 return ret; } -@@ -2253,14 +2264,14 @@ static void drain_local_stock(struct work_struct *dummy) +@@ -2265,14 +2277,14 @@ static void drain_local_stock(struct work_struct *dummy) * The only protection from memory hotplug vs. drain_stock races is * that we always operate on local CPU stock here with IRQ disabled */ @@ -23720,7 +24111,7 @@ index 1938e69ad..691f14432 100644 } /* -@@ -2272,7 +2283,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2284,7 +2296,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) struct memcg_stock_pcp *stock; unsigned long flags; @@ -23729,7 +24120,7 @@ index 1938e69ad..691f14432 100644 stock = this_cpu_ptr(&memcg_stock); if (stock->cached != memcg) { /* reset if necessary */ -@@ -2285,7 +2296,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) +@@ -2297,7 +2309,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) if (stock->nr_pages > MEMCG_CHARGE_BATCH) drain_stock(stock); @@ -23738,7 +24129,7 @@ index 1938e69ad..691f14432 100644 } /* -@@ -2305,7 +2316,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) +@@ -2317,7 +2329,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) * as well as workers from this path always operate on the local * per-cpu data. CPU up doesn't touch memcg_stock at all. */ @@ -23747,7 +24138,7 @@ index 1938e69ad..691f14432 100644 for_each_online_cpu(cpu) { struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu); struct mem_cgroup *memcg; -@@ -2328,7 +2339,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) +@@ -2340,7 +2352,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) schedule_work_on(cpu, &stock->work); } } @@ -23756,7 +24147,7 @@ index 1938e69ad..691f14432 100644 mutex_unlock(&percpu_charge_mutex); } -@@ -3089,7 +3100,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3131,7 +3143,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) unsigned long flags; bool ret = false; @@ -23765,7 +24156,7 @@ index 1938e69ad..691f14432 100644 stock = this_cpu_ptr(&memcg_stock); if (objcg == stock->cached_objcg && stock->nr_bytes >= nr_bytes) { -@@ -3097,7 +3108,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3139,7 +3151,7 @@ static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) ret = true; } @@ -23774,7 +24165,7 @@ index 1938e69ad..691f14432 100644 return ret; } -@@ -3153,7 +3164,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3195,7 +3207,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) struct memcg_stock_pcp *stock; unsigned long flags; @@ -23783,7 +24174,7 @@ index 1938e69ad..691f14432 100644 stock = this_cpu_ptr(&memcg_stock); if (stock->cached_objcg != objcg) { /* reset if necessary */ -@@ -3167,7 +3178,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) +@@ -3209,7 +3221,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) if (stock->nr_bytes > PAGE_SIZE) drain_obj_stock(stock); @@ -23792,7 +24183,7 @@ index 1938e69ad..691f14432 100644 } int obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, size_t size) -@@ -6137,12 +6148,12 @@ static int mem_cgroup_move_account(struct page *page, +@@ -6221,12 +6233,12 @@ static int mem_cgroup_move_account(struct page *page, ret = 0; @@ -23807,7 +24198,7 @@ index 1938e69ad..691f14432 100644 out_unlock: unlock_page(page); out: -@@ -7119,10 +7130,10 @@ int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask) +@@ -7203,10 +7215,10 @@ int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask) css_get(&memcg->css); commit_charge(page, memcg); @@ -23820,7 +24211,7 @@ index 1938e69ad..691f14432 100644 /* * Cgroup1's unified memory+swap counter has been charged with the -@@ -7178,11 +7189,11 @@ static void uncharge_batch(const struct uncharge_gather *ug) +@@ -7262,11 +7274,11 @@ static void uncharge_batch(const struct uncharge_gather *ug) memcg_oom_recover(ug->memcg); } @@ -23834,7 +24225,7 @@ index 1938e69ad..691f14432 100644 /* drop reference from uncharge_page */ css_put(&ug->memcg->css); -@@ -7354,10 +7365,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) +@@ -7438,10 +7450,10 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage) css_get(&memcg->css); commit_charge(newpage, memcg); @@ -23847,7 +24238,7 @@ index 1938e69ad..691f14432 100644 } DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key); -@@ -7494,9 +7505,13 @@ static int __init mem_cgroup_init(void) +@@ -7571,9 +7583,13 @@ static int __init mem_cgroup_init(void) cpuhp_setup_state_nocalls(CPUHP_MM_MEMCQ_DEAD, "mm/memctrl:dead", NULL, memcg_hotplug_cpu_dead); @@ -23864,7 +24255,7 @@ index 1938e69ad..691f14432 100644 for_each_node(node) { struct mem_cgroup_tree_per_node *rtpn; -@@ -7547,6 +7562,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -7624,6 +7640,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) struct mem_cgroup *memcg, *swap_memcg; unsigned int nr_entries; unsigned short oldid; @@ -23872,7 +24263,7 @@ index 1938e69ad..691f14432 100644 VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -7592,9 +7608,13 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) +@@ -7669,9 +7686,13 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry) * important here to have the interrupts disabled because it is the * only synchronisation we have for updating the per-CPU variables. */ @@ -23887,7 +24278,7 @@ index 1938e69ad..691f14432 100644 css_put(&memcg->css); } diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 97eb298a0..16dbe87f2 100644 +index ff6fffec8770..a8f583c0442b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -61,6 +61,7 @@ @@ -24243,7 +24634,7 @@ index 97eb298a0..16dbe87f2 100644 return NULL; } -@@ -9068,7 +9138,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -9087,7 +9157,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -24252,7 +24643,7 @@ index 97eb298a0..16dbe87f2 100644 if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -9077,7 +9147,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -9096,7 +9166,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } @@ -24262,7 +24653,7 @@ index 97eb298a0..16dbe87f2 100644 #ifdef CONFIG_MEMORY_HOTREMOVE diff --git a/mm/shmem.c b/mm/shmem.c -index 9df016296..d2333b15e 100644 +index ad2d68150ed2..02427f52af0a 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -307,10 +307,10 @@ static int shmem_reserve_inode(struct super_block *sb, ino_t *inop) @@ -24329,7 +24720,7 @@ index 9df016296..d2333b15e 100644 } return mpol; } -@@ -3546,9 +3547,10 @@ static int shmem_reconfigure(struct fs_context *fc) +@@ -3549,9 +3550,10 @@ static int shmem_reconfigure(struct fs_context *fc) struct shmem_options *ctx = fc->fs_private; struct shmem_sb_info *sbinfo = SHMEM_SB(fc->root->d_sb); unsigned long inodes; @@ -24339,9 +24730,9 @@ index 9df016296..d2333b15e 100644 - spin_lock(&sbinfo->stat_lock); + raw_spin_lock(&sbinfo->stat_lock); inodes = sbinfo->max_inodes - sbinfo->free_inodes; + if ((ctx->seen & SHMEM_SEEN_BLOCKS) && ctx->blocks) { - if (!sbinfo->max_blocks) { -@@ -3593,14 +3595,15 @@ static int shmem_reconfigure(struct fs_context *fc) +@@ -3597,14 +3599,15 @@ static int shmem_reconfigure(struct fs_context *fc) * Preserve previous mempolicy unless mpol remount option was specified. */ if (ctx->mpol) { @@ -24360,7 +24751,7 @@ index 9df016296..d2333b15e 100644 return invalfc(fc, "%s", err); } -@@ -3717,7 +3720,7 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) +@@ -3721,7 +3724,7 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) sbinfo->mpol = ctx->mpol; ctx->mpol = NULL; @@ -24370,7 +24761,7 @@ index 9df016296..d2333b15e 100644 goto failed; spin_lock_init(&sbinfo->shrinklist_lock); diff --git a/mm/slab.c b/mm/slab.c -index ae84578f3..a65a5f169 100644 +index ae84578f3fde..a65a5f169fd5 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -234,7 +234,7 @@ static void kmem_cache_node_init(struct kmem_cache_node *parent) @@ -24721,7 +25112,7 @@ index ae84578f3..a65a5f169 100644 num_objs = total_slabs * cachep->num; active_slabs = total_slabs - free_slabs; diff --git a/mm/slab.h b/mm/slab.h -index 8414c3451..d937f8673 100644 +index 8414c345127b..d937f8673193 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -523,7 +523,7 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, @@ -24734,7 +25125,7 @@ index 8414c3451..d937f8673 100644 #ifdef CONFIG_SLAB struct list_head slabs_partial; /* partial list first, better asm code */ diff --git a/mm/slub.c b/mm/slub.c -index 98452815a..873b0a79f 100644 +index ad44734dbf72..84a55c8bb3d6 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -458,7 +458,7 @@ static inline bool cmpxchg_double_slab(struct kmem_cache *s, struct page *page, @@ -24898,7 +25289,7 @@ index 98452815a..873b0a79f 100644 if (m == M_PARTIAL) stat(s, tail); -@@ -2343,10 +2373,10 @@ static void unfreeze_partials(struct kmem_cache *s, +@@ -2344,10 +2374,10 @@ static void unfreeze_partials(struct kmem_cache *s, n2 = get_node(s, page_to_nid(page)); if (n != n2) { if (n) @@ -24911,7 +25302,7 @@ index 98452815a..873b0a79f 100644 } do { -@@ -2375,7 +2405,7 @@ static void unfreeze_partials(struct kmem_cache *s, +@@ -2376,7 +2406,7 @@ static void unfreeze_partials(struct kmem_cache *s, } if (n) @@ -24920,7 +25311,7 @@ index 98452815a..873b0a79f 100644 while (discard_page) { page = discard_page; -@@ -2412,14 +2442,21 @@ static void put_cpu_partial(struct kmem_cache *s, struct page *page, int drain) +@@ -2413,14 +2443,21 @@ static void put_cpu_partial(struct kmem_cache *s, struct page *page, int drain) pobjects = oldpage->pobjects; pages = oldpage->pages; if (drain && pobjects > slub_cpu_partial(s)) { @@ -24942,7 +25333,7 @@ index 98452815a..873b0a79f 100644 oldpage = NULL; pobjects = 0; pages = 0; -@@ -2487,7 +2524,19 @@ static bool has_cpu_slab(int cpu, void *info) +@@ -2486,7 +2523,19 @@ static bool has_cpu_slab(int cpu, void *info) static void flush_all(struct kmem_cache *s) { @@ -24962,7 +25353,7 @@ index 98452815a..873b0a79f 100644 } /* -@@ -2542,10 +2591,10 @@ static unsigned long count_partial(struct kmem_cache_node *n, +@@ -2541,10 +2590,10 @@ static unsigned long count_partial(struct kmem_cache_node *n, unsigned long x = 0; struct page *page; @@ -24975,7 +25366,7 @@ index 98452815a..873b0a79f 100644 return x; } #endif /* CONFIG_SLUB_DEBUG || CONFIG_SYSFS */ -@@ -2684,8 +2733,10 @@ static inline void *get_freelist(struct kmem_cache *s, struct page *page) +@@ -2683,8 +2732,10 @@ static inline void *get_freelist(struct kmem_cache *s, struct page *page) * already disabled (which is the case for bulk allocation). */ static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node, @@ -25227,7 +25618,7 @@ index 98452815a..873b0a79f 100644 for (i = 0; i < t.count; i++) { diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index dadbea292..dd7da773b 100644 +index dadbea29241d..dd7da773bfe5 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1886,7 +1886,7 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask) @@ -25282,7 +25673,7 @@ index dadbea292..dd7da773b 100644 /* Allocate new block if nothing was found */ diff --git a/mm/vmstat.c b/mm/vmstat.c -index 2d9d742ec..a0a557510 100644 +index 05433f66376b..afb32defb498 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -321,6 +321,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, @@ -25382,7 +25773,7 @@ index 2d9d742ec..a0a557510 100644 void __dec_zone_page_state(struct page *page, enum zone_stat_item item) diff --git a/mm/workingset.c b/mm/workingset.c -index 4a30e4a81..4c92584ca 100644 +index 4a30e4a813a5..4c92584ca34d 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -431,6 +431,8 @@ static struct list_lru shadow_nodes; @@ -25405,7 +25796,7 @@ index 4a30e4a81..4c92584ca 100644 if (node->count && node->count == node->nr_values) { if (list_empty(&node->private_list)) { diff --git a/mm/z3fold.c b/mm/z3fold.c -index f75c638c6..6fdf4774f 100644 +index f75c638c69db..6fdf4774fdbe 100644 --- a/mm/z3fold.c +++ b/mm/z3fold.c @@ -623,14 +623,16 @@ static inline void add_to_unbuddied(struct z3fold_pool *pool, @@ -25467,7 +25858,7 @@ index f75c638c6..6fdf4774f 100644 if (!zhdr) { int cpu; diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c -index 73cd50735..142170f87 100644 +index c18dc8e61d35..16ce2b05df90 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -57,6 +57,7 @@ @@ -25658,7 +26049,7 @@ index 73cd50735..142170f87 100644 migrate_read_unlock(zspage); unpin_tag(handle); diff --git a/net/Kconfig b/net/Kconfig -index d6567162c..05b0f041f 100644 +index d6567162c1cf..05b0f041f039 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -282,7 +282,7 @@ config CGROUP_NET_CLASSID @@ -25671,7 +26062,7 @@ index d6567162c..05b0f041f 100644 config BQL bool diff --git a/net/core/dev.c b/net/core/dev.c -index 12089c484..cd1bce280 100644 +index ee0b405681db..2ca7feed0df5 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -221,14 +221,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) @@ -25707,7 +26098,7 @@ index 12089c484..cd1bce280 100644 } EXPORT_SYMBOL(__dev_kfree_skb_irq); -@@ -3787,7 +3789,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, +@@ -3791,7 +3793,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, * This permits qdisc->running owner to get the lock more * often and dequeue packets faster. */ @@ -25719,7 +26110,7 @@ index 12089c484..cd1bce280 100644 if (unlikely(contended)) spin_lock(&q->busylock); -@@ -4586,6 +4592,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, +@@ -4591,6 +4597,7 @@ static int enqueue_to_backlog(struct sk_buff *skb, int cpu, rps_unlock(sd); local_irq_restore(flags); @@ -25727,7 +26118,7 @@ index 12089c484..cd1bce280 100644 atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4805,7 +4812,7 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4810,7 +4817,7 @@ static int netif_rx_internal(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -25736,7 +26127,7 @@ index 12089c484..cd1bce280 100644 rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -4815,14 +4822,14 @@ static int netif_rx_internal(struct sk_buff *skb) +@@ -4820,14 +4827,14 @@ static int netif_rx_internal(struct sk_buff *skb) ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); @@ -25754,7 +26145,7 @@ index 12089c484..cd1bce280 100644 } return ret; } -@@ -4861,11 +4868,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -4866,11 +4873,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); @@ -25768,7 +26159,7 @@ index 12089c484..cd1bce280 100644 trace_netif_rx_ni_exit(err); return err; -@@ -6341,12 +6346,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) +@@ -6346,12 +6351,14 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) sd->rps_ipi_list = NULL; local_irq_enable(); @@ -25783,7 +26174,7 @@ index 12089c484..cd1bce280 100644 } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -6424,6 +6431,7 @@ void __napi_schedule(struct napi_struct *n) +@@ -6429,6 +6436,7 @@ void __napi_schedule(struct napi_struct *n) local_irq_save(flags); ____napi_schedule(this_cpu_ptr(&softnet_data), n); local_irq_restore(flags); @@ -25791,7 +26182,7 @@ index 12089c484..cd1bce280 100644 } EXPORT_SYMBOL(__napi_schedule); -@@ -10987,6 +10995,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -10992,6 +11000,7 @@ static int dev_cpu_dead(unsigned int oldcpu) raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); @@ -25799,7 +26190,7 @@ index 12089c484..cd1bce280 100644 #ifdef CONFIG_RPS remsd = oldsd->rps_ipi_list; -@@ -11000,7 +11009,7 @@ static int dev_cpu_dead(unsigned int oldcpu) +@@ -11005,7 +11014,7 @@ static int dev_cpu_dead(unsigned int oldcpu) netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -25808,7 +26199,7 @@ index 12089c484..cd1bce280 100644 netif_rx_ni(skb); input_queue_head_incr(oldsd); } -@@ -11316,7 +11325,7 @@ static int __init net_dev_init(void) +@@ -11321,7 +11330,7 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); @@ -25818,7 +26209,7 @@ index 12089c484..cd1bce280 100644 #ifdef CONFIG_XFRM_OFFLOAD skb_queue_head_init(&sd->xfrm_backlog); diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c -index 8e582e29a..e51f4854d 100644 +index 8e582e29a41e..e51f4854d8b2 100644 --- a/net/core/gen_estimator.c +++ b/net/core/gen_estimator.c @@ -42,7 +42,7 @@ @@ -25849,7 +26240,7 @@ index 8e582e29a..e51f4854d 100644 return gen_new_estimator(bstats, cpu_bstats, rate_est, lock, running, opt); diff --git a/net/core/gen_stats.c b/net/core/gen_stats.c -index e491b083b..ef432cea2 100644 +index e491b083b348..ef432cea2e10 100644 --- a/net/core/gen_stats.c +++ b/net/core/gen_stats.c @@ -137,7 +137,7 @@ __gnet_stats_copy_basic_cpu(struct gnet_stats_basic_packed *bstats, @@ -25899,7 +26290,7 @@ index e491b083b..ef432cea2 100644 struct gnet_stats_basic_cpu __percpu *cpu, struct gnet_stats_basic_packed *b) diff --git a/net/core/sock.c b/net/core/sock.c -index 2fa8863ca..e96d3695b 100644 +index 2fa8863caee0..e96d3695bce2 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3057,12 +3057,11 @@ void lock_sock_nested(struct sock *sk, int subclass) @@ -25930,87 +26321,8 @@ index 2fa8863ca..e96d3695b 100644 return true; } EXPORT_SYMBOL(lock_sock_fast); -diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c -index cf178d8ee..bf3c70f47 100644 ---- a/net/ipv4/inet_hashtables.c -+++ b/net/ipv4/inet_hashtables.c -@@ -637,7 +637,9 @@ int __inet_hash(struct sock *sk, struct sock *osk) - int err = 0; - - if (sk->sk_state != TCP_LISTEN) { -+ local_bh_disable(); - inet_ehash_nolisten(sk, osk, NULL); -+ local_bh_enable(); - return 0; - } - WARN_ON(!sk_unhashed(sk)); -@@ -669,11 +671,8 @@ int inet_hash(struct sock *sk) - { - int err = 0; - -- if (sk->sk_state != TCP_CLOSE) { -- local_bh_disable(); -+ if (sk->sk_state != TCP_CLOSE) - err = __inet_hash(sk, NULL); -- local_bh_enable(); -- } - - return err; - } -@@ -684,17 +683,20 @@ void inet_unhash(struct sock *sk) - struct inet_hashinfo *hashinfo = sk->sk_prot->h.hashinfo; - struct inet_listen_hashbucket *ilb = NULL; - spinlock_t *lock; -+ bool state_listen; - - if (sk_unhashed(sk)) - return; - - if (sk->sk_state == TCP_LISTEN) { -+ state_listen = true; - ilb = &hashinfo->listening_hash[inet_sk_listen_hashfn(sk)]; -- lock = &ilb->lock; -+ spin_lock(&ilb->lock); - } else { -+ state_listen = false; - lock = inet_ehash_lockp(hashinfo, sk->sk_hash); -+ spin_lock_bh(lock); - } -- spin_lock_bh(lock); - if (sk_unhashed(sk)) - goto unlock; - -@@ -707,7 +709,10 @@ void inet_unhash(struct sock *sk) - __sk_nulls_del_node_init_rcu(sk); - sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); - unlock: -- spin_unlock_bh(lock); -+ if (state_listen) -+ spin_unlock(&ilb->lock); -+ else -+ spin_unlock_bh(lock); - } - EXPORT_SYMBOL_GPL(inet_unhash); - -diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c -index c9e7ecc7a..40203255e 100644 ---- a/net/ipv6/inet6_hashtables.c -+++ b/net/ipv6/inet6_hashtables.c -@@ -333,11 +333,8 @@ int inet6_hash(struct sock *sk) - { - int err = 0; - -- if (sk->sk_state != TCP_CLOSE) { -- local_bh_disable(); -+ if (sk->sk_state != TCP_CLOSE) - err = __inet_hash(sk, NULL); -- local_bh_enable(); -- } - - return err; - } diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c -index 6e18aa417..2d538f14e 100644 +index 6e18aa417782..2d538f14edf8 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -1264,7 +1264,7 @@ static struct Qdisc *qdisc_create(struct net_device *dev, @@ -26023,7 +26335,7 @@ index 6e18aa417..2d538f14e 100644 err = -EOPNOTSUPP; if (sch->flags & TCQ_F_MQROOT) { diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c -index 5d5391adb..8fe206c7b 100644 +index 5d5391adb667..8fe206c7b688 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -578,7 +578,11 @@ struct Qdisc noop_qdisc = { @@ -26055,7 +26367,7 @@ index 5d5391adb..8fe206c7b 100644 sch->ops = ops; sch->flags = ops->static_flags; diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c -index 362487f3a..5c6c31fc7 100644 +index 362487f3a6de..5c6c31fc7890 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -422,7 +422,7 @@ void svc_xprt_do_enqueue(struct svc_xprt *xprt) @@ -26077,10 +26389,10 @@ index 362487f3a..5c6c31fc7 100644 } EXPORT_SYMBOL_GPL(svc_xprt_do_enqueue); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c -index 3d75a4f10..0413ad455 100644 +index a6a4838d6254..7893ec004292 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c -@@ -2670,7 +2670,8 @@ int __net_init xfrm_state_init(struct net *net) +@@ -2672,7 +2672,8 @@ int __net_init xfrm_state_init(struct net *net) net->xfrm.state_num = 0; INIT_WORK(&net->xfrm.state_hash_work, xfrm_hash_resize); spin_lock_init(&net->xfrm.xfrm_state_lock); @@ -26090,3 +26402,6 @@ index 3d75a4f10..0413ad455 100644 return 0; out_byspi: +-- +2.25.1 + diff --git a/kernel-rt.spec b/kernel-rt.spec index 240ff47d9b85153110eadde3a81625c592fa4a58..44f3b02e36b01a467f03fdb054ebff549fef43d7 100644 --- a/kernel-rt.spec +++ b/kernel-rt.spec @@ -10,9 +10,9 @@ %global upstream_version 5.10 %global upstream_sublevel 0 -%global devel_release 99 +%global devel_release 121 %global maintenance_release .0.0 -%global pkg_release .52 +%global pkg_release .53 %global rt_release .rt62 %define with_debuginfo 1 @@ -71,7 +71,7 @@ Source9002: series.conf Source9998: patches.tar.bz2 %endif -Patch0: 0000-kernel-5.10.0-99.0.0-rt62.patch +Patch0: 0000-kernel-5.10.0-121.0.0-rt62.patch Patch1: 0001-modify-openeuler_defconfig-for-rt62.patch #BuildRequires: @@ -886,6 +886,9 @@ fi %endif %changelog +* Wed Nov 02 2022 kylin-mayukun - 5.10.0-121.0.0.53 +- add kernel-rt.spec and rt patches + * Wed Jun 22 2022 kylin-mayukun - 5.10.0-99.0.0.52 - add kernel-rt.spec and rt patches