From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF3DC3148D2; Fri, 16 Oct 2026 01:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.129.52 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112416; cv=fail; b=WLkr8rotURo2BxXAwYtxC4DnaZ4gd7J3TJwvurihz14HxatNZ8MA5BhjCYzuicvXDLByEsxKWy3DqpqJ0Pstwau4miDPqdy9FNz3GE+++segt9tY/KZN5pf8I8K0FKJqVOgwMOQ/bEbKlB3gsr93VRcFvcK5jukc9JVMclEStg8= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112416; c=relaxed/simple; bh=nwDZmLeEKUqgTU+esNWf7HH1ALwOVL1/UD9lBR4lnzM=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=pEKd29F5OCEBk9CNxk+6wnWxE4XA3LKC1rAp2EOcsy/irZMSLpxILir2YersLq2r2TKL54QWYQudcC43KAk5yEtbq8tT/WO3J0PG84U6NYsCDPLCFhOQ2SNbj9o7vXWCRXwq8GsbzkO4SnNReDEKzq45syNPXcDcV6sC+wJQA9U= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sitime.com; spf=pass smtp.mailfrom=sitime.com; dkim=pass (2048-bit key) header.d=sitime.com header.i=@sitime.com header.b=dcNvDZdO; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b=V3gXhQjL; arc=fail smtp.client-ip=148.163.129.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sitime.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sitime.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sitime.com header.i=@sitime.com header.b="dcNvDZdO"; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b="V3gXhQjL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sitime.com; h=cc:cc:content-transfer-encoding:content-transfer-encoding:content-type:content-type:date:date:from:from:in-reply-to:in-reply-to:message-id:message-id:mime-version:mime-version:references:references:subject:subject:to:to; s=mail; bh=nwDZmLeEKUqgTU+esNWf7HH1ALwOVL1/UD9lBR4lnzM=; b=dcNvDZdO645dQBdlw8kNGA9yCE4C7QmmGkGeFYEWanBZ7uTFfxIhNcvRxJU7U69Ad0mPvzv+M4JL4YShIcjeJodx/fqy+Oxfx0VNPCnVikKMk+PI8fL1cfe/47tuD2ilP3VJiVqsfP/FW/DgcsmI8EeY13dnfNGx84ZToRc07yph928voIBRjvGAHf296Q8YONX1YxjjxoLfFx88VBDn8tVg9gok4WlHwXIm+LqQCOn4SMCwuMQHvV7qmltyLawke3SCMBmFcpOvhf9tbjZq2yX2XrZvflgZ/JkSQC8ie+G9SabJgSx3v6p7dZXrGWVWk4kdygxPWN2horVcOp52Vg== X-Virus-Scanned: Proofpoint Essentials engine Received: from DM1PR04CU001.outbound.protection.outlook.com (mail-centralusazon11020125.outbound.protection.outlook.com [52.101.61.125]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2CA16100080; Fri, 16 Oct 2026 01:00:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HJR0uwON3OEBRZBVSdflus0cSC8xPGN72x0tTA/BB+41jFLEP5pgRMgQpesS0bBUjzumq5z8dRLet/HRsL7FK9XH4+/aWF7GOArssbqJURLkybVji6aAlEZq4qvyXMiKZHFfoe/H+h+bql5jjJsgal/lTwPPL6xHgMDLBNUXdOBulEqZScLLgznGeuUoyy/eAbQ9mfgH7uuzNL1Voxr5yepZVC1U9qcDKO4S+KVEPuE82xyY57hIZPdsjBcjXaTqlymwlSPWshI5Sft78SIg9xCW9SiVyY7N/w5nsbsnNrcN8RftEJbJMD8IwtanlFIXdF+WLudE1AbQG86Ir2yI3w== 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=nwDZmLeEKUqgTU+esNWf7HH1ALwOVL1/UD9lBR4lnzM=; b=Ml5d7HP4G/nBjBVSJMdPK49NDV33NAGg6Ou+dITsUSxq5VQANArFDOniaZ9giiA7Z7RPFwz3I28a7qzNN7JUFmCTtrstz7/vyoUmf+Q2hBPHqzqnnQRJedaKTSpENUg4h+SnXDghAYFujcgnkvToJb1nmYTLbiC0PveJZgW8mu+xQNHn5Dg0ISVGiOrQ93J6ZfYz4P6HinmYGZaAeXe2YTYutlmYqFAgWBWCBcxVBf2u5DAvPiSZmPDYOlCxlijUie98H0odgD8ikjN4kj87nqW82RY7v1gj59qH0lGrHjPpGRZBijYGMC6VggXQc+o/uyxPgi8sXtlTFThfailcLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sitime.com; dmarc=pass action=none header.from=sitime.com; dkim=pass header.d=sitime.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Sitime.onmicrosoft.com; s=selector1-Sitime-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nwDZmLeEKUqgTU+esNWf7HH1ALwOVL1/UD9lBR4lnzM=; b=V3gXhQjLAARiL1e/2urFS24D5peDsjSYKBSYbj2zsgLcK/lpmVWoxlG3EaUA8aKS/zBS0lvnDfgo/yOV7V0UY8mKEuBy7pKlKuqUqDtG7TI9jOh+FsHCYXZw9sTRXzeWUhAteQLahEmxm2LRmpQ/uJDTY3/J1ZsyvrsL5n1Zs08R8oUsWKVS9Kmn++ILSIqJJnMBDRCO/5FuLHZdvMencNG/GYDOu/9IXkAbhpeuf7WVEqv/Ciluqj9+BPEGtCPTyeODAkY/217dqp75Rt68+U1i5t17r5z/vzEby+8hzaeiC8UNb1j3QV+FM6VRurvme33bucGwqGcfDOeupypczw== Received: from LVWPR20MB994915.namprd20.prod.outlook.com (2603:10b6:408:3bf::16) by IA3PR20MB995299.namprd20.prod.outlook.com (2603:10b6:208:623::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.14; Fri, 16 Oct 2026 00:58:29 +0000 Received: from LVWPR20MB994915.namprd20.prod.outlook.com ([fe80::9551:3864:128b:8c01]) by LVWPR20MB994915.namprd20.prod.outlook.com ([fe80::9551:3864:128b:8c01%4]) with mapi id 15.21.0522.013; Fri, 16 Oct 2026 00:58:29 +0000 From: Ali Rouhi To: "jiri@resnulli.us" CC: "vadim.fedorenko@linux.dev" , "arkadiusz.kubalewski@intel.com" , "ivecera@redhat.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "robh@kernel.org" , "krzk+dt@kernel.org" , "conor+dt@kernel.org" , "prabhakar.mahadev-lad.rj@bp.renesas.com" , "cjubran@nvidia.com" , "Oleg.Zadorozhnyi@devoxsoftware.com" , "devicetree@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH net-next v14 09/12] dpll: sit9531x: implement output pin state on a DPLL Thread-Topic: [PATCH net-next v14 09/12] dpll: sit9531x: implement output pin state on a DPLL Thread-Index: AQHdXQl1HQ6G5ZW+80uZjB8VDQhkHA== Date: Fri, 16 Oct 2026 00:58:29 +0000 Message-ID: <20261016005823.13690-10-arouhi@sitime.com> References: <20261016005823.13690-1-arouhi@sitime.com> In-Reply-To: <20261016005823.13690-1-arouhi@sitime.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=sitime.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LVWPR20MB994915:EE_|IA3PR20MB995299:EE_ x-ms-office365-filtering-correlation-id: 78ef7b0d-ca46-47e1-ec11-08df2b2097e8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|23010399003|1800799024|366016|6133799003|10067099003|18002099003|22082099003|3023799007|5023799004|261009223027099003|38070700021|56012099006; x-microsoft-antispam-message-info: SkFRr5jXdo7N46kTyEUe6tontecR3vaLccsGTH0thLNFJClimalVE7FByTF/Pb00YbaJDcbIQMZiQAETgSUChVgkVDPGoWxBidr78fd6DyJIRh3sudG2fMpCZX51cZoMcBMQWl9oOtm1CJp2R4PhZKzJjY7t5kU2DJFf4ClqiVbtynoVmZBFx3bALWg5pdJETTitqV0h8phJbUeQcvLawoFKibckbIGKqakW/qidT15Cqexadv3E1pHxp4WZl/fMyhpTXSxza0zud1JqiBsgqinPlzN+0y8zRheEdbfyRTRxRGb5ADIgbviFZE6nYMXOxgYdlmaSIQALrsNaHG0wnQ4XTXCwiSmDeLuqdaqneEPohgNoXp9PdenPE35tTT91/zSfo35NRwswC5dXr0J0/yrBCx8puoQcvZfslC6IfrwnsyZcazehuryBUpmWbItMftW6Xnr0rM2AAKXyIFxqPCkqzNuery1UlC15sjZJQ/+ejFvAeKqPIMU7znwq1aM0U/OdKgqJB7q2KJf326frxzdczqAsAycEPv+McUtbty2rh/ZgrJhP3PT9tJuI2BQPuF5xaadmEQDTcWJZ1sgUNSFrwujWdLvTkfDyqrgJmLqr7JUf9ort961rva+PVw1UvIeSvlfHDqnjU/ewyB5o83N5otKg2W1IiWrOcUsbTiViRH0dLav+Ug99dbjIm6lQsdp9usGlY6mrkY0yvHeNe4fUBt+unM/mKtfFzPUAoyI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVWPR20MB994915.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(1800799024)(366016)(6133799003)(10067099003)(18002099003)(22082099003)(3023799007)(5023799004)(261009223027099003)(38070700021)(56012099006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?enY5V2FnZ0NyWnFIK2hCTWJZZzBZZ25YdlBJVEFZNXhkajA1b203Mm42SlEv?= =?utf-8?B?L3FmZUFVREhZUXhNdmc4bkVFTm1kY0tkSVIwdGdleGVjcHczWlkwcFhnZG1k?= =?utf-8?B?dEJaT1hHNGZ6V1BjQ0I0L0V4MWxMbDZKTTU1dkxQK3BZdk15ZFBsTWpNR0tw?= =?utf-8?B?TWFGL2YxaTAzeXdOcU9VenRFQXVTbXFFdXpRblZvREpKZGJwVDNLeW9yRURx?= =?utf-8?B?cUxPWGJxcUhlZ1VobExRM0dZWFVhdS9qcHZiTlZoL1Q5ampoQ0VhTDlWdzNL?= =?utf-8?B?WXdKMEZHUFlxWmxBOE5Id2dhd0RZcTFING9BQ1B5WWpwV1NVYnArQnZYMk1h?= =?utf-8?B?YTJrZ3psU3ZrZUFEZ3FnTzhoL1BTWU9BRFNLSGdGM1k3SDFDeWJKYWpjcDhG?= =?utf-8?B?UitjWHpXc3BVUXdtOU5xeHZJeFQ2NGFwNmhWR2NUMm5VRWJNOElzRlhHRGVs?= =?utf-8?B?VlJOUk4yU0lvejBQYWRiNTlxZGJncVQ5WlJvZ1RmTHVoaVlJYTRxTHBpZnE3?= =?utf-8?B?bzZGWDA0b3FvbXE1ai8wQ2YvNTM4ZTJoY2h2czB6MGp1aTNTZ2E1c1lVUHFw?= =?utf-8?B?dXFuckprU1dENVBEYVAyRU1ILzJtcnIwb254Uk12VUp3ZG14K1hFc3NFNjZv?= =?utf-8?B?dlBMWi9xMmlWRkh1TUVEcUJwSkIvbk1MYWRuR3I4N0l3dytvZDhOUCtFT3RO?= =?utf-8?B?OUNnUUFWTEJBeW5wZVM4N0VvV3BHTCtwd3NWUUszeE5CNjJyUWNNZWdoL2Js?= =?utf-8?B?c0R5dlBGcFRHV29uaGFYRlV4L3NoNEo5eTlsVmM2ekpoTGhVN1pYOWE0Nm9h?= =?utf-8?B?Y1RkL2MxRlJSU29IQVFWVkFUUzVJQ3dhaUI0U0c3S3J2elUzYWVUSmloSmxJ?= =?utf-8?B?RGhUZEJwbTBqTUsyR2l3TXJ5ZEtpY01LUVcwWEJUQUV5NXM0a1hraFhTQTZ1?= =?utf-8?B?S0d4elpKVTNSTEd2cU9QSUxNRDBNZFkzaXl3eHliMEpNbkJ4cEdKM1hneFJq?= =?utf-8?B?UVQ2ZnVnTWdhWTY5OFYyUklqbWV5c3I2Y2NoVWdNRUcrTjRtVGRneXAzekFu?= =?utf-8?B?Z2ViVDBvR2dtcUlYTTRmZ2FRckdDR2dhcWplejl6Ry9QcXRncUR2MW1sTTlS?= =?utf-8?B?VDBDWVh5aXozRjhNWGdsS2VkbzdKRzBua0lITVRqSzNURzN5N1JNSDlhWjBi?= =?utf-8?B?d2NwSEdvdWdVL3JNSSs4MzhnVVdUL3lrWWJaZlJ1NUtzSU1CWDBqU2xySUJW?= =?utf-8?B?azRFREo0S0hZdWNXR3NvbjJlaVlpUUxwdGdWV3IzYVZqS0tKc3YwMmxEQVJK?= =?utf-8?B?Wm1PSzBCcU5Ick9DMldXdThHemJxK1ZNU2lQVWd4a0YvbXlCOEd4UitOczFl?= =?utf-8?B?c2lKemgyUHYxOC9LdTNvRUNTQklKcFRBd0MrZFY0TWdMOHZXL0pDeVBzSmZp?= =?utf-8?B?MmY4MUt4cUtNUlB0YUZ1anlsVE5IM0dUU3ArcXVRbHBGelh3cUtxakpGYU9T?= =?utf-8?B?Y1RrM2gvSEEvc05ZTDhTTkFtbHRGRmdxa1F2Z1M2b1lzZW5hSWRTRi9GcVl4?= =?utf-8?B?Nk5iK3cvd3JwQXAwbm9oeTVuUGorSU40ZVpqMXQzTjFOR3VRdnF1dDA1STMz?= =?utf-8?B?ZHU0ejB1dmsxenNlc0taQUpoOXdRZ2k5YjU4aElmYzhVaWNoL0YrM2pBWGY2?= =?utf-8?B?QzNZcWw2RGJDQVdYRXVtajVWSWE3Nk13b000Qk9lYkFvMkVGZXpLeFQ1YXQw?= =?utf-8?B?K3RtQVhYMkRuYnp6U2MxUDVuenVURngwZGdmWlcrcklhOXF4ZXR1dGtqbFVI?= =?utf-8?B?Tis2VXdJS2dSZjlxSThzbUN1M0xIbnZ2a2plMWh0Ujl1SEdmQjFqdWtiLzRH?= =?utf-8?B?eTZ4QllKMlVLSC9SbmpIVU1BQm83M1JJY0pjRWx3bEE0bzJrTGJ4azRHbUVu?= =?utf-8?B?d29NRU01ZmpEZktObG9pc000QzlpVFh6bG1ybUZhZTc3NmhQWHVpNWxrZFNL?= =?utf-8?B?azYwY21iamNIejhMRlBHYlZ0UkZHQ1d2RjVWamRvcU0yR21ncEJLNWg1aVZa?= =?utf-8?B?d3lTNFhWRHMvS1NnSVJldTNBZjJuNmxzZHRQM1diWFQ3a3FPTmhXSmduY0Ru?= =?utf-8?B?dCsxamlQaVVjZlZtcU1EMi9VaEQrZVh2RmFJYUNlbG0wMzV0cm5oSkFDcmdI?= =?utf-8?B?eUx2amU0NlNKSFVoanBWOHYxV0tOd25EWC9wVzU5TWVIazNMZ0ZudU5mOWNM?= =?utf-8?B?c3BxZU9COFI5UkJXSFQ4WlRySjN1Z3Y4TEc2ZXgwZlBrR0QwaTJLMTk5STkr?= =?utf-8?Q?/LI5bVbYTsS1O+AbjC?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: p3fU9oGiVgMK0+5Dc+94MlOG7CcetKBJgRRqn26IH4w2A8O3noyHwWZHuOJbTyAI0/+WW4OJi467u2XGZejyyR3fA16IyYWoEe2tjX54KdrPF5k2E21pXeD9ANMUHydJMN4MIYyXVCqxFD85v00sBqKLq2UG4N+tJl3bWjgQSfLixC2AO8S3S9ZvY4Ud3FvM41G0ahObOCRKdywJZQWUMLMWeybCTubQ7A5QXfCwsJe04vCVWKBIfJwXZQrVRPp2fupd+bVAo3qajWpURHxWfIVFOMxeAC1TYIEeCdcuKULIanYj04GDzrmR/7K3N/UpACTIH5JBARTZNQVX+p52CA== X-OriginatorOrg: sitime.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LVWPR20MB994915.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78ef7b0d-ca46-47e1-ec11-08df2b2097e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2026 00:58:29.6930 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8fb55916-cf10-4b0d-96f4-cf3952657263 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JW4DkrdKvGUxv2fWgahMksumc/LX1MDn+r5/yjtVBLADitkhXqCC89YQV6Em7iVD/yLFbws/IHSwgo5Z4FeV5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR20MB995299 X-MDID: 1792112410-Ken7oeos_sfE X-PPE-STACK: {"stack":"us1"} X-MDID-O: us1;ut7;1792112410;Ken7oeos_sfE;;ba04557de9d2da8490f5f1e6de07b967 X-PPE-TRUSTED: V=1;DIR=OUT; RnJvbTogT2xlZyBaYWRvcm96aG55aSA8T2xlZy5aYWRvcm96aG55aUBkZXZveHNvZnR3YXJlLmNv bT4KCkFuIG91dHB1dCBpcyBkcml2ZW4gYnkgaXRzIFBMTCByYXRoZXIgdGhhbiBzZWxlY3RlZCBi eSBpdCwgc28gaXRzIHN0YXRlCnNheXMgd2hldGhlciBpdCBjYXJyaWVzIGEgc2lnbmFsOiBjb25u ZWN0ZWQgd2hpbGUgaXQgZHJpdmVzLCBkaXNjb25uZWN0ZWQKd2hpbGUgaXQgaXMgbXV0ZWQuICBT ZXR0aW5nIHRoZSBzdGF0ZSBtdXRlcyBvciB1bi1tdXRlcyBpdCBieSBmb3JjaW5nIHRoZQpwYWQg dG8gSGktWiwgdGhlIG9ubHkgcGVyLW91dHB1dCBjb250cm9sIHRoZSBkZXZpY2Ugb2ZmZXJzIHRo YXQgbGVhdmVzIHRoZQpkaXZpZGVyIGFsb25lLgoKVGhlIGZvcmNlIGJpdCBhbmQgdGhlIHN0YXRl IGJpdCBhcmUgc2VwYXJhdGUsIGFuZCBhIHBhZCBmb2xsb3dzIHRoZSBsb2FkZWQKY29uZmlndXJh dGlvbiB3aGlsZSB0aGUgZm9yY2UgYml0IGlzIGNsZWFyLCBzbyBib3RoIGFyZSByZWFkIHRvIGRl Y2lkZQp3aGV0aGVyIGFuIG91dHB1dCBpcyBtdXRlZCBhbmQgYm90aCBhcmUgd3JpdHRlbiB0byBj aGFuZ2UgaXQuICBXaGljaCBvZgp0aGUgZm91ciByZWdpc3RlciBiYW5rcyBhcHBsaWVzIGRlcGVu ZHMgb24gdGhlIHNsb3QgYW5kIG9uIHdoZXRoZXIgdGhlIHBhZAppcyBzaW5nbGUtZW5kZWQgb3Ig ZGlmZmVyZW50aWFsLgoKQSBtdXRlIG9yIHVuLW11dGUgaXMgYSBwZXItb3V0cHV0IGNvbnRyb2ws IGJ1dCBlYWNoIG9uZSB0aGF0IGNoYW5nZXMKc29tZXRoaW5nIHJ1bnMgdGhlIGRldmljZS13aWRl IHByb2dyYW1taW5nIHNlcXVlbmNlIG9mIHRoZSBwcmV2aW91cwpwYXRjaCwgc28gYSByZXF1ZXN0 IGZvciB0aGUgc3RhdGUgdGhlIG91dHB1dCBhbHJlYWR5IGhhcyBpcyBhbnN3ZXJlZApmcm9tIHRo ZSByZWdpc3RlcnMgd2l0aG91dCBlbnRlcmluZyBpdC4gIEEgcmVxdWVzdCB0aGF0IGZhaWxzIGFm dGVyIHNvbWUKb2YgaXRzIHdyaXRlcyBsYW5kZWQgc3RpbGwgYW5ub3VuY2VzIHRoZSBjaGFuZ2Us IHNvIGEgc3Vic2NyaWJlciBpcyBub3QKbGVmdCB3aXRoIHRoZSBvbGQgc3RhdGU7IHRoZSBwaW4g aGFuZGxlIGlzIHJlYWQgb25jZSwgc28gYSB0ZWFyZG93bgpyYWNpbmcgdGhlIHJlcXVlc3QgY2Fu bm90IGhhbmQgdGhlIG5vdGlmaWNhdGlvbiBhIGNsZWFyZWQgb25lLiAgQSBmYWlsZWQKZW50cnkg aW50byB0aGUgcHJvZ3JhbW1pbmcgc3RhdGUgaXMgbGVmdCB0aGUgd2F5IGEgY29tbWl0IGxlYXZl cyBpdDoKbG9vcHMgcmUtbG9ja2VkIGFuZCB0aGUgc2V0dGxpbmcgdGltZSB3YWl0ZWQgZm9yLgoK VGhpcyBpcyBhbHNvIHdoZXJlIG91dHB1dCBwaW5zIHN0YXJ0IGJlaW5nIHJlZ2lzdGVyZWQgYXQg YWxsOiB1bnRpbCBub3cKdGhlIHJlZ2lzdHJhdGlvbiBmaWx0ZXIgdG9vayBpbnB1dHMgb25seSwg c28gdGhlIG91dHB1dCBvcGVyYXRpb25zIHRoZQplYXJsaWVyIHBhdGNoZXMgYWRkZWQgLS0gZGly ZWN0aW9uIGFuZCBmcmVxdWVuY3kgLS0gaGFkIG5vdGhpbmcgdG8KZGlzcGF0Y2ggb24uCgpTaWdu ZWQtb2ZmLWJ5OiBPbGVnIFphZG9yb3pobnlpIDxPbGVnLlphZG9yb3pobnlpQGRldm94c29mdHdh cmUuY29tPgpBc3Npc3RlZC1ieTogTExNClNpZ25lZC1vZmYtYnk6IEFsaSBSb3VoaSA8YXJvdWhp QHNpdGltZS5jb20+ClJldmlld2VkLWJ5OiBJdmFuIFZlY2VyYSA8aXZlY2VyYUByZWRoYXQuY29t PgotLS0KIGRyaXZlcnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmMgfCAzNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmggfCAgIDcg KwogZHJpdmVycy9kcGxsL3NpdDk1MzF4L2RwbGwuYyB8IDEzMCArKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDQyNyBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29yZS5jIGIvZHJpdmVycy9kcGxsL3NpdDk1MzF4 L2NvcmUuYwppbmRleCA4NzVhNWZlNzgzZDUuLjlhYTBkMzI3YjZiZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9kcGxsL3NpdDk1MzF4L2NvcmUuYworKysgYi9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29y ZS5jCkBAIC00ODgsNzEgKzQ4OCw1MCBAQCBzdGF0aWMgaW50IHNpdDk1MzF4X291dHB1dF9mb3Jj ZWRfaGl6KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKIAkJCQkJbXV0ZWQpOwogfQogCi0v KiBBdHRlbXB0cyB0byByZS1sb2NrIHRoZSBvdXRwdXQgbG9vcHMgYmVmb3JlIHJlcG9ydGluZyB0 aGVtIG9wZW4uICovCi0jZGVmaW5lIFNJVDk1MzFYX0xPT1BfTE9DS19UUklFUwkzCi0KIC8qCi0g KiBzaXQ5NTMxeF9wcmdfYWJvcnQgLSBsZWF2ZSB0aGUgcHJvZ3JhbW1pbmcgc3RhdGUgd2l0aG91 dCBjb21taXR0aW5nCisgKiBzaXQ5NTMxeF9vdXRwdXRfc3RhdGVfcmVmcmVzaCAtIHJlYWQgYW4g b3V0cHV0J3MgbXV0ZSBzdGF0ZSBiYWNrCiAgKgotICogRW50ZXJpbmcgdGhlIHN0YXRlIGlzIHR3 byB3cml0ZXMsIGFuZCB0aGUgc2Vjb25kIGNhbiBmYWlsIHdpdGggdGhlIGRlYnVnCi0gKiBibG9j ayBhbHJlYWR5IHVubG9ja2VkIGFuZCB0aGUgcGFydCBwb3NzaWJseSBhbHJlYWR5IGluIFBSR19D TUQuICBUaGVyZQotICogaXMgbm90aGluZyB0byBjb21taXQgaW4gdGhhdCBjYXNlLCBidXQgdGhl IGxvb3BzIHN0aWxsIGhhdmUgdG8gYmUgY2xvc2VkCi0gKiBhbmQgdGhlIGRlYnVnIGtleSBwdXQg YmFjaywgd2hpY2ggaXMgb3RoZXJ3aXNlIG9ubHkgZG9uZSBieQotICogc2l0OTUzMXhfcHJnX2Nv bW1pdCgpLgorICogVXNlZCB3aGVuIGEgbXV0ZSBjb3VsZCBub3QgYmUgY29uZmlybWVkIGF0IHRo ZSB0aW1lIGl0IHdhcyB3cml0dGVuLiAgVGhlCisgKiBkcml2ZXIgZG9lcyBub3QgcG9sbCBvdXRw dXQgc3RhdGUsIHNvIHdpdGhvdXQgdGhpcyB0aGUgY2FjaGVkIHZhbHVlIHdvdWxkCisgKiBzdGFu ZCB1bnRpbCBzb21ldGhpbmcgZWxzZSBoYXBwZW5lZCB0byB3cml0ZSBpdC4KKyAqCisgKiBDYWxs ZXIgbXVzdCBob2xkIHNpdGRldi0+bXVsdGlvcF9sb2NrLgogICovCi1zdGF0aWMgdm9pZCBzaXQ5 NTMxeF9wcmdfYWJvcnQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2KQoraW50IHNpdDk1MzF4 X291dHB1dF9zdGF0ZV9yZWZyZXNoKHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwgdTggb3V0 X2lkeCkKIHsKLQlpbnQgcmMgPSAtRUlPOwotCXU4IGF0dGVtcHQ7CisJYm9vbCBtdXRlZDsKKwlp bnQgcmM7CiAKLQlmb3IgKGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgU0lUOTUzMVhfTE9PUF9MT0NL X1RSSUVTOyBhdHRlbXB0KyspIHsKLQkJcmMgPSBzaXQ5NTMxeF93cml0ZV91OChzaXRkZXYsIFNJ VDk1MzFYX1JFR19QUkdfRElSX0dFTiwKLQkJCQkgICAgICAgU0lUOTUzMVhfTE9PUF9MT0NLKTsK LQkJaWYgKCFyYykKLQkJCWJyZWFrOwotCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7Ci0JfQor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCXJjID0gc2l0 OTUzMXhfb3V0cHV0X2ZvcmNlZF9oaXooc2l0ZGV2LCBvdXRfaWR4LCAmbXV0ZWQpOwogCWlmIChy YykKLQkJZGV2X2VycihzaXRkZXYtPmRldiwKLQkJCSJvdXRwdXQgbG9vcHMgbGVmdCB1bmxvY2tl ZCBhZnRlciBhIGZhaWxlZCBlbnRyeTogJWRcbiIsCi0JCQlyYyk7CisJCXJldHVybiByYzsKKwor CXNpdGRldi0+b3V0W291dF9pZHhdLmVuYWJsZWQgPSAhbXV0ZWQ7CisJc2l0ZGV2LT5vdXRbb3V0 X2lkeF0uc3RhdGVfc3RhbGUgPSBmYWxzZTsKIAotCXNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwg U0lUOTUzMVhfUkVHX09VVFNZU19ERUJVRywKLQkJCSAgU0lUOTUzMVhfREVCVUdfTE9DS19WQUwp OworCXJldHVybiAwOwogfQogCi0vKgotICogRW50ZXIgdGhlIG91dHB1dC1zeXN0ZW0gcHJvZ3Jh bW1pbmcgc3RhdGU6IHVubG9jayB0aGUgZGVidWcKLSAqIHJlZ2lzdGVycyBvbiBQYWdlIDMgYW5k IGlzc3VlIHRoZSBQUkdfQ01EIHN0YXRlIGNvbW1hbmQuICBSZWdpc3RlcgotICogd3JpdGVzIHRo YXQgcmVjb25maWd1cmUgdGhlIG91dHB1dCBzeXN0ZW0gb25seSB0YWtlIGVmZmVjdCB3aGVuCi0g KiB0aGV5IGFyZSBtYWRlIGluc2lkZSB0aGlzIHN0YXRlLgotICovCi1zdGF0aWMgaW50IHNpdDk1 MzF4X3ByZ19lbnRlcihzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYpCitzdGF0aWMgaW50IHNp dDk1MzF4X2hpel9zZXRfYml0KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKKwkJCQl1bnNp Z25lZCBpbnQgcmVnLCB1OCBiaXQsIGJvb2wgc2V0KQogeworCXU4IGN1ciwgbmV3X3ZhbDsKIAlp bnQgcmM7CiAKLQlyYyA9IHNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwgU0lUOTUzMVhfUkVHX09V VFNZU19ERUJVRywKLQkJCSAgICAgICBTSVQ5NTMxWF9ERUJVR19VTkxPQ0tfVkFMKTsKKwlyYyA9 IHNpdDk1MzF4X3JlYWRfdTgoc2l0ZGV2LCByZWcsICZjdXIpOwogCWlmIChyYykKIAkJcmV0dXJu IHJjOwogCi0JcmMgPSBzaXQ5NTMxeF93cml0ZV91OChzaXRkZXYsIFNJVDk1MzFYX1JFR19QUkdf RElSX0dFTiwKLQkJCSAgICAgICBTSVQ5NTMxWF9QUkdfQ01EX1NUQVRFKTsKLQlpZiAocmMpIHsK LQkJLyoKLQkJICogVGhlIGRlYnVnIGJsb2NrIGlzIHVubG9ja2VkIGF0IHRoaXMgcG9pbnQsIGFu ZCBhIHRyYW5zZmVyCi0JCSAqIHRoYXQgcmVwb3J0ZWQgYW4gZXJyb3IgbWF5IHN0aWxsIGhhdmUg cmVhY2hlZCB0aGUgcGFydCAtLQotCQkgKiB3aGljaCB3b3VsZCBsZWF2ZSB0aGUgZGV2aWNlIGlu IFBSR19DTUQgd2l0aCBpdHMgb3V0cHV0Ci0JCSAqIGxvb3BzIG9wZW4uICBDYWxsZXJzIHNraXAg dGhlIGNvbW1pdCB3aGVuIHRoZSBlbnRyeQotCQkgKiBmYWlscywgc28gY2xvc2UgYm90aCBoZXJl LgotCQkgKi8KLQkJc2l0OTUzMXhfcHJnX2Fib3J0KHNpdGRldik7Ci0JCXJldHVybiByYzsKLQl9 CisJbmV3X3ZhbCA9IHNldCA/IChjdXIgfCBCSVQoYml0KSkgOiAoY3VyICYgfkJJVChiaXQpKTsK IAotCXJldHVybiAwOworCXJldHVybiBzaXQ5NTMxeF93cml0ZV91OChzaXRkZXYsIHJlZywgbmV3 X3ZhbCk7CiB9CiAKKy8qIEF0dGVtcHRzIHRvIHJlLWxvY2sgdGhlIG91dHB1dCBsb29wcyBiZWZv cmUgcmVwb3J0aW5nIHRoZW0gb3Blbi4gKi8KKyNkZWZpbmUgU0lUOTUzMVhfTE9PUF9MT0NLX1RS SUVTCTMKKwogLyoKICAqIENvbW1pdCBhIHByb2dyYW1taW5nIHNlcXVlbmNlIHN0YXJ0ZWQgYnkg c2l0OTUzMXhfcHJnX2VudGVyKCk6CiAgKiB1cGRhdGUgdGhlIE5WTSBzaGFkb3cgYW5kIHJlLWxv Y2sgdGhlIGxvb3BzLiAgVGhlIHNsZWVwIGdpdmVzIHRoZQpAQCAtNjIyLDYgKzYwMSwyNTEgQEAg c3RhdGljIGludCBzaXQ5NTMxeF9wcmdfY29tbWl0KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRl dikKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIEVudGVyIHRoZSBvdXRwdXQtc3lzdGVtIHByb2dy YW1taW5nIHN0YXRlOiB1bmxvY2sgdGhlIGRlYnVnCisgKiByZWdpc3RlcnMgb24gUGFnZSAzIGFu ZCBpc3N1ZSB0aGUgUFJHX0NNRCBzdGF0ZSBjb21tYW5kLiAgUmVnaXN0ZXIKKyAqIHdyaXRlcyB0 aGF0IHJlY29uZmlndXJlIHRoZSBvdXRwdXQgc3lzdGVtIG9ubHkgdGFrZSBlZmZlY3Qgd2hlbgor ICogdGhleSBhcmUgbWFkZSBpbnNpZGUgdGhpcyBzdGF0ZS4KKyAqLworc3RhdGljIGludCBzaXQ5 NTMxeF9wcmdfZW50ZXIoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2KQoreworCWludCByYzsK KworCXJjID0gc2l0OTUzMXhfd3JpdGVfdTgoc2l0ZGV2LCBTSVQ5NTMxWF9SRUdfT1VUU1lTX0RF QlVHLAorCQkJICAgICAgIFNJVDk1MzFYX0RFQlVHX1VOTE9DS19WQUwpOworCWlmIChyYykKKwkJ cmV0dXJuIHJjOworCisJcmMgPSBzaXQ5NTMxeF93cml0ZV91OChzaXRkZXYsIFNJVDk1MzFYX1JF R19QUkdfRElSX0dFTiwKKwkJCSAgICAgICBTSVQ5NTMxWF9QUkdfQ01EX1NUQVRFKTsKKwlpZiAo cmMpIHsKKwkJLyoKKwkJICogVGhlIGRlYnVnIGJsb2NrIGlzIHVubG9ja2VkIGF0IHRoaXMgcG9p bnQsIGFuZCBhIHRyYW5zZmVyCisJCSAqIHRoYXQgcmVwb3J0ZWQgYW4gZXJyb3IgbWF5IHN0aWxs IGhhdmUgcmVhY2hlZCB0aGUgcGFydCAtLQorCQkgKiB3aGljaCB3b3VsZCBsZWF2ZSB0aGUgZGV2 aWNlIGluIFBSR19DTUQgd2l0aCBpdHMgb3V0cHV0CisJCSAqIGxvb3BzIG9wZW4uICBDYWxsZXJz IHNraXAgdGhlIGNvbW1pdCB3aGVuIHRoZSBlbnRyeSBmYWlscywKKwkJICogc28gbGVhdmUgdGhl IHN0YXRlIGhlcmUgdGhlIHdheSBldmVyeSBjb21wbGV0ZWQgc2VxdWVuY2UKKwkJICogZG9lczog bm90aGluZyB3YXMgY2hhbmdlZCwgc28gdGhlIHVwZGF0ZSBjb21taXRzIHdoYXQgdGhlCisJCSAq IHBhcnQgYWxyZWFkeSBob2xkcywgdGhlIGxvb3BzIGFyZSByZS1sb2NrZWQsIGFuZCB0aGUKKwkJ ICogc2V0dGxpbmcgdGltZSBpcyB3YWl0ZWQgb3V0IGJlZm9yZSB0aGUgY2FsbGVyIGRyb3BzIHRo ZQorCQkgKiBsb2NrIGFuZCB0aGUgbmV4dCByZXF1ZXN0IHByb2dyYW1zIHRoZSBwYXJ0LiAgVGhl IGVudHJ5CisJCSAqIGZhaWx1cmUgaXMgdGhlIGVycm9yIHRvIHJlcG9ydC4KKwkJICovCisJCXNp dDk1MzF4X3ByZ19jb21taXQoc2l0ZGV2KTsKKwkJcmV0dXJuIHJjOworCX0KKworCXJldHVybiAw OworfQorCisvKgorICogc2l0OTUzMXhfb3V0cHV0X2hpel93cml0ZSAtIG11dGUgb3IgdW5tdXRl IGFuIG91dHB1dAorICoKKyAqIE11dGluZyB0YWtlcyBjb250cm9sIG9mIHRoZSBwaW4gKE1BU0s9 MSkgYW5kIGZvcmNlcyBpdCB0byBIaS1aCisgKiAoU1RBVEU9MCkgb24gZXZlcnkgSGktWiBwYWly IG9mIHRoZSBzbG90IC0tIGRpZmZlcmVudGlhbCwgQ01PUyBPdXRQCisgKiBhbmQgQ01PUyBPdXRO IC0tIGJlY2F1c2UgdGhlIG91dHB1dCBtdXN0IGdvIHF1aWV0IHdoaWNoZXZlciB3YXkgaXQgaXMK KyAqIHdpcmVkOyB1bm11dGluZyByZWxlYXNlcyB0aGUgb3ZlcnJpZGUgb24gYWxsIG9mIHRoZW0g YW5kIGhhbmRzIHRoZSBwaW4KKyAqIGJhY2sgdG8gdGhlIGRldmljZS4gIFRoZSBjYWxsZXIgbXVz dCBhbHJlYWR5IGJlIGluIHRoZSBwcm9ncmFtbWluZworICogc3RhdGUuCisgKi8KK3N0YXRpYyBp bnQgc2l0OTUzMXhfb3V0cHV0X2hpel93cml0ZShzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYs IHU4IHNsb3QsCisJCQkJICAgICBib29sIG11dGUpCit7CisJdTggbWFza1tTSVQ5NTMxWF9ISVpf UEFJUlNdLCBzdGF0ZVtTSVQ5NTMxWF9ISVpfUEFJUlNdOworCXN0cnVjdCBzaXQ5NTMxeF9oaXpf cGFpciBwW1NJVDk1MzFYX0hJWl9QQUlSU107CisJaW50IGksIHJjLCB1bmRvX3JjOworCisJc2l0 OTUzMXhfb3V0cHV0X2dldF9oaXpfcmVncyhzbG90LCBwKTsKKworCWlmICghbXV0ZSkgeworCQlm b3IgKGkgPSAwOyBpIDwgU0lUOTUzMVhfSElaX1BBSVJTOyBpKyspIHsKKwkJCXJjID0gc2l0OTUz MXhfaGl6X3NldF9iaXQoc2l0ZGV2LCBwW2ldLm1hc2ssIHBbaV0uYml0LAorCQkJCQkJICBmYWxz ZSk7CisJCQlpZiAocmMpCisJCQkJcmV0dXJuIHJjOworCQl9CisJCXJldHVybiAwOworCX0KKwor CS8qCisJICogUmVtZW1iZXIgZXZlcnkgcGFpciBhcyBpdCB3YXM6IGlmIHRoZSBtdXRlIGZhaWxz IHBhcnQtd2F5LCB0aGF0CisJICogaXMgd2hhdCB0aGUgcGFkIGdvZXMgYmFjayB0byAtLSB3aGlj aCBtYXkgYWxyZWFkeSBiZSBhIG11dGUsIGZyb20KKwkgKiBhbiBlYXJsaWVyIHJlcXVlc3Qgb3Ig ZnJvbSB0aGUgbG9hZGVkIHByb2ZpbGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IFNJVDk1MzFY X0hJWl9QQUlSUzsgaSsrKSB7CisJCXJjID0gc2l0OTUzMXhfcmVhZF91OChzaXRkZXYsIHBbaV0u c3RhdGUsICZzdGF0ZVtpXSk7CisJCWlmIChyYykKKwkJCXJldHVybiByYzsKKwkJcmMgPSBzaXQ5 NTMxeF9yZWFkX3U4KHNpdGRldiwgcFtpXS5tYXNrLCAmbWFza1tpXSk7CisJCWlmIChyYykKKwkJ CXJldHVybiByYzsKKwl9CisKKwkvKgorCSAqIEZvcmNlZCB2YWx1ZSBmaXJzdCwgb3ZlcnJpZGUg ZW5hYmxlIHNlY29uZC4gIE11dGVkIGlzIGRlY29kZWQgYXMKKwkgKiBNQVNLIHNldCB3aXRoIFNU QVRFIGNsZWFyLCBzbyBlbmFibGluZyB0aGUgb3ZlcnJpZGUgd2hpbGUgU1RBVEUKKwkgKiBzdGls bCBob2xkcyB3aGF0ZXZlciB0aGUgbG9hZGVkIGNvbmZpZ3VyYXRpb24gbGVmdCB0aGVyZSBjYW4g cGluCisJICogdGhlIHBhZCBkcml2ZW4gZm9yIHRoZSB3aWR0aCBvZiBhbiBJMkMgdHJhbnNmZXIu CisJICovCisJZm9yIChpID0gMDsgaSA8IFNJVDk1MzFYX0hJWl9QQUlSUzsgaSsrKSB7CisJCXJj ID0gc2l0OTUzMXhfaGl6X3NldF9iaXQoc2l0ZGV2LCBwW2ldLnN0YXRlLCBwW2ldLmJpdCwgZmFs c2UpOworCQlpZiAoIXJjKQorCQkJcmMgPSBzaXQ5NTMxeF9oaXpfc2V0X2JpdChzaXRkZXYsIHBb aV0ubWFzaywgcFtpXS5iaXQsCisJCQkJCQkgIHRydWUpOworCQlpZiAocmMpCisJCQlicmVhazsK Kwl9CisJaWYgKCFyYykKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIE9ubHkgcGFydCBvZiB0aGUg bXV0ZSByZWFjaGVkIHRoZSBkZXZpY2UuICBQdXQgZXZlcnkgcGFpciBpdCBtYXkKKwkgKiBoYXZl IHRvdWNoZWQgYmFjayB0byB0aGUgYml0cyByZWFkIGFib3ZlIC0tIG92ZXJyaWRlIGZpcnN0LCB0 aGVuCisJICogdmFsdWUsIHRoZSByZXZlcnNlIG9mIHRoZSBvcmRlciB0aGV5IHdlbnQgb24gLS0g c28gdGhlIHBhZCBlbmRzCisJICogd2hlcmUgdGhlIHJlcXVlc3Qgc3RhcnRlZCByYXRoZXIgdGhh biBvbiBwYXJ0IG9mIGEgbXV0ZSwgb3IKKwkgKiB1bi1tdXRlZCB3aGVuIGl0IHdhcyBtdXRlZCBi ZWZvcmUuCisJICovCisJZm9yICg7IGkgPj0gMDsgaS0tKSB7CisJCXU4IGJpdCA9IEJJVChwW2ld LmJpdCk7CisKKwkJdW5kb19yYyA9IHNpdDk1MzF4X2hpel9zZXRfYml0KHNpdGRldiwgcFtpXS5t YXNrLCBwW2ldLmJpdCwKKwkJCQkJICAgICAgIG1hc2tbaV0gJiBiaXQpOworCQlpZiAoIXVuZG9f cmMpCisJCQl1bmRvX3JjID0gc2l0OTUzMXhfaGl6X3NldF9iaXQoc2l0ZGV2LCBwW2ldLnN0YXRl LAorCQkJCQkJICAgICAgIHBbaV0uYml0LAorCQkJCQkJICAgICAgIHN0YXRlW2ldICYgYml0KTsK KwkJaWYgKHVuZG9fcmMpCisJCQlkZXZfZXJyKHNpdGRldi0+ZGV2LAorCQkJCSJzbG90JXU6IEhp LVogb3ZlcnJpZGUgbGVmdCBwYXJ0IGFwcGxpZWQgKCVkKVxuIiwKKwkJCQlzbG90LCB1bmRvX3Jj KTsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qCisgKiBzaXQ5NTMxeF9vdXRwdXRfZGlzYWJs ZSAtIG11dGUgYW4gb3V0cHV0IChmb3JjZSBIaS1aKQorICogQGluZGV4Oglsb2dpY2FsIG91dHB1 dCBpbmRleCAoMC4uaW5mby0+bnVtX291dHB1dHMtMSkKKyAqCisgKiBTZXRzIE1BU0sgYW5kIGNs ZWFycyBTVEFURSBvbiBldmVyeSBIaS1aIHBhaXIgb2YgdGhlIHNsb3QsIGRpZmZlcmVudGlhbAor ICogYW5kIGJvdGggQ01PUyBwYWRzLCBzbyB0aGF0IHRoZSBvdXRwdXQgaXMgbXV0ZWQgcmVnYXJk bGVzcyBvZiBpdHMKKyAqIGVsZWN0cmljYWwgY29uZmlndXJhdGlvbi4gIFRoZQorICogd3JpdGVz IGFyZSB3cmFwcGVkIGluIHRoZSBQUkdfQ01EIC8gTlZNIHVwZGF0ZSAvIGxvb3AgbG9jayBzZXF1 ZW5jZQorICogc28gdGhlIG5ldyBzdGF0ZSBpcyBhcHBsaWVkIGJ5IHRoZSBoYXJkd2FyZS4KKyAq CisgKiBDYWxsZXIgbXVzdCBob2xkIHNpdGRldi0+bXVsdGlvcF9sb2NrLgorICovCitpbnQgc2l0 OTUzMXhfb3V0cHV0X2Rpc2FibGUoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBpbmRl eCkKK3sKKwljb25zdCBzdHJ1Y3Qgc2l0OTUzMXhfY2hpcF9pbmZvICppbmZvID0gc2l0ZGV2LT5p bmZvOworCWludCByYywgcmV0LCBzdGF0ZV9yYzsKKwlib29sIG11dGVkOworCXU4IHNsb3Q7CisK Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7CisKKwlpZiAoaW5k ZXggPj0gaW5mby0+bnVtX291dHB1dHMpCisJCXJldHVybiAtRUlOVkFMOworCisJc2xvdCA9IGlu Zm8tPmNsa291dF9tYXBbaW5kZXhdOworCXJjID0gc2l0OTUzMXhfcHJnX2VudGVyKHNpdGRldik7 CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisKKwlyYyA9IHNpdDk1MzF4X291dHB1dF9oaXpfd3Jp dGUoc2l0ZGV2LCBzbG90LCB0cnVlKTsKKworCS8qCisJICogQWx3YXlzIGxlYXZlIHRoZSBQUkdf Q01EIHByb2dyYW1taW5nIHN0YXRlLCBldmVuIG9uIGEgbWlkLXNlcXVlbmNlCisJICogd3JpdGUg ZmFpbHVyZTogcHJnX2VudGVyKCkgdW5sb2NrZWQgdGhlIG91dHB1dCBsb29wcywgc28gcmV0dXJu aW5nCisJICogd2l0aG91dCBwcmdfY29tbWl0KCkgd291bGQgc3RyYW5kIHRoZSBjaGlwIGluIHRo ZSBwcm9ncmFtbWluZyBzdGF0ZQorCSAqIHdpdGggdGhlIGxvb3BzIHVubG9ja2VkLiAgQmVzdCBl ZmZvcnQgLS0ga2VlcCB0aGUgZmlyc3QgZXJyb3IuCisJICovCisJcmV0ID0gc2l0OTUzMXhfcHJn X2NvbW1pdChzaXRkZXYpOworCWlmIChyZXQgJiYgIXJjKQorCQlyYyA9IHJldDsKKworCS8qCisJ ICogS2VlcCB0aGUgc29mdHdhcmUgc3RhdGUgYWxpZ25lZCB0byB3aGF0IGhhcmR3YXJlIG5vdyBk cml2ZXMgZXZlbgorCSAqIHdoZW4gb25lIHdyaXRlIGluIHRoZSBzZXF1ZW5jZSBmYWlsZWQuIFRo ZSBjb21taXQgYWJvdmUgbWF5IGhhdmUKKwkgKiBhcHBsaWVkIGEgcGFydGlhbCBtYXNrL3N0YXRl IGNvbWJpbmF0aW9uLgorCSAqLworCXN0YXRlX3JjID0gc2l0OTUzMXhfb3V0cHV0X2ZvcmNlZF9o aXooc2l0ZGV2LCBpbmRleCwgJm11dGVkKTsKKwlpZiAoIXN0YXRlX3JjKSB7CisJCXNpdGRldi0+ b3V0W2luZGV4XS5lbmFibGVkID0gIW11dGVkOworCQlzaXRkZXYtPm91dFtpbmRleF0uc3RhdGVf c3RhbGUgPSBmYWxzZTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBUaGUgd3JpdGVzIG1heSB3ZWxs IGhhdmUgbGFuZGVkOyB3aGF0IGZhaWxlZCBpcyB0aGUgcHJvb2YuCisJCSAqIE1hcmsgdGhlIGNh Y2hlZCBzdGF0ZSBmb3IgYSByZWFkLXRocm91Z2ggcmF0aGVyIHRoYW4KKwkJICogcmVwb3J0aW5n IHRoZSB2YWx1ZSBpdCBoYWQgYmVmb3JlIHRoaXMgY2FsbC4KKwkJICovCisJCXNpdGRldi0+b3V0 W2luZGV4XS5zdGF0ZV9zdGFsZSA9IHRydWU7CisJCWlmICghcmMpCisJCQlyYyA9IHN0YXRlX3Jj OworCX0KKworCXJldHVybiByYzsKK30KKworLyoKKyAqIHNpdDk1MzF4X291dHB1dF9lbmFibGUg LSB1bi1tdXRlIGFuIG91dHB1dCAoYWN0aXZlIHN0YXRlKQorICogQGluZGV4Oglsb2dpY2FsIG91 dHB1dCBpbmRleCAoMC4uaW5mby0+bnVtX291dHB1dHMtMSkKKyAqCisgKiBSZWxlYXNlcyBNQVNL IG9uIGV2ZXJ5IEhpLVogcGFpciBzbyB0aGUgZGV2aWNlIGRyaXZlcyB0aGUgb3V0cHV0CisgKiBh Z2FpbiBhcyB0aGUgbG9hZGVkIHByb2ZpbGUgY29uZmlndXJlcyBpdC4gIFRoZSB3cml0ZXMgYXJl IHdyYXBwZWQKKyAqIGluIHRoZSBQUkdfQ01EIC8gTlZNIHVwZGF0ZSAvIGxvb3AgbG9jayBzZXF1 ZW5jZSBzbyB0aGUgbmV3IHN0YXRlIGlzCisgKiBhcHBsaWVkIGJ5IHRoZSBoYXJkd2FyZS4KKyAq CisgKiBDYWxsZXIgbXVzdCBob2xkIHNpdGRldi0+bXVsdGlvcF9sb2NrLgorICovCitpbnQgc2l0 OTUzMXhfb3V0cHV0X2VuYWJsZShzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsIHU4IGluZGV4 KQoreworCWNvbnN0IHN0cnVjdCBzaXQ5NTMxeF9jaGlwX2luZm8gKmluZm8gPSBzaXRkZXYtPmlu Zm87CisJaW50IHJjLCByZXQsIHN0YXRlX3JjOworCWJvb2wgbXV0ZWQ7CisJdTggc2xvdDsKKwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCWlmIChpbmRl eCA+PSBpbmZvLT5udW1fb3V0cHV0cykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzbG90ID0gaW5m by0+Y2xrb3V0X21hcFtpbmRleF07CisJcmMgPSBzaXQ5NTMxeF9wcmdfZW50ZXIoc2l0ZGV2KTsK KwlpZiAocmMpCisJCXJldHVybiByYzsKKworCXJjID0gc2l0OTUzMXhfb3V0cHV0X2hpel93cml0 ZShzaXRkZXYsIHNsb3QsIGZhbHNlKTsKKworCS8qCisJICogQWx3YXlzIGxlYXZlIHRoZSBQUkdf Q01EIHByb2dyYW1taW5nIHN0YXRlLCBldmVuIG9uIGEgbWlkLXNlcXVlbmNlCisJICogd3JpdGUg ZmFpbHVyZTogcHJnX2VudGVyKCkgdW5sb2NrZWQgdGhlIG91dHB1dCBsb29wcywgc28gcmV0dXJu aW5nCisJICogd2l0aG91dCBwcmdfY29tbWl0KCkgd291bGQgc3RyYW5kIHRoZSBjaGlwIGluIHRo ZSBwcm9ncmFtbWluZyBzdGF0ZQorCSAqIHdpdGggdGhlIGxvb3BzIHVubG9ja2VkLiAgQmVzdCBl ZmZvcnQgLS0ga2VlcCB0aGUgZmlyc3QgZXJyb3IuCisJICovCisJcmV0ID0gc2l0OTUzMXhfcHJn X2NvbW1pdChzaXRkZXYpOworCWlmIChyZXQgJiYgIXJjKQorCQlyYyA9IHJldDsKKworCS8qIFNl ZSBzaXQ5NTMxeF9vdXRwdXRfZGlzYWJsZSgpOiBjb21taXQgY2FuIGFwcGx5IHBhcnQgb2YgaXQu ICovCisJc3RhdGVfcmMgPSBzaXQ5NTMxeF9vdXRwdXRfZm9yY2VkX2hpeihzaXRkZXYsIGluZGV4 LCAmbXV0ZWQpOworCWlmICghc3RhdGVfcmMpIHsKKwkJc2l0ZGV2LT5vdXRbaW5kZXhdLmVuYWJs ZWQgPSAhbXV0ZWQ7CisJCXNpdGRldi0+b3V0W2luZGV4XS5zdGF0ZV9zdGFsZSA9IGZhbHNlOwor CX0gZWxzZSB7CisJCS8qCisJCSAqIFRoZSB3cml0ZXMgbWF5IHdlbGwgaGF2ZSBsYW5kZWQ7IHdo YXQgZmFpbGVkIGlzIHRoZSBwcm9vZi4KKwkJICogTWFyayB0aGUgY2FjaGVkIHN0YXRlIGZvciBh IHJlYWQtdGhyb3VnaCByYXRoZXIgdGhhbgorCQkgKiByZXBvcnRpbmcgdGhlIHZhbHVlIGl0IGhh ZCBiZWZvcmUgdGhpcyBjYWxsLgorCQkgKi8KKwkJc2l0ZGV2LT5vdXRbaW5kZXhdLnN0YXRlX3N0 YWxlID0gdHJ1ZTsKKwkJaWYgKCFyYykKKwkJCXJjID0gc3RhdGVfcmM7CisJfQorCisJcmV0dXJu IHJjOworfQorCiAvKgogICogSW5wdXQgcHJpb3JpdHkgc2VsZWN0aW9uCiAgKgpAQCAtMjUxNSw2 ICsyNzM5LDggQEAgc3RhdGljIGludCBzaXQ5NTMxeF9vdXRfc3RhdGVfZmV0Y2goc3RydWN0IHNp dDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBpbmRleCkKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAor CXNpdGRldi0+b3V0W2luZGV4XS5zdGF0ZV9zdGFsZSA9IGZhbHNlOworCiAJLyoKIAkgKiBFYWNo IFBMTCBwYWdlIGhvbGRzIHRoZSBQTEwncyBvdXRwdXQtZW5hYmxlIG1hc2ssIHR3ZWx2ZSBiaXRz OgogCSAqIGJpdHMgMC03IGluIE9VVF9NQVBfTE8gYW5kIGJpdHMgOC0xMSBpbiBPVVRfTUFQX0hJ WzM6MF0uICBQTExBIGFuZApAQCAtMzMyMyw3ICszNTQ5LDcgQEAgc3RhdGljIHZvaWQgc2l0OTUz MXhfZHBsbF9waW5fdW5yZWdpc3RlcihzdHJ1Y3Qgc2l0OTUzMXhfZHBsbF9waW4gKnBpbikKIAkg KiBhZnRlcndhcmRzIGxlYXZlcyBhIHdpbmRvdyB3aGVyZSB0aGUgZmllbGQgc3RpbGwgcmVhZHMg YXMgbGl2ZQogCSAqIGFuZCB0aGUgcGluIGJlaGluZCBpdCBpcyBhbHJlYWR5IGdvbmUuCiAJICov Ci0JcGluLT5kcGxsX3BpbiA9IE5VTEw7CisJV1JJVEVfT05DRShwaW4tPmRwbGxfcGluLCBOVUxM KTsKIAogCWRwbGxfcGluX3VucmVnaXN0ZXIoc2l0ZHBsbC0+ZHBsbF9kZXYsIGRwbGxfcGluLCBv cHMsIHBpbik7CiAJZHBsbF9waW5fcHV0KGRwbGxfcGluLCAmcGluLT50cmFja2VyKTsKQEAgLTMz NzMsOCArMzU5OSw4IEBAIHN0YXRpYyB2b2lkIHNpdDk1MzF4X2RwbGxfcGluc191bnJlZ2lzdGVy KHN0cnVjdCBzaXQ5NTMxeF9kcGxsICpzaXRkcGxsKQogICogQGluZGV4OglwaW4gaGFyZHdhcmUg aW5kZXgKICAqCiAgKiBGb3IgaW5wdXQgcGluczogZGVsZWdhdGUgdG8gc2l0OTUzMXhfaW5wdXRf cGluX2lzX3JlZ2lzdHJhYmxlKCkuCi0gKiBBIHBpbiBjbGFzcyB3aG9zZSBzdGF0ZSBjYWxsYmFj ayB0aGUgdHJlZSBkb2VzIG5vdCBoYXZlIHlldCBpcyBub3QKLSAqIHJlZ2lzdHJhYmxlOiB0aGUg Y29yZSByZWZ1c2VzIGEgcGluIHdpdGhvdXQgb25lLgorICogRm9yIG91dHB1dCBwaW5zOiB0aGUg cGluIGlzIHJlZ2lzdHJhYmxlIGlmIHRoaXMgRFBMTCBpcyByb3V0ZWQgdG8gaXQsCisgKiB3aGV0 aGVyIG9yIG5vdCBpdCBpcyBjdXJyZW50bHkgZHJpdmluZy4KICAqCiAgKiBSZXR1cm46IHRydWUg aWYgcGluIHNob3VsZCBiZSByZWdpc3RlcmVkLCBmYWxzZSBvdGhlcndpc2UKICAqLwpAQCAtMzM4 NCwxMyArMzYxMCwyMyBAQCBzdGF0aWMgYm9vbCBzaXQ5NTMxeF9kcGxsX3Bpbl9pc19yZWdpc3Ry YWJsZShzdHJ1Y3Qgc2l0OTUzMXhfZHBsbCAqc2l0ZHBsbCwKIHsKIAlzdHJ1Y3Qgc2l0OTUzMXhf ZGV2ICpzaXRkZXYgPSBzaXRkcGxsLT5kZXY7CiAKLQlpZiAoZGlyICE9IERQTExfUElOX0RJUkVD VElPTl9JTlBVVCkKKwlpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVCkgeworCQlp ZiAoaW5kZXggPT0gU0lUOTUzMVhfTUFYX0lOUFVUUykKKwkJCXJldHVybiB0cnVlOworCQlpZiAo aW5kZXggPT0gU0lUOTUzMVhfSU5UU1lOQ19QSU5fSUQpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJ cmV0dXJuIHNpdDk1MzF4X2lucHV0X3Bpbl9pc19yZWdpc3RyYWJsZShzaXRkZXYsIGluZGV4KTsK Kwl9CisKKwlpZiAoaW5kZXggPT0gU0lUOTUzMVhfSU5UU1lOQ19PVVRfUElOX0lEKQogCQlyZXR1 cm4gZmFsc2U7CiAKLQlpZiAoaW5kZXggPT0gU0lUOTUzMVhfTUFYX0lOUFVUUykKLQkJcmV0dXJu IHRydWU7CisJaWYgKGluZGV4ID49IHNpdGRldi0+aW5mby0+bnVtX291dHB1dHMpCisJCXJldHVy biBmYWxzZTsKIAotCXJldHVybiBzaXQ5NTMxeF9pbnB1dF9waW5faXNfcmVnaXN0cmFibGUoc2l0 ZGV2LCBpbmRleCk7CisJcmV0dXJuIHNpdGRldi0+b3V0W2luZGV4XS5wbGxfaWR4ID09IHNpdGRw bGwtPmlkICYmCisJICAgICAgIHNpdGRldi0+b3V0W2luZGV4XS5yb3V0ZWQ7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29yZS5oIGIvZHJpdmVycy9kcGxsL3Np dDk1MzF4L2NvcmUuaAppbmRleCA4OTBhNTI4MzE0ODQuLjE0NjRiYTBiNjYxNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2NvcmUuaAorKysgYi9kcml2ZXJzL2RwbGwvc2l0OTUz MXgvY29yZS5oCkBAIC05OSw2ICs5OSw4IEBAIHN0cnVjdCBzaXQ5NTMxeF9yZWYgewogICogQGNt b3M6CQlvdXRwdXQgaXMgd2lyZWQgc2luZ2xlLWVuZGVkOyB0aGUgSGktWiBwYWlycyB0aGF0CiAg KgkJCXNwZWFrIGZvciBpdCBhcmUgdGhlIHR3byBDTU9TIHBhZCBvbmVzLCBub3QgdGhlCiAgKgkJ CWRpZmZlcmVudGlhbAorICogQHN0YXRlX3N0YWxlOgl0aGUgY2FjaGVkIG11dGUgc3RhdGUgY291 bGQgbm90IGJlIGNvbmZpcm1lZCBhZ2FpbnN0CisgKgkJCWhhcmR3YXJlIGFuZCBoYXMgdG8gYmUg cmVhZCBiYWNrIGJlZm9yZSBpdCBpcyByZXBvcnRlZAogICogQHJvdXRlZDoJCW91dHB1dCBpcyBt YXBwZWQgdG8gQHBsbF9pZHggYnkgdGhlIGluaXRpYWwKICAqCQkJY29uZmlndXJhdGlvbjsgYW4g dW5yb3V0ZWQgb3V0cHV0IGhhcyBubyBEUExMIHBpbgogICogQHBsbF9pZHg6CQlQTEwgZHJpdmlu ZyB0aGlzIG91dHB1dCAoMC0zKQpAQCAtMTA3LDYgKzEwOSw3IEBAIHN0cnVjdCBzaXQ5NTMxeF9v dXQgewogCXU2NAkJZnJlcTsKIAlib29sCQllbmFibGVkOwogCWJvb2wJCWNtb3M7CisJYm9vbAkJ c3RhdGVfc3RhbGU7CiAJYm9vbAkJcm91dGVkOwogCXU4CQlwbGxfaWR4OwogfTsKQEAgLTI1OSw2 ICsyNjIsMTAgQEAgaW50IHNpdDk1MzF4X2lucHV0X3ByaW9fYWRkKHN0cnVjdCBzaXQ5NTMxeF9k ZXYgKnNpdGRldiwgdTggcGxsX2lkeCwKIAkJCSAgICB1OCBpbnB1dF9pZHgpOwogCiAvKiAtLS0t IE91dHB1dCBlbmFibGUvZGlzYWJsZSAoSGktWiBjb250cm9sKSAtLS0tICovCitpbnQgc2l0OTUz MXhfb3V0cHV0X2Rpc2FibGUoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBpbmRleCk7 CitpbnQgc2l0OTUzMXhfb3V0cHV0X2VuYWJsZShzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYs IHU4IGluZGV4KTsKK2ludCBzaXQ5NTMxeF9vdXRwdXRfc3RhdGVfcmVmcmVzaChzdHJ1Y3Qgc2l0 OTUzMXhfZGV2ICpzaXRkZXYsCisJCQkJICB1OCBvdXRfaWR4KTsKIAogLyogLS0tLSBPdXRwdXQg ZnJlcXVlbmN5IC0tLS0gKi8KIGludCBzaXQ5NTMxeF9vdXRwdXRfZnJlcV9zZXQoc3RydWN0IHNp dDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBvdXRfaWR4LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxs L3NpdDk1MzF4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9kcGxsLmMKaW5kZXggYWEw MjFiMzc0YzQ1Li5mNmU3NjMxOGE1NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMx eC9kcGxsLmMKKysrIGIvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2RwbGwuYwpAQCAtODMxLDEwICs4 MzEsMTQwIEBAIHNpdDk1MzF4X2RwbGxfb3V0cHV0X3Bpbl9mcmVxdWVuY3lfc2V0KGNvbnN0IHN0 cnVjdCBkcGxsX3BpbiAqcGluLAogCXJldHVybiByYzsKIH0KIAorLyoKKyAqIHNpdDk1MzF4X2Rw bGxfb3V0cHV0X3Bpbl9zdGF0ZV9vbl9kcGxsX2dldCAtIGdldCBvdXRwdXQgcGluIHN0YXRlCisg KgorICogcmVwb3J0cyBDT05ORUNURUQgd2hlbiB0aGUgb3V0cHV0IGlzIGRyaXZlbiBhbmQKKyAq IERJU0NPTk5FQ1RFRCB3aGVuIGl0IGhhcyBiZWVuIG11dGVkIHZpYSBzaXQ5NTMxeF9vdXRwdXRf ZGlzYWJsZSgpLgorICovCitzdGF0aWMgaW50CitzaXQ5NTMxeF9kcGxsX291dHB1dF9waW5fc3Rh dGVfb25fZHBsbF9nZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpwaW4sCisJCQkJCSAgIHZvaWQg KnBpbl9wcml2LAorCQkJCQkgICBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZpY2UgKmRwbGwsCisJCQkJ CSAgIHZvaWQgKmRwbGxfcHJpdiwKKwkJCQkJICAgZW51bSBkcGxsX3Bpbl9zdGF0ZSAqc3RhdGUs CisJCQkJCSAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKK3sKKwlzdHJ1Y3Qgc2l0 OTUzMXhfZHBsbF9waW4gKmRwaW4gPSBwaW5fcHJpdjsKKwlzdHJ1Y3Qgc2l0OTUzMXhfZHBsbCAq c2l0ZHBsbCA9IGRwbGxfcHJpdjsKKwlzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYgPSBzaXRk cGxsLT5kZXY7CisJY29uc3Qgc3RydWN0IHNpdDk1MzF4X291dCAqb3V0OworCWludCByYzsKKwor CS8qCisJICogQSBtdXRlIHdob3NlIHJlYWQtYmFjayBmYWlsZWQgbGVmdCB0aGUgY2FjaGUgdW5j b25maXJtZWQ7IHRoZXJlIGlzCisJICogbm8gcG9sbCBvZiBvdXRwdXQgc3RhdGUgdG8gY29ycmVj dCBpdCwgc28gcmVhZCBpdCBoZXJlIHJhdGhlciB0aGFuCisJICogcmVwb3J0IGEgdmFsdWUgdGhh dCBtYXkgcHJlZGF0ZSB0aGUgcmVxdWVzdC4KKwkgKi8KKwlpZiAoc2l0ZGV2LT5vdXRbZHBpbi0+ aWRdLnN0YXRlX3N0YWxlKSB7CisJCW11dGV4X2xvY2soJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsK KwkJcmMgPSBzaXQ5NTMxeF9vdXRwdXRfc3RhdGVfcmVmcmVzaChzaXRkZXYsIGRwaW4tPmlkKTsK KwkJbXV0ZXhfdW5sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7CisJCWlmIChyYykgeworCQkJ TkxfU0VUX0VSUl9NU0coZXh0YWNrLAorCQkJCSAgICAgICAiT3V0cHV0IG11dGUgc3RhdGUgY291 bGQgbm90IGJlIHJlYWQgYmFjayIpOworCQkJcmV0dXJuIHJjOworCQl9CisJfQorCisJb3V0ID0g c2l0OTUzMXhfb3V0X3N0YXRlX2dldChzaXRkZXYsIGRwaW4tPmlkKTsKKwkqc3RhdGUgPSBvdXQt PmVuYWJsZWQgPyBEUExMX1BJTl9TVEFURV9DT05ORUNURUQKKwkJCSAgICAgIDogRFBMTF9QSU5f U1RBVEVfRElTQ09OTkVDVEVEOworCXJldHVybiAwOworfQorCisvKgorICogc2l0OTUzMXhfZHBs bF9vdXRwdXRfcGluX3N0YXRlX29uX2RwbGxfc2V0IC0gbXV0ZS91bi1tdXRlIGFuIG91dHB1dAor ICoKKyAqIEZvcmNlcyBIaS1aIG9uIHRoZSBvdXRwdXQgdGhyb3VnaCB0aGUgSGktWiBmb3JjZS9z dGF0ZSByZWdpc3RlciBwYWlycworICogb2YgaXRzIHNsb3QsIHRoZSBkaWZmZXJlbnRpYWwgYW5k IHRoZSBzaW5nbGUtZW5kZWQgb25lLgorICogICBDT05ORUNURUQgICAgLT4gZW5hYmxlIChyZWxl YXNlIHRoZSBvdmVycmlkZSwgdGhlIGRldmljZSBkcml2ZXMgaXQpCisgKiAgIERJU0NPTk5FQ1RF RCAtPiBkaXNhYmxlIChmb3JjZSBIaS1aKQorICovCitzdGF0aWMgaW50CitzaXQ5NTMxeF9kcGxs X291dHB1dF9waW5fc3RhdGVfb25fZHBsbF9zZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpwaW4s CisJCQkJCSAgIHZvaWQgKnBpbl9wcml2LAorCQkJCQkgICBjb25zdCBzdHJ1Y3QgZHBsbF9kZXZp Y2UgKmRwbGwsCisJCQkJCSAgIHZvaWQgKmRwbGxfcHJpdiwKKwkJCQkJICAgZW51bSBkcGxsX3Bp bl9zdGF0ZSBzdGF0ZSwKKwkJCQkJICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQor eworCWJvb2wgZW5hYmxlID0gc3RhdGUgPT0gRFBMTF9QSU5fU1RBVEVfQ09OTkVDVEVEOworCXN0 cnVjdCBzaXQ5NTMxeF9kcGxsX3BpbiAqZHBpbiA9IHBpbl9wcml2OworCXN0cnVjdCBzaXQ5NTMx eF9kcGxsICpzaXRkcGxsID0gZHBsbF9wcml2OworCXN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRl diA9IHNpdGRwbGwtPmRldjsKKwlib29sIHdhc19lbmFibGVkLCBjaGFuZ2VkOworCWludCByYzsK KworCWlmICghZW5hYmxlICYmIHN0YXRlICE9IERQTExfUElOX1NUQVRFX0RJU0NPTk5FQ1RFRCkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7 CisKKwkvKgorCSAqIFRoZSBjb3JlIGZvcndhcmRzIGEgcmVxdWVzdCBmb3IgdGhlIHN0YXRlIHRo ZSBvdXRwdXQgaXMgYWxyZWFkeQorCSAqIGluLiAgVGhlIEhpLVogcGFpcnMgc2F5IHdoYXQgdGhl IHBhZCBkb2VzIG5vdywgc28gcmVhZCB0aGVtIGFuZAorCSAqIGFuc3dlciBzdWNoIGEgcmVxdWVz dCBmcm9tIHRoZW0gcmF0aGVyIHRoYW4gcnVuIHRoZSBwcm9ncmFtbWluZworCSAqIHNlcXVlbmNl LCB3aGljaCBob2xkcyB0aGUgb3V0cHV0IGxvb3BzIHVubG9ja2VkIGZvciB0aGUgMTAwIG1zIGl0 cworCSAqIGNvbW1pdCB0YWtlcyBhbmQgd291bGQgY2hhbmdlIG5vdGhpbmcuICBBIHJlYWQgdGhh dCBmYWlscyBsZWF2ZXMKKwkgKiB0aGUgcmVxdWVzdCB0byB0aGUgc2VxdWVuY2UgYW5kIGl0cyBv d24gcmVhZC1iYWNrLgorCSAqLworCWlmICghc2l0OTUzMXhfb3V0cHV0X3N0YXRlX3JlZnJlc2go c2l0ZGV2LCBkcGluLT5pZCkgJiYKKwkgICAgc2l0ZGV2LT5vdXRbZHBpbi0+aWRdLmVuYWJsZWQg PT0gZW5hYmxlKSB7CisJCW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCQly ZXR1cm4gMDsKKwl9CisKKwl3YXNfZW5hYmxlZCA9IHNpdGRldi0+b3V0W2RwaW4tPmlkXS5lbmFi bGVkOworCisJaWYgKGVuYWJsZSkKKwkJcmMgPSBzaXQ5NTMxeF9vdXRwdXRfZW5hYmxlKHNpdGRl diwgZHBpbi0+aWQpOworCWVsc2UKKwkJcmMgPSBzaXQ5NTMxeF9vdXRwdXRfZGlzYWJsZShzaXRk ZXYsIGRwaW4tPmlkKTsKKworCS8qCisJICogQSByZWFkLWJhY2sgdGhhdCBmYWlsZWQgbGVmdCB0 aGUgY2FjaGUgdW5jb25maXJtZWQsIGFuZCB0aGUKKwkgKiB3cml0ZXMgYmVmb3JlIGl0IG1vc3Qg bGlrZWx5IGxhbmRlZDogY291bnQgdGhhdCBhcyBhIGNoYW5nZSB0b28sCisJICogYW5kIGxldCB0 aGUgZ2V0dGVyJ3MgcmVhZC10aHJvdWdoIGZpbGwgaW4gdGhlIHN0YXRlIHdoZW4gdGhlCisJICog bm90aWZpY2F0aW9uIGlzIGJ1aWx0LgorCSAqLworCWNoYW5nZWQgPSBzaXRkZXYtPm91dFtkcGlu LT5pZF0uZW5hYmxlZCAhPSB3YXNfZW5hYmxlZCB8fAorCQkgIHNpdGRldi0+b3V0W2RwaW4tPmlk XS5zdGF0ZV9zdGFsZTsKKworCW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOwor CisJaWYgKHJjKSB7CisJCXN0cnVjdCBkcGxsX3BpbiAqZHBsbF9waW47CisKKwkJTkxfU0VUX0VS Ul9NU0coZXh0YWNrLCAiRmFpbGVkIHRvIHNldCBvdXRwdXQgcGluIHN0YXRlIik7CisJCS8qCisJ CSAqIFRoZSBjb3JlIG5vdGlmaWVzIG9ubHkgYSByZXF1ZXN0IHRoYXQgc3VjY2VlZGVkLCBhbmQg dGhlCisJCSAqIHBvbGwgZG9lcyBub3Qgd2F0Y2ggb3V0cHV0cy4gIEEgZmFpbGVkIHJlcXVlc3Qg d2hvc2UKKwkJICogcmVhZC1iYWNrIHNob3dzIHRoZSBvdXRwdXQgZGlkIGNoYW5nZSwgb3IgY291 bGQgbm90IHNob3cKKwkJICogd2hldGhlciBpdCBkaWQsIHN0aWxsIGhhcyB0byBiZSBhbm5vdW5j ZWQsIG9yIHN1YnNjcmliZXJzCisJCSAqIGtlZXAgdGhlIG9sZCBzdGF0ZSBmb3IgZ29vZC4gIFRo ZSBjb3JlJ3MgbG9jayBpcyBoZWxkIGhlcmUsCisJCSAqIGFzIHRoZSBoZWxwZXIgcmVxdWlyZXMu CisJCSAqCisJCSAqIFRlYXJkb3duIGNsZWFycyB0aGUgcGluJ3MgaGFuZGxlIHdpdGhvdXQgdGhh dCBsb2NrIGJlZm9yZQorCQkgKiBpdCB1bnJlZ2lzdGVycyB0aGUgcGluLCBhbmQgdGhpcyBjYWxs YmFjayBzcGVuZHMgdGhlCisJCSAqIHNlcXVlbmNlJ3MgMTAwIG1zIHVuZGVyIGl0LiAgUmVhZCB0 aGUgaGFuZGxlIG9uY2U6IE5VTEwgaXMKKwkJICogYSBwaW4gb24gaXRzIHdheSBvdXQsIHdpdGgg bm9ib2R5IGxlZnQgdG8gdGVsbCwgYW5kIGEKKwkJICogaGFuZGxlIHN0aWxsIHNldCBzdGF5cyB2 YWxpZCB1bnRpbCB0aGlzIGNhbGxiYWNrIHJldHVybnMuCisJCSAqLworCQlkcGxsX3BpbiA9IFJF QURfT05DRShkcGluLT5kcGxsX3Bpbik7CisJCWlmIChjaGFuZ2VkICYmIGRwbGxfcGluKQorCQkJ X19kcGxsX3Bpbl9jaGFuZ2VfbnRmKGRwbGxfcGluKTsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9waW5fb3BzIHNpdDk1MzF4X2RwbGxfb3V0cHV0X3Bp bl9vcHMgPSB7CiAJLmRpcmVjdGlvbl9nZXQJCT0gc2l0OTUzMXhfZHBsbF9vdXRwdXRfcGluX2Rp cmVjdGlvbl9nZXQsCiAJLmZyZXF1ZW5jeV9nZXQJCT0gc2l0OTUzMXhfZHBsbF9vdXRwdXRfcGlu X2ZyZXF1ZW5jeV9nZXQsCiAJLmZyZXF1ZW5jeV9zZXQJCT0gc2l0OTUzMXhfZHBsbF9vdXRwdXRf cGluX2ZyZXF1ZW5jeV9zZXQsCisJLnN0YXRlX29uX2RwbGxfZ2V0CT0gc2l0OTUzMXhfZHBsbF9v dXRwdXRfcGluX3N0YXRlX29uX2RwbGxfZ2V0LAorCS5zdGF0ZV9vbl9kcGxsX3NldAk9IHNpdDk1 MzF4X2RwbGxfb3V0cHV0X3Bpbl9zdGF0ZV9vbl9kcGxsX3NldCwKIH07CiAKIGNvbnN0IHN0cnVj dCBkcGxsX3Bpbl9vcHMgKgotLSAKMi4zOS4yIChBcHBsZSBHaXQtMTQzKQoK