From patchwork Fri Mar 31 13:07:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Chen X-Patchwork-Id: 9656353 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 0D5C760351 for ; Fri, 31 Mar 2017 13:10:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C5E8427F93 for ; Fri, 31 Mar 2017 13:10:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA67A28643; Fri, 31 Mar 2017 13:10:54 +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 1EF3327F93 for ; Fri, 31 Mar 2017 13:10:53 +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 1ctwI7-0007zk-NS; Fri, 31 Mar 2017 13:08:35 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctwI5-0007y6-VZ for xen-devel@lists.xen.org; Fri, 31 Mar 2017 13:08:34 +0000 Received: from [85.158.137.68] by server-11.bemta-3.messagelabs.com id 36/D7-23940-1D45ED85; Fri, 31 Mar 2017 13:08:33 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSbUhTYRTuvfduu5VXrlPzuLSPVUjRNLEfhTC lHyVBIWi06kde67Y73Ifcu2IF0cQKGkaOyrI0ZYl9UdgH09IGGaJZCycUZk1LBaU0WGSypOi+ XTV7fz3P+5zznOfAoUntL5WO5l1OXrRzVr16ESVkoN2GnsIB04abtUs2NUSuU7kor6N1mshHe 1UWe7HDVaQSGl/d1ZQ+THFFG39SbuRO8qCFNMW6Seh8bsZYyzYS8KGC8qBFMu4koDZ8C2GC2F 4ErR3VpKIEEJSNds0QLwEjba+RQuoQ9JyLENhMza6Es94yCuMENhXueGo0GJNsOYJ70a0Yx7M m+OIfVXsQLQdZA97ACfzNsEaYGDuFMAZ2Gbx7fYbEeCGbA71BH6FkNULU/Vij1MfBi+oRSrEH eDY2Rio1qXDpQ3DGJxnevuvR4FHAroLukztxZGBDFFR8uUoq5JEK3nv6CaVhB7T4rqoVXIMgc HmdUhSk4FstFjAJqGFqeOzv6FhWC80f2whF8BPQfO+8Smm3QoV/iFJwNoSq6ma6y0kINfjVlc hwZd4eV+btUY+I2yhN4sUjvGjISi8WLWbBaeMsVkPmhqx0Gy9JnJm3csVS+gGH7QGST2GB/Fp Q+fct7SiZJvSJzNRw2KSNLXYcPCpwkrBfPGzlpXaUQtN6YH4WDJi0cSJv5l2HLFb5nmZloGP0 CUy+fFFaRirlbJLFrEjdyED3u9vGCS1ld9h5XRLzFXuwuEg4bJ+zmL3KXpSqi2eQHEobU8qLN ovzf/0zSqKRPp65hl1iLHbn3KTPcghCDrFpMoxDOLl/ks6NBje+1FTezm6fuHja2FWi8V+40T oRSGlaUWTz5TJN0UlzS2IE+gocEE6r7cpKK5y+Hxn3OvvWdsZvX23qerNvkl1/xHg8o2NKWPz Sf2yXejn5/XfmHv+PPH1Zx46vAxrxaVzVzcHpbSutQ+HNhvrQp/xQzrEnvrQgWaNeWjIt6ClJ 4DLXkaLE/QEdo/ijkAMAAA== X-Env-Sender: Wei.Chen@arm.com X-Msg-Ref: server-5.tower-31.messagelabs.com!1490965712!89978599!1 X-Originating-IP: [104.47.1.87] 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 25638 invoked from network); 31 Mar 2017 13:08:32 -0000 Received: from mail-ve1eur01on0087.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.87) by server-5.tower-31.messagelabs.com with AES256-SHA256 encrypted SMTP; 31 Mar 2017 13:08:32 -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=Nhubrs8fOtF8qhcHNG38VtQO8kiat9bFseFPjWz2qog=; b=JKdah520zpo7dL3OjYujZg/r/U8IUMZk9SyWf5X79bMmzfNA0uwHtj19j81RzMY9skTD05kY99z13wDKJ5dxTKtTbP9wJR7RfdNVeKXkLaMAlCVUq7klq73JOhj6ik6H5FdVkWgoKOm+uQ5O20+oOLb5PInNT4hHaDhBFX1+D5U= Received: from DB3PR08CA0042.eurprd08.prod.outlook.com (2a01:111:e400:503c::52) by AM3PR08MB0216.eurprd08.prod.outlook.com (2a01:111:e400:8853::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.14; Fri, 31 Mar 2017 13:08:31 +0000 Received: from DB5EUR03FT012.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::206) by DB3PR08CA0042.outlook.office365.com (2a01:111:e400:503c::52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10 via Frontend Transport; Fri, 31 Mar 2017 13:08:31 +0000 Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 217.140.96.140 as permitted sender) receiver=protection.outlook.com; client-ip=217.140.96.140; helo=nebula.arm.com; Received: from nebula.arm.com (217.140.96.140) by DB5EUR03FT012.mail.protection.outlook.com (10.152.20.161) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1005.5 via Frontend Transport; Fri, 31 Mar 2017 13:08:30 +0000 Received: from P300.p300.shanghai.arm.com (10.1.2.79) by mail.arm.com (10.1.106.66) with Microsoft SMTP Server id 14.3.294.0; Fri, 31 Mar 2017 14:08:12 +0100 From: Wei Chen To: Date: Fri, 31 Mar 2017 21:07:44 +0800 Message-ID: <1490965679-619-5-git-send-email-Wei.Chen@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490965679-619-1-git-send-email-Wei.Chen@arm.com> References: <1490965679-619-1-git-send-email-Wei.Chen@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:217.140.96.140; IPV:CAL; SCL:-1; CTRY:GB; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39450400003)(39840400002)(39860400002)(39400400002)(39410400002)(39850400002)(2980300002)(438002)(199003)(189002)(86362001)(38730400002)(50986999)(110136004)(48376002)(76176999)(6916009)(8676002)(8936002)(305945005)(50226002)(356003)(189998001)(5660300001)(47776003)(5003940100001)(6666003)(54906002)(2950100002)(104016004)(77096006)(2351001)(36756003)(106466001)(2906002)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR08MB0216; H:nebula.arm.com; FPR:; SPF:Pass; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB5EUR03FT012; 1:ENT6Ry4e6zO4ZXp+b5j7T2ddNykuiG5n4XwbGfnE3yp69RS5BYvipzzQCQ5vkBRi1OseUVEeLQBC+UjrAA8E27jLD/bDXPsFYjJuwFVxkoO/Bm99OphykwL5s8jjyOsjyQu1U+byhzq+iLmL2JI2aWv+TXdrxr1TkcBxy97nUp4AAzDmoUQ3SRlWhqvQm00N3lxb89LdWyJjzmP+/3V+npq5TCUM9IBBZngF+HmNZwJFYJSZEgmeZwg1EeHnlzmIp5jFyX57mjYILq88MhBhrRKDqGRJ+fhWIq7GKj2YnLzlk2KwpGTGV3Sf5g02tJRBbxhunbGlmAO+XYHny1DzeWV8ssdEVSRw4GTF5yg3SJoX8GnmbRBkIqE1I/TIGSwRxwFg1tVtAf1HITwqFH6PZn5edALVucf3EEm4BFyZlT9ufXQwWUH/yJeSvbvB4xIZyBA08w4NoBrh/P362QIKmX4m9peZ01oPUlYyC2Zpj4lsqyCqvXcLJ3hcrC0u3di3zgMxGoteTIiaDhmKffnO8Slmg8kSdmw2lwIPCF+x8Bogr8LSStNzY4FaTLMCrTh2P3Lw5l8bKKfnQHhIKLw5aV/fmp6jDHeBN3sgUZf+EKNRi0l+YOKcR25UmLjUNf0b X-MS-Office365-Filtering-Correlation-Id: 65581655-ec7f-4510-e946-08d478370752 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:AM3PR08MB0216; X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 3:4hQ71x5PZUSCspWdIFEaDo8eQX2w9KZ4YtaWzJkP0A5spdjEHE0m3N1lspYfVaSdZSipDTLvXNs3AUy2DkVPImjymLJ0wI+Szk7qu6oYcCBvpDomjaLGDOBd9ZkGeVwSRaBSx/RbTVEDDygifUB34awIW8ievhPdRbGa/MHTQDJxKCDqBeHgxhtN0n71nuvMR42NTcXs+rA/CvC3daQWRx5PgAgUsLpj1nyGrehKldNg2zvPHYzkjdp4RupzYQDStXdBMHqUVA27Nkb+7YJNMyTxdOHCfRm/yvkRm7fvb45gCWhERbs12FK8gT6XiQm36oVOSY0RnOcOej2tHjdrTmfqkIY6CsviWrmqHlh7TSRkQEjXIICOCR9634UATULOxj6joHIzB4Ua5yTnBcztCdCVZKzGCfUvFYrzZ6Euwm/iQhGDGgtvQszc2QzicKgYc1CVK32vjBv3aZa1DUWk8OpqL5bAwI3wbCuuzVWNI1MO/CjclGty9aQgagVUqGbjMBN1PzGa+MrC47//Ar6EjQ== X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 25:7zUSicGdPYecY/wKrNtEnzqyr06QfV/GXFP8P/0Y0100doXKKmU0JjRuRq3ugWQVUqkCxXrWC4iwY/HsxfgG9Dfk4j4bfodJ0AsJvPEi+asRLRLlnsNOW9Y+pyu/OBUlJzSHpGSxNyB3tVUgqGT1wdi/7xy5o6hIgo+GjKbjyxW7yiwY9njbmLpMyHsdhNA64G3I66C1L1pKB6e3XL0tNbZobaPCy+M7+/ZYW8l3P1wpD3bxSWvU5mwLhJbgNFLKQ/C5VJasEfeHYal1kSH7zCrecg58LFW/b4TYCqSTWslGotiN5+j3vdKB9YvUgDowiyCb50Xs8Nfs4KHntGvZe/aYFPG32ciMC/IGs6Dtg0e8z27Rj/bFPHK/3nGSrYy2hPosZiQa0ftYcUtwb4u7UZN6usxgoCixv8rRobsyI2CDThwiDEtnM62mQ5/FOWoiRzEAoyilXItkfkghBqqHpA==; 31:DT52fMRo/FoyFkXsxPN5Ag5DDz7YiRr8uNTz/tjOMlR/4DmXOjGoG+msTcl5yw+iawnXsWdLtcABBj2LbZ2PxoYc3GPJQqr1PSITpSsb8CxO2mXpfQRV1gPbKp7wNgzvWkuJO/vsgaHhSZKi6fqtvMCV6u+GEMCPQrySGWPYt21Vgsgb9/k4Ep1p2FGUlNyczKXNJrm2Q+Ty3nh7zV94oelRJwMxWAbuQnQynaJxRb6Zt+t3uwF6f9OfwMjUkyMfnASBD0enuFMrlXhv5hZjtE2jtx91WXBCw/ggyX4qjAE= NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 20:4iOZhanyiVDANv3cTFvaWGBcIZKcbORTvDo8Smkcm5ZJYPfYY9oYFsf9woENqS9aNLygowUgy3PlmV5OhN3cHEaxy6vWOisftP2fTjTXwjrOTytJI4MGWNKMXhJMzIkS98PDTPeW+Q14xCrFGNYZGUEYZSIErxsErx+YEMw5kR0gya2g1h02jBxjmpn9RQUiQ8/dA/vgKCthHVYY6FSfHtK9jD0mPSQTuSt8+M+YXSJgXQd86Qb4AwvUHYDrVNFS X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13020025)(13023025)(13024025)(8121501046)(13013025)(5005006)(10201501046)(3002001)(93006095)(93004095)(6055026)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123564025)(20161123555025)(6072148); SRVR:AM3PR08MB0216; BCL:0; PCL:0; RULEID:; SRVR:AM3PR08MB0216; X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 4:hi/0CZUKx8BIF0lDiVeO0DhwNXMhpS7CkBEnjRedcmA0rwwFuaohAYRNzMsjo26SBo5PQsMuiySfJF5gEztzrhZRPRTXLSFHdQ3FhM4iZhbjWnInQg9JfY4TfyE3LOMYm4+5fKsIDMrDBIo6ppUvEqf/8Jvhfk788K8CSxXIJesfcsle329ewtmu3mAlfV1iBo+PqLI3c3EIMIIKqz5EEXUMglIwqFfwzpS0tYH85po1KNZzaVkJoKzqg43Fy7Nd8Te+ySJkK74uRCSxTT8qh1AknEZaAHQdjDEvLBff4XDaM+def24nvf8AuQ4h1n9f378xZ3G6kZU7UVJitXdWLIW/f7GlZUyXaonoiP0DaW48ERozZavU+TH+19Y10mR3dLEakFxE8MzWbMDqsS0MJFceGWLabWmN0GOv2yvPYBRGQ/bF26Nhh90ginOUdHs1Rp0EerFq6Q3wRy3p2mb72+D8KrpqG/2ti92mskOI6qyVi0nBxwm9zv2a/yyD0cgYx3dOupSw2/P6VMGdKio59GGgGJsrWAQSqsoajmIIfu+4m2GLkBtuWvuUn/ryB1OezhiFZgq/pWrrGmFGOYVmeJ17IO33wXvPbgYpVFuvpeU7I5pqTjuDnZHuqExgOKL7mtXanzQsXlA1pe9LONjP1D57WpSoy4MMSXSGC8fZoo140bc6EU58LjKQ0qcUdXZaS9eZk8dVsstdTQNUVstvgujX2Nx2n6uHNqYToeToGWhXEA48oFok3N+mMUu3s/WtZZ5lQ23zXFLZn+CIphFVgQxSv3BCjANJxw7w7Gxio4HdehY7AsLVPGeLvv4SgOwbQx1oJgyTNRq+CUiK5UK31l5udpjD4flmZa1Vk8UcmGY= X-Forefront-PRVS: 02638D901B X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 23:cWMpNzoRtWd/RjWeXMwnmNJSBIsljABUn7P5o+UHDcpAHJ7cx5WndBx+pUmMv9e0vcySkIT04t8mq7GXQI1XnfG34JOZLjC9mWR5vCxvnotMGuYIsKN+0kGxPNtKhX3FxHBpwI/MBwOrlWBTzxqleI6frF61yfi2FNkb/Mcyou8Q/VJMh5Hq0atATkUJ9vuM0ll6U82gBh48WczGM+VrYrtlgYdUnQ8hllGPC0iv2aW4HTwKSlB2VWc6brHLHRkNxU7V3HqSbSa65OqiSuXIuUMluwjR/y6KfmRekHHbxhmfj3KoE5JE0SbHFMQrsn7QhohWbFcULVF2XQpQlx0w5c86wkDB+beiXNQ9iv3rNaj0vXuYhPwjzDrfzmKhVRdMUnko7cFDampDsf2DzCshaRKaWtKyRWESh8anp1TcfCWtfpjR6qQffC6Y+CvmgwyJfM1RtCkNlToEUxWRbqBKyYnxr3VrCzzfmLxV5puzm/4biKVdKgtLVqvcEu/k16g16CPc+cMc3VRqN/6hxlayU6Wvlq8sKZ4r9oC34WgnkHD2ivDNcBWL1VNzjLVpM0YGIx9P/kPPBhFtMfbFkuF7EhMQiSxi5T/+X+SGQ9ZyQafDJMSq7qlBuyzCprMEN8UQWeM/lPBTYY8gbkHRezl88x4o6My86H+ugK+eA80ytXPgrfBiZLd9TNWmkvXQhFqCXAwYpL80BtQy2/pUUgSXxcOGRLp5s7LNW5wnHQvM737xYZ3SWpmMt8p+JU4R8kSyEYXHj5E/KralC/gQt3sD/vKUcEaqeHxfxn5zXgPHs7mg/N/wn6HfHtv2JY2k/JzWhfall9FLfvN0Jnorr622lpGb019CLJdgum3+DZY2cFJkSE0SUcYzXDcXstlEQSdUzJrG56Hh+YKReyRTu4sV7JE7EiFvJCKpP91l7mT+5t84PPjy5EtkI7vqBuXSFhG7 X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 6:TV2E8ecSZpD82QctAG9o4QchUlZCOIaE7CS9SIs7QO0urKrmJr2LDftNcC9X8OgKWexGz7oN0gUopT1jR85nFjIk5LuuAbLVKmBEMCzFRVpicwyx+vO1C6dm7dTvBZzfXuIq76twGex6FBg7fRjNfO0iWHwlRCAc842D/4YRDWUzJ6p6uTVUDbCEaSxjsj4ZN2GgXZLZ/+RhPOrUeskdK01sD5lELqlLwP6oICwOpxpoNX6crbZiZBFhJKtporkjMd0RkbKQMlq8Vkykjz9b240XOmdrF1/ivwjsrkRyXvtL5Os6SNffQ5GJR0qRgh4Xno2HCRh/Pbihxf1VMByrxKiZFmg3Kr0a6FbGhxtJG1zQxf6WDU86NvS2cJ5NcV2p0AfRr0qJtf01Z3TXoXOzyeEd5C/GWb0sSS2ARUQTh2M=; 5:RRO3W1Qy1m2O+rRQ/RH3Ci8P7aAnb3mtoUUC8uoRM+xFECxW8OK3pd71hXAFQqtDETIDOPPTmCkHh/RbIZ5LOSTuO6lZu8w4NyHk/hKTqW8XQLUGGMkWA7kxIWHiyD0hyWm8uBaYk9bQoLs9/EXCVS9F8SZISXutYU3z7kJUeDs=; 24:4102ejS8uS8kStqGUgFz1O7KANqE3g8eR4hSIUulvP0LQs5tvo9X5gYqIov43DQF6n1HKLi+iOGg0g8LFERQnfdzDn01U/ZbMhWwCh89/ig= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM3PR08MB0216; 7:OSWecZLsAVroQG+lD4tFL15YvO7nM82W45c8GxrcTp92qS2YyYRmMeri5eM7ZgX0TpytXO3z8PCK2U+5BWwSOmcIewfVKs6s9ra5MT+EXhQsKvqTmRbfYR5Erg1MZ/F4tX+fFsF7Cmc9bHV1D8kMzKDDM/MRko6IEeiWDhcrQBu957+Szaw2LKiFkYAxE/bODoBTQg01N+bTY/D8Js+Z/7Ww9RxO4wcoVhJNnP2Y3Jb+UGF00/3bzhEfgJRBnSbSQoXG/jT/nwsVHCzCWxuA/qkWKgOH0IEr1hL1lNMjcYI+lotYEe+QVlYQXeazA82L1QteWDXoKt1SoVaksFpm3g== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Mar 2017 13:08:30.4991 (UTC) X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[217.140.96.140]; Helo=[nebula.arm.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0216 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 v3 04/19] xen/arm: Avoid setting/clearing HCR_RW at every context switch 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 The HCR_EL2 flags for 64-bit and 32-bit domains are different. But when we initialized the HCR_EL2 for vcpu0 of Dom0 and all vcpus of DomU in vcpu_initialise, we didn't know the domain's address size information. We had to use compatible flags to initialize HCR_EL2, and set HCR_RW for 64-bit domain or clear HCR_RW for 32-bit domain at every context switch. But, after we added the HCR_EL2 to vcpu's context, this behaviour seems a little fussy. We can update the HCR_RW bit in vcpu's context as soon as we get the domain's address size to avoid setting/clearing HCR_RW at every context switch. Signed-off-by: Wei Chen Acked-by: Julien Grall Reviewed-by: Stefano Stabellini --- xen/arch/arm/arm64/domctl.c | 6 ++++++ xen/arch/arm/domain.c | 5 +++++ xen/arch/arm/domain_build.c | 7 +++++++ xen/arch/arm/p2m.c | 5 ----- xen/include/asm-arm/domain.h | 1 + 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c index 44e1e7b..ab8781f 100644 --- a/xen/arch/arm/arm64/domctl.c +++ b/xen/arch/arm/arm64/domctl.c @@ -14,6 +14,8 @@ static long switch_mode(struct domain *d, enum domain_type type) { + struct vcpu *v; + if ( d == NULL ) return -EINVAL; if ( d->tot_pages != 0 ) @@ -23,6 +25,10 @@ static long switch_mode(struct domain *d, enum domain_type type) d->arch.type = type; + if ( is_64bit_domain(d) ) + for_each_vcpu(d, v) + vcpu_switch_to_aarch64_mode(v); + return 0; } diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 5d18bb0..69c2854 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -537,6 +537,11 @@ void vcpu_destroy(struct vcpu *v) free_xenheap_pages(v->arch.stack, STACK_ORDER); } +void vcpu_switch_to_aarch64_mode(struct vcpu *v) +{ + v->arch.hcr_el2 |= HCR_RW; +} + int arch_domain_create(struct domain *d, unsigned int domcr_flags, struct xen_arch_domainconfig *config) { diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index de59e5f..3abacc0 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2148,6 +2148,10 @@ int construct_dom0(struct domain *d) return -EINVAL; } d->arch.type = kinfo.type; + + if ( is_64bit_domain(d) ) + vcpu_switch_to_aarch64_mode(v); + #endif allocate_memory(d, &kinfo); @@ -2240,6 +2244,9 @@ int construct_dom0(struct domain *d) printk("Failed to allocate dom0 vcpu %d on pcpu %d\n", i, cpu); break; } + + if ( is_64bit_domain(d) ) + vcpu_switch_to_aarch64_mode(d->vcpu[i]); } return 0; diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index 83c4b7d..34d5776 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -137,11 +137,6 @@ void p2m_restore_state(struct vcpu *n) WRITE_SYSREG64(p2m->vttbr, VTTBR_EL2); isb(); - if ( is_32bit_domain(n->domain) ) - n->arch.hcr_el2 &= ~HCR_RW; - else - n->arch.hcr_el2 |= HCR_RW; - WRITE_SYSREG(n->arch.sctlr, SCTLR_EL1); isb(); diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h index 7b1dacc..68185e2 100644 --- a/xen/include/asm-arm/domain.h +++ b/xen/include/asm-arm/domain.h @@ -268,6 +268,7 @@ struct arch_vcpu void vcpu_show_execution_state(struct vcpu *); void vcpu_show_registers(const struct vcpu *); +void vcpu_switch_to_aarch64_mode(struct vcpu *); unsigned int domain_max_vcpus(const struct domain *);