From: Maxim Ostapenko <m.ostapenko@partner.samsung.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Trivial <qemu-trivial@nongnu.org>,
Slava Garbuzov <v.garbuzov@samsung.com>,
Riku Voipio <riku.voipio@iki.fi>,
Yury Gribov <y.gribov@samsung.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-trivial] [PATCH] Fix ABI incompatibility between Qemu-aarch64 and Linux Kernel in signal handling.
Date: Mon, 02 Feb 2015 17:52:26 +0400 [thread overview]
Message-ID: <54CF811A.1020405@partner.samsung.com> (raw)
In-Reply-To: <CAFEAcA8fz+Dy3DGSWX3xne+k=egx=PznB0STrGGtbYGT0D=CPQ@mail.gmail.com>
Peter,
thank you for review and sorry for sign. I've updated the patch, is it
ok now?
From 5b035df58f9f17e64b35311b6b5f55097c7f8ce1 Mon Sep 17 00:00:00 2001
From: Max Ostapenko <m.ostapenko@partner.samsung.com>
Date: Mon, 2 Feb 2015 12:03:20 +0400
Subject: [PATCH] linux-user: wrong TARGET_SI_PAD_SIZE value for some
targets.
Fix TARGET_SI_PAD_SIZE for S390X, SPARC, ALPHA and AARCH64 according to
Linux Kernel 3.19 c59c961ca511dc7ee2f4f7e9c224d16f5c76ca6e revision.
---
linux-user/syscall_defs.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index ebb3be1..9ed6de8 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -655,7 +655,14 @@ typedef struct {
#endif
#define TARGET_SI_MAX_SIZE 128
-#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
+
+#if TARGET_ABI_BITS == 32
+#define TARGET_SI_PREAMBLE_SIZE (3 * sizeof(int))
+#else
+#define TARGET_SI_PREAMBLE_SIZE (4 * sizeof(int))
+#endif
+
+#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE -
TARGET_SI_PREAMBLE_SIZE) / sizeof(int))
typedef struct target_siginfo {
#ifdef TARGET_MIPS
--
Signed-off-by: Maxim Ostapenko <m.ostapenko@partner.samsung.com>
1.8.5.2.2930.gf745acb
-Maxim
On 02/02/2015 06:23 PM, Peter Maydell wrote:
> On 2 February 2015 at 08:23, Maxim Ostapenko
> <m.ostapenko@partner.samsung.com> wrote:
>> Sorry, missed ML.
> You missed qemu-devel as well :-)
>
>> On 02/02/2015 12:20 PM, Maxim Ostapenko wrote:
>>> Hi,
>>>
>>> this patch fixes https://bugs.launchpad.net/qemu/+bug/1416988.
>>>
>>> There is a small ABI incompatibility between Qemu-aarch64 and Linux Kernel
>>> 3.19 caused by wrong size of struct target_siginfo in Qemu. This tiny patch
>>> fixes the issue.
>>>
>>> -Maxim
>>>
>>> From 1d662e325d004bce2d640cfea5b337c92c7feca2 Mon Sep 17 00:00:00 2001
>>> From: Max Ostapenko <m.ostapenko@partner.samsung.com>
>>> Date: Mon, 2 Feb 2015 12:03:20 +0400
>>> Subject: [PATCH] linux-user: wrong TARGET_SI_PAD_SIZE value for some
>>> targets.
>>>
>>> Fix TARGET_SI_PAD_SIZE for S390X, SPARC, ALPHA and AARCH64 to correspond
>>> Linux Kernel 3.19 c59c961ca511dc7ee2f4f7e9c224d16f5c76ca6e revision.
> Thanks for this patch. I'm afraid that to apply it we need a
> Signed-off-by: line from you that certifies that you're OK to
> contribute it. (This is the same as Linux kernel patches; see
> the "Patch emails must include a Signed-off-by: line" section in
> http://wiki.qemu.org/Contribute/SubmitAPatch ).
>
>>> ---
>>> linux-user/syscall_defs.h | 5 +++++
>>> 1 file changed, 5 insertions(+)
>>>
>>> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
>>> index ebb3be1..b95a0b2 100644
>>> --- a/linux-user/syscall_defs.h
>>> +++ b/linux-user/syscall_defs.h
>>> @@ -655,7 +655,12 @@ typedef struct {
>>> #endif
>>>
>>> #define TARGET_SI_MAX_SIZE 128
>>> +#if defined(TARGET_S390X) || defined(TARGET_SPARC) \
>>> + || defined(TARGET_ALPHA) || defined(TARGET_AARCH64)
> I don't think this ifdef is correct. For instance for sparc
> the kernel defines things differently for 32 and 64 bit.
>
> In fact as far as I can tell for all architectures the
> kernel defines __ARCH_SI_PREAMBLE_SIZE to (4 * sizeof(int))
> for 64 bit and (3 * sizeof(int)) for 32 bit.
>
>>> +#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 4)
>>> +#else
>>> #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
>>> +#endif
> So I would suggest
>
> #if TARGET_ABI_BITS == 32
> #define TARGET_SI_PREAMBLE_SIZE (3 * sizeof(int))
> #else
> #define TARGET_SI_PREAMBLE_SIZE (4 * sizeof(int))
> #endif
>
> #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE -
> TARGET_SI_PREAMBLE_SIZE) / sizeof(int))
>
> which should give us the correct answer for all archs and
> configurations (including I think the 32-bit-on-64-bit
> setups like sparc32plus). It also rephrases the
> calculation to match what the kernel uses.
>
> thanks
> -- PMM
>
WARNING: multiple messages have this Message-ID (diff)
From: Maxim Ostapenko <m.ostapenko@partner.samsung.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Trivial <qemu-trivial@nongnu.org>,
Slava Garbuzov <v.garbuzov@samsung.com>,
Riku Voipio <riku.voipio@iki.fi>,
Yury Gribov <y.gribov@samsung.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] Fix ABI incompatibility between Qemu-aarch64 and Linux Kernel in signal handling.
Date: Mon, 02 Feb 2015 17:52:26 +0400 [thread overview]
Message-ID: <54CF811A.1020405@partner.samsung.com> (raw)
In-Reply-To: <CAFEAcA8fz+Dy3DGSWX3xne+k=egx=PznB0STrGGtbYGT0D=CPQ@mail.gmail.com>
Peter,
thank you for review and sorry for sign. I've updated the patch, is it
ok now?
From 5b035df58f9f17e64b35311b6b5f55097c7f8ce1 Mon Sep 17 00:00:00 2001
From: Max Ostapenko <m.ostapenko@partner.samsung.com>
Date: Mon, 2 Feb 2015 12:03:20 +0400
Subject: [PATCH] linux-user: wrong TARGET_SI_PAD_SIZE value for some
targets.
Fix TARGET_SI_PAD_SIZE for S390X, SPARC, ALPHA and AARCH64 according to
Linux Kernel 3.19 c59c961ca511dc7ee2f4f7e9c224d16f5c76ca6e revision.
---
linux-user/syscall_defs.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index ebb3be1..9ed6de8 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -655,7 +655,14 @@ typedef struct {
#endif
#define TARGET_SI_MAX_SIZE 128
-#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
+
+#if TARGET_ABI_BITS == 32
+#define TARGET_SI_PREAMBLE_SIZE (3 * sizeof(int))
+#else
+#define TARGET_SI_PREAMBLE_SIZE (4 * sizeof(int))
+#endif
+
+#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE -
TARGET_SI_PREAMBLE_SIZE) / sizeof(int))
typedef struct target_siginfo {
#ifdef TARGET_MIPS
--
Signed-off-by: Maxim Ostapenko <m.ostapenko@partner.samsung.com>
1.8.5.2.2930.gf745acb
-Maxim
On 02/02/2015 06:23 PM, Peter Maydell wrote:
> On 2 February 2015 at 08:23, Maxim Ostapenko
> <m.ostapenko@partner.samsung.com> wrote:
>> Sorry, missed ML.
> You missed qemu-devel as well :-)
>
>> On 02/02/2015 12:20 PM, Maxim Ostapenko wrote:
>>> Hi,
>>>
>>> this patch fixes https://bugs.launchpad.net/qemu/+bug/1416988.
>>>
>>> There is a small ABI incompatibility between Qemu-aarch64 and Linux Kernel
>>> 3.19 caused by wrong size of struct target_siginfo in Qemu. This tiny patch
>>> fixes the issue.
>>>
>>> -Maxim
>>>
>>> From 1d662e325d004bce2d640cfea5b337c92c7feca2 Mon Sep 17 00:00:00 2001
>>> From: Max Ostapenko <m.ostapenko@partner.samsung.com>
>>> Date: Mon, 2 Feb 2015 12:03:20 +0400
>>> Subject: [PATCH] linux-user: wrong TARGET_SI_PAD_SIZE value for some
>>> targets.
>>>
>>> Fix TARGET_SI_PAD_SIZE for S390X, SPARC, ALPHA and AARCH64 to correspond
>>> Linux Kernel 3.19 c59c961ca511dc7ee2f4f7e9c224d16f5c76ca6e revision.
> Thanks for this patch. I'm afraid that to apply it we need a
> Signed-off-by: line from you that certifies that you're OK to
> contribute it. (This is the same as Linux kernel patches; see
> the "Patch emails must include a Signed-off-by: line" section in
> http://wiki.qemu.org/Contribute/SubmitAPatch ).
>
>>> ---
>>> linux-user/syscall_defs.h | 5 +++++
>>> 1 file changed, 5 insertions(+)
>>>
>>> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
>>> index ebb3be1..b95a0b2 100644
>>> --- a/linux-user/syscall_defs.h
>>> +++ b/linux-user/syscall_defs.h
>>> @@ -655,7 +655,12 @@ typedef struct {
>>> #endif
>>>
>>> #define TARGET_SI_MAX_SIZE 128
>>> +#if defined(TARGET_S390X) || defined(TARGET_SPARC) \
>>> + || defined(TARGET_ALPHA) || defined(TARGET_AARCH64)
> I don't think this ifdef is correct. For instance for sparc
> the kernel defines things differently for 32 and 64 bit.
>
> In fact as far as I can tell for all architectures the
> kernel defines __ARCH_SI_PREAMBLE_SIZE to (4 * sizeof(int))
> for 64 bit and (3 * sizeof(int)) for 32 bit.
>
>>> +#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 4)
>>> +#else
>>> #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3)
>>> +#endif
> So I would suggest
>
> #if TARGET_ABI_BITS == 32
> #define TARGET_SI_PREAMBLE_SIZE (3 * sizeof(int))
> #else
> #define TARGET_SI_PREAMBLE_SIZE (4 * sizeof(int))
> #endif
>
> #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE -
> TARGET_SI_PREAMBLE_SIZE) / sizeof(int))
>
> which should give us the correct answer for all archs and
> configurations (including I think the 32-bit-on-64-bit
> setups like sparc32plus). It also rephrases the
> calculation to match what the kernel uses.
>
> thanks
> -- PMM
>
next prev parent reply other threads:[~2015-02-02 14:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <54CF336A.7080205@partner.samsung.com>
2015-02-02 8:23 ` [Qemu-trivial] [PATCH] Fix ABI incompatibility between Qemu-aarch64 and Linux Kernel in signal handling Maxim Ostapenko
2015-02-02 14:23 ` Peter Maydell
2015-02-02 14:23 ` [Qemu-devel] " Peter Maydell
2015-02-02 13:52 ` Maxim Ostapenko [this message]
2015-02-02 13:52 ` Maxim Ostapenko
2015-02-02 14:56 ` [Qemu-trivial] " Peter Maydell
2015-02-02 14:56 ` [Qemu-devel] " Peter Maydell
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=54CF811A.1020405@partner.samsung.com \
--to=m.ostapenko@partner.samsung.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=riku.voipio@iki.fi \
--cc=v.garbuzov@samsung.com \
--cc=y.gribov@samsung.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.