From nobody Sat May 4 03:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1488319265027255.7221481232657; Tue, 28 Feb 2017 14:01:05 -0800 (PST) Received: from localhost ([::1]:37228 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cippP-0006bP-Pt for importer@patchew.org; Tue, 28 Feb 2017 17:01:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cipmo-00052g-EH for qemu-devel@nongnu.org; Tue, 28 Feb 2017 16:58:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cipmj-0005dG-Sx for qemu-devel@nongnu.org; Tue, 28 Feb 2017 16:58:22 -0500 Received: from mail-dm3nam03on0137.outbound.protection.outlook.com ([104.47.41.137]:6208 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cipmj-0005cu-NN; Tue, 28 Feb 2017 16:58:17 -0500 Received: from vroomfondel.redmond.corp.microsoft.com (2001:4898:80e8:3::446) by CY4PR03MB2824.namprd03.prod.outlook.com (10.175.115.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Tue, 28 Feb 2017 21:58:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=SRbh+OjeedfXN6BhRk2B/ozgf/EhWlQUxugGYqSDLDk=; b=gCGBgPxmzTduGjHz8fPf8rXIBoVvaCqfvRJ304C6lQ1jTw05E0nS5+wcOo/FeY+/SXBUD663M6ti2PV9YvHghwZosuBu0nFAVigSxEYwLkEMCKJAdf2/mJl5VcOaLjp1lcnzbekMIsPBwSz3LxlsKLDS+xQ9dEyB7Jji5t1qKZ8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=microsoft.com; From: Andrew Baumann To: , Date: Tue, 28 Feb 2017 13:58:00 -0800 Message-ID: <20170228215801.10472-2-Andrew.Baumann@microsoft.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20170228215801.10472-1-Andrew.Baumann@microsoft.com> References: <20170228215801.10472-1-Andrew.Baumann@microsoft.com> MIME-Version: 1.0 X-Originating-IP: [2001:4898:80e8:3::446] X-ClientProxiedBy: DM5PR20CA0015.namprd20.prod.outlook.com (10.173.136.153) To CY4PR03MB2824.namprd03.prod.outlook.com (10.175.115.142) X-MS-Office365-Filtering-Correlation-Id: 1487d4d2-127d-4e6e-1d05-08d46024e556 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR03MB2824; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 3:pqh1JqZMQLOUIjUkOMJRhowC/uDP7ZSiIL3CK2vICCNrwGTiTO8PpEFs1ki7k5IFD9yuPQN2fN0Wp6J+WfM/VIz6N2/R14SMC01PEA4k2kBzXGQ/328RUFmVMWiX1x6o1cDeR7C3fwZEYjhMcepXjkApYbCg2vRgn72MzgIlWgleXsBC0aXKyV3/EoF44HWjoKswjjBLbt+YPWkKKuaKALknYyVi38zcpUU7//T0/XyC35CP2mXnIdQsSQIsPf/CfTg5lNOOy79iLD8wh8eIl58HxbiUMJchJrEbYKWAoOE=; 25:KpVAxDKtqzF/I5MP4T5N4tSENHcZSJ+iR4ruWR564b+u2w068cWgkPGYoqFgU2Kr+emt6guQvGErMtQQtWqpYfn0fvM4ltGabaRHmxYSpHotBXbXGiyBiYCDmW/di2RroefgPQKPUXnyOGlhkJB4G0+pF2lQey7VA550Uevrg2kszkq5jK5iHh9eUaC8y0/ZPdmGdoOo2MMwgLhZ/OwkjTC+eDOQBTUYPX+ixdsubtY+TtTgGNYX2TYkZa2ktP6yTh4sAX12R1jIKQJOE9QgHY0LdZl3IWeeRv6ODBIMoRexKbm5LWzUck237kYUhvOchtysMn66hwulXljzJnRjjKGg5FeGwzRId3k+JFyWSdwKGbAatBor2We03tynZbVIAnvXHzrtKcS30KYO37rvLtrfR6GWrbEWXDi1Z/Hqq4f2FbmydxWf/0xj4+qRlJi6LK3CBACW/CtyrH9hqgXO7Q== X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 31:ukOXgNl4q0iyVVxe3bjadQpEdH74sO0n3bARydvDOyBm15hC7IPQPVrs8KZSg5QhbIbqmr8zcrkX5U3zbz28WBrQYA/8zgOM+IGtkHM2BmKm6il7FctwVMi3kldAh0JIMwDv4OHJDGR8pRvA+Kpf5SB7+rOS1FRKx3jGWpRYFp5bQ9yr6TXALcVtopX1et9xhIW5kfalNrH7IwxdlKZ9RSSo7wJH+x3Nb6cfkBJ8n2UzTzBBW41DoC3nHCFRNd62; 20:o6kPcJ48Pb0uUSxdKO5rg7QRdBAdU7s53Up9JkcrIdHM1SpTq9VggK3cLGAaob02BAd6+yPyKUdIilVpFjSGFRFACxjkVE7Y9jpkcFRKzbkSaWA0DRZ+l30ADpxVXVXx5OvEsSiI+Mfe9vrGODUO+oiczyzzH7bDzM0VBvH4NE1boSx9KMXbDdRyA5b5C8Vyrp+SbhCPRWaBWd6ROPezH1qEqc46kXzWZO0RBrdRVBD7qrpWcbdrs5InaT02rxwUAyoOMYS1GLEi+nlnbO19GVOvKC1jjqfr2ggQA+Zx5zK3NkJHBq4ZAO69aYl1KB04swMQ+Stw/1+FPcafO+gNMpkWQVYTEYioQuIkbOB1IpytuPheU3vwMP2ydYmuLepmoAzBVm4mlFUcKD0A1rpkDWWGsHPzOelaNKq+9v+hkOpKXdNSbZj1bIAO1o/InvsJvmB6wtNlER7DbElchO1VOTGZpKSpy9jwq8IP7GVt0fBPq08+Yk74FIQ4154d+fPz X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(20161123558025)(6072148); SRVR:CY4PR03MB2824; BCL:0; PCL:0; RULEID:; SRVR:CY4PR03MB2824; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 4:76d6XWROUHynYQRYjd9eBXqwpkvOoClqDX+KcZCwX1FYKrzULRHU06xsZro7fVc7Pa0r4F08kR2aLy47A5ARAvsxL+yhh6cibJ2hy11XgzO3poZ/wxf4YcOS116JAYoUbPvgwsQPpoiH+4P2xQp5Aby2qa+vub0tOfZE/JWcFyxlN4R76NImlENmzqsiWbYLLIFcS2UmSDjGd3KAWh1oxYMwfmGcFaZaFwGYCrIVRSRFcGK2rydaJ5asYMLUo1rxfa98/npbIXpAj201z8P4gDs63SQDhlV7KUbglN+Y6EqijRflDAOtxmX/v9p+gCZV+dZUfiyJ3HR7hM6YZVGI6pUmqmydLXVz3jok8s2t7pdnCvGCdR4YXkeIPdPKCI31KIP/mkgY4tMgpySMfo/qX0ieP332dlt0tZ+K3Zv9I2KHLh6nXAHjW5oRQvMfPhMYECAzV89U4G1JAG8bs6NILqbgotgth4qypblGUFPV7UuDC9hUUVSIhFqBSXoHf8mzZ57R7ahOzdJKPMC/8dOVsKo5Kix5tChnb4A8CK3CNMb5QQLamRnfJK0ub5y1BIbI61EStHS6Q5Bji24/Agq4e5XWTfN4sC96NzEbZZrsbiK/8KwbXHVQoQ5klk4/3GtZ X-Forefront-PRVS: 0232B30BBC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(39840400002)(39860400002)(39450400003)(39410400002)(39850400002)(2950100002)(305945005)(6486002)(2906002)(54906002)(6116002)(6666003)(81166006)(8676002)(25786008)(76176999)(50986999)(5660300001)(36756003)(7736002)(50226002)(47776003)(189998001)(10290500002)(86362001)(1076002)(5005710100001)(92566002)(10090500001)(53936002)(5003940100001)(50466002)(38730400002)(107886003)(42186005)(4326008); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2824; H:vroomfondel.redmond.corp.microsoft.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2824; 23:7c7J8iaZfoVv9DVLbJ1sz2DMRB/LMe2sEOf2pBZNv?= =?us-ascii?Q?eX07eyS+AmaBcPfFKLqbMYvheckCUqyZ6xe06i8Xu9QWEooYor0fBr7fj7aj?= =?us-ascii?Q?0Z+tWpbDUFT1ZQbXvBUCotAQ6UvumIBJJpSSmCWaOlh1dMUjEd+nfslz4UV/?= =?us-ascii?Q?SJgNFGCC5V9tKJz/Wsh4Kuer3tBiJC300h7HZBrxDLhVEZs4oEKvoU6gVX04?= =?us-ascii?Q?2HfefKXn+66hFwLPtcmp/0+CwS3FUu9ke/2cUK+8bzJI4a0iXQ72AhpfE/ay?= =?us-ascii?Q?CU53fXtNbbSGS9tZyJp5cpB5YbcdL+zMJxYMX3MjxdIohzkS5IvXiWy1hd6r?= =?us-ascii?Q?O3sRnT9Umvao9qOtAxXnMhWLeCsSPObJybiBh0vmmn9Sycj2oP4emWcGr1e1?= =?us-ascii?Q?P5xURpnqJdFrd0m9aUkAivbPddaBuNEwJN1MmL0qCQhGVfaBeb7CTjyRHaZY?= =?us-ascii?Q?3rGvbhPO2lZbFHsRCTXa+QOiefsg2Ia0Yq1abV0gujxXzWWLe4A08vyKifS7?= =?us-ascii?Q?VTzL/deXydpsb1GiyAj3n+NRURWGa2YfH7rqx+jp8jnY2yD2FClwnHnyWhJO?= =?us-ascii?Q?355DrByHwbFCBemAJkVx2Fg1j9C290FTa4tfqPf88BcYJZMeQNFSoUVJlQ0F?= =?us-ascii?Q?FTxb8q9yllFKkg3jSOce5D+dfOqzeZ+We6rN4YPMYBqSeCBIrZKqEjOQuKmn?= =?us-ascii?Q?+9uahhcEPGGZLZ+9kBPaJPMOen0ZE6zqKCJ141b4SB3+F+u3JDQ8j/8SDv8q?= =?us-ascii?Q?jwpL42EzG5vMlowqh54+bsQV6++Z6E2Pl6POVQ+JVCu1/1GNJbE+CK41yQ2W?= =?us-ascii?Q?HZXmrZ/DoYw/AgVLgTzFlE7EIpAxswhBTPIttn5rspN4OaPK6ShlzkNjgov+?= =?us-ascii?Q?kF3ylb3BC95oG2XgXeLSzo2lcagsR+Kluiuw324BoVUPsNFR4Frh4yqOlo25?= =?us-ascii?Q?EU2g6CoZWTlfhA1AOpe0JyXQ5ScDNSI8htm6tMh4j0f8MtFpkOwvQ4OWNgvF?= =?us-ascii?Q?ryNFwVLSVpFu8j7Tbg+/AJzj9JW7AJj0gLNFnePeM4LCQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 6:xkBqxloznolNYyV5tMUY2qHToinT/ItNTRVDobKHIC1sodKOFxY5CD4x5G15M47yuHvOFnU0I1B5kVKYwcra347WswqdalhXjr5U08SJdsOVbdbDEmJbzmGFS+rA5IQVH4njdQ+xqA2nA5a0XAi+LdT8gPXPCqJv+TQs3+uBn7B/q6aY3mHgink4TfDsp0bpEK8tbvBwFs4C3Rawy195rb1hOhmi09ReH/0tt6spZ7Lp8PXcb1n9Dw+ws/V/0cfQcPg0UbaVC87hUPY0RrioeqJTfVWJc9Zk3vxwmCaGGuV271VAVVBXh6YbwsJo0YmYDiHRWXAG49eoEjAk6bppgDanJusUQ/VdvUXiDoODeZJ9BejYniG/6/8ffrVld/PejaSCFf/yFj+OGYtYjsyri/XmsAvB+OmAx86DclBDSZY=; 5:bf3849itNVKLPquOlLThyLV9ThG/dKR/7MczdVMOzsxNQXwcR3xOO5P+FlUFaG+SkwwKJSbUzEF8+AFu+zpe6fxlnYkQySsYYgr3vuUebPUx508umBeeapI2IwDBeVt7QqiTYhVrbp25v34QzzTs4w==; 24:tnf8bLcGkQD033a0Og1QifRRt9R9qv2WXZBkws0IL6bw7qHm0EEIgmt6qw4GrHK+1l11AjU0Iwjw7wDN1wL6ziKUYWWA2MSOc58W8HCd35o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 7:XaK3F5ULqk8cNu7IJGapSPfNCZouuCa1lfExMdp2KDfnt/9ZY4OkO2d1O7KujW9nawEDJ5rPMnV87TDGw71xjkR6exmNGvndpVqUhpJ7z8DUScLEV6v5q1qn+T6TSAS6GoZO9nyojsiIMjmx4kdMSlAv232lo5JY6SjgHXTEYW0PKLy34qiU5RI0MlYoh2D5NCWkaG+TAKpPwXwtPwQUNODlUh4BAF55FR2dK9VBeEMieDK0xvUNJMfe1YL/qnZ+/O5yqsnKXqlS1alGueIhbbSiP6pD859oaHz4auNRz13NP1FsogVLOclq4IwAU5r6+rAPIxoVpl61Z3kf5CPzJg== X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2017 21:58:14.5334 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2824 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.137 Subject: [Qemu-devel] [PATCH 1/2] target/arm: implement armv8 PMUSERENR (user-mode enable bits) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrew Baumann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In armv8, this register implements more than a single bit, with fine-grained enables for read access to event counters, cycles counters, and write access to the software increment. This change implements those checks using custom access functions for the relevant registers. Signed-off-by: Andrew Baumann --- target/arm/helper.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++--= ---- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 3f4211b..760092a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -885,7 +885,7 @@ static CPAccessResult pmreg_access(CPUARMState *env, co= nst ARMCPRegInfo *ri, */ int el =3D arm_current_el(env); =20 - if (el =3D=3D 0 && !env->cp15.c9_pmuserenr) { + if (el =3D=3D 0 && !(env->cp15.c9_pmuserenr & 1)) { return CP_ACCESS_TRAP; } if (el < 2 && (env->cp15.mdcr_el2 & MDCR_TPM) @@ -899,6 +899,65 @@ static CPAccessResult pmreg_access(CPUARMState *env, c= onst ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult pmreg_access_xevcntr(CPUARMState *env, + const ARMCPRegInfo *ri, + bool isread) +{ + /* ER: event counter read trap control */ + if (arm_feature(env, ARM_FEATURE_V8) + && arm_current_el(env) =3D=3D 0 + && (env->cp15.c9_pmuserenr & (1 << 3)) !=3D 0 + && isread) { + return CP_ACCESS_OK; + } + + return pmreg_access(env, ri, isread); +} + +static CPAccessResult pmreg_access_selr(CPUARMState *env, + const ARMCPRegInfo *ri, + bool isread) +{ + /* ER: event counter read trap control */ + if (arm_feature(env, ARM_FEATURE_V8) + && arm_current_el(env) =3D=3D 0 + && (env->cp15.c9_pmuserenr & (1 << 3)) !=3D 0) { + return CP_ACCESS_OK; + } + + return pmreg_access(env, ri, isread); +} + +static CPAccessResult pmreg_access_ccntr(CPUARMState *env, + const ARMCPRegInfo *ri, + bool isread) +{ + /* CR: cycle counter read trap control */ + if (arm_feature(env, ARM_FEATURE_V8) + && arm_current_el(env) =3D=3D 0 + && (env->cp15.c9_pmuserenr & (1 << 2)) !=3D 0 + && isread) { + return CP_ACCESS_OK; + } + + return pmreg_access(env, ri, isread); +} + +static CPAccessResult pmreg_access_swinc(CPUARMState *env, + const ARMCPRegInfo *ri, + bool isread) +{ + /* SW: software increment write trap control */ + if (arm_feature(env, ARM_FEATURE_V8) + && arm_current_el(env) =3D=3D 0 + && (env->cp15.c9_pmuserenr & (1 << 1)) !=3D 0 + && !isread) { + return CP_ACCESS_OK; + } + + return pmreg_access(env, ri, isread); +} + #ifndef CONFIG_USER_ONLY =20 static inline bool arm_ccnt_enabled(CPUARMState *env) @@ -1068,7 +1127,11 @@ static uint64_t pmxevtyper_read(CPUARMState *env, co= nst ARMCPRegInfo *ri) static void pmuserenr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { - env->cp15.c9_pmuserenr =3D value & 1; + if (arm_feature(env, ARM_FEATURE_V8)) { + env->cp15.c9_pmuserenr =3D value & 0xf; + } else { + env->cp15.c9_pmuserenr =3D value & 1; + } } =20 static void pmintenset_write(CPUARMState *env, const ARMCPRegInfo *ri, @@ -1212,25 +1275,25 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .raw_writefn =3D raw_write }, /* Unimplemented so WI. */ { .name =3D "PMSWINC", .cp =3D 15, .crn =3D 9, .crm =3D 12, .opc1 =3D = 0, .opc2 =3D 4, - .access =3D PL0_W, .accessfn =3D pmreg_access, .type =3D ARM_CP_NOP = }, + .access =3D PL0_W, .accessfn =3D pmreg_access_swinc, .type =3D ARM_C= P_NOP }, #ifndef CONFIG_USER_ONLY { .name =3D "PMSELR", .cp =3D 15, .crn =3D 9, .crm =3D 12, .opc1 =3D 0= , .opc2 =3D 5, .access =3D PL0_RW, .type =3D ARM_CP_ALIAS, .fieldoffset =3D offsetoflow32(CPUARMState, cp15.c9_pmselr), - .accessfn =3D pmreg_access, .writefn =3D pmselr_write, + .accessfn =3D pmreg_access_selr, .writefn =3D pmselr_write, .raw_writefn =3D raw_write}, { .name =3D "PMSELR_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 12, .opc2 =3D 5, - .access =3D PL0_RW, .accessfn =3D pmreg_access, + .access =3D PL0_RW, .accessfn =3D pmreg_access_selr, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pmselr), .writefn =3D pmselr_write, .raw_writefn =3D raw_write, }, { .name =3D "PMCCNTR", .cp =3D 15, .crn =3D 9, .crm =3D 13, .opc1 =3D = 0, .opc2 =3D 0, .access =3D PL0_RW, .resetvalue =3D 0, .type =3D ARM_CP_IO, .readfn =3D pmccntr_read, .writefn =3D pmccntr_write32, - .accessfn =3D pmreg_access }, + .accessfn =3D pmreg_access_ccntr }, { .name =3D "PMCCNTR_EL0", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 3, .crn =3D 9, .crm =3D 13, .opc2 =3D 0, - .access =3D PL0_RW, .accessfn =3D pmreg_access, + .access =3D PL0_RW, .accessfn =3D pmreg_access_ccntr, .type =3D ARM_CP_IO, .readfn =3D pmccntr_read, .writefn =3D pmccntr_write, }, #endif @@ -1251,7 +1314,7 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { /* Unimplemented, RAZ/WI. */ { .name =3D "PMXEVCNTR", .cp =3D 15, .crn =3D 9, .crm =3D 13, .opc1 = =3D 0, .opc2 =3D 2, .access =3D PL0_RW, .type =3D ARM_CP_CONST, .resetvalue =3D 0, - .accessfn =3D pmreg_access }, + .accessfn =3D pmreg_access_xevcntr }, { .name =3D "PMUSERENR", .cp =3D 15, .crn =3D 9, .crm =3D 14, .opc1 = =3D 0, .opc2 =3D 0, .access =3D PL0_R | PL1_RW, .accessfn =3D access_tpm, .fieldoffset =3D offsetof(CPUARMState, cp15.c9_pmuserenr), --=20 2.8.3 From nobody Sat May 4 03:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1488319206239484.32888489258767; Tue, 28 Feb 2017 14:00:06 -0800 (PST) Received: from localhost ([::1]:37220 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cipoS-0005sl-FU for importer@patchew.org; Tue, 28 Feb 2017 17:00:04 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51076) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cipmo-00052f-E4 for qemu-devel@nongnu.org; Tue, 28 Feb 2017 16:58:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cipmk-0005dM-6L for qemu-devel@nongnu.org; Tue, 28 Feb 2017 16:58:22 -0500 Received: from mail-dm3nam03on0137.outbound.protection.outlook.com ([104.47.41.137]:6208 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cipmk-0005cu-0r; Tue, 28 Feb 2017 16:58:18 -0500 Received: from vroomfondel.redmond.corp.microsoft.com (2001:4898:80e8:3::446) by CY4PR03MB2824.namprd03.prod.outlook.com (10.175.115.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Tue, 28 Feb 2017 21:58:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qLX2iuQbwngVueouPyi3GIaDO2M93zIAZgXfUGgVsiM=; b=Og6EYpYSbs7HyUG5HJOUNhpRz6X43jT4jAtbThQkoCnlXsxJifiNgUvT+hZbmYzhayj/1jWeA4P9NGLvdriNPXcAP+xnBAoJ0mlJ/NCznxUpmdp8TEmuFloLydP7rJRwHm2NYd4bcYARUbXD6q55NEh66CF1yTXD4ykhALjZQw0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=microsoft.com; From: Andrew Baumann To: , Date: Tue, 28 Feb 2017 13:58:01 -0800 Message-ID: <20170228215801.10472-3-Andrew.Baumann@microsoft.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20170228215801.10472-1-Andrew.Baumann@microsoft.com> References: <20170228215801.10472-1-Andrew.Baumann@microsoft.com> MIME-Version: 1.0 X-Originating-IP: [2001:4898:80e8:3::446] X-ClientProxiedBy: DM5PR20CA0015.namprd20.prod.outlook.com (10.173.136.153) To CY4PR03MB2824.namprd03.prod.outlook.com (10.175.115.142) X-MS-Office365-Filtering-Correlation-Id: 8f095d25-3dd4-455e-634d-08d46024e5c2 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR03MB2824; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 3:sRIMSF9IwAumKC4p0OjjPtkQZxhReQgEZsfkzsVa9nBQYqr34hilCmAa0tOlALxBWXODZwOpUXXctdGJSOHtB2TpF36qmFi6lwZoYNKO+CWHlGvSyBV51n+Jc5GiXpmecYtSqb3MEpADDo0fbecUDt2xNbJHtUUitaL7Sgg4c48Gjz+SqbVYvoZYPdKtxBb9xd4xnqfRTTYTXHDNAkZ60xo3cirUnVAYxNfC+GNal7VDZ0eCz8QERYWJcaY/n6rPQQQzU5/4FOkPyFXM42sIsHs8Tp2Q1wkOrcg6cOp4u9k=; 25:kI6avI/+34kJyFO+7mRjvXkrOAOowq9oTIEoPq30EHIlbCOf59PTotIJo9PQkSnGbFIAIKRIpPJXzSSajsppb6n66t1qQsD9ZefgzDghIhwE7NqGXbNgQI5andxJVP4ebJp/p5t93DH5K7T///OOpUM8Zk9LnyxK19iwLD6feAFoHKspGpUIn2YFiNjjsZyEaOD73fkfEkYqIJ65kDj4SS93FSqdbGglue0Yk3EL0WJH63ta5FagRDiOUK6gCOohxCC0y43J6n4iOE4+hTnx7Et+340p9H8KBTteDFlIGh9uz7jCIAfvz4fJmlF32ZXyk+0412JViZmLJUbc47UbtFzdrr0fKE6vTayAJUCoKdjnX5jKKA4bkj7kn7jWWR0mhEpIop4wfej3Ul6rD3+WZzedcHcrHJKgG91qf4vQbMMj5tRha1aRmwYUCSfHZaK19uy2F0EivC5BqVc/TGgKdQ== X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 31:z5bLs7fEdUhZsbzv1tyHUp6WApnbA69iS2be1vgWyY2lR4dqFssCfo7RIcVaiKfw5HkQVC0Rg18DQ09zOqwC282/aS88Twah0arPibyQQpfgqmI2kVr9Q6WMi1UH463EJlSwGc7UV7ShOFAay+l7duk9xamD34YMKpX221KccT5TbJAPPpQQYLynizmcGMv+1LLHUEcbasgD/NxOcSrUbVbKwK39fOzYWCaUTfkuuOUm1DO0YhK7Eu0b1XgcLcfLdjjWpiPnu6kEy/TstjX6/w==; 20:5I+O82dS9HL00xYXUJx8QWCNZxUQKFkSkCGOW0nrMsMYSn6BEu2qtj5vuRTlw0J6hvHw5e1UzGK2kABP5PJKmDzv75z+No63DDCYl6Wqk1zK2EsBmLJFPVgS2Ul+teWMQSrQKD074tDb7X0qvH4LuSsXqrhKMmxOwqaYZlwtyzX+aJ6mSblMrx3aUAE8hdquKU6jyH2ZN4fVBSB+albdxZPkdL13Cu+mRLTZAtN6NohblrePbVHVcNMSL9L8QyBfwGXff8BRBNIHkJ+MjaJ2hgr1Otp1gNBQU31BdUAIb6yPPvarFCGGuFH2B2PPJApTplx6iQbBOqJQbLDskEGMrVO/qO1tQT+G95ruyQDpLx8Ljr+jcOJRLg1JZKQq0n1Y2yRrvIwUcraUABk0N8eGoiznbWHeeAH46ssuy7Oh+HqdWRPqLY4jNWzSiIuP+Z9s8M5ohiJimnQuEUeRvfxbDY6v7UvsGh5fVX4dL6pWsMN0zHUmZ5lwwUASOtF0BiNY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(20161123558025)(6072148); SRVR:CY4PR03MB2824; BCL:0; PCL:0; RULEID:; SRVR:CY4PR03MB2824; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 4:6JWeprd7eilRwt6CvuCEwkZoTgOV1Q/0Ah5HyBUfOJuhWpYlGH4gWe2NXptcatDetJS+HOSFTGlUvG9qBGOIQCZDsqe742aIah935oz/QrS5YrBvf1ZGluCLw76pQ/1Xdxai00QWAx/toA3fzckzMD3g1WFml1Oa3JU15NbmU7EuL9Kpb3ChVQJ86Ssl/CKEVFzalEWypKM5mo3sqqI0YDVdhJd6H6Z0gxZqiqI//zrcVzFysBlQCxrXH7YQJmWquVnSGeY9C7MdAk/8b4hBCnUG4uVIGTaewW8oqqNpZQHVmpTmBFxUKV98PjepBX9xlCHAtpP9B+tQRGd/BjSOGZPwS5i03hA6zD9p5sV6h7GUwx3cZn1BI8R941BeZYxSTdZVzljLK9c6TaThn/GGS+rIf74aJ7VAufGzdkqBcII1mbeGivtbMhA4HBLxgAz6Unog80qLwx7LzVoE5wOwtuqp2zi79wU8Bw3PsLgnvCqqiwbSCFAUr8jWGbkUn5C7cvPr/daTE0JkbqaMDW9jVQHVmI3pHSeDlFQhmw/jmGs61Nj0bOHVF0VV17RS7gCCegfLdvJQkIvU26fU9XV2q5nXXrt9uhXGN1Xbidky4PhrkIhglCuruRv42J9HQrvQ X-Forefront-PRVS: 0232B30BBC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(979002)(6009001)(7916002)(39840400002)(39860400002)(39450400003)(39410400002)(39850400002)(2950100002)(305945005)(6486002)(2906002)(54906002)(6116002)(6666003)(81166006)(8676002)(25786008)(76176999)(50986999)(5660300001)(36756003)(7736002)(50226002)(47776003)(189998001)(10290500002)(86612001)(86362001)(1076002)(5005710100001)(92566002)(10090500001)(53936002)(48376002)(5003940100001)(50466002)(38730400002)(107886003)(42186005)(4326008)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:CY4PR03MB2824; H:vroomfondel.redmond.corp.microsoft.com; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2824; 23:mlkpOepic7hXrLRbfG2Gg5OpPt1oJcyMdlmqLj8rm?= =?us-ascii?Q?82YKiDlBWZZCs4AXsPL6ohq6rdAAVrUPX1UHFLncMIAXCJafhdsteWc7f9Oo?= =?us-ascii?Q?qQsSdbdOMJeRQQJpj77iphsbtGHznTFmfdkWus2yYoryy4mZkXmbW6AsfYrn?= =?us-ascii?Q?nBj5JcGhP3/ZZIgA4IdYTEs2d7RxzV/i447GSdY7P1kOBU3y1IHSgrtaxd7a?= =?us-ascii?Q?9FFPQfqURy3aqf4p84l2C2PUBD9QjTmZlJ8Zhq2QhLZHejvLn8lrNpIbpLa9?= =?us-ascii?Q?VgBT+dtp2OMWJ7VmgMCKlgDGA8zBMrYs1hA/YltXRVfp0pUBC7PswflOrszl?= =?us-ascii?Q?V+uwsvi3NWnqyr4SkEOlNmjIduR7k31x2ZNzQiv6IrTIDFuSmmMfD4Y7pet9?= =?us-ascii?Q?JtgpwMIqKNaCdXGEDlPVaows9974X8pK0vgaEgh3LWZhVDObuY/IR0VZEhGL?= =?us-ascii?Q?FFJGez0CWKla4pyO2m67WqeAFKTZ68zCKZpaGsflLNczkLIYvMClt923RuC1?= =?us-ascii?Q?f7U2l48Y5YHTlj+8ry2H7BROmqSKiAjh5Ouvse3S3CAGk10cmkoW3LtkzmjN?= =?us-ascii?Q?X0BI6TeBpfH2tVD6GxeYXZAN5T6s5taahWgjfysrr6mOp9HsOHkqtNvyFFWZ?= =?us-ascii?Q?hFCZx2IVkRD0MzVg2fD2+VlOdl5CG8FFrNlegD+sTro8PxK+Q0EeT+gEasTg?= =?us-ascii?Q?RGRVz+NSX4dmQ1SuOZZx+1oSl8MFLx70zCn1jFTcpBGZ2AeVdrMqmNueq9Kt?= =?us-ascii?Q?j7NXljxTO8kRUE0f1Pgy7HKs8bMTSbS26OT9Xi7Zp7TGDpidBJmAcvPTZ9Lh?= =?us-ascii?Q?fDLcUrLrSYYVvxozuQuN0kmzIbEo7r6KHC7+cECd3Ev4nLJ4FTFTjM/qm8lf?= =?us-ascii?Q?oHscHbIce4vNRAwGr+kJj6oQalPBo+lpiE/56UQlPb1DKlNTkbykMx0T2I5W?= =?us-ascii?Q?nki4NnV+Db2jQoaWXs+0X9JdJyYoXMMD7PYEtyoo4naKwWqhnGCbikSylba6?= =?us-ascii?Q?eIbHrd+L6LYaV4a+tGB7GTLvdbL9p5t/gE7Uqm+00g/n7poDtjncdAtZg4R7?= =?us-ascii?Q?lrlR4StKyVrHcI/PxeBx21Oez/Ja1iXJG0IX0glDaxOzzHIPbyb5feJFoGCk?= =?us-ascii?Q?sfTJNHF2bAEUFXX1Q7CXrvsW96U24COpHThLEo6lz1pMe+5DahcjQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 6:RqbH4K0jk118rMvRoA+jv8pIb6HmrOFNlgjFXlmLe8BfO0MnxiYF1Rdkskc7KBhPX6Ac7Gecy661IqdTj3/jc7xBg4p/dE6ocspmaQVSShKjW9KeqQFEvEacS6+Ts+n9tS6geLLyYMLaeN+r/wLsRcWJWiNpDLovrk+C4/gOfvr9hgdNUjWdR3EbvCnc6AGGdV0VYctM5qWzA+AWqqAZWody8oSIq4yNSAwMH0yJGBwYUDXGE3SNNPbWqBL68M0cuOZTXXO/r2xOmbtdDHrX33GBFJM1ALF/hzyRZEab9NqM+QypjiDK03/TUeIBAey5fMwLiEEFcWcBI126hn1Ymu+TulZ1pKkV6OOB5q2ANNQVoG03yMy7PwPgGVugasZfm2ozXtW2jOE4LA0uYKHloLgxijKx1jlv3vYCceCJFgM=; 5:R2acLZzn4yXh2/HxedP2q+7Z4Ij/9WEjJPu4x+rjI+o5xTz5JtLeUyreIztwOh2DfYJfKIxBazhaG88cId9OhQ1rnVFRBBsfaLhim/vuUmn83KfAUPLtehjdrN9esCLbUKPKNJwmMYhxBeyZLOF6wg==; 24:nlRMBMgsJJuvuusZeTDYumgrPTPdXnl16OqbSUv0qbTdMoi2kend2UU362Ht4G8rWdC2fFZ4jJ+tGDhguCozkdA0bGZwNXhPbipqWA969Go= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2824; 7:VgKQGREUOnsku2O/qoL01/pacEKfKKgjv5tWg0Q/qTxGqVuhc9qvdvRhkyDCIDhMDWn1IiRiBsvaQg4IAmZ0IBOuAqM6StEWAud4otmswosyvQTTqIFzmIf8+lnR9t7XCRxVwjInaN7pGieKyl3jjsR804ju7VU2cVBu0c9dB7dtH9VuSOIWGR2+ZGIL1E+IQiCJBjlYI/H87dw41uLLPL3F+ReVXOHJ+OMEC9nK3/wIIRuDl5jSxTiGpzGGmQQH3H8bqNE33k+9tiCd+omJdONA+dtJLy5ICYqxMJkAuR8aJlN6BhuN2IaKkygomRGsycUuVhsyOdGva+1CgLYq0g== X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2017 21:58:15.2440 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2824 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.137 Subject: [Qemu-devel] [PATCH 2/2] target/arm: lie more convincingly about memory attributes in PAR_EL1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Andrew Baumann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On a successful long-descriptor translation, PAR_EL1 bits 56:63 are expected to report the memory attributes of the page. However, the page table walker (get_phys_addr()) does not currently retrieve these attributes. Rather than leaving these bits clear (which implies uncacheable device memory), this change sets them to 0xff, which corresponds to write-back cached normal memory. Signed-off-by: Andrew Baumann --- In my (biased!) opinion, this is a better lie to tell for an emulated environment. It also happens to un-break the Windows boot process, and enable an NT kernel optimisation (DC ZVA for page zeroing). target/arm/helper.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 760092a..b858d6d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2159,7 +2159,13 @@ static uint64_t do_ats_write(CPUARMState *env, uint6= 4_t value, if (!attrs.secure) { par64 |=3D (1 << 9); /* NS */ } - /* We don't set the ATTR or SH fields in the PAR. */ + /* ATTR bits are all set, which implies: + * normal memory + * outer write-back non-transient, read/write-allocate + * inner write-back non-transient, read/write-allocate + */ + par64 |=3D ((uint64_t)0xff << 56); /* ATTR */ + /* We don't set the SH field in the PAR. */ } else { par64 |=3D 1; /* F */ par64 |=3D (fsr & 0x3f) << 1; /* FS */ --=20 2.8.3