LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Joe Perches <joe@perches.com>
To: Julia Lawall <julia.lawall@lip6.fr>, Sasha Levin <sashal@kernel.org>
Cc: Shayenne da Luz Moura <shayenneluzmoura@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Hans de Goede <hdegoede@redhat.com>,
Michael Thayer <michael.thayer@oracle.com>,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org,
outreachy-kernel@googlegroups.com
Subject: Re: [Outreachy kernel] [RESEND PATCH 2/2] staging: vboxvideo: Use unsigned int instead bool
Date: Sat, 27 Oct 2018 14:59:32 -0700 [thread overview]
Message-ID: <5ac9cc7060a4a942a7c362cfe35515bd3c7820fb.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.21.1810262252550.2791@hadrien>
On Fri, 2018-10-26 at 22:54 +0200, Julia Lawall wrote:
> [Adding Joe Perches]
>
> On Fri, 26 Oct 2018, Sasha Levin wrote:
>
> > On Fri, Oct 26, 2018 at 04:04:45PM -0300, Shayenne da Luz Moura wrote:
> > > This change was suggested by checkpath.pl. Use unsigned int with bitfield
> > > allocate only one bit to the boolean variable.
> > >
> > > CHECK: Avoid using bool structure members because of possible alignment
> > > issues
> > >
> > > Signed-off-by: Shayenne da Luz Moura <shayenneluzmoura@gmail.com>
> > > ---
> > > drivers/staging/vboxvideo/vbox_drv.h | 14 +++++++-------
> > > drivers/staging/vboxvideo/vboxvideo_guest.h | 2 +-
> > > 2 files changed, 8 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/drivers/staging/vboxvideo/vbox_drv.h
> > > b/drivers/staging/vboxvideo/vbox_drv.h
> > > index 594f84272957..7d3e329a6b1c 100644
> > > --- a/drivers/staging/vboxvideo/vbox_drv.h
> > > +++ b/drivers/staging/vboxvideo/vbox_drv.h
> > > @@ -81,7 +81,7 @@ struct vbox_private {
> > > u8 __iomem *vbva_buffers;
> > > struct gen_pool *guest_pool;
> > > struct vbva_buf_ctx *vbva_info;
> > > - bool any_pitch;
> > > + unsigned int any_pitch:1;
> > > u32 num_crtcs;
> > > /** Amount of available VRAM, including space used for buffers. */
> > > u32 full_vram_size;
> >
> > Using bitfields for booleans in these cases is less efficient than just
> > using "regular" booleans for two reasons:
> >
> > 1. It will use the same amount of space. Due to alignment requirements,
> > the compiler can't squeeze in anything into the 7 bits that are now
> > "free". Each member, unless it's another bitfield, must start at a whole
> > byte.
> >
> > 2. This is actually less efficient (slower) for the compiler to work
> > with. The smallest granularity we have to access memory is 1 byte; we
> > can't set individual bits directly in memory. For the original code, the
> > assembly for 'vbox_private.any_pitch = true' would look something like
> > this:
> >
> > movl $0x1,-0x10(%rsp)
> >
> > As you can see, the compiler can directly write into the variable.
> > However, when we switch to using bitfields, the compiler must preserve
> > the original value of the other 7 bits, so it must first read them from
> > memory, manipulate the value and write it back. The assembly would
> > look something like this:
> >
> > movzbl -0x10(%rsp),%eax
> > or $0x1,%eax
> > mov %al,-0x10(%rsp)
> >
> > Which is less efficient than what was previously happening.
>
> Maybe checkpatch could be more precise about what kind of bools should be
> changed?
Probably so, what verbiage would you suggest?
Also, any conversion from bool to int would
have to take care than any assigment uses !!
where appropriate.
next prev parent reply other threads:[~2018-10-27 22:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-26 19:03 [RESEND PATCH 0/2] staging: vboxvideo: Remove chekpatch issues Shayenne da Luz Moura
2018-10-26 19:04 ` [RESEND PATCH 1/2] staging: vboxvideo: Change uint32_t to u32 Shayenne da Luz Moura
2018-10-28 11:02 ` Hans de Goede
2018-10-26 19:04 ` [RESEND PATCH 2/2] staging: vboxvideo: Use unsigned int instead bool Shayenne da Luz Moura
2018-10-26 20:42 ` [Outreachy kernel] " Sasha Levin
2018-10-26 20:54 ` Julia Lawall
2018-10-27 21:59 ` Joe Perches [this message]
2018-10-28 5:41 ` Julia Lawall
2018-10-28 7:52 ` Himanshu Jha
2018-10-28 8:47 ` Julia Lawall
2018-10-28 11:20 ` Himanshu Jha
2018-10-28 11:46 ` Julia Lawall
2018-10-30 20:18 ` Shayenne Moura
2018-10-30 20:25 ` Julia Lawall
2018-10-30 20:33 ` Shayenne Moura
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=5ac9cc7060a4a942a7c362cfe35515bd3c7820fb.camel@perches.com \
--to=joe@perches.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=julia.lawall@lip6.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.thayer@oracle.com \
--cc=outreachy-kernel@googlegroups.com \
--cc=sashal@kernel.org \
--cc=shayenneluzmoura@gmail.com \
--subject='Re: [Outreachy kernel] [RESEND PATCH 2/2] staging: vboxvideo: Use unsigned int instead bool' \
/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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).