From patchwork Fri Jan 5 21:32:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilkka Koskinen X-Patchwork-Id: 185547 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp6480119dyb; Fri, 5 Jan 2024 13:33:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IFhxEQWkZsPOPNTt2WqaychH1Krgy9fI27TTCds7I4rDmXPWnPJvrmM5nRmlYMbow41TgRh X-Received: by 2002:a17:902:ce8f:b0:1d4:5e25:7fc1 with SMTP id f15-20020a170902ce8f00b001d45e257fc1mr86811plg.52.1704490423415; Fri, 05 Jan 2024 13:33:43 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1704490423; cv=pass; d=google.com; s=arc-20160816; b=gEe6wSNtPaF6EWw5jNlWYcCnS/UFiDS5w/c7SlQ3FkergU4P5on50raW2wCBVNrRTv Xm/zNMgw2dwOYPJe9dtZ147I+ugITudq+mjcUPO2bRYcHlEfiJGHr7n9fUWXGyxTJNPk f5r7xPIcLz/5PJJyFKYRHYJ0kP/O/erw2rSxBrCHaqU6BtpCD3jUsMGb3N0TlAscIExi dD6IszgDszLs/yrT+75jeXb3sYWSQ1W6oSTw0qvwQEySO/J7YMmVzJJzQCEUVqYo2qlG 4IY3VKh597rz7MZbfP59n4EjKd48utoNyKMmyb3qFB4XMqn+Cd6eoFlL1ExtyXUJWR5Q baLQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:message-id:date:subject:cc:to:from :dkim-signature; bh=eZWEWWFKDh1CUtjz4V/c6SskXpSsThuamXXd88vx5Z8=; fh=HRE4CidPUOJ/dsjxO+jcTHKDlp97k00DTEL3wu2mW2M=; b=AHO/+MJUedpk7QMN93L9hxZuKeqDMw4muUsGqLvFx6aoBj9pxRH/Js7IsfQa2jhNlz +zUxQ1NgIDeLcvmXYsXvqAjIR7f5SdRTh9kUb4fOmC5CVdykQcnaYUE6qsEuMD+YAg23 WEpTNuORsz1wH3qIKKLFIrE5Va27Kt1dGXRfD00nWs099T011Sc4cO7HrgawvU3JNiqi zHv/1XMK4QBLin6EccAdbUDtb9AVu7LnF3ytNuDo9w/M9QLz3DHM9gIWms8VZO6K7Nn1 W9iZYR8g5Dl7jqh7/u4kzw+fWiJz1ZuSnXFFHzLl0YvwuvR4ruN0p+48VFJ7f62YXp6L PTTw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=VvkhSBoB; arc=pass (i=1 spf=pass spfdomain=os.amperecomputing.com dkim=pass dkdomain=os.amperecomputing.com dmarc=pass fromdomain=os.amperecomputing.com); spf=pass (google.com: domain of linux-kernel+bounces-18372-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18372-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amperecomputing.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id y8-20020a170902700800b001d4e207545esi1832639plk.399.2024.01.05.13.33.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Jan 2024 13:33:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-18372-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=VvkhSBoB; arc=pass (i=1 spf=pass spfdomain=os.amperecomputing.com dkim=pass dkdomain=os.amperecomputing.com dmarc=pass fromdomain=os.amperecomputing.com); spf=pass (google.com: domain of linux-kernel+bounces-18372-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-18372-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amperecomputing.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2DFC8284A05 for ; Fri, 5 Jan 2024 21:33:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 463B2360B2; Fri, 5 Jan 2024 21:33:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="VvkhSBoB" X-Original-To: linux-kernel@vger.kernel.org Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2103.outbound.protection.outlook.com [40.107.243.103]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A54D35887 for ; Fri, 5 Jan 2024 21:33:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O0Uu4oRwQ+UqSvRmDzx/WkbNuB5jrFMKtg67XCpbnHFAkPM1l4Hmtlyr1UVguV1XXbaZkhysZq3+7XSmvsLSCWrKFM2Ww8BvC2IPPEoy1vE4llgLBRwDskv1oT6fpshvoSXRLFbEkqdzv9wedlXrXWiJlt37ttbZAXzO9aZ85DhCDb5OkCtl8WSARg1/71yHZCioeq6x7QGSo6ZVEiOGmATE8HhlQZJAYGBCK8pSYaleAK/9LeLc7bgTv7fFWYruCba6dHvVlE7r7hHkn5vUqerBIDsvInYJZ0J6ZN0nMcq1o41b/zjts2v+BrKvoXmBluLzco5TRMQCvMuD+EQbsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eZWEWWFKDh1CUtjz4V/c6SskXpSsThuamXXd88vx5Z8=; b=dBteTILC4RBYkOzy4+NBlC9XunhEspmEuz/Ec/oDPUdaCSvU+R4dZSm+S/bQXq2uFDKDGzoMt9DclRMv2PX2P0p7cZKqavplyO0KKTHdo8kt750wLX/b2+pWT9BeBQ9kSb9exiCdl+OW9b2tvvjVyAbZRfxy2cU+em+F5nVyn0mkgA2MFDT1OblFI1X2bOW35JgmfBGFiv2uY55MbW9t/ISppnDrfnfbFHkomp30cNpdi68zTbhmAQo0A2V/pq8f8FiSEBwpT1yyQHQpb2I2TWo6NCNqkkaIdRd3aXy8A7kW80CKsqubGKpIj5sX2ytL4JjVml+AspwX1YsrNkH2Cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eZWEWWFKDh1CUtjz4V/c6SskXpSsThuamXXd88vx5Z8=; b=VvkhSBoB84n4A9Zraaj75gn6sE3uss25jLomlPuBeltNR3rh5DHrODre+Lf7smN58rR7Cb9vlb8GeCXZubYH5/4cyku8Fm5sK3dXE18pZ964hv9xyJbYExPLDY4ww6umVaA94rb9F6G6nke4oYJtLt3t8ulmt8xAIHNkTWLtnGY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from PH0PR01MB8166.prod.exchangelabs.com (2603:10b6:510:293::17) by CO1PR01MB6598.prod.exchangelabs.com (2603:10b6:303:f8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.17; Fri, 5 Jan 2024 21:33:20 +0000 Received: from PH0PR01MB8166.prod.exchangelabs.com ([fe80::5549:ab3d:70af:8693]) by PH0PR01MB8166.prod.exchangelabs.com ([fe80::5549:ab3d:70af:8693%7]) with mapi id 15.20.7135.023; Fri, 5 Jan 2024 21:33:20 +0000 From: Ilkka Koskinen To: Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , Gavin Shan , Mark Rutland , Raghavendra Rao Ananta Cc: Ilkka Koskinen , D Scott Phillips , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH] KVM: arm64: Workaround for Ampere AC03_CPU_36 (exception taken to an incorrect EL) Date: Fri, 5 Jan 2024 13:32:51 -0800 Message-ID: <20240105213251.4141-1-ilkka@os.amperecomputing.com> X-Mailer: git-send-email 2.43.0 X-ClientProxiedBy: CH0PR03CA0082.namprd03.prod.outlook.com (2603:10b6:610:cc::27) To PH0PR01MB8166.prod.exchangelabs.com (2603:10b6:510:293::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR01MB8166:EE_|CO1PR01MB6598:EE_ X-MS-Office365-Filtering-Correlation-Id: a0108a2c-cfc2-4ad8-a3e9-08dc0e35f00d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7OnFLaLk4d4jYXCFmiaN33mtkRqAdFPyKNULG0ABpZbI/PIxBKEQD7wunTJS6B0oMcmMuLYtmEp6EmHQB20a8p1VuVGSr9naLlxc+tRF8VP1Gf3/G26p6e2h+SbYaxlaHI6ZaOSNrUDFF0u2wrfAhO/I9YBOrRNvFayPtYji/RI/YGD/9A9hB5e6DavinBj05RIAbmX3K+RyCwe+AyL+W7aiUhsqRbI3U15sLEMErFHhip6kJFDTBka6FCl7MxAwBx1b7G9M2X41Z1A4Bi9u6UyNVsC73BiHo/B2cxio/FHzmSfYa4Mjdo0fHapoa743RyjoATb8o4kJ79uJJ3B7rpXCheoOxhV1g/WoMycZmRMP6zejZv4hoIKFFph2HT8djg1Q3Fz1EqC9D1klKAZL4KGRxcay4V2CAaKzTyItfTQWl4Nar+Be+NbFV95YdVxCxbtyOPoAiUyAwR/iJE39nEqdv/+Os/w6PzSzkvTKROrSrJLA+GfNliHG1FAB4+JN9MR7dc6iirOAWFPzIHrxW00iyNyrUyLXWV7eyZsqO4n6hlnybQQETkzmbb3Zkb9z/kusl/TgSZOAOB7SBmFLKf7/JNNfi1aDmulBFWv+n10d1J5aPINZGoSKeCzIxB4v+clsokGyD5IOCjpOS65R6g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR01MB8166.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(136003)(366004)(39850400004)(376002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(83380400001)(86362001)(52116002)(478600001)(6512007)(41300700001)(6506007)(6666004)(921011)(2616005)(110136005)(7416002)(54906003)(38350700005)(5660300002)(2906002)(6486002)(316002)(66946007)(66476007)(66556008)(8936002)(8676002)(4326008)(38100700002)(66899024)(26005)(1076003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hUPPOu5X2U2ShhruUGmX54ZC2wu3J5wCIoOITnGlWcBHH6WdUl1opl7TScz/2j7PM0SB3fFRvGxjtMdA2T6jZyoKcMl4v5EMofakGm4yOyJ2nkrYHo+nWThEUAjXLsNd16QnR3uIeDRCOkvw/rQzs66u1W/UymIuOtb+pDLDCwvXbDugrVpDsl9SQsnZKSvPdur1Oys9nTihwpXs8mCAF4WVn/Bp+YrORg5fOzhqEhrFHD55U7XrvKtP5BYfl4mRXfVb08wLCLoqxFCfFqeFrXVGinY1M1lSdYuQ/MC+ysZFYcb6jDijoMHbTpMGyZ0oCDJD1q4LIEiuzez7i7tvOE/6FCVqOnYB7UX7Ea65ug/FPsRT+cJD53FgGS940WmJZIomwSPZYsn1/j1T9tRxw+D7vTOMaqycszywvxKazXGGzL9aZsGWDwJTWPdBdX3uQ+EdiIfh6SAdip/BwOnlDh6mInSm8BOjrw4Kl0sWquhKSXjQEfhen9GOlNJtsArjuAU4YDWUMBzAXtOdST8tbZOMa6q2OuYxb96MMR9d0rqLGJ8BJvXMP47juxo53YRBDro/502icq5kN8rlYK3xtOn7mSBfYXvxQ5qqo5I9r9hCHeCS3YhSHWxIZCO50H4+mEJun8VlKRLrU3FvPekTXcgumkPVrVZdtEe7c6LV2wZuZJMYNKbSsJ68bePhYlGz0t9ep/53quwdgDWHmKkS0ouvY2xQOLMPgi7yqPcNHoVMZTLVo2PAf5TfMe1lvNnKQWrrJmvuTp/mc0+GNhRybPJJrfz+alhf1zp8XP226F/cyRLDaUJ5EwzXb7sz6pAyDg6WU2UkBTecrpzBvjBCvXT8rj0TPK40FoQr/N7AE134QS9/9ThWygQ7986Yfvhoeo+xhOvr5J+FzgpQKqgPZFv7ZnCj59QVZ044BnrcGSWrD4Fu8poJQkILRbU67ql6yUl9vq3U1W4FvjpnBMRqS+i8c22m7U9ojs1WTVMrq/naKX5OiNC7VkW+eQRUEG5y5ReJbHheK5bTSCcEpRgAyYW4mgqHT9gPMvvEouL05Qu3fDWHPM0xSvAk8kaswy1SG+LnQUJdazfclheXfvR2Ho4/b0LalQrwDAcPSfhy2LAaA8/37wXAuPjJxuK3rg6ULdwzTMDmSrLMQrMktS5n8y/mglg7BC8dXsInCCyTpX4zh6pYZ4AE2Bz02HDbN1xEMW4wA6ig6a970AV4srllOpP0cruBCvlJVJxGeUwQ2NDRKZNV4MTKoOnsvgmLTVgOV70HvJ0LhvwttfULFfqHFnWlly6oFqBSm0jan0HEudVFfet+rXzcL0XPxfzNUh1A0bDNA+l8IPm9leMFPH/BLEh9FSxwHKpGwfSTVqsnM/8Y33o7I1eSlXf5OvvkUgMaMSUhjaNRaexIvqTtzPoKy5BxUwvXWpVJC+pwhcowYmaYL5A5TY/qLfC4TmMw8MhZYiZ2ahOmoa5tsARqE7hNcnJTi06TcxCqUYd562uWWRA7sBLG8tUElrPiJ1Nk50rddXBVrlJLtd4zY4EgnjjmewFDeH0qReTvgk3PFWZjHgttTSESCjZfRaXuXB7gBVAjysShGXq9LjBhC2C74Gw8ZGrGs6T7793BXK3NqK/J9hg= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0108a2c-cfc2-4ad8-a3e9-08dc0e35f00d X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB8166.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 21:33:20.4869 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jhPfDlc4Wb7z3c7ye/49lhiSXNUYpUV1LfPAVQUVwfOp7vsn9BzyEPBi9p3wlrqLSQxfBtMfzJeR8STX0w4J5h1RMUAV66J49adFnG5lSGfAqhzX0TfpcyiBHSDXzUDr X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR01MB6598 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787287750441617006 X-GMAIL-MSGID: 1787287750441617006 Due to erratum AC03_CPU_36 on AmpereOne, if an Asynchronous Exception (interrupts or SErrors) occurs to EL2, while EL2 software is modifying system register bits that control EL2 exception behavior, the processor may take an exception to an incorrect Exception Level. The affected system registers are HCR_EL2 and SCTLR_EL2, which contain control bits for routing and enabling of EL2 exceptions. The issue is triggered when HGE.TGE bit is cleared while having AMO/IMO/FMO bits cleared too. To avoid the exception getting taken at a wrong Exception Level, we set AMO/IMO/FMO. Suggested-by: D Scott Phillips Signed-off-by: Ilkka Koskinen Signed-off-by: Oliver Upton --- arch/arm64/kvm/hyp/vhe/tlb.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/hyp/vhe/tlb.c b/arch/arm64/kvm/hyp/vhe/tlb.c index b32e2940df7d..c72fdd2e4549 100644 --- a/arch/arm64/kvm/hyp/vhe/tlb.c +++ b/arch/arm64/kvm/hyp/vhe/tlb.c @@ -61,9 +61,15 @@ static void __tlb_switch_to_guest(struct kvm_s2_mmu *mmu, * has an ISB in order to deal with this. */ __load_stage2(mmu, mmu->arch); - val = read_sysreg(hcr_el2); - val &= ~HCR_TGE; - write_sysreg(val, hcr_el2); + + /* + * With {E2H,TGE} == {1,0}, IMO == 1 is required so that IRQs are not + * all masked. This also works around AmpereOne erratum AC03_CPU_36 + * which can incorrectly route an IRQ to EL1 when HCR_EL2.{E2H,TGE} is + * written from {1,1} to {1,0} with interrupts unmasked. + */ + sysreg_clear_set(hcr_el2, HCR_TGE, HCR_AMO | HCR_IMO | HCR_FMO); + isb(); }