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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 C652DFF885C for ; Sat, 25 Apr 2026 21:16:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 04AFB10E49A; Sat, 25 Apr 2026 21:16:18 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="G6Nz0/Ni"; dkim-atps=neutral Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011039.outbound.protection.outlook.com [40.93.194.39]) by gabe.freedesktop.org (Postfix) with ESMTPS id C553710E48C for ; Sat, 25 Apr 2026 21:15:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q8iXAuWR1fqDlGgWAruj6g7KzJu8vcE+YKKbWrMzF1fAkfpxChIHQa7+TE4Fd4I7tsIXCQzV0sszZ/YkLOYSdn3eI3Jd8hmsgDUMmyNDJIO8fm8OulqzDclU7DJ9+gkuvg9BCzY5CIq4/cxnjQOe7NtfTfdDWKTW2nNMcpxYF0zXTS6l4uziRiOcM/qRoJE3XkmeDGJmjvYGtCpzMZ5m9/jxde0tJ6b6vdrJ7dcKezgmYjHg91zGytIIBZKSbf9nq6tAnhIRAI+pVjmbef8LIKw9dPXJra+e7Ebrb1srPzwTYo6rzWYQDhz67ffFNWsqlQK4X1JUT566PsKqBkjLXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UPWqWeNmZCRfm6CfqFDQxkbRqTfCo9IE5zDAweyMbiM=; b=mNCTD/J+ykkpRv7OrigMc8oEhgwG+a7t5og3H33nyrwfWzh1dZIJlwOpOlvxnE/SthJD6FA+jNvb0Lh/RcK8ML2J/dc7/O49JMPFWnP5p4dLrUF47A716fG4j1L4PZP71F39sOTZ6LdAoHgsMos2tWIyD+1SaCgNZDp/L3IMJFrDfkoYMC2WgU8XRayIMLybzUSHQINblEBZKQKMVTmvqztHVCh1XrPxGT8/OsfWKkMulX7eUAPyYIuYMrUfYLuDhxcvT5D1ue+VFMNIBNo6V8tqqHSD0taKQobr+LTtg/fp+68/jxrEmOCux7+DI+Sbvfd/o2Z9JgyqVKYMBjSdCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UPWqWeNmZCRfm6CfqFDQxkbRqTfCo9IE5zDAweyMbiM=; b=G6Nz0/NiXSR5Ni1P5udr2mFUWdlz229CBPsJZ0+A0S89zRr7KEWDQh3MvqpY07sOHfy/EvgLjb8gVIGdXhRfFjTTPzWVSDNBXGjdGjColQ/st1VlRWkojZiEt3Zy1jDXT+4sy0fXgeHv3l0mPwSGhivvYx2uG2kR37PD5/Hr0w4PQBbrkYh6EGM7qxBaMYtPsOHJhyfDyHYl+i/5MLYscf8UmBxJ5KUJ4NLOc0USMhEuCrCl0o6uKEAD77PvPGziEF71XOyoqxqbXtFkfgXc6YJP1BvoTRJ8jDPWRVlfAJv96QoWHpgpTV1aYPHdLLOV9ti8vICnDVA14oee0mchhQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) by IA1PR12MB8358.namprd12.prod.outlook.com (2603:10b6:208:3fa::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.13; Sat, 25 Apr 2026 21:15:49 +0000 Received: from DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33]) by DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33%4]) with mapi id 15.20.9870.012; Sat, 25 Apr 2026 21:15:49 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: Miguel Ojeda , Boqun Feng , Gary Guo , Bjorn Roy Baron , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Dave Airlie , Daniel Almeida , dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, nova-gpu@lists.linux.dev, Nikola Djukic , David Airlie , Boqun Feng , John Hubbard , Alistair Popple , Timur Tabi , Edwin Peer , Alexandre Courbot , Andrea Righi , Andy Ritger , Zhi Wang , Balbir Singh , Philipp Stanner , alexeyi@nvidia.com, Eliot Courtney , joel@joelfernandes.org, linux-doc@vger.kernel.org, Joel Fernandes Subject: [PATCH v12 19/22] gpu: nova-core: mm: Add BAR1 memory management self-tests Date: Sat, 25 Apr 2026 17:14:51 -0400 Message-Id: <20260425211454.174696-20-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260425211454.174696-1-joelagnelf@nvidia.com> References: <20260425211454.174696-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: BL1PR13CA0350.namprd13.prod.outlook.com (2603:10b6:208:2c6::25) To DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB6486:EE_|IA1PR12MB8358:EE_ X-MS-Office365-Filtering-Correlation-Id: 4cc286f3-2618-4a9a-4196-08dea30fd316 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|56012099003|18002099003|22082099003|11006099003; X-Microsoft-Antispam-Message-Info: VL5JVU7Jrjix3n13QuBXa0iAKTUSSOek+QQLrd9Djgoo5IeG8GRf3iAQP0aAw3r/IdhswtfoyvMQabcgUEDug7iZmFrdbmGUp9bUOzB4SFd6DGcax52IaFOjs0/NjsS5AII+rnJLjg9YxWks3/2l54R9WUuJoqTE2rqWXORp1Id4xm+xRV92ynMSe7UhQ6sDMHgxdnAcrKMQwxBqdAenADQ+NlE+BUtGLhcS8GIL4PV9EcBqUhUx2gDyPiUCjsorsUHw1VfgRKoRw0r+Ug82sBv+WoNWJtRFyiDbUUUKanbCefb0hqmuR02vdI8drV9CWuxt8a0Jd1PesGdaYk28H/3LK8ydZmB1pTidDjFXNkDVo7p3eYp1OujmiKg5pAoocOPxTWTH1IDheiUtTxzLjOMahcMWl0r5biZhd+9htNLFWddAebiIhZJ5I2zVC3u7RI6ar7aA862Z+wNpy2aWIU57n/NC3W4+DPRR8wCyc35p8x4pqOU0vtAhXNlMhJduHurP0D5bFJmVOFpKh8eQo6Kh81jLtZ8/qF+H8S49fS/Xhsbz1A6A/4oGg8qBPB62nptF/YdeOCKww/k0E6C0YpMT54V41JxC/Ek4E7zR0GJkaYYOtAMBhpqtLc+YAU4MCYf8XvbhD6hS7w4CsQpptJgqa82khZgTEamC4l8deQ6xscI/SHRmaftxRwr5r5RlRDikBhKcpztkbFLVwCNAreW48/isSY/196td5vDUrwU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR12MB6486.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(18002099003)(22082099003)(11006099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Ym5hTzhtaXk4NzJhSXlNUWdYVVBsZGZNMEdFcEFwSjZlMG40Qm02MGREQ1pj?= =?utf-8?B?WWZtbm9OZG85RTZraHlWeDVkdGZyUENibTN6TDhJcC9YSDdRQmZaZHlXV0Vj?= =?utf-8?B?RnF3NGdYSGZUUHRCTm9jZmNKaW1sVG8yaXdvRVJjZlhKSTAzb0xKaUdOOTNV?= =?utf-8?B?bUNLTUgwOWROZ1B3Mm5Ra3IxbTRxSldPY0pCQkk4b2xsUUpnV0NhQkhzckFN?= =?utf-8?B?Q2pBSnl6VDZ4ZS9kL0VuZ0U1Um1UV3ZDSjg5WHlUSTBhOWFBeUxrZ1FpNmVo?= =?utf-8?B?WlJTdC9vSFVvUWJPbGVKMGFhU05XWnhUbGVoS0JNNi8xVTF5VUVPcTQ2SHFT?= =?utf-8?B?aFQrVkhDRWtNVXIvdlZybitLUGZERDFEK0ViSU9vcHhzb3hnaUM1Rmk2MEJ3?= =?utf-8?B?dXAyTFk2MitWTDdyOTFKN09wdktEdWxZTFBWT3JqVFVRN3JtbURLZS9wZUhP?= =?utf-8?B?L2RCQlcwaGRWcjlsSFQxTE5haERucjNXT1JCNnZoT1B2YStzSzFTTW1pOW52?= =?utf-8?B?NkZZOVZBUU5EVk1QSGs3MHNIVlNWYko1TDBSOHdqanhodXBMQURHRmc2c1JC?= =?utf-8?B?dmNuSTQ3TlV6a2pvejdFZ1FDVGFWNW1QdWEvN1NZQVFkUHV1NnZQMnZBZmJH?= =?utf-8?B?TTdSRzFUcVN4RDc2UjlRR2x4SDE2ZG9pRlR1bEI1YVRkeG0vcUNxLytuRXdp?= =?utf-8?B?bzdvN0xiUU1Nc1hrdXFPb2sxeFQzc295bkNrWFZKOXJhRUoyenYwVTNZNGhL?= =?utf-8?B?dlFMQ3Z2UUZicHRmWllMNzdQK2xENjdRY1ZYck9peEdMNlJCeFJGTGVud3hv?= =?utf-8?B?cFpJRzhONXhONDdZTmNtWHFFQ2VVOTJqVUkwRTVLZUcxYVB1ZWtjak1sMi9O?= =?utf-8?B?VkZiTkZ1djBva3dLNzI1cjFlRkVxaERMaFF5QVg4enFWdis2N3h4a01Bc1l3?= =?utf-8?B?a0gxcmJLUGpSY3JsU1J6R1lUQ1VYZ1dFQWJ4MVc1ZGxmVjNBZFA1aWVhSE1u?= =?utf-8?B?Y2RHUkQva2xtZ0pmUFo1NGRjamdhMEYxSWRyT3VEamNFcVdxSGhPK2RDOHU4?= =?utf-8?B?RlQ2cjZTUHF3UW13RWw3R2o3c0RyZTZmTEdMU3RCNHFlRDR0M1FTdXdIL3VV?= =?utf-8?B?Yjk0b1FSWkM1MmRLRm9kdStNS2F4MGwyUW9NNXBySXQyN2ZUcUMxUkU2aEh1?= =?utf-8?B?NkNwMXVJRmdLaEJDYWdEY0RKZ2poN2pRaXdBaW9vSElLMFU4dDNUVDkrYXlD?= =?utf-8?B?c0tyR1NaSkc1TU5mRWJ5NUxOZXZCRGFJY3FnYkZWYk93bWVSa29VODdpN2RK?= =?utf-8?B?Vy9kb0xsRkpSTndwbFh1UDJXa1RwWktpQzBBSjB0clVkSW96bDdkajZvaXdM?= =?utf-8?B?WThtaGtPeDhvME12R3BxQkNXbVN1eUVzSFV4N25YVWlib1dOdytXdDNKSFZ3?= =?utf-8?B?dms4NUQxMHNhZFNXNjZCM2xHNlE5N2lLVGFTc2l6OWVuZ010bHZwbkdRcTQ0?= =?utf-8?B?cm5EYXRFREUwM05VU1hIejRRb0Fya20vYTZSamVORE9WeWwwRllvT3c3eHUy?= =?utf-8?B?MEJyN2tPQk8yUGVsa2UzdWE1TW4yT2diNzRIMitJTkJKbWI2S3Zvb2ZlVmJO?= =?utf-8?B?RHNqb25xKzRCakRTWXVNZkFiUVVieVNSb2dpSDVjSWNueGNsKzgzb3o3ZUZG?= =?utf-8?B?ejllYmlvRDJkSUZiOWxWcnhJUHpabko5UU9xR2NPMDlMK2J2dkxJbmhvUVQ5?= =?utf-8?B?Vmg2ejA3R0FVVml3eE5jR0NiaW5RTk0xOVF6NUpjTzEzd1lFUWZBb0M3YmZR?= =?utf-8?B?RUVVNDFDVDIySjQrVUt4b2FjN0ZXajh6STd2VVN4MVV2c0p3ajkxYWRkQWxh?= =?utf-8?B?Szl5ZFN1UVM5OUFQS0hSWW91eExqd2NycnJvdXFPa2ttbjM3Njdxa2d0WDVN?= =?utf-8?B?enJ5MnJaWlN0UDJRc1ZNeXFENlJSN2NhSlJyTjJRRy9SRGxWUDc3ZlpiVWpV?= =?utf-8?B?a1pNQy9NQXg3a0FDYm1VOFg3S1o1cEROY09XOHB3ck55aGVQWmxES28wY3da?= =?utf-8?B?MUdVV09acWZXeDM1TFFscnJjNzNDZHhNdkJXTzBaSlVGSEZXak5xaFUwbmRu?= =?utf-8?B?ZUc4VDNway8yVHQzMCtUTld4WllJeThIZU5tSDIyZk1OeUtnekgrWkVwbXhP?= =?utf-8?B?emdMaERiN3lVMVh1aWNMbVRMWHNhOXJIUlc4OXRid01Nc1VNVW9pSFRwWGNV?= =?utf-8?B?cDlKVk1OUGRRMTFnRWVEZWVkUnJKeG1UQVFwWmJQeWF4ei8yTHgvcXRXOXRo?= =?utf-8?B?dytwOEFZQ3RaNi9OMXBVOVNxWWovVmlWT1lVYWh5bnp1RlNsTjdGUT09?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4cc286f3-2618-4a9a-4196-08dea30fd316 X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB6486.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2026 21:15:49.5907 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: czUCyOvtI77BxQVaVnhkUvNaCgoEDYEEd2VDue6Mh0RNuw2k0uBEsUTMUlZMFun2g69ldmfNyzBG0QBIManmsA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8358 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIHNlbGYtdGVzdHMgZm9yIEJBUjEgYWNjZXNzIGR1cmluZyBkcml2ZXIgcHJvYmUgd2hlbgpD T05GSUdfTk9WQV9NTV9TRUxGVEVTVFMgaXMgZW5hYmxlZCAoZGVmYXVsdCBkaXNhYmxlZCkuIFRo aXMgcmVzdWx0cyBpbgp0ZXN0aW5nIHRoZSBWbW0sIEdQVSBidWRkeSBhbGxvY2F0b3IgYW5kIEJB UjEgcmVnaW9uIGFsbCBvZiB3aGljaCBzaG91bGQKZnVuY3Rpb24gY29ycmVjdGx5IGZvciB0aGUg dGVzdHMgdG8gcGFzcy4KCkNjOiBOaWtvbGEgRGp1a2ljIDxuZGp1a2ljQG52aWRpYS5jb20+ClNp Z25lZC1vZmYtYnk6IEpvZWwgRmVybmFuZGVzIDxqb2VsYWduZWxmQG52aWRpYS5jb20+Ci0tLQog ZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWcgICAgICAgICB8ICAxMCArKwogZHJpdmVycy9n cHUvbm92YS1jb3JlL2RyaXZlci5ycyAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9ub3ZhLWNv cmUvZ3B1LnJzICAgICAgICAgIHwgIDMxICsrKysKIGRyaXZlcnMvZ3B1L25vdmEtY29yZS9tbS9i YXJfdXNlci5ycyAgfCAyNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L25vdmEtY29yZS9tbS9wYWdldGFibGUucnMgfCAgMzUgKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAz MjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L25vdmEtY29yZS9LY29uZmlnIGIvZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWcKaW5kZXgg NjUxMzAwN2JmNjZmLi4zNWRlNTVhYWJjZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L25vdmEt Y29yZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9LY29uZmlnCkBAIC0xNSwz ICsxNSwxMyBAQCBjb25maWcgTk9WQV9DT1JFCiAJICBUaGlzIGRyaXZlciBpcyB3b3JrIGluIHBy b2dyZXNzIGFuZCBtYXkgbm90IGJlIGZ1bmN0aW9uYWwuCiAKIAkgIElmIE0gaXMgc2VsZWN0ZWQs IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbm92YV9jb3JlLgorCitjb25maWcgTk9WQV9NTV9T RUxGVEVTVFMKKwlib29sICJNZW1vcnkgbWFuYWdlbWVudCBzZWxmLXRlc3RzIgorCWRlcGVuZHMg b24gTk9WQV9DT1JFCisJaGVscAorCSAgRW5hYmxlIHNlbGYtdGVzdHMgZm9yIHRoZSBtZW1vcnkg bWFuYWdlbWVudCBzdWJzeXN0ZW0uIFdoZW4gZW5hYmxlZCwKKwkgIHRlc3RzIGFyZSBydW4gZHVy aW5nIEdQVSBwcm9iZSB0byB2ZXJpZnkgUFJBTUlOIGFwZXJ0dXJlIGFjY2VzcywKKwkgIHBhZ2Ug dGFibGUgd2Fsa2luZywgYW5kIEJBUjEgdmlydHVhbCBtZW1vcnkgbWFwcGluZyBmdW5jdGlvbmFs aXR5LgorCisJICBUaGlzIGlzIGEgdGVzdGluZyBvcHRpb24gYW5kIGlzIGRlZmF1bHQtZGlzYWJs ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzIGIvZHJpdmVy cy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycwppbmRleCBlNzhhNjgyYTdmMmEuLjZmOTVmODY3MjE1 OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2RyaXZlci5ycworKysgYi9kcml2 ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzCkBAIC05Nyw2ICs5Nyw4IEBAIGZuIHByb2JlKHBk ZXY6ICZwY2k6OkRldmljZTxDb3JlPiwgX2luZm86ICZTZWxmOjpJZEluZm8pIC0+IGltcGwgUGlu SW5pdDxTZWxmLCBFCiAKICAgICAgICAgICAgIE9rKHRyeV9waW5faW5pdCEoU2VsZiB7CiAgICAg ICAgICAgICAgICAgZ3B1IDwtIEdwdTo6bmV3KHBkZXYsIGJhci5jbG9uZSgpLCBiYXIuYWNjZXNz KHBkZXYuYXNfcmVmKCkpPyksCisgICAgICAgICAgICAgICAgLy8gUnVuIG9wdGlvbmFsIEdQVSBz ZWxmdGVzdHMuCisgICAgICAgICAgICAgICAgXzogeyBncHUucnVuX3NlbGZ0ZXN0cyhwZGV2KT8g fSwKICAgICAgICAgICAgICAgICBfcmVnIDwtIGF1eGlsaWFyeTo6UmVnaXN0cmF0aW9uOjpuZXco CiAgICAgICAgICAgICAgICAgICAgIHBkZXYuYXNfcmVmKCksCiAgICAgICAgICAgICAgICAgICAg IGMibm92YS1kcm0iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2dwdS5ycyBi L2RyaXZlcnMvZ3B1L25vdmEtY29yZS9ncHUucnMKaW5kZXggNzNhNDhkYmEzOTFkLi5lOTRmNTM3 NGViNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9ncHUucnMKKysrIGIvZHJp dmVycy9ncHUvbm92YS1jb3JlL2dwdS5ycwpAQCAtMzQ2LDQgKzM0NiwzNSBAQCBwdWIoY3JhdGUp IGZuIHVuYmluZCgmc2VsZiwgZGV2OiAmZGV2aWNlOjpEZXZpY2U8ZGV2aWNlOjpDb3JlPikgewog ICAgICAgICAgICAgLmluc3BlY3QofGJhcnwgc2VsZi5zeXNtZW1fZmx1c2gudW5yZWdpc3Rlcihi YXIpKQogICAgICAgICAgICAgLmlzX2VycigpKTsKICAgICB9CisKKyAgICAvLy8gUnVuIHNlbGZ0 ZXN0cyBvbiB0aGUgY29uc3RydWN0ZWQgW2BHcHVgXS4KKyAgICBwdWIoY3JhdGUpIGZuIHJ1bl9z ZWxmdGVzdHMoCisgICAgICAgIG11dCBzZWxmOiBQaW48Jm11dCBTZWxmPiwKKyAgICAgICAgcGRl djogJnBjaTo6RGV2aWNlPGRldmljZTo6Qm91bmQ+LAorICAgICkgLT4gUmVzdWx0IHsKKyAgICAg ICAgc2VsZi5hc19tdXQoKS5ydW5fbW1fc2VsZnRlc3RzKHBkZXYpPzsKKyAgICAgICAgT2soKCkp CisgICAgfQorCisgICAgI1tjZmcoQ09ORklHX05PVkFfTU1fU0VMRlRFU1RTKV0KKyAgICBmbiBy dW5fbW1fc2VsZnRlc3RzKHNlbGY6IFBpbjwmbXV0IFNlbGY+LCBwZGV2OiAmcGNpOjpEZXZpY2U8 ZGV2aWNlOjpCb3VuZD4pIC0+IFJlc3VsdCB7CisgICAgICAgIC8vIEJBUjEgc2VsZi10ZXN0cy4K KyAgICAgICAgbGV0IGJhcjEgPSBBcmM6OnBpbl9pbml0KHBkZXYuaW9tYXBfcmVnaW9uKDEsIGMi bm92YS1jb3JlL2JhcjEiKSwgR0ZQX0tFUk5FTCk/OworICAgICAgICBsZXQgYmFyMV9hY2Nlc3Mg PSBiYXIxLmFjY2VzcyhwZGV2LmFzX3JlZigpKT87CisKKyAgICAgICAgY3JhdGU6Om1tOjpiYXJf dXNlcjo6cnVuX3NlbGZfdGVzdCgKKyAgICAgICAgICAgIHBkZXYuYXNfcmVmKCksCisgICAgICAg ICAgICAmc2VsZi5tbSwKKyAgICAgICAgICAgIGJhcjFfYWNjZXNzLAorICAgICAgICAgICAgc2Vs Zi5nc3Bfc3RhdGljX2luZm8uYmFyMV9wZGVfYmFzZSwKKyAgICAgICAgICAgIHNlbGYuc3BlYy5j aGlwc2V0LAorICAgICAgICApPzsKKworICAgICAgICBPaygoKSkKKyAgICB9CisKKyAgICAjW2Nm Zyhub3QoQ09ORklHX05PVkFfTU1fU0VMRlRFU1RTKSldCisgICAgZm4gcnVuX21tX3NlbGZ0ZXN0 cyhzZWxmOiBQaW48Jm11dCBTZWxmPiwgX3BkZXY6ICZwY2k6OkRldmljZTxkZXZpY2U6OkJvdW5k PikgLT4gUmVzdWx0IHsKKyAgICAgICAgT2soKCkpCisgICAgfQogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvbm92YS1jb3JlL21tL2Jhcl91c2VyLnJzIGIvZHJpdmVycy9ncHUvbm92YS1jb3Jl L21tL2Jhcl91c2VyLnJzCmluZGV4IGFiNTZlY2Q2NmZiOS4uOGQ5OTZlN2VhZWJlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbW0vYmFyX3VzZXIucnMKKysrIGIvZHJpdmVycy9n cHUvbm92YS1jb3JlL21tL2Jhcl91c2VyLnJzCkBAIC0xNTQsMyArMTU0LDI0NyBAQCBmbiBkcm9w KCZtdXQgc2VsZikgewogICAgICAgICB9CiAgICAgfQogfQorCisvLy8gUnVuIE1NIHN1YnN5c3Rl bSBzZWxmLXRlc3RzIGR1cmluZyBwcm9iZS4KKy8vLworLy8vIFRlc3RzIHBhZ2UgdGFibGUgaW5m cmFzdHJ1Y3R1cmUgYW5kIGBCQVIxYCBNTUlPIGFjY2VzcyB1c2luZyB0aGUgYEJBUjFgCisvLy8g YWRkcmVzcyBzcGFjZS4gVXNlcyB0aGUgYEdwdU1tYCdzIGJ1ZGR5IGFsbG9jYXRvciB0byBhbGxv Y2F0ZSBwYWdlIHRhYmxlcworLy8vIGFuZCB0ZXN0IHBhZ2VzIGFzIG5lZWRlZC4KKyNbY2ZnKENP TkZJR19OT1ZBX01NX1NFTEZURVNUUyldCitwdWIoY3JhdGUpIGZuIHJ1bl9zZWxmX3Rlc3QoCisg ICAgcGRldjogJmRldmljZTo6RGV2aWNlPGRldmljZTo6Qm91bmQ+LAorICAgIG1tOiAmR3B1TW0s CisgICAgYmFyMTogJkJhcjEsCisgICAgYmFyMV9wZGI6IHU2NCwKKyAgICBjaGlwc2V0OiBDaGlw c2V0LAorKSAtPiBSZXN1bHQgeworICAgIHVzZSBrZXJuZWw6OmdwdTo6YnVkZHk6OnsKKyAgICAg ICAgR3B1QnVkZHlBbGxvY0ZsYWdzLAorICAgICAgICBHcHVCdWRkeUFsbG9jTW9kZSwgLy8KKyAg ICB9OworICAgIHVzZSBrZXJuZWw6OnB0cjo6QWxpZ25tZW50OworICAgIHVzZSBrZXJuZWw6OnNp emVzOjp7CisgICAgICAgIFNaXzE2SywKKyAgICAgICAgU1pfMzJLLAorICAgICAgICBTWl80SywK KyAgICAgICAgU1pfNjRLLCAvLworICAgIH07CisKKyAgICAvLyBUZXN0IHBhdHRlcm5zLgorICAg IGNvbnN0IFBBVFRFUk5fUFJBTUlOOiB1MzIgPSAweERFQURfQkVFRjsKKyAgICBjb25zdCBQQVRU RVJOX0JBUjE6IHUzMiA9IDB4Q0FGRV9CQUJFOworCisgICAgbGV0IGRldiA9IHBkZXY7CisgICAg ZGV2X2luZm8hKGRldiwgIk1NOiBTdGFydGluZyBzZWxmLXRlc3QuLi5cbiIpOworCisgICAgbGV0 IHBkYl9hZGRyID0gVnJhbUFkZHJlc3M6Om5ldyhiYXIxX3BkYik7CisKKyAgICAvLyBDaGVjayBp ZiBpbml0aWFsIHBhZ2UgdGFibGVzIGFyZSBpbiBWUkFNLgorICAgIGlmIGNyYXRlOjptbTo6cGFn ZXRhYmxlOjpjaGVja19wZGJfdmFsaWQocGRldiwgbW0ucHJhbWluKCksIHBkYl9hZGRyLCBjaGlw c2V0KS5pc19lcnIoKSB7CisgICAgICAgIGRldl9pbmZvIShkZXYsICJNTTogU2VsZi10ZXN0IFNL SVBQRUQgLSBubyB2YWxpZCBWUkFNIHBhZ2UgdGFibGVzXG4iKTsKKyAgICAgICAgcmV0dXJuIE9r KCgpKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdXAgYSB0ZXN0IHBhZ2UgZnJvbSB0aGUgYnVkZHkg YWxsb2NhdG9yLgorICAgIGxldCB0ZXN0X3BhZ2VfYmxvY2tzID0gS0JveDo6cGluX2luaXQoCisg ICAgICAgIG1tLmJ1ZGR5KCkuYWxsb2NfYmxvY2tzKAorICAgICAgICAgICAgR3B1QnVkZHlBbGxv Y01vZGU6OlNpbXBsZSwKKyAgICAgICAgICAgIFNaXzRLLmludG9fc2FmZV9jYXN0KCksCisgICAg ICAgICAgICBBbGlnbm1lbnQ6Om5ldzo6PFNaXzRLPigpLAorICAgICAgICAgICAgR3B1QnVkZHlB bGxvY0ZsYWdzOjpkZWZhdWx0KCksCisgICAgICAgICksCisgICAgICAgIEdGUF9LRVJORUwsCisg ICAgKT87CisgICAgbGV0IHRlc3RfdnJhbV9vZmZzZXQgPSB0ZXN0X3BhZ2VfYmxvY2tzLml0ZXIo KS5uZXh0KCkub2tfb3IoRU5PTUVNKT8ub2Zmc2V0KCk7CisgICAgbGV0IHRlc3RfdnJhbSA9IFZy YW1BZGRyZXNzOjpuZXcodGVzdF92cmFtX29mZnNldCk7CisgICAgbGV0IHRlc3RfcGZuID0gUGZu Ojpmcm9tKHRlc3RfdnJhbSk7CisKKyAgICAvLyBDcmVhdGUgYSBWTU0gb2Ygc2l6ZSA2NEsgdG8g dHJhY2sgdmlydHVhbCBtZW1vcnkgbWFwcGluZ3MuCisgICAgbGV0IG11dCB2bW0gPSBWbW06Om5l dyhwZGJfYWRkciwgY2hpcHNldC5tbXVfdmVyc2lvbigpLCBTWl82NEsuaW50b19zYWZlX2Nhc3Qo KSk/OworCisgICAgLy8gQ3JlYXRlIGEgdGVzdCBtYXBwaW5nLgorICAgIGxldCBtYXBwZWQgPSB2 bW0ubWFwX3BhZ2VzKHBkZXYsIG1tLCAmW3Rlc3RfcGZuXSwgTm9uZSwgdHJ1ZSk/OworICAgIGxl dCB0ZXN0X3ZmbiA9IG1hcHBlZC52Zm5fc3RhcnQ7CisKKyAgICAvLyBQcmUtY29tcHV0ZSB0ZXN0 IGFkZHJlc3NlcyBmb3IgdGhlIFBSQU1JTiB0byBCQVIxIHJlYWQgdGVzdC4KKyAgICBsZXQgdmZu X29mZnNldDogdXNpemUgPSB0ZXN0X3Zmbi5yYXcoKS5pbnRvX3NhZmVfY2FzdCgpOworICAgIGxl dCBiYXIxX2Jhc2Vfb2Zmc2V0ID0gdmZuX29mZnNldC5jaGVja2VkX211bChQQUdFX1NJWkUpLm9r X29yKEVPVkVSRkxPVyk/OworICAgIGxldCBiYXIxX3JlYWRfb2Zmc2V0OiB1c2l6ZSA9IGJhcjFf YmFzZV9vZmZzZXQgKyAweDEwMDsKKyAgICBsZXQgdnJhbV9yZWFkX2FkZHI6IHVzaXplID0gdGVz dF92cmFtLnJhdygpICsgMHgxMDA7CisKKyAgICAvLyBUZXN0IDE6IFdyaXRlIHZpYSBQUkFNSU4s IHJlYWQgdmlhIEJBUjEuCisgICAgeworICAgICAgICBsZXQgbXV0IHdpbmRvdyA9IG1tLnByYW1p bigpLmdldF93aW5kb3cocGRldik/OworICAgICAgICB3aW5kb3cudHJ5X3dyaXRlMzIodnJhbV9y ZWFkX2FkZHIsIFBBVFRFUk5fUFJBTUlOKT87CisgICAgfQorCisgICAgLy8gUmVhZCBiYWNrIHZp YSBCQVIxIGFwZXJ0dXJlLgorICAgIGxldCBiYXIxX3ZhbHVlID0gYmFyMS50cnlfcmVhZDMyKGJh cjFfcmVhZF9vZmZzZXQpPzsKKworICAgIGxldCB0ZXN0MV9wYXNzZWQgPSBpZiBiYXIxX3ZhbHVl ID09IFBBVFRFUk5fUFJBTUlOIHsKKyAgICAgICAgdHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAg IGRldl9lcnIhKAorICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgIk1NOiBUZXN0IDEgRkFJ TEVEIC0gRXhwZWN0ZWQgezojMDEweH0sIGdvdCB7OiMwMTB4fVxuIiwKKyAgICAgICAgICAgIFBB VFRFUk5fUFJBTUlOLAorICAgICAgICAgICAgYmFyMV92YWx1ZQorICAgICAgICApOworICAgICAg ICBmYWxzZQorICAgIH07CisKKyAgICAvLyBDbGVhbnVwIC0gaW52YWxpZGF0ZSBQVEUuCisgICAg dm1tLnVubWFwX3BhZ2VzKHBkZXYsIG1tLCBtYXBwZWQpPzsKKworICAgIC8vIFRlc3QgMjogVHdv LXBoYXNlIHByZXBhcmUvZXhlY3V0ZSBBUEkuCisgICAgbGV0IHByZXBhcmVkID0gdm1tLnByZXBh cmVfbWFwKHBkZXYsIG1tLCAxLCBOb25lKT87CisgICAgbGV0IG1hcHBlZDIgPSB2bW0uZXhlY3V0 ZV9tYXAocGRldiwgbW0sIHByZXBhcmVkLCAmW3Rlc3RfcGZuXSwgdHJ1ZSk/OworICAgIGxldCBy ZWFkYmFjayA9IHZtbS5yZWFkX21hcHBpbmcocGRldiwgbW0sIG1hcHBlZDIudmZuX3N0YXJ0KT87 CisgICAgbGV0IHRlc3QyX3Bhc3NlZCA9IGlmIHJlYWRiYWNrID09IFNvbWUodGVzdF9wZm4pIHsK KyAgICAgICAgdHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIhKGRldiwgIk1NOiBU ZXN0IDIgRkFJTEVEIC0gVHdvLXBoYXNlIG1hcCByZWFkYmFjayBtaXNtYXRjaFxuIik7CisgICAg ICAgIGZhbHNlCisgICAgfTsKKyAgICB2bW0udW5tYXBfcGFnZXMocGRldiwgbW0sIG1hcHBlZDIp PzsKKworICAgIC8vIFRlc3QgMzogUmFuZ2UtY29uc3RyYWluZWQgYWxsb2NhdGlvbiB3aXRoIGEg aG9sZSDigJQgZXhlcmNpc2VzIGJsb2NrLnNpemUoKS1kcml2ZW4KKyAgICAvLyBCQVIxIG1hcHBp bmcuIEEgNEsgaG9sZSBpcyBwdW5jaGVkIGF0IGJhc2UrMTZLLCB0aGVuIGEgc2luZ2xlIDMySyBh bGxvY2F0aW9uCisgICAgLy8gaXMgcmVxdWVzdGVkIHdpdGhpbiBbYmFzZSwgYmFzZSszNkspLiBU aGUgYnVkZHkgYWxsb2NhdG9yIG11c3Qgc3BsaXQgYXJvdW5kIHRoZQorICAgIC8vIGhvbGUsIHJl dHVybmluZyBtdWx0aXBsZSBibG9ja3MgKGV4cGVjdGVkOiB7MTZLLCA0SywgOEssIDRLfSA9IDMy SyB0b3RhbCkuCisgICAgLy8gRWFjaCBibG9jayBpcyBtYXBwZWQgaW50byBCQVIxIGFuZCB2ZXJp ZmllZCB2aWEgUFJBTUlOIHJlYWQtYmFjay4KKyAgICAvLworICAgIC8vIEFkZHJlc3MgbGF5b3V0 IChiYXNlID0gMHgxMDAwMCk6CisgICAgLy8gICBbICAgIDE2SyAgICBdIFtIT0xFIDRLXSBbNEtd IFsgOEsgXSBbNEtdCisgICAgLy8gICAweDEwMDAwICAgICAgIDB4MTQwMDAgIDB4MTUwMDAgMHgx NjAwMCAweDE4MDAwIDB4MTkwMDAKKyAgICBsZXQgcmFuZ2VfYmFzZTogdTY0ID0gU1pfNjRLLmlu dG9fc2FmZV9jYXN0KCk7CisgICAgbGV0IHN6XzRrOiB1NjQgPSBTWl80Sy5pbnRvX3NhZmVfY2Fz dCgpOworICAgIGxldCBzel8xNms6IHU2NCA9IFNaXzE2Sy5pbnRvX3NhZmVfY2FzdCgpOworICAg IGxldCBzel8zMmtfNGs6IHU2NCA9IChTWl8zMksgKyBTWl80SykuaW50b19zYWZlX2Nhc3QoKTsK KworICAgIC8vIFB1bmNoIGEgNEsgaG9sZSBhdCBiYXNlKzE2SyBzbyB0aGUgc3Vic2VxdWVudCAz MksgYWxsb2NhdGlvbiBtdXN0IHNwbGl0LgorICAgIGxldCBfaG9sZSA9IEtCb3g6OnBpbl9pbml0 KAorICAgICAgICBtbS5idWRkeSgpLmFsbG9jX2Jsb2NrcygKKyAgICAgICAgICAgIEdwdUJ1ZGR5 QWxsb2NNb2RlOjpSYW5nZShyYW5nZV9iYXNlICsgc3pfMTZrLi5yYW5nZV9iYXNlICsgc3pfMTZr ICsgc3pfNGspLAorICAgICAgICAgICAgU1pfNEsuaW50b19zYWZlX2Nhc3QoKSwKKyAgICAgICAg ICAgIEFsaWdubWVudDo6bmV3Ojo8U1pfNEs+KCksCisgICAgICAgICAgICBHcHVCdWRkeUFsbG9j RmxhZ3M6OmRlZmF1bHQoKSwKKyAgICAgICAgKSwKKyAgICAgICAgR0ZQX0tFUk5FTCwKKyAgICAp PzsKKworICAgIC8vIEFsbG9jYXRlIDMySyB3aXRoaW4gW2Jhc2UsIGJhc2UrMzZLKS4gVGhlIGhv bGUgZm9yY2VzIHRoZSBhbGxvY2F0b3IgdG8gcmV0dXJuCisgICAgLy8gc3BsaXQgYmxvY2tzIHdo b3NlIHNpemVzIGFyZSBkZXRlcm1pbmVkIGJ5IGJ1ZGR5IGFsaWdubWVudC4KKyAgICBsZXQgYmxv Y2tzID0gS0JveDo6cGluX2luaXQoCisgICAgICAgIG1tLmJ1ZGR5KCkuYWxsb2NfYmxvY2tzKAor ICAgICAgICAgICAgR3B1QnVkZHlBbGxvY01vZGU6OlJhbmdlKHJhbmdlX2Jhc2UuLnJhbmdlX2Jh c2UgKyBzel8zMmtfNGspLAorICAgICAgICAgICAgU1pfMzJLLmludG9fc2FmZV9jYXN0KCksCisg ICAgICAgICAgICBBbGlnbm1lbnQ6Om5ldzo6PFNaXzRLPigpLAorICAgICAgICAgICAgR3B1QnVk ZHlBbGxvY0ZsYWdzOjpkZWZhdWx0KCksCisgICAgICAgICksCisgICAgICAgIEdGUF9LRVJORUws CisgICAgKT87CisKKyAgICBsZXQgbXV0IHRlc3QzX3Bhc3NlZCA9IHRydWU7CisgICAgbGV0IG11 dCB0b3RhbF9zaXplID0gMHVzaXplOworCisgICAgZm9yIGJsb2NrIGluIGJsb2Nrcy5pdGVyKCkg eworICAgICAgICB0b3RhbF9zaXplICs9IEludG9TYWZlQ2FzdDo6PHVzaXplPjo6aW50b19zYWZl X2Nhc3QoYmxvY2suc2l6ZSgpKTsKKworICAgICAgICAvLyBNYXAgYWxsIHBhZ2VzIG9mIHRoaXMg YmxvY2suCisgICAgICAgIGxldCBwYWdlX3NpemU6IHU2NCA9IFBBR0VfU0laRS5pbnRvX3NhZmVf Y2FzdCgpOworICAgICAgICBsZXQgbnVtX3BhZ2VzOiB1c2l6ZSA9IChibG9jay5zaXplKCkgLyBw YWdlX3NpemUpLmludG9fc2FmZV9jYXN0KCk7CisKKyAgICAgICAgbGV0IG11dCBwZm5zID0gS1Zl Yzo6bmV3KCk7CisgICAgICAgIGZvciBqIGluIDAuLm51bV9wYWdlcyB7CisgICAgICAgICAgICBs ZXQgal91NjQ6IHU2NCA9IGouaW50b19zYWZlX2Nhc3QoKTsKKyAgICAgICAgICAgIHBmbnMucHVz aCgKKyAgICAgICAgICAgICAgICBQZm46OmZyb20oVnJhbUFkZHJlc3M6Om5ldygKKyAgICAgICAg ICAgICAgICAgICAgYmxvY2sub2Zmc2V0KCkgKyBqX3U2NC5jaGVja2VkX211bChwYWdlX3NpemUp Lm9rX29yKEVPVkVSRkxPVyk/LAorICAgICAgICAgICAgICAgICkpLAorICAgICAgICAgICAgICAg IEdGUF9LRVJORUwsCisgICAgICAgICAgICApPzsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBt YXBwZWQgPSB2bW0ubWFwX3BhZ2VzKHBkZXYsIG1tLCAmcGZucywgTm9uZSwgdHJ1ZSk/OworICAg ICAgICBsZXQgYmFyMV9iYXNlX3ZmbjogdXNpemUgPSBtYXBwZWQudmZuX3N0YXJ0LnJhdygpLmlu dG9fc2FmZV9jYXN0KCk7CisgICAgICAgIGxldCBiYXIxX2Jhc2UgPSBiYXIxX2Jhc2VfdmZuLmNo ZWNrZWRfbXVsKFBBR0VfU0laRSkub2tfb3IoRU9WRVJGTE9XKT87CisKKyAgICAgICAgZm9yIGog aW4gMC4ubnVtX3BhZ2VzIHsKKyAgICAgICAgICAgIGxldCBwYWdlX2JhcjFfb2ZmID0gYmFyMV9i YXNlICsgaiAqIFBBR0VfU0laRTsKKyAgICAgICAgICAgIGxldCBqX3U2NDogdTY0ID0gai5pbnRv X3NhZmVfY2FzdCgpOworICAgICAgICAgICAgbGV0IHBhZ2VfcGh5cyA9IGJsb2NrLm9mZnNldCgp CisgICAgICAgICAgICAgICAgKyBqX3U2NAorICAgICAgICAgICAgICAgICAgICAuY2hlY2tlZF9t dWwoUEFHRV9TSVpFLmludG9fc2FmZV9jYXN0KCkpCisgICAgICAgICAgICAgICAgICAgIC5va19v cihFT1ZFUkZMT1cpPzsKKworICAgICAgICAgICAgYmFyMS50cnlfd3JpdGUzMihQQVRURVJOX0JB UjEsIHBhZ2VfYmFyMV9vZmYpPzsKKworICAgICAgICAgICAgbGV0IHByYW1pbl92YWwgPSB7Cisg ICAgICAgICAgICAgICAgbGV0IG11dCB3aW5kb3cgPSBtbS5wcmFtaW4oKS5nZXRfd2luZG93KHBk ZXYpPzsKKyAgICAgICAgICAgICAgICB3aW5kb3cudHJ5X3JlYWQzMihwYWdlX3BoeXMuaW50b19z YWZlX2Nhc3QoKSk/CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiBwcmFtaW5fdmFs ICE9IFBBVFRFUk5fQkFSMSB7CisgICAgICAgICAgICAgICAgZGV2X2VyciEoCisgICAgICAgICAg ICAgICAgICAgIGRldiwKKyAgICAgICAgICAgICAgICAgICAgIk1NOiBUZXN0IDMgRkFJTEVEIGJs b2NrIG9mZnNldCB7OiN4fSBwYWdlIHt9ICh2YWw9ezojeH0pXG4iLAorICAgICAgICAgICAgICAg ICAgICBibG9jay5vZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgaiwKKyAgICAgICAgICAg ICAgICAgICAgcHJhbWluX3ZhbAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg dGVzdDNfcGFzc2VkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg ICB2bW0udW5tYXBfcGFnZXMocGRldiwgbW0sIG1hcHBlZCk/OworICAgIH0KKworICAgIC8vIFZl cmlmeSBhZ2dyZWdhdGU6IGFsbCByZXR1cm5lZCBibG9jayBzaXplcyBtdXN0IHN1bSB0byBhbGxv Y2F0aW9uIHNpemUuCisgICAgaWYgdG90YWxfc2l6ZSAhPSBTWl8zMksgeworICAgICAgICBkZXZf ZXJyISgKKyAgICAgICAgICAgIGRldiwKKyAgICAgICAgICAgICJNTTogVGVzdCAzIEZBSUxFRCAt IHRvdGFsIHNpemUge30gIT0gZXhwZWN0ZWQge31cbiIsCisgICAgICAgICAgICB0b3RhbF9zaXpl LAorICAgICAgICAgICAgU1pfMzJLCisgICAgICAgICk7CisgICAgICAgIHRlc3QzX3Bhc3NlZCA9 IGZhbHNlOworICAgIH0KKworICAgIC8vIFJlbGVhc2UgVGVzdHMgMS0zJ3MgVm1tIGJlZm9yZSBU ZXN0IDQgY29uc3RydWN0cyBhIGZyZXNoIEJhclVzZXIgb24KKyAgICAvLyB0aGUgc2FtZSBQREIu CisgICAgZHJvcCh2bW0pOworCisgICAgLy8gVGVzdCA0OiBFeGVyY2lzZSBgQmFyVXNlcjo6bWFw KClgIGVuZC10by1lbmQuCisgICAgbGV0IG11dCBiYXJfdXNlciA9IEJhclVzZXI6Om5ldyhwZGJf YWRkciwgY2hpcHNldCwgU1pfNjRLLmludG9fc2FmZV9jYXN0KCkpPzsKKyAgICBsZXQgdGVzdDRf cGFzc2VkID0geworICAgICAgICBsZXQgYWNjZXNzID0gYmFyX3VzZXIubWFwKHBkZXYsIG1tLCBi YXIxLCAmW3Rlc3RfcGZuXSwgdHJ1ZSk/OworCisgICAgICAgIC8vIFdyaXRlIHBhdHRlcm4gdmlh IFBSQU1JTiwgcmVhZCB2aWEgQmFyVXNlckFjY2Vzcy4KKyAgICAgICAgeworICAgICAgICAgICAg bGV0IG11dCB3aW5kb3cgPSBtbS5wcmFtaW4oKS5nZXRfd2luZG93KHBkZXYpPzsKKyAgICAgICAg ICAgIHdpbmRvdy50cnlfd3JpdGUzMih0ZXN0X3ZyYW0ucmF3KCksIFBBVFRFUk5fQkFSMSk/Owor ICAgICAgICB9CisKKyAgICAgICAgbGV0IHJlYWRiYWNrID0gYWNjZXNzLnRyeV9yZWFkMzIoMCk/ OworICAgICAgICBpZiByZWFkYmFjayA9PSBQQVRURVJOX0JBUjEgeworICAgICAgICAgICAgdHJ1 ZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGV2X2VyciEoCisgICAgICAgICAgICAg ICAgZGV2LAorICAgICAgICAgICAgICAgICJNTTogVGVzdCA0IEZBSUxFRCAtIEV4cGVjdGVkIHs6 IzAxMHh9LCBnb3QgezojMDEweH1cbiIsCisgICAgICAgICAgICAgICAgUEFUVEVSTl9CQVIxLAor ICAgICAgICAgICAgICAgIHJlYWRiYWNrCisgICAgICAgICAgICApOworICAgICAgICAgICAgZmFs c2UKKyAgICAgICAgfQorICAgIH07CisKKyAgICBpZiB0ZXN0MV9wYXNzZWQgJiYgdGVzdDJfcGFz c2VkICYmIHRlc3QzX3Bhc3NlZCAmJiB0ZXN0NF9wYXNzZWQgeworICAgICAgICBkZXZfaW5mbyEo ZGV2LCAiTU06IEFsbCBzZWxmLXRlc3RzIFBBU1NFRFxuIik7CisgICAgICAgIE9rKCgpKQorICAg IH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIhKGRldiwgIk1NOiBTZWxmLXRlc3RzIEZBSUxFRFxu Iik7CisgICAgICAgIEVycihFSU8pCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv bm92YS1jb3JlL21tL3BhZ2V0YWJsZS5ycyBiL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9tbS9wYWdl dGFibGUucnMKaW5kZXggNDA3MDA3MDkyMmE0Li44ZmQxNzljZTc0NzYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L25vdmEtY29yZS9tbS9wYWdldGFibGUucnMKKysrIGIvZHJpdmVycy9ncHUvbm92 YS1jb3JlL21tL3BhZ2V0YWJsZS5ycwpAQCAtMjIsNyArMjIsMTAgQEAKICAgICBWaXJ0dWFsQWRk cmVzcywKICAgICBWcmFtQWRkcmVzcywgLy8KIH07Ci11c2Uga2VybmVsOjpwcmVsdWRlOjoqOwor dXNlIGtlcm5lbDo6eworICAgIGRldmljZSwKKyAgICBwcmVsdWRlOjoqLCAvLworfTsKIAogLy8v IEV4dHJhY3RzIHRoZSBwYWdlIHRhYmxlIGluZGV4IGF0IGEgZ2l2ZW4gbGV2ZWwgZnJvbSBhIHZp cnR1YWwgYWRkcmVzcy4KIHB1YihzdXBlcikgdHJhaXQgVmFMZXZlbEluZGV4IHsKQEAgLTM4Mywz ICszODYsMzMgQEAgZm4gZnJvbSh2YWw6IEFwZXJ0dXJlUGRlKSAtPiBTZWxmIHsKICAgICAgICAg Qm91bmRlZDo6ZnJvbV9leHByKHZhbCBhcyB1NjQgJiAweDMpCiAgICAgfQogfQorCisvLy8gQ2hl Y2sgaWYgdGhlIFBEQiBoYXMgdmFsaWQsIFZSQU0tYmFja2VkIHBhZ2UgdGFibGVzLgorI1tjZmco Q09ORklHX05PVkFfTU1fU0VMRlRFU1RTKV0KK2ZuIGNoZWNrX3BkYl9pbm5lcjxNOiBNbXVDb25m aWc+KAorICAgIGRldjogJmRldmljZTo6RGV2aWNlPGRldmljZTo6Qm91bmQ+LAorICAgIHByYW1p bjogJnByYW1pbjo6UHJhbWluLAorICAgIHBkYl9hZGRyOiBWcmFtQWRkcmVzcywKKykgLT4gUmVz dWx0IHsKKyAgICBsZXQgbXV0IHdpbmRvdyA9IHByYW1pbi5nZXRfd2luZG93KGRldik/OworICAg IGxldCByYXcgPSB3aW5kb3cudHJ5X3JlYWQ2NChwZGJfYWRkci5yYXcoKSk/OworCisgICAgaWYg IU06OlBkZTo6bmV3KHJhdykuaXNfdmFsaWRfdnJhbSgpIHsKKyAgICAgICAgcmV0dXJuIEVycihF Tk9FTlQpOworICAgIH0KKyAgICBPaygoKSkKK30KKworLy8vIENoZWNrIGlmIHRoZSBQREIgaGFz IHZhbGlkLCBWUkFNLWJhY2tlZCBwYWdlIHRhYmxlcywgZGlzcGF0Y2hpbmcgYnkgTU1VIHZlcnNp b24uCisjW2NmZyhDT05GSUdfTk9WQV9NTV9TRUxGVEVTVFMpXQorcHViKHN1cGVyKSBmbiBjaGVj a19wZGJfdmFsaWQoCisgICAgZGV2OiAmZGV2aWNlOjpEZXZpY2U8ZGV2aWNlOjpCb3VuZD4sCisg ICAgcHJhbWluOiAmcHJhbWluOjpQcmFtaW4sCisgICAgcGRiX2FkZHI6IFZyYW1BZGRyZXNzLAor ICAgIGNoaXBzZXQ6IGNyYXRlOjpncHU6OkNoaXBzZXQsCispIC0+IFJlc3VsdCB7CisgICAgbWF0 Y2ggTW11VmVyc2lvbjo6ZnJvbShjaGlwc2V0LmFyY2goKSkgeworICAgICAgICBNbXVWZXJzaW9u OjpWMiA9PiBjaGVja19wZGJfaW5uZXI6OjxNbXVWMj4oZGV2LCBwcmFtaW4sIHBkYl9hZGRyKSwK KyAgICAgICAgTW11VmVyc2lvbjo6VjMgPT4gY2hlY2tfcGRiX2lubmVyOjo8TW11VjM+KGRldiwg cHJhbWluLCBwZGJfYWRkciksCisgICAgfQorfQotLSAKMi4zNC4xCgo=