All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Arnd Bergmann" <arnd@arndb.de>
To: "Julien Grall" <julien@xen.org>, "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Wei Liu" <wl@xen.org>, "Juergen Gross" <jgross@suse.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/2] xen: make include/xen/unaligned.h usable on all architectures
Date: Tue, 05 Dec 2023 15:37:53 +0100	[thread overview]
Message-ID: <ab8c9daa-9543-4aed-85f7-69febd85aeb9@app.fastmail.com> (raw)
In-Reply-To: <fcdab8c1-b0ea-4d7a-943e-2180b13234fd@xen.org>

On Tue, Dec 5, 2023, at 15:19, Julien Grall wrote:
> On 05/12/2023 14:10, Arnd Bergmann wrote:
>> On Tue, Dec 5, 2023, at 15:01, Julien Grall wrote:
>>> On 05/12/2023 13:59, Jan Beulich wrote:
>>>> On 05.12.2023 14:46, Julien Grall wrote:
>> This would repeat the mistake that we had in Linux in the
>> past (and still do in some drivers): Simply dereferencing
>> a misaligned pointer is always a bug, even on architectures
>> that have efficient unaligned load/store instructions,
>> because C makes this undefined behavior and gcc has
>> optimizations that assume e.g. 'int *' to never have
>> the lower two bits set [1].
>
> Just to clarify, I haven't suggested to use 'int *'. My point was more 
> that I don't think that the helpers would work as-is on arm32 because
> even if the ISA allows a direct access, we are setting the bit in SCTLR 
> to disable unaligned access.
>
> As Juergen is proposing a common header, then I could ask him to do the 
> work to confirm that the helpers properly work on arm32. But I think 
> this is unfair.

When I introduced the helpers in Linux, I showed that these
produce the best output on all modern compilers (at least gcc-5,
probably earlier) for both architectures that allow unaligned
access and for those that don't. We used to have architecture
specific helpers depending on what each architecture could
do, but all the other variants we had were either wrong or
less efficient.

If for some reason an Arm system is configured to trap
all unaligned access, then you must already pass
-mno-unaligned-access to the compiler to prevent certain
optimizations, and then the helpers will still behave
correctly (the same way they do on armv5, which never has
unaligned access). On armv7 with -munaligned-access, the
same functions only prevent the use of stm/ldm and strd/ldrd
but still use ldr/str.

     Arnd


  reply	other threads:[~2023-12-05 14:38 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05 10:07 [PATCH 0/2] xen: have a more generic unaligned.h header Juergen Gross
2023-12-05 10:07 ` [PATCH 1/2] xen: make include/xen/unaligned.h usable on all architectures Juergen Gross
2023-12-05 11:53   ` Julien Grall
2023-12-05 12:39     ` Juergen Gross
2023-12-05 13:31       ` Julien Grall
2023-12-05 13:41         ` Juergen Gross
2023-12-05 13:46           ` Julien Grall
2023-12-05 13:59             ` Jan Beulich
2023-12-05 14:01               ` Julien Grall
2023-12-05 14:10                 ` Arnd Bergmann
2023-12-05 14:19                   ` Julien Grall
2023-12-05 14:37                     ` Arnd Bergmann [this message]
2023-12-05 16:29                       ` Julien Grall
2023-12-05 16:31                         ` Juergen Gross
2023-12-05 14:11                 ` Jan Beulich
2023-12-05 14:16             ` Juergen Gross
2023-12-05 13:55   ` Jan Beulich
2023-12-05 14:11     ` Juergen Gross
2023-12-05 10:07 ` [PATCH 2/2] xen: remove asm/unaligned.h Juergen Gross
2023-12-05 13:57   ` Jan Beulich
  -- strict thread matches above, loose matches on Subject: below --
2023-12-12 16:27 [PATCH 0/2] xen: have a more generic unaligned.h header (take 2) Juergen Gross
2023-12-12 16:27 ` [PATCH 1/2] xen: make include/xen/unaligned.h usable on all architectures Juergen Gross
2023-12-12 16:47   ` Jan Beulich

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=ab8c9daa-9543-4aed-85f7-69febd85aeb9@app.fastmail.com \
    --to=arnd@arndb.de \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jgross@suse.com \
    --cc=julien@xen.org \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.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 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.