From patchwork Wed Apr 19 17:13:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 97671 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp420187qgf; Wed, 19 Apr 2017 10:15:28 -0700 (PDT) X-Received: by 10.36.41.3 with SMTP id p3mr4683277itp.71.1492622128193; Wed, 19 Apr 2017 10:15:28 -0700 (PDT) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id p1si1145660itb.0.2017.04.19.10.15.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Apr 2017 10:15:28 -0700 (PDT) Received-SPF: neutral (google.com: 192.237.175.120 is neither permitted nor denied by best guess record for domain of xen-devel-bounces@lists.xen.org) client-ip=192.237.175.120; Authentication-Results: mx.google.com; spf=neutral (google.com: 192.237.175.120 is neither permitted nor denied by best guess record for domain of xen-devel-bounces@lists.xen.org) smtp.mailfrom=xen-devel-bounces@lists.xen.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0tAQ-0001Jd-89; Wed, 19 Apr 2017 17:13:22 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0tAO-0001IZ-D8 for xen-devel@lists.xen.org; Wed, 19 Apr 2017 17:13:20 +0000 Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id 35/77-02192-FAA97F85; Wed, 19 Apr 2017 17:13:19 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrHLMWRWlGSWpSXmKPExsVysyfVTXfdrO8 RBnNmmFks+biYxYHR4+ju30wBjFGsmXlJ+RUJrBk/155hLTiiV/Hp3ErGBsZ/6l2MXBxCApsY JaZu28UO4ZxmlHg06QhbFyMnB5uApsSdz5+YQGwRAWmJa58vM4LYzAIOEm8+3mMBsYUFAiWWz joNFmcRUJW4sv4rM4jNK2AhsW3BHrC4hIC8xK62i6wTGDkXMDKsYlQvTi0qSy3SNddLKspMzy jJTczM0TU0MNbLTS0uTkxPzUlMKtZLzs/dxAj0FwMQ7GBs/O50iFGSg0lJlLes/nuEEF9Sfkp lRmJxRnxRaU5q8SFGGQ4OJQnepzOAcoJFqempFWmZOcDAgUlLcPAoifAqzgRK8xYXJOYWZ6ZD pE4xKkqJ84qCJARAEhmleXBtsGC9xCgrJczLCHSIEE9BalFuZgmq/CtGcQ5GJWFeJZApPJl5J XDTXwEtZgJaHBHwBWRxSSJCSqqBMeHt69c655t+O9/R+2hQPmlaIFes/4J+4Y1LTv3ffe5D6c z4IyWBsVZMfQ8Erk8zLIuPvHFb6v3Ut1Yvtto0elzrTfhkaPBC5NLrX6xyJhtSFP75Xqk1tWb znLAv6MTHfWUn383ay9x84vpTqa3Xj0TyZXnEtUX4qzyK/CSw/MzT2Qk9KxgfFyqxFGckGmox FxUnAgA3y+sWUQIAAA== X-Env-Sender: julien.grall@arm.com X-Msg-Ref: server-14.tower-31.messagelabs.com!1492621998!96408404!1 X-Originating-IP: [217.140.101.70] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 9.4.12; banners=-,-,- X-VirusChecked: Checked Received: (qmail 6036 invoked from network); 19 Apr 2017 17:13:18 -0000 Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by server-14.tower-31.messagelabs.com with SMTP; 19 Apr 2017 17:13:18 -0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6C3D5CFC; Wed, 19 Apr 2017 10:13:17 -0700 (PDT) Received: from e108454-lin.cambridge.arm.com (e108454-lin.cambridge.arm.com [10.1.206.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CBDB63F4FF; Wed, 19 Apr 2017 10:13:16 -0700 (PDT) From: Julien Grall To: xen-devel@lists.xen.org Date: Wed, 19 Apr 2017 18:13:07 +0100 Message-Id: <20170419171311.3243-1-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 Cc: Julien Grall , sstabellini@kernel.org Subject: [Xen-devel] [PATCH for-4.9 0/4] xen/arm: Properly map the FDT in the boot page table X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" Hi, Whilst doing some testing on Juno using GRUB, I noticed random early crash depending ([1]) on the binaries I was using. This is because Xen is assuming that the FDT will always fit in a 2MB superpage whilst the boot documentation allow the FDT to cross a 2MB boundary. The first patch move the code that map the FDT in the boot page table from assembly to C making easier to modify the code. This series is candidate for Xen 4.9. Whilst this early boot rework sounds scary, a user can see random early crash without this series. I chose to move all the FDT mapping code in C right now because it is less error-prone to write C code than assembly. I have tested both ARM32 and ARM64 with different position of the FDT without noticing any issue. Cheers, [1] (XEN) Hypervisor Trap. HSR=0x96000006 EC=0x25 IL=1 Syndrome=0x6 (XEN) CPU0: Unexpected Trap: Hypervisor (XEN) ----[ Xen-4.9-unstable arm64 debug=y Not tainted ]---- (XEN) CPU: 0 (XEN) PC: 0000000000264140 strlen+0x10/0x84 (XEN) LR: 00000000002401c0 (XEN) SP: 00000000002cfc20 (XEN) CPSR: 400003c9 MODE:64-bit EL2h (Hypervisor, handler) (XEN) X0: 0000000000801230 X1: 0000000000801230 X2: 0000000000005230 (XEN) X3: 0000000000000030 X4: 0000000000000030 X5: 0000000000000038 (XEN) X6: 0000000000000034 X7: 0000000000000000 X8: 7f7f7f7f7f7f7f7f (XEN) X9: 64622c6479687222 X10: 7f7f7f7f7f7f7f7f X11: 0101010101010101 (XEN) X12: 0000000000000030 X13: ffffff00ff000000 X14: 0800000003000000 (XEN) X15: ffffffffffffffff X16: 00000000fefff610 X17: 00000000000000f0 (XEN) X18: 0000000000000004 X19: 0000000000000008 X20: 00000000007fc040 (XEN) X21: 00000000007fc000 X22: 000000000000000e X23: 0000000000000000 (XEN) X24: 00000000002a9f58 X25: 0000000000801230 X26: 00000000002a9f68 (XEN) X27: 00000000002a9f58 X28: 0000000000298910 FP: 00000000002cfc20 (XEN) (XEN) VTCR_EL2: 80010c40 (XEN) VTTBR_EL2: 0000082800203000 (XEN) (XEN) SCTLR_EL2: 30c5183d (XEN) HCR_EL2: 000000000038663f (XEN) TTBR0_EL2: 00000000f4912000 (XEN) (XEN) ESR_EL2: 96000006 (XEN) HPFAR_EL2: 00000000e8071000 (XEN) FAR_EL2: 0000000000801230 (XEN) (XEN) Xen stack trace from sp=00000000002cfc20: (XEN) 00000000002cfc70 0000000000240254 00000000002a9f58 00000000007fc000 (XEN) 0000000000000000 0000000000000000 0000000000000000 00000000007fc03c (XEN) 00000000002cfd78 0000000000000000 00000000002cfca0 00000000002986fc (XEN) 0000000000000000 00000000007fc000 0000000000000000 0000000000000000 (XEN) 00000000002cfcc0 0000000000298f1c 0000000000000000 00000000007fc000 (XEN) 00000000002cfdc0 000000000029904c 00000000f47fc000 00000000f4604000 (XEN) 00000000f47fc000 00000000007fc000 0000000000400000 0000000000000100 (XEN) 00000000f4604000 0000000000000001 0000000000000001 8000000000000002 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 00000000002cfdc0 0000000000299038 (XEN) 00000000f47fc000 00000000f4604000 00000000f47fc000 0000000000000000 (XEN) 00000000002cfe20 000000000029c420 00000000002d8000 00000000f4604000 (XEN) 00000000f47fc000 0000000000000000 0000000000400000 0000000000000100 (XEN) 00000000f4604000 0000000000000001 00000000f47fc000 000000000029c404 (XEN) 00000000fefff510 0000000000200624 00000000f4804000 00000000f4604000 (XEN) 00000000f47fc000 0000000000000000 0000000000400000 0000000000000100 (XEN) 0000000000000001 0000000000000001 0000000000000001 8000000000000002 (XEN) 00000000f47fc000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) Xen call trace: (XEN) [<0000000000264140>] strlen+0x10/0x84 (PC) (XEN) [<00000000002401c0>] fdt_get_property_namelen+0x9c/0xf0 (LR) (XEN) [<0000000000240254>] fdt_get_property+0x40/0x50 (XEN) [<00000000002986fc>] bootfdt.c#device_tree_get_u32+0x18/0x5c (XEN) [<0000000000298f1c>] device_tree_for_each_node+0x84/0x144 (XEN) [<000000000029904c>] boot_fdt_info+0x70/0x23c (XEN) [<000000000029c420>] start_xen+0x9c/0xd30 (XEN) [<0000000000200624>] arm64/head.o#paging+0x84/0xbc (XEN) (XEN) (XEN) **************************************** (XEN) Panic on CPU 0: (XEN) CPU0: Unexpected Trap: Hypervisor (XEN) (XEN) **************************************** Julien Grall (4): xen/arm: Add BOOT_FDT_VIRT_END and BOOT_FDT_SLOT_SIZE xen/arm: Move the code to map FDT in the boot tables from assembly to C xen/arm: Check if the FDT passed by the bootloader is valid xen/arm: Properly map the FDT in the boot page table xen/arch/arm/arm32/head.S | 14 ---------- xen/arch/arm/arm64/head.S | 13 ---------- xen/arch/arm/mm.c | 61 +++++++++++++++++++++++++++++++++++++++++++- xen/arch/arm/setup.c | 10 +++++--- xen/include/asm-arm/config.h | 16 +++++++----- xen/include/asm-arm/mm.h | 2 ++ xen/include/asm-arm/setup.h | 3 +++ 7 files changed, 82 insertions(+), 37 deletions(-)