* [PATCH v4 1/3] checkpatch.pl: add missing memory barriers
2016-01-11 11:00 [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
@ 2016-01-11 11:00 ` Michael S. Tsirkin
2016-01-11 11:00 ` [PATCH v4 2/3] checkpatch: check for __smp outside barrier.h Michael S. Tsirkin
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2016-01-11 11:00 UTC (permalink / raw)
To: linux-kernel
Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
linux-arch, Andrew Cooper, virtualization, Stefano Stabellini,
Thomas Gleixner, Ingo Molnar, H. Peter Anvin, David Miller,
linux-ia64, linuxppc-dev, linux-s390, sparclinux,
linux-arm-kernel, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Julian Calaby, Russell King - ARM Linux
SMP-only barriers were missing in checkpatch.pl
Refactor code slightly to make adding more variants easier.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
scripts/checkpatch.pl | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..94b4e33 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,27 @@ sub process {
}
}
# check for memory barriers without a comment.
- if ($line =~ /\b(mb|rmb|wmb|read_barrier_depends|smp_mb|smp_rmb|smp_wmb|smp_read_barrier_depends)\(/) {
+
+ my $barriers = qr{
+ mb|
+ rmb|
+ wmb|
+ read_barrier_depends
+ }x;
+ my $barrier_stems = qr{
+ mb__before_atomic|
+ mb__after_atomic|
+ store_release|
+ load_acquire|
+ store_mb|
+ (?:$barriers)
+ }x;
+ my $all_barriers = qr{
+ (?:$barriers)|
+ smp_(?:$barrier_stems)
+ }x;
+
+ if ($line =~ /\b(?:$all_barriers)\s*\(/) {
if (!ctx_has_comment($first_line, $linenr)) {
WARN("MEMORY_BARRIER",
"memory barrier without comment\n" . $herecurr);
--
MST
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/3] checkpatch: check for __smp outside barrier.h
2016-01-11 11:00 [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
2016-01-11 11:00 ` [PATCH v4 1/3] checkpatch.pl: add missing " Michael S. Tsirkin
@ 2016-01-11 11:00 ` Michael S. Tsirkin
2016-01-11 11:00 ` [PATCH v4 3/3] checkpatch: add virt barriers Michael S. Tsirkin
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2016-01-11 11:00 UTC (permalink / raw)
To: linux-kernel
Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
linux-arch, Andrew Cooper, virtualization, Stefano Stabellini,
Thomas Gleixner, Ingo Molnar, H. Peter Anvin, David Miller,
linux-ia64, linuxppc-dev, linux-s390, sparclinux,
linux-arm-kernel, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Julian Calaby, Russell King - ARM Linux
Introduction of __smp barriers cleans up a bunch of duplicate code, but
it gives people an additional handle onto a "new" set of barriers - just
because they're prefixed with __* unfortunately doesn't stop anyone from
using it (as happened with other arch stuff before.)
Add a checkpatch test so it will trigger a warning.
Reported-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
scripts/checkpatch.pl | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 94b4e33..25476c2 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5143,6 +5143,16 @@ sub process {
}
}
+ my $underscore_smp_barriers = qr{__smp_(?:$barrier_stems)}x;
+
+ if ($realfile !~ m@^include/asm-generic/@ &&
+ $realfile !~ m@/barrier\.h$@ &&
+ $line =~ m/\b(?:$underscore_smp_barriers)\s*\(/ &&
+ $line !~ m/^.\s*\#\s*define\s+(?:$underscore_smp_barriers)\s*\(/) {
+ WARN("MEMORY_BARRIER",
+ "__smp memory barriers shouldn't be used outside barrier.h and asm-generic\n" . $herecurr);
+ }
+
# check for waitqueue_active without a comment.
if ($line =~ /\bwaitqueue_active\s*\(/) {
if (!ctx_has_comment($first_line, $linenr)) {
--
MST
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] checkpatch: add virt barriers
2016-01-11 11:00 [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
2016-01-11 11:00 ` [PATCH v4 1/3] checkpatch.pl: add missing " Michael S. Tsirkin
2016-01-11 11:00 ` [PATCH v4 2/3] checkpatch: check for __smp outside barrier.h Michael S. Tsirkin
@ 2016-01-11 11:00 ` Michael S. Tsirkin
2016-01-11 11:04 ` [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
2016-01-11 21:45 ` Joe Perches
4 siblings, 0 replies; 7+ messages in thread
From: Michael S. Tsirkin @ 2016-01-11 11:00 UTC (permalink / raw)
To: linux-kernel
Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
linux-arch, Andrew Cooper, virtualization, Stefano Stabellini,
Thomas Gleixner, Ingo Molnar, H. Peter Anvin, David Miller,
linux-ia64, linuxppc-dev, linux-s390, sparclinux,
linux-arm-kernel, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Julian Calaby, Russell King - ARM Linux
Add virt_ barriers to list of barriers to check for
presence of a comment.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
scripts/checkpatch.pl | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 25476c2..c7bf1aa 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5133,7 +5133,8 @@ sub process {
}x;
my $all_barriers = qr{
(?:$barriers)|
- smp_(?:$barrier_stems)
+ smp_(?:$barrier_stems)|
+ virt_(?:$barrier_stems)
}x;
if ($line =~ /\b(?:$all_barriers)\s*\(/) {
--
MST
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 0/3] checkpatch: handling of memory barriers
2016-01-11 11:00 [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
` (2 preceding siblings ...)
2016-01-11 11:00 ` [PATCH v4 3/3] checkpatch: add virt barriers Michael S. Tsirkin
@ 2016-01-11 11:04 ` Michael S. Tsirkin
2016-01-11 11:06 ` Julian Calaby
2016-01-11 21:45 ` Joe Perches
4 siblings, 1 reply; 7+ messages in thread
From: Michael S. Tsirkin @ 2016-01-11 11:04 UTC (permalink / raw)
To: linux-kernel
Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
linux-arch, Andrew Cooper, virtualization, Stefano Stabellini,
Thomas Gleixner, Ingo Molnar, H. Peter Anvin, David Miller,
linux-ia64, linuxppc-dev, linux-s390, sparclinux,
linux-arm-kernel, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Julian Calaby, Russell King - ARM Linux
On Mon, Jan 11, 2016 at 12:59:25PM +0200, Michael S. Tsirkin wrote:
> As part of memory barrier cleanup, this patchset
> extends checkpatch to make it easier to stop
> incorrect memory barrier usage.
>
> This replaces the checkpatch patches in my series
> arch: barrier cleanup + barriers for virt
> and will be included in the pull request including
> the series.
>
> changes from v3:
> rename smp_barrier_stems to barrier_stems
> as suggested by Julian Calaby.
In fact it was Joe Perches that suggested it.
Sorry about the confusion.
> add (?: ... ) around a variable in regexp,
> in case we change the value later so that it matters.
> changes from v2:
> address comments by Joe Perches:
> use (?: ... ) to avoid unnecessary capture groups
> rename smp_barriers to smp_barrier_stems for clarity
> add barriers before/after atomic
> Changes from v1:
> catch optional\s* before () in barriers
> rewrite using qr{} instead of map
>
> Michael S. Tsirkin (3):
> checkpatch.pl: add missing memory barriers
> checkpatch: check for __smp outside barrier.h
> checkpatch: add virt barriers
>
> Michael S. Tsirkin (3):
> checkpatch.pl: add missing memory barriers
> checkpatch: check for __smp outside barrier.h
> checkpatch: add virt barriers
>
> scripts/checkpatch.pl | 33 ++++++++++++++++++++++++++++++++-
> 1 file changed, 32 insertions(+), 1 deletion(-)
>
> --
> MST
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 0/3] checkpatch: handling of memory barriers
2016-01-11 11:04 ` [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
@ 2016-01-11 11:06 ` Julian Calaby
0 siblings, 0 replies; 7+ messages in thread
From: Julian Calaby @ 2016-01-11 11:06 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: linux-kernel, Andy Whitcroft, Joe Perches, Peter Zijlstra,
Arnd Bergmann, linux-arch, Andrew Cooper, virtualization,
Stefano Stabellini, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
David Miller, linux-ia64, linuxppc-dev, linux-s390, sparclinux,
Mailing List, Arm, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Russell King - ARM Linux
Hi Michael,
On Mon, Jan 11, 2016 at 10:04 PM, Michael S. Tsirkin <mst@redhat.com> wrote:
> On Mon, Jan 11, 2016 at 12:59:25PM +0200, Michael S. Tsirkin wrote:
>> As part of memory barrier cleanup, this patchset
>> extends checkpatch to make it easier to stop
>> incorrect memory barrier usage.
>>
>> This replaces the checkpatch patches in my series
>> arch: barrier cleanup + barriers for virt
>> and will be included in the pull request including
>> the series.
>>
>> changes from v3:
>> rename smp_barrier_stems to barrier_stems
>> as suggested by Julian Calaby.
>
> In fact it was Joe Perches that suggested it.
> Sorry about the confusion.
I was about to point that out.
FWIW this entire series is:
Acked-by: Julian Calaby <julian.calaby@gmail.com>
Thanks,
--
Julian Calaby
Email: julian.calaby@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 0/3] checkpatch: handling of memory barriers
2016-01-11 11:00 [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
` (3 preceding siblings ...)
2016-01-11 11:04 ` [PATCH v4 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
@ 2016-01-11 21:45 ` Joe Perches
4 siblings, 0 replies; 7+ messages in thread
From: Joe Perches @ 2016-01-11 21:45 UTC (permalink / raw)
To: Michael S. Tsirkin, linux-kernel
Cc: Andy Whitcroft, Peter Zijlstra, Arnd Bergmann, linux-arch,
Andrew Cooper, virtualization, Stefano Stabellini,
Thomas Gleixner, Ingo Molnar, H. Peter Anvin, David Miller,
linux-ia64, linuxppc-dev, linux-s390, sparclinux,
linux-arm-kernel, linux-metag, linux-mips, x86,
user-mode-linux-devel, adi-buildroot-devel, linux-sh,
linux-xtensa, xen-devel, Ingo Molnar, Tony Lindgren,
Julian Calaby, Russell King - ARM Linux
On Mon, 2016-01-11 at 13:00 +0200, Michael S. Tsirkin wrote:
> As part of memory barrier cleanup, this patchset
> extends checkpatch to make it easier to stop
> incorrect memory barrier usage.
Thanks Michael.
Acked-by: Joe Perches <joe@perches.com>
^ permalink raw reply [flat|nested] 7+ messages in thread