From patchwork Mon Mar 13 10:55:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Chen X-Patchwork-Id: 9620503 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D3A9A60414 for ; Mon, 13 Mar 2017 10:59:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C3F5528455 for ; Mon, 13 Mar 2017 10:59:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B726C28458; Mon, 13 Mar 2017 10:59:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B89732843F for ; Mon, 13 Mar 2017 10:59:13 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnNf4-0000K1-9m; Mon, 13 Mar 2017 10:57:10 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnNf2-0000GK-MA for xen-devel@lists.xen.org; Mon, 13 Mar 2017 10:57:08 +0000 Received: from [85.158.137.68] by server-8.bemta-3.messagelabs.com id B2/23-00609-40B76C85; Mon, 13 Mar 2017 10:57:08 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJKsWRWlGSWpSXmKPExsWSoc8QqctcfSz C4MY1YYslHxezODB6HN39mymAMYo1My8pvyKBNWPPuyXMBbuUK/a//s7awLhfqouRi4NFoIFZ 4t66P4wgDqNAP6PE+e4jbCCOkEALk8SZ66+BHE4ONgFFid6JjSwgtoiArMTqrjnsIDazQDOjx LqfbiC2sICvxL63y8FqWARUJa6+7APq5eDgFXCQ+HKoHiQsISAncfNcJzNImBMovHphKEhYSM Be4teDLkYQm1dAUOLkzCcsENMlJA6+eMEM0Sov0XvsF9idEgIdjBIL/3xhg2iWlZh+5ywjRJG vRMuOf2BrJQSUJU61+EGY0RI7fwVBVOxlk3j/VQRizCVmiX1blrOCJPgEhCS2P9jDBFGUI7Hw /Q4o21Pi09cjUOPXMklc+WYB0byQTeL49R52iISMxNrzU6GO+8YssX3bbShnG7vEtZ+nWSCcB jaJZ6cuMkFCS0ri/Y6TjBMY1WYheXsWkrcXMDKtYlQvTi0qSy3StdRLKspMzyjJTczM0TU0MN bLTS0uTkxPzUlMKtZLzs/dxAhMBvUMDIw7GF//dDrEKMnBpCTK28B3KEKILyk/pTIjsTgjvqg 0J7X4EKMMB4eSBO/FEKCcYFFqempFWmYOMC3BpCU4eJREeI+CpHmLCxJzizPTIVKnGHU5dhw9 8oZJiCUvPy9VSpx3PkiRAEhRRmke3AhYirzEKCslzMvIwMAgxFOQWpSbWYIq/4pRnINRSZj3E sgUnsy8ErhNr4COYAI6YhrfQZAjShIRUlINjHnOYU4rPRk8irvXPz07957K49Q33dUr9G7F1o Ysb7uUILLW/Jloy67gv6/C5vWXCj9c0bhaXZ/v5twepSDpDUZX7mXP/Jh2R1l5qZ8Jyz033ZX xWRO/f+1pzH7rdK1vy+JFYnfasq4XPb5lvj7tdV3qjrs57K8Zmw9zd+2XqsrttZq5LWFTjhJL cUaioRZzUXEiADhQk/+MAwAA X-Env-Sender: Wei.Chen@arm.com X-Msg-Ref: server-8.tower-31.messagelabs.com!1489402626!90000696!1 X-Originating-IP: [104.47.0.89] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 55353 invoked from network); 13 Mar 2017 10:57:07 -0000 Received: from mail-he1eur01on0089.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.89) by server-8.tower-31.messagelabs.com with AES256-SHA256 encrypted SMTP; 13 Mar 2017 10:57:07 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=z+hxf2eiafXd7WpElRdXyL4PZEEb6HLhMd/Sfb8xn1A=; b=Ql73sfxoCUTNEX9w6HY/hG/7UFQKYY5GvzPpsOkBmfdrjQeM5oEbxY89mRBrz+pSffnMgAf+pgK4p+n6KZH+1B53aN2bBtUkVJ2Q7M08v2a0g9weXkIabzFGp8VXvHKk42i6+gntgS4LtA2Knkgi1MKpn4FxULXZhBBMOlCdXrI= Received: from P300.p300.shanghai.arm.com (113.29.88.7) by VI1PR08MB0591.eurprd08.prod.outlook.com (10.163.169.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Mon, 13 Mar 2017 10:57:03 +0000 From: Wei Chen To: Date: Mon, 13 Mar 2017 18:55:58 +0800 Message-ID: <1489402563-4978-14-git-send-email-Wei.Chen@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1489402563-4978-1-git-send-email-Wei.Chen@arm.com> References: <1489402563-4978-1-git-send-email-Wei.Chen@arm.com> MIME-Version: 1.0 X-Originating-IP: [113.29.88.7] X-ClientProxiedBy: KL1PR0302CA0017.apcprd03.prod.outlook.com (10.170.160.27) To VI1PR08MB0591.eurprd08.prod.outlook.com (10.163.169.21) X-MS-Office365-Filtering-Correlation-Id: 02aad6b1-5223-4071-5f96-08d469ffb028 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:VI1PR08MB0591; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 3:GTwRKR5Nx1nhYhnjHwZImlZmhOfjurLawHYP9ac4S+zHNI2jdPa6LkpWrp4kQ1d/UVjCvl7OU7LN9/BtdWqKlz+mp2zb+HGmKO5uqowOnf30cR/5eRIjsgQg0kb3Oa/xoc9dP4S8qzMVD3AnxadNI4swe3sI/eBFus6F1STgayadA/SCPBheb+jDwjAwX5P4zMJysYDDaq7QYw+RaTeJp0n7XM9Bs6QuoB41CP7Cky/7R3GxDNUmPw5ZLjL8mxvkcEVtjZbmlGJhQy32CqGgPld3CewzJ/6zCIL10astCxo=; 25:I5dA8V/phwAl4uomOjRqyADSpUyGqho/N4/JzimE+FHGwlThZoWfyw+jLJiP7t0IEkbS3UaOGToTOCsQhPNpdYjZIFVJyZqXrBbPsg3ASeAQjxs4HBuuCu1KBichhiU7oAZiD1C3I0iwzrAxwo6XoktH7/dD9n8T3N5hfaJA9QbPpAnq1OcoYerphJGtFWNrY5c7NWAm6bfk9xrxulUZbCUbYOaxFkcnK8OIA2yU0ru0oF8qI1O5Io5kkrnr/77Y9RM/32FBY3ylHORsT5GDQXjeGYlN74hCDoS67ZT3xWuFNrg0Iuau1SuajUA7Yify++zxznyYfnTP0bVoaIfpTE48KJrXVct9JbYay0AJXvl2p7kU6h6LM3p5rbsK4/v80Kr5mWFbC6fqswSd7d0QEX8ed6k6oEI57GVpt1TIqHJVdsvmuZWLuSewDMYDqfefcdVDbueFeBimf9bf4ihOHg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 31:RnC9pSMLJPSHET3rLIcKlPBolnCZ82B48b7HSHInwbaMKghGFC24asOoY+AciB+BiwZKVjMMzGKnbi/BgYInXJfEoAZ8O2/cEpsO3W2YNTFhzfmQJ9F5sukm5zfSOayckveFeXloU4UeLFPWPZfuPcPtm/JGqFkF8svwJJA521qqxFuoBpY1K9CAcGmSoyU8rAc8f7wOBHWDBCh8YIAPeMyoIGXqKI1kyEF/SHKB1u8=; 20:93Z6eVzyvQO96UeeLiA3Kbz8L0pPdXqUPKWOcLfa41UoVEmqUbjpetexaXKzdWgQgYSF16Cxf/SD6ef5F6euBmki4YSn1XvJikb4pbcMChEjsuteHeMp1juShvy4o5NvjKs8WH21fsRpIgxUl0rmeQMW34ZGyM0d6JXuZhpD6HQ= NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(20161123558025)(6042181)(6072148); SRVR:VI1PR08MB0591; BCL:0; PCL:0; RULEID:; SRVR:VI1PR08MB0591; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 4:66u9+DmGk8g68mGVmtxhRZnrI50JpdPi4Y2J5HhYbO/vogD7OKjuPr3fyCINm4NunWwhKiJldmHPAXfBSQKcr+DK7hXK8ht+e4XWJcdUuOQTJGue92/YLf9CvOLNoPsHe3iCOqvgZANmq7HK8NWTUsMWQmbJI4q85sKTRHr2xhubAPWX5taXoogKBxzzMEYlO0pyV6yNNqUUk0gp8lss/aUPb46molI2WVQyqM2EbJz404moddE+iLK4GJ7fM3xwIXVr2cUdpu9IcGqvTAWCv/6IQlpjCbyGjcQG47KIilN6hmbnA/BhqnasNWoNPwt0omlpNW890JZrqhRz9CDpMjVOz7IclRaBO0R6zw0RvZcSe6iI07wOrQ3X1T0xjSALjGgd79ULdc0SZwemrAtuC1J9pWXjrUk1Hfnz47FOdYKd2l7TRjwZg3Ux3ExvNsZ7pvBb0xJbF4zFKaQOZAcLtay3rmGf5ON+6vK8FLwqEM9FYXu1NRTGC5f4GOrA31HUzVHuCmcsh/ttRo4bMSrAB8Hpgw1BybOY7MjvuRmOuVDWiWp/YvQ8u87/Qx77HmUGBEM/tZOlyIn9fQSFZ49SPcoWRqsUysitaxNjXzSobRxs8aOcHdn0vW8uqG1qWLw6s8QXF2arLHtxqE5KkQlOLA95a50ksiKVA6I+XT57ShBAqZQV0Nw+6fbhEAoxNI9F9/7hizq+IANGXKOHSvf/cTdXTNr41S8FTVHjUUplbRc= X-Forefront-PRVS: 0245702D7B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(86362001)(575784001)(6486002)(5003940100001)(47776003)(25786008)(5660300001)(54906002)(2351001)(53936002)(4326008)(81166006)(6116002)(50466002)(2906002)(8676002)(189998001)(3846002)(7736002)(48376002)(110136004)(66066001)(38730400002)(305945005)(36756003)(6666003)(2950100002)(6916009)(50986999)(50226002)(42186005)(76176999); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB0591; H:P300.p300.shanghai.arm.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 23:McImbw1fgHfc5u1WsyDigoBNoI9XeUIMGzIllyK4ry0JO6nPrBQ057VdisNcOSmohTdDNbglmy5Nrt0oW4TfidjtuMXVoHfT1k0f8YhiAknLt36Bj3NSDiJ1F4yXnyR8dqRd8X4tACy9O+ROi9XFhQ2VSJNHmDLYCexXtM0dJN2efOBKzwEbYAEbYYvZ7V98O38V5pPEocHK/OMr3jwQKI7H1F5fqBxM5etF6JDY9jAd7ebmJ/tirBTRZm6GqIHTiYm6ZJ+9pBuZSYg+B5eccGlrT3y2NkDsYgRi7QjLx96qkJgq1I/5gVeBdo+TvHY84kTpFHbBOHXCqKldLFAXeBg5uMIOLEWhsxYKu0+qzNeCpYfs0V2l3JyI3Qp1Cd9F9cDsrruhVQ948PS/nK5pK2qGd077TssZ+2tvyGWS7dCQpRaQXkV6WxhKsSnCvogUlpwiLOpcR0VMTgq2Jii3uyD2KXo7pxsKcfNxJItdDTK2UE3kc8YfT+siVorJ/NhBxMl0p3vskc8DjdAy+6qC3xIbZ/z0c2lAQ1+ugp5YoZ2i9pomdnFCsPU4DWYuo63zEYi9/+Re6DwhBJ0qbzg+2AYUN5SSUHrw3irPHlGc5OZEEQeW2zlp7r4RU997mjJEPosEpdUghZpXMT1tLEdOwNlyp4o3gpAx29IWznzB0KeIHNaYr06+87A0fc0Z02qsj+JI6upA7seYAX5ajsibKFfHI62S1DAZqkEmHQfe5Rg18EMsAq7SJw9Bw5DZCNIIrxmQhtSQvnVGFhCSY6pzk0i6xVaNIT5DV629z5MiA8u0uXXrlKlfho98jfb8TQN2z2CKP59rhcCqDOe2NRGuqZgS5tan/aB3JS7i3OuurthpXj/op23SDfDpXV8zQ3tT X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 6:Eg4wmKWSHqRUBV6SazIRUMRv7o5vsLlv4tUv6gX0EBGLfoKHcdfUs/Txz6GmybuM+JB/Qs0qmB1CLphrrQYq8+SKTf99teu0Zjmafx3bgoOiNMkXDff/PxY5n/HjWXZ0R1v1EqCMfL0sYfM+JpGdWJpugsgu3RrbdS1Zvb/IHasL9I7shauhKOAiAA+b6vzbtK1HvilTk1JhrUJE63D8Gwzn/XxzVBnEN/CuNM3+8FGnyXX+Kg3kCFZmaTMKWjYSihua3wMUZY54wzY+XkWSyL0UZszGcBt+drE6ayhEfzKg6eI6fJLNU2c9YGQrfuWZ+y+syoKi6APiOx2Q1XRtXjUaFJ5TlRnGq56z7DIbFvZkdGUVWoOntNDNRJeU8ENRb7vBQT/5zYd04wexaGJFVGSpJHZtlzmCgv91p0yY/l0=; 5:gRjgZ0upo9RlYOTSxrrQE2XIMUkqv8q0/t31M/UpXYzJrIC1s4Vk6v7vSlJwtmXTyaILHTbymtpcB1XT2SGwiqvbXLfGqK7IG6dNvnb1gj9YClzpgiz1tgoJqEuc77vPliYdR4CkQm6yteHtCA9ZRn29MHcmtA7obGeDoYh4NdY=; 24:P8xzWRuN0isT5aGzkR9Hldwp3BeHyvBj6p4h+EkrcG8im+yjx9rQgNUxOkfhG79iTDc9FYalAeD6RX+FajlxpOzGktPZFjVgBL2P/AsXzFk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0591; 7:wK4DKi0bz/aTT/urUZTVmeHgDroh3QnaUZT7TNNMTHaOSXZW6pxWFCkKW0NvPaePF7Zj5JiT8HROhoZbHgGi/lQF2MOn2MUlG0zFXL4yH7a1nOjDI6nIvwRnEU3wWGvx3N6GF+oIxysth5llntE6EuAEAMcTtYpwH03qusVilJQx2fj1dt8mh2mOCVoy+tB88N26+4FJFrpYpQFr/kaiddXPM6B3YDYnqKpsW8Rg0hQwY7zQ0l3EeyuRNrG4jaV7oimfeCAV55NTIdJu5GAuvdlPjgd2mLzqjR41XO5FtlRIEZL9qpQfnjBywyaWONVNvaTc9fgSbDGoX8CpKTwY9w== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2017 10:57:03.2219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0591 Cc: sstabellini@kernel.org, wei.chen@arm.com, steve.capper@arm.com, Kaly.Xin@arm.com, julien.grall@arm.com, nd@arm.com Subject: [Xen-devel] [PATCH 13/18] xen/arm: Replace do_trap_guest_serror with new helpers 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: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP We have introduced two helpers to handle the guest/hyp SErrors: do_trap_guest_serror and do_trap_guest_hyp_serror. These handlers can take the role of do_trap_guest_serror and reduce the assembly code in the same time. So we use these two helpers to replace it and drop it now. Signed-off-by: Wei Chen Reviewed-by: Stefano Stabellini --- xen/arch/arm/arm32/traps.c | 5 +---- xen/arch/arm/arm64/entry.S | 36 +++--------------------------------- xen/arch/arm/traps.c | 15 --------------- xen/include/asm-arm/processor.h | 2 -- 4 files changed, 4 insertions(+), 54 deletions(-) diff --git a/xen/arch/arm/arm32/traps.c b/xen/arch/arm/arm32/traps.c index 4176f0e..5bc5f64 100644 --- a/xen/arch/arm/arm32/traps.c +++ b/xen/arch/arm/arm32/traps.c @@ -62,10 +62,7 @@ asmlinkage void do_trap_prefetch_abort(struct cpu_user_regs *regs) asmlinkage void do_trap_data_abort(struct cpu_user_regs *regs) { - if ( VABORT_GEN_BY_GUEST(regs) ) - do_trap_guest_error(regs); - else - do_unexpected_trap("Data Abort", regs); + do_trap_hyp_serror(regs); } /* diff --git a/xen/arch/arm/arm64/entry.S b/xen/arch/arm/arm64/entry.S index 113e1c3..8d5a890 100644 --- a/xen/arch/arm/arm64/entry.S +++ b/xen/arch/arm/arm64/entry.S @@ -178,40 +178,10 @@ hyp_error_invalid: invalid BAD_ERROR hyp_error: - /* - * Only two possibilities: - * 1) Either we come from the exit path, having just unmasked - * PSTATE.A: change the return code to an EL2 fault, and - * carry on, as we're already in a sane state to handle it. - * 2) Or we come from anywhere else, and that's a bug: we panic. - */ entry hyp=1 msr daifclr, #2 - - /* - * The ELR_EL2 may be modified by an interrupt, so we have to use the - * saved value in cpu_user_regs to check whether we come from 1) or - * not. - */ - ldr x0, [sp, #UREGS_PC] - adr x1, abort_guest_exit_start - cmp x0, x1 - adr x1, abort_guest_exit_end - ccmp x0, x1, #4, ne mov x0, sp - mov x1, #BAD_ERROR - - /* - * Not equal, the exception come from 2). It's a bug, we have to - * panic the hypervisor. - */ - b.ne do_bad_mode - - /* - * Otherwise, the exception come from 1). It happened because of - * the guest. Crash this guest. - */ - bl do_trap_guest_error + bl do_trap_hyp_serror exit hyp=1 /* Traps taken in Current EL with SP_ELx */ @@ -267,7 +237,7 @@ guest_error: entry hyp=0, compat=0 msr daifclr, #2 mov x0, sp - bl do_trap_guest_error + bl do_trap_guest_serror exit hyp=0, compat=0 guest_sync_compat: @@ -309,7 +279,7 @@ guest_error_compat: entry hyp=0, compat=1 msr daifclr, #2 mov x0, sp - bl do_trap_guest_error + bl do_trap_guest_serror exit hyp=0, compat=1 ENTRY(return_to_new_vcpu32) diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index 48cfc8e..44a0281 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -2899,21 +2899,6 @@ asmlinkage void do_trap_hypervisor(struct cpu_user_regs *regs) } } -asmlinkage void do_trap_guest_error(struct cpu_user_regs *regs) -{ - enter_hypervisor_head(regs); - - /* - * Currently, to ensure hypervisor safety, when we received a - * guest-generated vSerror/vAbort, we just crash the guest to protect - * the hypervisor. In future we can better handle this by injecting - * a vSerror/vAbort to the guest. - */ - gdprintk(XENLOG_WARNING, "Guest(Dom-%u) will be crashed by vSError\n", - current->domain->domain_id); - domain_crash_synchronous(); -} - asmlinkage void do_trap_hyp_serror(struct cpu_user_regs *regs) { enter_hypervisor_head(regs); diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h index 885dbca..afad78c 100644 --- a/xen/include/asm-arm/processor.h +++ b/xen/include/asm-arm/processor.h @@ -707,8 +707,6 @@ void vcpu_regs_user_to_hyp(struct vcpu *vcpu, int call_smc(register_t function_id, register_t arg0, register_t arg1, register_t arg2); -void do_trap_guest_error(struct cpu_user_regs *regs); - void do_trap_hyp_serror(struct cpu_user_regs *regs); void do_trap_guest_serror(struct cpu_user_regs *regs);