From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2640CC4332F for ; Fri, 11 Mar 2022 17:21:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 9E5914045D; Fri, 11 Mar 2022 12:21:50 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Authentication-Results: mm01.cs.columbia.edu (amavisd-new); dkim=softfail (fail, message has been altered) header.i=@armh.onmicrosoft.com Authentication-Results: mm01.cs.columbia.edu (amavisd-new); dkim=softfail (fail, message has been altered) header.i=@armh.onmicrosoft.com Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id A8X7WxtMsf76; Fri, 11 Mar 2022 12:21:48 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 0B1ED40AEA; Fri, 11 Mar 2022 12:21:48 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id BE8B7404FA for ; Fri, 11 Mar 2022 12:21:46 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rK-xzihxg7zT for ; Fri, 11 Mar 2022 12:21:44 -0500 (EST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70082.outbound.protection.outlook.com [40.107.7.82]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id C897E4045D for ; Fri, 11 Mar 2022 12:21:43 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from AS9P194CA0020.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::20) by AS8PR08MB6615.eurprd08.prod.outlook.com (2603:10a6:20b:335::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Fri, 11 Mar 2022 17:21:38 +0000 Received: from VE1EUR03FT059.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46d:cafe::e6) by AS9P194CA0020.outlook.office365.com (2603:10a6:20b:46d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.20 via Frontend Transport; Fri, 11 Mar 2022 17:21:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT059.mail.protection.outlook.com (10.152.19.60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.24 via Frontend Transport; Fri, 11 Mar 2022 17:21:38 +0000 Received: ("Tessian outbound 18e50a6f0513:v113"); Fri, 11 Mar 2022 17:21:37 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8e8098db8cb5aab5 X-CR-MTA-TID: 64aa7808 Received: from cb137c28f097.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id EEECC8BA-A452-4B73-AD1E-3F742B885BFF.1; Fri, 11 Mar 2022 17:21:26 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cb137c28f097.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 11 Mar 2022 17:21:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mo80a0bhtN30/B3I3yGyG5nArkY7wqqQ4AQqDjuDOjaUtc/EihgfdXFwNG7bY+pPgDgTJv2XnDihZPG5klCDkhCwlzPw2RDeFp9W0mC5pVcszLBmOUktB2krmLotbuJKwp1lxc1r5iGKSVSNR3xPX/Pr2I71uIagQ0Ge+mBGXKFniUhLA8089mkGtHZgQ+0jNSjAQtpWUwOvtz2C7+gqVOjr1MoyhqXGKjEYnIaD2UXFdl3w4784VXORHzl+I0ri77080QJuMSRBbf9AGhkHOHCoj9UPQ2AwGWMnOeH5oPs3lbtZmnLsYv0S9Ob899l3R/TZaXaYGCtB3V6iWsUsgA== 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=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=ZzBUOyD++oewWZL8UIrbYGcXE54wICwFSt2NdQs+f0VB7XJc6vzibB79qbMfMYH2dRw1m8CEChngRa3teRSEYkbpDLyKd9fmfbHd3psYGqLZAcF0TKTxklM7w3bT9shT/DP8GXaDbdMuU0yu1W6Xq7TvbPu90uIXuusTMSn7Bpy/ravm3GAAfHIM/bMhX2YCnhOmlIRyBYNejDGv6RCvFldkv6HIjvEqS/LSUEKgPdcxUeXymZUxc23xxQCqfGclT68ccNmGhAzXI4/vXdbv4s1nchQOyYN1q5UuQ/g0rxQvsvjt07lAv8/yG9O3lyejbKQx0aKDXpwy+2ERrxoAIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by VI1PR08MB4480.eurprd08.prod.outlook.com (2603:10a6:803:f6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.15; Fri, 11 Mar 2022 17:21:21 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240%4]) with mapi id 15.20.5061.022; Fri, 11 Mar 2022 17:21:21 +0000 From: Szabolcs Nagy To: Mark Brown Subject: Re: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Topic: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Index: AQHYKm4CIV9MScju9UunLqTD29wmxKy6g9qA Date: Fri, 11 Mar 2022 17:21:21 +0000 Message-ID: <20220311172051.GA257833@arm.com> References: <20220225165923.1474372-1-broonie@kernel.org> <20220225165923.1474372-7-broonie@kernel.org> In-Reply-To: <20220225165923.1474372-7-broonie@kernel.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: bb12d45c-2a37-44c9-75cd-08da038399db x-ms-traffictypediagnostic: VI1PR08MB4480:EE_|VE1EUR03FT059:EE_|AS8PR08MB6615:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: dJjE/j60t/zriXZ11CyN+BJBQadBwsHw26JudFPmbHhNMkBPxtRNqn6OzWJrzLju6T898uxIcIhy8/nOTKAQSjVIvLECd94x8HU3yHM48UFHLrx0XzR7wDT7++bgcOtwMOc0EtzmrEw3i0QPg6YHGRT45/iGs0xQyggqIAzlUuCfTFHbBFG0KpbFlHIwWLs4TokPjAoiOt8TVUYasAWINxq2U+7OiYRghntx8jhM+iyNeMcDx+AGspu0op/o40Lhk8jfZ6TPTrQ9V/aQrSNi7LIy9TRem6qaUWxKw+m8aD3rxBMjIGnvYQ4VzmY+oQvxIa95Bn1+N+Fcu+p3aA3UTZz0bD3q/2UrVC4zANtoYnWzxNhFDfOtPBqVXqx+32FDXAjC2Y/Lb1CCIB4TJ9oasOWXszw9jdDWRBy00WE+d8eoINjoZlwgyEGmikkroigTm1PCydIjt4qEOKoLnttamudbdRUwMm6/GYi9i9ngZLyViVEh5gGGkLd6H46TTXYdBtsHJwjEkk0NqhVnvx1BMGvpsuDcUXaUa5rt9Ye7Xv5VUK5a+RzFNKkJD4fxZkfgx0I2/HDn0b9+uYF2HDRLCcsDOWm/H808LTIKM1dqVZyfPtMIJcwiQ8zxKk5foH3XEreTGhC1BCrjg3vWw5Vj+jteG//8nFYf5suRsbOxZ41kt1K1deSScZOup+xNbiEpgiNdesigPgmSseqUx6uhmO9ePEvjt3BuuGyIOtE9vm0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB7179.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(2616005)(1076003)(26005)(6506007)(2906002)(71200400001)(186003)(122000001)(36756003)(6512007)(54906003)(38100700002)(33656002)(83380400001)(508600001)(6486002)(5660300002)(66556008)(66476007)(66446008)(66946007)(30864003)(76116006)(38070700005)(91956017)(6916009)(8676002)(4326008)(8936002)(86362001)(316002)(64756008)(27376004)(559001)(579004); DIR:OUT; SFP:1101; Content-ID: <02E3452A64942A4FA788DFFE56A6A419@eurprd08.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4480 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3f0671f0-dbbb-4423-0e66-08da0383900d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ULwdRBxW1UTFqN+hsGoi1XVLBeTQSerAt+vfesVEt/0oKeN6buuZQoMtOB8RZIvLITL4rKakpZhCoFcTJNU5QVQlYQDl/5dtKkFdeLLMm0TkFBjm7Pnex0hDvd6T5fZwiz853PDJ+GFFUUz4ii6biV9EQ1YXJiebpjQohuivXzgReWsxwEfoqLr5afW7CwnEYdbH3YOk3NWRwc5Tk00kSKbmytmL+73oQjbA/OX2/hEQWgAuFfdsjWbZqJaJvDNEe+PZe3t7gvSgPDppR7nFkxjsvw/bn9gHwE9s3NLYyrjlceCfUDq1Hj11SiLevcyo5GZq429HS4e53ZROiY8XSBf+tcmjdhVXtiOOH+ZM1Q/1ttXMF65+7Otxdz0wBThQVgtUn6x/nsv9x9JvMIBnho5ZD9ZikBFGqf7v28cOMP+8ODjGhR8cwyI2U5JD+rj2Yvr465Vb7riiO5Wi9ZuHaVqCst68ff4WInFQp5HTIWdOaCFrgc/S7/Q3d8crwE2T5+dt/Su8ccuIZ/gpQIy1PRvOKnBoCsGpQaswbH0PlRyNeqofiUx/DhBh3PUwoLuuT6DGReOzvmfqe38IFeUzqIZKUKRsdn7u9RKn5JaPvB43DjEb6MnFMsf0pA7Fc+KFOCJXVvZTjyGVJQ/eI7Hexs7Sl08d/YpNeB6R1/9B7TU42pf3DMNodpN9GVRGg85dzDNK3IKj/pQbGER9A05llw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(70586007)(5660300002)(86362001)(2906002)(70206006)(6862004)(4326008)(6486002)(508600001)(8676002)(36756003)(2616005)(1076003)(33656002)(8936002)(83380400001)(316002)(186003)(26005)(356005)(6512007)(82310400004)(40460700003)(6506007)(47076005)(54906003)(81166007)(30864003)(36860700001)(336012)(27376004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2022 17:21:38.1854 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bb12d45c-2a37-44c9-75cd-08da038399db X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6615 Cc: Marc Zyngier , Basant KumarDwivedi , Will Deacon , Luis Machado , Catalin Marinas , Alan Hayward , "linux-arm-kernel@lists.infradead.org" , "linux-kselftest@vger.kernel.org" , Shuah Khan , Shuah Khan , "kvmarm@lists.cs.columbia.edu" , Salil Akerkar X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu The 02/25/2022 16:58, Mark Brown wrote: > Provide ABI documentation for SME similar to that for SVE. Due to the very > large overlap around streaming SVE mode in both implementation and > interfaces documentation for streaming mode SVE is added to the SVE > document rather than the SME one. > > Signed-off-by: Mark Brown > --- ... > +1. General > +----------- > + > +* PSTATE.SM, PSTATE.ZA, the streaming mode vector length, the ZA > + register state and TPIDR2_EL0 are tracked per thread. > + > +* The presence of SME is reported to userspace via HWCAP2_SME in the aux vector > + AT_HWCAP2 entry. Presence of this flag implies the presence of the SME > + instructions and registers, and the Linux-specific system interfaces > + described in this document. SME is reported in /proc/cpuinfo as "sme". > + > +* Support for the execution of SME instructions in userspace can also be > + detected by reading the CPU ID register ID_AA64PFR1_EL1 using an MRS > + instruction, and checking that the value of the SME field is nonzero. [3] > + > + It does not guarantee the presence of the system interfaces described in the > + following sections: software that needs to verify that those interfaces are > + present must check for HWCAP2_SME instead. > + > +* There are a number of optional SME features, presence of these is reported > + through AT_HWCAP2 through: > + > + HWCAP2_SME_I16I64 > + HWCAP2_SME_F64F64 > + HWCAP2_SME_I8I32 > + HWCAP2_SME_F16F32 > + HWCAP2_SME_B16F32 > + HWCAP2_SME_F32F32 > + HWCAP2_SME_FA64 > + > + This list may be extended over time as the SME architecture evolves. > + > + These extensions are also reported via the CPU ID register ID_AA64SMFR0_EL1, > + which userspace can read using an MRS instruction. See elf_hwcaps.txt and > + cpu-feature-registers.txt for details. > + > +* Debuggers should restrict themselves to interacting with the target via the > + NT_ARM_SVE, NT_ARM_SSVE and NT_ARM_ZA regsets. The recommended way > + of detecting support for these regsets is to connect to a target process > + first and then attempt a > + > + ptrace(PTRACE_GETREGSET, pid, NT_ARM_, &iov). > + > +* Whenever ZA register values are exchanged in memory between userspace and > + the kernel, the register value is encoded in memory as a series of horizontal > + vectors from 0 to VL/8-1 stored in the same endianness invariant format as is > + used for SVE vectors. > + > +* On thread creation TPIDR2_EL0 is preserved unless CLONE_SETTLS is specified, > + in which case it is set to 0. > + This looks OK. > +2. Vector lengths > +------------------ > + > +SME defines a second vector length similar to the SVE vector length which is > +controls the size of the streaming mode SVE vectors and the ZA matrix array. > +The ZA matrix is square with each side having as many bytes as a SVE vector. > + i would s/SVE vector/streaming mode SVE vector/ or give SME vector length some other name and use that throughout. > + > +3. Sharing of streaming and non-streaming mode SVE state > +--------------------------------------------------------- > + > +It is implementation defined which if any parts of the SVE state are shared > +between streaming and non-streaming modes. When switching between modes > +via software interfaces such as ptrace if no register content is provided as > +part of switching no state will be assumed to be shared and everything will > +be zeroed. > + OK. > + > +4. System call behaviour > +------------------------- > + > +* On syscall PSTATE.ZA is preserved, if PSTATE.ZA==1 then the contents of the > + ZA matrix are preserved. > + > +* On syscall PSTATE.SM will be cleared and the SVE registers will be handled > + as normal. > + > +* Neither the SVE registers nor ZA are used to pass arguments to or receive > + results from any syscall. > + > +* On creation fork() or clone() the newly created process will have PSTATE.SM > + and PSTATE.ZA cleared. is there a reason why fork() clears ZA? i think this is a minor issue, but the usual expectation is that on thread creation thread local state is reset in the child, but in a forked child the state is the same as in the parent (where ZA is preserved according to the first rule). > + > +* All other SME state of a thread, including the currently configured vector > + length, the state of the PR_SME_VL_INHERIT flag, and the deferred vector > + length (if any), is preserved across all syscalls, subject to the specific > + exceptions for execve() described in section 6. > + OK other than the fork comment. > + > +5. Signal handling > +------------------- > + > +* Signal handlers are invoked with streaming mode and ZA disabled. > + > +* A new signal frame record za_context encodes the ZA register contents on > + signal delivery. [1] > + > +* The signal frame record for ZA always contains basic metadata, in particular > + the thread's vector length (in za_context.vl). > + > +* The ZA matrix may or may not be included in the record, depending on > + the value of PSTATE.ZA. The registers are present if and only if: > + za_context.head.size >= ZA_SIG_CONTEXT_SIZE(sve_vq_from_vl(za_context.vl)) > + in which case PSTATE.ZA == 1. > + > +* If matrix data is present, the remainder of the record has a vl-dependent > + size and layout. Macros ZA_SIG_* are defined [1] to facilitate access to > + them. > + > +* The matrix is stored as a series of horizontal vectors in the same format as > + is used for SVE vectors. > + > +* If the ZA context is too big to fit in sigcontext.__reserved[], then extra > + space is allocated on the stack, an extra_context record is written in > + __reserved[] referencing this space. za_context is then written in the > + extra space. Refer to [1] for further details about this mechanism. > + OK. > + > +5. Signal return > +----------------- > + > +When returning from a signal handler: > + > +* If there is no za_context record in the signal frame, or if the record is > + present but contains no register data as described in the previous section, > + then ZA is disabled. > + > +* If za_context is present in the signal frame and contains matrix data then > + PSTATE.ZA is set to 1 and ZA is populated with the specified data. > + > +* The vector length cannot be changed via signal return. If za_context.vl in > + the signal frame does not match the current vector length, the signal return > + attempt is treated as illegal, resulting in a forced SIGSEGV. > + OK. > + > +6. prctl extensions > +-------------------- > + > +Some new prctl() calls are added to allow programs to manage the SME vector > +length: > + > +prctl(PR_SME_SET_VL, unsigned long arg) > + > + Sets the vector length of the calling thread and related flags, where > + arg == vl | flags. Other threads of the calling process are unaffected. > + > + vl is the desired vector length, where sve_vl_valid(vl) must be true. > + > + flags: > + > + PR_SME_VL_INHERIT > + > + Inherit the current vector length across execve(). Otherwise, the > + vector length is reset to the system default at execve(). (See > + Section 9.) > + > + PR_SME_SET_VL_ONEXEC > + > + Defer the requested vector length change until the next execve() > + performed by this thread. > + > + The effect is equivalent to implicit execution of the following > + call immediately after the next execve() (if any) by the thread: > + > + prctl(PR_SME_SET_VL, arg & ~PR_SME_SET_VL_ONEXEC) > + > + This allows launching of a new program with a different vector > + length, while avoiding runtime side effects in the caller. > + > + Without PR_SME_SET_VL_ONEXEC, the requested change takes effect > + immediately. > + > + > + Return value: a nonnegative on success, or a negative value on error: > + EINVAL: SME not supported, invalid vector length requested, or > + invalid flags. > + > + > + On success: > + > + * Either the calling thread's vector length or the deferred vector length > + to be applied at the next execve() by the thread (dependent on whether > + PR_SME_SET_VL_ONEXEC is present in arg), is set to the largest value > + supported by the system that is less than or equal to vl. If vl == > + SVE_VL_MAX, the value set will be the largest value supported by the > + system. > + > + * Any previously outstanding deferred vector length change in the calling > + thread is cancelled. > + > + * The returned value describes the resulting configuration, encoded as for > + PR_SME_GET_VL. The vector length reported in this value is the new > + current vector length for this thread if PR_SME_SET_VL_ONEXEC was not > + present in arg; otherwise, the reported vector length is the deferred > + vector length that will be applied at the next execve() by the calling > + thread. > + > + * Changing the vector length causes all of ZA, P0..P15, FFR and all bits of > + Z0..Z31 except for Z0 bits [127:0] .. Z31 bits [127:0] to become > + unspecified, including both streaming and non-streaming SVE state. > + Calling PR_SME_SET_VL with vl equal to the thread's current vector > + length, or calling PR_SME_SET_VL with the PR_SVE_SET_VL_ONEXEC flag, > + does not constitute a change to the vector length for this purpose. > + > + * Changing the vector length causes PSTATE.ZA and PSTATE.SM to be cleared. > + Calling PR_SME_SET_VL with vl equal to the thread's current vector > + length, or calling PR_SME_SET_VL with the PR_SVE_SET_VL_ONEXEC flag, > + does not constitute a change to the vector length for this purpose. > + > + > +prctl(PR_SME_GET_VL) > + > + Gets the vector length of the calling thread. > + > + The following flag may be OR-ed into the result: > + > + PR_SME_VL_INHERIT > + > + Vector length will be inherited across execve(). > + > + There is no way to determine whether there is an outstanding deferred > + vector length change (which would only normally be the case between a > + fork() or vfork() and the corresponding execve() in typical use). > + > + To extract the vector length from the result, bitwise and it with > + PR_SME_VL_LEN_MASK. > + > + Return value: a nonnegative value on success, or a negative value on error: > + EINVAL: SME not supported. > + OK. > + > +7. ptrace extensions > +--------------------- > + > +* A new regset NT_ARM_SSVE is defined for access to streaming mode SVE > + state via PTRACE_GETREGSET and PTRACE_SETREGSET, this is documented in > + sve.rst. > + > +* A new regset NT_ARM_ZA is defined for ZA state for access to ZA state via > + PTRACE_GETREGSET and PTRACE_SETREGSET. > + > + Refer to [2] for definitions. > + > +The regset data starts with struct user_za_header, containing: > + > + size > + > + Size of the complete regset, in bytes. > + This depends on vl and possibly on other things in the future. > + > + If a call to PTRACE_GETREGSET requests less data than the value of > + size, the caller can allocate a larger buffer and retry in order to > + read the complete regset. > + > + max_size > + > + Maximum size in bytes that the regset can grow to for the target > + thread. The regset won't grow bigger than this even if the target > + thread changes its vector length etc. > + > + vl > + > + Target thread's current streaming vector length, in bytes. > + > + max_vl > + > + Maximum possible streaming vector length for the target thread. > + > + flags > + > + Zero or more of the following flags, which have the same > + meaning and behaviour as the corresponding PR_SET_VL_* flags: > + > + SME_PT_VL_INHERIT > + > + SME_PT_VL_ONEXEC (SETREGSET only). > + > +* The effects of changing the vector length and/or flags are equivalent to > + those documented for PR_SME_SET_VL. > + > + The caller must make a further GETREGSET call if it needs to know what VL is > + actually set by SETREGSET, unless is it known in advance that the requested > + VL is supported. > + > +* The size and layout of the payload depends on the header fields. The > + SME_PT_ZA_*() macros are provided to facilitate access to the data. > + > +* In either case, for SETREGSET it is permissible to omit the payload, in which > + case the vector length and flags are changed and PSTATE.ZA is set to 0 > + (along with any consequences of those changes). If a payload is provided > + then PSTATE.ZA will be set to 1. > + > +* For SETREGSET, if the requested VL is not supported, the effect will be the > + same as if the payload were omitted, except that an EIO error is reported. > + No attempt is made to translate the payload data to the correct layout > + for the vector length actually set. It is up to the caller to translate the > + payload layout for the actual VL and retry. > + > +* The effect of writing a partial, incomplete payload is unspecified. > + I'm not familiar with ptrace, but looks OK. > + > +8. ELF coredump extensions > +--------------------------- > + > +* NT_ARM_SSVE notes will be added to each coredump for > + each thread of the dumped process. The contents will be equivalent to the > + data that would have been read if a PTRACE_GETREGSET of the corresponding > + type were executed for each thread when the coredump was generated. > + > +* A NT_ARM_ZA note will be added to each coredump for each thread of the > + dumped process. The contents will be equivalent to the data that would have > + been read if a PTRACE_GETREGSET of NT_ARM_ZA were executed for each thread > + when the coredump was generated. > + OK. > + > +9. System runtime configuration > +-------------------------------- > + > +* To mitigate the ABI impact of expansion of the signal frame, a policy > + mechanism is provided for administrators, distro maintainers and developers > + to set the default vector length for userspace processes: > + > +/proc/sys/abi/sme_default_vector_length > + > + Writing the text representation of an integer to this file sets the system > + default vector length to the specified value, unless the value is greater > + than the maximum vector length supported by the system in which case the > + default vector length is set to that maximum. > + > + The result can be determined by reopening the file and reading its > + contents. > + > + At boot, the default vector length is initially set to 32 or the maximum > + supported vector length, whichever is smaller and supported. This > + determines the initial vector length of the init process (PID 1). > + > + Reading this file returns the current system default vector length. > + > +* At every execve() call, the new vector length of the new process is set to > + the system default vector length, unless > + > + * PR_SME_VL_INHERIT (or equivalently SME_PT_VL_INHERIT) is set for the > + calling thread, or > + > + * a deferred vector length change is pending, established via the > + PR_SME_SET_VL_ONEXEC flag (or SME_PT_VL_ONEXEC). > + > +* Modifying the system default vector length does not affect the vector length > + of any existing process or thread that does not make an execve() call. > + OK. > + > +Appendix A. SME programmer's model (informative) > +================================================= > + > +This section provides a minimal description of the additions made by SVE to the > +ARMv8-A programmer's model that are relevant to this document. > + > +Note: This section is for information only and not intended to be complete or > +to replace any architectural specification. > + > +A.1. Registers > +--------------- > + > +In A64 state, SME adds the following: > + > +* A new mode, streaming mode, in which a subset of the normal FPSIMD and SVE > + features are available. When supported EL0 software may enter and leave > + streaming mode at any time. > + > + For best system performance it is strongly encouraged for software to enable > + streaming mode only when it is actively being used. > + > +* A new vector length controlling the size of ZA and the Z registers when in > + streaming mode, separately to the vector length used for SVE when not in > + streaming mode. There is no requirement that either the currently selected > + vector length or the set of vector lengths supported for the two modes in > + a given system have any relationship. The streaming mode vector length > + is referred to as SVL. > + > +* A new ZA matrix register. This is a square matrix of SVLxSVL bits. Most > + operations on ZA require that streaming mode be enabled but ZA can be > + enabled without streaming mode in order to load, save and retain data. > + > + For best system performance it is strongly encouraged for software to enable > + ZA only when it is actively being used. > + > +* Two new 1 bit fields in PSTATE which may be controlled via the SMSTART and > + SMSTOP instructions or by access to the SVCR system register: > + > + * PSTATE.ZA, if this is 1 then the ZA matrix is accessible and has valid > + data while if it is 0 then ZA can not be accessed. When PSTATE.ZA is > + changed from 0 to 1 all bits in ZA are cleared. > + > + * PSTATE.SM, if this is 1 then the PE is in streaming mode. When the value > + of PSTATE.SM is changed then it is implementation defined if the subset > + of the floating point register bits valid in both modes may be retained. > + Any other bits will be cleared. > + OK. > + > +References > +========== > + > +[1] arch/arm64/include/uapi/asm/sigcontext.h > + AArch64 Linux signal ABI definitions > + > +[2] arch/arm64/include/uapi/asm/ptrace.h > + AArch64 Linux ptrace ABI definitions > + > +[3] Documentation/arm64/cpu-feature-registers.rst > diff --git a/Documentation/arm64/sve.rst b/Documentation/arm64/sve.rst > index 9d9a4de5bc34..93c2c2990584 100644 > --- a/Documentation/arm64/sve.rst > +++ b/Documentation/arm64/sve.rst > @@ -7,7 +7,9 @@ Author: Dave Martin > Date: 4 August 2017 > > This document outlines briefly the interface provided to userspace by Linux in > -order to support use of the ARM Scalable Vector Extension (SVE). > +order to support use of the ARM Scalable Vector Extension (SVE), including > +interactions with Streaming SVE mode added by the Scalable Matrix Extension > +(SME). > > This is an outline of the most important features and issues only and not > intended to be exhaustive. > @@ -23,6 +25,10 @@ model features for SVE is included in Appendix A. > * SVE registers Z0..Z31, P0..P15 and FFR and the current vector length VL, are > tracked per-thread. > > +* In streaming mode FFR is not accessible unless HWCAP2_SME_FA64 is present > + in the system, when it is not supported and these interfaces are used to > + access streaming mode FFR is read and written as zero. > + > * The presence of SVE is reported to userspace via HWCAP_SVE in the aux vector > AT_HWCAP entry. Presence of this flag implies the presence of the SVE > instructions and registers, and the Linux-specific system interfaces > @@ -53,10 +59,19 @@ model features for SVE is included in Appendix A. > which userspace can read using an MRS instruction. See elf_hwcaps.txt and > cpu-feature-registers.txt for details. > > +* On hardware that supports the SME extensions, HWCAP2_SME will also be > + reported in the AT_HWCAP2 aux vector entry. Among other things SME adds > + streaming mode which provides a subset of the SVE feature set using a > + separate SME vector length and the same Z/V registers. See sme.rst > + for more details. > + > * Debuggers should restrict themselves to interacting with the target via the > NT_ARM_SVE regset. The recommended way of detecting support for this regset > is to connect to a target process first and then attempt a > - ptrace(PTRACE_GETREGSET, pid, NT_ARM_SVE, &iov). > + ptrace(PTRACE_GETREGSET, pid, NT_ARM_SVE, &iov). Note that when SME is > + present and streaming SVE mode is in use the FPSIMD subset of registers > + will be read via NT_ARM_SVE and NT_ARM_SVE writes will exit streaming mode > + in the target. > > * Whenever SVE scalable register values (Zn, Pn, FFR) are exchanged in memory > between userspace and the kernel, the register value is encoded in memory in > @@ -126,6 +141,11 @@ the SVE instruction set architecture. > are only present in fpsimd_context. For convenience, the content of V0..V31 > is duplicated between sve_context and fpsimd_context. > > +* The record contains a flag field which includes a flag SVE_SIG_FLAG_SM which > + if set indicates that the thread is in streaming mode and the vector length > + and register data (if present) describe the streaming SVE data and vector > + length. > + > * The signal frame record for SVE always contains basic metadata, in particular > the thread's vector length (in sve_context.vl). > > @@ -170,6 +190,11 @@ When returning from a signal handler: > the signal frame does not match the current vector length, the signal return > attempt is treated as illegal, resulting in a forced SIGSEGV. > > +* It is permitted to enter or leave streaming mode by setting or clearing > + the SVE_SIG_FLAG_SM flag but applications should take care to ensure that > + when doing so sve_context.vl and any register data are appropriate for the > + vector length in the new mode. > + > > 6. prctl extensions > -------------------- > @@ -265,8 +290,14 @@ prctl(PR_SVE_GET_VL) > 7. ptrace extensions > --------------------- > > -* A new regset NT_ARM_SVE is defined for use with PTRACE_GETREGSET and > - PTRACE_SETREGSET. > +* New regsets NT_ARM_SVE and NT_ARM_SSVE are defined for use with > + PTRACE_GETREGSET and PTRACE_SETREGSET. NT_ARM_SSVE describes the > + streaming mode SVE registers and NT_ARM_SVE describes the > + non-streaming mode SVE registers. > + > + In this description a register set is referred to as being "live" when > + the target is in the appropriate streaming or non-streaming mode and is > + using data beyond the subset shared with the FPSIMD Vn registers. > > Refer to [2] for definitions. > > @@ -297,7 +328,7 @@ The regset data starts with struct user_sve_header, containing: > > flags > > - either > + at most one of > > SVE_PT_REGS_FPSIMD > > @@ -331,6 +362,10 @@ The regset data starts with struct user_sve_header, containing: > > SVE_PT_VL_ONEXEC (SETREGSET only). > > + If neither FPSIMD nor SVE flags are provided then no register > + payload is available, this is only possible when SME is implemented. > + > + > * The effects of changing the vector length and/or flags are equivalent to > those documented for PR_SVE_SET_VL. > > @@ -346,6 +381,13 @@ The regset data starts with struct user_sve_header, containing: > case only the vector length and flags are changed (along with any > consequences of those changes). > > +* In systems supporting SME when in streaming mode a GETREGSET for > + NT_REG_SVE will return only the user_sve_header with no register data, > + similarly a GETREGSET for NT_REG_SSVE will not return any register data > + when not in streaming mode. > + > +* A GETREGSET for NT_ARM_SSVE will never return SVE_PT_REGS_FPSIMD. > + > * For SETREGSET, if an SVE_PT_REGS_SVE payload is present and the > requested VL is not supported, the effect will be the same as if the > payload were omitted, except that an EIO error is reported. No > @@ -355,17 +397,25 @@ The regset data starts with struct user_sve_header, containing: > unspecified. It is up to the caller to translate the payload layout > for the actual VL and retry. > > +* Where SME is implemented it is not possible to GETREGSET the register > + state for normal SVE when in streaming mode, nor the streaming mode > + register state when in normal mode, regardless of the implementation defined > + behaviour of the hardware for sharing data between the two modes. > + > +* Any SETREGSET of NT_ARM_SVE will exit streaming mode if the target was in > + streaming mode and any SETREGSET of NT_ARM_SSVE will enter streaming mode > + if the target was not in streaming mode. > + > * The effect of writing a partial, incomplete payload is unspecified. > > > 8. ELF coredump extensions > --------------------------- > > -* A NT_ARM_SVE note will be added to each coredump for each thread of the > - dumped process. The contents will be equivalent to the data that would have > - been read if a PTRACE_GETREGSET of NT_ARM_SVE were executed for each thread > - when the coredump was generated. > - > +* NT_ARM_SVE and NT_ARM_SSVE notes will be added to each coredump for > + each thread of the dumped process. The contents will be equivalent to the > + data that would have been read if a PTRACE_GETREGSET of the corresponding > + type were executed for each thread when the coredump was generated. > > 9. System runtime configuration > -------------------------------- OK. _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DEBCAC433F5 for ; Fri, 11 Mar 2022 17:21:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350724AbiCKRWu (ORCPT ); Fri, 11 Mar 2022 12:22:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347454AbiCKRWr (ORCPT ); Fri, 11 Mar 2022 12:22:47 -0500 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38ADA15E6FD for ; Fri, 11 Mar 2022 09:21:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from AM6PR0202CA0045.eurprd02.prod.outlook.com (2603:10a6:20b:3a::22) by AM6PR08MB3431.eurprd08.prod.outlook.com (2603:10a6:20b:44::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22; Fri, 11 Mar 2022 17:21:38 +0000 Received: from AM5EUR03FT057.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:3a:cafe::d6) by AM6PR0202CA0045.outlook.office365.com (2603:10a6:20b:3a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22 via Frontend Transport; Fri, 11 Mar 2022 17:21:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT057.mail.protection.outlook.com (10.152.17.44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22 via Frontend Transport; Fri, 11 Mar 2022 17:21:38 +0000 Received: ("Tessian outbound 18e50a6f0513:v113"); Fri, 11 Mar 2022 17:21:37 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8e8098db8cb5aab5 X-CR-MTA-TID: 64aa7808 Received: from cb137c28f097.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id EEECC8BA-A452-4B73-AD1E-3F742B885BFF.1; Fri, 11 Mar 2022 17:21:26 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cb137c28f097.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 11 Mar 2022 17:21:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mo80a0bhtN30/B3I3yGyG5nArkY7wqqQ4AQqDjuDOjaUtc/EihgfdXFwNG7bY+pPgDgTJv2XnDihZPG5klCDkhCwlzPw2RDeFp9W0mC5pVcszLBmOUktB2krmLotbuJKwp1lxc1r5iGKSVSNR3xPX/Pr2I71uIagQ0Ge+mBGXKFniUhLA8089mkGtHZgQ+0jNSjAQtpWUwOvtz2C7+gqVOjr1MoyhqXGKjEYnIaD2UXFdl3w4784VXORHzl+I0ri77080QJuMSRBbf9AGhkHOHCoj9UPQ2AwGWMnOeH5oPs3lbtZmnLsYv0S9Ob899l3R/TZaXaYGCtB3V6iWsUsgA== 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=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=ZzBUOyD++oewWZL8UIrbYGcXE54wICwFSt2NdQs+f0VB7XJc6vzibB79qbMfMYH2dRw1m8CEChngRa3teRSEYkbpDLyKd9fmfbHd3psYGqLZAcF0TKTxklM7w3bT9shT/DP8GXaDbdMuU0yu1W6Xq7TvbPu90uIXuusTMSn7Bpy/ravm3GAAfHIM/bMhX2YCnhOmlIRyBYNejDGv6RCvFldkv6HIjvEqS/LSUEKgPdcxUeXymZUxc23xxQCqfGclT68ccNmGhAzXI4/vXdbv4s1nchQOyYN1q5UuQ/g0rxQvsvjt07lAv8/yG9O3lyejbKQx0aKDXpwy+2ERrxoAIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by VI1PR08MB4480.eurprd08.prod.outlook.com (2603:10a6:803:f6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.15; Fri, 11 Mar 2022 17:21:21 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240%4]) with mapi id 15.20.5061.022; Fri, 11 Mar 2022 17:21:21 +0000 From: Szabolcs Nagy To: Mark Brown CC: Catalin Marinas , Will Deacon , Marc Zyngier , Shuah Khan , Shuah Khan , Alan Hayward , Luis Machado , Salil Akerkar , Basant KumarDwivedi , James Morse , Alexandru Elisei , Suzuki Poulose , "linux-arm-kernel@lists.infradead.org" , "linux-kselftest@vger.kernel.org" , "kvmarm@lists.cs.columbia.edu" Subject: Re: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Topic: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Index: AQHYKm4CIV9MScju9UunLqTD29wmxKy6g9qA Date: Fri, 11 Mar 2022 17:21:21 +0000 Message-ID: <20220311172051.GA257833@arm.com> References: <20220225165923.1474372-1-broonie@kernel.org> <20220225165923.1474372-7-broonie@kernel.org> In-Reply-To: <20220225165923.1474372-7-broonie@kernel.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 9c5dd957-5d00-4bca-10f7-08da038399c3 x-ms-traffictypediagnostic: VI1PR08MB4480:EE_|AM5EUR03FT057:EE_|AM6PR08MB3431:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: dJjE/j60t/zriXZ11CyN+BJBQadBwsHw26JudFPmbHhNMkBPxtRNqn6OzWJrzLju6T898uxIcIhy8/nOTKAQSjVIvLECd94x8HU3yHM48UFHLrx0XzR7wDT7++bgcOtwMOc0EtzmrEw3i0QPg6YHGRT45/iGs0xQyggqIAzlUuCfTFHbBFG0KpbFlHIwWLs4TokPjAoiOt8TVUYasAWINxq2U+7OiYRghntx8jhM+iyNeMcDx+AGspu0op/o40Lhk8jfZ6TPTrQ9V/aQrSNi7LIy9TRem6qaUWxKw+m8aD3rxBMjIGnvYQ4VzmY+oQvxIa95Bn1+N+Fcu+p3aA3UTZz0bD3q/2UrVC4zANtoYnWzxNhFDfOtPBqVXqx+32FDXAjC2Y/Lb1CCIB4TJ9oasOWXszw9jdDWRBy00WE+d8eoINjoZlwgyEGmikkroigTm1PCydIjt4qEOKoLnttamudbdRUwMm6/GYi9i9ngZLyViVEh5gGGkLd6H46TTXYdBtsHJwjEkk0NqhVnvx1BMGvpsuDcUXaUa5rt9Ye7Xv5VUK5a+RzFNKkJD4fxZkfgx0I2/HDn0b9+uYF2HDRLCcsDOWm/H808LTIKM1dqVZyfPtMIJcwiQ8zxKk5foH3XEreTGhC1BCrjg3vWw5Vj+jteG//8nFYf5suRsbOxZ41kt1K1deSScZOup+xNbiEpgiNdesigPgmSseqUx6uhmO9ePEvjt3BuuGyIOtE9vm0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB7179.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(2616005)(1076003)(26005)(6506007)(2906002)(71200400001)(186003)(122000001)(36756003)(6512007)(54906003)(38100700002)(33656002)(83380400001)(508600001)(6486002)(5660300002)(66556008)(66476007)(66446008)(66946007)(30864003)(76116006)(38070700005)(91956017)(6916009)(8676002)(4326008)(8936002)(86362001)(316002)(64756008)(27376004)(559001)(579004);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-ID: <02E3452A64942A4FA788DFFE56A6A419@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4480 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3f0671f0-dbbb-4423-0e66-08da0383900d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E+b5OvrjTyvIwSrg1C4UNqOqIYcprEM3IFpkG0XMpWOH5rcjQhdxMg/5MiDKHKON9d08GKzuatY1HvnikB4DYjsDYkP2/PvIlRVA7c2/yVbMwVAcLxm4yNNlPSQzszqCn5LuKOCalPUojMuMbQyHM2OU7JGwZ+sEriX+WlTYhgnQsazTf3tqGPq7Fzc1Hb6xJ0fbW7HzHxp4CPyavc1UCs6gtEhaAmXzAEtLTU6n5dAUQS0bPenNNmeprTEzevzJbJsWBlIfy7UaIVhI7SMf+nCVLcGBwQOUFZPzzK7DvCw9gx9qD5RnaRkRWiyFkYYLujOlmW7uJlZ6/c81ayoOVXG1d2P3JgDbMwYNuGXrspQwJSC+do7svYqdEJNi61N4c0IKqgxRcZ1RnoLB2J72zJfzeMem0DHrvkzYMciOr7qmrTPnXdd96q0vqZ2L2igynqaoHTQXvI+Wt4TkGz1hVz4AoIRISIWITozvnuKZaJ8guekHF1hZKQVlHUB9H0xLY+8iLCNiHHM+HBTmekpqtRoPD55rXUUtwAySlKRT1/j3FQQ4HAT447M/X9RG//fjhMwCet+wGzgjmsA/aYwtJTGvZZI/5T8vDGmvccrKUumv7FyVb2Egqac3EAMgtnypsfjyAX1wmCygiPPexKAohaoA+IPlYFH9ZbRikgF34b9ajO4r7b0zzkjR5+9Fh3fkUYP5IMGxgzYZoK9FoTdRIQ== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(82310400004)(6512007)(8676002)(6506007)(54906003)(70206006)(316002)(508600001)(83380400001)(86362001)(6486002)(40460700003)(36860700001)(70586007)(47076005)(81166007)(2616005)(1076003)(336012)(186003)(26005)(107886003)(356005)(2906002)(30864003)(36756003)(33656002)(4326008)(8936002)(6862004)(5660300002)(27376004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2022 17:21:38.0549 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9c5dd957-5d00-4bca-10f7-08da038399c3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3431 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org VGhlIDAyLzI1LzIwMjIgMTY6NTgsIE1hcmsgQnJvd24gd3JvdGU6DQo+IFByb3ZpZGUgQUJJIGRv Y3VtZW50YXRpb24gZm9yIFNNRSBzaW1pbGFyIHRvIHRoYXQgZm9yIFNWRS4gRHVlIHRvIHRoZSB2 ZXJ5DQo+IGxhcmdlIG92ZXJsYXAgYXJvdW5kIHN0cmVhbWluZyBTVkUgbW9kZSBpbiBib3RoIGlt cGxlbWVudGF0aW9uIGFuZA0KPiBpbnRlcmZhY2VzIGRvY3VtZW50YXRpb24gZm9yIHN0cmVhbWlu ZyBtb2RlIFNWRSBpcyBhZGRlZCB0byB0aGUgU1ZFDQo+IGRvY3VtZW50IHJhdGhlciB0aGFuIHRo ZSBTTUUgb25lLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWFyayBCcm93biA8YnJvb25pZUBrZXJu ZWwub3JnPg0KPiAtLS0NCi4uLg0KPiArMS4gIEdlbmVyYWwNCj4gKy0tLS0tLS0tLS0tDQo+ICsN Cj4gKyogUFNUQVRFLlNNLCBQU1RBVEUuWkEsIHRoZSBzdHJlYW1pbmcgbW9kZSB2ZWN0b3IgbGVu Z3RoLCB0aGUgWkENCj4gKyAgcmVnaXN0ZXIgc3RhdGUgYW5kIFRQSURSMl9FTDAgYXJlIHRyYWNr ZWQgcGVyIHRocmVhZC4NCj4gKw0KPiArKiBUaGUgcHJlc2VuY2Ugb2YgU01FIGlzIHJlcG9ydGVk IHRvIHVzZXJzcGFjZSB2aWEgSFdDQVAyX1NNRSBpbiB0aGUgYXV4IHZlY3Rvcg0KPiArICBBVF9I V0NBUDIgZW50cnkuICBQcmVzZW5jZSBvZiB0aGlzIGZsYWcgaW1wbGllcyB0aGUgcHJlc2VuY2Ug b2YgdGhlIFNNRQ0KPiArICBpbnN0cnVjdGlvbnMgYW5kIHJlZ2lzdGVycywgYW5kIHRoZSBMaW51 eC1zcGVjaWZpYyBzeXN0ZW0gaW50ZXJmYWNlcw0KPiArICBkZXNjcmliZWQgaW4gdGhpcyBkb2N1 bWVudC4gIFNNRSBpcyByZXBvcnRlZCBpbiAvcHJvYy9jcHVpbmZvIGFzICJzbWUiLg0KPiArDQo+ ICsqIFN1cHBvcnQgZm9yIHRoZSBleGVjdXRpb24gb2YgU01FIGluc3RydWN0aW9ucyBpbiB1c2Vy c3BhY2UgY2FuIGFsc28gYmUNCj4gKyAgZGV0ZWN0ZWQgYnkgcmVhZGluZyB0aGUgQ1BVIElEIHJl Z2lzdGVyIElEX0FBNjRQRlIxX0VMMSB1c2luZyBhbiBNUlMNCj4gKyAgaW5zdHJ1Y3Rpb24sIGFu ZCBjaGVja2luZyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgU01FIGZpZWxkIGlzIG5vbnplcm8uIFsz XQ0KPiArDQo+ICsgIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgcHJlc2VuY2Ugb2YgdGhlIHN5 c3RlbSBpbnRlcmZhY2VzIGRlc2NyaWJlZCBpbiB0aGUNCj4gKyAgZm9sbG93aW5nIHNlY3Rpb25z OiBzb2Z0d2FyZSB0aGF0IG5lZWRzIHRvIHZlcmlmeSB0aGF0IHRob3NlIGludGVyZmFjZXMgYXJl DQo+ICsgIHByZXNlbnQgbXVzdCBjaGVjayBmb3IgSFdDQVAyX1NNRSBpbnN0ZWFkLg0KPiArDQo+ ICsqIFRoZXJlIGFyZSBhIG51bWJlciBvZiBvcHRpb25hbCBTTUUgZmVhdHVyZXMsIHByZXNlbmNl IG9mIHRoZXNlIGlzIHJlcG9ydGVkDQo+ICsgIHRocm91Z2ggQVRfSFdDQVAyIHRocm91Z2g6DQo+ ICsNCj4gKwlIV0NBUDJfU01FX0kxNkk2NA0KPiArCUhXQ0FQMl9TTUVfRjY0RjY0DQo+ICsJSFdD QVAyX1NNRV9JOEkzMg0KPiArCUhXQ0FQMl9TTUVfRjE2RjMyDQo+ICsJSFdDQVAyX1NNRV9CMTZG MzINCj4gKwlIV0NBUDJfU01FX0YzMkYzMg0KPiArCUhXQ0FQMl9TTUVfRkE2NA0KPiArDQo+ICsg IFRoaXMgbGlzdCBtYXkgYmUgZXh0ZW5kZWQgb3ZlciB0aW1lIGFzIHRoZSBTTUUgYXJjaGl0ZWN0 dXJlIGV2b2x2ZXMuDQo+ICsNCj4gKyAgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgYWxzbyByZXBvcnRl ZCB2aWEgdGhlIENQVSBJRCByZWdpc3RlciBJRF9BQTY0U01GUjBfRUwxLA0KPiArICB3aGljaCB1 c2Vyc3BhY2UgY2FuIHJlYWQgdXNpbmcgYW4gTVJTIGluc3RydWN0aW9uLiAgU2VlIGVsZl9od2Nh cHMudHh0IGFuZA0KPiArICBjcHUtZmVhdHVyZS1yZWdpc3RlcnMudHh0IGZvciBkZXRhaWxzLg0K PiArDQo+ICsqIERlYnVnZ2VycyBzaG91bGQgcmVzdHJpY3QgdGhlbXNlbHZlcyB0byBpbnRlcmFj dGluZyB3aXRoIHRoZSB0YXJnZXQgdmlhIHRoZQ0KPiArICBOVF9BUk1fU1ZFLCBOVF9BUk1fU1NW RSBhbmQgTlRfQVJNX1pBIHJlZ3NldHMuICBUaGUgcmVjb21tZW5kZWQgd2F5DQo+ICsgIG9mIGRl dGVjdGluZyBzdXBwb3J0IGZvciB0aGVzZSByZWdzZXRzIGlzIHRvIGNvbm5lY3QgdG8gYSB0YXJn ZXQgcHJvY2Vzcw0KPiArICBmaXJzdCBhbmQgdGhlbiBhdHRlbXB0IGENCj4gKw0KPiArCXB0cmFj ZShQVFJBQ0VfR0VUUkVHU0VULCBwaWQsIE5UX0FSTV88cmVnc2V0PiwgJmlvdikuDQo+ICsNCj4g KyogV2hlbmV2ZXIgWkEgcmVnaXN0ZXIgdmFsdWVzIGFyZSBleGNoYW5nZWQgaW4gbWVtb3J5IGJl dHdlZW4gdXNlcnNwYWNlIGFuZA0KPiArICB0aGUga2VybmVsLCB0aGUgcmVnaXN0ZXIgdmFsdWUg aXMgZW5jb2RlZCBpbiBtZW1vcnkgYXMgYSBzZXJpZXMgb2YgaG9yaXpvbnRhbA0KPiArICB2ZWN0 b3JzIGZyb20gMCB0byBWTC84LTEgc3RvcmVkIGluIHRoZSBzYW1lIGVuZGlhbm5lc3MgaW52YXJp YW50IGZvcm1hdCBhcyBpcw0KPiArICB1c2VkIGZvciBTVkUgdmVjdG9ycy4NCj4gKw0KPiArKiBP biB0aHJlYWQgY3JlYXRpb24gVFBJRFIyX0VMMCBpcyBwcmVzZXJ2ZWQgdW5sZXNzIENMT05FX1NF VFRMUyBpcyBzcGVjaWZpZWQsDQo+ICsgIGluIHdoaWNoIGNhc2UgaXQgaXMgc2V0IHRvIDAuDQo+ ICsNCg0KVGhpcyBsb29rcyBPSy4NCg0KDQo+ICsyLiAgVmVjdG9yIGxlbmd0aHMNCj4gKy0tLS0t LS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtTTUUgZGVmaW5lcyBhIHNlY29uZCB2ZWN0b3IgbGVuZ3Ro IHNpbWlsYXIgdG8gdGhlIFNWRSB2ZWN0b3IgbGVuZ3RoIHdoaWNoIGlzDQo+ICtjb250cm9scyB0 aGUgc2l6ZSBvZiB0aGUgc3RyZWFtaW5nIG1vZGUgU1ZFIHZlY3RvcnMgYW5kIHRoZSBaQSBtYXRy aXggYXJyYXkuDQo+ICtUaGUgWkEgbWF0cml4IGlzIHNxdWFyZSB3aXRoIGVhY2ggc2lkZSBoYXZp bmcgYXMgbWFueSBieXRlcyBhcyBhIFNWRSB2ZWN0b3IuDQo+ICsNCg0KaSB3b3VsZCBzL1NWRSB2 ZWN0b3Ivc3RyZWFtaW5nIG1vZGUgU1ZFIHZlY3Rvci8NCm9yIGdpdmUgU01FIHZlY3RvciBsZW5n dGggc29tZSBvdGhlciBuYW1lIGFuZCB1c2UgdGhhdCB0aHJvdWdob3V0Lg0KDQo+ICsNCj4gKzMu ICBTaGFyaW5nIG9mIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyBtb2RlIFNWRSBzdGF0ZQ0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ICsNCj4gK0l0IGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgd2hpY2ggaWYgYW55IHBh cnRzIG9mIHRoZSBTVkUgc3RhdGUgYXJlIHNoYXJlZA0KPiArYmV0d2VlbiBzdHJlYW1pbmcgYW5k IG5vbi1zdHJlYW1pbmcgbW9kZXMuICBXaGVuIHN3aXRjaGluZyBiZXR3ZWVuIG1vZGVzDQo+ICt2 aWEgc29mdHdhcmUgaW50ZXJmYWNlcyBzdWNoIGFzIHB0cmFjZSBpZiBubyByZWdpc3RlciBjb250 ZW50IGlzIHByb3ZpZGVkIGFzDQo+ICtwYXJ0IG9mIHN3aXRjaGluZyBubyBzdGF0ZSB3aWxsIGJl IGFzc3VtZWQgdG8gYmUgc2hhcmVkIGFuZCBldmVyeXRoaW5nIHdpbGwNCj4gK2JlIHplcm9lZC4N Cj4gKw0KDQpPSy4NCg0KPiArDQo+ICs0LiAgU3lzdGVtIGNhbGwgYmVoYXZpb3VyDQo+ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKyogT24gc3lzY2FsbCBQU1RBVEUuWkEgaXMg cHJlc2VydmVkLCBpZiBQU1RBVEUuWkE9PTEgdGhlbiB0aGUgY29udGVudHMgb2YgdGhlDQo+ICsg IFpBIG1hdHJpeCBhcmUgcHJlc2VydmVkLg0KPiArDQo+ICsqIE9uIHN5c2NhbGwgUFNUQVRFLlNN IHdpbGwgYmUgY2xlYXJlZCBhbmQgdGhlIFNWRSByZWdpc3RlcnMgd2lsbCBiZSBoYW5kbGVkDQo+ ICsgIGFzIG5vcm1hbC4NCj4gKw0KPiArKiBOZWl0aGVyIHRoZSBTVkUgcmVnaXN0ZXJzIG5vciBa QSBhcmUgdXNlZCB0byBwYXNzIGFyZ3VtZW50cyB0byBvciByZWNlaXZlDQo+ICsgIHJlc3VsdHMg ZnJvbSBhbnkgc3lzY2FsbC4NCj4gKw0KPiArKiBPbiBjcmVhdGlvbiBmb3JrKCkgb3IgY2xvbmUo KSB0aGUgbmV3bHkgY3JlYXRlZCBwcm9jZXNzIHdpbGwgaGF2ZSBQU1RBVEUuU00NCj4gKyAgYW5k IFBTVEFURS5aQSBjbGVhcmVkLg0KDQppcyB0aGVyZSBhIHJlYXNvbiB3aHkgZm9yaygpIGNsZWFy cyBaQT8NCg0KaSB0aGluayB0aGlzIGlzIGEgbWlub3IgaXNzdWUsIGJ1dCB0aGUgdXN1YWwgZXhw ZWN0YXRpb24gaXMgdGhhdA0Kb24gdGhyZWFkIGNyZWF0aW9uIHRocmVhZCBsb2NhbCBzdGF0ZSBp cyByZXNldCBpbiB0aGUgY2hpbGQsIGJ1dA0KaW4gYSBmb3JrZWQgY2hpbGQgdGhlIHN0YXRlIGlz IHRoZSBzYW1lIGFzIGluIHRoZSBwYXJlbnQgKHdoZXJlDQpaQSBpcyBwcmVzZXJ2ZWQgYWNjb3Jk aW5nIHRvIHRoZSBmaXJzdCBydWxlKS4NCg0KPiArDQo+ICsqIEFsbCBvdGhlciBTTUUgc3RhdGUg b2YgYSB0aHJlYWQsIGluY2x1ZGluZyB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgdmVjdG9yDQo+ ICsgIGxlbmd0aCwgdGhlIHN0YXRlIG9mIHRoZSBQUl9TTUVfVkxfSU5IRVJJVCBmbGFnLCBhbmQg dGhlIGRlZmVycmVkIHZlY3Rvcg0KPiArICBsZW5ndGggKGlmIGFueSksIGlzIHByZXNlcnZlZCBh Y3Jvc3MgYWxsIHN5c2NhbGxzLCBzdWJqZWN0IHRvIHRoZSBzcGVjaWZpYw0KPiArICBleGNlcHRp b25zIGZvciBleGVjdmUoKSBkZXNjcmliZWQgaW4gc2VjdGlvbiA2Lg0KPiArDQoNCk9LIG90aGVy IHRoYW4gdGhlIGZvcmsgY29tbWVudC4NCg0KPiArDQo+ICs1LiAgU2lnbmFsIGhhbmRsaW5nDQo+ ICstLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKyogU2lnbmFsIGhhbmRsZXJzIGFyZSBpbnZv a2VkIHdpdGggc3RyZWFtaW5nIG1vZGUgYW5kIFpBIGRpc2FibGVkLg0KPiArDQo+ICsqIEEgbmV3 IHNpZ25hbCBmcmFtZSByZWNvcmQgemFfY29udGV4dCBlbmNvZGVzIHRoZSBaQSByZWdpc3RlciBj b250ZW50cyBvbg0KPiArICBzaWduYWwgZGVsaXZlcnkuIFsxXQ0KPiArDQo+ICsqIFRoZSBzaWdu YWwgZnJhbWUgcmVjb3JkIGZvciBaQSBhbHdheXMgY29udGFpbnMgYmFzaWMgbWV0YWRhdGEsIGlu IHBhcnRpY3VsYXINCj4gKyAgdGhlIHRocmVhZCdzIHZlY3RvciBsZW5ndGggKGluIHphX2NvbnRl eHQudmwpLg0KPiArDQo+ICsqIFRoZSBaQSBtYXRyaXggbWF5IG9yIG1heSBub3QgYmUgaW5jbHVk ZWQgaW4gdGhlIHJlY29yZCwgZGVwZW5kaW5nIG9uDQo+ICsgIHRoZSB2YWx1ZSBvZiBQU1RBVEUu WkEuICBUaGUgcmVnaXN0ZXJzIGFyZSBwcmVzZW50IGlmIGFuZCBvbmx5IGlmOg0KPiArICB6YV9j b250ZXh0LmhlYWQuc2l6ZSA+PSBaQV9TSUdfQ09OVEVYVF9TSVpFKHN2ZV92cV9mcm9tX3ZsKHph X2NvbnRleHQudmwpKQ0KPiArICBpbiB3aGljaCBjYXNlIFBTVEFURS5aQSA9PSAxLg0KPiArDQo+ ICsqIElmIG1hdHJpeCBkYXRhIGlzIHByZXNlbnQsIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlY29y ZCBoYXMgYSB2bC1kZXBlbmRlbnQNCj4gKyAgc2l6ZSBhbmQgbGF5b3V0LiAgTWFjcm9zIFpBX1NJ R18qIGFyZSBkZWZpbmVkIFsxXSB0byBmYWNpbGl0YXRlIGFjY2VzcyB0bw0KPiArICB0aGVtLg0K PiArDQo+ICsqIFRoZSBtYXRyaXggaXMgc3RvcmVkIGFzIGEgc2VyaWVzIG9mIGhvcml6b250YWwg dmVjdG9ycyBpbiB0aGUgc2FtZSBmb3JtYXQgYXMNCj4gKyAgaXMgdXNlZCBmb3IgU1ZFIHZlY3Rv cnMuDQo+ICsNCj4gKyogSWYgdGhlIFpBIGNvbnRleHQgaXMgdG9vIGJpZyB0byBmaXQgaW4gc2ln Y29udGV4dC5fX3Jlc2VydmVkW10sIHRoZW4gZXh0cmENCj4gKyAgc3BhY2UgaXMgYWxsb2NhdGVk IG9uIHRoZSBzdGFjaywgYW4gZXh0cmFfY29udGV4dCByZWNvcmQgaXMgd3JpdHRlbiBpbg0KPiAr ICBfX3Jlc2VydmVkW10gcmVmZXJlbmNpbmcgdGhpcyBzcGFjZS4gIHphX2NvbnRleHQgaXMgdGhl biB3cml0dGVuIGluIHRoZQ0KPiArICBleHRyYSBzcGFjZS4gIFJlZmVyIHRvIFsxXSBmb3IgZnVy dGhlciBkZXRhaWxzIGFib3V0IHRoaXMgbWVjaGFuaXNtLg0KPiArDQoNCk9LLg0KDQo+ICsNCj4g KzUuICBTaWduYWwgcmV0dXJuDQo+ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtXaGVuIHJl dHVybmluZyBmcm9tIGEgc2lnbmFsIGhhbmRsZXI6DQo+ICsNCj4gKyogSWYgdGhlcmUgaXMgbm8g emFfY29udGV4dCByZWNvcmQgaW4gdGhlIHNpZ25hbCBmcmFtZSwgb3IgaWYgdGhlIHJlY29yZCBp cw0KPiArICBwcmVzZW50IGJ1dCBjb250YWlucyBubyByZWdpc3RlciBkYXRhIGFzIGRlc2NyaWJl ZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiwNCj4gKyAgdGhlbiBaQSBpcyBkaXNhYmxlZC4NCj4g Kw0KPiArKiBJZiB6YV9jb250ZXh0IGlzIHByZXNlbnQgaW4gdGhlIHNpZ25hbCBmcmFtZSBhbmQg Y29udGFpbnMgbWF0cml4IGRhdGEgdGhlbg0KPiArICBQU1RBVEUuWkEgaXMgc2V0IHRvIDEgYW5k IFpBIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZGF0YS4NCj4gKw0KPiArKiBUaGUg dmVjdG9yIGxlbmd0aCBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgc2lnbmFsIHJldHVybi4gIElmIHph X2NvbnRleHQudmwgaW4NCj4gKyAgdGhlIHNpZ25hbCBmcmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUg Y3VycmVudCB2ZWN0b3IgbGVuZ3RoLCB0aGUgc2lnbmFsIHJldHVybg0KPiArICBhdHRlbXB0IGlz IHRyZWF0ZWQgYXMgaWxsZWdhbCwgcmVzdWx0aW5nIGluIGEgZm9yY2VkIFNJR1NFR1YuDQo+ICsN Cg0KT0suDQoNCj4gKw0KPiArNi4gIHByY3RsIGV4dGVuc2lvbnMNCj4gKy0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICsNCj4gK1NvbWUgbmV3IHByY3RsKCkgY2FsbHMgYXJlIGFkZGVkIHRvIGFsbG93 IHByb2dyYW1zIHRvIG1hbmFnZSB0aGUgU01FIHZlY3Rvcg0KPiArbGVuZ3RoOg0KPiArDQo+ICtw cmN0bChQUl9TTUVfU0VUX1ZMLCB1bnNpZ25lZCBsb25nIGFyZykNCj4gKw0KPiArICAgIFNldHMg dGhlIHZlY3RvciBsZW5ndGggb2YgdGhlIGNhbGxpbmcgdGhyZWFkIGFuZCByZWxhdGVkIGZsYWdz LCB3aGVyZQ0KPiArICAgIGFyZyA9PSB2bCB8IGZsYWdzLiAgT3RoZXIgdGhyZWFkcyBvZiB0aGUg Y2FsbGluZyBwcm9jZXNzIGFyZSB1bmFmZmVjdGVkLg0KPiArDQo+ICsgICAgdmwgaXMgdGhlIGRl c2lyZWQgdmVjdG9yIGxlbmd0aCwgd2hlcmUgc3ZlX3ZsX3ZhbGlkKHZsKSBtdXN0IGJlIHRydWUu DQo+ICsNCj4gKyAgICBmbGFnczoNCj4gKw0KPiArCVBSX1NNRV9WTF9JTkhFUklUDQo+ICsNCj4g KwkgICAgSW5oZXJpdCB0aGUgY3VycmVudCB2ZWN0b3IgbGVuZ3RoIGFjcm9zcyBleGVjdmUoKS4g IE90aGVyd2lzZSwgdGhlDQo+ICsJICAgIHZlY3RvciBsZW5ndGggaXMgcmVzZXQgdG8gdGhlIHN5 c3RlbSBkZWZhdWx0IGF0IGV4ZWN2ZSgpLiAgKFNlZQ0KPiArCSAgICBTZWN0aW9uIDkuKQ0KPiAr DQo+ICsJUFJfU01FX1NFVF9WTF9PTkVYRUMNCj4gKw0KPiArCSAgICBEZWZlciB0aGUgcmVxdWVz dGVkIHZlY3RvciBsZW5ndGggY2hhbmdlIHVudGlsIHRoZSBuZXh0IGV4ZWN2ZSgpDQo+ICsJICAg IHBlcmZvcm1lZCBieSB0aGlzIHRocmVhZC4NCj4gKw0KPiArCSAgICBUaGUgZWZmZWN0IGlzIGVx dWl2YWxlbnQgdG8gaW1wbGljaXQgZXhlY3V0aW9uIG9mIHRoZSBmb2xsb3dpbmcNCj4gKwkgICAg Y2FsbCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbmV4dCBleGVjdmUoKSAoaWYgYW55KSBieSB0aGUg dGhyZWFkOg0KPiArDQo+ICsJCXByY3RsKFBSX1NNRV9TRVRfVkwsIGFyZyAmIH5QUl9TTUVfU0VU X1ZMX09ORVhFQykNCj4gKw0KPiArCSAgICBUaGlzIGFsbG93cyBsYXVuY2hpbmcgb2YgYSBuZXcg cHJvZ3JhbSB3aXRoIGEgZGlmZmVyZW50IHZlY3Rvcg0KPiArCSAgICBsZW5ndGgsIHdoaWxlIGF2 b2lkaW5nIHJ1bnRpbWUgc2lkZSBlZmZlY3RzIGluIHRoZSBjYWxsZXIuDQo+ICsNCj4gKwkgICAg V2l0aG91dCBQUl9TTUVfU0VUX1ZMX09ORVhFQywgdGhlIHJlcXVlc3RlZCBjaGFuZ2UgdGFrZXMg ZWZmZWN0DQo+ICsJICAgIGltbWVkaWF0ZWx5Lg0KPiArDQo+ICsNCj4gKyAgICBSZXR1cm4gdmFs dWU6IGEgbm9ubmVnYXRpdmUgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJv cjoNCj4gKwlFSU5WQUw6IFNNRSBub3Qgc3VwcG9ydGVkLCBpbnZhbGlkIHZlY3RvciBsZW5ndGgg cmVxdWVzdGVkLCBvcg0KPiArCSAgICBpbnZhbGlkIGZsYWdzLg0KPiArDQo+ICsNCj4gKyAgICBP biBzdWNjZXNzOg0KPiArDQo+ICsgICAgKiBFaXRoZXIgdGhlIGNhbGxpbmcgdGhyZWFkJ3MgdmVj dG9yIGxlbmd0aCBvciB0aGUgZGVmZXJyZWQgdmVjdG9yIGxlbmd0aA0KPiArICAgICAgdG8gYmUg YXBwbGllZCBhdCB0aGUgbmV4dCBleGVjdmUoKSBieSB0aGUgdGhyZWFkIChkZXBlbmRlbnQgb24g d2hldGhlcg0KPiArICAgICAgUFJfU01FX1NFVF9WTF9PTkVYRUMgaXMgcHJlc2VudCBpbiBhcmcp LCBpcyBzZXQgdG8gdGhlIGxhcmdlc3QgdmFsdWUNCj4gKyAgICAgIHN1cHBvcnRlZCBieSB0aGUg c3lzdGVtIHRoYXQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHZsLiAgSWYgdmwgPT0NCj4gKyAg ICAgIFNWRV9WTF9NQVgsIHRoZSB2YWx1ZSBzZXQgd2lsbCBiZSB0aGUgbGFyZ2VzdCB2YWx1ZSBz dXBwb3J0ZWQgYnkgdGhlDQo+ICsgICAgICBzeXN0ZW0uDQo+ICsNCj4gKyAgICAqIEFueSBwcmV2 aW91c2x5IG91dHN0YW5kaW5nIGRlZmVycmVkIHZlY3RvciBsZW5ndGggY2hhbmdlIGluIHRoZSBj YWxsaW5nDQo+ICsgICAgICB0aHJlYWQgaXMgY2FuY2VsbGVkLg0KPiArDQo+ICsgICAgKiBUaGUg cmV0dXJuZWQgdmFsdWUgZGVzY3JpYmVzIHRoZSByZXN1bHRpbmcgY29uZmlndXJhdGlvbiwgZW5j b2RlZCBhcyBmb3INCj4gKyAgICAgIFBSX1NNRV9HRVRfVkwuICBUaGUgdmVjdG9yIGxlbmd0aCBy ZXBvcnRlZCBpbiB0aGlzIHZhbHVlIGlzIHRoZSBuZXcNCj4gKyAgICAgIGN1cnJlbnQgdmVjdG9y IGxlbmd0aCBmb3IgdGhpcyB0aHJlYWQgaWYgUFJfU01FX1NFVF9WTF9PTkVYRUMgd2FzIG5vdA0K PiArICAgICAgcHJlc2VudCBpbiBhcmc7IG90aGVyd2lzZSwgdGhlIHJlcG9ydGVkIHZlY3RvciBs ZW5ndGggaXMgdGhlIGRlZmVycmVkDQo+ICsgICAgICB2ZWN0b3IgbGVuZ3RoIHRoYXQgd2lsbCBi ZSBhcHBsaWVkIGF0IHRoZSBuZXh0IGV4ZWN2ZSgpIGJ5IHRoZSBjYWxsaW5nDQo+ICsgICAgICB0 aHJlYWQuDQo+ICsNCj4gKyAgICAqIENoYW5naW5nIHRoZSB2ZWN0b3IgbGVuZ3RoIGNhdXNlcyBh bGwgb2YgWkEsIFAwLi5QMTUsIEZGUiBhbmQgYWxsIGJpdHMgb2YNCj4gKyAgICAgIFowLi5aMzEg ZXhjZXB0IGZvciBaMCBiaXRzIFsxMjc6MF0gLi4gWjMxIGJpdHMgWzEyNzowXSB0byBiZWNvbWUN Cj4gKyAgICAgIHVuc3BlY2lmaWVkLCBpbmNsdWRpbmcgYm90aCBzdHJlYW1pbmcgYW5kIG5vbi1z dHJlYW1pbmcgU1ZFIHN0YXRlLg0KPiArICAgICAgQ2FsbGluZyBQUl9TTUVfU0VUX1ZMIHdpdGgg dmwgZXF1YWwgdG8gdGhlIHRocmVhZCdzIGN1cnJlbnQgdmVjdG9yDQo+ICsgICAgICBsZW5ndGgs IG9yIGNhbGxpbmcgUFJfU01FX1NFVF9WTCB3aXRoIHRoZSBQUl9TVkVfU0VUX1ZMX09ORVhFQyBm bGFnLA0KPiArICAgICAgZG9lcyBub3QgY29uc3RpdHV0ZSBhIGNoYW5nZSB0byB0aGUgdmVjdG9y IGxlbmd0aCBmb3IgdGhpcyBwdXJwb3NlLg0KPiArDQo+ICsgICAgKiBDaGFuZ2luZyB0aGUgdmVj dG9yIGxlbmd0aCBjYXVzZXMgUFNUQVRFLlpBIGFuZCBQU1RBVEUuU00gdG8gYmUgY2xlYXJlZC4N Cj4gKyAgICAgIENhbGxpbmcgUFJfU01FX1NFVF9WTCB3aXRoIHZsIGVxdWFsIHRvIHRoZSB0aHJl YWQncyBjdXJyZW50IHZlY3Rvcg0KPiArICAgICAgbGVuZ3RoLCBvciBjYWxsaW5nIFBSX1NNRV9T RVRfVkwgd2l0aCB0aGUgUFJfU1ZFX1NFVF9WTF9PTkVYRUMgZmxhZywNCj4gKyAgICAgIGRvZXMg bm90IGNvbnN0aXR1dGUgYSBjaGFuZ2UgdG8gdGhlIHZlY3RvciBsZW5ndGggZm9yIHRoaXMgcHVy cG9zZS4NCj4gKw0KPiArDQo+ICtwcmN0bChQUl9TTUVfR0VUX1ZMKQ0KPiArDQo+ICsgICAgR2V0 cyB0aGUgdmVjdG9yIGxlbmd0aCBvZiB0aGUgY2FsbGluZyB0aHJlYWQuDQo+ICsNCj4gKyAgICBU aGUgZm9sbG93aW5nIGZsYWcgbWF5IGJlIE9SLWVkIGludG8gdGhlIHJlc3VsdDoNCj4gKw0KPiAr CVBSX1NNRV9WTF9JTkhFUklUDQo+ICsNCj4gKwkgICAgVmVjdG9yIGxlbmd0aCB3aWxsIGJlIGlu aGVyaXRlZCBhY3Jvc3MgZXhlY3ZlKCkuDQo+ICsNCj4gKyAgICBUaGVyZSBpcyBubyB3YXkgdG8g ZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgYW4gb3V0c3RhbmRpbmcgZGVmZXJyZWQNCj4gKyAg ICB2ZWN0b3IgbGVuZ3RoIGNoYW5nZSAod2hpY2ggd291bGQgb25seSBub3JtYWxseSBiZSB0aGUg Y2FzZSBiZXR3ZWVuIGENCj4gKyAgICBmb3JrKCkgb3IgdmZvcmsoKSBhbmQgdGhlIGNvcnJlc3Bv bmRpbmcgZXhlY3ZlKCkgaW4gdHlwaWNhbCB1c2UpLg0KPiArDQo+ICsgICAgVG8gZXh0cmFjdCB0 aGUgdmVjdG9yIGxlbmd0aCBmcm9tIHRoZSByZXN1bHQsIGJpdHdpc2UgYW5kIGl0IHdpdGgNCj4g KyAgICBQUl9TTUVfVkxfTEVOX01BU0suDQo+ICsNCj4gKyAgICBSZXR1cm4gdmFsdWU6IGEgbm9u bmVnYXRpdmUgdmFsdWUgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvcjoN Cj4gKwlFSU5WQUw6IFNNRSBub3Qgc3VwcG9ydGVkLg0KPiArDQoNCk9LLg0KDQo+ICsNCj4gKzcu ICBwdHJhY2UgZXh0ZW5zaW9ucw0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKyog QSBuZXcgcmVnc2V0IE5UX0FSTV9TU1ZFIGlzIGRlZmluZWQgZm9yIGFjY2VzcyB0byBzdHJlYW1p bmcgbW9kZSBTVkUNCj4gKyAgc3RhdGUgdmlhIFBUUkFDRV9HRVRSRUdTRVQgYW5kICBQVFJBQ0Vf U0VUUkVHU0VULCB0aGlzIGlzIGRvY3VtZW50ZWQgaW4NCj4gKyAgc3ZlLnJzdC4NCj4gKw0KPiAr KiBBIG5ldyByZWdzZXQgTlRfQVJNX1pBIGlzIGRlZmluZWQgZm9yIFpBIHN0YXRlIGZvciBhY2Nl c3MgdG8gWkEgc3RhdGUgdmlhDQo+ICsgIFBUUkFDRV9HRVRSRUdTRVQgYW5kIFBUUkFDRV9TRVRS RUdTRVQuDQo+ICsNCj4gKyAgUmVmZXIgdG8gWzJdIGZvciBkZWZpbml0aW9ucy4NCj4gKw0KPiAr VGhlIHJlZ3NldCBkYXRhIHN0YXJ0cyB3aXRoIHN0cnVjdCB1c2VyX3phX2hlYWRlciwgY29udGFp bmluZzoNCj4gKw0KPiArICAgIHNpemUNCj4gKw0KPiArCVNpemUgb2YgdGhlIGNvbXBsZXRlIHJl Z3NldCwgaW4gYnl0ZXMuDQo+ICsJVGhpcyBkZXBlbmRzIG9uIHZsIGFuZCBwb3NzaWJseSBvbiBv dGhlciB0aGluZ3MgaW4gdGhlIGZ1dHVyZS4NCj4gKw0KPiArCUlmIGEgY2FsbCB0byBQVFJBQ0Vf R0VUUkVHU0VUIHJlcXVlc3RzIGxlc3MgZGF0YSB0aGFuIHRoZSB2YWx1ZSBvZg0KPiArCXNpemUs IHRoZSBjYWxsZXIgY2FuIGFsbG9jYXRlIGEgbGFyZ2VyIGJ1ZmZlciBhbmQgcmV0cnkgaW4gb3Jk ZXIgdG8NCj4gKwlyZWFkIHRoZSBjb21wbGV0ZSByZWdzZXQuDQo+ICsNCj4gKyAgICBtYXhfc2l6 ZQ0KPiArDQo+ICsJTWF4aW11bSBzaXplIGluIGJ5dGVzIHRoYXQgdGhlIHJlZ3NldCBjYW4gZ3Jv dyB0byBmb3IgdGhlIHRhcmdldA0KPiArCXRocmVhZC4gIFRoZSByZWdzZXQgd29uJ3QgZ3JvdyBi aWdnZXIgdGhhbiB0aGlzIGV2ZW4gaWYgdGhlIHRhcmdldA0KPiArCXRocmVhZCBjaGFuZ2VzIGl0 cyB2ZWN0b3IgbGVuZ3RoIGV0Yy4NCj4gKw0KPiArICAgIHZsDQo+ICsNCj4gKwlUYXJnZXQgdGhy ZWFkJ3MgY3VycmVudCBzdHJlYW1pbmcgdmVjdG9yIGxlbmd0aCwgaW4gYnl0ZXMuDQo+ICsNCj4g KyAgICBtYXhfdmwNCj4gKw0KPiArCU1heGltdW0gcG9zc2libGUgc3RyZWFtaW5nIHZlY3RvciBs ZW5ndGggZm9yIHRoZSB0YXJnZXQgdGhyZWFkLg0KPiArDQo+ICsgICAgZmxhZ3MNCj4gKw0KPiAr CVplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIGZsYWdzLCB3aGljaCBoYXZlIHRoZSBzYW1l DQo+ICsJbWVhbmluZyBhbmQgYmVoYXZpb3VyIGFzIHRoZSBjb3JyZXNwb25kaW5nIFBSX1NFVF9W TF8qIGZsYWdzOg0KPiArDQo+ICsJICAgIFNNRV9QVF9WTF9JTkhFUklUDQo+ICsNCj4gKwkgICAg U01FX1BUX1ZMX09ORVhFQyAoU0VUUkVHU0VUIG9ubHkpLg0KPiArDQo+ICsqIFRoZSBlZmZlY3Rz IG9mIGNoYW5naW5nIHRoZSB2ZWN0b3IgbGVuZ3RoIGFuZC9vciBmbGFncyBhcmUgZXF1aXZhbGVu dCB0bw0KPiArICB0aG9zZSBkb2N1bWVudGVkIGZvciBQUl9TTUVfU0VUX1ZMLg0KPiArDQo+ICsg IFRoZSBjYWxsZXIgbXVzdCBtYWtlIGEgZnVydGhlciBHRVRSRUdTRVQgY2FsbCBpZiBpdCBuZWVk cyB0byBrbm93IHdoYXQgVkwgaXMNCj4gKyAgYWN0dWFsbHkgc2V0IGJ5IFNFVFJFR1NFVCwgdW5s ZXNzIGlzIGl0IGtub3duIGluIGFkdmFuY2UgdGhhdCB0aGUgcmVxdWVzdGVkDQo+ICsgIFZMIGlz IHN1cHBvcnRlZC4NCj4gKw0KPiArKiBUaGUgc2l6ZSBhbmQgbGF5b3V0IG9mIHRoZSBwYXlsb2Fk IGRlcGVuZHMgb24gdGhlIGhlYWRlciBmaWVsZHMuICBUaGUNCj4gKyAgU01FX1BUX1pBXyooKSBt YWNyb3MgYXJlIHByb3ZpZGVkIHRvIGZhY2lsaXRhdGUgYWNjZXNzIHRvIHRoZSBkYXRhLg0KPiAr DQo+ICsqIEluIGVpdGhlciBjYXNlLCBmb3IgU0VUUkVHU0VUIGl0IGlzIHBlcm1pc3NpYmxlIHRv IG9taXQgdGhlIHBheWxvYWQsIGluIHdoaWNoDQo+ICsgIGNhc2UgdGhlIHZlY3RvciBsZW5ndGgg YW5kIGZsYWdzIGFyZSBjaGFuZ2VkIGFuZCBQU1RBVEUuWkEgaXMgc2V0IHRvIDANCj4gKyAgKGFs b25nIHdpdGggYW55IGNvbnNlcXVlbmNlcyBvZiB0aG9zZSBjaGFuZ2VzKS4gIElmIGEgcGF5bG9h ZCBpcyBwcm92aWRlZA0KPiArICB0aGVuIFBTVEFURS5aQSB3aWxsIGJlIHNldCB0byAxLg0KPiAr DQo+ICsqIEZvciBTRVRSRUdTRVQsIGlmIHRoZSByZXF1ZXN0ZWQgVkwgaXMgbm90IHN1cHBvcnRl ZCwgdGhlIGVmZmVjdCB3aWxsIGJlIHRoZQ0KPiArICBzYW1lIGFzIGlmIHRoZSBwYXlsb2FkIHdl cmUgb21pdHRlZCwgZXhjZXB0IHRoYXQgYW4gRUlPIGVycm9yIGlzIHJlcG9ydGVkLg0KPiArICBO byBhdHRlbXB0IGlzIG1hZGUgdG8gdHJhbnNsYXRlIHRoZSBwYXlsb2FkIGRhdGEgdG8gdGhlIGNv cnJlY3QgbGF5b3V0DQo+ICsgIGZvciB0aGUgdmVjdG9yIGxlbmd0aCBhY3R1YWxseSBzZXQuICBJ dCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIHRyYW5zbGF0ZSB0aGUNCj4gKyAgcGF5bG9hZCBsYXlv dXQgZm9yIHRoZSBhY3R1YWwgVkwgYW5kIHJldHJ5Lg0KPiArDQo+ICsqIFRoZSBlZmZlY3Qgb2Yg d3JpdGluZyBhIHBhcnRpYWwsIGluY29tcGxldGUgcGF5bG9hZCBpcyB1bnNwZWNpZmllZC4NCj4g Kw0KDQpJJ20gbm90IGZhbWlsaWFyIHdpdGggcHRyYWNlLCBidXQgbG9va3MgT0suDQoNCj4gKw0K PiArOC4gIEVMRiBjb3JlZHVtcCBleHRlbnNpb25zDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gKw0KPiArKiBOVF9BUk1fU1NWRSBub3RlcyB3aWxsIGJlIGFkZGVkIHRvIGVhY2gg Y29yZWR1bXAgZm9yDQo+ICsgIGVhY2ggdGhyZWFkIG9mIHRoZSBkdW1wZWQgcHJvY2Vzcy4gIFRo ZSBjb250ZW50cyB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gdGhlDQo+ICsgIGRhdGEgdGhhdCB3b3Vs ZCBoYXZlIGJlZW4gcmVhZCBpZiBhIFBUUkFDRV9HRVRSRUdTRVQgb2YgdGhlIGNvcnJlc3BvbmRp bmcNCj4gKyAgdHlwZSB3ZXJlIGV4ZWN1dGVkIGZvciBlYWNoIHRocmVhZCB3aGVuIHRoZSBjb3Jl ZHVtcCB3YXMgZ2VuZXJhdGVkLg0KPiArDQo+ICsqIEEgTlRfQVJNX1pBIG5vdGUgd2lsbCBiZSBh ZGRlZCB0byBlYWNoIGNvcmVkdW1wIGZvciBlYWNoIHRocmVhZCBvZiB0aGUNCj4gKyAgZHVtcGVk IHByb2Nlc3MuICBUaGUgY29udGVudHMgd2lsbCBiZSBlcXVpdmFsZW50IHRvIHRoZSBkYXRhIHRo YXQgd291bGQgaGF2ZQ0KPiArICBiZWVuIHJlYWQgaWYgYSBQVFJBQ0VfR0VUUkVHU0VUIG9mIE5U X0FSTV9aQSB3ZXJlIGV4ZWN1dGVkIGZvciBlYWNoIHRocmVhZA0KPiArICB3aGVuIHRoZSBjb3Jl ZHVtcCB3YXMgZ2VuZXJhdGVkLg0KPiArDQoNCk9LLg0KDQo+ICsNCj4gKzkuICBTeXN0ZW0gcnVu dGltZSBjb25maWd1cmF0aW9uDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiArDQo+ICsqIFRvIG1pdGlnYXRlIHRoZSBBQkkgaW1wYWN0IG9mIGV4cGFuc2lvbiBvZiB0aGUg c2lnbmFsIGZyYW1lLCBhIHBvbGljeQ0KPiArICBtZWNoYW5pc20gaXMgcHJvdmlkZWQgZm9yIGFk bWluaXN0cmF0b3JzLCBkaXN0cm8gbWFpbnRhaW5lcnMgYW5kIGRldmVsb3BlcnMNCj4gKyAgdG8g c2V0IHRoZSBkZWZhdWx0IHZlY3RvciBsZW5ndGggZm9yIHVzZXJzcGFjZSBwcm9jZXNzZXM6DQo+ ICsNCj4gKy9wcm9jL3N5cy9hYmkvc21lX2RlZmF1bHRfdmVjdG9yX2xlbmd0aA0KPiArDQo+ICsg ICAgV3JpdGluZyB0aGUgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyIHRvIHRoaXMg ZmlsZSBzZXRzIHRoZSBzeXN0ZW0NCj4gKyAgICBkZWZhdWx0IHZlY3RvciBsZW5ndGggdG8gdGhl IHNwZWNpZmllZCB2YWx1ZSwgdW5sZXNzIHRoZSB2YWx1ZSBpcyBncmVhdGVyDQo+ICsgICAgdGhh biB0aGUgbWF4aW11bSB2ZWN0b3IgbGVuZ3RoIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtIGluIHdo aWNoIGNhc2UgdGhlDQo+ICsgICAgZGVmYXVsdCB2ZWN0b3IgbGVuZ3RoIGlzIHNldCB0byB0aGF0 IG1heGltdW0uDQo+ICsNCj4gKyAgICBUaGUgcmVzdWx0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHJl b3BlbmluZyB0aGUgZmlsZSBhbmQgcmVhZGluZyBpdHMNCj4gKyAgICBjb250ZW50cy4NCj4gKw0K PiArICAgIEF0IGJvb3QsIHRoZSBkZWZhdWx0IHZlY3RvciBsZW5ndGggaXMgaW5pdGlhbGx5IHNl dCB0byAzMiBvciB0aGUgbWF4aW11bQ0KPiArICAgIHN1cHBvcnRlZCB2ZWN0b3IgbGVuZ3RoLCB3 aGljaGV2ZXIgaXMgc21hbGxlciBhbmQgc3VwcG9ydGVkLiAgVGhpcw0KPiArICAgIGRldGVybWlu ZXMgdGhlIGluaXRpYWwgdmVjdG9yIGxlbmd0aCBvZiB0aGUgaW5pdCBwcm9jZXNzIChQSUQgMSku DQo+ICsNCj4gKyAgICBSZWFkaW5nIHRoaXMgZmlsZSByZXR1cm5zIHRoZSBjdXJyZW50IHN5c3Rl bSBkZWZhdWx0IHZlY3RvciBsZW5ndGguDQo+ICsNCj4gKyogQXQgZXZlcnkgZXhlY3ZlKCkgY2Fs bCwgdGhlIG5ldyB2ZWN0b3IgbGVuZ3RoIG9mIHRoZSBuZXcgcHJvY2VzcyBpcyBzZXQgdG8NCj4g KyAgdGhlIHN5c3RlbSBkZWZhdWx0IHZlY3RvciBsZW5ndGgsIHVubGVzcw0KPiArDQo+ICsgICAg KiBQUl9TTUVfVkxfSU5IRVJJVCAob3IgZXF1aXZhbGVudGx5IFNNRV9QVF9WTF9JTkhFUklUKSBp cyBzZXQgZm9yIHRoZQ0KPiArICAgICAgY2FsbGluZyB0aHJlYWQsIG9yDQo+ICsNCj4gKyAgICAq IGEgZGVmZXJyZWQgdmVjdG9yIGxlbmd0aCBjaGFuZ2UgaXMgcGVuZGluZywgZXN0YWJsaXNoZWQg dmlhIHRoZQ0KPiArICAgICAgUFJfU01FX1NFVF9WTF9PTkVYRUMgZmxhZyAob3IgU01FX1BUX1ZM X09ORVhFQykuDQo+ICsNCj4gKyogTW9kaWZ5aW5nIHRoZSBzeXN0ZW0gZGVmYXVsdCB2ZWN0b3Ig bGVuZ3RoIGRvZXMgbm90IGFmZmVjdCB0aGUgdmVjdG9yIGxlbmd0aA0KPiArICBvZiBhbnkgZXhp c3RpbmcgcHJvY2VzcyBvciB0aHJlYWQgdGhhdCBkb2VzIG5vdCBtYWtlIGFuIGV4ZWN2ZSgpIGNh bGwuDQo+ICsNCg0KT0suDQoNCj4gKw0KPiArQXBwZW5kaXggQS4gIFNNRSBwcm9ncmFtbWVyJ3Mg bW9kZWwgKGluZm9ybWF0aXZlKQ0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBtaW5pbWFs IGRlc2NyaXB0aW9uIG9mIHRoZSBhZGRpdGlvbnMgbWFkZSBieSBTVkUgdG8gdGhlDQo+ICtBUk12 OC1BIHByb2dyYW1tZXIncyBtb2RlbCB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGRvY3VtZW50 Lg0KPiArDQo+ICtOb3RlOiBUaGlzIHNlY3Rpb24gaXMgZm9yIGluZm9ybWF0aW9uIG9ubHkgYW5k IG5vdCBpbnRlbmRlZCB0byBiZSBjb21wbGV0ZSBvcg0KPiArdG8gcmVwbGFjZSBhbnkgYXJjaGl0 ZWN0dXJhbCBzcGVjaWZpY2F0aW9uLg0KPiArDQo+ICtBLjEuICBSZWdpc3RlcnMNCj4gKy0tLS0t LS0tLS0tLS0tLQ0KPiArDQo+ICtJbiBBNjQgc3RhdGUsIFNNRSBhZGRzIHRoZSBmb2xsb3dpbmc6 DQo+ICsNCj4gKyogQSBuZXcgbW9kZSwgc3RyZWFtaW5nIG1vZGUsIGluIHdoaWNoIGEgc3Vic2V0 IG9mIHRoZSBub3JtYWwgRlBTSU1EIGFuZCBTVkUNCj4gKyAgZmVhdHVyZXMgYXJlIGF2YWlsYWJs ZS4gIFdoZW4gc3VwcG9ydGVkIEVMMCBzb2Z0d2FyZSBtYXkgZW50ZXIgYW5kIGxlYXZlDQo+ICsg IHN0cmVhbWluZyBtb2RlIGF0IGFueSB0aW1lLg0KPiArDQo+ICsgIEZvciBiZXN0IHN5c3RlbSBw ZXJmb3JtYW5jZSBpdCBpcyBzdHJvbmdseSBlbmNvdXJhZ2VkIGZvciBzb2Z0d2FyZSB0byBlbmFi bGUNCj4gKyAgc3RyZWFtaW5nIG1vZGUgb25seSB3aGVuIGl0IGlzIGFjdGl2ZWx5IGJlaW5nIHVz ZWQuDQo+ICsNCj4gKyogQSBuZXcgdmVjdG9yIGxlbmd0aCBjb250cm9sbGluZyB0aGUgc2l6ZSBv ZiBaQSBhbmQgdGhlIFogcmVnaXN0ZXJzIHdoZW4gaW4NCj4gKyAgc3RyZWFtaW5nIG1vZGUsIHNl cGFyYXRlbHkgdG8gdGhlIHZlY3RvciBsZW5ndGggdXNlZCBmb3IgU1ZFIHdoZW4gbm90IGluDQo+ ICsgIHN0cmVhbWluZyBtb2RlLiAgVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhhdCBlaXRoZXIg dGhlIGN1cnJlbnRseSBzZWxlY3RlZA0KPiArICB2ZWN0b3IgbGVuZ3RoIG9yIHRoZSBzZXQgb2Yg dmVjdG9yIGxlbmd0aHMgc3VwcG9ydGVkIGZvciB0aGUgdHdvIG1vZGVzIGluDQo+ICsgIGEgZ2l2 ZW4gc3lzdGVtIGhhdmUgYW55IHJlbGF0aW9uc2hpcC4gIFRoZSBzdHJlYW1pbmcgbW9kZSB2ZWN0 b3IgbGVuZ3RoDQo+ICsgIGlzIHJlZmVycmVkIHRvIGFzIFNWTC4NCj4gKw0KPiArKiBBIG5ldyBa QSBtYXRyaXggcmVnaXN0ZXIuICBUaGlzIGlzIGEgc3F1YXJlIG1hdHJpeCBvZiBTVkx4U1ZMIGJp dHMuICBNb3N0DQo+ICsgIG9wZXJhdGlvbnMgb24gWkEgcmVxdWlyZSB0aGF0IHN0cmVhbWluZyBt b2RlIGJlIGVuYWJsZWQgYnV0IFpBIGNhbiBiZQ0KPiArICBlbmFibGVkIHdpdGhvdXQgc3RyZWFt aW5nIG1vZGUgaW4gb3JkZXIgdG8gbG9hZCwgc2F2ZSBhbmQgcmV0YWluIGRhdGEuDQo+ICsNCj4g KyAgRm9yIGJlc3Qgc3lzdGVtIHBlcmZvcm1hbmNlIGl0IGlzIHN0cm9uZ2x5IGVuY291cmFnZWQg Zm9yIHNvZnR3YXJlIHRvIGVuYWJsZQ0KPiArICBaQSBvbmx5IHdoZW4gaXQgaXMgYWN0aXZlbHkg YmVpbmcgdXNlZC4NCj4gKw0KPiArKiBUd28gbmV3IDEgYml0IGZpZWxkcyBpbiBQU1RBVEUgd2hp Y2ggbWF5IGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBTTVNUQVJUIGFuZA0KPiArICBTTVNUT1AgaW5z dHJ1Y3Rpb25zIG9yIGJ5IGFjY2VzcyB0byB0aGUgU1ZDUiBzeXN0ZW0gcmVnaXN0ZXI6DQo+ICsN Cj4gKyAgKiBQU1RBVEUuWkEsIGlmIHRoaXMgaXMgMSB0aGVuIHRoZSBaQSBtYXRyaXggaXMgYWNj ZXNzaWJsZSBhbmQgaGFzIHZhbGlkDQo+ICsgICAgZGF0YSB3aGlsZSBpZiBpdCBpcyAwIHRoZW4g WkEgY2FuIG5vdCBiZSBhY2Nlc3NlZC4gIFdoZW4gUFNUQVRFLlpBIGlzDQo+ICsgICAgY2hhbmdl ZCBmcm9tIDAgdG8gMSBhbGwgYml0cyBpbiBaQSBhcmUgY2xlYXJlZC4NCj4gKw0KPiArICAqIFBT VEFURS5TTSwgaWYgdGhpcyBpcyAxIHRoZW4gdGhlIFBFIGlzIGluIHN0cmVhbWluZyBtb2RlLiAg V2hlbiB0aGUgdmFsdWUNCj4gKyAgICBvZiBQU1RBVEUuU00gaXMgY2hhbmdlZCB0aGVuIGl0IGlz IGltcGxlbWVudGF0aW9uIGRlZmluZWQgaWYgdGhlIHN1YnNldA0KPiArICAgIG9mIHRoZSBmbG9h dGluZyBwb2ludCByZWdpc3RlciBiaXRzIHZhbGlkIGluIGJvdGggbW9kZXMgbWF5IGJlIHJldGFp bmVkLg0KPiArICAgIEFueSBvdGhlciBiaXRzIHdpbGwgYmUgY2xlYXJlZC4NCj4gKw0KDQpPSy4N Cg0KPiArDQo+ICtSZWZlcmVuY2VzDQo+ICs9PT09PT09PT09DQo+ICsNCj4gK1sxXSBhcmNoL2Fy bTY0L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oDQo+ICsgICAgQUFyY2g2NCBMaW51eCBz aWduYWwgQUJJIGRlZmluaXRpb25zDQo+ICsNCj4gK1syXSBhcmNoL2FybTY0L2luY2x1ZGUvdWFw aS9hc20vcHRyYWNlLmgNCj4gKyAgICBBQXJjaDY0IExpbnV4IHB0cmFjZSBBQkkgZGVmaW5pdGlv bnMNCj4gKw0KPiArWzNdIERvY3VtZW50YXRpb24vYXJtNjQvY3B1LWZlYXR1cmUtcmVnaXN0ZXJz LnJzdA0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm02NC9zdmUucnN0IGIvRG9jdW1l bnRhdGlvbi9hcm02NC9zdmUucnN0DQo+IGluZGV4IDlkOWE0ZGU1YmMzNC4uOTNjMmMyOTkwNTg0 IDEwMDY0NA0KPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2FybTY0L3N2ZS5yc3QNCj4gKysrIGIvRG9j dW1lbnRhdGlvbi9hcm02NC9zdmUucnN0DQo+IEBAIC03LDcgKzcsOSBAQCBBdXRob3I6IERhdmUg TWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPg0KPiAgRGF0ZTogICA0IEF1Z3VzdCAyMDE3DQo+ ICANCj4gIFRoaXMgZG9jdW1lbnQgb3V0bGluZXMgYnJpZWZseSB0aGUgaW50ZXJmYWNlIHByb3Zp ZGVkIHRvIHVzZXJzcGFjZSBieSBMaW51eCBpbg0KPiAtb3JkZXIgdG8gc3VwcG9ydCB1c2Ugb2Yg dGhlIEFSTSBTY2FsYWJsZSBWZWN0b3IgRXh0ZW5zaW9uIChTVkUpLg0KPiArb3JkZXIgdG8gc3Vw cG9ydCB1c2Ugb2YgdGhlIEFSTSBTY2FsYWJsZSBWZWN0b3IgRXh0ZW5zaW9uIChTVkUpLCBpbmNs dWRpbmcNCj4gK2ludGVyYWN0aW9ucyB3aXRoIFN0cmVhbWluZyBTVkUgbW9kZSBhZGRlZCBieSB0 aGUgU2NhbGFibGUgTWF0cml4IEV4dGVuc2lvbg0KPiArKFNNRSkuDQo+ICANCj4gIFRoaXMgaXMg YW4gb3V0bGluZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgZmVhdHVyZXMgYW5kIGlzc3VlcyBvbmx5 IGFuZCBub3QNCj4gIGludGVuZGVkIHRvIGJlIGV4aGF1c3RpdmUuDQo+IEBAIC0yMyw2ICsyNSwx MCBAQCBtb2RlbCBmZWF0dXJlcyBmb3IgU1ZFIGlzIGluY2x1ZGVkIGluIEFwcGVuZGl4IEEuDQo+ ICAqIFNWRSByZWdpc3RlcnMgWjAuLlozMSwgUDAuLlAxNSBhbmQgRkZSIGFuZCB0aGUgY3VycmVu dCB2ZWN0b3IgbGVuZ3RoIFZMLCBhcmUNCj4gICAgdHJhY2tlZCBwZXItdGhyZWFkLg0KPiAgDQo+ ICsqIEluIHN0cmVhbWluZyBtb2RlIEZGUiBpcyBub3QgYWNjZXNzaWJsZSB1bmxlc3MgSFdDQVAy X1NNRV9GQTY0IGlzIHByZXNlbnQNCj4gKyAgaW4gdGhlIHN5c3RlbSwgd2hlbiBpdCBpcyBub3Qg c3VwcG9ydGVkIGFuZCB0aGVzZSBpbnRlcmZhY2VzIGFyZSB1c2VkIHRvDQo+ICsgIGFjY2VzcyBz dHJlYW1pbmcgbW9kZSBGRlIgaXMgcmVhZCBhbmQgd3JpdHRlbiBhcyB6ZXJvLg0KPiArDQo+ICAq IFRoZSBwcmVzZW5jZSBvZiBTVkUgaXMgcmVwb3J0ZWQgdG8gdXNlcnNwYWNlIHZpYSBIV0NBUF9T VkUgaW4gdGhlIGF1eCB2ZWN0b3INCj4gICAgQVRfSFdDQVAgZW50cnkuICBQcmVzZW5jZSBvZiB0 aGlzIGZsYWcgaW1wbGllcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIFNWRQ0KPiAgICBpbnN0cnVjdGlv bnMgYW5kIHJlZ2lzdGVycywgYW5kIHRoZSBMaW51eC1zcGVjaWZpYyBzeXN0ZW0gaW50ZXJmYWNl cw0KPiBAQCAtNTMsMTAgKzU5LDE5IEBAIG1vZGVsIGZlYXR1cmVzIGZvciBTVkUgaXMgaW5jbHVk ZWQgaW4gQXBwZW5kaXggQS4NCj4gICAgd2hpY2ggdXNlcnNwYWNlIGNhbiByZWFkIHVzaW5nIGFu IE1SUyBpbnN0cnVjdGlvbi4gIFNlZSBlbGZfaHdjYXBzLnR4dCBhbmQNCj4gICAgY3B1LWZlYXR1 cmUtcmVnaXN0ZXJzLnR4dCBmb3IgZGV0YWlscy4NCj4gIA0KPiArKiBPbiBoYXJkd2FyZSB0aGF0 IHN1cHBvcnRzIHRoZSBTTUUgZXh0ZW5zaW9ucywgSFdDQVAyX1NNRSB3aWxsIGFsc28gYmUNCj4g KyAgcmVwb3J0ZWQgaW4gdGhlIEFUX0hXQ0FQMiBhdXggdmVjdG9yIGVudHJ5LiAgQW1vbmcgb3Ro ZXIgdGhpbmdzIFNNRSBhZGRzDQo+ICsgIHN0cmVhbWluZyBtb2RlIHdoaWNoIHByb3ZpZGVzIGEg c3Vic2V0IG9mIHRoZSBTVkUgZmVhdHVyZSBzZXQgdXNpbmcgYQ0KPiArICBzZXBhcmF0ZSBTTUUg dmVjdG9yIGxlbmd0aCBhbmQgdGhlIHNhbWUgWi9WIHJlZ2lzdGVycy4gIFNlZSBzbWUucnN0DQo+ ICsgIGZvciBtb3JlIGRldGFpbHMuDQo+ICsNCj4gICogRGVidWdnZXJzIHNob3VsZCByZXN0cmlj dCB0aGVtc2VsdmVzIHRvIGludGVyYWN0aW5nIHdpdGggdGhlIHRhcmdldCB2aWEgdGhlDQo+ICAg IE5UX0FSTV9TVkUgcmVnc2V0LiAgVGhlIHJlY29tbWVuZGVkIHdheSBvZiBkZXRlY3Rpbmcgc3Vw cG9ydCBmb3IgdGhpcyByZWdzZXQNCj4gICAgaXMgdG8gY29ubmVjdCB0byBhIHRhcmdldCBwcm9j ZXNzIGZpcnN0IGFuZCB0aGVuIGF0dGVtcHQgYQ0KPiAtICBwdHJhY2UoUFRSQUNFX0dFVFJFR1NF VCwgcGlkLCBOVF9BUk1fU1ZFLCAmaW92KS4NCj4gKyAgcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQs IHBpZCwgTlRfQVJNX1NWRSwgJmlvdikuICBOb3RlIHRoYXQgd2hlbiBTTUUgaXMNCj4gKyAgcHJl c2VudCBhbmQgc3RyZWFtaW5nIFNWRSBtb2RlIGlzIGluIHVzZSB0aGUgRlBTSU1EIHN1YnNldCBv ZiByZWdpc3RlcnMNCj4gKyAgd2lsbCBiZSByZWFkIHZpYSBOVF9BUk1fU1ZFIGFuZCBOVF9BUk1f U1ZFIHdyaXRlcyB3aWxsIGV4aXQgc3RyZWFtaW5nIG1vZGUNCj4gKyAgaW4gdGhlIHRhcmdldC4N Cj4gIA0KPiAgKiBXaGVuZXZlciBTVkUgc2NhbGFibGUgcmVnaXN0ZXIgdmFsdWVzIChabiwgUG4s IEZGUikgYXJlIGV4Y2hhbmdlZCBpbiBtZW1vcnkNCj4gICAgYmV0d2VlbiB1c2Vyc3BhY2UgYW5k IHRoZSBrZXJuZWwsIHRoZSByZWdpc3RlciB2YWx1ZSBpcyBlbmNvZGVkIGluIG1lbW9yeSBpbg0K PiBAQCAtMTI2LDYgKzE0MSwxMSBAQCB0aGUgU1ZFIGluc3RydWN0aW9uIHNldCBhcmNoaXRlY3R1 cmUuDQo+ICAgIGFyZSBvbmx5IHByZXNlbnQgaW4gZnBzaW1kX2NvbnRleHQuICBGb3IgY29udmVu aWVuY2UsIHRoZSBjb250ZW50IG9mIFYwLi5WMzENCj4gICAgaXMgZHVwbGljYXRlZCBiZXR3ZWVu IHN2ZV9jb250ZXh0IGFuZCBmcHNpbWRfY29udGV4dC4NCj4gIA0KPiArKiBUaGUgcmVjb3JkIGNv bnRhaW5zIGEgZmxhZyBmaWVsZCB3aGljaCBpbmNsdWRlcyBhIGZsYWcgU1ZFX1NJR19GTEFHX1NN IHdoaWNoDQo+ICsgIGlmIHNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGhyZWFkIGlzIGluIHN0cmVh bWluZyBtb2RlIGFuZCB0aGUgdmVjdG9yIGxlbmd0aA0KPiArICBhbmQgcmVnaXN0ZXIgZGF0YSAo aWYgcHJlc2VudCkgZGVzY3JpYmUgdGhlIHN0cmVhbWluZyBTVkUgZGF0YSBhbmQgdmVjdG9yDQo+ ICsgIGxlbmd0aC4NCj4gKw0KPiAgKiBUaGUgc2lnbmFsIGZyYW1lIHJlY29yZCBmb3IgU1ZFIGFs d2F5cyBjb250YWlucyBiYXNpYyBtZXRhZGF0YSwgaW4gcGFydGljdWxhcg0KPiAgICB0aGUgdGhy ZWFkJ3MgdmVjdG9yIGxlbmd0aCAoaW4gc3ZlX2NvbnRleHQudmwpLg0KPiAgDQo+IEBAIC0xNzAs NiArMTkwLDExIEBAIFdoZW4gcmV0dXJuaW5nIGZyb20gYSBzaWduYWwgaGFuZGxlcjoNCj4gICAg dGhlIHNpZ25hbCBmcmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB2ZWN0b3IgbGVuZ3Ro LCB0aGUgc2lnbmFsIHJldHVybg0KPiAgICBhdHRlbXB0IGlzIHRyZWF0ZWQgYXMgaWxsZWdhbCwg cmVzdWx0aW5nIGluIGEgZm9yY2VkIFNJR1NFR1YuDQo+ICANCj4gKyogSXQgaXMgcGVybWl0dGVk IHRvIGVudGVyIG9yIGxlYXZlIHN0cmVhbWluZyBtb2RlIGJ5IHNldHRpbmcgb3IgY2xlYXJpbmcN Cj4gKyAgdGhlIFNWRV9TSUdfRkxBR19TTSBmbGFnIGJ1dCBhcHBsaWNhdGlvbnMgc2hvdWxkIHRh a2UgY2FyZSB0byBlbnN1cmUgdGhhdA0KPiArICB3aGVuIGRvaW5nIHNvIHN2ZV9jb250ZXh0LnZs IGFuZCBhbnkgcmVnaXN0ZXIgZGF0YSBhcmUgYXBwcm9wcmlhdGUgZm9yIHRoZQ0KPiArICB2ZWN0 b3IgbGVuZ3RoIGluIHRoZSBuZXcgbW9kZS4NCj4gKw0KPiAgDQo+ICA2LiAgcHJjdGwgZXh0ZW5z aW9ucw0KPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gQEAgLTI2NSw4ICsyOTAsMTQgQEAgcHJj dGwoUFJfU1ZFX0dFVF9WTCkNCj4gIDcuICBwdHJhY2UgZXh0ZW5zaW9ucw0KPiAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ICANCj4gLSogQSBuZXcgcmVnc2V0IE5UX0FSTV9TVkUgaXMgZGVmaW5l ZCBmb3IgdXNlIHdpdGggUFRSQUNFX0dFVFJFR1NFVCBhbmQNCj4gLSAgUFRSQUNFX1NFVFJFR1NF VC4NCj4gKyogTmV3IHJlZ3NldHMgTlRfQVJNX1NWRSBhbmQgTlRfQVJNX1NTVkUgYXJlIGRlZmlu ZWQgZm9yIHVzZSB3aXRoDQo+ICsgIFBUUkFDRV9HRVRSRUdTRVQgYW5kIFBUUkFDRV9TRVRSRUdT RVQuIE5UX0FSTV9TU1ZFIGRlc2NyaWJlcyB0aGUNCj4gKyAgc3RyZWFtaW5nIG1vZGUgU1ZFIHJl Z2lzdGVycyBhbmQgTlRfQVJNX1NWRSBkZXNjcmliZXMgdGhlDQo+ICsgIG5vbi1zdHJlYW1pbmcg bW9kZSBTVkUgcmVnaXN0ZXJzLg0KPiArDQo+ICsgIEluIHRoaXMgZGVzY3JpcHRpb24gYSByZWdp c3RlciBzZXQgaXMgcmVmZXJyZWQgdG8gYXMgYmVpbmcgImxpdmUiIHdoZW4NCj4gKyAgdGhlIHRh cmdldCBpcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3RyZWFtaW5nIG9yIG5vbi1zdHJlYW1pbmcgbW9k ZSBhbmQgaXMNCj4gKyAgdXNpbmcgZGF0YSBiZXlvbmQgdGhlIHN1YnNldCBzaGFyZWQgd2l0aCB0 aGUgRlBTSU1EIFZuIHJlZ2lzdGVycy4NCj4gIA0KPiAgICBSZWZlciB0byBbMl0gZm9yIGRlZmlu aXRpb25zLg0KPiAgDQo+IEBAIC0yOTcsNyArMzI4LDcgQEAgVGhlIHJlZ3NldCBkYXRhIHN0YXJ0 cyB3aXRoIHN0cnVjdCB1c2VyX3N2ZV9oZWFkZXIsIGNvbnRhaW5pbmc6DQo+ICANCj4gICAgICBm bGFncw0KPiAgDQo+IC0JZWl0aGVyDQo+ICsJYXQgbW9zdCBvbmUgb2YNCj4gIA0KPiAgCSAgICBT VkVfUFRfUkVHU19GUFNJTUQNCj4gIA0KPiBAQCAtMzMxLDYgKzM2MiwxMCBAQCBUaGUgcmVnc2V0 IGRhdGEgc3RhcnRzIHdpdGggc3RydWN0IHVzZXJfc3ZlX2hlYWRlciwgY29udGFpbmluZzoNCj4g IA0KPiAgCSAgICBTVkVfUFRfVkxfT05FWEVDIChTRVRSRUdTRVQgb25seSkuDQo+ICANCj4gKwlJ ZiBuZWl0aGVyIEZQU0lNRCBub3IgU1ZFIGZsYWdzIGFyZSBwcm92aWRlZCB0aGVuIG5vIHJlZ2lz dGVyDQo+ICsJcGF5bG9hZCBpcyBhdmFpbGFibGUsIHRoaXMgaXMgb25seSBwb3NzaWJsZSB3aGVu IFNNRSBpcyBpbXBsZW1lbnRlZC4NCj4gKw0KPiArDQo+ICAqIFRoZSBlZmZlY3RzIG9mIGNoYW5n aW5nIHRoZSB2ZWN0b3IgbGVuZ3RoIGFuZC9vciBmbGFncyBhcmUgZXF1aXZhbGVudCB0bw0KPiAg ICB0aG9zZSBkb2N1bWVudGVkIGZvciBQUl9TVkVfU0VUX1ZMLg0KPiAgDQo+IEBAIC0zNDYsNiAr MzgxLDEzIEBAIFRoZSByZWdzZXQgZGF0YSBzdGFydHMgd2l0aCBzdHJ1Y3QgdXNlcl9zdmVfaGVh ZGVyLCBjb250YWluaW5nOg0KPiAgICBjYXNlIG9ubHkgdGhlIHZlY3RvciBsZW5ndGggYW5kIGZs YWdzIGFyZSBjaGFuZ2VkIChhbG9uZyB3aXRoIGFueQ0KPiAgICBjb25zZXF1ZW5jZXMgb2YgdGhv c2UgY2hhbmdlcykuDQo+ICANCj4gKyogSW4gc3lzdGVtcyBzdXBwb3J0aW5nIFNNRSB3aGVuIGlu IHN0cmVhbWluZyBtb2RlIGEgR0VUUkVHU0VUIGZvcg0KPiArICBOVF9SRUdfU1ZFIHdpbGwgcmV0 dXJuIG9ubHkgdGhlIHVzZXJfc3ZlX2hlYWRlciB3aXRoIG5vIHJlZ2lzdGVyIGRhdGEsDQo+ICsg IHNpbWlsYXJseSBhIEdFVFJFR1NFVCBmb3IgTlRfUkVHX1NTVkUgd2lsbCBub3QgcmV0dXJuIGFu eSByZWdpc3RlciBkYXRhDQo+ICsgIHdoZW4gbm90IGluIHN0cmVhbWluZyBtb2RlLg0KPiArDQo+ ICsqIEEgR0VUUkVHU0VUIGZvciBOVF9BUk1fU1NWRSB3aWxsIG5ldmVyIHJldHVybiBTVkVfUFRf UkVHU19GUFNJTUQuDQo+ICsNCj4gICogRm9yIFNFVFJFR1NFVCwgaWYgYW4gU1ZFX1BUX1JFR1Nf U1ZFIHBheWxvYWQgaXMgcHJlc2VudCBhbmQgdGhlDQo+ICAgIHJlcXVlc3RlZCBWTCBpcyBub3Qg c3VwcG9ydGVkLCB0aGUgZWZmZWN0IHdpbGwgYmUgdGhlIHNhbWUgYXMgaWYgdGhlDQo+ICAgIHBh eWxvYWQgd2VyZSBvbWl0dGVkLCBleGNlcHQgdGhhdCBhbiBFSU8gZXJyb3IgaXMgcmVwb3J0ZWQu ICBObw0KPiBAQCAtMzU1LDE3ICszOTcsMjUgQEAgVGhlIHJlZ3NldCBkYXRhIHN0YXJ0cyB3aXRo IHN0cnVjdCB1c2VyX3N2ZV9oZWFkZXIsIGNvbnRhaW5pbmc6DQo+ICAgIHVuc3BlY2lmaWVkLiAg SXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byB0cmFuc2xhdGUgdGhlIHBheWxvYWQgbGF5b3V0DQo+ ICAgIGZvciB0aGUgYWN0dWFsIFZMIGFuZCByZXRyeS4NCj4gIA0KPiArKiBXaGVyZSBTTUUgaXMg aW1wbGVtZW50ZWQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIEdFVFJFR1NFVCB0aGUgcmVnaXN0ZXIN Cj4gKyAgc3RhdGUgZm9yIG5vcm1hbCBTVkUgd2hlbiBpbiBzdHJlYW1pbmcgbW9kZSwgbm9yIHRo ZSBzdHJlYW1pbmcgbW9kZQ0KPiArICByZWdpc3RlciBzdGF0ZSB3aGVuIGluIG5vcm1hbCBtb2Rl LCByZWdhcmRsZXNzIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkDQo+ICsgIGJlaGF2aW91 ciBvZiB0aGUgaGFyZHdhcmUgZm9yIHNoYXJpbmcgZGF0YSBiZXR3ZWVuIHRoZSB0d28gbW9kZXMu DQo+ICsNCj4gKyogQW55IFNFVFJFR1NFVCBvZiBOVF9BUk1fU1ZFIHdpbGwgZXhpdCBzdHJlYW1p bmcgbW9kZSBpZiB0aGUgdGFyZ2V0IHdhcyBpbg0KPiArICBzdHJlYW1pbmcgbW9kZSBhbmQgYW55 IFNFVFJFR1NFVCBvZiBOVF9BUk1fU1NWRSB3aWxsIGVudGVyIHN0cmVhbWluZyBtb2RlDQo+ICsg IGlmIHRoZSB0YXJnZXQgd2FzIG5vdCBpbiBzdHJlYW1pbmcgbW9kZS4NCj4gKw0KPiAgKiBUaGUg ZWZmZWN0IG9mIHdyaXRpbmcgYSBwYXJ0aWFsLCBpbmNvbXBsZXRlIHBheWxvYWQgaXMgdW5zcGVj aWZpZWQuDQo+ICANCj4gIA0KPiAgOC4gIEVMRiBjb3JlZHVtcCBleHRlbnNpb25zDQo+ICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIA0KPiAtKiBBIE5UX0FSTV9TVkUgbm90ZSB3aWxs IGJlIGFkZGVkIHRvIGVhY2ggY29yZWR1bXAgZm9yIGVhY2ggdGhyZWFkIG9mIHRoZQ0KPiAtICBk dW1wZWQgcHJvY2Vzcy4gIFRoZSBjb250ZW50cyB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gdGhlIGRh dGEgdGhhdCB3b3VsZCBoYXZlDQo+IC0gIGJlZW4gcmVhZCBpZiBhIFBUUkFDRV9HRVRSRUdTRVQg b2YgTlRfQVJNX1NWRSB3ZXJlIGV4ZWN1dGVkIGZvciBlYWNoIHRocmVhZA0KPiAtICB3aGVuIHRo ZSBjb3JlZHVtcCB3YXMgZ2VuZXJhdGVkLg0KPiAtDQo+ICsqIE5UX0FSTV9TVkUgYW5kIE5UX0FS TV9TU1ZFIG5vdGVzIHdpbGwgYmUgYWRkZWQgdG8gZWFjaCBjb3JlZHVtcCBmb3INCj4gKyAgZWFj aCB0aHJlYWQgb2YgdGhlIGR1bXBlZCBwcm9jZXNzLiAgVGhlIGNvbnRlbnRzIHdpbGwgYmUgZXF1 aXZhbGVudCB0byB0aGUNCj4gKyAgZGF0YSB0aGF0IHdvdWxkIGhhdmUgYmVlbiByZWFkIGlmIGEg UFRSQUNFX0dFVFJFR1NFVCBvZiB0aGUgY29ycmVzcG9uZGluZw0KPiArICB0eXBlIHdlcmUgZXhl Y3V0ZWQgZm9yIGVhY2ggdGhyZWFkIHdoZW4gdGhlIGNvcmVkdW1wIHdhcyBnZW5lcmF0ZWQuDQo+ ICANCj4gIDkuICBTeXN0ZW0gcnVudGltZSBjb25maWd1cmF0aW9uDQo+ICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpPSy4= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 107FEC433EF for ; Fri, 11 Mar 2022 17:23:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=V5+1kjR6DegH+nTGa9Z3nE0dr1zNiD9s1k7hmhdAd7M=; b=zHhABUvIwBmfVH R+Y5S3fNo0dLgfqKDZKFJ8eocmsvX3iFT8CmXDZFKwXxRctFSgZAHqbypEGBplkXXjbPXLJedpbay J9/1Re2i6Srl58rX5J7CyJ7yDN5kRXXKYuJkEwh4RWRY6C+d1Yc1EC5xx8ajtm0F60ZE3N5t0kQSS aeXqFiHOE3wb6jwd9tJLdw7Qcnt7H0BmVk5qYt8g/gF9D02XLpcd1x5iJBZunCspJqCuMHq+vOEuJ 12P1dY2jOGauDOuEET6Sw4tWyu+dFltGvPjXFiEYidlBJ01B2D3KXmYvtkzIFRUBmPqS8KCxF94K9 t/WhTvh06Azsrub/1cww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nSixc-00HUBK-3E; Fri, 11 Mar 2022 17:21:52 +0000 Received: from mail-db5eur01on0606.outbound.protection.outlook.com ([2a01:111:f400:fe02::606] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nSixV-00HU9j-BL for linux-arm-kernel@lists.infradead.org; Fri, 11 Mar 2022 17:21:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from AM6PR0502CA0065.eurprd05.prod.outlook.com (2603:10a6:20b:56::42) by AM0PR08MB4386.eurprd08.prod.outlook.com (2603:10a6:208:138::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22; Fri, 11 Mar 2022 17:21:38 +0000 Received: from VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::44) by AM6PR0502CA0065.outlook.office365.com (2603:10a6:20b:56::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.24 via Frontend Transport; Fri, 11 Mar 2022 17:21:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT061.mail.protection.outlook.com (10.152.19.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.22 via Frontend Transport; Fri, 11 Mar 2022 17:21:37 +0000 Received: ("Tessian outbound 18e50a6f0513:v113"); Fri, 11 Mar 2022 17:21:37 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8e8098db8cb5aab5 X-CR-MTA-TID: 64aa7808 Received: from cb137c28f097.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id EEECC8BA-A452-4B73-AD1E-3F742B885BFF.1; Fri, 11 Mar 2022 17:21:26 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cb137c28f097.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 11 Mar 2022 17:21:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mo80a0bhtN30/B3I3yGyG5nArkY7wqqQ4AQqDjuDOjaUtc/EihgfdXFwNG7bY+pPgDgTJv2XnDihZPG5klCDkhCwlzPw2RDeFp9W0mC5pVcszLBmOUktB2krmLotbuJKwp1lxc1r5iGKSVSNR3xPX/Pr2I71uIagQ0Ge+mBGXKFniUhLA8089mkGtHZgQ+0jNSjAQtpWUwOvtz2C7+gqVOjr1MoyhqXGKjEYnIaD2UXFdl3w4784VXORHzl+I0ri77080QJuMSRBbf9AGhkHOHCoj9UPQ2AwGWMnOeH5oPs3lbtZmnLsYv0S9Ob899l3R/TZaXaYGCtB3V6iWsUsgA== 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=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=ZzBUOyD++oewWZL8UIrbYGcXE54wICwFSt2NdQs+f0VB7XJc6vzibB79qbMfMYH2dRw1m8CEChngRa3teRSEYkbpDLyKd9fmfbHd3psYGqLZAcF0TKTxklM7w3bT9shT/DP8GXaDbdMuU0yu1W6Xq7TvbPu90uIXuusTMSn7Bpy/ravm3GAAfHIM/bMhX2YCnhOmlIRyBYNejDGv6RCvFldkv6HIjvEqS/LSUEKgPdcxUeXymZUxc23xxQCqfGclT68ccNmGhAzXI4/vXdbv4s1nchQOyYN1q5UuQ/g0rxQvsvjt07lAv8/yG9O3lyejbKQx0aKDXpwy+2ERrxoAIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RnR0/HhqtdIfFM8ekCW1bG8BP6eYQNcM3YvoYLlNKQM=; b=qPzxC5qfQ4YG5Gfg/1OTRLXE8quWq720+fzJSkDqQvHzTeouodCPcJ/ZhKQQo7PkmIM6iwexxFxfi9aWZyLUFSroQtnxhbqgwQmYLIB+FYBjzkPUMsDuHBfGt7jqvZZispbB/H61dV0JVFoa1W4/qnczjhk+q6vAyCK/kdvshFM= Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by VI1PR08MB4480.eurprd08.prod.outlook.com (2603:10a6:803:f6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.15; Fri, 11 Mar 2022 17:21:21 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::7d6e:f858:129f:f240%4]) with mapi id 15.20.5061.022; Fri, 11 Mar 2022 17:21:21 +0000 From: Szabolcs Nagy To: Mark Brown CC: Catalin Marinas , Will Deacon , Marc Zyngier , Shuah Khan , Shuah Khan , Alan Hayward , Luis Machado , Salil Akerkar , Basant KumarDwivedi , James Morse , Alexandru Elisei , Suzuki Poulose , "linux-arm-kernel@lists.infradead.org" , "linux-kselftest@vger.kernel.org" , "kvmarm@lists.cs.columbia.edu" Subject: Re: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Topic: [PATCH v12 06/40] arm64/sme: Provide ABI documentation for SME Thread-Index: AQHYKm4CIV9MScju9UunLqTD29wmxKy6g9qA Date: Fri, 11 Mar 2022 17:21:21 +0000 Message-ID: <20220311172051.GA257833@arm.com> References: <20220225165923.1474372-1-broonie@kernel.org> <20220225165923.1474372-7-broonie@kernel.org> In-Reply-To: <20220225165923.1474372-7-broonie@kernel.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 3eafb177-8ce5-404d-3229-08da038399ae x-ms-traffictypediagnostic: VI1PR08MB4480:EE_|VE1EUR03FT061:EE_|AM0PR08MB4386:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: dJjE/j60t/zriXZ11CyN+BJBQadBwsHw26JudFPmbHhNMkBPxtRNqn6OzWJrzLju6T898uxIcIhy8/nOTKAQSjVIvLECd94x8HU3yHM48UFHLrx0XzR7wDT7++bgcOtwMOc0EtzmrEw3i0QPg6YHGRT45/iGs0xQyggqIAzlUuCfTFHbBFG0KpbFlHIwWLs4TokPjAoiOt8TVUYasAWINxq2U+7OiYRghntx8jhM+iyNeMcDx+AGspu0op/o40Lhk8jfZ6TPTrQ9V/aQrSNi7LIy9TRem6qaUWxKw+m8aD3rxBMjIGnvYQ4VzmY+oQvxIa95Bn1+N+Fcu+p3aA3UTZz0bD3q/2UrVC4zANtoYnWzxNhFDfOtPBqVXqx+32FDXAjC2Y/Lb1CCIB4TJ9oasOWXszw9jdDWRBy00WE+d8eoINjoZlwgyEGmikkroigTm1PCydIjt4qEOKoLnttamudbdRUwMm6/GYi9i9ngZLyViVEh5gGGkLd6H46TTXYdBtsHJwjEkk0NqhVnvx1BMGvpsuDcUXaUa5rt9Ye7Xv5VUK5a+RzFNKkJD4fxZkfgx0I2/HDn0b9+uYF2HDRLCcsDOWm/H808LTIKM1dqVZyfPtMIJcwiQ8zxKk5foH3XEreTGhC1BCrjg3vWw5Vj+jteG//8nFYf5suRsbOxZ41kt1K1deSScZOup+xNbiEpgiNdesigPgmSseqUx6uhmO9ePEvjt3BuuGyIOtE9vm0= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB7179.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(2616005)(1076003)(26005)(6506007)(2906002)(71200400001)(186003)(122000001)(36756003)(6512007)(54906003)(38100700002)(33656002)(83380400001)(508600001)(6486002)(5660300002)(66556008)(66476007)(66446008)(66946007)(30864003)(76116006)(38070700005)(91956017)(6916009)(8676002)(4326008)(8936002)(86362001)(316002)(64756008)(27376004)(559001)(579004); DIR:OUT; SFP:1101; Content-ID: <02E3452A64942A4FA788DFFE56A6A419@eurprd08.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4480 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3f0671f0-dbbb-4423-0e66-08da0383900d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yiA6Liom5nnofpsholxIpGu5TC+eZ/vJEcLHv0n93LT4/83g+WvsENnLzUCFdSaSY2AcrYIpVGXX71lkzJeeYlolkHUfB0hV34Tf/uXjPKQLcZYg2swKJS15oQINJISzi5i9tJ0Pm0N5BV+IB9nIO8aeYVK7JFP+e+Quip/2jQQisO/XejKa2Z15cdKwIaoJ1hkVkK+D0tfsPnoMS9R6EE25RBzFzRpTqdEmFlJmpwAu/85cGD0KBQiEA//Yu5VkUFe/T2WGMQlbvCdUSEbSt3Pyvnz+8ITId5KYIQGDMLVs0qnNY/sjMXPwgrY+d94iABJAD8bxVM34wLsHifC2Z7axvXkltNpsx9pQuHntvJZ7xTYqt+0ehoQjFq2rmdSAAkosWlizP94yPLtT7wIO1F4VUvbI3ilFWN0KpuGGQVRI46lZhHtZ7ATK2vEGCe1RQHjmWAWRRJHsVZ/X6ZsTtaodepzhQ0qUhu+hPH+HPOXRjwjSXNKxtJBMlKIiP8qRsVooS2b49G40yJSkooAYdojniREJNg9KEYHVtkvXyzN+hruMHIK8Vt6RiDJk9YfQFiUOT5+Chr3mlyD7httf90s2vtmHsffwQtfTXNuCFOKOki+OpnSQk2Zns3nU+JmYtyYo9KikzLC34yXbx3eiQDDqnzTRN/7nwDxxakzgG216cb42NcQjAKLt/JaQQnRx11RqaqqB9U850HWhcTBLKw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(356005)(81166007)(83380400001)(40460700003)(336012)(6506007)(6512007)(107886003)(5660300002)(8936002)(33656002)(30864003)(2906002)(2616005)(36756003)(70586007)(82310400004)(47076005)(6486002)(70206006)(508600001)(1076003)(186003)(26005)(54906003)(86362001)(8676002)(6862004)(4326008)(36860700001)(316002)(27376004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2022 17:21:37.8869 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3eafb177-8ce5-404d-3229-08da038399ae X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4386 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220311_092145_730579_A14C16AB X-CRM114-Status: GOOD ( 25.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The 02/25/2022 16:58, Mark Brown wrote: > Provide ABI documentation for SME similar to that for SVE. Due to the very > large overlap around streaming SVE mode in both implementation and > interfaces documentation for streaming mode SVE is added to the SVE > document rather than the SME one. > > Signed-off-by: Mark Brown > --- ... > +1. General > +----------- > + > +* PSTATE.SM, PSTATE.ZA, the streaming mode vector length, the ZA > + register state and TPIDR2_EL0 are tracked per thread. > + > +* The presence of SME is reported to userspace via HWCAP2_SME in the aux vector > + AT_HWCAP2 entry. Presence of this flag implies the presence of the SME > + instructions and registers, and the Linux-specific system interfaces > + described in this document. SME is reported in /proc/cpuinfo as "sme". > + > +* Support for the execution of SME instructions in userspace can also be > + detected by reading the CPU ID register ID_AA64PFR1_EL1 using an MRS > + instruction, and checking that the value of the SME field is nonzero. [3] > + > + It does not guarantee the presence of the system interfaces described in the > + following sections: software that needs to verify that those interfaces are > + present must check for HWCAP2_SME instead. > + > +* There are a number of optional SME features, presence of these is reported > + through AT_HWCAP2 through: > + > + HWCAP2_SME_I16I64 > + HWCAP2_SME_F64F64 > + HWCAP2_SME_I8I32 > + HWCAP2_SME_F16F32 > + HWCAP2_SME_B16F32 > + HWCAP2_SME_F32F32 > + HWCAP2_SME_FA64 > + > + This list may be extended over time as the SME architecture evolves. > + > + These extensions are also reported via the CPU ID register ID_AA64SMFR0_EL1, > + which userspace can read using an MRS instruction. See elf_hwcaps.txt and > + cpu-feature-registers.txt for details. > + > +* Debuggers should restrict themselves to interacting with the target via the > + NT_ARM_SVE, NT_ARM_SSVE and NT_ARM_ZA regsets. The recommended way > + of detecting support for these regsets is to connect to a target process > + first and then attempt a > + > + ptrace(PTRACE_GETREGSET, pid, NT_ARM_, &iov). > + > +* Whenever ZA register values are exchanged in memory between userspace and > + the kernel, the register value is encoded in memory as a series of horizontal > + vectors from 0 to VL/8-1 stored in the same endianness invariant format as is > + used for SVE vectors. > + > +* On thread creation TPIDR2_EL0 is preserved unless CLONE_SETTLS is specified, > + in which case it is set to 0. > + This looks OK. > +2. Vector lengths > +------------------ > + > +SME defines a second vector length similar to the SVE vector length which is > +controls the size of the streaming mode SVE vectors and the ZA matrix array. > +The ZA matrix is square with each side having as many bytes as a SVE vector. > + i would s/SVE vector/streaming mode SVE vector/ or give SME vector length some other name and use that throughout. > + > +3. Sharing of streaming and non-streaming mode SVE state > +--------------------------------------------------------- > + > +It is implementation defined which if any parts of the SVE state are shared > +between streaming and non-streaming modes. When switching between modes > +via software interfaces such as ptrace if no register content is provided as > +part of switching no state will be assumed to be shared and everything will > +be zeroed. > + OK. > + > +4. System call behaviour > +------------------------- > + > +* On syscall PSTATE.ZA is preserved, if PSTATE.ZA==1 then the contents of the > + ZA matrix are preserved. > + > +* On syscall PSTATE.SM will be cleared and the SVE registers will be handled > + as normal. > + > +* Neither the SVE registers nor ZA are used to pass arguments to or receive > + results from any syscall. > + > +* On creation fork() or clone() the newly created process will have PSTATE.SM > + and PSTATE.ZA cleared. is there a reason why fork() clears ZA? i think this is a minor issue, but the usual expectation is that on thread creation thread local state is reset in the child, but in a forked child the state is the same as in the parent (where ZA is preserved according to the first rule). > + > +* All other SME state of a thread, including the currently configured vector > + length, the state of the PR_SME_VL_INHERIT flag, and the deferred vector > + length (if any), is preserved across all syscalls, subject to the specific > + exceptions for execve() described in section 6. > + OK other than the fork comment. > + > +5. Signal handling > +------------------- > + > +* Signal handlers are invoked with streaming mode and ZA disabled. > + > +* A new signal frame record za_context encodes the ZA register contents on > + signal delivery. [1] > + > +* The signal frame record for ZA always contains basic metadata, in particular > + the thread's vector length (in za_context.vl). > + > +* The ZA matrix may or may not be included in the record, depending on > + the value of PSTATE.ZA. The registers are present if and only if: > + za_context.head.size >= ZA_SIG_CONTEXT_SIZE(sve_vq_from_vl(za_context.vl)) > + in which case PSTATE.ZA == 1. > + > +* If matrix data is present, the remainder of the record has a vl-dependent > + size and layout. Macros ZA_SIG_* are defined [1] to facilitate access to > + them. > + > +* The matrix is stored as a series of horizontal vectors in the same format as > + is used for SVE vectors. > + > +* If the ZA context is too big to fit in sigcontext.__reserved[], then extra > + space is allocated on the stack, an extra_context record is written in > + __reserved[] referencing this space. za_context is then written in the > + extra space. Refer to [1] for further details about this mechanism. > + OK. > + > +5. Signal return > +----------------- > + > +When returning from a signal handler: > + > +* If there is no za_context record in the signal frame, or if the record is > + present but contains no register data as described in the previous section, > + then ZA is disabled. > + > +* If za_context is present in the signal frame and contains matrix data then > + PSTATE.ZA is set to 1 and ZA is populated with the specified data. > + > +* The vector length cannot be changed via signal return. If za_context.vl in > + the signal frame does not match the current vector length, the signal return > + attempt is treated as illegal, resulting in a forced SIGSEGV. > + OK. > + > +6. prctl extensions > +-------------------- > + > +Some new prctl() calls are added to allow programs to manage the SME vector > +length: > + > +prctl(PR_SME_SET_VL, unsigned long arg) > + > + Sets the vector length of the calling thread and related flags, where > + arg == vl | flags. Other threads of the calling process are unaffected. > + > + vl is the desired vector length, where sve_vl_valid(vl) must be true. > + > + flags: > + > + PR_SME_VL_INHERIT > + > + Inherit the current vector length across execve(). Otherwise, the > + vector length is reset to the system default at execve(). (See > + Section 9.) > + > + PR_SME_SET_VL_ONEXEC > + > + Defer the requested vector length change until the next execve() > + performed by this thread. > + > + The effect is equivalent to implicit execution of the following > + call immediately after the next execve() (if any) by the thread: > + > + prctl(PR_SME_SET_VL, arg & ~PR_SME_SET_VL_ONEXEC) > + > + This allows launching of a new program with a different vector > + length, while avoiding runtime side effects in the caller. > + > + Without PR_SME_SET_VL_ONEXEC, the requested change takes effect > + immediately. > + > + > + Return value: a nonnegative on success, or a negative value on error: > + EINVAL: SME not supported, invalid vector length requested, or > + invalid flags. > + > + > + On success: > + > + * Either the calling thread's vector length or the deferred vector length > + to be applied at the next execve() by the thread (dependent on whether > + PR_SME_SET_VL_ONEXEC is present in arg), is set to the largest value > + supported by the system that is less than or equal to vl. If vl == > + SVE_VL_MAX, the value set will be the largest value supported by the > + system. > + > + * Any previously outstanding deferred vector length change in the calling > + thread is cancelled. > + > + * The returned value describes the resulting configuration, encoded as for > + PR_SME_GET_VL. The vector length reported in this value is the new > + current vector length for this thread if PR_SME_SET_VL_ONEXEC was not > + present in arg; otherwise, the reported vector length is the deferred > + vector length that will be applied at the next execve() by the calling > + thread. > + > + * Changing the vector length causes all of ZA, P0..P15, FFR and all bits of > + Z0..Z31 except for Z0 bits [127:0] .. Z31 bits [127:0] to become > + unspecified, including both streaming and non-streaming SVE state. > + Calling PR_SME_SET_VL with vl equal to the thread's current vector > + length, or calling PR_SME_SET_VL with the PR_SVE_SET_VL_ONEXEC flag, > + does not constitute a change to the vector length for this purpose. > + > + * Changing the vector length causes PSTATE.ZA and PSTATE.SM to be cleared. > + Calling PR_SME_SET_VL with vl equal to the thread's current vector > + length, or calling PR_SME_SET_VL with the PR_SVE_SET_VL_ONEXEC flag, > + does not constitute a change to the vector length for this purpose. > + > + > +prctl(PR_SME_GET_VL) > + > + Gets the vector length of the calling thread. > + > + The following flag may be OR-ed into the result: > + > + PR_SME_VL_INHERIT > + > + Vector length will be inherited across execve(). > + > + There is no way to determine whether there is an outstanding deferred > + vector length change (which would only normally be the case between a > + fork() or vfork() and the corresponding execve() in typical use). > + > + To extract the vector length from the result, bitwise and it with > + PR_SME_VL_LEN_MASK. > + > + Return value: a nonnegative value on success, or a negative value on error: > + EINVAL: SME not supported. > + OK. > + > +7. ptrace extensions > +--------------------- > + > +* A new regset NT_ARM_SSVE is defined for access to streaming mode SVE > + state via PTRACE_GETREGSET and PTRACE_SETREGSET, this is documented in > + sve.rst. > + > +* A new regset NT_ARM_ZA is defined for ZA state for access to ZA state via > + PTRACE_GETREGSET and PTRACE_SETREGSET. > + > + Refer to [2] for definitions. > + > +The regset data starts with struct user_za_header, containing: > + > + size > + > + Size of the complete regset, in bytes. > + This depends on vl and possibly on other things in the future. > + > + If a call to PTRACE_GETREGSET requests less data than the value of > + size, the caller can allocate a larger buffer and retry in order to > + read the complete regset. > + > + max_size > + > + Maximum size in bytes that the regset can grow to for the target > + thread. The regset won't grow bigger than this even if the target > + thread changes its vector length etc. > + > + vl > + > + Target thread's current streaming vector length, in bytes. > + > + max_vl > + > + Maximum possible streaming vector length for the target thread. > + > + flags > + > + Zero or more of the following flags, which have the same > + meaning and behaviour as the corresponding PR_SET_VL_* flags: > + > + SME_PT_VL_INHERIT > + > + SME_PT_VL_ONEXEC (SETREGSET only). > + > +* The effects of changing the vector length and/or flags are equivalent to > + those documented for PR_SME_SET_VL. > + > + The caller must make a further GETREGSET call if it needs to know what VL is > + actually set by SETREGSET, unless is it known in advance that the requested > + VL is supported. > + > +* The size and layout of the payload depends on the header fields. The > + SME_PT_ZA_*() macros are provided to facilitate access to the data. > + > +* In either case, for SETREGSET it is permissible to omit the payload, in which > + case the vector length and flags are changed and PSTATE.ZA is set to 0 > + (along with any consequences of those changes). If a payload is provided > + then PSTATE.ZA will be set to 1. > + > +* For SETREGSET, if the requested VL is not supported, the effect will be the > + same as if the payload were omitted, except that an EIO error is reported. > + No attempt is made to translate the payload data to the correct layout > + for the vector length actually set. It is up to the caller to translate the > + payload layout for the actual VL and retry. > + > +* The effect of writing a partial, incomplete payload is unspecified. > + I'm not familiar with ptrace, but looks OK. > + > +8. ELF coredump extensions > +--------------------------- > + > +* NT_ARM_SSVE notes will be added to each coredump for > + each thread of the dumped process. The contents will be equivalent to the > + data that would have been read if a PTRACE_GETREGSET of the corresponding > + type were executed for each thread when the coredump was generated. > + > +* A NT_ARM_ZA note will be added to each coredump for each thread of the > + dumped process. The contents will be equivalent to the data that would have > + been read if a PTRACE_GETREGSET of NT_ARM_ZA were executed for each thread > + when the coredump was generated. > + OK. > + > +9. System runtime configuration > +-------------------------------- > + > +* To mitigate the ABI impact of expansion of the signal frame, a policy > + mechanism is provided for administrators, distro maintainers and developers > + to set the default vector length for userspace processes: > + > +/proc/sys/abi/sme_default_vector_length > + > + Writing the text representation of an integer to this file sets the system > + default vector length to the specified value, unless the value is greater > + than the maximum vector length supported by the system in which case the > + default vector length is set to that maximum. > + > + The result can be determined by reopening the file and reading its > + contents. > + > + At boot, the default vector length is initially set to 32 or the maximum > + supported vector length, whichever is smaller and supported. This > + determines the initial vector length of the init process (PID 1). > + > + Reading this file returns the current system default vector length. > + > +* At every execve() call, the new vector length of the new process is set to > + the system default vector length, unless > + > + * PR_SME_VL_INHERIT (or equivalently SME_PT_VL_INHERIT) is set for the > + calling thread, or > + > + * a deferred vector length change is pending, established via the > + PR_SME_SET_VL_ONEXEC flag (or SME_PT_VL_ONEXEC). > + > +* Modifying the system default vector length does not affect the vector length > + of any existing process or thread that does not make an execve() call. > + OK. > + > +Appendix A. SME programmer's model (informative) > +================================================= > + > +This section provides a minimal description of the additions made by SVE to the > +ARMv8-A programmer's model that are relevant to this document. > + > +Note: This section is for information only and not intended to be complete or > +to replace any architectural specification. > + > +A.1. Registers > +--------------- > + > +In A64 state, SME adds the following: > + > +* A new mode, streaming mode, in which a subset of the normal FPSIMD and SVE > + features are available. When supported EL0 software may enter and leave > + streaming mode at any time. > + > + For best system performance it is strongly encouraged for software to enable > + streaming mode only when it is actively being used. > + > +* A new vector length controlling the size of ZA and the Z registers when in > + streaming mode, separately to the vector length used for SVE when not in > + streaming mode. There is no requirement that either the currently selected > + vector length or the set of vector lengths supported for the two modes in > + a given system have any relationship. The streaming mode vector length > + is referred to as SVL. > + > +* A new ZA matrix register. This is a square matrix of SVLxSVL bits. Most > + operations on ZA require that streaming mode be enabled but ZA can be > + enabled without streaming mode in order to load, save and retain data. > + > + For best system performance it is strongly encouraged for software to enable > + ZA only when it is actively being used. > + > +* Two new 1 bit fields in PSTATE which may be controlled via the SMSTART and > + SMSTOP instructions or by access to the SVCR system register: > + > + * PSTATE.ZA, if this is 1 then the ZA matrix is accessible and has valid > + data while if it is 0 then ZA can not be accessed. When PSTATE.ZA is > + changed from 0 to 1 all bits in ZA are cleared. > + > + * PSTATE.SM, if this is 1 then the PE is in streaming mode. When the value > + of PSTATE.SM is changed then it is implementation defined if the subset > + of the floating point register bits valid in both modes may be retained. > + Any other bits will be cleared. > + OK. > + > +References > +========== > + > +[1] arch/arm64/include/uapi/asm/sigcontext.h > + AArch64 Linux signal ABI definitions > + > +[2] arch/arm64/include/uapi/asm/ptrace.h > + AArch64 Linux ptrace ABI definitions > + > +[3] Documentation/arm64/cpu-feature-registers.rst > diff --git a/Documentation/arm64/sve.rst b/Documentation/arm64/sve.rst > index 9d9a4de5bc34..93c2c2990584 100644 > --- a/Documentation/arm64/sve.rst > +++ b/Documentation/arm64/sve.rst > @@ -7,7 +7,9 @@ Author: Dave Martin > Date: 4 August 2017 > > This document outlines briefly the interface provided to userspace by Linux in > -order to support use of the ARM Scalable Vector Extension (SVE). > +order to support use of the ARM Scalable Vector Extension (SVE), including > +interactions with Streaming SVE mode added by the Scalable Matrix Extension > +(SME). > > This is an outline of the most important features and issues only and not > intended to be exhaustive. > @@ -23,6 +25,10 @@ model features for SVE is included in Appendix A. > * SVE registers Z0..Z31, P0..P15 and FFR and the current vector length VL, are > tracked per-thread. > > +* In streaming mode FFR is not accessible unless HWCAP2_SME_FA64 is present > + in the system, when it is not supported and these interfaces are used to > + access streaming mode FFR is read and written as zero. > + > * The presence of SVE is reported to userspace via HWCAP_SVE in the aux vector > AT_HWCAP entry. Presence of this flag implies the presence of the SVE > instructions and registers, and the Linux-specific system interfaces > @@ -53,10 +59,19 @@ model features for SVE is included in Appendix A. > which userspace can read using an MRS instruction. See elf_hwcaps.txt and > cpu-feature-registers.txt for details. > > +* On hardware that supports the SME extensions, HWCAP2_SME will also be > + reported in the AT_HWCAP2 aux vector entry. Among other things SME adds > + streaming mode which provides a subset of the SVE feature set using a > + separate SME vector length and the same Z/V registers. See sme.rst > + for more details. > + > * Debuggers should restrict themselves to interacting with the target via the > NT_ARM_SVE regset. The recommended way of detecting support for this regset > is to connect to a target process first and then attempt a > - ptrace(PTRACE_GETREGSET, pid, NT_ARM_SVE, &iov). > + ptrace(PTRACE_GETREGSET, pid, NT_ARM_SVE, &iov). Note that when SME is > + present and streaming SVE mode is in use the FPSIMD subset of registers > + will be read via NT_ARM_SVE and NT_ARM_SVE writes will exit streaming mode > + in the target. > > * Whenever SVE scalable register values (Zn, Pn, FFR) are exchanged in memory > between userspace and the kernel, the register value is encoded in memory in > @@ -126,6 +141,11 @@ the SVE instruction set architecture. > are only present in fpsimd_context. For convenience, the content of V0..V31 > is duplicated between sve_context and fpsimd_context. > > +* The record contains a flag field which includes a flag SVE_SIG_FLAG_SM which > + if set indicates that the thread is in streaming mode and the vector length > + and register data (if present) describe the streaming SVE data and vector > + length. > + > * The signal frame record for SVE always contains basic metadata, in particular > the thread's vector length (in sve_context.vl). > > @@ -170,6 +190,11 @@ When returning from a signal handler: > the signal frame does not match the current vector length, the signal return > attempt is treated as illegal, resulting in a forced SIGSEGV. > > +* It is permitted to enter or leave streaming mode by setting or clearing > + the SVE_SIG_FLAG_SM flag but applications should take care to ensure that > + when doing so sve_context.vl and any register data are appropriate for the > + vector length in the new mode. > + > > 6. prctl extensions > -------------------- > @@ -265,8 +290,14 @@ prctl(PR_SVE_GET_VL) > 7. ptrace extensions > --------------------- > > -* A new regset NT_ARM_SVE is defined for use with PTRACE_GETREGSET and > - PTRACE_SETREGSET. > +* New regsets NT_ARM_SVE and NT_ARM_SSVE are defined for use with > + PTRACE_GETREGSET and PTRACE_SETREGSET. NT_ARM_SSVE describes the > + streaming mode SVE registers and NT_ARM_SVE describes the > + non-streaming mode SVE registers. > + > + In this description a register set is referred to as being "live" when > + the target is in the appropriate streaming or non-streaming mode and is > + using data beyond the subset shared with the FPSIMD Vn registers. > > Refer to [2] for definitions. > > @@ -297,7 +328,7 @@ The regset data starts with struct user_sve_header, containing: > > flags > > - either > + at most one of > > SVE_PT_REGS_FPSIMD > > @@ -331,6 +362,10 @@ The regset data starts with struct user_sve_header, containing: > > SVE_PT_VL_ONEXEC (SETREGSET only). > > + If neither FPSIMD nor SVE flags are provided then no register > + payload is available, this is only possible when SME is implemented. > + > + > * The effects of changing the vector length and/or flags are equivalent to > those documented for PR_SVE_SET_VL. > > @@ -346,6 +381,13 @@ The regset data starts with struct user_sve_header, containing: > case only the vector length and flags are changed (along with any > consequences of those changes). > > +* In systems supporting SME when in streaming mode a GETREGSET for > + NT_REG_SVE will return only the user_sve_header with no register data, > + similarly a GETREGSET for NT_REG_SSVE will not return any register data > + when not in streaming mode. > + > +* A GETREGSET for NT_ARM_SSVE will never return SVE_PT_REGS_FPSIMD. > + > * For SETREGSET, if an SVE_PT_REGS_SVE payload is present and the > requested VL is not supported, the effect will be the same as if the > payload were omitted, except that an EIO error is reported. No > @@ -355,17 +397,25 @@ The regset data starts with struct user_sve_header, containing: > unspecified. It is up to the caller to translate the payload layout > for the actual VL and retry. > > +* Where SME is implemented it is not possible to GETREGSET the register > + state for normal SVE when in streaming mode, nor the streaming mode > + register state when in normal mode, regardless of the implementation defined > + behaviour of the hardware for sharing data between the two modes. > + > +* Any SETREGSET of NT_ARM_SVE will exit streaming mode if the target was in > + streaming mode and any SETREGSET of NT_ARM_SSVE will enter streaming mode > + if the target was not in streaming mode. > + > * The effect of writing a partial, incomplete payload is unspecified. > > > 8. ELF coredump extensions > --------------------------- > > -* A NT_ARM_SVE note will be added to each coredump for each thread of the > - dumped process. The contents will be equivalent to the data that would have > - been read if a PTRACE_GETREGSET of NT_ARM_SVE were executed for each thread > - when the coredump was generated. > - > +* NT_ARM_SVE and NT_ARM_SSVE notes will be added to each coredump for > + each thread of the dumped process. The contents will be equivalent to the > + data that would have been read if a PTRACE_GETREGSET of the corresponding > + type were executed for each thread when the coredump was generated. > > 9. System runtime configuration > -------------------------------- OK. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel