On 16 December 2013 14:12, James Hogan <james.ho...@imgtec.com> wrote: > From: Sanjay Lal <sanj...@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 <sanj...@kymasys.com> > Signed-off-by: James Hogan <james.ho...@imgtec.com> > Cc: Gleb Natapov <g...@redhat.com> > Cc: Paolo Bonzini <pbonz...@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