From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v2 for 4.5] xen/arm: p2m: Correctly initialize cur_offset Date: Wed, 1 Oct 2014 16:13:41 +0100 Message-ID: <1412176421-20606-1-git-send-email-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XZLbD-0000BC-Vm for xen-devel@lists.xenproject.org; Wed, 01 Oct 2014 15:13:52 +0000 Received: by mail-wg0-f52.google.com with SMTP id a1so749889wgh.23 for ; Wed, 01 Oct 2014 08:13:50 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: stefano.stabellini@citrix.com, Julien Grall , tim@xen.org, ian.campbell@citrix.com List-Id: xen-devel@lists.xenproject.org {~0,} only initializes the first cell of the array to ~0. The other cells are initialized to 0. Explicitly initialize every cells of the array and, at the same time, do the same for the mappings. This is fixing boot after 82985d7 "xen: arm: handle variable p2m levels in apply_p2m_changes" on platform where the root-level doesn't have concatenate table (such as the Foundation Model). Signed-off-by: Julien Grall --- This is a bug fix for Xen 4.5. This make Xen booting again on the Foundation Model and any platform that doesn't have concatenate table for root-level. Changes in v2: - Add missing Signed-off-by - Explicitly initialize every cells rather than using a loop --- xen/arch/arm/p2m.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index 70929fc..7044431 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -716,11 +716,11 @@ static int apply_p2m_changes(struct domain *d, { int rc, ret; struct p2m_domain *p2m = &d->arch.p2m; - lpae_t *mappings[4] = { NULL, }; + lpae_t *mappings[4] = { NULL, NULL, NULL, NULL }; paddr_t addr, orig_maddr = maddr; unsigned int level = 0; unsigned int cur_root_table = ~0; - unsigned int cur_offset[4] = { ~0, }; + unsigned int cur_offset[4] = { ~0, ~0, ~0, ~0 }; unsigned int count = 0; bool_t flush = false; bool_t flush_pt; -- 1.7.10.4