Received: by 10.213.65.68 with SMTP id h4csp3392669imn; Tue, 3 Apr 2018 04:15:17 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+ltxQVcR66dz/72mG3P+lZ+WlH2Guc06Vl2puYqTJtj2XRXy8u70z0Uo275zfUM6ajEf6M X-Received: by 10.101.67.68 with SMTP id k4mr8626770pgq.197.1522754117012; Tue, 03 Apr 2018 04:15:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522754116; cv=none; d=google.com; s=arc-20160816; b=n/nah6O8R/5U1q3vMKrQaDisY4/PyFebm19GbU/vpXs1Bf7kOlUtpwVzQ7bNgd9Nul hHHulB8veSZW68uqKkzqES/humdapBfgLpU+DnzbUt6hiWtd7/pJe86nDQRYoUym5u5n ClDX7vljpgl8ff7wjVWhXpK4VvfCYImNkY4w47G9+u0Q6GUYVFMR/y2zDpnOOLs9oxa2 Yb0eQh294Avt1jyi30s265CTgDSm7cdFF/ZbXpxxP2qaJQuvAzjxBms5Xu1z468lvLGV vQSQWV0Z/IjWtAN3kMFebXHHqvRCBr0TaA7Ouj39pUEBBoph7XbtvXOuUw3N8J83eYIX La/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=j7m8AcL14EaZOIIutAE3Kmz3XrnicWyTwxeRXwk0GsI=; b=JIuhShLD+q/1jntcxS07vGmiF/k3+0jZBA7ncSKotTgVIQgcmb716DN7edAMsc04+Y vSMG1wBBSI3SPXCSAVr2T6iT8PzZP82NBkmSnyZG5VjMOMAjbpWNO2tmqmosEMGvt1I2 H4inTCnEIWNM9j/eWzfLsl0wUBZGmsScKeZnJTweYX1qjwp8p88eoCimaVkDhCGhzmNI O1LO1O+cecaGMl9YqWm0XFg/DOFvyDVaD3t2WaQTrEUz7V6LlcJHzyeGkj+IvU9F92jX sDoE4zi/EHR1g6WsRvuU+5gKykhqrKVdACCFFGFwHkvmbi9sXAlwkDWFq/2fsmiN9Dbc f27g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=tIpEXIaW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c3si1991648pfd.185.2018.04.03.04.15.03; Tue, 03 Apr 2018 04:15:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=tIpEXIaW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755455AbeDCLNd (ORCPT + 99 others); Tue, 3 Apr 2018 07:13:33 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:40340 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755121AbeDCLNb (ORCPT ); Tue, 3 Apr 2018 07:13:31 -0400 Received: by mail-qk0-f195.google.com with SMTP id o64so18088798qkl.7; Tue, 03 Apr 2018 04:13:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=j7m8AcL14EaZOIIutAE3Kmz3XrnicWyTwxeRXwk0GsI=; b=tIpEXIaWSSIbf15DX3QlE+wVOS02JdWGzWJZnIuB2vzDskbJIXnzqd0ljPkM+FLvU1 co7aMWyIONNDAhN2d78gNXO0cOpN9u1VQyVXettm/jp9Cvfoc3RnAdkpO6hRXQzyMMmu 7ONr50wsokQ3/umc13j4JoBJuM1nEgvd4T7T9A2m93CG13ED8lCp2gFyNJrdzJ4scJSB BIzqDtuaL2g3Gc0gEgqNFB6DCHSJG1nMkdO/frqMT3bNvT+NvPq4vKyO5Xzb2LKhPVxa o6YueCozA7lNw1laR/ROn/TRsR8KQpv5cUV9nsbO07xMougCHP6MUzgJKLw9yj8+d4FZ zaSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=j7m8AcL14EaZOIIutAE3Kmz3XrnicWyTwxeRXwk0GsI=; b=L1kbo9wq02I36WR617sIdr9qZFjoqiQDD8ph8RBOB5DPW7JwThzcKAg/0DObaqFAWf iy492pak2nDFnSI8CuU4mgapQptKqlbLXoYNJzj6THEMG9idOXhWkyNVZ+2VzKovZmju Sgqz48K5ej2ok4KZg/JknW2fhYfAIxub9i4QC/zb7U+ns2KWAAi22Z0XzFRZsl6SaXzR 6dGfre4LMHUT4c41P6CAatPfGYaotwBnqJZ1uEMZ6YiUoaAUULnHRN/Z68/Y5UnH0UHw V7eUjSCT9DgjC7UtO4G9JNjKpYLEmhYIqjOkcQQXn/W3qQkyat1dCUsZelfNuebtJYNH ua+A== X-Gm-Message-State: ALQs6tAhz/Qve/gmf7/5SMNEfmO+g/g/NgTMNjDHqdZNSP4kvf+M+iz8 Sd7pL2apjUmG7BtAYBpgN8ulsWBm0LLhQKSO5Jg= X-Received: by 10.55.234.6 with SMTP id t6mr18283194qkj.291.1522754010569; Tue, 03 Apr 2018 04:13:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.185.25 with HTTP; Tue, 3 Apr 2018 04:13:30 -0700 (PDT) In-Reply-To: <20180403104925.fuyajja6tyanlna4@lakrids.cambridge.arm.com> References: <1522425494-2916-1-git-send-email-okaya@codeaurora.org> <1522425494-2916-2-git-send-email-okaya@codeaurora.org> <20180403104925.fuyajja6tyanlna4@lakrids.cambridge.arm.com> From: Arnd Bergmann Date: Tue, 3 Apr 2018 13:13:30 +0200 X-Google-Sender-Auth: rh75qjH-56zMTIUrKrLrFsX8Y4g Message-ID: Subject: Re: [PATCH v2 2/2] io: prevent compiler reordering on the default readX() implementation To: Mark Rutland Cc: Sinan Kaya , Timur Tabi , sulrich@codeaurora.org, linux-arm-msm@vger.kernel.org, Linux ARM , linux-arch , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 3, 2018 at 12:49 PM, Mark Rutland wrote: > Hi, > > On Fri, Mar 30, 2018 at 11:58:13AM -0400, Sinan Kaya wrote: >> The default implementation of mapping readX() to __raw_readX() is wrong. >> readX() has stronger ordering semantics. Compiler is allowed to reorder >> __raw_readX(). > > Could you please specify what the compiler is potentially reordering > __raw_readX() against, and why this would be wrong? > > e.g. do we care about prior normal memory accesses, subsequent normal > memory accesses, and/or other IO accesses? > > I assume that the asm-generic __raw_{read,write}X() implementations are > all ordered w.r.t. each other (at least for a specific device). I think that is correct: the compiler won't reorder those because of the 'volatile' pointer dereference, but it can reorder access to a normal pointer against a __raw_readl()/__raw_writel(), which breaks the scenario of using writel to trigger a DMA, or using a readl to see if a DMA has completed. The question is whether we should use a stronger barrier such as rmb() amd wmb() here rather than a simple compiler barrier. I would assume that on complex architectures with write buffers and out-of-order prefetching, those are required, while on architectures without those features, the barriers are cheap. Arnd