[PATCH] Fixed incorrect LLONG alignment for openrisc and cris

Luca Bonissi posted 1 patch 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/8cca5c06-4df8-b7d4-4aee-f52f956437f8@bonslack.org
include/exec/user/abitypes.h | 8 ++++++++
1 file changed, 8 insertions(+)
[PATCH] Fixed incorrect LLONG alignment for openrisc and cris
Posted by Luca Bonissi 9 months ago
From: Luca Bonissi <qemu@bonslack.org>
Date: Thu, 3 Aug 2023 02:15:57 +0200
Subject: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris

OpenRISC (or1k) has long long alignment to 4 bytes, but currently not
defined in abitypes.h. This lead to incorrect packing of /epoll_event/
structure and eventually infinite loop while waiting for file
descriptor[s] event[s].

Fixed also CRIS alignments (1 byte for all types).

Signed-off-by: Luca Bonissi <qemu@bonslack.org>
---
  include/exec/user/abitypes.h | 8 ++++++++
  1 file changed, 8 insertions(+)

diff --git a/include/exec/user/abitypes.h b/include/exec/user/abitypes.h
index 6191ce9f74..6178453d94 100644
--- a/include/exec/user/abitypes.h
+++ b/include/exec/user/abitypes.h
@@ -15,8 +15,16 @@
  #define ABI_LLONG_ALIGNMENT 2
  #endif

+#ifdef TARGET_CRIS
+#define ABI_SHORT_ALIGNMENT 1
+#define ABI_INT_ALIGNMENT 1
+#define ABI_LONG_ALIGNMENT 1
+#define ABI_LLONG_ALIGNMENT 1
+#endif
+
  #if (defined(TARGET_I386) && !defined(TARGET_X86_64)) \
      || defined(TARGET_SH4) \
+    || defined(TARGET_OPENRISC) \
      || defined(TARGET_MICROBLAZE) \
      || defined(TARGET_NIOS2)
  #define ABI_LLONG_ALIGNMENT 4
-- 
2.35.8
Re: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris
Posted by Thomas Huth 9 months ago
On 03/08/2023 02.29, Luca Bonissi wrote:
> From: Luca Bonissi <qemu@bonslack.org>
> Date: Thu, 3 Aug 2023 02:15:57 +0200
> Subject: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris
> 
> OpenRISC (or1k) has long long alignment to 4 bytes, but currently not
> defined in abitypes.h. This lead to incorrect packing of /epoll_event/
> structure and eventually infinite loop while waiting for file
> descriptor[s] event[s].
> 
> Fixed also CRIS alignments (1 byte for all types).
> 
> Signed-off-by: Luca Bonissi <qemu@bonslack.org>
> ---
>   include/exec/user/abitypes.h | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/include/exec/user/abitypes.h b/include/exec/user/abitypes.h
> index 6191ce9f74..6178453d94 100644
> --- a/include/exec/user/abitypes.h
> +++ b/include/exec/user/abitypes.h
> @@ -15,8 +15,16 @@
>   #define ABI_LLONG_ALIGNMENT 2
>   #endif
> 
> +#ifdef TARGET_CRIS
> +#define ABI_SHORT_ALIGNMENT 1
> +#define ABI_INT_ALIGNMENT 1
> +#define ABI_LONG_ALIGNMENT 1
> +#define ABI_LLONG_ALIGNMENT 1
> +#endif
> +
>   #if (defined(TARGET_I386) && !defined(TARGET_X86_64)) \
>       || defined(TARGET_SH4) \
> +    || defined(TARGET_OPENRISC) \
>       || defined(TARGET_MICROBLAZE) \
>       || defined(TARGET_NIOS2)
>   #define ABI_LLONG_ALIGNMENT 4

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1770
Reviewed-by: Thomas Huth <thuth@redhat.com>


Re: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris
Posted by Michael Tokarev 9 months ago
03.08.2023 07:42, Thomas Huth wrote:
> On 03/08/2023 02.29, Luca Bonissi wrote:
>> From: Luca Bonissi <qemu@bonslack.org>
>> Date: Thu, 3 Aug 2023 02:15:57 +0200
>> Subject: [PATCH] Fixed incorrect LLONG alignment for openrisc and cris
>>
>> OpenRISC (or1k) has long long alignment to 4 bytes, but currently not
>> defined in abitypes.h. This lead to incorrect packing of /epoll_event/
>> structure and eventually infinite loop while waiting for file
>> descriptor[s] event[s].
>>
>> Fixed also CRIS alignments (1 byte for all types).

Applied to my trivial-patches tree, thanks!

/mjt