diff mbox

[v2,05/10] kvm: Set sigmask length to 16 for MIPS targets

Message ID 1387203165-5553-6-git-send-email-james.hogan@imgtec.com (mailing list archive)
State New, archived
Headers show

Commit Message

James Hogan Dec. 16, 2013, 2:12 p.m. UTC
From: Sanjay Lal <sanjayl@kymasys.com>

MIPS/Linux is unusual in having 128 signals rather than just 64 like
most other architectures. This means its sigmask is 16 bytes instead of
8, so correct kvm_set_signal_mask to pass the correct sigmask->len to
KVM_SET_SIGNAL_MASK.

Signed-off-by: Sanjay Lal <sanjayl@kymasys.com>
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Gleb Natapov <gleb@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
---
Changes in v2:
 - Expand commit message
 - Reword comment
---
 kvm-all.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Aurelien Jarno Dec. 21, 2013, 3:34 p.m. UTC | #1
On Mon, Dec 16, 2013 at 02:12:40PM +0000, James Hogan wrote:
> From: Sanjay Lal <sanjayl@kymasys.com>
> 
> MIPS/Linux is unusual in having 128 signals rather than just 64 like
> most other architectures. This means its sigmask is 16 bytes instead of
> 8, so correct kvm_set_signal_mask to pass the correct sigmask->len to
> KVM_SET_SIGNAL_MASK.
> 
> Signed-off-by: Sanjay Lal <sanjayl@kymasys.com>
> Signed-off-by: James Hogan <james.hogan@imgtec.com>
> Cc: Gleb Natapov <gleb@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> ---
> Changes in v2:
>  - Expand commit message
>  - Reword comment
> ---
>  kvm-all.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index 4478969..c831326 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -2044,7 +2044,12 @@ int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset)
>  
>      sigmask = g_malloc(sizeof(*sigmask) + sizeof(*sigset));
>  
> +#ifdef TARGET_MIPS
> +    /* MIPS has 128 signals */
> +    sigmask->len = 16;
> +#else
>      sigmask->len = 8;
> +#endif
>      memcpy(sigmask->sigset, sigset, sizeof(*sigset));
>      r = kvm_vcpu_ioctl(cpu, KVM_SET_SIGNAL_MASK, sigmask);
>      g_free(sigmask);

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Peter Maydell Dec. 21, 2013, 8:18 p.m. UTC | #2
On 16 December 2013 14:12, James Hogan <james.hogan@imgtec.com> wrote:
> From: Sanjay Lal <sanjayl@kymasys.com>
>
> MIPS/Linux is unusual in having 128 signals rather than just 64 like
> most other architectures. This means its sigmask is 16 bytes instead of
> 8, so correct kvm_set_signal_mask to pass the correct sigmask->len to
> KVM_SET_SIGNAL_MASK.
>
> Signed-off-by: Sanjay Lal <sanjayl@kymasys.com>
> Signed-off-by: James Hogan <james.hogan@imgtec.com>
> Cc: Gleb Natapov <gleb@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> ---
> Changes in v2:
>  - Expand commit message
>  - Reword comment
> ---
>  kvm-all.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/kvm-all.c b/kvm-all.c
> index 4478969..c831326 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -2044,7 +2044,12 @@ int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset)
>
>      sigmask = g_malloc(sizeof(*sigmask) + sizeof(*sigset));
>
> +#ifdef TARGET_MIPS
> +    /* MIPS has 128 signals */
> +    sigmask->len = 16;
> +#else
>      sigmask->len = 8;
> +#endif
>      memcpy(sigmask->sigset, sigset, sizeof(*sigset));
>      r = kvm_vcpu_ioctl(cpu, KVM_SET_SIGNAL_MASK, sigmask);
>      g_free(sigmask);

kvm-all.c is mostly free of TARGET_FOO ifdefs; I think maybe
it would be better to have the signal mask length be something
the target-specific code configures in kvm_arch_init().

thanks
-- PMM
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/kvm-all.c b/kvm-all.c
index 4478969..c831326 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -2044,7 +2044,12 @@  int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset)
 
     sigmask = g_malloc(sizeof(*sigmask) + sizeof(*sigset));
 
+#ifdef TARGET_MIPS
+    /* MIPS has 128 signals */
+    sigmask->len = 16;
+#else
     sigmask->len = 8;
+#endif
     memcpy(sigmask->sigset, sigset, sizeof(*sigset));
     r = kvm_vcpu_ioctl(cpu, KVM_SET_SIGNAL_MASK, sigmask);
     g_free(sigmask);