From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754069AbcJDS2F (ORCPT ); Tue, 4 Oct 2016 14:28:05 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:52655 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754022AbcJDS2D (ORCPT ); Tue, 4 Oct 2016 14:28:03 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Tue, 04 Oct 2016 14:28:00 -0400 From: bdegraaf@codeaurora.org To: Mark Rutland Cc: Peter Zijlstra , Ingo Molnar , Catalin Marinas , Will Deacon , Timur Tabi , Nathan Lynch , linux-kernel@vger.kernel.org, Christopher Covington , linux-arm-kernel@lists.infradead.org Subject: Re: [RFC] arm64: Enforce observed order for spinlock and data In-Reply-To: <884bd5d3a9a1bcf2a276130ffc17412a@codeaurora.org> References: <1475257257-23072-1-git-send-email-bdegraaf@codeaurora.org> <20160930193231.GA2521@remoulade> <66a031ac2405e352ab0d5f19d7ddb8e9@codeaurora.org> <20161001181101.GA17554@remoulade> <20161004101208.GA18083@leverpostej> <884bd5d3a9a1bcf2a276130ffc17412a@codeaurora.org> Message-ID: <612c8b809a6530698f7af27af8ca2bf5@codeaurora.org> User-Agent: Roundcube Webmail/1.2.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016-10-04 13:53, bdegraaf@codeaurora.org wrote: > On 2016-10-04 06:12, Mark Rutland wrote: >> On Mon, Oct 03, 2016 at 03:20:57PM -0400, bdegraaf@codeaurora.org >> wrote: >>> On 2016-10-01 14:11, Mark Rutland wrote: >>> >Hi Brent, >>> > >>> >Evidently my questions weren't sufficiently clear; even with your >>> >answers it's not clear to me what precise issue you're attempting to >>> >solve. I've tried to be more specific this time. >>> > >>> >At a high-level, can you clarify whether you're attempting to solve is: >>> > >>> >(a) a functional correctness issue (e.g. data corruption) >>> >(b) a performance issue >>> > >>> >And whether this was seen in practice, or found through code >>> >inspection? >> >>> Thinking about this, as the reader/writer code has no known "abuse" >>> case, I'll remove it from the patchset, then provide a v2 patchset >>> with a detailed explanation for the lockref problem using the commits >>> you provided as an example, as well as performance consideration. >> >> If there's a functional problem, let's consider that in isolation >> first. >> Once we understand that, then we can consider doing what is optimal. >> >> As should be obvious from the above, I'm confused because this patch >> conflates functional details with performance optimisations which (to >> me) sound architecturally dubious. >> >> I completely agree with Peter that if the problem lies with lockref, >> it >> should be solved in the lockref code. >> >> Thanks, >> Mark. > > After looking at this, the problem is not with the lockref code per se: > it is > a problem with arch_spin_value_unlocked(). In the out-of-order case, > arch_spin_value_unlocked() can return TRUE for a spinlock that is in > fact > locked but the lock is not observable yet via an ordinary load. Other > than > ensuring order on the locking side (as the prior patch did), there is a > way > to make arch_spin_value_unlock's TRUE return value deterministic, but > it > requires that it does a write-back to the lock to ensure we didn't > observe > the unlocked value while another agent was in process of writing back a > locked value. > > Brent Scratch that--things get complicated as the lock itself gets "cloned," which could happen during the out-of-order window. I'll post back later after I've analyzed it fully.