From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com [40.107.220.66]) by mx.groups.io with SMTP id smtpd.web11.8210.1645497739662376148 for ; Mon, 21 Feb 2022 18:42:20 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=AVun7sl5; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.220.66, mailfrom: ashishsingha@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=St/g0YIi1AUdCGIP+EY776cpcftxjMql4rf38ZrhGuQpXhJ0AseoxLxwTG+u1R9LZ+LEU1QuFA4TuR8eNL/UaE9z5TwtymBWCS+Jbe45znLlgDxUgrNb0Oj8ab23gygxeErVit2IY23VtdBPA3lpvRmWcDkjgGQMvnxiJQX4//N0O0aVKPCybUvRgL1nxdhCxLS+ExXTWwAfnFILz4c0K8qsuk92UwkKHa94hgnoe3X2VIw4fh8CXD3+ZRgKyl2MDfEzPohEEMT5wfuPYQ/C1EgT/12KuEa10TKrGA5TidcOWQJs88apUehNAgRIIlUTJNMpY5u4P+BHN01AcAzzHA== 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=8k+Qu1MTJhUeauptu4V/ab3qomQZaBbVZ8zJHwwLBFI=; b=oHQz9pfO4fSve8uDRyHlzKCmg9ASA5hQ+rjLhWwxcc46dShbOVspYnYvK7T1pTUVGGjNXZ4JCp7tPNgH+4ygLda8rGmGFE4aiPCixMnnfWXXGzqPmNssMixhcNVrHL3OM1YWCQPhRj54Ecv82WUpgHk5VEgBSkznaF53QMxR9coUBxo4rqgXl/mCe8E4F4evXbQ3wnaHx9hK4Zf8z1md8fZbE+pUPYUISouHQL8uYXpIfC9TeXliD4LwZrEuEGb+Nt07n02b+G9zm/Q6vCJ8WI1p4S9Z0uC2KpDYRahz09gdsLwKJ4k1Lmm0igz6UibEEMWejRPwcjYVJKfEg0rOlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=kernel.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8k+Qu1MTJhUeauptu4V/ab3qomQZaBbVZ8zJHwwLBFI=; b=AVun7sl5O5UfgY5rztpnQjzWMeZDBBp3R2mBWiQG07o5TLo/UsBldcJiNtdoUamKdwDdD3izLLiycRtI/bXo1e8LqCz4wAeA1V6qS1FZ87q9481apWb0IdpWF10RV8Zi+C1quRG7rIoqiUKxxFOISwa/EMoilkjqgpycZzmdeP6BjDSmP7eK0yrm3w8XocGkoDW4i+eFrBimm3fZatq+/6pdC+jYplz4xgJ9MKf580tnrrZ5SPzzd2f+aS5p2vC1Agpiz4kGQmiL3ZTsIe3LBFDw3ZWFECJCx7pBG0HYXVZXMZPY+yzDNEfc2R0Yghq8wuQqEsFvcK4jiBiTZMHJHA== Received: from BN6PR13CA0030.namprd13.prod.outlook.com (2603:10b6:404:13e::16) by BY5PR12MB4802.namprd12.prod.outlook.com (2603:10b6:a03:1fc::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.15; Tue, 22 Feb 2022 02:42:17 +0000 Received: from BN8NAM11FT035.eop-nam11.prod.protection.outlook.com (2603:10b6:404:13e:cafe::23) by BN6PR13CA0030.outlook.office365.com (2603:10b6:404:13e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.21 via Frontend Transport; Tue, 22 Feb 2022 02:42:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.235) by BN8NAM11FT035.mail.protection.outlook.com (10.13.177.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4995.15 via Frontend Transport; Tue, 22 Feb 2022 02:42:16 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 22 Feb 2022 02:42:15 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Mon, 21 Feb 2022 18:42:15 -0800 Received: from ashishsingha-lnx.nvidia.com (10.127.8.11) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server id 15.2.986.9 via Frontend Transport; Mon, 21 Feb 2022 18:42:14 -0800 From: "Ashish Singhal" To: , , , CC: Ashish Singhal Subject: [PATCH] ArmPkg: Invalidate Instruction Cache On MMU Enable Date: Mon, 21 Feb 2022 19:42:12 -0700 Message-ID: <122c32bb19ed0730ef166b9f46d3b112bc9ed937.1645497637.git.ashishsingha@nvidia.com> X-Mailer: git-send-email 2.17.1 X-NVConfidentiality: public Return-Path: ashishsingha@nvidia.com MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33472188-4441-412c-7b25-08d9f5acf08b X-MS-TrafficTypeDiagnostic: BY5PR12MB4802:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qP1tLCtjdYvGQMT9iWtjlt46+296hrbjTSUEGVJEf8mB85b0p/ZwTQhWQkhZKzAmvMerq0rwBYQnfsz/E3gLDNOROFdS3yaSBt/JajjVWfOZ+LReSsdyQCsoA4IwnqXR4nEdc/+hv8QbmnXQjX/lnpjW0Q/dRyYb769cx3mELHNmLP8U/iP3a6y40uJUQVcNuix1JLX0S4tENeANrrFOdoJY3tsP/zlBzhFdrL5rbL9qyW2Pp+RpQHuED72/5vWKMm8/zxyyyOPgdBNk6Ex/DuoecTNhbjHbBYv/RRwzmpyiKpQI7fxpuzEegkaMbFuke+++9sj3ZqOG6BB3fE4M7D+OOATPJb9y5/6bkaU8WFD2ATgtKnWkZNyZplNOgO/e3wEKqg/0PCxGgIkh/aKBPiJUHqc3oioey+vtoogEeAXsor/CRWK6AwwT3bXZTek+y5z25/96LAFWisMJ2KqfiDLcZMxu2jLd4H5DQ68UsddBT0TFKC3FYWnaXVr2WmqvvkaQxzwg8VmZ8KhIERHLCPFqQWaV7ZD/ZsCMY7TV+IoUi8OAfdmloGysMEXoydUg2l9hh4k2A7hJvYygzVu4uxbXXrqC7u2MYSnr8kyV3J5mThzBqaMyhS9Sopur7BOYl3IfxegC3qhXQtEHhfyjI6Y7WBSRkLTH1bSvP/ibcplU/0YSWlqKkJPBP+k/aGH032SfJRrDH+niqP2x4t6M9w== X-Forefront-Antispam-Report: CIP:12.22.5.235;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:mail.nvidia.com;PTR:InfoNoRecords;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(7696005)(86362001)(40460700003)(186003)(26005)(2906002)(81166007)(36756003)(356005)(107886003)(36860700001)(47076005)(110136005)(83380400001)(70206006)(316002)(508600001)(8676002)(4326008)(70586007)(8936002)(2616005)(336012)(5660300002)(19627235002)(426003)(82310400004)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2022 02:42:16.6926 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 33472188-4441-412c-7b25-08d9f5acf08b X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.235];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT035.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4802 Content-Type: text/plain Even with MMU turned off, instruction cache can speculate and fetch instructions. This can cause a crash if region being executed has been modified recently. With this patch, we ensure that instruction cache is invalidated right after MMU has been enabled and any potentially stale instruction fetched earlier has been discarded. This is specially helpful when the memory attributes of a region in MMU are being changed and some instructions operating on the region are prefetched in the instruction cache. Signed-off-by: Ashish Singhal --- ArmPkg/Library/ArmLib/AArch64/AArch64Support.S | 4 +++- ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S index d3cc1e8671..9648245182 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S @@ -89,7 +89,9 @@ ASM_FUNC(ArmEnableMmu) dsb nsh isb msr sctlr_el3, x0 // Write back -4: isb +4: ic iallu + dsb sy + isb ret diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S index 66ebca571e..56cc2dd73f 100644 --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S @@ -37,6 +37,8 @@ // re-enable the MMU msr sctlr_el\el, x8 + ic iallu + dsb sy isb .endm -- 2.17.1