Message ID | 1387203165-5553-6-git-send-email-james.hogan@imgtec.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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>
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 --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);