All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Cooper,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Stefano Stabellini, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	David Miller, linux-ia64-u79uwXL29TY76Z2rM5mHXA,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-s390-u79uwXL29TY76Z2rM5mHXA,
	sparclinux-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-metag-u79uwXL29TY76Z2rM5mHXA,
	linux-mips-6z/3iImG2C8G8FEW9MqTrA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	user-mode-linux-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	adi-buildroot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-sh-u79uwXL29TY76Z2rM5mHXA,
	linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b, Ingo Molnar, Ton

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST


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

* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 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,
	Andrey Konovalov, Russell King - ARM Linux

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST

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

* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Andy Whitcroft, Joe Perches, Peter Zijlstra, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Cooper,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Stefano Stabellini, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	David Miller, linux-ia64-u79uwXL29TY76Z2rM5mHXA,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-s390-u79uwXL29TY76Z2rM5mHXA,
	sparclinux-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-metag-u79uwXL29TY76Z2rM5mHXA,
	linux-mips-6z/3iImG2C8G8FEW9MqTrA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	user-mode-linux-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	adi-buildroot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-sh-u79uwXL29TY76Z2rM5mHXA,
	linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b, Ingo Molnar, Ton

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST

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

* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-arm-kernel

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST

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

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
  (?)
  (?)
@ 2016-01-10 11:56   ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 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, Ton

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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 11:56   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 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,
	Andrey Konovalov, 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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 11:56   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 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, Ton

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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
                   ` (4 preceding siblings ...)
  (?)
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 11:56   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-arm-kernel

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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
                   ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 11:56 ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2b3c228..97b8b62 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
+			store_release|
+			load_acquire|
+			store_mb|
+			($barriers)
+		}x;
+		my $all_barriers = qr{
+			$barriers|
+			smp_($smp_barriers)
+		}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
  2016-01-10 11:56 ` Michael S. Tsirkin
                     ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 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,
	Andrey Konovalov, 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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-arm-kernel

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
  2016-01-10 11:56 ` Michael S. Tsirkin
                   ` (5 preceding siblings ...)
  (?)
@ 2016-01-10 11:57 ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel,
	Andrew Cooper

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 97b8b62..a96adcb 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5141,6 +5141,16 @@ sub process {
 			}
 		}
 
+		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}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] 61+ messages in thread

* [PATCH v2 3/3] checkpatch: add virt barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
  (?)
  (?)
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 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, Ton

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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST


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

* [PATCH v2 3/3] checkpatch: add virt barriers
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 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,
	Andrey Konovalov, 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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST

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

* [PATCH v2 3/3] checkpatch: add virt barriers
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 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, Ton

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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST

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

* [PATCH v2 3/3] checkpatch: add virt barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
                   ` (8 preceding siblings ...)
  (?)
@ 2016-01-10 11:57 ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST

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

* [PATCH v2 3/3] checkpatch: add virt barriers
@ 2016-01-10 11:57   ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-arm-kernel

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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST

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

* [PATCH v2 3/3] checkpatch: add virt barriers
  2016-01-10 11:56 ` Michael S. Tsirkin
                   ` (9 preceding siblings ...)
  (?)
@ 2016-01-10 11:57 ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

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 a96adcb..5ca272b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5131,7 +5131,8 @@ sub process {
 		}x;
 		my $all_barriers = qr{
 			$barriers|
-			smp_($smp_barriers)
+			smp_($smp_barriers)|
+			virt_($smp_barriers)
 		}x;
 
 		if ($line =~ /\b($all_barriers)\s*\(/) {
-- 
MST

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56   ` Michael S. Tsirkin
                       ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 15:07     ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 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

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);


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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:07     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:07     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 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

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:07     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56   ` Michael S. Tsirkin
                     ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 15:07   ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);

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

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:07     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

?
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

> ?			if (!ctx_has_comment($first_line, $linenr))
> {
> ?				WARN("MEMORY_BARRIER",
> ?				?????"memory barrier without
> comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 11:56   ` Michael S. Tsirkin
                     ` (2 preceding siblings ...)
  (?)
@ 2016-01-10 15:07   ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

 
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

>  			if (!ctx_has_comment($first_line, $linenr))
> {
>  				WARN("MEMORY_BARRIER",
>  				     "memory barrier without
> comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:07     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:07 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> SMP-only barriers were missing in checkpatch.pl
> 
> Refactor code slightly to make adding more variants easier.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> +			store_release|
> +			load_acquire|
> +			store_mb|
> +			($barriers)
> +		}x;

If I use a variable called $smp_barriers, I'd expect
it to actually be the smp_barriers, not to have to
prefix it with smp_ before using it.

		my $smp_barriers = qr{
			smp_store_release|
			smp_load_acquire|
			smp_store_mb|
			smp_read_barrier_depends
		}x;

or

		my $smp_barriers = qr{
			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
		}x;

�
> +		my $all_barriers = qr{
> +			$barriers|
> +			smp_($smp_barriers)
> +		}x;

And this shouldn't have a capture group.

		my $all_barriers = qr{
			$barriers|
			$smp_barriers
		}x;		
> +
> +		if ($line =~ /\b($all_barriers)\s*\(/) {

This doesn't need the capture group either (?:all_barriers)

> �			if (!ctx_has_comment($first_line, $linenr))
> {
> �				WARN("MEMORY_BARRIER",
> �				�����"memory barrier without
> comment\n" . $herecurr);



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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
  2016-01-10 11:57   ` Michael S. Tsirkin
                       ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 15:08     ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 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

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {


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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 15:08     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 15:08     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 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

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 15:08     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
  2016-01-10 11:57   ` Michael S. Tsirkin
                     ` (5 preceding siblings ...)
  (?)
@ 2016-01-10 15:08   ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 15:08     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
> ?			}
> ?		}
> ?
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
  2016-01-10 11:57   ` Michael S. Tsirkin
                     ` (4 preceding siblings ...)
  (?)
