Message ID | 4FAAEC41.70608@siemens.com |
---|---|
State | New |
Headers | show |
Am 10.05.2012 00:14, schrieb Jan Kiszka: > Use SIGUSR1 unconditionally as SIG_IPI. First, ucontext coroutines tend > to corrupt RT signal masks due to a 32-on-64-bit Linux kernel bug. And, > second, there appears to be no advantage in using RT signals for VCPU > kicking. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- [...] > This is also stable material. Please cc qemu-stable then. When omitting that in the original patch submission, stable maintainers won't notice when the patch gets a "Thanks, applied" reply. /-F
On 05/10/2012 01:14 AM, Jan Kiszka wrote: > Use SIGUSR1 unconditionally as SIG_IPI. First, ucontext coroutines tend > to corrupt RT signal masks due to a 32-on-64-bit Linux kernel bug. And, > second, there appears to be no advantage in using RT signals for VCPU > kicking. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > > As people prefer to stick with ucontext, this replaces the backend > switch for i386-linux. > > Avi, you once committed the RT signal based SIG_IPI version to > qemu-kvm. Can you confirm that SIGUSR1 comes with no downside? > In fact SIGUSR1 would be better in that real-time signals are queued, so two IPIs are delivered twice with the old SIG_IPI and only once with SIGUSR1. I have some vague recollection that real time signals are handled faster in the kernel. Even if this is true, it's meaningless with kernel irqchip since signalling is only used heavily with userspace APIC.
On 05/09/2012 05:14 PM, Jan Kiszka wrote: > Use SIGUSR1 unconditionally as SIG_IPI. First, ucontext coroutines tend > to corrupt RT signal masks due to a 32-on-64-bit Linux kernel bug. And, > second, there appears to be no advantage in using RT signals for VCPU > kicking. > > Signed-off-by: Jan Kiszka<jan.kiszka@siemens.com> Applied. Thanks. Regards, Anthony Liguori > --- > > As people prefer to stick with ucontext, this replaces the backend > switch for i386-linux. > > Avi, you once committed the RT signal based SIG_IPI version to > qemu-kvm. Can you confirm that SIGUSR1 comes with no downside? > > This is also stable material. > > main-loop.h | 4 ---- > 1 files changed, 0 insertions(+), 4 deletions(-) > > diff --git a/main-loop.h b/main-loop.h > index c06b8bc..dce1cd9 100644 > --- a/main-loop.h > +++ b/main-loop.h > @@ -25,11 +25,7 @@ > #ifndef QEMU_MAIN_LOOP_H > #define QEMU_MAIN_LOOP_H 1 > > -#ifdef SIGRTMIN > -#define SIG_IPI (SIGRTMIN+4) > -#else > #define SIG_IPI SIGUSR1 > -#endif > > /** > * qemu_init_main_loop: Set up the process so that it can run the main loop.
diff --git a/main-loop.h b/main-loop.h index c06b8bc..dce1cd9 100644 --- a/main-loop.h +++ b/main-loop.h @@ -25,11 +25,7 @@ #ifndef QEMU_MAIN_LOOP_H #define QEMU_MAIN_LOOP_H 1 -#ifdef SIGRTMIN -#define SIG_IPI (SIGRTMIN+4) -#else #define SIG_IPI SIGUSR1 -#endif /** * qemu_init_main_loop: Set up the process so that it can run the main loop.
Use SIGUSR1 unconditionally as SIG_IPI. First, ucontext coroutines tend to corrupt RT signal masks due to a 32-on-64-bit Linux kernel bug. And, second, there appears to be no advantage in using RT signals for VCPU kicking. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- As people prefer to stick with ucontext, this replaces the backend switch for i386-linux. Avi, you once committed the RT signal based SIG_IPI version to qemu-kvm. Can you confirm that SIGUSR1 comes with no downside? This is also stable material. main-loop.h | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-)