All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juergen Gross <jgross@suse.com>
To: Julien Grall <julien@xen.org>, Arnd Bergmann <arnd@arndb.de>,
	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>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/2] xen: make include/xen/unaligned.h usable on all architectures
Date: Tue, 5 Dec 2023 17:31:39 +0100	[thread overview]
Message-ID: <c506544c-c277-451f-89b3-44e4bef47d52@suse.com> (raw)
In-Reply-To: <4e56e585-c5f9-4290-94d3-c0a6789188b4@xen.org>


[-- Attachment #1.1.1: Type: text/plain, Size: 2345 bytes --]

On 05.12.23 17:29, Julien Grall wrote:
> Hi Arnd,
> 
> On 05/12/2023 14:37, Arnd Bergmann wrote:
>> 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.
> 
> Unfortunately we don't explicitely do. This would explain why I saw some issues 
> with certain compiler [1].
> 
> So I agree that adding -mno-unaligned-access for arm32 makes sense.
> 
> @Juergen, do you want me to send a patch?

Yes, will do.


Juergen


[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3743 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

  reply	other threads:[~2023-12-05 16:32 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
2023-12-05 16:29                       ` Julien Grall
2023-12-05 16:31                         ` Juergen Gross [this message]
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=c506544c-c277-451f-89b3-44e4bef47d52@suse.com \
    --to=jgross@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=arnd@arndb.de \
    --cc=george.dunlap@citrix.com \
    --cc=jbeulich@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.