All of lore.kernel.org
 help / color / mirror / Atom feed
From: yuankuiz@codeaurora.org
To: Julia Lawall <julia.lawall@lip6.fr>
Cc: Joe Perches <joe@perches.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Andy Whitcroft <apw@canonical.com>,
	Linux PM <linux-pm@vger.kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	paulmck@linux.vnet.ibm.com, Ingo Molnar <mingo@kernel.org>,
	Len Brown <len.brown@intel.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-pm-owner@vger.kernel.org
Subject: Re: [PATCH] checkpatch: Add a --strict test for structs with bool member definitions
Date: Tue, 17 Apr 2018 17:07:28 +0800	[thread overview]
Message-ID: <e7cbe275136b86083ff70d9af26f41bf@codeaurora.org> (raw)
In-Reply-To: <alpine.DEB.2.20.1804142315300.2750@hadrien>

Hi julia,

On 2018-04-15 05:19 AM, Julia Lawall wrote:
> On Wed, 11 Apr 2018, Joe Perches wrote:
> 
>> On Thu, 2018-04-12 at 08:22 +0200, Julia Lawall wrote:
>> > On Wed, 11 Apr 2018, Joe Perches wrote:
>> > > On Wed, 2018-04-11 at 09:29 -0700, Andrew Morton wrote:
>> > > > We already have some 500 bools-in-structs
>> > >
>> > > I got at least triple that only in include/
>> > > so I expect there are at probably an order
>> > > of magnitude more than 500 in the kernel.
>> > >
>> > > I suppose some cocci script could count the
>> > > actual number of instances.  A regex can not.
>> >
>> > I got 12667.
>> 
>> Could you please post the cocci script?
>> 
>> > I'm not sure to understand the issue.  Will using a bitfield help if there
>> > are no other bitfields in the structure?
>> 
>> IMO, not really.
>> 
>> The primary issue is described by Linus here:
>> https://lkml.org/lkml/2017/11/21/384
>> 
>> I personally do not find a significant issue with
>> uncontrolled sizes of bool in kernel structs as
>> all of the kernel structs are transitory and not
>> written out to storage.
>> 
>> I suppose bool bitfields are also OK, but for the
>> RMW required.
>> 
>> Using unsigned int :1 bitfield instead of bool :1
>> has the negative of truncation so that the uint
>> has to be set with !! instead of a simple assign.
> 
> At least with gcc 5.4.0, a number of structures become larger with
> unsigned int :1. bool:1 seems to mostly solve this problem.  The 
> structure
> ichx_desc, defined in drivers/gpio/gpio-ich.c seems to become larger 
> with
> both approaches.
[ZJ] Hopefully, this could make it better in your environment.
      IMHO, this is just for double check.

