Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752174Ab0KWVCe (ORCPT ); Tue, 23 Nov 2010 16:02:34 -0500 Received: from 206.83.70.70.ptr.us.xo.net ([206.83.70.70]:47763 "EHLO USMAMAIL.TILERA.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750917Ab0KWVCd (ORCPT ); Tue, 23 Nov 2010 16:02:33 -0500 Message-ID: <4CEC2BE7.4060205@tilera.com> Date: Tue, 23 Nov 2010 16:02:31 -0500 From: Chris Metcalf User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 MIME-Version: 1.0 To: Cypher Wu CC: , =?ISO-8859-1?Q?Am=E9rico_Wang?= , Eric Dumazet , netdev Subject: Re: [PATCH] arch/tile: fix rwlock so would-be write lockers don't block new readers References: <1289489007.17691.1310.camel@edumazet-laptop> <4CDF1945.8090101@tilera.com> <201011151425.oAFEPU3W005682@farm-0010.internal.tilera.com> <4CEA71AD.5010606@tilera.com> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1235 Lines: 26 On 11/22/2010 8:36 PM, Cypher Wu wrote: > Say, if core A try to write_lock() rwlock and current_ticket_ is 0 and > it write next_ticket_ to 1, when it processing the lock, core B try to > write_lock() again and write next_ticket_ to 2, then when A > write_unlock() it seen that (current_ticket_+1) is not equal to > next_ticket_, so it increment current_ticket_, and core B get the > lock. If core A try write_lock again before core B write_unlock, it > will increment next_ticket_ to 3. And so on. > This may rarely happened, I've tested it yesterday for several hours > it goes very well under pressure. This should be OK when it happens (other than starving out the readers, but that was the decision made by doing a ticket lock in the first place). Even if we wrap around 255 back to zero on the tickets, the ticket queue will work correctly. The key is not to need more than 256 concurrent write lock waiters, which we don't. -- Chris Metcalf, Tilera Corp. http://www.tilera.com -- 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/