On Sun, May 8, 2011 at 11:50 AM, Avi Kivity <avi@xxxxxxxxxx> wrote: > On 05/08/2011 11:24 AM, Pekka Enberg wrote: >> >> Hi! >> >> We've noticed that sometimes KVM_GET_SREGS from a signal handler >> hangs. We use it like this: >> >> static void handle_sigquit(int sig) >> { >> int i; >> >> for (i = 0; i< nrcpus; i++) { >> struct kvm_cpu *cpu = kvm_cpus[i]; >> >> kvm_cpu__show_registers(cpu);<-- here >> kvm_cpu__show_code(cpu); >> kvm_cpu__show_page_tables(cpu); >> } >> >> and >> >> void kvm_cpu__show_registers(struct kvm_cpu *self) >> { >> [...] >> if (ioctl(self->vcpu_fd, KVM_GET_SREGS,&sregs)< 0) >> die("KVM_GET_REGS failed"); >> >> is it not OK to call KVM_GET_SREGS from other threads than the one >> that's doing KVM_RUN? > > From Documentation/kvm/api.txt: > > - vcpu ioctls: These query and set attributes that control the operation > of a single virtual cpu. > > Only run vcpu ioctls from the same thread that was used to create the > vcpu. > > > So no, it is not okay (nor is it meaningful, you get a register snapshot > that is disconnected from all other vcpu state). Aah, I've read that part at some point but forgot all about it. Thanks, Avi! -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html