Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08d3bb46 authored by Gregory Bean's avatar Gregory Bean Committed by Bryan Huntsman
Browse files

checkpatch: forbid implied-barrier I/O functions.



Forbid read[bwl], write[bwl], in[bwl], and out[bwl], as they
contain a 'stealth barrier' which can harm performance.
Developers are expected to call appropriate __raw_* or *_relaxed
APIs and manage barriers explicitly.

Change-Id: Ie4da221c91a0505917199db9e2fdb704c3e47d44
Signed-off-by: default avatarGregory Bean <gbean@codeaurora.org>
(cherry picked from commit 032fd4ba09e195d9913c08f460130da9905936ef)
Signed-off-by: default avatarStepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: default avatarRishabh Bhatnagar <rishabhb@codeaurora.org>
parent 6b7fd1b6
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -5386,6 +5386,26 @@ sub process {
			      $herecurr);
		}

# read[bwl] & write[bwl] use too many barriers, use the _relaxed variants
		if ($line =~ /\b((?:read|write)[bwl])\b/) {
			ERROR("NON_RELAXED_IO",
			      "Use of $1 is deprecated: use $1_relaxed\n\t" .
			      "with appropriate memory barriers instead.\n" .
			      $herecurr);
		}

# likewise, in/out[bwl] should be __raw_read/write[bwl]...
		if ($line =~ /\b((in|out)([bwl]))\b/) {
			my ($all, $pref, $suf) = ($1, $2, $3);
			$pref =~ s/in/read/;
			$pref =~ s/out/write/;
			ERROR("NON_RELAXED_IO",
			      "Use of $all is deprecated: use " .
			      "__raw_$pref$suf\n\t" .
			      "with appropriate memory barriers instead.\n" .
			      $herecurr);
		}

# warn about #if 0
		if ($line =~ /^.\s*\#\s*if\s+0\b/) {
			WARN("IF_0",