@ 2016-01-10 15:08   ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
>  			}
>  		}
>  
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {

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

* Re: [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h
@ 2016-01-10 15:08     ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:08 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 13:57 +0200, Michael S. Tsirkin wrote:
> 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.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5141,6 +5141,16 @@ sub process {
> �			}
> �		}
> �
> +		my $underscore_smp_barriers = qr{__smp_($smp_barriers)}x;

another unnecessary capture group

> +
> +		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)) {


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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                           ` (2 preceding siblings ...)
  (?)
@ 2016-01-10 15:17         ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Andy Whitcroft, Peter Zijlstra, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Cooper,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Stefano Stabellini, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	David Miller, linux-ia64-u79uwXL29TY76Z2rM5mHXA,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-s390-u79uwXL29TY76Z2rM5mHXA,
	sparclinux-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-metag-u79uwXL29TY76Z2rM5mHXA,
	linux-mips-6z/3iImG2C8G8FEW9MqTrA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	user-mode-linux-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	adi-buildroot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-sh-u79uwXL29TY76Z2rM5mHXA,
	linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b, Ingo Molnar,
	Tony Lindgren

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:17         ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:17         ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Andy Whitcroft, Peter Zijlstra, Arnd Bergmann,
	linux-arch-u79uwXL29TY76Z2rM5mHXA, Andrew Cooper,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Stefano Stabellini, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	David Miller, linux-ia64-u79uwXL29TY76Z2rM5mHXA,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-s390-u79uwXL29TY76Z2rM5mHXA,
	sparclinux-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-metag-u79uwXL29TY76Z2rM5mHXA,
	linux-mips-6z/3iImG2C8G8FEW9MqTrA, x86-DgEjT+Ai2ygdnm+yROfE0A,
	user-mode-linux-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	adi-buildroot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-sh-u79uwXL29TY76Z2rM5mHXA,
	linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw,
	xen-devel-GuqFBffKawtpuQazS67q72D2FQJk+8+b, Ingo Molnar,
	Tony Lindgren

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:17         ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                       ` (5 preceding siblings ...)
  (?)
@ 2016-01-10 15:17     ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 15:17         ` Joe Perches
  0 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                       ` (4 preceding siblings ...)
  (?)
@ 2016-01-10 15:17     ` Joe Perches
  -1 siblings, 0 replies; 61+ messages in thread
From: Joe Perches @ 2016-01-10 15:17 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends

That's missing (?:barriers) too.

btw: shouldn't this also have
	smp_mb__(?:before|after)_atomic
?

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                         ` (2 preceding siblings ...)
  (?)
@ 2016-01-10 19:13       ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> >  			if (!ctx_has_comment($first_line, $linenr))
> > {
> >  				WARN("MEMORY_BARRIER",
> >  				     "memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:13       ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> >  			if (!ctx_has_comment($first_line, $linenr))
> > {
> >  				WARN("MEMORY_BARRIER",
> >  				     "memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:13       ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> >  			if (!ctx_has_comment($first_line, $linenr))
> > {
> >  				WARN("MEMORY_BARRIER",
> >  				     "memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                       ` (7 preceding siblings ...)
  (?)
@ 2016-01-10 19:13     ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> >  			if (!ctx_has_comment($first_line, $linenr))
> > {
> >  				WARN("MEMORY_BARRIER",
> >  				     "memory barrier without
> > comment\n" . $herecurr);

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

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:13       ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> > ?			if (!ctx_has_comment($first_line, $linenr))
> > {
> > ?				WARN("MEMORY_BARRIER",
> > ?				?????"memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:07     ` Joe Perches
                       ` (9 preceding siblings ...)
  (?)
@ 2016-01-10 19:13     ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> >  			if (!ctx_has_comment($first_line, $linenr))
> > {
> >  				WARN("MEMORY_BARRIER",
> >  				     "memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:13       ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:13 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, Jan 10, 2016 at 07:07:05AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > SMP-only barriers were missing in checkpatch.pl
> > 
> > Refactor code slightly to make adding more variants easier.
> []
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -5116,7 +5116,25 @@ 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 $smp_barriers = qr{
> > +			store_release|
> > +			load_acquire|
> > +			store_mb|
> > +			($barriers)
> > +		}x;
> 
> If I use a variable called $smp_barriers, I'd expect
> it to actually be the smp_barriers, not to have to
> prefix it with smp_ before using it.
> 
> 		my $smp_barriers = qr{
> 			smp_store_release|
> 			smp_load_acquire|
> 			smp_store_mb|
> 			smp_read_barrier_depends
> 		}x;
> 
> or
> 
> 		my $smp_barriers = qr{
> 			smp_(?:store_release|load_acquire|store_mb|read_barrier_depends)
> 		}x;
> 

Yes but virt barriers (added in patch 3) are same things but prefixed
with virt_.  So we need the stems without smp_ prefix. If smp_barriers is
too confusing we'll just need to give them some other name.
How about:
my $smp_barrier_stems

?

> > +		my $all_barriers = qr{
> > +			$barriers|
> > +			smp_($smp_barriers)
> > +		}x;
> 
> And this shouldn't have a capture group.
> 
> 		my $all_barriers = qr{
> 			$barriers|
> 			$smp_barriers
> 		}x;		
> > +
> > +		if ($line =~ /\b($all_barriers)\s*\(/) {
> 
> This doesn't need the capture group either (?:all_barriers)
> 
> > �			if (!ctx_has_comment($first_line, $linenr))
> > {
> > �				WARN("MEMORY_BARRIER",
> > �				�����"memory barrier without
> > comment\n" . $herecurr);

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:17         ` Joe Perches
  (?)
  (?)
@ 2016-01-10 19:29           ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:29           ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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,
	Andrey Konovalov, Russell King - ARM Linux

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:29           ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-kernel, 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

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:17         ` Joe Perches
                           ` (3 preceding siblings ...)
  (?)
@ 2016-01-10 19:29         ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
@ 2016-01-10 19:29           ` Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* Re: [PATCH v2 1/3] checkpatch.pl: add missing memory barriers
  2016-01-10 15:17         ` Joe Perches
                           ` (5 preceding siblings ...)
  (?)
@ 2016-01-10 19:29         ` Michael S. Tsirkin
  -1 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 19:29 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

On Sun, Jan 10, 2016 at 07:17:31AM -0800, Joe Perches wrote:
> On Sun, 2016-01-10 at 07:07 -0800, Joe Perches wrote:
> > On Sun, 2016-01-10 at 13:56 +0200, Michael S. Tsirkin wrote:
> > > SMP-only barriers were missing in checkpatch.pl
> > > 
> > > Refactor code slightly to make adding more variants easier.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > If I use a variable called $smp_barriers, I'd expect
> > it to actually be the smp_barriers, not to have to
> > prefix it with smp_ before using it.
> > 
> > 		my $smp_barriers = qr{
> > 			smp_store_release|
> > 			smp_load_acquire|
> > 			smp_store_mb|
> > 			smp_read_barrier_depends
> 
> That's missing (?:barriers) too.

My version has it but need to add ?: to avoid
a capture group.

> btw: shouldn't this also have
> 	smp_mb__(?:before|after)_atomic
> ?

Good catch, included in the next version.

-- 
MST

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

* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST

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

* [PATCH v2 0/3] checkpatch: handling of memory barriers
@ 2016-01-10 11:56 Michael S. Tsirkin
  0 siblings, 0 replies; 61+ messages in thread
From: Michael S. Tsirkin @ 2016-01-10 11:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mips, linux-ia64, linux-sh, Peter Zijlstra, virtualization,
	H. Peter Anvin, sparclinux, Ingo Molnar, linux-arch, linux-s390,
	Russell King - ARM Linux, Arnd Bergmann, x86, Tony Lindgren,
	xen-devel, Ingo Molnar, linux-xtensa, user-mode-linux-devel,
	Stefano Stabellini, Andrey Konovalov, adi-buildroot-devel,
	Andy Whitcroft, Thomas Gleixner, linux-metag, linux-arm-kernel

As part of memory barrier cleanup, this patchset
extends checkpatch to make it easier to stop
incorrect memory barrier usage.

This applies on top of my series
	arch: barrier cleanup + barriers for virt
and will be included in the next version of the series.

Changes from v2:
	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

 scripts/checkpatch.pl | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

-- 
MST

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

end of thread, other threads:[~2016-01-10 19:29 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-10 11:56 [PATCH v2 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
2016-01-10 11:56 ` Michael S. Tsirkin
2016-01-10 11:56 ` Michael S. Tsirkin
2016-01-10 11:56 ` Michael S. Tsirkin
2016-01-10 11:56 ` [PATCH v2 1/3] checkpatch.pl: add missing " Michael S. Tsirkin
2016-01-10 11:56   ` Michael S. Tsirkin
2016-01-10 11:56   ` Michael S. Tsirkin
2016-01-10 11:56   ` Michael S. Tsirkin
2016-01-10 15:07   ` Joe Perches
2016-01-10 15:07   ` Joe Perches
2016-01-10 15:07   ` Joe Perches
2016-01-10 15:07     ` Joe Perches
2016-01-10 15:07     ` Joe Perches
2016-01-10 15:07     ` Joe Perches
2016-01-10 15:07     ` Joe Perches
2016-01-10 15:07     ` Joe Perches
2016-01-10 15:17     ` Joe Perches
2016-01-10 15:17     ` Joe Perches
     [not found]     ` <1452438425.7773.21.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
2016-01-10 15:17       ` Joe Perches
2016-01-10 15:17         ` Joe Perches
2016-01-10 15:17         ` Joe Perches
2016-01-10 15:17         ` Joe Perches
2016-01-10 15:17         ` Joe Perches
2016-01-10 19:29         ` Michael S. Tsirkin
2016-01-10 19:29         ` Michael S. Tsirkin
2016-01-10 19:29           ` Michael S. Tsirkin
2016-01-10 19:29           ` Michael S. Tsirkin
2016-01-10 19:29           ` Michael S. Tsirkin
2016-01-10 19:29         ` Michael S. Tsirkin
2016-01-10 19:13     ` Michael S. Tsirkin
2016-01-10 19:13     ` Michael S. Tsirkin
2016-01-10 19:13       ` Michael S. Tsirkin
2016-01-10 19:13       ` Michael S. Tsirkin
2016-01-10 19:13       ` Michael S. Tsirkin
2016-01-10 19:13       ` Michael S. Tsirkin
2016-01-10 19:13     ` Michael S. Tsirkin
2016-01-10 11:56 ` Michael S. Tsirkin
2016-01-10 11:56 ` Michael S. Tsirkin
2016-01-10 11:57 ` [PATCH v2 2/3] checkpatch: check for __smp outside barrier.h Michael S. Tsirkin
2016-01-10 11:57 ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 15:08   ` Joe Perches
2016-01-10 15:08   ` Joe Perches
2016-01-10 15:08   ` Joe Perches
2016-01-10 15:08     ` Joe Perches
2016-01-10 15:08     ` Joe Perches
2016-01-10 15:08     ` Joe Perches
2016-01-10 15:08     ` Joe Perches
2016-01-10 15:08     ` Joe Perches
2016-01-10 11:57 ` [PATCH v2 3/3] checkpatch: add virt barriers Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57   ` Michael S. Tsirkin
2016-01-10 11:57 ` Michael S. Tsirkin
2016-01-10 11:57 ` Michael S. Tsirkin
2016-01-10 11:56 [PATCH v2 0/3] checkpatch: handling of memory barriers Michael S. Tsirkin
2016-01-10 11:56 Michael S. Tsirkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.