From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010064.outbound.protection.outlook.com [40.93.198.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D73AD30EF84 for ; Tue, 3 Feb 2026 12:00:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.64 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770120035; cv=fail; b=enI7gwFLjJjMXci0B0o/2aMWqPmwhJUvUmsYNhMjZC8Dm36edfhdGfThklQffOHsfdBdq8I7i1HT0Y7ORD84IW8WIhkiCF8mIlHkFXWT5/qs+upQjoUyJJsfHZ/noriYLAiTcKN+nlAmCHrL8XSlVy1x7nkif02JqhunJ3NK6wE= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770120035; c=relaxed/simple; bh=S2csjMDWJfDZtspHoqD8B9WF2t3APD7W0q/HxbjLfko=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=QDDRNyrXOHyNN7lDG9rNQ5Qu6WObnNmhTwurTJSHDs5hS+4Hf+r5s/3pSshyEdjtCdulumucLMqgqNDmmtfbJF3aIvkEbIy4Z1lXK3imWuFvpWRf1piAuCV0aHYWI1Kghoxqo6mpK/B2D9ZgXHVHt+M1XwkoO5k+PihJ515YSAM= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=pXVJinB4; arc=fail smtp.client-ip=40.93.198.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="pXVJinB4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O+Pqes9Xgto1SZ65eLyrGMZEzjekIe8lN+YbDXFslG1a/I717YmOLFz1q7m8rjwzDVZLlTAxjCll+Rd4sCYG0a20pyYAiVwofJp9h4KD+QMXGURTzKNlgYnF0hUqg5XM9CdcIZzbWVizEcSm8aiStFn/xBF3FDZ2tYJGhhvA9ZPERmHXWy+OCAfGTa+pe9W9ughmusUnAGkpCWjOrmdPTfFFy+H+5BM3X2a1HI76IHzwvRwRL7tKWlUgpBT0yhrV+2sg2QnSpMk1WAQP1beBAFGs1HyF4aGiTmyShWvcYlZvdQ/v1J1HC10wvUEWpu/BL3jB3+mVmi9TjD2zT/SNCA== 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=S2csjMDWJfDZtspHoqD8B9WF2t3APD7W0q/HxbjLfko=; b=YGCvD7lnO3bnWhOAGXlrsjJbejkVJTKj9K0hcfIAAt5vUUmhAQJkGYfp6P78B7U+14bpbB2o8tSXOZ+pUP4xGg/N/xm+wVu7++iCcJWoHpZDj4VddaD1WW9xU6p1ZQwtTdK2O1mZQPv1YnXoq8va/ty/d0+2u85nNywJJE82/fdtDG3IWyt4zptyiVKzojOEQKbdu4FaoCLfh8rhvfojFRINAFaSaSYXatd4ICIamXzZsDT0Cir4pyvR3DYSIFbSZFB9Y1QwdjTGmQ1botlR8vpXyAlbNNy/fjaMPMWJyJ1OvM3t9hi4j+ShZwISbg+ujJYtrLncHvHiZcccDyHQww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 198.47.23.194) smtp.rcpttodomain=linux.dev smtp.mailfrom=ti.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=ti.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S2csjMDWJfDZtspHoqD8B9WF2t3APD7W0q/HxbjLfko=; b=pXVJinB4Hr3A1kIMgsPtfsMDgPcdEQU21gmgxouw8AXiblrlIbzC6CNV656+ljYxgwj8fyk1VMsyEOMohj93f1WI3XNU8zsFhrejl0o5fwz5hJKmljxeJhhaYRywkTblbT3G9W8rM4oh0wZyHjeTUJarHRYzo4+qWNcgVfTMY+0= Received: from DS7PR05CA0026.namprd05.prod.outlook.com (2603:10b6:5:3b9::31) by MW6PR10MB7613.namprd10.prod.outlook.com (2603:10b6:303:23b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Tue, 3 Feb 2026 12:00:29 +0000 Received: from CY4PEPF0000E9D2.namprd03.prod.outlook.com (2603:10b6:5:3b9:cafe::6a) by DS7PR05CA0026.outlook.office365.com (2603:10b6:5:3b9::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9587.12 via Frontend Transport; Tue, 3 Feb 2026 12:00:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 198.47.23.194) smtp.mailfrom=ti.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ti.com; Received-SPF: Pass (protection.outlook.com: domain of ti.com designates 198.47.23.194 as permitted sender) receiver=protection.outlook.com; client-ip=198.47.23.194; helo=lewvzet200.ext.ti.com; pr=C Received: from lewvzet200.ext.ti.com (198.47.23.194) by CY4PEPF0000E9D2.mail.protection.outlook.com (10.167.241.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.10 via Frontend Transport; Tue, 3 Feb 2026 12:00:29 +0000 Received: from DLEE206.ent.ti.com (157.170.170.90) by lewvzet200.ext.ti.com (10.4.14.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 3 Feb 2026 06:00:28 -0600 Received: from DLEE208.ent.ti.com (157.170.170.97) by DLEE206.ent.ti.com (157.170.170.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 3 Feb 2026 06:00:28 -0600 Received: from DLEE208.ent.ti.com ([fe80::eccb:3d12:9ac:a479]) by DLEE208.ent.ti.com ([fe80::eccb:3d12:9ac:a479%20]) with mapi id 15.02.2562.020; Tue, 3 Feb 2026 06:00:28 -0600 From: "Ding, Shenghao" To: Matthew Schwartz CC: "broonie@kernel.org" , "andriy.shevchenko@linux.intel.com" , "linux-kernel@vger.kernel.org" , "Xu, Baojun" , "Baojun.Xu@fpt.com" , "13564923607@139.com" <13564923607@139.com>, "13916275206@139.com" <13916275206@139.com>, "lkml@antheas.dev" , "Chen, Robin" , "Yi, Ken" , "tiwai@suse.de" Subject: RE: [EXTERNAL] Re: [PATCH v1] ASoC: tas2781: Put three different calibrated data solution into the same data structure Thread-Topic: [EXTERNAL] Re: [PATCH v1] ASoC: tas2781: Put three different calibrated data solution into the same data structure Thread-Index: AQHclC6eJsGdq+exSEyKAcOhUWBxwLVwX3kAgAB2LkA= Date: Tue, 3 Feb 2026 12:00:28 +0000 Message-ID: <20f2bef49ec44483aa83075cb0f0ab0d@ti.com> References: <20260202102757.532-1-shenghao-ding@ti.com> In-Reply-To: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-c2processedorg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D2:EE_|MW6PR10MB7613:EE_ X-MS-Office365-Filtering-Correlation-Id: 03acb5ba-ab1b-45fc-0b54-08de631bd34d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013|7053199007|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZjNZMnhIWlFlVDd4Mjd6bXhpZWo4cC92TDdZYkc3elptd1hhamNIdFI5WUU5?= =?utf-8?B?b0VKR3VJVWMyWHl3UkVsVEd3azh2eFE2OGpta1F6K2ZuOVI1d0dmWTFWeWIw?= =?utf-8?B?RFNWNXgrK0lkL2pTVkxLS3FBbW5EaVJ6QWJJRkN2aGowMlIyMDVhQW5FOFJw?= =?utf-8?B?Z2gxY240V25xSTNJU083SUY2cXhXaTh5ZTNHMm9QamtQYkJrU2puUkJ6cXpH?= =?utf-8?B?QlgzMm4vcEp1QVRwczhFOHZNanFQSWx6M2F6RWdzUC9YZy85cThyTjNKTWlS?= =?utf-8?B?WWRUT0RFbVVvam8xd3ZRYU9pcVg3cmlOUlFEU0dEdTlwbUFMaXZxVUtOWEFY?= =?utf-8?B?MVR6Y3crQUtSTlNQSVpNVWRXaktjVjhFZm82STBONXlLVS8rVUZEaldHQVg3?= =?utf-8?B?WFErRmpjUGhhTVZjZkhGMVVaVlQ2VkpSZVZYR05yN0VkT0JqT0dCMXhHMmky?= =?utf-8?B?dmVZRmh4R1BuM0VSdTZEQmZmNnlTc0ZGRFkvTSs0MTBKMityYkpiSk9EaGw5?= =?utf-8?B?QWxxcUZnRVkwWWpYUm1mY21pdmt3OU41T05uMVBtT2hRSVJ0d0hyS1ZYZ3l5?= =?utf-8?B?bXNnVGFpZ1ZFOTEzanBDdmpkeFRVdC9zQS9JODV4WVRFU09wcFRuMm04MHVD?= =?utf-8?B?c0dwd25lNExCRlpoT21sR1l3VE5xcmRkWmhtQ2dEY0l6SjRkbTJvRVUzYW5y?= =?utf-8?B?M1NFaXNwdlBGVUVDVmx4QnhBY1U0TzZaVERPbytlRkhjeFk1RmxQdll4TGto?= =?utf-8?B?TUF6VFNBYU5vZCs1MHBhTFdnNXZWOVJPZ0lGWXFzVUdIU21vemhwdm5kbHBp?= =?utf-8?B?R3NCK3ZMRngydTJTSlBsUmtIOXRodVQyc1MrZUwrVmdLYWhYR1laL3EySGRz?= =?utf-8?B?Z05QaldGbjVsTGZldVdwWlcrcUZ5NElkKzlyRWpOVGM0NUc4b3dWS3RGN2tk?= =?utf-8?B?YldrMG1iM0FkUVZ5N2NmcTJjaHhHN1ZwV1dPcHIydTQ3ZldYOWM3ZXE4bllQ?= =?utf-8?B?b040UHJHOVkzd3Y2a2txRkFrc3dFVG9HbEZtQnhDMXN6V1Rtc2dCdXVNOUpq?= =?utf-8?B?TmFsdm1oWmJ4QXRPQk1hVE1aYWxNRnRBaUdKcmdEZU9TaTRSNDJiRWplV0lt?= =?utf-8?B?SXovb1dVR1kxbWtUSVBBbXEzUGxCdC8xbEJveWlPVXdpZ2N0UStpbmV4a0pF?= =?utf-8?B?NHRFVjRjeng0L0lTSWp4bmdyVjJ3RFNyQ0djTWJGUTdaTGpnN1gveTA0d0Ru?= =?utf-8?B?SkcwNjFHM0J2RzNzb1FlamI4bEswb0hsYWdPR1FETkxmSlJJSG82ZzQyS2xF?= =?utf-8?B?dVhrZUVvSUU3YXVZRDMrb0p0QzJ3cjlrcGgrKzZyZGx6WVEzbklCdmg5TGh3?= =?utf-8?B?bzBSWEVDNU5xTDlLU0ZvaWw3NGo4Tm5OZmVtWms0MCtZSmNqTmVMNm92RkIv?= =?utf-8?B?TnY1WTQ1dkE5c1FIQW5rVko3bHpZdEVVa0tnZDJWUHh4YjRXdmdEMk1ZSDVY?= =?utf-8?B?QVkwQVUwUTd0ZUh2ZlN3Kzd5STVKNm02VGJrV3lPZ0duZ0h5bUxCL2IwbzJs?= =?utf-8?B?dXdSZG0xdUdXSy9XbzJGVk5yME9XazNpemk0cEE5bDljWEF1ZXRYODVYWm1X?= =?utf-8?B?MzkxM3VUQlJqQkRZaHRtSVErOGtYMmY5Nkx6ZTBuSlRmSEhlWnhXcW8xUUdi?= =?utf-8?B?M1FKbkF1dGJpVUF0TnU3eGNFczVGSzl4VENsYUU0SzZCdE15YVdGWTY1SGpV?= =?utf-8?B?azJ1eDVxRnZCNkRYZ2d1d2RLSFdUQWcrYldrc3gxMWFIRUN5MkU5WlhKQjRy?= =?utf-8?B?bFNYTFd3bGdJZElDMlZ0ZzVmUWQwWXc3dmRYTkw3R3U2eXVxVERDeWk5Y1VG?= =?utf-8?B?RllOSnB5WU9IMXNQQkNCVVVndWp3UHd3aGM0ZWhGeUlzdVhMNUpzdHdDMHJD?= =?utf-8?B?Sk1kZUV3L2VsWU9pWWdQb3FoYUFkajM2UTJnWHc4VjhGYXNGUDR4MW9iU2Q2?= =?utf-8?B?YzRCaTl4YnJrVmNMb2NaeUhRMVRQVkRpN1pVNVArNEdKOXFTWEdZZUg0azN3?= =?utf-8?B?NUJZaTVYRHhUSUJaSitlUG5jQkZnTXNUVTZIU1RicTlGYzdzVDE4QVBZMjAw?= =?utf-8?B?SytVNnlvUWlJZ216S2ozMjlwaFFmQXBORFNyWGVaeFFvRmRrOS9HQnBkTVVi?= =?utf-8?Q?003aIdwWyFRcGG+qT59rk3A=3D?= X-Forefront-Antispam-Report: CIP:198.47.23.194;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:lewvzet200.ext.ti.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013)(7053199007)(13003099007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LM1dP8eARC72FgfwL3cgsmOZjSEh0OmnZyPx5z/BYoVOCk8/PI9IrAYe3Bx2TAt+GZ9cEHZbgfjV3F43itVaeYLETIPbXYlO766IBwrFKUkWVc1rtAuPHeAbuORssG0pxQrO0zsKPHGLwpj25lru2S7iCeRWXfVGF8mRVGoA1Ja4eGTk4z/GTDpBVGlKnzzXjynSceeF2Z5VEgfY5s1lsuEvxgq42J2kSd8XWsim6LTSLq9qAv/V9TnIUbT4qEeN+sMDLr+ECHmkMRPJyZCgHLzTzlF/a8yuTR9J6EL9Gg2YJ8Tzhl3GznnXEPRaVbUTez2lT5975SGvrr4hB0SnkN2foZ6TzQBZWIBHeHYLz1LYFtKM1jWqGGAwsUsgRB3wCtp49kV9TNGeCBenjgVyuH7Xf1irYgJ1Z6fKulTSlNLAuR9aDnSXElRoMHbko8vR X-OriginatorOrg: ti.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2026 12:00:29.2582 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03acb5ba-ab1b-45fc-0b54-08de631bd34d X-MS-Exchange-CrossTenant-Id: e5b49634-450b-4709-8abb-1e2b19b982b7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5b49634-450b-4709-8abb-1e2b19b982b7;Ip=[198.47.23.194];Helo=[lewvzet200.ext.ti.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000E9D2.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR10MB7613 SGkgTWF0dGhldw0KVGhpcyBwYXRjaCBkb2VzIG5vdCBkaXJlY3RseSBmaXggdGhlIHZvbHVtZSBp c3N1ZTsgaXQgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBncm91bmR3b3JrLiBPdXIgbmV4dCBwYXRj aCB3aWxsIGltcGxlbWVudCB0aGUgYWN0dWFsIHNvbHV0aW9uLg0KDQpBcyB5b3Uga25vdywgdGhl IHZvbHVtZSBpc3N1ZSB3YXMgcmVwb3J0ZWQgb24gYm90aCB0aGUgbGFwdG9wIGFuZCB0aGUgdGFi bGV0LiBGaXhpbmcgdGhpcyBpc3N1ZSBpcyBub3QgYW4gZWFzeSBqb2I7IHdlIHdpbGwgaGF2ZSB0 byBjYXJlZnVsbHkgY29uc2lkZXIgYm90aCBkZXZpY2VzLiANCg0KQm90aCBkZXZpY2VzIHVzZSB0 d28gZGlmZmVyZW50IGNhbGlicmF0aW9uIHNvdXJjZXMgYW5kIHNhdmUgaW50byBkaWZmZXJlbnQg ZGF0YSBzdHJ1Y3R1cmVzOyB0aGUgY2FsaWJyYXRpb24gaW4gdGhlIGxhcHRvcCBpcyBmcm9tIFVF RkkuDQoNCkFuZCB0aGUgY2FsaWJyYXRpb24gaW4gdGhlIHRhYmxldCBpcyBmcm9tIHRoZSBjYWxp YnJhdGlvbiBiaW4gZmlsZXMuIEJlZm9yZSBmaXhpbmcgdGhpcyBpc3N1ZSwgd2Ugd2lsbCBzYXZl IHRoZSB0d28gZGlmZmVyZW50IHNvdXJjZXMgaW50byB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZS4g VGhpcyBwYXRjaCBpcyB3b3JraW5nIGZvciB0aGlzLg0KDQpPdXIgbmV4dCBwYXRjaCB3aWxsIGNo ZWNrIHRoZSBjYWxpYnJhdGVkIGltcGVkYW5jZSBpbiB0aGF0IGRhdGEgc3RydWN0dXJlOyBpZiBp dCBpcyBsb3dlciB0aGFuIHRoZSBkZWZhdWx0LCB0aGUgc2luZSBnYWluIHdpbGwgYmUgc2V0IHRv IGEgc3BlY2lmaWMgdmFsdWUuDQoNCllvdSBtYXkgYXMgd2VsbCB0ZXN0IGl0IGJhc2VkIG9uIEFu dGhlYXMnIHBhdGNoLCB3aGljaCBjb250YWlucyBjYWxpYnJhdGlvbiB1bmlmaWNhdGlvbiBhbmQg dGhlIHNvbHV0aW9uLiBMZXQgbWUga25vdyB5b3VyIHJlc3QgcmVzdWx0cyBvbiB0aGF0IHBhdGNo LiBUaGFua3MuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF0dGhl dyBTY2h3YXJ0eiA8bWF0dGhldy5zY2h3YXJ0ekBsaW51eC5kZXY+DQo+IFNlbnQ6IFR1ZXNkYXks IEZlYnJ1YXJ5IDMsIDIwMjYgNjoxNyBBTQ0KPiBUbzogRGluZywgU2hlbmdoYW8gPHNoZW5naGFv LWRpbmdAdGkuY29tPjsgdGl3YWlAc3VzZS5kZQ0KPiBDYzogYnJvb25pZUBrZXJuZWwub3JnOyBh bmRyaXkuc2hldmNoZW5rb0BsaW51eC5pbnRlbC5jb207IGxpbnV4LQ0KPiBrZXJuZWxAdmdlci5r ZXJuZWwub3JnOyBYdSwgQmFvanVuIDxiYW9qdW4ueHVAdGkuY29tPjsgQmFvanVuLlh1QGZwdC5j b207DQo+IDEzNTY0OTIzNjA3QDEzOS5jb207IDEzOTE2Mjc1MjA2QDEzOS5jb207IGxrbWxAYW50 aGVhcy5kZXYNCj4gU3ViamVjdDogW0VYVEVSTkFMXSBSZTogW1BBVENIIHYxXSBBU29DOiB0YXMy NzgxOiBQdXQgdGhyZWUgZGlmZmVyZW50DQo+IGNhbGlicmF0ZWQgZGF0YSBzb2x1dGlvbiBpbnRv IHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlDQo+IA0KPiBPbiAyLzIvMjYgMjrigIoyNyBBTSwgU2hl bmdoYW8gRGluZyB3cm90ZTogPiBUQVMyNzgxIGRyaXZlciBzdXBwb3J0cyB0aHJlZQ0KPiBzb2x1 dGlvbnMgb2YgY2FsaWJyYXRlZCBkYXRhLiBUaGUgZmlyc3QgaXMgPiBmcm9tIHRoZSBkcml2ZXIg aXRzZWxmOiBkcml2ZXIgcmVhZHMgdGhlDQo+IGNhbGlicmF0ZWQgZmlsZXMgZGlyZWN0bHkgZHVy aW5nID4gcHJvYmU7IFRoZSBzZWNvbmQgaXMgZnJvbSB1c2VyIHNwYWNlOiBkdXJpbmcNCj4gWmpR Y21RUllGcGZwdEJhbm5lclN0YXJ0IFRoaXMgbWVzc2FnZSB3YXMgc2VudCBmcm9tIG91dHNpZGUg b2YgVGV4YXMNCj4gSW5zdHJ1bWVudHMuDQo+IERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0 dGFjaG1lbnRzIHVubGVzcyB5b3UgcmVjb2duaXplIHRoZSBzb3VyY2Ugb2YgdGhpcw0KPiBlbWFp bCBhbmQga25vdyB0aGUgY29udGVudCBpcyBzYWZlLg0KPiA8aHR0cHM6Ly91cy1waGlzaGFsYXJt LQ0KPiBld3QucHJvb2Zwb2ludC5jb20vRVdUL3YxL0czdkshdXJkZ25WM0YxbTJ4cXFYRWRuTmpQ eG1HX1FvbVdfNzkNCj4gVHFPOXlKeUlBb25lZk1FVnJzSWdhT2dIOEVGNVl5eXY1UzIyR0JqazJ6 TE1SR2dvdUM5T1phZmpiVlgtDQo+IFNJcUowdyQ+DQo+IFJlcG9ydCBTdXNwaWNpb3VzDQo+IA0K PiBaalFjbVFSWUZwZnB0QmFubmVyRW5kDQo+IE9uIDIvMi8yNiAyOjI3IEFNLCBTaGVuZ2hhbyBE aW5nIHdyb3RlOg0KPiA+IFRBUzI3ODEgZHJpdmVyIHN1cHBvcnRzIHRocmVlIHNvbHV0aW9ucyBv ZiBjYWxpYnJhdGVkIGRhdGEuIFRoZSBmaXJzdA0KPiA+IGlzIGZyb20gdGhlIGRyaXZlciBpdHNl bGY6IGRyaXZlciByZWFkcyB0aGUgY2FsaWJyYXRlZCBmaWxlcyBkaXJlY3RseQ0KPiA+IGR1cmlu ZyBwcm9iZTsgVGhlIHNlY29uZCBpcyBmcm9tIHVzZXIgc3BhY2U6IGR1cmluZyBpbml0IG9mIGF1 ZGlvIGhhbCwNCj4gPiB0aGUgYXVkaW8gaGFsIHdpbGwgcGFzcyB0aGUgY2FsaWJyYXRlZCBkYXRh IHZpYSBrY29udHJvbCBpbnRlcmZhY2UuDQo+ID4gRHJpdmVyIHdpbGwgc3RvcmUgdGhpcyBkYXRh IGluICJzdHJ1Y3QgY2FsaWRhdGEiIGZvciB1c2UuIFRoZSB0aGlyZCBpcw0KPiA+IGZyb20gVUVG SSwgbWFpbmx5IHVzZWQgaW4gaGRhIGRldmljZS4gVGhlc2UgdGhyZWUgc29sdXRpb25zIHNhdmUg dGhlDQo+ID4gY2FsaWJyYXRlZCBkYXRhIGludG8gZGlmZmVyZW50IGRhdGEgc3RydWN0dXJlcy4g SXQgaXMgdGltZSB0byBwdXQgdGhlbQ0KPiA+IHRvZ2V0aGVyIGludG8gInN0cnVjdCBjYWxpZGF0 YSIgZm9yIHVzZS4NCj4gDQo+IEhlbGxvLA0KPiANCj4gSSB0ZXN0ZWQgdGhpcyBvbiBteSBST0cg WGJveCBBbGx5IFggYnkgcmV2ZXJ0aW5nIGI3ZTI2YzhiZGFlNyAoIkFMU0E6DQo+IGhkYS90YXMy NzgxOiBTa2lwIFVFRkkgY2FsaWJyYXRpb24gb24gQVNVUyBST0cgWGJveCBBbGx5IFgiKSBhbmQg YXBwbHlpbmcNCj4gb25seSB0aGlzIHBhdGNoIG9uIHRvcCBvZiA2LjE5LXJjOC4NCj4gDQo+IFRo ZSBzYW1lIHNwZWFrZXIgaXNzdWVzIHJlcG9ydGVkIGluIFsxXSBwZXJzaXN0LCB3aGVyZSBvbmUg b3IgYm90aCBzcGVha2Vycw0KPiBkcm9wIG91dCBpbnRlcm1pdHRlbnRseS4gSSBsZWF2ZSBvbiB2 YWNhdGlvbiBzb29uIHVudGlsIEZlYnJ1YXJ5IDI0dGggYnV0IEkgd2lsbA0KPiBiZSBhdmFpbGFi bGUgZm9yIGZ1cnRoZXIgdGVzdGluZyBhZnRlciB0aGF0Lg0KPiANCj4gVGhhbmtzLA0KPiBNYXR0 DQo+IA0KPiBbMV06IGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL2xvcmUua2Vy bmVsLm9yZy9hbGwvMGJhMTAwZDAtOWI2Zi0NCj4gNGEzYi1iZmZhLQ0KPiA2MWFiZTFiNDZjZDVA bGludXguZGV2L19fOyEhRzN2SyFTU2dndUF1b0JBbWZyVEZoYVRqbnJYZEtlWXZFLQ0KPiBfUEFz dVdwdVJqaExKaHFXOVhESkFVTzA3bDhyRjNDa1NxZGJVUWgyVmVEZkdCUjYwWlFOTzAwLQ0KPiBw X29YMDBZTm5rJA0KPiANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNoZW5naGFvIERpbmcgPHNo ZW5naGFvLWRpbmdAdGkuY29tPg0KPiA+DQo+ID4gLS0tDQo+ID4gdjE6DQo+ID4gIC0gRHJvcCBp c191c2VyX3NwYWNlX2NhbGlkYXRhDQo+ID4gIC0gVXBkYXRlIHRoZSB5ZWFyIG9mIHRhczI3ODFf aGRhLmMsIHRhczI3ODEuaCwgdGFzMjc4MS1mbXdsaWIuYywNCj4gPiAgICB0YXMyNzgxLWkyYy5j IGFuZCB0YXMyNzgxX2hkYV9pMmMuYw0KPiA+ICAtIFNldCB0byBhbiBpbnZhbGlkIHZhbHVlIGJl Zm9yZSB0aGUgY2FsaWJyYXRlZCBkYXRhIGxvYWRpbmcNCj4gPiAgLSBEcm9wIGxvYWRfY2FsaWJf ZGF0YSgpDQo+ID4gIC0gQWRkIGNhbGJpbl9jb252ZXJzaW9uKCkgYW5kIGNhbGwgaXQgYWZ0ZXIg bG9hZGluZyBjYWxpYmluIGZpbGUNCj4gPiAtLS0NCj4gPiAgaW5jbHVkZS9zb3VuZC90YXMyNzgx LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ID4gIHNvdW5kL2hkYS9jb2RlY3Mv c2lkZS1jb2RlY3MvdGFzMjc4MV9oZGEuYyAgICB8ICAgOSArLQ0KPiA+ICAuLi4vaGRhL2NvZGVj cy9zaWRlLWNvZGVjcy90YXMyNzgxX2hkYV9pMmMuYyAgfCAgMTMgLS0NCj4gPiAgc291bmQvc29j L2NvZGVjcy90YXMyNzgxLWZtd2xpYi5jICAgICAgICAgICAgIHwgMTM4ICsrKysrKysrKysrKysr LS0tLQ0KPiA+ICBzb3VuZC9zb2MvY29kZWNzL3RhczI3ODEtaTJjLmMgICAgICAgICAgICAgICAg fCAgMTEgKy0NCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgNTMgZGVs ZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC90YXMyNzgxLmgg Yi9pbmNsdWRlL3NvdW5kL3RhczI3ODEuaCBpbmRleA0KPiA+IDlkM2M1NGNiODIyMy4uN2MwM2Jk Yzk1MWJiIDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvc291bmQvdGFzMjc4MS5oDQo+ID4gKysr IGIvaW5jbHVkZS9zb3VuZC90YXMyNzgxLmgNCj4gPiBAQCAtMiw3ICsyLDcgQEANCj4gPiAgLy8N Cj4gPiAgLy8gQUxTQSBTb0MgVGV4YXMgSW5zdHJ1bWVudHMgVEFTMjU2My9UQVMyNzgxIEF1ZGlv IFNtYXJ0IEFtcGxpZmllcg0KPiA+IC8vIC0vLyBDb3B5cmlnaHQgKEMpIDIwMjIgLSAyMDI1IFRl eGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZA0KPiA+ICsvLyBDb3B5cmlnaHQgKEMpIDIwMjIg LSAyMDI2IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZA0KPiA+ICAvLyBodHRwczovL3d3 dy50aS5jb20NCj4gPiAgLy8NCj4gPiAgLy8gVGhlIFRBUzI1NjMvVEFTMjc4MSBkcml2ZXIgaW1w bGVtZW50cyBhIGZsZXhpYmxlIGFuZCBjb25maWd1cmFibGUNCj4gPiBAQCAtMjMzLDcgKzIzMyw2 IEBAIHN0cnVjdCB0YXNkZXZpY2VfcHJpdiB7DQo+ID4gIAlib29sIHBsYXliYWNrX3N0YXJ0ZWQ7 DQo+ID4gIAlib29sIGlzYWNwaTsNCj4gPiAgCWJvb2wgaXNzcGk7DQo+ID4gLQlib29sIGlzX3Vz ZXJfc3BhY2VfY2FsaWRhdGE7DQo+ID4gIAl1bnNpZ25lZCBpbnQgZ2xvYmFsX2FkZHI7DQo+ID4N Cj4gPiAgCWludCAoKmZ3X3BhcnNlX3ZhcmlhYmxlX2hlYWRlcikoc3RydWN0IHRhc2RldmljZV9w cml2ICp0YXNfcHJpdiwNCj4gPiBkaWZmIC0tZ2l0IGEvc291bmQvaGRhL2NvZGVjcy9zaWRlLWNv ZGVjcy90YXMyNzgxX2hkYS5jDQo+ID4gYi9zb3VuZC9oZGEvY29kZWNzL3NpZGUtY29kZWNzL3Rh czI3ODFfaGRhLmMNCj4gPiBpbmRleCA5NmU2ZDgyZGM2OWUuLjMwYTFiYWU1MTY2MyAxMDA2NDQN Cj4gPiAtLS0gYS9zb3VuZC9oZGEvY29kZWNzL3NpZGUtY29kZWNzL3RhczI3ODFfaGRhLmMNCj4g PiArKysgYi9zb3VuZC9oZGEvY29kZWNzL3NpZGUtY29kZWNzL3RhczI3ODFfaGRhLmMNCj4gPiBA QCAtMiw3ICsyLDcgQEANCj4gPiAgLy8NCj4gPiAgLy8gVEFTMjc4MSBIREEgU2hhcmVkIExpYiBm b3IgSTJDJlNQSSBkcml2ZXIgIC8vIC0vLyBDb3B5cmlnaHQgMjAyNQ0KPiA+IFRleGFzIEluc3Ry dW1lbnRzLCBJbmMuDQo+ID4gKy8vIENvcHlyaWdodCAyMDI1IC0gMjAyNiBUZXhhcyBJbnN0cnVt ZW50cywgSW5jLg0KPiA+ICAvLw0KPiA+ICAvLyBBdXRob3I6IFNoZW5naGFvIERpbmcgPHNoZW5n aGFvLWRpbmdAdGkuY29tPg0KPiA+DQo+ID4gQEAgLTE1OSw3ICsxNTksNiBAQCBzdGF0aWMgdm9p ZCB0YXMyNzgxX2FwcGx5X2NhbGliKHN0cnVjdCB0YXNkZXZpY2VfcHJpdg0KPiAqcCkNCj4gPiAg CQlyLT50bGltaXRfcmVnID0gY2FsaV9yZWdbNF07DQo+ID4gIAl9DQo+ID4NCj4gPiAtCXAtPmlz X3VzZXJfc3BhY2VfY2FsaWRhdGEgPSB0cnVlOw0KPiA+ICAJY2FsaV9kYXRhLT50b3RhbF9zeiA9 IHAtPm5kZXYgKiAoY2FsaV9kYXRhLT5jYWxpX2RhdF9zel9wZXJfZGV2ICsNCj4gPiAxKTsgIH0N Cj4gPg0KPiA+IEBAIC0yMTYsNiArMjE1LDEyIEBAIGludCB0YXMyNzgxX3NhdmVfY2FsaWJyYXRp b24oc3RydWN0IHRhczI3ODFfaGRhDQo+ICpoZGEpDQo+ID4gIAkJCQlzdGF0dXMgPSAtRU5PTUVN Ow0KPiA+ICAJCQkJY29udGludWU7DQo+ID4gIAkJCX0NCj4gPiArCQkJLyoNCj4gPiArCQkJICog U2V0IHRvIGFuIGludmFsaWQgdmFsdWUgYmVmb3JlIHRoZSBjYWxpYnJhdGVkIGRhdGENCj4gPiAr CQkJICogaXMgc3RvcmVkIGludG8gaXQsIGZvciB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAwLCB3aGlj aA0KPiA+ICsJCQkgKiBtZWFucyB0aGUgZmlyc3QgZGV2aWNlLg0KPiA+ICsJCQkgKi8NCj4gPiAr CQkJZGF0YVswXSA9IDB4ZmY7DQo+ID4gIAkJCS8qIEdldCB2YXJpYWJsZSBjb250ZW50cyBpbnRv IGJ1ZmZlciAqLw0KPiA+ICAJCQlzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKGVmaV9uYW1lW2ld LCAmZWZpX2d1aWQsDQo+ID4gIAkJCQkmYXR0ciwgJmNhbGlfZGF0YS0+dG90YWxfc3osIGRhdGEp OyBkaWZmIC0tZ2l0DQo+ID4gYS9zb3VuZC9oZGEvY29kZWNzL3NpZGUtY29kZWNzL3RhczI3ODFf aGRhX2kyYy5jDQo+ID4gYi9zb3VuZC9oZGEvY29kZWNzL3NpZGUtY29kZWNzL3RhczI3ODFfaGRh X2kyYy5jDQo+ID4gaW5kZXggNDljODBiYWJiNTAwLi43NGMzY2YxZTQ1ZTEgMTAwNjQ0DQo+ID4g LS0tIGEvc291bmQvaGRhL2NvZGVjcy9zaWRlLWNvZGVjcy90YXMyNzgxX2hkYV9pMmMuYw0KPiA+ ICsrKyBiL3NvdW5kL2hkYS9jb2RlY3Mvc2lkZS1jb2RlY3MvdGFzMjc4MV9oZGFfaTJjLmMNCj4g PiBAQCAtMzkzLDE5ICszOTMsNiBAQCBzdGF0aWMgaW50IHRhczI1NjNfc2F2ZV9jYWxpYnJhdGlv bihzdHJ1Y3QNCj4gdGFzMjc4MV9oZGEgKmgpDQo+ID4gIAlyLT5wb3dfcmVnID0gVEFTMjU2M19D QUxfUE9XRVI7DQo+ID4gIAlyLT50bGltaXRfcmVnID0gVEFTMjU2M19DQUxfVExJTTsNCj4gPg0K PiA+IC0JLyoNCj4gPiAtCSAqIFRBUzI3ODFfRk1XTElCIHN1cHBvcnRzIHR3byBzb2x1dGlvbnMg b2YgY2FsaWJyYXRlZCBkYXRhLiBPbmUgaXMNCj4gPiAtCSAqIGZyb20gdGhlIGRyaXZlciBpdHNl bGY6IGRyaXZlciByZWFkcyB0aGUgY2FsaWJyYXRlZCBmaWxlcyBkaXJlY3RseQ0KPiA+IC0JICog ZHVyaW5nIHByb2JlOyBUaGUgb3RoZXIgZnJvbSB1c2VyIHNwYWNlOiBkdXJpbmcgaW5pdCBvZiBh dWRpbyBoYWwsDQo+ID4gLQkgKiB0aGUgYXVkaW8gaGFsIHdpbGwgcGFzcyB0aGUgY2FsaWJyYXRl ZCBkYXRhIHZpYSBrY29udHJvbCBpbnRlcmZhY2UuDQo+ID4gLQkgKiBEcml2ZXIgd2lsbCBzdG9y ZSB0aGlzIGRhdGEgaW4gInN0cnVjdCBjYWxpZGF0YSIgZm9yIHVzZS4gRm9yIGhkYQ0KPiA+IC0J ICogZGV2aWNlLCBjYWxpYnJhdGVkIGRhdGEgYXJlIHVzdW5hbGx5IHNhdmVkIGludG8gVUVGSS4g U28gSGRhIHNpZGUNCj4gPiAtCSAqIGNvZGVjIGRyaXZlciB1c2UgdGhlIG1peHR1cmUgb2YgdGhl c2UgdHdvIHNvbHV0aW9ucywgZHJpdmVyIHJlYWRzDQo+ID4gLQkgKiB0aGUgZGF0YSBmcm9tIFVF RkksIHRoZW4gc3RvcmUgdGhpcyBkYXRhIGluICJzdHJ1Y3QgY2FsaWRhdGEiIGZvcg0KPiA+IC0J ICogdXNlLg0KPiA+IC0JICovDQo+ID4gLQlwLT5pc191c2VyX3NwYWNlX2NhbGlkYXRhID0gdHJ1 ZTsNCj4gPiAtDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L3NvdW5kL3NvYy9jb2RlY3MvdGFzMjc4MS1mbXdsaWIuYw0KPiA+IGIvc291bmQvc29jL2NvZGVj cy90YXMyNzgxLWZtd2xpYi5jDQo+ID4gaW5kZXggNzhmZDBhNWRjNmYyLi4wZTA4NGMzYTE2MmQg MTAwNjQ0DQo+ID4gLS0tIGEvc291bmQvc29jL2NvZGVjcy90YXMyNzgxLWZtd2xpYi5jDQo+ID4g KysrIGIvc291bmQvc29jL2NvZGVjcy90YXMyNzgxLWZtd2xpYi5jDQo+ID4gQEAgLTIsNyArMiw3 IEBADQo+ID4gIC8vDQo+ID4gIC8vIHRhczI3ODEtZm13bGliLmMgLS0gVEFTREVWSUNFIGZpcm13 YXJlIHN1cHBvcnQgIC8vIC0vLyBDb3B5cmlnaHQNCj4gPiAyMDIzIC0gMjAyNSBUZXhhcyBJbnN0 cnVtZW50cywgSW5jLg0KPiA+ICsvLyBDb3B5cmlnaHQgMjAyMyAtIDIwMjYgVGV4YXMgSW5zdHJ1 bWVudHMsIEluYy4NCj4gPiAgLy8NCj4gPiAgLy8gQXV0aG9yOiBTaGVuZ2hhbyBEaW5nIDxzaGVu Z2hhby1kaW5nQHRpLmNvbT4gIC8vIEF1dGhvcjogQmFvanVuIFh1DQo+ID4gPGJhb2p1bi54dUB0 aS5jb20+IEBAIC04MCw2ICs4MCwxNCBAQA0KPiA+ICAjZGVmaW5lIFBPU1RfU09GVFdBUkVfUkVT RVRfREVWSUNFX0MJCQkweDQ3DQo+ID4gICNkZWZpbmUgUE9TVF9TT0ZUV0FSRV9SRVNFVF9ERVZJ Q0VfRAkJCTB4NDgNCj4gPg0KPiA+ICsjZGVmaW5lIENPUFlfQ0FMX0RBVEEoaSkgXA0KPiA+ICsJ ZG8geyBcDQo+ID4gKwkJY2FsYmluX2RhdGFbaSArIDFdID0gZGF0YVs3XTsgXA0KPiA+ICsJCWNh bGJpbl9kYXRhW2kgKyAyXSA9IGRhdGFbOF07IFwNCj4gPiArCQljYWxiaW5fZGF0YVtpICsgM10g PSBkYXRhWzldOyBcDQo+ID4gKwkJY2FsYmluX2RhdGFbaSArIDRdID0gZGF0YVsxMF07IFwNCj4g PiArCX0gd2hpbGUgKDApDQo+ID4gKw0KPiA+ICBzdHJ1Y3QgdGFzX2NyYyB7DQo+ID4gIAl1bnNp Z25lZCBjaGFyIG9mZnNldDsNCj4gPiAgCXVuc2lnbmVkIGNoYXIgbGVuOw0KPiA+IEBAIC0xOTUy LDIzICsxOTYwLDYgQEAgc3RhdGljIGludCBkc3Bmd19kZWZhdWx0X2NhbGxiYWNrKHN0cnVjdA0K PiB0YXNkZXZpY2VfcHJpdiAqdGFzX3ByaXYsDQo+ID4gIAlyZXR1cm4gcmM7DQo+ID4gIH0NCj4g Pg0KPiA+IC1zdGF0aWMgaW50IGxvYWRfY2FsaWJfZGF0YShzdHJ1Y3QgdGFzZGV2aWNlX3ByaXYg KnRhc19wcml2LA0KPiA+IC0Jc3RydWN0IHRhc2RldmljZV9kYXRhICpkZXZfZGF0YSkNCj4gPiAt ew0KPiA+IC0Jc3RydWN0IHRhc2Rldl9ibGsgKmJsb2NrOw0KPiA+IC0JdW5zaWduZWQgaW50IGk7 DQo+ID4gLQlpbnQgcmV0ID0gMDsNCj4gPiAtDQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X2Rh dGEtPm5yX2JsazsgaSsrKSB7DQo+ID4gLQkJYmxvY2sgPSAmKGRldl9kYXRhLT5kZXZfYmxrc1tp XSk7DQo+ID4gLQkJcmV0ID0gdGFzZGV2aWNlX2xvYWRfYmxvY2sodGFzX3ByaXYsIGJsb2NrKTsN Cj4gPiAtCQlpZiAocmV0IDwgMCkNCj4gPiAtCQkJYnJlYWs7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+ IC0JcmV0dXJuIHJldDsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAgc3RhdGljIGludCBmd19wYXJzZV9o ZWFkZXIoc3RydWN0IHRhc2RldmljZV9wcml2ICp0YXNfcHJpdiwNCj4gPiAgCXN0cnVjdCB0YXNk ZXZpY2VfZncgKnRhc19mbXcsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZm13LCBpbnQNCj4gPiBv ZmZzZXQpICB7IEBAIC0yMDI5LDYgKzIwMjAsMTAzIEBAIHN0YXRpYyBpbnQNCj4gPiBmd19wYXJz ZV92YXJpYWJsZV9oZHJfY2FsKHN0cnVjdCB0YXNkZXZpY2VfcHJpdiAqdGFzX3ByaXYsDQo+ID4g IAlyZXR1cm4gb2Zmc2V0Ow0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGlubGluZSBpbnQgY2hl Y2tfY2FsX2Jpbl9kYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCWNvbnN0IHVuc2lnbmVk IGNoYXIgKmRhdGEsIGNvbnN0IGNoYXIgKm5hbWUpIHsNCj4gPiArCWlmIChkYXRhWzJdICE9IDB4 ODUgfHwgZGF0YVsxXSAhPSA0KSB7DQo+ID4gKwkJZGV2X2VycihkZXYsICJJbnZhbGlkIGNhbCBi aW4gZmlsZSBpbiAlc1xuIiwgbmFtZSk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNhbGJpbl9jb252 ZXJzaW9uKHN0cnVjdCB0YXNkZXZpY2VfcHJpdiAqcHJpdiwNCj4gPiArCXN0cnVjdCB0YXNkZXZp Y2VfZncgKnRhc19mbXcpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBjYWxpZGF0YSAqY2FsaV9kYXRh ID0gJnByaXYtPmNhbGlfZGF0YTsNCj4gPiArCXVuc2lnbmVkIGNoYXIgKmNhbGJpbl9kYXRhID0g Y2FsaV9kYXRhLT5kYXRhOw0KPiA+ICsJc3RydWN0IGNhbGlfcmVnICpwID0gJmNhbGlfZGF0YS0+ Y2FsaV9yZWdfYXJyYXk7DQo+ID4gKwlzdHJ1Y3QgdGFzZGV2aWNlX2NhbGlicmF0aW9uICpjYWxp YnJhdGlvbjsNCj4gPiArCXN0cnVjdCB0YXNkZXZpY2VfZGF0YSAqaW1nX2RhdGE7DQo+ID4gKwlz dHJ1Y3QgdGFzZGV2X2JsayAqYmxrOw0KPiA+ICsJdW5zaWduZWQgY2hhciAqZGF0YTsNCj4gPiAr CWludCBjaG4sIGs7DQo+ID4gKw0KPiA+ICsJaWYgKGNhbGlfZGF0YS0+dG90YWxfc3ogIT0gcHJp di0+bmRldiAqDQo+ID4gKwkJKGNhbGlfZGF0YS0+Y2FsaV9kYXRfc3pfcGVyX2RldiArIDEpKSB7 DQo+ID4gKwkJZGV2X2Vycihwcml2LT5kZXYsICIlczogY2FsaV9kYXRhIHNpemUgZXJyXG4iLA0K PiA+ICsJCQlfX2Z1bmNfXyk7DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsJY2FsaWJy YXRpb24gPSAmKHRhc19mbXctPmNhbGlicmF0aW9uc1swXSk7DQo+ID4gKwlpbWdfZGF0YSA9ICYo Y2FsaWJyYXRpb24tPmRldl9kYXRhKTsNCj4gPiArDQo+ID4gKwlpZiAoaW1nX2RhdGEtPm5yX2Js ayAhPSAxKSB7DQo+ID4gKwkJZGV2X2Vycihwcml2LT5kZXYsICIlczogSW52YWxpZCBucl9ibGss IHdyb25nIGNhbCBiaW5cbiIsDQo+ID4gKwkJCV9fZnVuY19fKTsNCj4gPiArCQlyZXR1cm47DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJYmxrID0gJihpbWdfZGF0YS0+ZGV2X2Jsa3NbMF0pOw0KPiA+ ICsJaWYgKGJsay0+bnJfY21kcyAhPSAxNSkgew0KPiA+ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAi JXM6IEludmFsaWQgbnJfY21kcywgd3JvbmcgY2FsIGJpblxuIiwNCj4gPiArCQkJX19mdW5jX18p Ow0KPiA+ICsJCXJldHVybjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGJsay0+dHlw ZSkgew0KPiA+ICsJY2FzZSBDT0VGRl9ERVZJQ0VfQToNCj4gPiArCQljaG4gPSAwOw0KPiA+ICsJ CWJyZWFrOw0KPiA+ICsJY2FzZSBDT0VGRl9ERVZJQ0VfQjoNCj4gPiArCQljaG4gPSAxOw0KPiA+ ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBDT0VGRl9ERVZJQ0VfQzoNCj4gPiArCQljaG4gPSAyOw0K PiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBDT0VGRl9ERVZJQ0VfRDoNCj4gPiArCQljaG4gPSAz Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlkZXZfZXJyKHByaXYtPmRl diwgIiVzOiBPdGhlciBUeXBlID0gMHglMDJ4XG4iLA0KPiA+ICsJCQlfX2Z1bmNfXywgYmxrLT50 eXBlKTsNCj4gPiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKwlrID0gY2huICogKGNhbGlfZGF0 YS0+Y2FsaV9kYXRfc3pfcGVyX2RldiArIDEpOw0KPiA+ICsNCj4gPiArCWRhdGEgPSBibGstPmRh dGE7DQo+ID4gKwlpZiAoY2hlY2tfY2FsX2Jpbl9kYXRhKHByaXYtPmRldiwgZGF0YSwgInIwX3Jl ZyIpIDwgMCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKwlwLT5yMF9yZWcgPSBUQVNERVZJQ0VfUkVH KGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0pOw0KPiA+ICsJQ09QWV9DQUxfREFUQShrKTsNCj4g PiArDQo+ID4gKwlkYXRhID0gYmxrLT5kYXRhICsgMTI7DQo+ID4gKwlpZiAoY2hlY2tfY2FsX2Jp bl9kYXRhKHByaXYtPmRldiwgZGF0YSwgInIwX2xvd19yZWciKSA8IDApDQo+ID4gKwkJcmV0dXJu Ow0KPiA+ICsJcC0+cjBfbG93X3JlZyA9IFRBU0RFVklDRV9SRUcoZGF0YVs0XSwgZGF0YVs1XSwg ZGF0YVs2XSk7DQo+ID4gKwlDT1BZX0NBTF9EQVRBKGsgKyA0KTsNCj4gPiArDQo+ID4gKwlkYXRh ID0gYmxrLT5kYXRhICsgMjQ7DQo+ID4gKwlpZiAoY2hlY2tfY2FsX2Jpbl9kYXRhKHByaXYtPmRl diwgZGF0YSwgImludnIwX3JlZyIpIDwgMCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKwlwLT5pbnZy MF9yZWcgPSBUQVNERVZJQ0VfUkVHKGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0pOw0KPiA+ICsJ Q09QWV9DQUxfREFUQShrICsgOCk7DQo+ID4gKw0KPiA+ICsJZGF0YSA9IGJsay0+ZGF0YSArIDM2 Ow0KPiA+ICsJaWYgKGNoZWNrX2NhbF9iaW5fZGF0YShwcml2LT5kZXYsIGRhdGEsICJwb3dfcmVn IikgPCAwKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArCXAtPnBvd19yZWcgPSBUQVNERVZJQ0VfUkVH KGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0pOw0KPiA+ICsJQ09QWV9DQUxfREFUQShrICsgMTIp Ow0KPiA+ICsNCj4gPiArCWRhdGEgPSBibGstPmRhdGEgKyA0ODsNCj4gPiArCWlmIChjaGVja19j YWxfYmluX2RhdGEocHJpdi0+ZGV2LCBkYXRhLCAidGxpbWl0X3JlZyIpIDwgMCkNCj4gPiArCQly ZXR1cm47DQo+ID4gKwlwLT50bGltaXRfcmVnID0gVEFTREVWSUNFX1JFRyhkYXRhWzRdLCBkYXRh WzVdLCBkYXRhWzZdKTsNCj4gPiArCUNPUFlfQ0FMX0RBVEEoayArIDE2KTsNCj4gPiArDQo+ID4g KwljYWxiaW5fZGF0YVtrXSA9IGNobjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyogV2hlbiBjYWxp YnJhdGVkIGRhdGEgcGFyc2luZyBlcnJvciBvY2N1cnMsIERTUCBjYW4gc3RpbGwgd29yayB3aXRo IGRlZmF1bHQNCj4gPiAgICogY2FsaWJyYXRlZCBkYXRhLCBtZW1vcnkgcmVzb3VyY2UgcmVsYXRl ZCB0byBjYWxpYnJhdGVkIGRhdGEgd2lsbCBiZQ0KPiA+ICAgKiByZWxlYXNlZCBpbiB0aGUgdGFz ZGV2aWNlX2NvZGVjX3JlbW92ZS4NCj4gPiBAQCAtMjA4Niw2ICsyMTc0LDcgQEAgc3RhdGljIGlu dCBmd19wYXJzZV9jYWxpYnJhdGlvbl9kYXRhKHN0cnVjdA0KPiB0YXNkZXZpY2VfcHJpdiAqdGFz X3ByaXYsDQo+ID4gIAkJCWdvdG8gb3V0Ow0KPiA+ICAJfQ0KPiA+DQo+ID4gKwljYWxiaW5fY29u dmVyc2lvbih0YXNfcHJpdiwgdGFzX2Ztdyk7DQo+ID4gIG91dDoNCj4gPiAgCXJldHVybiBvZmZz ZXQ7DQo+ID4gIH0NCj4gPiBAQCAtMjM3MSwyNSArMjQ2MCwxMiBAQCBzdGF0aWMgaW50IHRhc2Rl dmljZV9sb2FkX2RhdGEoc3RydWN0DQo+ID4gdGFzZGV2aWNlX3ByaXYgKnRhc19wcml2LA0KPiA+ DQo+ID4gIHN0YXRpYyB2b2lkIHRhc2Rldl9sb2FkX2NhbGlicmF0ZWRfZGF0YShzdHJ1Y3QgdGFz ZGV2aWNlX3ByaXYgKnByaXYsDQo+ID4gaW50IGkpICB7DQo+ID4gLQlzdHJ1Y3QgdGFzZGV2aWNl X2Z3ICpjYWxfZm13ID0gcHJpdi0+dGFzZGV2aWNlW2ldLmNhbGlfZGF0YV9mbXc7DQo+ID4gIAlz dHJ1Y3QgY2FsaWRhdGEgKmNhbGlfZGF0YSA9ICZwcml2LT5jYWxpX2RhdGE7DQo+ID4gIAlzdHJ1 Y3QgY2FsaV9yZWcgKnAgPSAmY2FsaV9kYXRhLT5jYWxpX3JlZ19hcnJheTsNCj4gPiAgCXVuc2ln bmVkIGNoYXIgKmRhdGEgPSBjYWxpX2RhdGEtPmRhdGE7DQo+ID4gLQlzdHJ1Y3QgdGFzZGV2aWNl X2NhbGlicmF0aW9uICpjYWw7DQo+ID4gIAlpbnQgayA9IGkgKiAoY2FsaV9kYXRhLT5jYWxpX2Rh dF9zel9wZXJfZGV2ICsgMSk7DQo+ID4gIAlpbnQgcmM7DQo+ID4NCj4gPiAtCS8qIExvYWQgdGhl IGNhbGlicmF0ZWQgZGF0YSBmcm9tIGNhbCBiaW4gZmlsZSAqLw0KPiA+IC0JaWYgKCFwcml2LT5p c191c2VyX3NwYWNlX2NhbGlkYXRhICYmIGNhbF9mbXcpIHsNCj4gPiAtCQljYWwgPSBjYWxfZm13 LT5jYWxpYnJhdGlvbnM7DQo+ID4gLQ0KPiA+IC0JCWlmIChjYWwpDQo+ID4gLQkJCWxvYWRfY2Fs aWJfZGF0YShwcml2LCAmY2FsLT5kZXZfZGF0YSk7DQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0JfQ0K PiA+IC0JaWYgKCFwcml2LT5pc191c2VyX3NwYWNlX2NhbGlkYXRhKQ0KPiA+IC0JCXJldHVybjsN Cj4gPiAtCS8qIGxvYWQgY2FsaWJyYXRlZCBkYXRhIGZyb20gdXNlciBzcGFjZSAqLw0KPiA+ICAJ aWYgKGRhdGFba10gIT0gaSkgew0KPiA+ICAJCWRldl9lcnIocHJpdi0+ZGV2LCAiJXM6IG5vIGNh bC1kYXRhIGZvciBkZXYgJWQgZnJvbSB1c3Itc3BjXG4iLA0KPiA+ICAJCQlfX2Z1bmNfXywgaSk7 DQo+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvdGFzMjc4MS1pMmMuYw0KPiA+IGIv c291bmQvc29jL2NvZGVjcy90YXMyNzgxLWkyYy5jIGluZGV4IGQxYzc2YWIwMTQ0ZC4uNDFiODlm Y2M2OWMzDQo+ID4gMTAwNjQ0DQo+ID4gLS0tIGEvc291bmQvc29jL2NvZGVjcy90YXMyNzgxLWky Yy5jDQo+ID4gKysrIGIvc291bmQvc29jL2NvZGVjcy90YXMyNzgxLWkyYy5jDQo+ID4gQEAgLTIs NyArMiw3IEBADQo+ID4gIC8vDQo+ID4gIC8vIEFMU0EgU29DIFRleGFzIEluc3RydW1lbnRzIFRB UzI1NjMvVEFTMjc4MSBBdWRpbyBTbWFydCBBbXBsaWZpZXINCj4gPiAvLyAtLy8gQ29weXJpZ2h0 IChDKSAyMDIyIC0gMjAyNSBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQNCj4gPiArLy8g Q29weXJpZ2h0IChDKSAyMDIyIC0gMjAyNiBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQN Cj4gPiAgLy8gaHR0cHM6Ly93d3cudGkuY29tDQo+ID4gIC8vDQo+ID4gIC8vIFRoZSBUQVMyNTYz L1RBUzI3ODEgZHJpdmVyIGltcGxlbWVudHMgYSBmbGV4aWJsZSBhbmQgY29uZmlndXJhYmxlDQo+ ID4gQEAgLTI1NSw4ICsyNTUsNiBAQCBzdGF0aWMgaW50IHRhc2Rldl9jYWxpX2RhdGFfZ2V0KHN0 cnVjdCBzbmRfa2NvbnRyb2wNCj4gKmtjb250cm9sLA0KPiA+ICAJaW50IHJjOw0KPiA+DQo+ID4g IAlndWFyZChtdXRleCkoJnByaXYtPmNvZGVjX2xvY2spOw0KPiA+IC0JaWYgKCFwcml2LT5pc191 c2VyX3NwYWNlX2NhbGlkYXRhKQ0KPiA+IC0JCXJldHVybiAtMTsNCj4gPg0KPiA+ICAJaWYgKCFw LT5yMF9yZWcpDQo+ID4gIAkJcmV0dXJuIC0xOw0KPiA+IEBAIC02NTQsNyArNjUyLDYgQEAgc3Rh dGljIGludCB0YXNkZXZfY2FsaV9kYXRhX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sDQo+ICprY29u dHJvbCwNCj4gPiAgCQl9DQo+ID4gIAl9DQo+ID4gIAlpICs9IDI7DQo+ID4gLQlwcml2LT5pc191 c2VyX3NwYWNlX2NhbGlkYXRhID0gdHJ1ZTsNCj4gPg0KPiA+ICAJaWYgKHByaXYtPmRzcGJpbl90 eXAgPT0gVEFTREVWX0JBU0lDKSB7DQo+ID4gIAkJcC0+cjBfcmVnID0gVEFTREVWSUNFX1JFRyhz cmNbaV0sIHNyY1tpICsgMV0sIHNyY1tpICsgMl0pOyBAQA0KPiA+IC0xNDQ0LDcgKzE0NDEsMTEg QEAgc3RhdGljIGludCB0YXNkZXZpY2VfY3JlYXRlX2NhbGlfY3RybHMoc3RydWN0DQo+IHRhc2Rl dmljZV9wcml2ICpwcml2KQ0KPiA+ICAJCUdGUF9LRVJORUwpOw0KPiA+ICAJaWYgKCFjYWxpX2Rh dGEtPmRhdGEpDQo+ID4gIAkJcmV0dXJuIC1FTk9NRU07DQo+ID4gLQ0KPiA+ICsJLyoNCj4gPiAr CSAqIFNldCB0byBhbiBpbnZhbGlkIHZhbHVlIGJlZm9yZSB0aGUgY2FsaWJyYXRlZCBkYXRhIGlz IHN0b3JlZCBpbnRvDQo+ID4gKwkgKiBpdCwgZm9yIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDAsIHdo aWNoIG1lYW5zIHRoZSBmaXJzdCBkZXZpY2UuDQo+ID4gKwkgKi8NCj4gPiArCWNhbGlfZGF0YS0+ ZGF0YVswXSA9IDB4ZmY7DQo+ID4gIAlpZiAocHJpdi0+Y2hpcF9pZCA9PSBUQVMyNzgxKSB7DQo+ ID4gIAkJc3RydWN0IHNvY19ieXRlc19leHQgKmV4dF9jYWxpX3N0YXJ0Ow0KPiA+ICAJCWNoYXIg KmNhbGlfc3RhcnRfbmFtZTsNCg0K