diff --git a/drivers/gpio/gpio-ich.c b/drivers/gpio/gpio-ich.c
index 4f6d643..b46e170 100644
--- a/drivers/gpio/gpio-ich.c
+++ b/drivers/gpio/gpio-ich.c
@@ -70,6 +70,18 @@ static const u8 avoton_reglen[3] = {
  #define ICHX_READ(reg, base_res)       inl((reg) + (base_res)->start)

  struct ichx_desc {
+       /* GPO_BLINK is available on this chipset */
+       bool uses_gpe0:1;
+
+       /* Whether the chipset has GPIO in GPE0_STS in the PM IO region 
*/
+        bool uses_gpe0:1;
+
+        /*
+         * Some chipsets don't let reading output values on GPIO_LVL 
register
+         * this option allows driver caching written output values
+         */
+        bool use_outlvl_cache:1;
+
         /* Max GPIO pins the chipset can have */
         uint ngpio;

@@ -77,24 +89,12 @@ struct ichx_desc {
         const u8 (*regs)[3];
         const u8 *reglen;

-       /* GPO_BLINK is available on this chipset */
-       bool have_blink;
-
-       /* Whether the chipset has GPIO in GPE0_STS in the PM IO region 
*/
-       bool uses_gpe0;
-
         /* USE_SEL is bogus on some chipsets, eg 3100 */
         u32 use_sel_ignore[3];

         /* Some chipsets have quirks, let these use their own 
request/get */
         int (*request)(struct gpio_chip *chip, unsigned offset);
         int (*get)(struct gpio_chip *chip, unsigned offset);
-
-       /*
-        * Some chipsets don't let reading output values on GPIO_LVL 
register
-        * this option allows driver caching written output values
-        */
-       bool use_outlvl_cache;
  };


ZJ

  reply	other threads:[~2018-04-17  9:07 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-10  7:33 Subject: [PATCH] [PATCH] time: tick-sched: use bool for tick_stopped yuankuiz
2018-04-10  7:45 ` yuankuiz
2018-04-10  8:51   ` yuankuiz
2018-04-10  8:54     ` yuankuiz
2018-04-10  7:55 ` Subject: [PATCH] " Thomas Gleixner
2018-04-10  8:12   ` yuankuiz
2018-04-10  8:00 ` Rafael J. Wysocki
2018-04-10  8:15   ` yuankuiz
2018-04-10  9:10     ` Thomas Gleixner
2018-04-10 10:07       ` yuankuiz
2018-04-10 11:06         ` Thomas Gleixner
2018-04-10 14:08           ` yuankuiz
2018-04-10 14:49             ` yuankuiz
2018-04-10 23:09               ` yuankuiz
2018-04-10 23:20                 ` yuankuiz
2018-04-20  1:47                   ` yuankuiz
2018-04-20  6:44                     ` yuankuiz
2018-04-20 19:24                       ` Joe Perches
2018-04-25  7:01                         ` yuankuiz
2018-04-10 11:26         ` Peter Zijlstra
2018-04-10 12:07           ` Thomas Gleixner
2018-04-10 12:26             ` Peter Zijlstra
2018-04-10 12:33   ` Subject: [PATCH] " Peter Zijlstra
2018-04-10 15:14     ` Joe Perches
2018-04-10 16:30       ` Peter Zijlstra
2018-04-10 15:41     ` [PATCH] checkpatch: whinge about bool bitfields Joe Perches
2018-04-10 18:19       ` [PATCH] checkpatch: Add a --strict test for structs with bool member definitions Joe Perches
2018-04-10 21:39         ` Andrew Morton
2018-04-10 21:53           ` Joe Perches
2018-04-10 22:00             ` Andrew Morton
2018-04-11  8:15               ` Peter Zijlstra
2018-04-11 16:29                 ` Andrew Morton
2018-04-11 16:51                   ` Joe Perches
2018-04-12  6:22                     ` Julia Lawall
2018-04-12  6:42                       ` Joe Perches
2018-04-12  7:03                         ` Julia Lawall
2018-04-12  8:13                         ` Peter Zijlstra
2018-04-14 21:19                         ` Julia Lawall
2018-04-17  9:07                           ` yuankuiz [this message]
2018-04-18 18:38                             ` Joe Perches
2018-04-19  4:40                               ` Julia Lawall
2018-04-19  4:51                                 ` Joe Perches
2018-04-19  5:16                                   ` Julia Lawall
2018-04-19  6:48                                     ` yuankuiz
2018-04-19 10:42                                       ` yuankuiz
2018-04-20  1:31                                         ` yuankuiz
2018-04-11 17:00                   ` Peter Zijlstra
2018-04-12  7:47                     ` Ingo Molnar
2018-04-12  8:11                       ` Peter Zijlstra
2018-04-12  9:35                       ` Andrea Parri
2018-04-12 11:50                         ` Peter Zijlstra
2018-04-12 12:01                           ` Joe Perches
2018-04-12 12:08                             ` Peter Zijlstra
2018-04-12 12:38                               ` Joe Perches
2018-04-12 16:47                               ` Andrew Morton
2018-04-12 11:52                         ` Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e7cbe275136b86083ff70d9af26f41bf@codeaurora.org \
    --to=yuankuiz@codeaurora.org \
    --cc=akpm@linux-foundation.org \
    --cc=apw@canonical.com \
    --cc=fweisbec@gmail.com \
    --cc=joe@perches.com \
    --cc=julia.lawall@lip6.fr \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm-owner@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.