From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VTzdW-0005pu-RI for qemu-devel@nongnu.org; Wed, 09 Oct 2013 15:41:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VTzdO-0000Xi-08 for qemu-devel@nongnu.org; Wed, 09 Oct 2013 15:41:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40540) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VTzdN-0000XU-OB for qemu-devel@nongnu.org; Wed, 09 Oct 2013 15:41:25 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r99JfOJr007681 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 9 Oct 2013 15:41:24 -0400 Date: Wed, 9 Oct 2013 16:41:09 -0300 From: Marcelo Tosatti Message-ID: <20131009194109.GA16670@amt.cnet> References: <20131008004126.773017235@amt.cnet> <20131008004224.509422315@amt.cnet> <5253BC64.2060105@redhat.com> <20131008215155.GA16625@amt.cnet> <52550E58.6030106@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52550E58.6030106@redhat.com> Subject: Re: [Qemu-devel] [patch 1/2] qemu: mempath: prefault pages manually List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org On Wed, Oct 09, 2013 at 10:05:44AM +0200, Paolo Bonzini wrote: > Il 08/10/2013 23:51, Marcelo Tosatti ha scritto: > > On Tue, Oct 08, 2013 at 10:03:48AM +0200, Paolo Bonzini wrote: > >> Il 08/10/2013 02:41, Marcelo Tosatti ha scritto: > >>> + /* unblock SIGBUS */ > >>> + pthread_sigmask(SIG_BLOCK, NULL, &oldset); > >>> + sigemptyset(&set); > >>> + sigaddset(&set, SIGBUS); > >>> + pthread_sigmask(SIG_UNBLOCK, &set, NULL); > >> > >> Please instead modify qemu-thread-posix.c to unblock all per-thread > >> signals (SIGBUS, SIGSEGV, SIGILL, SIGFPE and SIGSYS). There is no need > >> to keep those blocked. > > > > main-loop.c handles SIGBUS via signalfd to emulate MCEs (associated > > commits). Therefore it must be blocked. > > How was that tested? For BUS_MCEERR_AO it can work, but BUS_MCEERR_AR > calls force_sig_info which does this: > > ignored = action->sa.sa_handler == SIG_IGN; > blocked = sigismember(&t->blocked, sig); > if (blocked || ignored) { > action->sa.sa_handler = SIG_DFL; > if (blocked) { > sigdelset(&t->blocked, sig); > recalc_sigpending_and_wake(t); > } > > if (action->sa.sa_handler == SIG_DFL) > t->signal->flags &= ~SIGNAL_UNKILLABLE; > > and kills the process (because that's the default action of SIG_DFL). For vcpu context its not blocked? > > Note that what this patch does it to maintain the signal handling state > > (it saves the previous state, modifies state, restores previous state) so > > that its unchanged. > > Yes, understood. I was missing the part about MCE (I knew it used > SIGBUS, but forgot about signalfd). So this patch is good, but the > above point about BUS_MCEERR_AR needs to be checked sooner or later. > > Paolo