On 2012-12-07 15:42, Tomi Valkeinen wrote:
On 2012-12-07 14:53, Ville Syrjälä wrote:
quoted
On Fri, Dec 07, 2012 at 01:55:06PM +0200, Tomi Valkeinen wrote:
quoted
Kernel lock verification code has lately detected possible circular
locking in omapfb. The exact problem is unclear, but omapfb's current
locking seems to be overly complex.
This patch simplifies the locking in the following ways:
- Remove explicit omapfb mem region locking. I couldn't figure out the
need for this, as long as we take care to take omapfb lock.
I suppose the idea with that was that you wouldn't need the global
omapfb lock, and also it was an rwsem so it allowed parallel access to
the mem regions, unless the region size was being changed, in which
case it took the write lock. I can't really remember what the reason
for using an rwsem was, but I suppose there was one at the time.
Right. Yes, I have no recollection either of the possible reason for it
=). Did we have multiple concurrerent users for the fbs? It still sounds
like a useless optimization, as all the region locks were only held for
a short time, as far as I saw.
It could also be that we're missing something from the mainline kernel,
which we had in the Nokia kernel, and which would explain the need for
region locks.
quoted
I think the only correctness issue with your patch is that you're
opening up a race between omapfb_mmap and
omapfb_setup_mem/store_size.
Good point. I think this can be fixed by taking fb_info->mm_lock in
omapfb_setup_mem & co.
Well... Adding using of fb_info->mm_lock to omapfb_setup_mem again
causes possible circular locking warnings. And I still can't figure out
the exact reason. Perhaps the region locking was not involved in this
warning at all, but the problem is elsewhere.
(I hope the circular locking detection is correct =).
Tomi