From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: xen/mce - mcelog at 100% cpu Date: Wed, 13 Jun 2012 14:24:58 -0400 Message-ID: <20120613182458.GA5813@phenom.dumpdata.com> References: <20120612124015.GB559@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20120612124015.GB559@phenom.dumpdata.com> Sender: linux-kernel-owner@vger.kernel.org To: "Liu, Jinsong" Cc: xen-devel@lists.xensource.com, linux-kernel@vger.kernel.org List-Id: xen-devel@lists.xenproject.org On Tue, Jun 12, 2012 at 08:40:15AM -0400, Konrad Rzeszutek Wilk wrote: > On Tue, Jun 12, 2012 at 07:51:03AM +0000, Liu, Jinsong wrote: > > >From aa2ce7440f16002266dc8464f749992d0c8ac0e5 Mon Sep 17 00:00:00 2001 > > From: Liu, Jinsong > > Date: Tue, 12 Jun 2012 23:11:16 +0800 > > Subject: [PATCH] xen/mce: schedule a workqueue to avoid sleep in atomic context > > > > copy_to_user might sleep and print a stack trace if it is executed > > in an atomic spinlock context. > > > > This patch schedule a workqueue for IRQ handler to poll the data, > > and use mutex instead of spinlock, so copy_to_user sleep in atomic > > context would not occur. > > Ah much better. Usually one also includes the report of what the > stack trace was. So I've added that in. So another bug which is that mcelog is spinning at 100% CPU (and only under Xen). It seems to be doing: ppoll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, NULL, [], 8) = 1 ([{fd=3, revents=POLLIN}]) read(3, "", 2816) = 0 ppoll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, NULL, [], 8) = 1 ([{fd=3, revents=POLLIN}]) read(3, "", 2816) constantly.