From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46484) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBl2K-00058l-4V for qemu-devel@nongnu.org; Tue, 29 Nov 2016 11:13:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBl2G-0005gN-Uo for qemu-devel@nongnu.org; Tue, 29 Nov 2016 11:13:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33920) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cBl2G-0005g1-Ol for qemu-devel@nongnu.org; Tue, 29 Nov 2016 11:13:36 -0500 References: <20161124151225.GA11963@stefanha-x1.localdomain> <20161129103236.GE15786@lemon> <14abb3dd-b639-3c31-cade-073fff209ca6@redhat.com> <20161129132354.GF15786@lemon> <04fa01e1-0613-fc14-527b-e3432c6fec1a@redhat.com> <20161129141746.GA2043@lemon> <20161129152428.4w6c6fuate4eouc5@kamzik.brq.redhat.com> <20161129153944.GA11237@lemon> <20161129160123.t55xzd3ggqnlcpsj@kamzik.brq.redhat.com> From: Paolo Bonzini Message-ID: <07abf6bb-ec21-da2c-bc8c-c9f136ba5c01@redhat.com> Date: Tue, 29 Nov 2016 17:13:27 +0100 MIME-Version: 1.0 In-Reply-To: <20161129160123.t55xzd3ggqnlcpsj@kamzik.brq.redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] Linux kernel polling for QEMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andrew Jones , Fam Zheng Cc: Eliezer Tamir , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Jens Axboe , Christian Borntraeger , Stefan Hajnoczi , Davide Libenzi , Christoph Hellwig On 29/11/2016 17:01, Andrew Jones wrote: > OK, it may be due to scheduling then. Below is the test case (for AArch64) > Also, I forgot to mention before that I can only see this with TCG, not > KVM. If ppoll is allowed to timeout, then the test will complete. If not, > then, as can be seen with strace, the iothread is stuck in ppoll, and the > test never completes. > > #include > volatile int ready; > void set_ready(void) { > ready = 1; > while(1); > } > int main(void) { > smp_boot_secondary(1, set_ready); > while (!ready); > return 0; > } Where is the test stuck? Paolo