From: Avi Kivity <avi@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD
Date: Mon, 28 Feb 2011 18:45:56 +0200 [thread overview]
Message-ID: <4D6BD144.5050406@redhat.com> (raw)
In-Reply-To: <4D6BCA6A.9060507@siemens.com>
On 02/28/2011 06:16 PM, Jan Kiszka wrote:
> On 2011-02-28 16:55, Avi Kivity wrote:
> > On 02/01/2011 11:15 PM, Jan Kiszka wrote:
> >> From: Jan Kiszka<jan.kiszka@siemens.com>
> >>
> >> Block SIG_IPI, unblock it during KVM_RUN, just like in io-thread mode.
> >> It's unused so far, but this infrastructure will be required for
> >> self-IPIs and to process SIGBUS plus, in KVM mode, SIGIO and SIGALRM. As
> >> Windows doesn't support signal services, we need to provide a stub for
> >> the init function.
> >>
> >
> > This patch breaks qemu-kvm after merging. The symptoms are that Windows
> > XP x64 does not respond when netcat connects to some server in it, via
> > -net user,hostfwd. The vcpu thread loops indefinitely on KVM_EXIT_INTR,
> > which is consistent with signals being messed up.
> >
> > I verified that 981085dd465c1 merged with ff48eb5fe79ad works,
> > while 981085dd465c1 merged with ff48eb5fe79ad^ fails.
> >
> >
> >> diff --git a/cpus.c b/cpus.c
> >> index 42717ba..a33e470 100644
> >> --- a/cpus.c
> >> +++ b/cpus.c
> >> @@ -231,11 +231,9 @@ fail:
> >> return err;
> >> }
> >>
> >> -#ifdef CONFIG_IOTHREAD
> >> static void dummy_signal(int sig)
> >> {
> >> }
> >> -#endif
> >>
> >> #else /* _WIN32 */
> >>
> >> @@ -267,6 +265,32 @@ static void qemu_event_increment(void)
> >> #endif /* _WIN32 */
> >>
> >> #ifndef CONFIG_IOTHREAD
> >> +static void qemu_kvm_init_cpu_signals(CPUState *env)
> >> +{
> >> +#ifndef _WIN32
> >> + int r;
> >> + sigset_t set;
> >> + struct sigaction sigact;
> >> +
> >> + memset(&sigact, 0, sizeof(sigact));
> >> + sigact.sa_handler = dummy_signal;
> >> + sigaction(SIG_IPI,&sigact, NULL);
> >> +
> >> + sigemptyset(&set);
> >> + sigaddset(&set, SIG_IPI);
> >> + pthread_sigmask(SIG_BLOCK,&set, NULL);
> >> +
> >> + pthread_sigmask(SIG_BLOCK, NULL,&set);
> >> + sigdelset(&set, SIG_IPI);
> >> + sigdelset(&set, SIGBUS);
> >> + r = kvm_set_signal_mask(env,&set);
> >> + if (r) {
> >> + fprintf(stderr, "kvm_set_signal_mask: %s\n", strerror(-r));
> >> + exit(1);
> >> + }
> >> +#endif
> >> +}
> >> +
> >> int qemu_init_main_loop(void)
> >> {
> >> cpu_set_debug_excp_handler(cpu_debug_handler);
> >> @@ -292,6 +316,7 @@ void qemu_init_vcpu(void *_env)
> >> fprintf(stderr, "kvm_init_vcpu failed: %s\n",
> >> strerror(-r));
> >> exit(1);
> >> }
> >> + qemu_kvm_init_cpu_signals(env);
>
> Just comment that out as long as qemu-kvm is (mis-)using !IOTHREAD mode.
> I thought it would run before setup_kernel_sigmask, but it's the other
> way around, and then the wrong non-iothread signal setup is applied.
That's what I tried, and it didn't work?! Maybe I forgot to compile or
something.
--
error compiling committee.c: too many arguments to function
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD
Date: Mon, 28 Feb 2011 18:45:56 +0200 [thread overview]
Message-ID: <4D6BD144.5050406@redhat.com> (raw)
In-Reply-To: <4D6BCA6A.9060507@siemens.com>
On 02/28/2011 06:16 PM, Jan Kiszka wrote:
> On 2011-02-28 16:55, Avi Kivity wrote:
> > On 02/01/2011 11:15 PM, Jan Kiszka wrote:
> >> From: Jan Kiszka<jan.kiszka@siemens.com>
> >>
> >> Block SIG_IPI, unblock it during KVM_RUN, just like in io-thread mode.
> >> It's unused so far, but this infrastructure will be required for
> >> self-IPIs and to process SIGBUS plus, in KVM mode, SIGIO and SIGALRM. As
> >> Windows doesn't support signal services, we need to provide a stub for
> >> the init function.
> >>
> >
> > This patch breaks qemu-kvm after merging. The symptoms are that Windows
> > XP x64 does not respond when netcat connects to some server in it, via
> > -net user,hostfwd. The vcpu thread loops indefinitely on KVM_EXIT_INTR,
> > which is consistent with signals being messed up.
> >
> > I verified that 981085dd465c1 merged with ff48eb5fe79ad works,
> > while 981085dd465c1 merged with ff48eb5fe79ad^ fails.
> >
> >
> >> diff --git a/cpus.c b/cpus.c
> >> index 42717ba..a33e470 100644
> >> --- a/cpus.c
> >> +++ b/cpus.c
> >> @@ -231,11 +231,9 @@ fail:
> >> return err;
> >> }
> >>
> >> -#ifdef CONFIG_IOTHREAD
> >> static void dummy_signal(int sig)
> >> {
> >> }
> >> -#endif
> >>
> >> #else /* _WIN32 */
> >>
> >> @@ -267,6 +265,32 @@ static void qemu_event_increment(void)
> >> #endif /* _WIN32 */
> >>
> >> #ifndef CONFIG_IOTHREAD
> >> +static void qemu_kvm_init_cpu_signals(CPUState *env)
> >> +{
> >> +#ifndef _WIN32
> >> + int r;
> >> + sigset_t set;
> >> + struct sigaction sigact;
> >> +
> >> + memset(&sigact, 0, sizeof(sigact));
> >> + sigact.sa_handler = dummy_signal;
> >> + sigaction(SIG_IPI,&sigact, NULL);
> >> +
> >> + sigemptyset(&set);
> >> + sigaddset(&set, SIG_IPI);
> >> + pthread_sigmask(SIG_BLOCK,&set, NULL);
> >> +
> >> + pthread_sigmask(SIG_BLOCK, NULL,&set);
> >> + sigdelset(&set, SIG_IPI);
> >> + sigdelset(&set, SIGBUS);
> >> + r = kvm_set_signal_mask(env,&set);
> >> + if (r) {
> >> + fprintf(stderr, "kvm_set_signal_mask: %s\n", strerror(-r));
> >> + exit(1);
> >> + }
> >> +#endif
> >> +}
> >> +
> >> int qemu_init_main_loop(void)
> >> {
> >> cpu_set_debug_excp_handler(cpu_debug_handler);
> >> @@ -292,6 +316,7 @@ void qemu_init_vcpu(void *_env)
> >> fprintf(stderr, "kvm_init_vcpu failed: %s\n",
> >> strerror(-r));
> >> exit(1);
> >> }
> >> + qemu_kvm_init_cpu_signals(env);
>
> Just comment that out as long as qemu-kvm is (mis-)using !IOTHREAD mode.
> I thought it would run before setup_kernel_sigmask, but it's the other
> way around, and then the wrong non-iothread signal setup is applied.
That's what I tried, and it didn't work?! Maybe I forgot to compile or
something.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2011-02-28 16:46 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-01 21:15 [PATCH v2 00/24] [uq/master] Patch queue, part II Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 01/24] kvm: x86: Fix build in absence of KVM_CAP_ASYNC_PF Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 02/24] Prevent abortion on multiple VCPU kicks Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 03/24] Stop current VCPU on synchronous reset requests Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 04/24] Process vmstop requests in IO thread Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 05/24] Trigger exit from cpu_exec_all on pending IO events Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 06/24] Leave inner main_loop faster on pending requests Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 07/24] Flatten the main loop Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 08/24] kvm: Report proper error on GET_VCPU_MMAP_SIZE failures Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 09/24] kvm: Drop redundant kvm_enabled from kvm_cpu_thread_fn Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 10/24] kvm: Handle kvm_init_vcpu errors Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 11/24] kvm: Provide sigbus services arch-independently Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 12/24] Refactor signal setup functions in cpus.c Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-28 15:55 ` Avi Kivity
2011-02-28 15:55 ` [Qemu-devel] " Avi Kivity
2011-02-28 16:02 ` Jan Kiszka
2011-02-28 16:02 ` [Qemu-devel] " Jan Kiszka
2011-02-28 16:05 ` Jan Kiszka
2011-02-28 16:05 ` [Qemu-devel] " Jan Kiszka
2011-02-28 16:16 ` Jan Kiszka
2011-02-28 16:16 ` [Qemu-devel] " Jan Kiszka
2011-02-28 16:45 ` Avi Kivity [this message]
2011-02-28 16:45 ` Avi Kivity
2011-02-28 16:48 ` Avi Kivity
2011-02-28 16:48 ` [Qemu-devel] " Avi Kivity
2011-02-28 16:49 ` Jan Kiszka
2011-02-28 16:49 ` [Qemu-devel] " Jan Kiszka
2011-02-28 16:54 ` Avi Kivity
2011-02-28 16:54 ` [Qemu-devel] " Avi Kivity
2011-03-01 8:39 ` Avi Kivity
2011-03-01 8:39 ` [Qemu-devel] " Avi Kivity
2011-03-01 8:58 ` Jan Kiszka
2011-03-01 8:58 ` [Qemu-devel] " Jan Kiszka
2011-03-01 9:03 ` Avi Kivity
2011-03-01 9:03 ` [Qemu-devel] " Avi Kivity
2011-02-01 21:15 ` [PATCH v2 14/24] kvm: Refactor qemu_kvm_eat_signals Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 15/24] kvm: Call qemu_kvm_eat_signals also under !CONFIG_IOTHREAD Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 16/24] Set up signalfd " Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 17/24] kvm: Fix race between timer signals and vcpu entry under !IOTHREAD Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 18/24] kvm: Add MCE signal support for !CONFIG_IOTHREAD Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:15 ` [PATCH v2 19/24] Introduce VCPU self-signaling service Jan Kiszka
2011-02-01 21:15 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:16 ` [PATCH v2 20/24] kvm: Unconditionally reenter kernel after IO exits Jan Kiszka
2011-02-01 21:16 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:16 ` [PATCH v2 21/24] kvm: Remove static return code of kvm_handle_io Jan Kiszka
2011-02-01 21:16 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:16 ` [PATCH v2 22/24] kvm: Leave kvm_cpu_exec directly after KVM_EXIT_SHUTDOWN Jan Kiszka
2011-02-01 21:16 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:16 ` [PATCH v2 23/24] Refactor kvm&tcg function names in cpus.c Jan Kiszka
2011-02-01 21:16 ` [Qemu-devel] " Jan Kiszka
2011-02-01 21:16 ` [PATCH v2 24/24] Fix a few coding style violations " Jan Kiszka
2011-02-01 21:16 ` [Qemu-devel] " Jan Kiszka
2011-02-04 13:54 ` [PATCH v2 00/24] [uq/master] Patch queue, part II Marcelo Tosatti
2011-02-04 13:54 ` [Qemu-devel] " Marcelo Tosatti
2011-02-04 16:29 ` Jan Kiszka
2011-02-04 16:29 ` [Qemu-devel] " Jan Kiszka
2011-02-04 16:37 ` Marcelo Tosatti
2011-02-04 16:37 ` [Qemu-devel] " Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D6BD144.5050406@redhat.com \
--to=avi@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.