From patchwork Mon Aug 12 17:29:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 171112 Delivered-To: patch@linaro.org Received: by 2002:a92:d204:0:0:0:0:0 with SMTP id y4csp3121726ily; Mon, 12 Aug 2019 10:33:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqycCoVmzd0Fd4N4ZA4ykIJ5BAkJB6gcf3KzCbDntM7iUcEzEK+OHLRakfVeab6EK/ikgWPq X-Received: by 2002:a6b:f002:: with SMTP id w2mr24531176ioc.104.1565631110424; Mon, 12 Aug 2019 10:31:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565631110; cv=none; d=google.com; s=arc-20160816; b=ullbrhwR/gxWvTZZixjAYrKwtkgSuUu3W8HsNTqXp/oc/ug89Dn4ER/Ys2oNfkrKk6 RlInUDcLwa0hW/291a/271GPqI4pgXJlrr4QOXN6JbTF5blDQYZjyupM3t70tIvJ4nMw UZZk31CkMt12UNdURwQc5KojPX4zG/VnomtVNxiilEqxNWJnbzC5nKJptt9QBWN5el0b c+206LDvMIY7in220zNh59bL/XmDe/J1LZVGARjiSnEW9WMespDDjNbQGRlEzWZ9rTPk AKSlsC6Q0gki4dJBQX/J2MuWGslLenvULwblBIf/wXnxCbb2s/25Ft4IhRkYXIeEmMeY oHYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-unsubscribe:list-id :precedence:subject:message-id:date:to:from; bh=O8RpjugAJoh4DpIIqwJMg8dMy/m8ynhqCK+AWnsUEiw=; b=AQTjCnZAhIKUpNL1BT4au1D99rA+sznfR6VGczkRTdqr/Hyxb2DYQNGTMaEyxURkQ4 44GcBDqMNCI8s3l0zbrr+LUNLoEogPSEN5L7ZtLMUD32TVdsnEg4NJ37NGaLQlnTJ3np j8A1+dB6hX5GxT8XQF7QP2itgHo0+FzWNgxqX8uEShIpgdHn9Y/3lBfVXy7oeOfnnTuD GgEmc1vo3FQci5A5n8y+mKy6/ZSIsP4Uf1g6+vyUWotg5CdnpVA4SrmLZhuKZlF9Lj0p HLN1akTQoVNtHqITuE+2V4BWQEdKXiWAW7C9IGieHKxO7UFZnl30yuZXMRPB1UGo3mSz NP4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id u26si266045iom.108.2019.08.12.10.31.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 12 Aug 2019 10:31:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hxE9P-0006gI-2D; Mon, 12 Aug 2019 17:30:31 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hxE9N-0006g3-00 for xen-devel@lists.xenproject.org; Mon, 12 Aug 2019 17:30:29 +0000 X-Inumbo-ID: e004c308-bd26-11e9-8980-bc764e045a96 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTP id e004c308-bd26-11e9-8980-bc764e045a96; Mon, 12 Aug 2019 17:30:27 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4787E15AB; Mon, 12 Aug 2019 10:30:27 -0700 (PDT) Received: from e108454-lin.cambridge.arm.com (e108454-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 94D423F706; Mon, 12 Aug 2019 10:30:26 -0700 (PDT) From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 12 Aug 2019 18:29:51 +0100 Message-Id: <20190812173019.11956-1-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 Subject: [Xen-devel] [PATCH v3 00/28] xen/arm: Rework head.S to make it more compliant with the Arm Arm X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Julien Grall , Stefano Stabellini , Volodymyr Babchuk MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Hi all, This is part of the boot/memory rework for Xen on Arm, but not sent as MM-PARTx as this is focusing on the boot code. Similar to the memory code, the boot code is not following the Arm Arm and could lead to memory corruption/TLB conflict abort. I am not aware of any platforms where Xen fails to boot, yet it should be fixed sooner rather than later. While making the code more compliant, I have also took the opportunity to simplify the boot and also add more documentation. After this series, the boot CPU and secondary CPUs path is mostly compliant with the Arm Arm. The only non-compliant places I am aware of are: 1) create_page_tables: Some rework is necessary to update the page-tables safely without the MMU on. 2) The switches between boot and runtime page-tables (for both boot CPU and secondary CPUs) are not safe. All will be addressed in follow-up series. The boot code would also benefits another proof read for missing isb()/dsb(). For convenience I provided a branch based on staging: git://xenbits.xen.org/people/julieng/xen-unstable.git branch boot/v3 Cheers, Julien Grall (28): xen/arm: lpae: Allow more LPAE helpers to be used in assembly xen/arm64: head: Remove 1:1 mapping as soon as it is not used xen/arm64: head: Rework and document setup_fixmap() xen/arm64: head: Rework and document launch() xen/arm64: head: Setup TTBR_EL2 in enable_mmu() and add missing isb xen/arm64: head: Introduce a macro to get a PC-relative address of a symbol xen/arm64: head: Fix typo in the documentation on top of init_uart() xen/arm32: head: Add a macro to move an immediate constant into a 32-bit register xen/arm32: head: Mark the end of subroutines with ENDPROC xen/arm32: head: Don't clobber r14/lr in the macro PRINT xen/arm32: head: Rework UART initialization on boot CPU xen/arm32: head: Introduce print_reg xen/arm32: head: Introduce distinct paths for the boot CPU and secondary CPUs xen/arm32: head: Rework and document check_cpu_mode() xen/arm32: head: Rework and document zero_bss() xen/arm32: head: Document create_pages_tables() xen/arm32: head: Document enable_mmu() xen/arm32: head: Move assembly switch to the runtime PT in secondary CPUs path xen/arm32: head: Don't setup the fixmap on secondary CPUs xen/arm32: head: Remove 1:1 mapping as soon as it is not used xen/arm32: head: Rework and document setup_fixmap() xen/arm32: head: Rework and document launch() xen/arm32: head: Setup HTTBR in enable_mmu() and add missing isb xen/arm: Zero BSS after the MMU and D-cache is turned on xen/arm64: head: Introduce macros to create table and mapping entry xen/arm64: head: Use a page mapping for the 1:1 mapping in create_page_tables() xen/arm32: head: Introduce macros to create table and mapping entry xen/arm32: head: Use a page mapping for the 1:1 mapping in create_page_tables() xen/arch/arm/arm32/head.S | 601 ++++++++++++++++++++++++++++++--------------- xen/arch/arm/arm64/head.S | 438 +++++++++++++++++++++------------ xen/arch/arm/mm.c | 25 +- xen/include/asm-arm/lpae.h | 10 +- 4 files changed, 716 insertions(+), 358 deletions(-)