LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [RFC PATCH 0/6] Simplify setting thread flags to a particular value
@ 2018-04-19 10:58 Dave Martin
  2018-04-19 10:58 ` [RFC PATCH 1/6] thread_info: Add update_thread_flag() helpers Dave Martin
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Dave Martin @ 2018-04-19 10:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: Catalin Marinas, Will Deacon, Ralf Baechle, James Hogan,
	Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
	David S. Miller, Ingo Molnar, Peter Zijlstra, Steven Rostedt,
	Oleg Nesterov, linux-arch

There are a number of bits of code sprinkled around the kernel to
set a thread flag if a certain condition is true, and clear it
otherwise.

To help make those call sites terser and less cumbersome, this
patch adds a new family of thread flag manipulators

	update*_thread_flag([...,] flag, cond)

See patch 1 for details.

Reviewers please pay close attention to accidental conversion of
set_tsk_thread_flag() to set_thread_flag() for example, and accidental
inversion of conditions.  I'm pretty sure neither happens, but
build-testing can't pick these up.

Build-tested on x86 and the explicitly patched architectures (defconfig
and multi_v7_defconfig for arm, defconfig for arm64, mips, powerpc,
sparc).

Boot-tested on arm64, with some context-switch stress tests that depend
on correct maintenance of TIF_FOREIGN_FPSTATE.


Background rationale:

I've found myself coding this idiom a few times now and would like to
stop duplicating it.  Using an ungainly lash-up of sed and grep I tried
to find other users of the same idiom without too many false positives,
and there while there aren't a huge number it seemed enough to be worth
having a go at a simple cleanup.

The core changes are in the first patch; other changes are split
per-arch.


Dave Martin (6):
  thread_info: Add update_thread_flag() helpers
  ARM: Use update_thread_flag()
  arm64: Use update{,_tsk}_thread_flag()
  MIPS: Use update{,_tsk}_thread_flag()
  powerpc: Use update_thread_flag()
  sparc: Use update_thread_flag()

 arch/arm/kernel/elf.c           |  9 +++------
 arch/arm64/kernel/fpsimd.c      | 19 +++++++------------
 arch/mips/kernel/elf.c          | 10 ++--------
 arch/mips/kernel/process.c      | 15 ++++++---------
 arch/mips/kernel/ptrace.c       |  5 +----
 arch/mips/kernel/syscall.c      | 10 ++--------
 arch/powerpc/include/asm/elf.h  | 10 ++--------
 arch/sparc/include/asm/elf_64.h |  5 +----
 include/linux/sched.h           |  6 ++++++
 include/linux/thread_info.h     | 11 +++++++++++
 include/trace/syscall.h         |  6 ++----
 kernel/ptrace.c                 | 13 +++++--------
 12 files changed, 48 insertions(+), 71 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-05-23 12:02 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-19 10:58 [RFC PATCH 0/6] Simplify setting thread flags to a particular value Dave Martin
2018-04-19 10:58 ` [RFC PATCH 1/6] thread_info: Add update_thread_flag() helpers Dave Martin
2018-05-23 12:01   ` Will Deacon
2018-04-19 10:58 ` [RFC PATCH 2/6] ARM: Use update_thread_flag() Dave Martin
2018-04-19 10:58 ` [RFC PATCH 3/6] arm64: Use update{,_tsk}_thread_flag() Dave Martin
2018-05-23 12:02   ` Will Deacon
2018-04-19 10:58 ` [RFC PATCH 4/6] MIPS: " Dave Martin
2018-04-19 10:58 ` [RFC PATCH 5/6] powerpc: Use update_thread_flag() Dave Martin
2018-04-19 10:58 ` [RFC PATCH 6/6] sparc: " Dave Martin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).