All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: Shayenne da Luz Moura <shayenneluzmoura@gmail.com>
Cc: 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: Fri, 26 Oct 2018 16:42:25 -0400	[thread overview]
Message-ID: <20181026204225.GH2015@sasha-vm> (raw)
In-Reply-To: <211701e4ae42acd95afb24713314bce5a4c58ecf.1540580493.git.shayenneluzmoura@gmail.com>

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.

--
Thanks,
Sasha


  reply	other threads:[~2018-10-26 20:42 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   ` Sasha Levin [this message]
2018-10-26 20:54     ` [Outreachy kernel] " Julia Lawall
2018-10-27 21:59       ` Joe Perches
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=20181026204225.GH2015@sasha-vm \
    --to=sashal@kernel.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.thayer@oracle.com \
    --cc=outreachy-kernel@googlegroups.com \
    --cc=shayenneluzmoura@gmail.com \
    /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.