mirror of https://github.com/torvalds/linux.git
-----BEGIN PGP SIGNATURE----- iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAl/YJxsQHGF4Ym9lQGtl cm5lbC5kawAKCRD301j7KXHgpjpyEACBdW+YjenjTbkUPeEXzQgkBkTZUYw3g007 DPcUT1g8PQZXYXlQvBKCvGhhIr7/KVcjepKoowiNQfBNGcIPJTVopW58nzpqAfTQ goI2WYGn5EKFFKBPvtH04cJD/Wo8muXdxynKtqyZbnGGgZjQxPrE259b8dpHjBSR 6L7HHkk0D1oU/5b6h6Ocpg9mc/0iIUCZylySAYY3eGO0JaVPJaXgZSJZYgHxCHll Lb+/y/fXdtm/0PmQ3ko0ev54g3yEWqZIX0NsZW1asrButIy+KLzQ2Mz1xFLFDMag prtIfwb8tzgc4dFPY090C/azjCh5CPpxqYS6FkRwS0p86n6OhkyXrqfily5Hs4/B NC7CBPBSH/j+NKUK7CYZcpTzTpxPjUr9p0anUdlvMJz8FhTb/3YEEZ1UTeWOeHmk Yo5SxnFghLeZZeZ1ok6rdymnVa7WEX12SCLGQX31BB2mld0tNbKb4b+FsBF6OUMk IUaX6OjwDFVRaysC88BQ4hjcIP1HxsViG4/VZDX15gjAAH2Pvb+7tev+lcDcOhjz TCD4GNFspTFzRhh9nT7oxQ679qCh9G9zHbzuIRewnrS6iqvo5SJQB3dR2yrWZRRH ySkQFiHpYOlnLJYv0jg9COlGwo2FUdcvKhCvkjQKKBz48rzW/IC0LwKdRQWZDFk3 FKGzP/NBig== =cadT -----END PGP SIGNATURE----- Merge tag 'tif-task_work.arch-2020-12-14' of git://git.kernel.dk/linux-block Pull TIF_NOTIFY_SIGNAL updates from Jens Axboe: "This sits on top of of the core entry/exit and x86 entry branch from the tip tree, which contains the generic and x86 parts of this work. Here we convert the rest of the archs to support TIF_NOTIFY_SIGNAL. With that done, we can get rid of JOBCTL_TASK_WORK from task_work and signal.c, and also remove a deadlock work-around in io_uring around knowing that signal based task_work waking is invoked with the sighand wait queue head lock. The motivation for this work is to decouple signal notify based task_work, of which io_uring is a heavy user of, from sighand. The sighand lock becomes a huge contention point, particularly for threaded workloads where it's shared between threads. Even outside of threaded applications it's slower than it needs to be. Roman Gershman <romger@amazon.com> reported that his networked workload dropped from 1.6M QPS at 80% CPU to 1.0M QPS at 100% CPU after io_uring was changed to use TIF_NOTIFY_SIGNAL. The time was all spent hammering on the sighand lock, showing 57% of the CPU time there [1]. There are further cleanups possible on top of this. One example is TIF_PATCH_PENDING, where a patch already exists to use TIF_NOTIFY_SIGNAL instead. Hopefully this will also lead to more consolidation, but the work stands on its own as well" [1] https://github.com/axboe/liburing/issues/215 * tag 'tif-task_work.arch-2020-12-14' of git://git.kernel.dk/linux-block: (28 commits) io_uring: remove 'twa_signal_ok' deadlock work-around kernel: remove checking for TIF_NOTIFY_SIGNAL signal: kill JOBCTL_TASK_WORK io_uring: JOBCTL_TASK_WORK is no longer used by task_work task_work: remove legacy TWA_SIGNAL path sparc: add support for TIF_NOTIFY_SIGNAL riscv: add support for TIF_NOTIFY_SIGNAL nds32: add support for TIF_NOTIFY_SIGNAL ia64: add support for TIF_NOTIFY_SIGNAL h8300: add support for TIF_NOTIFY_SIGNAL c6x: add support for TIF_NOTIFY_SIGNAL alpha: add support for TIF_NOTIFY_SIGNAL xtensa: add support for TIF_NOTIFY_SIGNAL arm: add support for TIF_NOTIFY_SIGNAL microblaze: add support for TIF_NOTIFY_SIGNAL hexagon: add support for TIF_NOTIFY_SIGNAL csky: add support for TIF_NOTIFY_SIGNAL openrisc: add support for TIF_NOTIFY_SIGNAL sh: add support for TIF_NOTIFY_SIGNAL um: add support for TIF_NOTIFY_SIGNAL ... |
||
|---|---|---|
| .. | ||
| dec | ||
| fw | ||
| ip32 | ||
| mach-ar7 | ||
| mach-ath25 | ||
| mach-ath79 | ||
| mach-au1x00 | ||
| mach-bcm47xx | ||
| mach-bcm63xx | ||
| mach-bmips | ||
| mach-cavium-octeon | ||
| mach-cobalt | ||
| mach-db1x00 | ||
| mach-dec | ||
| mach-generic | ||
| mach-ingenic | ||
| mach-ip22 | ||
| mach-ip27 | ||
| mach-ip28 | ||
| mach-ip30 | ||
| mach-ip32 | ||
| mach-jazz | ||
| mach-lantiq | ||
| mach-loongson2ef | ||
| mach-loongson32 | ||
| mach-loongson64 | ||
| mach-malta | ||
| mach-netlogic | ||
| mach-pic32 | ||
| mach-pistachio | ||
| mach-ralink | ||
| mach-rc32434 | ||
| mach-rm | ||
| mach-sibyte | ||
| mach-tx39xx | ||
| mach-tx49xx | ||
| mach-vr41xx | ||
| mips-boards | ||
| netlogic | ||
| octeon | ||
| pci | ||
| sgi | ||
| sibyte | ||
| sn | ||
| txx9 | ||
| vdso | ||
| vr41xx | ||
| xtalk | ||
| Kbuild | ||
| abi.h | ||
| addrspace.h | ||
| amon.h | ||
| arch_hweight.h | ||
| asm-eva.h | ||
| asm-offsets.h | ||
| asm-prototypes.h | ||
| asm.h | ||
| asmmacro-32.h | ||
| asmmacro-64.h | ||
| asmmacro.h | ||
| atomic.h | ||
| barrier.h | ||
| bcache.h | ||
| bitops.h | ||
| bitrev.h | ||
| bmips-spaces.h | ||
| bmips.h | ||
| bootinfo.h | ||
| branch.h | ||
| break.h | ||
| bug.h | ||
| bugs.h | ||
| cache.h | ||
| cacheflush.h | ||
| cacheops.h | ||
| cdmm.h | ||
| cevt-r4k.h | ||
| checksum.h | ||
| clocksource.h | ||
| cmp.h | ||
| cmpxchg.h | ||
| compat-signal.h | ||
| compat.h | ||
| compiler.h | ||
| cop2.h | ||
| cpu-features.h | ||
| cpu-info.h | ||
| cpu-type.h | ||
| cpu.h | ||
| cpufeature.h | ||
| debug.h | ||
| delay.h | ||
| div64.h | ||
| dma-coherence.h | ||
| dma-direct.h | ||
| dma-mapping.h | ||
| dma.h | ||
| dmi.h | ||
| ds1287.h | ||
| dsemul.h | ||
| dsp.h | ||
| edac.h | ||
| elf.h | ||
| errno.h | ||
| eva.h | ||
| exec.h | ||
| extable.h | ||
| fb.h | ||
| fixmap.h | ||
| floppy.h | ||
| fpregdef.h | ||
| fpu.h | ||
| fpu_emulator.h | ||
| ftrace.h | ||
| futex.h | ||
| ginvt.h | ||
| gio_device.h | ||
| gt64120.h | ||
| hardirq.h | ||
| hazards.h | ||
| highmem.h | ||
| hpet.h | ||
| hugetlb.h | ||
| hw_irq.h | ||
| i8259.h | ||
| ide.h | ||
| idle.h | ||
| inst.h | ||
| io.h | ||
| irq.h | ||
| irq_cpu.h | ||
| irq_gt641xx.h | ||
| irq_regs.h | ||
| irqflags.h | ||
| isa-rev.h | ||
| isadep.h | ||
| jazz.h | ||
| jazzdma.h | ||
| jump_label.h | ||
| kdebug.h | ||
| kexec.h | ||
| kgdb.h | ||
| kprobes.h | ||
| kvm_host.h | ||
| kvm_types.h | ||
| linkage.h | ||
| llsc.h | ||
| local.h | ||
| maar.h | ||
| machine.h | ||
| mc146818-time.h | ||
| mc146818rtc.h | ||
| mips-cm.h | ||
| mips-cpc.h | ||
| mips-cps.h | ||
| mips-gic.h | ||
| mips-r2-to-r6-emul.h | ||
| mips_mt.h | ||
| mipsmtregs.h | ||
| mipsprom.h | ||
| mipsregs.h | ||
| mmiowb.h | ||
| mmu.h | ||
| mmu_context.h | ||
| mmzone.h | ||
| module.h | ||
| msa.h | ||
| msc01_ic.h | ||
| paccess.h | ||
| page.h | ||
| pci.h | ||
| perf_event.h | ||
| pgalloc.h | ||
| pgtable-32.h | ||
| pgtable-64.h | ||
| pgtable-bits.h | ||
| pgtable.h | ||
| pm-cps.h | ||
| pm.h | ||
| prefetch.h | ||
| processor.h | ||
| prom.h | ||
| ptrace.h | ||
| r4k-timer.h | ||
| r4kcache.h | ||
| reboot.h | ||
| reg.h | ||
| regdef.h | ||
| rtlx.h | ||
| seccomp.h | ||
| setup.h | ||
| sgialib.h | ||
| sgiarcs.h | ||
| shmparam.h | ||
| sigcontext.h | ||
| signal.h | ||
| sim.h | ||
| smp-cps.h | ||
| smp-ops.h | ||
| smp.h | ||
| sni.h | ||
| socket.h | ||
| sparsemem.h | ||
| spinlock.h | ||
| spinlock_types.h | ||
| spram.h | ||
| stackframe.h | ||
| stackprotector.h | ||
| stacktrace.h | ||
| string.h | ||
| switch_to.h | ||
| sync.h | ||
| syscall.h | ||
| termios.h | ||
| thread_info.h | ||
| time.h | ||
| timex.h | ||
| tlb.h | ||
| tlbdebug.h | ||
| tlbex.h | ||
| tlbflush.h | ||
| tlbmisc.h | ||
| topology.h | ||
| traps.h | ||
| txx9irq.h | ||
| txx9pio.h | ||
| txx9tmr.h | ||
| types.h | ||
| uaccess.h | ||
| uasm.h | ||
| unaligned-emul.h | ||
| unistd.h | ||
| unroll.h | ||
| uprobes.h | ||
| vdso.h | ||
| vermagic.h | ||
| vga.h | ||
| vmalloc.h | ||
| vpe.h | ||
| war.h | ||
| watch.h | ||
| wbflush.h | ||
| yamon-dt.h | ||