From patchwork Thu Mar 30 09:13:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Chen X-Patchwork-Id: 9653355 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 13C6C6034C for ; Thu, 30 Mar 2017 09:17:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EE7C328509 for ; Thu, 30 Mar 2017 09:17:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E30E62851E; Thu, 30 Mar 2017 09:17:19 +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=BAD_ENC_HEADER,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 53D1B28509 for ; Thu, 30 Mar 2017 09:17:19 +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 1ctWAb-0005u3-LO; Thu, 30 Mar 2017 09:15:05 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctWAa-0005sn-FO for xen-devel@lists.xen.org; Thu, 30 Mar 2017 09:15:04 +0000 Received: from [193.109.254.147] by server-11.bemta-6.messagelabs.com id 8D/F0-03642-79CCCD85; Thu, 30 Mar 2017 09:15:03 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSa0gUYRTtm5ldJ9mVcTX2uqTiRiHlimZFDy1 LqejpDwPrj441uWO7q8yssUU/1rRQU0y0TcXyWWBGRS4+WBW1pNrsYVKwpZIQpWZhWqKm0oyj Zd+vc+6537nnwiVxlVWuIRmLmeFMtEErdycCz+C7dLbuvriQusyIrTU/qolItL/L8RuLQSdkr CkxxZIg0391TslTa9ZZGmzNuBVl+Ocgd5KgrDjU2euRSFRUMQYN1npcIl0YXOqtIUSCqDcIHF 0li0obgvQvTxdJPgaPy4ZlEilHMN9qF8hKUk4FQF5BOiFib8oX6nLK3ESMUxkI7k3vzUEk6UX FwuRFtVgmqLVQ9bsDF7GS2g1FNodcxED5getl9kJ9pVBPLx1cqKuoSLg50yOT+j3hWcknQrIH 6BgawqUeX7je9wJJPj7wzvXaTRwL1BpwZh4RIwPVT8CVJ82ERCpk8Mte6CZ9OAy5zcNukpCHY C5/EkmkkYC3r1oXyV053L81upDDg1JB48cWTBKaMJi89gGXvFKh/FEtIeEd0GMrX1xuAoPcz9 FXka502R6ly/aoQNgdFMgz3FmG04VuC07k2CS92UizBl1oyJZgI8PzdBJjoBP54JMpxodIuIY VwmtCU7djOpEPiWlXKetv9MWpPBJTTp3T07w+nkszMHwnWk2SWlA2PBc0T45JYiynWYNwUksy kAqtt/K7KCv5VNrIs0mS5EQ6cn68fRRTEaYUE6NRK5PFJkps0qeZ/losHeYb5KvxUiIhlEqRy nBG1vy/PoLUJNJ6KcdFFwVrMv+dNCKEwIQQ6vD3Yggz/U/SWFHa/qaw7tJ2f3l8WYKj85jfCJ fFTtsuX86KCvJrSHYWRcxuVPQfinrsMz1gma8Kb4sq6Nq0L/qnJbcuY3PswKqxevXxA9v9J4t nZ1rYg2x+4Z4Ntaef4fYAa+/ThEFFVpDrpGZmp9Mycb5yLMzk9LU+YL9VV54xXzjqsrvmArJ7 tQSvp0PX4xxP/wEuSGk+kwMAAA== X-Env-Sender: Wei.Chen@arm.com X-Msg-Ref: server-4.tower-27.messagelabs.com!1490865302!93708087!1 X-Originating-IP: [40.107.3.63] 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 64062 invoked from network); 30 Mar 2017 09:15:02 -0000 Received: from mail-eopbgr30063.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.63) by server-4.tower-27.messagelabs.com with AES256-SHA256 encrypted SMTP; 30 Mar 2017 09:15:02 -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=pEHYMv3Q0PPIfflOTK3DAO/hc696U1nP0T9zuF80NDY=; b=lDlT6R0nVucRHOnSksAT/VcvbmCYoz/7yNa/tUTKaL844ALnx+rOIUVsrl3L1v7PEvl8dBKmDpV+CgRC77zkN7MqTMYlzTf3rtK/knq01KcgVuJ0oeIP2o+o/hosrvYXa3ydIMp5MmD8VoYLCV3W6LHZ8wqEdHFhnkxqQNVZ138= Received: from AM4PR08CA0031.eurprd08.prod.outlook.com (10.166.127.41) by AM5PR0801MB1665.eurprd08.prod.outlook.com (10.169.246.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Thu, 30 Mar 2017 09:15:01 +0000 Received: from VE1EUR03FT028.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::206) by AM4PR08CA0031.outlook.office365.com (2603:10a6:200:1a::41) 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; Thu, 30 Mar 2017 09:15:01 +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 VE1EUR03FT028.mail.protection.outlook.com (10.152.18.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.977.7 via Frontend Transport; Thu, 30 Mar 2017 09:15:01 +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; Thu, 30 Mar 2017 10:14:04 +0100 From: Wei Chen To: Date: Thu, 30 Mar 2017 17:13:23 +0800 Message-ID: <1490865209-18283-14-git-send-email-Wei.Chen@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490865209-18283-1-git-send-email-Wei.Chen@arm.com> References: <1490865209-18283-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)(39850400002)(39450400003)(39400400002)(39860400002)(39410400002)(39840400002)(2980300002)(438002)(199003)(189002)(104016004)(48376002)(50466002)(106466001)(8676002)(4326008)(2351001)(356003)(6666003)(6916009)(2950100002)(54906002)(8936002)(77096006)(2906002)(50226002)(36756003)(189998001)(86362001)(5003940100001)(305945005)(50986999)(76176999)(47776003)(5660300001)(38730400002)(110136004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1665; H:nebula.arm.com; FPR:; SPF:Pass; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT028; 1:qb61lxcgkoEhy+hjHLxF5YSDjwFN1jPNNsON9DhhGbynbspd6cQ/xEvXB9LMyKEcBmVRR343wSmvs9wZWZu/XAXNwiJd7QCSWlvgoXYW0inKKWazo5v65n3mnHsxTIeoQ0qpZLiKnSzuLVg94xwAeqCXFHbNY6Y5Avlk8MRuvy8Ovy2RmKSM9vIz6ijirmPfBqOZlMcLzNhXZawIILLIvHhQpghh5wzyuP/7/L+l6sTcC37LhF2kic9R3P70adwBpheWbkc9kqsdIjugXnRTqLv5/apMlxOGzKIQHzCmhEeoZUjw8p/i0PgQPrZD5nrUbItyTFTyQ2zF3phNwtondIU268GHdDn1BO7En8d0ogG7Yy2TZBURTNcMtRS5/5i5RUFsmnp9Y8QaneQqpzgjqKicgqIngDnDA/6Xdoy4mg4T5cTTgaYfrIBKXXXggO2Vgp83QVeWzHXPi+ke4ZHu/EU7hx2f9IrUhdwbA6vadWzYr16gBng1qR4WT/3d19aNdPbEYfZg4tsZnRg4ccabxyf5sNCdEMMjzcH15xGb3y+LKeJtK/kWE7HS+R3tXjYl/Rr+DcHcRps0AwMgcBbkRALay+JTB/e2q1hdctiKcNk= X-MS-Office365-Filtering-Correlation-Id: f2cb4e4b-ada1-42a7-266e-08d4774d3ed5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081); SRVR:AM5PR0801MB1665; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 3:LPmmMYukr37jV/Z5VZz3bw3jxhkkzk1dZ6lMwXDSE7dffQjKZQTHtcZZBpU9+DcO+obAsnG2qzp9CCUQpRZktK2GyWXWBtTbYFR/TbBUe4dbgOr7QxNnEMRmnm52/gtl9mZFOPaSCl7gE7QnyEiPk9be0BJktqWCoaSZhGtQrpoo+FBqSSbjmc1BpQ6FS1vR4DpCrZJvqeIuZIORByMih3gpH+ONH/xOO624at6TvL79dzPsvVl62rmh+WXorDFWmLUuGbsH96eM3tdwXUfQIenBqF07+hy3/VkDak6Mb9yi4dY+bA9oPj/Mam56jCydVY8RG1g6C9BkOob1yWCr5ketUR4+io8uVDornpJycuKQVTBJTp98fLag+EezkjNk3YWxiL0hvZXOb36RKLzdjaWTqMLNcqECRD6CStruj00sPI2IY4TqCnduNWffDhLfx/lT73akbl/hv4JtXMxzNTJtyTuBV2v70PamAKgBfXb2U0N+fRAyCWiMzdysdEk2 X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 25:e09vMQ2GIKPNe14zy6Nht4qiBCUhfYruoIk6Q8J5JyIo21V7MBtLAbbjSekwPDMa2iNQ2KA3yDY4y/oHkPw+kwQ/MxZ5ujzNZAe3MhjYKiJ1eIG73nJSCK4mCPoRyC4yW8R29JX7pVaqxM1Ol3DWVhfTAhBB6sp7JVapyh7RXY1soMRT7YCWP9UOiVkGJHJWu2eyVzZDTVh4sPJhUnta97off3KmUmtphVImZwM/LtmiJJfrJUASXWweHkocxn7bc37AyA8gsUICXGuddYWaACHZ68vgZL/JDkw5TP1KZYOVM7EBRym2Lkas66ysb49lWAyxQ0pJekxM/CYTicPfx+k4bt4pcSBm7kJrgEjhGWQUL/uYbuSpVZUbFsra+sj7BtaFaB3jeFOUlWMs8awYQbTE+B12+a6QxSg1bQnTv3WKAdQRIEQ9xQnBxIFGWg1jV2PQG7og+12+vABO1w+Feg==; 31:Ob0njskbGE5vnPReMiEKw4biXFFuAWUsXHtkN2BkT6kRybuylrWoR1hSGDHLyho6b+9xyGV2w9oww1SvdiXKD8FABro6250KbyD8SUQnMU4SUrXxunhvwN2ApzdKFUzQETJmhy3O7+lgjUDDzh+FWFWJHYDCOq/RGddV/1Ul2BUjHTFCHZgJKbyBYOJMiK+viDghI8aFJe2nttxrkKLZjXqifc04HK2x34ZJuTNha4KlmFRup1dJqw5JP8crAfSj6EaPCjpB0yN1na/H7fe3Og== NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 20:n9Wm42L+aYIdN/LtLWv8GrC0v0wlxIY91UHiPwfN2/aSujcoRQpRLw53+a9tKhKUhZHzODeQ0vi6aYR5q/wDuM4YOCUhrAthh72g90XokY4iLA28PcXv3nnr+nfcrvDY2f7X+IQDK+B8JThDsNNotsV0emmIKd7zRUcA5JIoJsVB+LzCgjfVwiKhRcwAICCuXTR+LcgdXQgwTATjzZXl1KprL4GWG62Zik7gWmeZUwZFRsEOlaaM8LZX+814Q2Zz 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)(5005006)(13024025)(13023025)(8121501046)(13013025)(13020025)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(6072148); SRVR:AM5PR0801MB1665; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1665; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 4:PTtPv2pI5mrp2y6GJKkro0+Gk2n0xHa0RNK97/bCkbj6qLdIuY4FT16KEL2IceXIzLE7+yo5gdvTUUUmcrVcZ01aGgiqcSLcq797GmFp68JWOgjafOSNoLybd+G2+Trz+mcxbSD6YDBATl8X2yaLhh5j8Tx1YkmxiggFVkJgzYUyQJQRw2AvnUuJtbTl36c8v/ZwVTsDOR6yYNwWZrult6EgzmiOEOpN818x7uYTV7Md176Y3ESny9q3Rw21M8hpUZV/foWmd+2aUc58LqB1h/Eo7BfWdIx4WNxeTZcdlX3/uEE5w6Yr9fs1M2Ing/5Ebw2Enjqr3CTkRtjUts6vdoAs9KBiRfvvirBtvpZkwtYSHy+xsm0IgjgTDZqLXfxIxwSYyXKtOjwtjEO3hJ7mKhMOVADAqJuJPU+uC1u34+uQPCalhbF+9G+mIo+VenaM2Z519lYkgBTtC46R2V4M8oGU/EThqvd3zMElrq+BwQTuzdKfBJg74tAsn9EFxexVqZztRTRtOvO/Iy9UmiHnn8pgngmzU+B8M4A14kmFfKY2NgEWu3VSN9bHXYqpmP3PUmc9VC1Nw4b4Bnm99LXQ04Vmdmn1+tK8m8wvVoUhr90ZozzdMgsy4lwtYVJz5AL/kG07176CsQIxuct+5oQo3hcIjBsMhZKdaGR3pPp7ER9wRsNK92XNjkoc4dD1LZ4b0FJRidx7Zxs3Zx0fXCum/RKg/pYz4GyDSB4QX53KXwKwvwX4dJgpnWHnmLIfYbuA6deEltnGrnEenivT+H5CX03cSdIdyyPs37sIF+s3zclmO7HvUUDhH/lE+2E8Tl/p X-Forefront-PRVS: 02622CEF0A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0801MB1665; 23:wBXqIhza6wqDwktQZeZVehyKymLE+WhRX3TSZ3q?= =?us-ascii?Q?hk20pBOYtZN4Twi7N6wjmWDhb45ZMYzgB4CvInQ67qFFNNfelFzMWth5qYJQ?= =?us-ascii?Q?myFCU+y+zWd5FgjThGSLZPmOzimrCQFIdV06opQwx52Kd2sCxcEMh1A0veji?= =?us-ascii?Q?uav87jlk7eK/yXo3WAxlI9bD9N34BWXrhViL+BcIGUueuqjdBdX9fzLOqwQC?= =?us-ascii?Q?3eW0gaHwVJpYr4cSBC0ZPyZYZ4llkZbII9JaKOxwKY3v+dzToNHIWqADrxuk?= =?us-ascii?Q?s6Ssehc3qqmvYxEaUgsUgXW48u+iy1K4jLgHDBjo1I5DLIzzVyLzdFULHm6A?= =?us-ascii?Q?jE4mzytMWM20LD3FYg8yvEFeZP4ivcUQD+J62jaiYe2hnGuHrV1YXkkrfQYH?= =?us-ascii?Q?VYAe+MxP4lJ5tcN2kK7eqCe7iwnhYj7hHsV+K0JwCFt4GDqGxNo0MqQEYQH6?= =?us-ascii?Q?nD1Qd5ocsRI4XhnGt2iRjb27kwrHbRGkWsPa60MXed5RY1SYZTOPd0RwRU+4?= =?us-ascii?Q?9++3LQ9MJgaWo3+VyleHBRg2HXPEtpEeI4JDBmh8mltkJiO2XuMA2TuUJcU8?= =?us-ascii?Q?2crskvh1Zz5hnfnKOgDXnHVgNJv58IjKKMQKqr0p2uo5ndDCyPE2HN77Y5g1?= =?us-ascii?Q?pkEfN53osrojich6wDiGwR9xuKiwpIazKiSu4tUABequCFI/6Kmxl+Gd7Jm2?= =?us-ascii?Q?IiYpxhevzhZ0wsC8cKHGsH/Oo5IlPVOWfCjojpeNQyGpsd7mbuPvTFZ8Qw0g?= =?us-ascii?Q?96BsOY+97rxVAhRoemhA/bN9YoFWjtz3D0fZCEaBJtggYBDLhYCF8PA3I9kO?= =?us-ascii?Q?v9hP6dkDBhaZSltOOCWDv5ynIfeNuIjKttmp/DmdD1SMeDjBXcEzmDe1Rb+Y?= =?us-ascii?Q?PFhUAP7dNpn1GmjFMuoIII8tz3d5deL1Bz56jkgraqfcv97So9YBCSI+gT8S?= =?us-ascii?Q?DNJZEnwjkQ9H/wOqopH6kG/nEf8xrVxETYhakCWXp1g=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 6:n/ytWkqNMUoitsbclKJupTzhkuCSjiiuWWBfQjQ2uf0yIRT034OsF3eB1tEM1q4Um9fV7k+e3cj1gHUBOG3J75nrUS5ARZGkfSrAqfaaTV34/H1TNN6GqBPpUFA0GOQEls5WPZeKuk1qz5Abkh75lzk8s4C3QGs0c0DWg/UPh+vvtMx66fDkV3gIFBNj4l43v+aXRmSgRmlVsQf2ZlqT30Tf/DxFAkLa3Bxeo4fxGJx1VmZtfAqzEfnQwAnI6PeDTlfHSDj5uOtiP8UNGi5V1wcRmFyLpbad6+XWGP65Eq7Qf1855mF6h5qbrMAswgLiZO6655n8FHsE3yGTjWoq5sVmp2hwMQqANd81O3jyjEdpfV12hRI7IRZIyIjI3Xx8XcblR17hCXFXZTjwvd0c1oq3LUhpJeO41+fhlDYazfs=; 5:DKC+NcfxxDVpZ3OYE2vAB2hImW/klvkqOMB85UArARz/u0wqYA+IaTclLc8mA5t9rcxpBW9ix71Q7XDA3l54grZY4E8YJo+WTOcnHpuq8FCVx8GXdFSG9LsO2vtASNBdQJdP9Ty6BXzQrQgSrL6GzA==; 24:v0cS6E+zgRRZA5GX0UiFBsHG/VqIxbdt1ggncjHlCXeRWfFGsuwDe8+2WjthkHnKfGe9RJSAIZHkMIf5gIBVp5ICSTdcO2DimItkvCYsrcA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1665; 7:UzPavskamtCrazcbpO9Iu80WAJS42DvI5b5Rp8Sb1EE11qST0+Xy6oGadjbNjbblxaFYqWsATO9zS2LU0fOfXUJszYpy8G9itSUEw1MwtOcJVee7s8dcwp4IqcmNLV3Js3aC1iSlHkGfU0rNBHzjeFdFJa3tleQKj7sBaPnNPcIQbSmP4BuCm6Tb8Xth5Hs5c9lyFLx1x8iOFhk6AkrMvsDL77wwKpsZoyTmMrypNqEFc8C/Ie+c2swwl/rl9SaEqykP4Tq4DUSAs79eevFjoaz6a9VwLCQE1NxRqi07nwMGqzwEyjwY/c4XIq0ZOk/wZ5jPRVtANexkF0EM0fzYLA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2017 09:15:01.3769 (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: AM5PR0801MB1665 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 v2 13/19] xen/arm: Introduce new helpers to handle guest/hyp SErrors 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 Currently, ARM32 and ARM64 has different SError exception handlers. These handlers include lots of code to check SError handle options and code to distinguish guest-generated SErrors from hypervisor SErrors. The new helpers: do_trap_guest_serror and do_trap_hyp_serror are wrappers of __do_trap_serror with constant guest/hyp parameters. __do_trap_serror moves the option checking code and SError checking code from assembly to C source. This will make the code become more readable and avoid placing check code in too many places. These two helpers only handle the following 3 types of SErrors: 1) Guest-generated SError and had been delivered in EL1 and then been forwarded to EL2. 2) Guest-generated SError but hadn't been delivered in EL1 before trapping to EL2. This SError would be caught in EL2 as soon as we just unmasked the PSTATE.A bit. 3) Hypervisor generated native SError, that would be a bug. In the new helpers, we have used the function "inject_vabt_exception" which was disabled by "#if 0" before. Now, we can remove the "#if 0" to make this function to be available. Signed-off-by: Wei Chen Reviewed-by: Stefano Stabellini --- xen/arch/arm/traps.c | 69 +++++++++++++++++++++++++++++++++++++++-- xen/include/asm-arm/processor.h | 4 +++ 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index dafb730..a6f6e24 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -627,7 +627,6 @@ static void inject_dabt_exception(struct cpu_user_regs *regs, #endif } -#if 0 /* Inject a virtual Abort/SError into the guest. */ static void inject_vabt_exception(struct cpu_user_regs *regs) { @@ -658,7 +657,59 @@ static void inject_vabt_exception(struct cpu_user_regs *regs) current->arch.hcr_el2 |= HCR_VA; WRITE_SYSREG(current->arch.hcr_el2, HCR_EL2); } -#endif + +/* + * SError exception handler. We only handle the following 3 types of SErrors: + * 1) Guest-generated SError and had been delivered in EL1 and then + * been forwarded to EL2. + * 2) Guest-generated SError but hadn't been delivered in EL1 before + * trapping to EL2. This SError would be caught in EL2 as soon as + * we just unmasked the PSTATE.A bit. + * 3) Hypervisor generated native SError, that would be a bug. + * + * A true parameter "guest" means that the SError is type#1 or type#2. + */ +static void __do_trap_serror(struct cpu_user_regs *regs, bool guest) +{ + /* + * Only "DIVERSE" option needs to distinguish the guest-generated SErrors + * from hypervisor SErrors. + */ + if ( serrors_op == SERRORS_DIVERSE ) + { + /* Forward the type#1 and type#2 SErrors to guests. */ + if ( guest ) + return inject_vabt_exception(regs); + + /* Type#3 SErrors will panic the whole system */ + goto crash_system; + } + + /* + * The "FORWARD" option will forward all SErrors to the guests, except + * idle domain generated SErrors. + */ + if ( serrors_op == SERRORS_FORWARD ) + { + /* + * Because the idle domain doesn't have the ability to handle the + * SErrors, we have to crash the whole system while we get a SError + * generated by idle domain. + */ + if ( is_idle_vcpu(current) ) + goto crash_system; + + return inject_vabt_exception(regs); + } + +crash_system: + /* Three possibilities to crash the whole system: + * 1) "DIVERSE" option with Hypervisor generated SErrors. + * 2) "FORWARD" option with Idle Domain generated SErrors. + * 3) "PANIC" option with all SErrors. + */ + do_unexpected_trap("SError", regs); +} struct reg_ctxt { /* Guest-side state */ @@ -2845,6 +2896,20 @@ asmlinkage void do_trap_guest_error(struct cpu_user_regs *regs) domain_crash_synchronous(); } +asmlinkage void do_trap_hyp_serror(struct cpu_user_regs *regs) +{ + enter_hypervisor_head(regs); + + __do_trap_serror(regs, VABORT_GEN_BY_GUEST(regs)); +} + +asmlinkage void do_trap_guest_serror(struct cpu_user_regs *regs) +{ + enter_hypervisor_head(regs); + + __do_trap_serror(regs, true); +} + asmlinkage void do_trap_irq(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 700bde9..2db2370 100644 --- a/xen/include/asm-arm/processor.h +++ b/xen/include/asm-arm/processor.h @@ -709,6 +709,10 @@ int call_smc(register_t function_id, register_t arg0, register_t arg1, 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); + /* Functions for pending virtual abort checking window. */ void abort_guest_exit_start(void); void abort_guest_exit_end(void);