Messages in this thread | | | Date | Thu, 10 Mar 2005 10:25:42 +1100 | From | Nick Piggin <> | Subject | Re: [PATCH 11/15] ptwalk: copy_pte_range hang |
| |
Hugh Dickins wrote: > This patch is the odd-one-out of the sequence. The one before adjusted > copy_pte_range from a for loop to a do while loop, and it was therefore > simplest to check for lockbreak before copying pte: possibility that it > might keep getting preempted without making progress under some loads. > > Some loads such as startup: 2*HT*P4 with preemption cannot even reach > multiuser login. Suspect needs_lockbreak is broken, can get in a state > when it remains forever true. Investigate that later: for now, and for > all time, it makes sense to aim for a little progress before breaking > out; and we can manage more pte_nones than copies. >
(Just to reiterate a private mail sent to Hugh earlier)
Yeah I think lockbreak is broken. Because the inner spinlock never has a cond_resched_lock performed on it, so its break_lock is never set to 0, but need_lockbreak still always returns 1 for it.
IMO, spin_lock should set break_lock to 0, then cond_resched_lock need not bother with it.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |