From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH] xen/arm: p2m: Restrict preemption check in apply_p2m_changes Date: Tue, 5 May 2015 16:23:51 +0100 Message-ID: <1430839431.2660.129.camel@citrix.com> References: <1430838129-21693-1-git-send-email-julien.grall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YpeyJ-0002RR-56 for xen-devel@lists.xenproject.org; Tue, 05 May 2015 15:41:23 +0000 In-Reply-To: <1430838129-21693-1-git-send-email-julien.grall@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: xen-devel@lists.xenproject.org, Riku Voipio , tim@xen.org, Tamas K Lengyel , stefano.stabellini@citrix.com List-Id: xen-devel@lists.xenproject.org On Tue, 2015-05-05 at 16:02 +0100, Julien Grall wrote: > The commit 569fb6c "xen/arm: Data abort exception (R/W) mem_access > events" makes apply_p2m_changes to call hypercall_preempt_check for any > operation rather than for relinquish. > > The function hypercall_preempt_check call local_events_need_delivery > which rely on the current VCPU is not an idle VCPU. > Although, during DOM0 building the current VCPU is an idle one. This > would make Xen crash with the following stack trace: > > (XEN) CPU0: Unexpected Trap: Data Abort > [...] > (XEN) Xen call trace: > (XEN) [<00256ef4>] apply_p2m_changes+0x210/0x1190 (PC) > (XEN) [<002506b4>] gic_events_need_delivery+0x5c/0x13c (LR) > (XEN) [<002580ec>] map_mmio_regions+0x64/0x74 > (XEN) [<00251958>] gicv2v_setup+0xf8/0x150 > (XEN) [<00250964>] gicv_setup+0x20/0x30 > (XEN) [<0024cb3c>] arch_domain_create+0x170/0x244 > (XEN) [<00207df0>] domain_create+0x2ac/0x4d8 > (XEN) [<0028e3d0>] start_xen+0xcbc/0xee4 > (XEN) [<00200540>] paging+0x94/0xd8 > (XEN) > (XEN) > (XEN) **************************************** > (XEN) Panic on CPU 0: > (XEN) CPU0: Unexpected Trap: Data Abort > (XEN) > (XEN) **************************************** > > hypercall_preempt_check is expecting to be call only when the current > VCPU belong to a real domain (see x86 behavior). > > As the bug prevents Xen booting on some platform, fix it by only check > preemption when the current VCPU is an idle one for now. We could > improve it later. > > Reported-by: Riku Voipio > Signed-off-by: Julien Grall > CC: Tamas K Lengyel Acked + applied, thanks.