[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090511123930.31159.58092.stgit@sofia.in.ibm.com>
Date: Mon, 11 May 2009 18:09:30 +0530
From: Gautham R Shenoy <ego@...ibm.com>
To: Ingo Molnar <mingo@...e.hu>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Paul E McKenney <paulmck@...ibm.com>,
Oleg Nesterov <oleg@...sign.ru>
Cc: linux-kernel@...r.kernel.org
Subject: [RFC/PATCH PATCH 1/6] lockdep: Remove redundant read checks.
1) In kernel/lockdep.c::validate_chain()
ret = check_deadlock(curr, hlock, lock, hlock->read);
ret = 2 only if hlock->read = 2.
Hence,
if (ret == 2)
hlock->read = 2;
is redundant, hence can be removed.
2) In kernel/lockdep.c::check_prevs_add(curr, next)
if (hlock->read != 2)
check_prev_add(curr, hlock, next, distance);
Thus, check_prev_add is called only when hlock->read != 2.
>>From the conclusions of 2),
kernel/lockdep.c::check_prev_add(curr, prev, next, distance) gets called
iff prev->read != 2.
Hence, in kernel/lockdep.c::check_prev_add(curr, prev, next, distance)
if (prev->read == 2)
return 1;
is redunant, hence can be removed.
Signed-off-by: Gautham R Shenoy <ego@...ibm.com>
---
kernel/lockdep.c | 9 +--------
1 files changed, 1 insertions(+), 8 deletions(-)
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index accb40c..8d3c2b5 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -1496,7 +1496,7 @@ check_prev_add(struct task_struct *curr, struct held_lock *prev,
* write-lock never takes any other locks, then the reads are
* equivalent to a NOP.
*/
- if (next->read == 2 || prev->read == 2)
+ if (next->read == 2)
return 1;
/*
* Is the <prev> -> <next> dependency already present?
@@ -1754,13 +1754,6 @@ static int validate_chain(struct task_struct *curr, struct lockdep_map *lock,
if (!ret)
return 0;
/*
- * Mark recursive read, as we jump over it when
- * building dependencies (just like we jump over
- * trylock entries):
- */
- if (ret == 2)
- hlock->read = 2;
- /*
* Add dependency only if this lock is not the head
* of the chain, and if it's not a secondary read-lock:
*/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists