Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2332236imm; Sun, 9 Sep 2018 22:23:29 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYGG9LyeLaWx6iC28pNrES1OCcwjxuAhX0VGxCfeKAjLxBQKoQM+AtbXs2exVS82lNUACEi X-Received: by 2002:a17:902:8e81:: with SMTP id bg1-v6mr20189258plb.129.1536557009262; Sun, 09 Sep 2018 22:23:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536557009; cv=none; d=google.com; s=arc-20160816; b=QUvXHdCmZJhIfge7vJhEYKJ/lS0QFViPXmKKUhbbj0bJL9zsJUkCvBRvj4xZRHX8hg GNcyqBJ1ThTpJacgAIG7xSS0oKZk+LuJUvgZkfbiIJeda0Q2edUZ4+Qrayrt8DbEKDGo HhxG5YGOb8HtUx8MVsYg7P7zyRhSQgpfKUYuzJ80IBQa3nm9ZIfFThlo0xtORzYLeYEK atfNRqJCYvuEoKvyP+DfivBDoKRvS47CAASchQZcntUZQjSI+2EeSueecSciel6P6d+m LWjS9HkBSGdLcrze6QGdBpUv84a3PIkEsZw1Im5GgfwvkRs7kc/HYCdv18H7NxFOxuP5 jkZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=5E62o+C75IdUjnUo4/3k6mo5B3z26u2lvuT4DUz+/iU=; b=BIo7Ypf3Pn6Nkg9EyxFSu5OVcezkcJ7WBho6gG4F9mTOLETIa5hFZfW4amIqGuxGfQ CbTXEzw02uBLdxIJl7CiS5/PuBairCxYJL5/o11bRgUbZ63OX588/R8Uw9eZ5P418m1A glzicE7lmd6ogKthL79GWc4DbuVm0FpQChUFej5gMeU0XCQiN1o9M9/hC0SmGVVBOYuJ lLpF9ILSv/EBOeFnGz6sPli28ftE10BALRFjt4u0EP/S8HNYDt+ntbBBgYxuJgFK+EVk eA4qFjVEjn1NFdQc0VCnKEOkSCO3ywiUbtL0MxQxY+ZJfzEnNVOteKrHEz6ZsEDGTUQQ 3DCQ== ARC-Authentication-Results: i=1; mx.google.com; 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 w9-v6si16128561pfg.234.2018.09.09.22.23.13; Sun, 09 Sep 2018 22:23:29 -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; 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 S1726862AbeIJKOV (ORCPT + 99 others); Mon, 10 Sep 2018 06:14:21 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:54078 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726106AbeIJKOV (ORCPT ); Mon, 10 Sep 2018 06:14:21 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 427xHV15Cnz9ttC8; Mon, 10 Sep 2018 07:21:58 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id tHeKu58JHAoB; Mon, 10 Sep 2018 07:21:58 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 427xHV0HJfz9ttC1; Mon, 10 Sep 2018 07:21:58 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 696FE8B786; Mon, 10 Sep 2018 07:22:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id dJGmic2xThDn; Mon, 10 Sep 2018 07:22:06 +0200 (CEST) Received: from PO15451 (po15451.idsi0.si.c-s.fr [172.25.231.3]) by messagerie.si.c-s.fr (Postfix) with ESMTP id C23448B74B; Mon, 10 Sep 2018 07:22:04 +0200 (CEST) Subject: Re: [PATCH 2/5] include: add setbits32/clrbits32/clrsetbits32/setbits64/clrbits64/clrsetbits64 in linux/setbits.h To: Corentin Labbe , Gilles.Muller@lip6.fr, Julia.Lawall@lip6.fr, agust@denx.de, alexandre.torgue@st.com, alistair@popple.id.au, benh@kernel.crashing.org, carlo@caione.org, davem@davemloft.net, galak@kernel.crashing.org, joabreu@synopsys.com, khilman@baylibre.com, maxime.ripard@bootlin.com, michal.lkml@markovi.net, mpe@ellerman.id.au, mporter@kernel.crashing.org, nicolas.palix@imag.fr, oss@buserror.net, paulus@samba.org, peppe.cavallaro@st.com, tj@kernel.org, vitb@kernel.crashing.org, wens@csie.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-sunxi@googlegroups.com, linux-amlogic@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, cocci@systeme.lip6.fr, linux-arm-kernel@lists.infradead.org References: <1536349307-20714-1-git-send-email-clabbe@baylibre.com> <1536349307-20714-3-git-send-email-clabbe@baylibre.com> From: Christophe LEROY Message-ID: Date: Mon, 10 Sep 2018 07:22:04 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <1536349307-20714-3-git-send-email-clabbe@baylibre.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 07/09/2018 à 21:41, Corentin Labbe a écrit : > This patch adds setbits32/clrbits32/clrsetbits32 and > setbits64/clrbits64/clrsetbits64 in linux/setbits.h header. So you changed the name of setbits32() ... to setbits32_be() and now you are adding new functions called setbits32() ... which do something different ? What will happen if any file has been forgotten during the conversion, or if anybody has outoftree drivers and missed this change ? They will silently successfully compile without any error or warning, and the result will be crap buggy. And why would it be more legitim to have setbits32() be implicitely LE instead of implicitely BE ? I really think those new functions should be called something like setbits_le32() ... Christophe > > Signed-off-by: Corentin Labbe > --- > include/linux/setbits.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 55 insertions(+) > create mode 100644 include/linux/setbits.h > > diff --git a/include/linux/setbits.h b/include/linux/setbits.h > new file mode 100644 > index 000000000000..3e1e273551bb > --- /dev/null > +++ b/include/linux/setbits.h > @@ -0,0 +1,55 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __LINUX_SETBITS_H > +#define __LINUX_SETBITS_H > + > +#include > + > +#define __setbits(readfunction, writefunction, addr, set) \ > + writefunction((readfunction(addr) | (set)), addr) > +#define __clrbits(readfunction, writefunction, addr, mask) \ > + writefunction((readfunction(addr) & ~(mask)), addr) > +#define __clrsetbits(readfunction, writefunction, addr, mask, set) \ > + writefunction(((readfunction(addr) & ~(mask)) | (set)), addr) > +#define __setclrbits(readfunction, writefunction, addr, mask, set) \ > + writefunction(((readfunction(addr) | (seti)) & ~(mask)), addr) > + > +#define setbits32(addr, set) __setbits(readl, writel, addr, set) > +#define setbits32_relaxed(addr, set) __setbits(readl_relaxed, writel_relaxed, \ > + addr, set) > + > +#define clrbits32(addr, mask) __clrbits(readl, writel, addr, mask) > +#define clrbits32_relaxed(addr, mask) __clrbits(readl_relaxed, writel_relaxed, \ > + addr, mask) > + > +#define clrsetbits32(addr, mask, set) __clrsetbits(readl, writel, addr, mask, set) > +#define clrsetbits32_relaxed(addr, mask, set) __clrsetbits(readl_relaxed, \ > + writel_relaxed, \ > + addr, mask, set) > + > +#define setclrbits32(addr, mask, set) __setclrbits(readl, writel, addr, mask, set) > +#define setclrbits32_relaxed(addr, mask, set) __setclrbits(readl_relaxed, \ > + writel_relaxed, \ > + addr, mask, set) > + > +/* We cannot use CONFIG_64BIT as some x86 drivers use writeq */ > +#if defined(writeq) && defined(readq) > +#define setbits64(addr, set) __setbits(readq, writeq, addr, set) > +#define setbits64_relaxed(addr, set) __setbits(readq_relaxed, writeq_relaxed, \ > + addr, set) > + > +#define clrbits64(addr, mask) __clrbits(readq, writeq, addr, mask) > +#define clrbits64_relaxed(addr, mask) __clrbits(readq_relaxed, writeq_relaxed, \ > + addr, mask) > + > +#define clrsetbits64(addr, mask, set) __clrsetbits(readq, writeq, addr, mask, set) > +#define clrsetbits64_relaxed(addr, mask, set) __clrsetbits(readq_relaxed, \ > + writeq_relaxed, \ > + addr, mask, set) > + > +#define setclrbits64(addr, mask, set) __setclrbits(readq, writeq, addr, mask, set) > +#define setclrbits64_relaxed(addr, mask, set) __setclrbits(readq_relaxed, \ > + writeq_relaxed, \ > + addr, mask, set) > +#endif /* writeq/readq */ > + > +#endif /* __LINUX_SETBITS_H */ >