linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: mingo@kernel.org
Cc: arnd@arndb.de, aryabinin@virtuozzo.com, boqun.feng@gmail.com,
	catalin.marinas@arm.com, dvyukov@google.com, glider@google.com,
	linuxdrivers@attotech.com, linux-kernel@vger.kernel.org,
	peterz@infradead.org, will.deacon@arm.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCHv3 0/6] atomics: generate atomic headers / instrument arm64
Date: Mon, 8 Oct 2018 18:15:24 +0100	[thread overview]
Message-ID: <20181008171523.rw34hyaqap2yb3py@lakrids.cambridge.arm.com> (raw)
In-Reply-To: <20180904104830.2975-1-mark.rutland@arm.com>

On Tue, Sep 04, 2018 at 11:48:24AM +0100, Mark Rutland wrote:
> Hi Ingo,
> 
> As previously requested, this is a (trivial) rebase of the remaining generated
> atomic patches atop of v4.19-rc2, avoiding any potential conflict with Peter's
> ldsem atomic cleanup patch that got taken through the tty tree.
> 
> Are you still happy to pick this up? Full blurb below.

Ping!

Do you have any comments, or would you be happy to queue this?

I'm happy to resend come rc1, if you'd prefer?

Thanks,
Mark.

> This series scripts the generation of the various atomic headers, to ensure
> that the various atomic APIs remain consistent, reducing the risk of human
> error, and simplifying future rework. This fleshes out the instrumented atomics
> such that arm64 can be migrated over to them.
> 
> Since v1 [1]:
> * Use 'p' instead of 'I' for pointer to base int type
> * Use Peter's patch for ldsem
> * Rename atomic acquire/release barriers
> * Handle xchg/cmpxchg variants
> * Typo fixes
> * Migrate arm64 to instrumented atomics
> 
> Since v2 [4]:
> * rebase to v4.19-rc2 to solve potential conflicts with ldsem patch
> 
> The series is based on my atomic API cleanup patches [2], which have been
> queued in the tip locking/core branch.
> 
> The first six patches clean up some issues with the existing atomic
> instrumentation, with patch six introducing the header generation
> infrastructure. The subsequent three patches migrate to each generated header
> in turn, with the final patch moving arm64 over to the instrumented atomics.
> 
> The scripts themselves are mostly POSIX sh (modulo local), without bashisms,
> and work in dash and bash.
> 
> Per Linus request that it is possible to use git grep to inspect the atomic
> headers [3], the headers are committed (and not generated by kbuild). Since we
> now expand the fallback definitions inline, each *should* be easier to find
> with grep. Each header also has a comment at the top with a path to the script
> used to generate it. 
> 
> That scripting comes to ~900 lines, and replaces ~1700 lines of hand-written
> boilerplate with ~4700 lines of generated code. Some of that increase in line
> count is due to filling in missing portions of the API (e.g. adding all the
> ordering variants to the instrumented atomics), while some of that is due to
> expanding fallbacks in place, and consistently spreading these across multiple
> lines.
> 
> I've build-tested this for x86_64 and arm64 (with and without LSE), and given
> this some basic boot testing.
> 
> I've pushed the series out to my atomics/generated branch [3], based atop of
> v4.19-rc2.
> 
> Thanks,
> Mark.
> 
> [1] https://lkml.kernel.org/r/20180529180746.29684-1-mark.rutland@arm.com
> [2] https://lkml.kernel.org/r/20180621121321.4761-1-mark.rutland@arm.com
> [3] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git atomics/generated
> [4] https://lkml.kernel.org/r/20180625105952.3756-1-mark.rutland@arm.com
> 
> Mark Rutland (6):
>   atomics: add common header generation files
>   atomics: switch to generated fallbacks
>   atomics: switch to generated atomic-long
>   atomics: switch to generated instrumentation
>   atomics: check generated headers are up-to-date
>   arm64: use instrumented atomics
> 
>  Kbuild                                       |   18 +-
>  MAINTAINERS                                  |    1 +
>  arch/arm64/include/asm/atomic.h              |  237 +--
>  arch/arm64/include/asm/atomic_ll_sc.h        |   28 +-
>  arch/arm64/include/asm/atomic_lse.h          |   38 +-
>  arch/arm64/include/asm/cmpxchg.h             |   60 +-
>  arch/arm64/include/asm/sync_bitops.h         |   16 +-
>  include/asm-generic/atomic-instrumented.h    | 1688 ++++++++++++++++---
>  include/asm-generic/atomic-long.h            | 1173 ++++++++++---
>  include/linux/atomic-fallback.h              | 2294 ++++++++++++++++++++++++++
>  include/linux/atomic.h                       | 1241 +-------------
>  scripts/atomic/atomic-tbl.sh                 |  186 +++
>  scripts/atomic/atomics.tbl                   |   41 +
>  scripts/atomic/check-atomics.sh              |   19 +
>  scripts/atomic/fallbacks/acquire             |    9 +
>  scripts/atomic/fallbacks/add_negative        |   16 +
>  scripts/atomic/fallbacks/add_unless          |   16 +
>  scripts/atomic/fallbacks/andnot              |    7 +
>  scripts/atomic/fallbacks/dec                 |    7 +
>  scripts/atomic/fallbacks/dec_and_test        |   15 +
>  scripts/atomic/fallbacks/dec_if_positive     |   15 +
>  scripts/atomic/fallbacks/dec_unless_positive |   14 +
>  scripts/atomic/fallbacks/fence               |   11 +
>  scripts/atomic/fallbacks/fetch_add_unless    |   23 +
>  scripts/atomic/fallbacks/inc                 |    7 +
>  scripts/atomic/fallbacks/inc_and_test        |   15 +
>  scripts/atomic/fallbacks/inc_not_zero        |   14 +
>  scripts/atomic/fallbacks/inc_unless_negative |   14 +
>  scripts/atomic/fallbacks/read_acquire        |    7 +
>  scripts/atomic/fallbacks/release             |    8 +
>  scripts/atomic/fallbacks/set_release         |    7 +
>  scripts/atomic/fallbacks/sub_and_test        |   16 +
>  scripts/atomic/fallbacks/try_cmpxchg         |   11 +
>  scripts/atomic/gen-atomic-fallback.sh        |  181 ++
>  scripts/atomic/gen-atomic-instrumented.sh    |  182 ++
>  scripts/atomic/gen-atomic-long.sh            |  101 ++
>  36 files changed, 5909 insertions(+), 1827 deletions(-)
>  create mode 100644 include/linux/atomic-fallback.h
>  create mode 100755 scripts/atomic/atomic-tbl.sh
>  create mode 100644 scripts/atomic/atomics.tbl
>  create mode 100755 scripts/atomic/check-atomics.sh
>  create mode 100644 scripts/atomic/fallbacks/acquire
>  create mode 100644 scripts/atomic/fallbacks/add_negative
>  create mode 100644 scripts/atomic/fallbacks/add_unless
>  create mode 100644 scripts/atomic/fallbacks/andnot
>  create mode 100644 scripts/atomic/fallbacks/dec
>  create mode 100644 scripts/atomic/fallbacks/dec_and_test
>  create mode 100644 scripts/atomic/fallbacks/dec_if_positive
>  create mode 100644 scripts/atomic/fallbacks/dec_unless_positive
>  create mode 100644 scripts/atomic/fallbacks/fence
>  create mode 100644 scripts/atomic/fallbacks/fetch_add_unless
>  create mode 100644 scripts/atomic/fallbacks/inc
>  create mode 100644 scripts/atomic/fallbacks/inc_and_test
>  create mode 100644 scripts/atomic/fallbacks/inc_not_zero
>  create mode 100644 scripts/atomic/fallbacks/inc_unless_negative
>  create mode 100644 scripts/atomic/fallbacks/read_acquire
>  create mode 100644 scripts/atomic/fallbacks/release
>  create mode 100644 scripts/atomic/fallbacks/set_release
>  create mode 100644 scripts/atomic/fallbacks/sub_and_test
>  create mode 100644 scripts/atomic/fallbacks/try_cmpxchg
>  create mode 100755 scripts/atomic/gen-atomic-fallback.sh
>  create mode 100755 scripts/atomic/gen-atomic-instrumented.sh
>  create mode 100755 scripts/atomic/gen-atomic-long.sh
> 
> -- 
> 2.11.0
> 

  parent reply	other threads:[~2018-10-08 17:15 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-04 10:48 [PATCHv3 0/6] atomics: generate atomic headers / instrument arm64 Mark Rutland
2018-09-04 10:48 ` [PATCHv3 1/6] atomics: add common header generation files Mark Rutland
2018-11-01  9:54   ` [tip:locking/core] locking/atomics: Add " tip-bot for Mark Rutland
2018-11-01 10:06   ` tip-bot for Mark Rutland
2018-11-15 23:03   ` [PATCHv3 1/6] atomics: add " Andrew Morton
2018-11-15 23:10   ` Andrew Morton
2018-11-16  2:51     ` Mark Rutland
2018-11-21 22:34       ` Andrew Morton
2018-09-04 10:48 ` [PATCHv3 2/6] atomics: switch to generated fallbacks Mark Rutland
2018-11-01  9:55   ` [tip:locking/core] locking/atomics: Switch " tip-bot for Mark Rutland
2018-11-01 10:07   ` tip-bot for Mark Rutland
2018-09-04 10:48 ` [PATCHv3 3/6] atomics: switch to generated atomic-long Mark Rutland
2018-11-01  9:55   ` [tip:locking/core] locking/atomics: Switch " tip-bot for Mark Rutland
2018-11-01 10:08   ` tip-bot for Mark Rutland
2018-09-04 10:48 ` [PATCHv3 4/6] atomics: switch to generated instrumentation Mark Rutland
2018-11-01  9:56   ` [tip:locking/core] locking/atomics: Switch " tip-bot for Mark Rutland
2018-11-01 10:08   ` tip-bot for Mark Rutland
2018-09-04 10:48 ` [PATCHv3 5/6] atomics: check generated headers are up-to-date Mark Rutland
2018-11-01  9:57   ` [tip:locking/core] locking/atomics: Check " tip-bot for Mark Rutland
2018-11-01 10:09   ` tip-bot for Mark Rutland
2018-11-21  8:02     ` Ingo Molnar
2018-11-21 11:40       ` Mark Rutland
2018-11-28  8:30         ` Ingo Molnar
2018-09-04 10:48 ` [PATCHv3 6/6] arm64: use instrumented atomics Mark Rutland
2018-11-01  9:57   ` [tip:locking/core] arm64: Use " tip-bot for Mark Rutland
2018-11-01 10:09   ` [tip:locking/core] arm64, locking/atomics: " tip-bot for Mark Rutland
2018-10-08 17:15 ` Mark Rutland [this message]
2018-10-19 10:27   ` [PATCHv3 0/6] atomics: generate atomic headers / instrument arm64 Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181008171523.rw34hyaqap2yb3py@lakrids.cambridge.arm.com \
    --to=mark.rutland@arm.com \
    --cc=arnd@arndb.de \
    --cc=aryabinin@virtuozzo.com \
    --cc=boqun.feng@gmail.com \
    --cc=catalin.marinas@arm.com \
    --cc=dvyukov@google.com \
    --cc=glider@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxdrivers@attotech.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).