linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: James.Bottomley@HansenPartnership.com (James Bottomley)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V4 1/2] ACPI / EC: Fix broken 64bit big-endian users of 'global_lock'
Date: Sat, 26 Sep 2015 12:52:08 -0700	[thread overview]
Message-ID: <1443297128.2181.11.camel@HansenPartnership.com> (raw)
In-Reply-To: <2524822.pQu4UKMrlb@vostro.rjw.lan>

On Fri, 2015-09-25 at 22:58 +0200, Rafael J. Wysocki wrote:
> On Friday, September 25, 2015 01:25:49 PM Viresh Kumar wrote:
> > On 25 September 2015 at 13:33, Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> > > You're going to change that into bool in the next patch, right?
> > 
> > Yeah.
> > 
> > > So what if bool is a byte and the field is not word-aligned
> > 
> > Its between two 'unsigned long' variables today, and the struct isn't packed.
> > So, it will be aligned, isn't it?
> > 
> > > and changing
> > > that byte requires a read-modify-write.  How do we ensure that things remain
> > > consistent in that case?
> > 
> > I didn't understood why a read-modify-write is special here? That's
> > what will happen
> > to most of the non-word-sized fields anyway?
> > 
> > Probably I didn't understood what you meant..
> 
> Say you have three adjacent fields in a structure, x, y, z, each one byte long.
> Initially, all of them are equal to 0.
> 
> CPU A writes 1 to x and CPU B writes 2 to y at the same time.
> 
> What's the result?

I think every CPU's  cache architecure guarantees adjacent store
integrity, even in the face of SMP, so it's x==1 and y==2.  If you're
thinking of old alpha SMP system where the lowest store width is 32 bits
and thus you have to do RMW to update a byte, this was usually fixed by
padding (assuming the structure is not packed).  However, it was such a
problem that even the later alpha chips had byte extensions.

James

  parent reply	other threads:[~2015-09-26 19:52 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-25 16:41 [PATCH V4 1/2] ACPI / EC: Fix broken 64bit big-endian users of 'global_lock' Viresh Kumar
2015-09-25 16:41 ` [PATCH V4 2/2] debugfs: Pass bool pointer to debugfs_create_bool() Viresh Kumar
2015-09-25 17:42 ` [PATCH V4 1/2] ACPI / EC: Fix broken 64bit big-endian users of 'global_lock' Johannes Berg
2015-09-25 18:47   ` Viresh Kumar
2015-09-25 18:49     ` Johannes Berg
2015-09-25 18:52       ` Viresh Kumar
2015-09-25 20:26         ` Rafael J. Wysocki
2015-09-25 20:33           ` Rafael J. Wysocki
2015-09-25 20:25             ` Viresh Kumar
2015-09-25 20:58               ` Rafael J. Wysocki
2015-09-25 21:44                 ` Viresh Kumar
2015-09-25 22:19                   ` Rafael J. Wysocki
2015-09-26 18:40                     ` Viresh Kumar
2015-09-26 19:33                       ` Arnd Bergmann
2015-09-27 14:10                         ` Rafael J. Wysocki
2015-09-28  8:24                           ` Arnd Bergmann
2015-09-28 13:07                             ` Rafael J. Wysocki
2015-09-26 19:52                 ` James Bottomley [this message]
2015-09-27 14:09                   ` Rafael J. Wysocki
2015-09-28  8:58                     ` David Laight
2015-09-28 14:26                       ` James Bottomley
2015-09-28 14:50                         ` David Laight
2015-09-28 15:11                           ` James Bottomley
2015-09-28 15:31                             ` David Laight
2015-09-25 20:18 ` Rafael J. Wysocki
2015-09-25 20:22   ` Rafael J. Wysocki
     [not found] ` <CAJPN1uvPyZ+hZ64_0ZXU9wPLuAR-qm06GrRmHTjc9+rgiChYDQ@mail.gmail.com>
2015-09-27 14:35   ` Viresh Kumar

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=1443297128.2181.11.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 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).