RFC preempt_count rework
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest5 patches 13 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/5 | sched: Introduce preempt_count accessor functionsinclude/ init/ kernel/ +3 more | +24 | 0 replies | |
| 2/5 | sched: Add NEED_RESCHED to the preempt_countinclude/ include/ include/ +3 more | +64 | 0 replies | |
| 3/5 | sched, arch: Create asm/preempt.harch/ arch/ arch/ +29 more | +51 | 0 replies | |
| 4/5 | sched: Create more preempt_count accessorsinclude/ include/ kernel/ | +18 | 0 replies | |
| 5/5 | sched, x86: Provide a per-cpu preempt_count implementationarch/ arch/ arch/ +6 more | +68 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [RFC][PATCH 0/5] preempt_count rework
These patches optimize preempt_enable by firstly folding the preempt and need_resched tests into one -- this should work for all architectures. And secondly by providing per-arch preempt_count implementations; with x86 using per-cpu preempt_count for fastest access.
These patches have so far only been compiled for defconfig-x86_64 + CONFIG_PREEMPT=y and boot tested with kvm -smp 4 upto wanting to mount root.
It still needs asm volatile("call preempt_schedule": : :"memory"); as per Andi's other patches to avoid the C calling convention cluttering the preempt_enable() sites.
--- arch/alpha/include/asm/Kbuild | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arm/include/asm/Kbuild | 1 + arch/arm64/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/h8300/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/m68k/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/openrisc/include/asm/Kbuild | 1 + arch/parisc/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/sh/include/asm/Kbuild | 1 + arch/sparc/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/Kbuild | 1 + arch/x86/include/asm/thread_info.h | 5 ++--- arch/x86/kernel/asm-offsets.c | 1 - arch/x86/kernel/cpu/common.c | 5 +++++ arch/x86/kernel/entry_32.S | 7 ++----- arch/x86/kernel/entry_64.S | 4 +--- arch/x86/kernel/process_32.c | 10 ++++++++++ arch/x86/kernel/process_64.c | 10 ++++++++++ arch/xtensa/include/asm/Kbuild | 1 + include/linux/preempt.h | 49 ++++++++++++++++++++++++++++++++++++++----------- include/linux/sched.h | 2 +- include/linux/thread_info.h | 1 + include/trace/events/sched.h | 2 +- init/main.c | 2 +- kernel/context_tracking.c | 3 +-- kernel/cpu/idle.c | 10 ++++++++++ kernel/sched/core.c | 31 +++++++++++++++++++------------ kernel/softirq.c | 4 ++-- kernel/timer.c | 8 ++++---- lib/smp_processor_id.c | 3 +-- 47 files changed, 138 insertions(+), 48 deletions(-)