From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BEUP281CU002.outbound.protection.outlook.com (mail-germanynorthazon11020105.outbound.protection.outlook.com [52.101.169.105]) (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 756F324291A; Fri, 16 May 2025 13:07:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.169.105 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747400845; cv=fail; b=XYezj1hBUntw5uRj9Vw1zLgf1LpG9bui950xLT7M/ZdNjp67yz74+XaWJJE8vMdMOLWrlAgiu3uyjed3clJozr1qpDEWfkynAwC/zN28MPc08h1bLX61tfWGk1plwUR/S7QiyMo8jCpnB2pQC6YbjJI6ekw9IzvFFVDaBIbfUKQ= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747400845; c=relaxed/simple; bh=SEnHnKUZsh+v73hr7IdtNpDQ5nmEBkg8Tbqymp1GOpE=; h=From:To:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=C6u8rzHrzHYuXLIEQl3qB9e2FYGYkaVjRnNfkldr4Ek93rJyMtQ6qZtmEsF1R9lxAU7md+cBEZgr0VKnxQ8vON3yCpJ+GUNGofvHf+QQKypupLwvjCNk0jDq1zCh3GvNwAnrBFhAioZsL3CQy+deExL1yQD/0VOV+NI+BlA17AU= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=adtran.com; spf=pass smtp.mailfrom=adtran.com; dkim=pass (1024-bit key) header.d=adtran.com header.i=@adtran.com header.b=R4QcHN83; arc=fail smtp.client-ip=52.101.169.105 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=adtran.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=adtran.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=adtran.com header.i=@adtran.com header.b="R4QcHN83" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VwzAZj2VuzHDKath/HqJQ4sgOHCjzKeOO0FocZ2oOoNlsCBjpolRq2Jd4Zn+0N623Ubrr5DctZobgs1JCCzdC5um4Spakhlt+uoqyXYeeE9CtxDE24JegF22I7Yb66b+zC+ZGL+zzcxD9hZLJOCROHyk8nArWj9LkPLjTEpOHVC8pLnbB2+faQkKS++YcWPdDDCalW1qJIOwMN9OxMt2B/EUcv+4C1ubnrmk7e9JVtXAfxOJytV+UgQiyVhx3gB2KrtRTVwNtwyjAJIozkqwVz4ri013vz0ag3gGOrul6Z5DJIdmd6WikqzEuj4FGoZ6ZukvkY1UBMfDqbku0O6aKA== 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=SEnHnKUZsh+v73hr7IdtNpDQ5nmEBkg8Tbqymp1GOpE=; b=W/ml3nSVO1+QKJi058dc5QYGd1Ap3LkC2d6xJpxCNYfFi8AyOucrpD8K9Hfsq54oRR2XnILgvdXxhYyGDPvAkch0WiQDZiXqWIg1YWhIfUQ4HhTcC3on5bU8RP2CNa46fYVxRtqinRKsIGiakYk+Pj+n1jnjbk/luVKfUJ+BeJIXjhkpbCPbxnithXvOAbYCJahYoRFjJQPFupsYElqLChTEbkKNw0kZFhXoGgPMPd4nKoCjHXtNK+8xNmNAdO1Yukzax2HAmZ/W/ODYBqq+PHZWXb6vZuTICOb8uqb+BLbeJz7BIaPou5YvN7klNySkcWVRsrl+WagPCbMJDA0vOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=adtran.com; dmarc=pass action=none header.from=adtran.com; dkim=pass header.d=adtran.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adtran.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SEnHnKUZsh+v73hr7IdtNpDQ5nmEBkg8Tbqymp1GOpE=; b=R4QcHN83Tc2humBrUss+0XRsAiqVLKFYvh+SNISgSaEYl2rIm62JTux5vgbjfVQyUh4U7F5htGrTrneSbF6KVOYgf+eh/otqUW7azcfNDmLhQ6kZb0h8qB6RxDqRpRVi2BrWDENBQNeCwMIiCL4g3IXvXtbh1O/6q4otjaZCfZ0= Received: from FRYP281MB2224.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:43::5) by FR4P281MB4615.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:142::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.33; Fri, 16 May 2025 13:07:18 +0000 Received: from FRYP281MB2224.DEUP281.PROD.OUTLOOK.COM ([fe80::8232:294d:6d45:7192]) by FRYP281MB2224.DEUP281.PROD.OUTLOOK.COM ([fe80::8232:294d:6d45:7192%5]) with mapi id 15.20.8722.031; Fri, 16 May 2025 13:07:18 +0000 From: Piotr Kubik To: Oleksij Rempel , Kory Maincent , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , "netdev@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Piotr Kubik Subject: [PATCH net-next v3 2/2] net: pse-pd: Add Si3474 PSE controller driver Thread-Topic: [PATCH net-next v3 2/2] net: pse-pd: Add Si3474 PSE controller driver Thread-Index: AQHbxmNzoIgpYNAz30+QzkZ16P7ziQ== Date: Fri, 16 May 2025 13:07:18 +0000 Message-ID: <584b7975-1544-4833-8f8a-00a8769a80c2@adtran.com> References: In-Reply-To: Accept-Language: pl-PL, en-US Content-Language: pl-PL X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=adtran.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: FRYP281MB2224:EE_|FR4P281MB4615:EE_ x-ms-office365-filtering-correlation-id: ae59b819-16b8-4c72-c87c-08dd947a9676 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|921020|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?NmlXaER5eVhIQlhQTm1zK01WUnlOR0ZHRXFUVStFWkxQT09VT3piSjRpbDlY?= =?utf-8?B?VjdOdXFkdkd3RGpyYmNzSzFFWnpHSXBSRFUyaUc4NU9zemdNNXhWOVBwd2wy?= =?utf-8?B?ZThmYlowcUVQdWkvZ2dsTkFrb2Nvd0t0SW9HVXJHNXpneC9EcThDMW5rSk9L?= =?utf-8?B?bXVHY2sxVDJuRGlVZnFUNmJwRWFnN2t4b3ppSGNJWGIzais4ZDJ5SkZNbzFU?= =?utf-8?B?SFNnZU11RHVQM1JDa3FyazNkWVlqT2xqbGFLN2FkYUhuemVHemUzdnk4R25u?= =?utf-8?B?M3k5eU9uL1duQmdlaFM4ZmlUZWYrMlY2bHJub041ZXMxS0NhdkQrcGVjU0Nt?= =?utf-8?B?WE0yM3R2WSttSmlEU3EwdGdrSVBHczc5ZmJCcU9aSEh3bFNxeUNhV24xaTJn?= =?utf-8?B?L2dhNDNOb1lPMWtuR1pkRE5CK0dyTlZDcXJSUGxDV2hsQTNYcXdqNEprcWFV?= =?utf-8?B?Mkx3OHlpc2xYNHFBSENZcDZUc29pV1gyZ0hWUXZnczlIVC9tVkI3VWdOeWFY?= =?utf-8?B?OWpHYUhjWUNPWDRyQW1oeVFwNGdzcUNGaWptUnpjMXF5bnhjVVdmYUdmb1hU?= =?utf-8?B?MlllMU5EbkQ5NlNtK0pieEpkbGVPOW5pbXJuK1NPYzZSVG0wdlZLMEl0ZVRT?= =?utf-8?B?L2JqdElzSVJMd3BLZStOczBwSUtUeXRUQy9hTGtEU3lPT2hQWmtDS2txVTdi?= =?utf-8?B?enBWMVJBZkx0Y1ZtRnZOZEU1dWRVMEZqUEtkaXVJM0l0MjdxRjFRNElPS3RE?= =?utf-8?B?ckl0WVdmR1VKcGlqWkthV09jNGxpMHdGWlpkZENsT3d6ZmQ3d21XbFViWHJW?= =?utf-8?B?YkNVY0ZkVkxoZnRDeWo4MUtsWkYwT2dVZUFVZFlKeGNLVjJhWDNmdzYxT1pt?= =?utf-8?B?bnA3a01NcG9mTy9ROWFkcXBYOEF4azh0aHVzMTFlc3Mwa2VGZGE2V0RCcVFO?= =?utf-8?B?WThaaGt0cDEzd1h1R3Mva0kybjVjRUdGb0s3SXpETlE5N1lHcGtuSUJoYkVl?= =?utf-8?B?ajdTczV5a29qQmNXT1R5KzM0M0U3b0JFL0NVUzlqcmtaeVRKUWdhMW9uZk9L?= =?utf-8?B?WFVVMGEvNnlFanlJVFNCR3hUWjduZnlyb21DQWdyQVpGVDg0RjU3TnZXc2dP?= =?utf-8?B?SVNwZHk5c3R5dXJSSCtCN3dveDViL2cwV0dVbDFuRUNqRWhQTmdBS1FZdzgr?= =?utf-8?B?TTVoakR0MEw0eDBtTUdmRVA5QTJmU2ExWVBsdWdCK3RZNlhNTWUzdmt3eTFS?= =?utf-8?B?dUdrV0NwYWUyM3pTbVVkeGlYeFQ4OXFBK2dJRVh6aG5SaVhLOUUvSXRtVnNq?= =?utf-8?B?Kzl0c0NUVS9rNVRWOC9IMWthQnJEWVcxb1l4aFhSYTRTaVo2NUx6T3c2MG9k?= =?utf-8?B?TkVrMVltVWJpY2RBREt4WWZDTW1VanBjYklacWVEV0p4VFU1OUZNL1JVT0lD?= =?utf-8?B?ZlBNZmZ6K2hLRFFSdVhOU1B2KzBBUXNwbWdQR0FIaFJ1T3J2dlV5WkZ6UzhM?= =?utf-8?B?eHIwZnNjNU81V2J5cXFnUEVPSkNkcWJjMHk0TzZ1bGs4dXlWblY4a0tFRlA2?= =?utf-8?B?YXRtdkVRNU5yV3c5QkRVckk4NHdKMnpUU3R4eWJXTVVhelNFLy9laDJoZlcz?= =?utf-8?B?L2RJVzVkU1Rnc0pxWFpXYW1OeFZjYjJqQkh6ak1PM1NTREpvQ0p1bkdqNGhU?= =?utf-8?B?dU9wTXNLMWZYQ0hPQ0Yvb2RTSGlGMXlZWEozaXIxNWtVaGpxNTlsTU4zQXVT?= =?utf-8?B?djBMTHFjM20wZk9LZnJwblozbS9YZ09zWnFONXAxdEs5cGpXOVc0U2FJSmY3?= =?utf-8?B?L0tUdlFzTHZCRHY3VVlrLzZzZStkUE51RUZlKzgvdVpCMEV3WW81djRqOFM5?= =?utf-8?B?b2dYLzhCVzZJZDljQUJDc2VrVENhVWZQM1F3eWREU3Q4SlZldVpkU2xibG5N?= =?utf-8?B?UDg2SUpBSXUwV1hTcE1GY1dHZitBWVVaR3dvM2FzM3IyZUU0VVhkMkwzUGpy?= =?utf-8?Q?mLYUikOp34hpPOOl0YoAL5RG4uvtTk=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:FRYP281MB2224.DEUP281.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(921020)(38070700018);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?blQ0Tk1RNVRvSG1CUzBhT1ptZVlSaStsZzFDUEN5by9MRWxRKzlrSzJXWnFY?= =?utf-8?B?S1ljWDZQRnBpRXMvcjlmQW9NdWFOZkpQMC96SXJ4NzFZRjY1TDN5OWQwOWo1?= =?utf-8?B?M1BLS29QT1dTVTFBS0hjc3RkSmsvRS9vTmtsT0s1b05qQVV5akpWcmIzZHpz?= =?utf-8?B?blR5OFdqUFVheldlUzFmaDI0c2lOQnpQdjJQNnZVcGZIVG1qZkpnK0U5bE1l?= =?utf-8?B?WTkyZE90UkhNS0tGRkNmK1U5dFZGdVdQa09CTGlKbDNKVE9ueDFEdURSNjNJ?= =?utf-8?B?L21STGV5THMvYjV1bDVTNkJCb0dSRVZYYUplOW95blNjcXRNcTVkektCd0xw?= =?utf-8?B?VmRMSEdDOEFmeEgrK3JRZ2gwQlNlSlVKdkg2S1A2T3NjTkhDakNFc21xQkZH?= =?utf-8?B?Yy8yV2Q1WXp5aG10VU9qNjVLWmRidnF0MUFmeEg1bmZlMnpuNmZmNGFpTmtL?= =?utf-8?B?TUorS2ZuVHMvemdoRDI3MFZ6bE9DdEpZbUZhZHA5eXpSdjRlK2hkdG5PZWpr?= =?utf-8?B?RmtyNkxWdkh3dVdRVWlSbk1RRzJVWU5iMm1lM3VhaU9WakNxeEJRWGt1NFhJ?= =?utf-8?B?dWtEUllGVzR5bkZ5ckFTdm5CT3hzZGlBNTVVVDAraWkxQ3o5ZWdLa0JlTjR3?= =?utf-8?B?TitucTlIaHRIeWQxTTdiOWFFRUZqaGtoeFVkeEZxTitIVGQwaUxMYzdOTmQx?= =?utf-8?B?T2p4M1MxMk9GRTNRV28wT0J2WmVlSmlHdzlPVlNmQWVnMmF2ZzhDUHlvdy9R?= =?utf-8?B?VUxIcFdRK2RLbVJTWjRvR3FTRnlNSnVDbDVzZGEwMXVKcURBbDdscHp6c1hW?= =?utf-8?B?VVNRRUVZSmROMDJpZjVDMzlvL2lMYnFST3lGbXpseC9rN2dETmE0OWpNa3lI?= =?utf-8?B?b3IyQkZWeGFlNVF2T0Nncll6aEV1eXo2L0dzbDJZQlZZZnZWKzhaMUhKK3Vr?= =?utf-8?B?Y0FIanUyek9iS0NMNFNUN01IanovWTlPTzM3Uzk2OWlFMTlJa24weXZqKzBW?= =?utf-8?B?TyttTHpxdk5vK2JGc1k2eXhtRDlsdW4xTWhGcHExSDJwdWZaRnNqdUc1aTZj?= =?utf-8?B?b1Z3YnBTYTV0RE41NnlKb2U5eUJPSnZ2dzkzUG5FdTBwM2dyWVhZQTFuOTlH?= =?utf-8?B?dDZ4Y05HZk5ma0VwNVhNUjcwRlozNWxSVXFQQ2E2T2xhSUtKZUJjZTBHc3Bx?= =?utf-8?B?V0hvdEV6K3JtUWR5TytxRWFPUmdkRU9yZWZBekh2NkdUcHBlY29JQ3BJQWNw?= =?utf-8?B?VGlnOUNWMlVSdDJyeTA3MEFIWlBUL0ZYdEQ3L1Q0VysveEFNSE1hVmdTK0th?= =?utf-8?B?MUFQNHVjQnlSeHpPS05tVGFUc2pGKzdmMHI4ZVRJeFk4TzNHRFlIUmdwd0to?= =?utf-8?B?VnIxNE1ETk5uYUlPSmJRWmtKRHloeTdKMkxveGg2aCs3TEZQUU9ZalBCbCs4?= =?utf-8?B?RElvWWtZVjJpS1R3NVUrZTZXblhSVXY0NW5idFg4dE5GUmVNMWJBRVRyNnRE?= =?utf-8?B?UG5nSURXaW81cEZKQTJTUm14Y2RwSVRoUGFWNldqMmFQUGpnRUdwMXJwTWJj?= =?utf-8?B?NlZXQ0xzR2V1RXp2ejBKRzRvem04RDBjUVRSbHU1RHBRQ3RGcGVEb1FmSnhh?= =?utf-8?B?b0NDNHRTcjBvRTA0d0lwYUdDOStkU0FrMkdBV2FDWDVwNTNMMitTa2dza0oy?= =?utf-8?B?Q2puOUVCRy83NTJGY2lZOUpxMHhGMGN3Z2QxQkx3OENWT0QxQUtSOFdGYjNi?= =?utf-8?B?OSt0RDdFL3ZIVTlDM3lrMnFiWDBoL2dVT3dMQVpabTRZYWpxSjRGMUVDTGNz?= =?utf-8?B?SVM4TGluMkdKMHlZeFMrTysxM1N1UUthUmdmWXplOW5NSVIxbDJMN2ZjQkoz?= =?utf-8?B?RFU2ZmFzTWNUQ3lYZDZWMW00NFYxZ3ErQ3dzcXQ3YnJaYktCNjluejJ6L3kz?= =?utf-8?B?N2p0U0p2amc4cFgwZ2FNQnVWeER6dHF0SXhKb0JpYzUvU2NiMVRNSHk1V2V3?= =?utf-8?B?K28rWWp3ZHpVRXpTdHAvYkgwMTVlcXlOcWdLVTFrcEVPRmNvUkFNaHRVSEZl?= =?utf-8?B?NXlZSzJiSXJ4U3QrYVVNd1hWY3EyZllXNkhHOUw4WWpLay9MVFlKRi9hbFJu?= =?utf-8?Q?zLnCEfkyVmB/I9xONHMXdXjaf?= Content-Type: text/plain; charset="utf-8" Content-ID: <31D0CFA69737B84A92FE3787C098D96D@DEUP281.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: adtran.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: FRYP281MB2224.DEUP281.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: ae59b819-16b8-4c72-c87c-08dd947a9676 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 May 2025 13:07:18.7131 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 423946e4-28c0-4deb-904c-a4a4b174fb3f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HcxLONIJi76CzM5k5N+Otx3cgts4RUrmiIPIKI1eQgEeFO2mkjk9bXg8YttDuP364MYJKgBHGVRzhrSDaXFsUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: FR4P281MB4615 RnJvbTogUGlvdHIgS3ViaWsgPHBpb3RyLmt1YmlrQGFkdHJhbi5jb20+DQoNCkFkZCBhIGRyaXZl ciBmb3IgdGhlIFNreXdvcmtzIFNpMzQ3NCBJMkMgUG93ZXIgU291cmNpbmcgRXF1aXBtZW50DQpj b250cm9sbGVyLg0KDQpCYXNlZCBvbiB0aGUgVFBTMjM4ODEgZHJpdmVyIGNvZGUuDQoNCkRyaXZl ciBzdXBwb3J0cyBiYXNpYyBmZWF0dXJlcyBvZiBTaTM0NzQgSUM6DQotIGdldCBwb3J0IHN0YXR1 cywNCi0gZ2V0IHBvcnQgcG93ZXIsDQotIGdldCBwb3J0IHZvbHRhZ2UsDQotIGVuYWJsZS9kaXNh YmxlIHBvcnQgcG93ZXIuDQoNCk9ubHkgNHAgY29uZmlndXJhdGlvbnMgYXJlIHN1cHBvcnRlZCBh dCB0aGlzIG1vbWVudC4NCg0KU2lnbmVkLW9mZi1ieTogUGlvdHIgS3ViaWsgPHBpb3RyLmt1Ymlr QGFkdHJhbi5jb20+DQotLS0NCiBkcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZyAgfCAgMTAgKw0K IGRyaXZlcnMvbmV0L3BzZS1wZC9NYWtlZmlsZSB8ICAgMSArDQogZHJpdmVycy9uZXQvcHNlLXBk L3NpMzQ3NC5jIHwgNjQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDMg ZmlsZXMgY2hhbmdlZCwgNjYwIGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9uZXQvcHNlLXBkL3NpMzQ3NC5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wc2Ut cGQvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmlnDQppbmRleCA3ZmFiOTE2YTdm NDYuLmQxYjEwMGViOGM1MiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9LY29uZmln DQorKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvS2NvbmZpZw0KQEAgLTMyLDYgKzMyLDE2IEBAIGNv bmZpZyBQU0VfUEQ2OTJYMA0KIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUs IGNob29zZSBNIGhlcmU6IHRoZQ0KIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwZDY5MngwLg0K IA0KK2NvbmZpZyBQU0VfU0kzNDc0DQorCXRyaXN0YXRlICJTaTM0NzQgUFNFIGNvbnRyb2xsZXIi DQorCWRlcGVuZHMgb24gSTJDDQorCWhlbHANCisJICBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdXBw b3J0IGZvciBTaTM0NzQgcmVndWxhdG9yIGJhc2VkIEV0aGVybmV0DQorCSAgUG93ZXIgU291cmNp bmcgRXF1aXBtZW50Lg0KKw0KKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUs IGNob29zZSBNIGhlcmU6IHRoZQ0KKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzaTM0NzQuDQor DQogY29uZmlnIFBTRV9UUFMyMzg4MQ0KIAl0cmlzdGF0ZSAiVFBTMjM4ODEgUFNFIGNvbnRyb2xs ZXIiDQogCWRlcGVuZHMgb24gSTJDDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHNlLXBkL01h a2VmaWxlIGIvZHJpdmVycy9uZXQvcHNlLXBkL01ha2VmaWxlDQppbmRleCA5ZDI4OThiMzY3Mzcu LmNjNzhmN2VhN2Y1ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3BzZS1wZC9NYWtlZmlsZQ0K KysrIGIvZHJpdmVycy9uZXQvcHNlLXBkL01ha2VmaWxlDQpAQCAtNSw0ICs1LDUgQEAgb2JqLSQo Q09ORklHX1BTRV9DT05UUk9MTEVSKSArPSBwc2VfY29yZS5vDQogDQogb2JqLSQoQ09ORklHX1BT RV9SRUdVTEFUT1IpICs9IHBzZV9yZWd1bGF0b3Iubw0KIG9iai0kKENPTkZJR19QU0VfUEQ2OTJY MCkgKz0gcGQ2OTJ4MC5vDQorb2JqLSQoQ09ORklHX1BTRV9TSTM0NzQpICs9IHNpMzQ3NC5vDQog b2JqLSQoQ09ORklHX1BTRV9UUFMyMzg4MSkgKz0gdHBzMjM4ODEubw0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYyBiL2RyaXZlcnMvbmV0L3BzZS1wZC9zaTM0NzQuYw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2MyMWI0NzVjYTFhDQot LS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9wc2UtcGQvc2kzNDc0LmMNCkBAIC0wLDAg KzEsNjQ5IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KKy8q DQorICogRHJpdmVyIGZvciB0aGUgU2t5d29ya3MgU2kzNDc0IFBvRSBQU0UgQ29udHJvbGxlcg0K KyAqDQorICogQ2hpcCBBcmNoaXRlY3R1cmUgJiBUZXJtaW5vbG9neToNCisgKg0KKyAqIFRoZSBT aTM0NzQgaXMgYSBzaW5nbGUtY2hpcCBQb0UgUFNFIGNvbnRyb2xsZXIgbWFuYWdpbmcgOCBwaHlz aWNhbCBwb3dlcg0KKyAqIGRlbGl2ZXJ5IGNoYW5uZWxzLiBJbnRlcm5hbGx5LCBpdCdzIHN0cnVj dHVyZWQgaW50byB0d28gbG9naWNhbCAiUXVhZHMiLg0KKyAqDQorICogUXVhZCAwOiBNYW5hZ2Vz IHBoeXNpY2FsIGNoYW5uZWxzICgncG9ydHMnIGluIGRhdGFzaGVldCkgMCwgMSwgMiwgMw0KKyAq IFF1YWQgMTogTWFuYWdlcyBwaHlzaWNhbCBjaGFubmVscyAoJ3BvcnRzJyBpbiBkYXRhc2hlZXQp IDQsIDUsIDYsIDcNCisgKg0KKyAqIEVhY2ggUXVhZCBpcyBhY2Nlc3NlZCB2aWEgYSBzZXBhcmF0 ZSBJMkMgYWRkcmVzcy4gVGhlIGJhc2UgYWRkcmVzcyByYW5nZSBpcw0KKyAqIHNldCBieSBoYXJk d2FyZSBwaW5zIEExLUE0LCBhbmQgdGhlIHNwZWNpZmljIGFkZHJlc3Mgc2VsZWN0cyBRdWFkIDAg KHVzdWFsbHkNCisgKiB0aGUgbG93ZXIvZXZlbiBhZGRyZXNzKSBvciBRdWFkIDEgKHVzdWFsbHkg dGhlIGhpZ2hlci9vZGQgYWRkcmVzcykuDQorICogU2VlIGRhdGFzaGVldCBUYWJsZSAyLjIgZm9y IHRoZSBhZGRyZXNzIG1hcHBpbmcuDQorICoNCisgKiBXaGlsZSB0aGUgUXVhZHMgbWFuYWdlIGNo YW5uZWwtc3BlY2lmaWMgb3BlcmF0aW9ucywgdGhlIFNpMzQ3NCBwYWNrYWdlIGhhcw0KKyAqIHNl dmVyYWwgcmVzb3VyY2VzIHNoYXJlZCBhY3Jvc3MgdGhlIGVudGlyZSBjaGlwOg0KKyAqIC0gU2lu Z2xlIFJFU0VUYiBpbnB1dCBwaW4uDQorICogLSBTaW5nbGUgSU5UYiBvdXRwdXQgcGluIChzaWdu YWxzIGludGVycnVwdHMgZnJvbSAqZWl0aGVyKiBRdWFkKS4NCisgKiAtIFNpbmdsZSBPU1MgaW5w dXQgcGluIChFbWVyZ2VuY3kgU2h1dGRvd24pLg0KKyAqIC0gR2xvYmFsIEkyQyBBZGRyZXNzICgw eDdGKSB1c2VkIGZvciBmaXJtd2FyZSB1cGRhdGVzLg0KKyAqIC0gR2xvYmFsIHN0YXR1cyBtb25p dG9yaW5nIChUZW1wZXJhdHVyZSwgVkREL1ZQV1IgVW5kZXJ2b2x0YWdlIExvY2tvdXQpLg0KKyAq DQorICogRHJpdmVyIEFyY2hpdGVjdHVyZToNCisgKg0KKyAqIFRvIGhhbmRsZSB0aGUgbWl4IG9m IHBlci1RdWFkIGFjY2VzcyBhbmQgc2hhcmVkIHJlc291cmNlcyBjb3JyZWN0bHksIHRoaXMNCisg KiBkcml2ZXIgdHJlYXRzIHRoZSBlbnRpcmUgU2kzNDc0IHBhY2thZ2UgYXMgb25lIGxvZ2ljYWwg ZGV2aWNlLiBUaGUgZHJpdmVyDQorICogaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcmlt YXJ5IEkyQyBhZGRyZXNzIChRdWFkIDApIHRha2VzIG93bmVyc2hpcC4NCisgKiBJdCBkaXNjb3Zl cnMgYW5kIG1hbmFnZXMgdGhlIEkyQyBjbGllbnQgZm9yIHRoZSBzZWNvbmRhcnkgYWRkcmVzcyAo UXVhZCAxKS4NCisgKiBUaGlzIHByaW1hcnkgaW5zdGFuY2UgaGFuZGxlcyBzaGFyZWQgcmVzb3Vy Y2VzIGxpa2UgSVJRIG1hbmFnZW1lbnQgYW5kDQorICogcmVnaXN0ZXJzIGEgc2luZ2xlIFBTRSBj b250cm9sbGVyIGRldmljZSByZXByZXNlbnRpbmcgYWxsIGxvZ2ljYWwgUElzLg0KKyAqIEludGVy bmFsIGZ1bmN0aW9ucyByb3V0ZSBJMkMgY29tbWFuZHMgdG8gdGhlIGFwcHJvcHJpYXRlIFF1YWQn cyBpMmNfY2xpZW50DQorICogYmFzZWQgb24gdGhlIHRhcmdldCBjaGFubmVsIG9yIFBJLg0KKyAq DQorICogVGVybWlub2xvZ3kgTWFwcGluZzoNCisgKg0KKyAqIC0gIlBJIiAoUG93ZXIgSW50ZXJm YWNlKTogUmVmZXJzIHRvIHRoZSBsb2dpY2FsIFBTRSBwb3J0IGFzIGRlZmluZWQgYnkNCisgKiBJ RUVFIDgwMi4zICh0eXBpY2FsbHkgY29ycmVzcG9uZHMgdG8gYW4gUko0NSBjb25uZWN0b3IpLiBU aGlzIGlzIHRoZQ0KKyAqIGBpZGAgKDAtNykgdXNlZCBpbiB0aGUgcHNlX2NvbnRyb2xsZXJfb3Bz Lg0KKyAqIC0gIkNoYW5uZWwiOiBSZWZlcnMgdG8gb25lIG9mIHRoZSA4IHBoeXNpY2FsIHBvd2Vy IGNvbnRyb2wgcGF0aHMgd2l0aGluDQorICogdGhlIFNpMzQ3NCBjaGlwIGl0c2VsZiAoaGFyZHdh cmUgY2hhbm5lbHMgMC03KS4gVGhpcyB0ZXJtaW5vbG9neSBpcw0KKyAqIHVzZWQgaW50ZXJuYWxs eSB3aXRoaW4gdGhlIGRyaXZlciB0byBhdm9pZCBjb25mdXNpb24gd2l0aCAncG9ydHMnLg0KKyAq IC0gIlF1YWQiOiBPbmUgb2YgdGhlIHR3byBpbnRlcm5hbCA0LWNoYW5uZWwgbWFuYWdlbWVudCB1 bml0cyB3aXRoaW4gdGhlDQorICogU2kzNDc0LCBlYWNoIGFjY2Vzc2VkIHZpYSBpdHMgb3duIEky QyBhZGRyZXNzLg0KKyAqDQorICogUmVsYXRpb25zaGlwOg0KKyAqIC0gQSAyLVBhaXIgUG9FIFBJ IHVzZXMgMSBDaGFubmVsLg0KKyAqIC0gQSA0LVBhaXIgUG9FIFBJIHVzZXMgMiBDaGFubmVscy4N CisgKg0KKyAqIEFTQ0lJIFNjaGVtYXRpYzoNCisgKg0KKyAqICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCisgKiB8ICAgICAgICAgICAgICAg ICAgICBTaTM0NzQgQ2hpcCAgICAgICAgICAgICAgICAgICAgICB8DQorICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyAqIHwgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwNCisgKiB8IHwg ICAgICBRdWFkIDAgICAgICAgICB8ICAgICB8ICAgICAgUXVhZCAxICAgICAgICAgfCB8DQorICog fCB8IENoYW5uZWxzIDAsIDEsIDIsIDMgfCAgICAgfCBDaGFubmVscyA0LCA1LCA2LCA3IHwgfA0K KyAqIHwgKy0tLS0tLS0tLS1eLS0tLS0tLS0tLSsgICAgICstLS0tLS0tXi0tLS0tLS0tLS0tLS0r IHwNCisgKiB8IEkyQyBBZGRyIDAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgSTJDIEFkZHIg MSAgICB8DQorICogfCAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAg ICAgICAgICAgfA0KKyAqIHwgKFByaW1hcnkgRHJpdmVyIEluc3RhbmNlKSAoTWFuYWdlZCBieSBQ cmltYXJ5KSAgICAgIHwNCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQorICogfCBTaGFyZWQgUmVzb3VyY2VzIChhZmZlY3Qgd2hvbGUg Y2hpcCk6ICAgICAgICAgICAgICAgfA0KKyAqIHwgIC0gU2luZ2xlIElOVGIgT3V0cHV0IC0+IEhh bmRsZWQgYnkgUHJpbWFyeSAgICAgICAgIHwNCisgKiB8ICAtIFNpbmdsZSBSRVNFVGIgSW5wdXQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorICogfCAgLSBTaW5nbGUgT1NTIElucHV0 ICAgLT4gSGFuZGxlZCBieSBQcmltYXJ5ICAgICAgICAgfA0KKyAqIHwgIC0gR2xvYmFsIEkyQyBB ZGRyICgweDdGKSBmb3IgRmlybXdhcmUgVXBkYXRlICAgICAgIHwNCisgKiB8ICAtIEdsb2JhbCBT dGF0dXMgKFRlbXAsIFZERC9WUFdSIFVWTE8pICAgICAgICAgICAgICB8DQorICogKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KKyAqICAgICAg ICB8ICAgfCAgIHwgICB8ICAgICAgICB8ICAgfCAgIHwgICB8DQorICogICAgICAgIENoMCBDaDEg Q2gyIENoMyAgICAgIENoNCBDaDUgQ2g2IENoNyAgKFBoeXNpY2FsIENoYW5uZWxzKQ0KKyAqDQor ICogRXhhbXBsZSBNYXBwaW5nIChMb2dpY2FsIFBJIHRvIFBoeXNpY2FsIENoYW5uZWwocykpOg0K KyAqICogMi1QYWlyIE1vZGUgKDggUElzKToNCisgKiBQSSAwIC0+IENoIDANCisgKiBQSSAxIC0+ IENoIDENCisgKiAuLi4NCisgKiBQSSA3IC0+IENoIDcNCisgKiAqIDQtUGFpciBNb2RlICg0IFBJ cyk6DQorICogUEkgMCAtPiBDaCAwICsgQ2ggMSAgKE1hbmFnZWQgdmlhIFF1YWQgMCBBZGRyKQ0K KyAqIFBJIDEgLT4gQ2ggMiArIENoIDMgIChNYW5hZ2VkIHZpYSBRdWFkIDAgQWRkcikNCisgKiBQ SSAyIC0+IENoIDQgKyBDaCA1ICAoTWFuYWdlZCB2aWEgUXVhZCAxIEFkZHIpDQorICogUEkgMyAt PiBDaCA2ICsgQ2ggNyAgKE1hbmFnZWQgdmlhIFF1YWQgMSBBZGRyKQ0KKyAqIChOb3RlOiBBY3R1 YWwgbWFwcGluZyBkZXBlbmRzIG9uIERldmljZSBUcmVlIGFuZCBQT1JUX1JFTUFQIGNvbmZpZykN CisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCisjaW5jbHVkZSA8bGludXgvaTJj Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0K KyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcHNl LXBkL3BzZS5oPg0KKw0KKyNkZWZpbmUgU0kzNDc0X01BWF9DSEFOUyA4DQorDQorI2RlZmluZSBN QU5VRkFDVFVSRVJfSUQgMHgwOA0KKyNkZWZpbmUgSUNfSUQgMHgwNQ0KKyNkZWZpbmUgU0kzNDc0 X0RFVklDRV9JRCAoTUFOVUZBQ1RVUkVSX0lEIDw8IDMgfCBJQ19JRCkNCisNCisvKiBNaXNjIHJl Z2lzdGVycyAqLw0KKyNkZWZpbmUgVkVORE9SX0lDX0lEX1JFRyAweDFCDQorI2RlZmluZSBURU1Q RVJBVFVSRV9SRUcgMHgyQw0KKyNkZWZpbmUgRklSTVdBUkVfUkVWSVNJT05fUkVHIDB4NDENCisj ZGVmaW5lIENISVBfUkVWSVNJT05fUkVHIDB4NDMNCisNCisvKiBNYWluIHN0YXR1cyByZWdpc3Rl cnMgKi8NCisjZGVmaW5lIFBPV0VSX1NUQVRVU19SRUcgMHgxMA0KKyNkZWZpbmUgUE9SVF9NT0RF X1JFRyAweDEyDQorI2RlZmluZSBQQl9QT1dFUl9FTkFCTEVfUkVHIDB4MTkNCisNCisvKiBQT1JU biBDdXJyZW50ICovDQorI2RlZmluZSBQT1JUMV9DVVJSRU5UX0xTQl9SRUcgMHgzMA0KKw0KKy8q IFBPUlRuIEN1cnJlbnQgW21BXSwgcmV0dXJuIGluIFtuQV0gKi8NCisvKiAxMDAwICogKChQT1JU bl9DVVJSRU5UX01TQiA8PCA4KSArIFBPUlRuX0NVUlJFTlRfTFNCKSAvIDE2Mzg0ICovDQorI2Rl ZmluZSBTSTM0NzRfTkFfU1RFUCAoMTAwMCAqIDEwMDAgKiAxMDAwIC8gMTYzODQpDQorDQorLyog VlBXUiBWb2x0YWdlICovDQorI2RlZmluZSBWUFdSX0xTQl9SRUcgMHgyRQ0KKyNkZWZpbmUgVlBX Ul9NU0JfUkVHIDB4MkYNCisNCisvKiBQT1JUbiBWb2x0YWdlICovDQorI2RlZmluZSBQT1JUMV9W T0xUQUdFX0xTQl9SRUcgMHgzMg0KKw0KKy8qIFZQV1IgVm9sdGFnZSBbVl0sIHJldHVybiBpbiBb dVZdICovDQorLyogNjAgKiAoKCBWUFdSX01TQiA8PCA4KSArIFZQV1JfTFNCKSAvIDE2Mzg0ICov DQorI2RlZmluZSBTSTM0NzRfVVZfU1RFUCAoMTAwMCAqIDEwMDAgKiA2MCAvIDE2Mzg0KQ0KKw0K K3N0cnVjdCBzaTM0NzRfcGlfZGVzYyB7DQorCXU4IGNoYW5bMl07DQorCWJvb2wgaXNfNHA7DQor fTsNCisNCitzdHJ1Y3Qgc2kzNDc0X3ByaXYgew0KKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 WzJdOw0KKwlzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2IHBjZGV2Ow0KKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wOw0KKwlzdHJ1Y3Qgc2kzNDc0X3BpX2Rlc2MgcGlbU0kzNDc0X01BWF9DSEFOU107 DQorfTsNCisNCitzdGF0aWMgc3RydWN0IHNpMzQ3NF9wcml2ICp0b19zaTM0NzRfcHJpdihzdHJ1 Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldikNCit7DQorCXJldHVybiBjb250YWluZXJfb2Yo cGNkZXYsIHN0cnVjdCBzaTM0NzRfcHJpdiwgcGNkZXYpOw0KK30NCisNCitzdGF0aWMgaW50IHNp MzQ3NF9waV9nZXRfYWRtaW5fc3RhdGUoc3RydWN0IHBzZV9jb250cm9sbGVyX2RldiAqcGNkZXYs IGludCBpZCwNCisJCQkJICAgICBzdHJ1Y3QgcHNlX2FkbWluX3N0YXRlICphZG1pbl9zdGF0ZSkN Cit7DQorCXN0cnVjdCBzaTM0NzRfcHJpdiAqcHJpdiA9IHRvX3NpMzQ3NF9wcml2KHBjZGV2KTsN CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsNCisJYm9vbCBpc19lbmFibGVkID0gZmFsc2U7 DQorCXU4IGNoYW4wLCBjaGFuMTsNCisJczMyIHJldDsNCisNCisJaWYgKGlkID49IFNJMzQ3NF9N QVhfQ0hBTlMpDQorCQlyZXR1cm4gLUVSQU5HRTsNCisNCisJY2hhbjAgPSBwcml2LT5waVtpZF0u Y2hhblswXTsNCisJY2hhbjEgPSBwcml2LT5waVtpZF0uY2hhblsxXTsNCisNCisJaWYgKGNoYW4w IDwgNCkNCisJCWNsaWVudCA9IHByaXYtPmNsaWVudFswXTsNCisJZWxzZQ0KKwkJY2xpZW50ID0g cHJpdi0+Y2xpZW50WzFdOw0KKw0KKwlyZXQgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xp ZW50LCBQT1JUX01PREVfUkVHKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWFkbWluX3N0YXRlLT5j MzNfYWRtaW5fc3RhdGUgPQ0KKwkJCUVUSFRPT0xfQzMzX1BTRV9BRE1JTl9TVEFURV9VTktOT1dO Ow0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlpc19lbmFibGVkID0gKChyZXQgJiAoMHgwMyA8 PCAoMiAqIChjaGFuMCAlIDQpKSkpIHwNCisJCSAgICAgIChyZXQgJiAoMHgwMyA8PCAoMiAqIChj aGFuMSAlIDQpKSkpKSAhPSAwOw0KKw0KKwlpZiAoaXNfZW5hYmxlZCkNCisJCWFkbWluX3N0YXRl LT5jMzNfYWRtaW5fc3RhdGUgPQ0KKwkJCUVUSFRPT0xfQzMzX1BTRV9BRE1JTl9TVEFURV9FTkFC TEVEOw0KKwllbHNlDQorCQlhZG1pbl9zdGF0ZS0+YzMzX2FkbWluX3N0YXRlID0NCisJCQlFVEhU T09MX0MzM19QU0VfQURNSU5fU1RBVEVfRElTQUJMRUQ7DQorDQorCXJldHVybiAwOw0KK30NCisN CitzdGF0aWMgaW50IHNpMzQ3NF9waV9nZXRfcHdfc3RhdHVzKHN0cnVjdCBwc2VfY29udHJvbGxl cl9kZXYgKnBjZGV2LCBpbnQgaWQsDQorCQkJCSAgIHN0cnVjdCBwc2VfcHdfc3RhdHVzICpwd19z dGF0dXMpDQorew0KKwlzdHJ1Y3Qgc2kzNDc0X3ByaXYgKnByaXYgPSB0b19zaTM0NzRfcHJpdihw Y2Rldik7DQorCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7DQorCWJvb2wgZGVsaXZlcmluZyA9 IGZhbHNlOw0KKwl1OCBjaGFuMCwgY2hhbjE7DQorCXMzMiByZXQ7DQorDQorCWlmIChpZCA+PSBT STM0NzRfTUFYX0NIQU5TKQ0KKwkJcmV0dXJuIC1FUkFOR0U7DQorDQorCWNoYW4wID0gcHJpdi0+ cGlbaWRdLmNoYW5bMF07DQorCWNoYW4xID0gcHJpdi0+cGlbaWRdLmNoYW5bMV07DQorDQorCWlm IChjaGFuMCA8IDQpDQorCQljbGllbnQgPSBwcml2LT5jbGllbnRbMF07DQorCWVsc2UNCisJCWNs aWVudCA9IHByaXYtPmNsaWVudFsxXTsNCisNCisJcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9k YXRhKGNsaWVudCwgUE9XRVJfU1RBVFVTX1JFRyk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlwd19z dGF0dXMtPmMzM19wd19zdGF0dXMgPSBFVEhUT09MX0MzM19QU0VfUFdfRF9TVEFUVVNfVU5LTk9X TjsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJZGVsaXZlcmluZyA9IChyZXQgJiAoQklUKChj aGFuMCAlIDQpICsgNCkgfCBCSVQoKGNoYW4xICUgNCkgKyA0KSkpICE9IDA7DQorDQorCWlmIChk ZWxpdmVyaW5nKQ0KKwkJcHdfc3RhdHVzLT5jMzNfcHdfc3RhdHVzID0NCisJCQlFVEhUT09MX0Mz M19QU0VfUFdfRF9TVEFUVVNfREVMSVZFUklORzsNCisJZWxzZQ0KKwkJcHdfc3RhdHVzLT5jMzNf cHdfc3RhdHVzID0gRVRIVE9PTF9DMzNfUFNFX1BXX0RfU1RBVFVTX0RJU0FCTEVEOw0KKw0KKwly ZXR1cm4gMDsNCit9DQorDQorLyogUGFyc2UgcHNlLXBpcyBzdWJub2RlIGludG8gY2hhbiBhcnJh eSBvZiBzaTM0NzRfcHJpdiAqLw0KK3N0YXRpYyBpbnQgc2kzNDc0X2dldF9vZl9jaGFubmVscyhz dHJ1Y3Qgc2kzNDc0X3ByaXYgKnByaXYpDQorew0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBzZV9u b2RlOw0KKwlzdHJ1Y3QgcHNlX3BpICpwaTsNCisJdTMyIHBpX25vLCBjaGFuX2lkOw0KKwlzOCBw YWlyc2V0X2NudDsNCisJczMyIHJldCA9IDA7DQorDQorCXBzZV9ub2RlID0gb2ZfZ2V0X2NoaWxk X2J5X25hbWUocHJpdi0+bnAsICJwc2UtcGlzIik7DQorCWlmICghcHNlX25vZGUpIHsNCisJCWRl dl93YXJuKCZwcml2LT5jbGllbnRbMF0tPmRldiwNCisJCQkgIlVuYWJsZSB0byBwYXJzZSBEVCBQ U0UgcG93ZXIgaW50ZXJmYWNlIG1hdHJpeCwgbm8gcHNlLXBpcyBub2RlXG4iKTsNCisJCXJldHVy biAtRUlOVkFMOw0KKwl9DQorDQorCWZvcl9lYWNoX2NoaWxkX29mX25vZGVfc2NvcGVkKHBzZV9u b2RlLCBub2RlKSB7DQorCQlpZiAoIW9mX25vZGVfbmFtZV9lcShub2RlLCAicHNlLXBpIikpDQor CQkJY29udGludWU7DQorDQorCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAicmVn IiwgJnBpX25vKTsNCisJCWlmIChyZXQpIHsNCisJCQlkZXZfZXJyKCZwcml2LT5jbGllbnRbMF0t PmRldiwNCisJCQkJIkZhaWxlZCB0byByZWFkIHBzZS1waSByZWcgcHJvcGVydHlcbiIpOw0KKwkJ CWdvdG8gb3V0Ow0KKwkJfQ0KKwkJaWYgKHBpX25vID49IFNJMzQ3NF9NQVhfQ0hBTlMpIHsNCisJ CQlkZXZfZXJyKCZwcml2LT5jbGllbnRbMF0tPmRldiwNCisJCQkJIkludmFsaWQgcG93ZXIgaW50 ZXJmYWNlIG51bWJlciAldVxuIiwgcGlfbm8pOw0KKwkJCXJldCA9IC1FSU5WQUw7DQorCQkJZ290 byBvdXQ7DQorCQl9DQorDQorCQlwYWlyc2V0X2NudCA9IG9mX3Byb3BlcnR5X2NvdW50X2VsZW1z X29mX3NpemUobm9kZSwgInBhaXJzZXRzIiwNCisJCQkJCQkJICAgICAgc2l6ZW9mKHUzMikpOw0K KwkJaWYgKCFwYWlyc2V0X2NudCkgew0KKwkJCWRldl9lcnIoJnByaXYtPmNsaWVudFswXS0+ZGV2 LA0KKwkJCQkiRmFpbGVkIHRvIGdldCBwYWlyc2V0cyBwcm9wZXJ0eVxuIik7DQorCQkJZ290byBv dXQ7DQorCQl9DQorDQorCQlwaSA9ICZwcml2LT5wY2Rldi5waVtwaV9ub107DQorCQlpZiAoIXBp LT5wYWlyc2V0WzBdLm5wKSB7DQorCQkJZGV2X2VycigmcHJpdi0+Y2xpZW50WzBdLT5kZXYsDQor CQkJCSJNaXNzaW5nIHBhaXJzZXQgcmVmZXJlbmNlLCBwb3dlciBpbnRlcmZhY2U6ICV1XG4iLA0K KwkJCQlwaV9ubyk7DQorCQkJcmV0ID0gLUVJTlZBTDsNCisJCQlnb3RvIG91dDsNCisJCX0NCisN CisJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBpLT5wYWlyc2V0WzBdLm5wLCAicmVnIiwg JmNoYW5faWQpOw0KKwkJaWYgKHJldCkgew0KKwkJCWRldl9lcnIoJnByaXYtPmNsaWVudFswXS0+ ZGV2LA0KKwkJCQkiRmFpbGVkIHRvIHJlYWQgY2hhbm5lbCByZWcgcHJvcGVydHksIHJldDolZFxu IiwNCisJCQkJcmV0KTsNCisJCQlnb3RvIG91dDsNCisJCX0NCisJCXByaXYtPnBpW3BpX25vXS5j aGFuWzBdID0gY2hhbl9pZDsNCisJCXByaXYtPnBpW3BpX25vXS5pc180cCA9IEZBTFNFOw0KKw0K KwkJaWYgKHBhaXJzZXRfY250ID09IDIpIHsNCisJCQlpZiAoIXBpLT5wYWlyc2V0WzFdLm5wKSB7 DQorCQkJCWRldl9lcnIoJnByaXYtPmNsaWVudFswXS0+ZGV2LA0KKwkJCQkJIk1pc3NpbmcgcGFp cnNldCByZWZlcmVuY2UsIHBvd2VyIGludGVyZmFjZTogJXVcbiIsDQorCQkJCQlwaV9ubyk7DQor CQkJCXJldCA9IC1FSU5WQUw7DQorCQkJCWdvdG8gb3V0Ow0KKwkJCX0NCisNCisJCQlyZXQgPSBv Zl9wcm9wZXJ0eV9yZWFkX3UzMihwaS0+cGFpcnNldFsxXS5ucCwgInJlZyIsDQorCQkJCQkJICAg JmNoYW5faWQpOw0KKwkJCWlmIChyZXQpIHsNCisJCQkJZGV2X2VycigmcHJpdi0+Y2xpZW50WzBd LT5kZXYsDQorCQkJCQkiRmFpbGVkIHRvIHJlYWQgY2hhbm5lbCByZWcgcHJvcGVydHlcbiIpOw0K KwkJCQlnb3RvIG91dDsNCisJCQl9DQorCQkJcHJpdi0+cGlbcGlfbm9dLmNoYW5bMV0gPSBjaGFu X2lkOw0KKwkJCXByaXYtPnBpW3BpX25vXS5pc180cCA9IFRSVUU7DQorCQl9IGVsc2Ugew0KKwkJ CWRldl9lcnIoJnByaXYtPmNsaWVudFswXS0+ZGV2LA0KKwkJCQkiTnVtYmVyIG9mIHBhaXJzZXRz IGluY29ycmVjdCAtIG9ubHkgNHAgY29uZmlndXJhdGlvbnMgc3VwcG9ydGVkXG4iKTsNCisJCQly ZXQgPSAtRUlOVkFMOw0KKwkJCWdvdG8gb3V0Ow0KKwkJfQ0KKwl9DQorDQorb3V0Og0KKwlvZl9u b2RlX3B1dChwc2Vfbm9kZSk7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgc2kz NDc0X3NldHVwX3BpX21hdHJpeChzdHJ1Y3QgcHNlX2NvbnRyb2xsZXJfZGV2ICpwY2RldikNCit7 DQorCXN0cnVjdCBzaTM0NzRfcHJpdiAqcHJpdiA9IHRvX3NpMzQ3NF9wcml2KHBjZGV2KTsNCisJ czMyIHJldDsNCisNCisJcmV0ID0gc2kzNDc0X2dldF9vZl9jaGFubmVscyhwcml2KTsNCisJaWYg KHJldCA8IDApIHsNCisJCWRldl93YXJuKCZwcml2LT5jbGllbnRbMF0tPmRldiwNCisJCQkgIlVu YWJsZSB0byBwYXJzZSBEVCBQU0UgcG93ZXIgaW50ZXJmYWNlIG1hdHJpeFxuIik7DQorCX0NCisJ cmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCBzaTM0NzRfcGlfZW5hYmxlKHN0cnVjdCBw c2VfY29udHJvbGxlcl9kZXYgKnBjZGV2LCBpbnQgaWQpDQorew0KKwlzdHJ1Y3Qgc2kzNDc0X3By aXYgKnByaXYgPSB0b19zaTM0NzRfcHJpdihwY2Rldik7DQorCXN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQ7DQorCXU4IGNoYW4wLCBjaGFuMTsNCisJdTggdmFsID0gMDsNCisJczMyIHJldDsNCisN CisJaWYgKGlkID49IFNJMzQ3NF9NQVhfQ0hBTlMpDQorCQlyZXR1cm4gLUVSQU5HRTsNCisNCisJ Y2hhbjAgPSBwcml2LT5waVtpZF0uY2hhblswXTsNCisJY2hhbjEgPSBwcml2LT5waVtpZF0uY2hh blsxXTsNCisNCisJaWYgKGNoYW4wIDwgNCkNCisJCWNsaWVudCA9IHByaXYtPmNsaWVudFswXTsN CisJZWxzZQ0KKwkJY2xpZW50ID0gcHJpdi0+Y2xpZW50WzFdOw0KKw0KKwkvKiBSZWxlYXNlIHBp IGZyb20gc2h1dGRvd24gKi8NCisJcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVu dCwgUE9SVF9NT0RFX1JFRyk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJ dmFsID0gKHU4KXJldDsNCisJdmFsIHw9ICgweDAzIDw8ICgyICogKGNoYW4wICUgNCkpKTsNCisJ dmFsIHw9ICgweDAzIDw8ICgyICogKGNoYW4xICUgNCkpKTsNCisNCisJcmV0ID0gaTJjX3NtYnVz X3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFBPUlRfTU9ERV9SRUcsIHZhbCk7DQorCWlmIChyZXQp DQorCQlyZXR1cm4gcmV0Ow0KKw0KKwkvKiBHaXZlIHRpbWUgZm9yIHRyYW5zaXRpb24gdG8gY29t cGxldGUgKi8NCisJc3NsZWVwKDEpOw0KKw0KKwkvKiBUcmlnZ2VyIHBpIHRvIHBvd2VyIHVwICov DQorCXZhbCA9IChCSVQoY2hhbjAgJSA0KSB8IEJJVChjaGFuMSAlIDQpKTsNCisJcmV0ID0gaTJj X3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIFBCX1BPV0VSX0VOQUJMRV9SRUcsIHZhbCk7 DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHNpMzQ3NF9waV9kaXNhYmxlKHN0 cnVjdCBwc2VfY29udHJvbGxlcl9kZXYgKnBjZGV2LCBpbnQgaWQpDQorew0KKwlzdHJ1Y3Qgc2kz NDc0X3ByaXYgKnByaXYgPSB0b19zaTM0NzRfcHJpdihwY2Rldik7DQorCXN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQ7DQorCXU4IGNoYW4wLCBjaGFuMTsNCisJdTggdmFsID0gMDsNCisJczMyIHJl dDsNCisNCisJaWYgKGlkID49IFNJMzQ3NF9NQVhfQ0hBTlMpDQorCQlyZXR1cm4gLUVSQU5HRTsN CisNCisJY2hhbjAgPSBwcml2LT5waVtpZF0uY2hhblswXTsNCisJY2hhbjEgPSBwcml2LT5waVtp ZF0uY2hhblsxXTsNCisNCisJaWYgKGNoYW4wIDwgNCkNCisJCWNsaWVudCA9IHByaXYtPmNsaWVu dFswXTsNCisJZWxzZQ0KKwkJY2xpZW50ID0gcHJpdi0+Y2xpZW50WzFdOw0KKw0KKwkvKiBUcmln Z2VyIHBpIHRvIHBvd2VyIGRvd24gKi8NCisJdmFsID0gKEJJVCgoY2hhbjAgJSA0KSArIDQpIHwg QklUKChjaGFuMSAlIDQpICsgNCkpOw0KKwlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRh KGNsaWVudCwgUEJfUE9XRVJfRU5BQkxFX1JFRywgdmFsKTsNCisNCisJLyogU2h1dGRvd24gcGkg Ki8NCisJcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgUE9SVF9NT0RFX1JF Ryk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJdmFsID0gKHU4KXJldDsN CisJdmFsICY9IH4oMHgwMyA8PCAoMiAqIChjaGFuMCAlIDQpKSk7DQorCXZhbCAmPSB+KDB4MDMg PDwgKDIgKiAoY2hhbjEgJSA0KSkpOw0KKw0KKwlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9k YXRhKGNsaWVudCwgUE9SVF9NT0RFX1JFRywgdmFsKTsNCisJaWYgKHJldCkNCisJCXJldHVybiBy ZXQ7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHNpMzQ3NF9waV9nZXRfY2hh bl9jdXJyZW50KHN0cnVjdCBzaTM0NzRfcHJpdiAqcHJpdiwgdTggY2hhbikNCit7DQorCXN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQ7DQorCXMzMiByZXQ7DQorCXU4IHJlZzsNCisJdTY0IHRtcF82 NDsNCisNCisJaWYgKGNoYW4gPCA0KQ0KKwkJY2xpZW50ID0gcHJpdi0+Y2xpZW50WzBdOw0KKwll bHNlDQorCQljbGllbnQgPSBwcml2LT5jbGllbnRbMV07DQorDQorCS8qIFJlZ2lzdGVycyAweDMw IHRvIDB4M2QgKi8NCisJcmVnID0gUE9SVDFfQ1VSUkVOVF9MU0JfUkVHICsgKGNoYW4gJSA0KSAq IDQ7DQorDQorCXJldCA9IGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIHJlZyk7DQor CWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJdG1wXzY0ID0gcmV0ICogU0kzNDc0 X05BX1NURVA7DQorDQorCS8qIHVBID0gbkEgLyAxMDAwICovDQorCXRtcF82NCA9IERJVl9ST1VO RF9DTE9TRVNUX1VMTCh0bXBfNjQsIDEwMDApOw0KKwlyZXR1cm4gKGludCl0bXBfNjQ7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgc2kzNDc0X3BpX2dldF9jaGFuX3ZvbHRhZ2Uoc3RydWN0IHNpMzQ3NF9w cml2ICpwcml2LCB1OCBjaGFuKQ0KK3sNCisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsNCisJ czMyIHJldDsNCisJdTggcmVnOw0KKwl1MzIgdmFsOw0KKw0KKwlpZiAoY2hhbiA8IDQpDQorCQlj bGllbnQgPSBwcml2LT5jbGllbnRbMF07DQorCWVsc2UNCisJCWNsaWVudCA9IHByaXYtPmNsaWVu dFsxXTsNCisNCisJLyogUmVnaXN0ZXJzIDB4MzIgdG8gMHgzZiAqLw0KKwlyZWcgPSBQT1JUMV9W T0xUQUdFX0xTQl9SRUcgKyAoY2hhbiAlIDQpICogNDsNCisNCisJcmV0ID0gaTJjX3NtYnVzX3Jl YWRfd29yZF9kYXRhKGNsaWVudCwgcmVnKTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0 Ow0KKw0KKwl2YWwgPSByZXQgKiBTSTM0NzRfVVZfU1RFUDsNCisNCisJcmV0dXJuIChpbnQpdmFs Ow0KK30NCisNCitzdGF0aWMgaW50IHNpMzQ3NF9waV9nZXRfdm9sdGFnZShzdHJ1Y3QgcHNlX2Nv bnRyb2xsZXJfZGV2ICpwY2RldiwgaW50IGlkKQ0KK3sNCisJc3RydWN0IHNpMzQ3NF9wcml2ICpw cml2ID0gdG9fc2kzNDc0X3ByaXYocGNkZXYpOw0KKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 Ow0KKwl1OCBjaGFuMCwgY2hhbjE7DQorCXMzMiByZXQ7DQorDQorCWNoYW4wID0gcHJpdi0+cGlb aWRdLmNoYW5bMF07DQorCWNoYW4xID0gcHJpdi0+cGlbaWRdLmNoYW5bMV07DQorDQorCWlmIChj aGFuMCA8IDQpDQorCQljbGllbnQgPSBwcml2LT5jbGllbnRbMF07DQorCWVsc2UNCisJCWNsaWVu dCA9IHByaXYtPmNsaWVudFsxXTsNCisNCisJLyogQ2hlY2sgd2hpY2ggY2hhbm5lbHMgYXJlIGVu YWJsZWQqLw0KKwlyZXQgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBQT1dFUl9T VEFUVVNfUkVHKTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwkvKiBUYWtl IHZvbHRhZ2UgZnJvbSB0aGUgZmlyc3QgZW5hYmxlZCBjaGFubmVsICovDQorCWlmIChyZXQgJiBC SVQoY2hhbjAgJSA0KSkNCisJCXJldCA9IHNpMzQ3NF9waV9nZXRfY2hhbl92b2x0YWdlKHByaXYs IGNoYW4wKTsNCisJZWxzZSBpZiAocmV0ICYgQklUKGNoYW4xKSkNCisJCXJldCA9IHNpMzQ3NF9w aV9nZXRfY2hhbl92b2x0YWdlKHByaXYsIGNoYW4xKTsNCisJZWxzZQ0KKwkJLyogJ3Nob3VsZCcg YmUgbm8gdm9sdGFnZSBpbiB0aGlzIGNhc2UgKi8NCisJCXJldHVybiAwOw0KKw0KKwlyZXR1cm4g cmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHNpMzQ3NF9waV9nZXRfYWN0dWFsX3B3KHN0cnVjdCBw c2VfY29udHJvbGxlcl9kZXYgKnBjZGV2LCBpbnQgaWQpDQorew0KKwlzdHJ1Y3Qgc2kzNDc0X3By aXYgKnByaXYgPSB0b19zaTM0NzRfcHJpdihwY2Rldik7DQorCXMzMiByZXQ7DQorCXUzMiB1Viwg dUE7DQorCXU2NCB0bXBfNjQ7DQorCXU4IGNoYW4wLCBjaGFuMTsNCisNCisJaWYgKGlkID49IFNJ MzQ3NF9NQVhfQ0hBTlMpDQorCQlyZXR1cm4gLUVSQU5HRTsNCisNCisJcmV0ID0gc2kzNDc0X3Bp X2dldF92b2x0YWdlKCZwcml2LT5wY2RldiwgaWQpOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVy biByZXQ7DQorCXVWID0gcmV0Ow0KKw0KKwljaGFuMCA9IHByaXYtPnBpW2lkXS5jaGFuWzBdOw0K KwljaGFuMSA9IHByaXYtPnBpW2lkXS5jaGFuWzFdOw0KKw0KKwlyZXQgPSBzaTM0NzRfcGlfZ2V0 X2NoYW5fY3VycmVudChwcml2LCBjaGFuMCk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJl dDsNCisJdUEgPSByZXQ7DQorDQorCXJldCA9IHNpMzQ3NF9waV9nZXRfY2hhbl9jdXJyZW50KHBy aXYsIGNoYW4xKTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKwl1QSArPSByZXQ7 DQorDQorCXRtcF82NCA9IHVWOw0KKwl0bXBfNjQgKj0gdUE7DQorCS8qIG1XID0gdVYgKiB1QSAv IDEwMDAwMDAwMDAgKi8NCisJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUX1VMTCh0bXBfNjQsIDEw MDAwMDAwMDApOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHBzZV9jb250cm9sbGVyX29w cyBzaTM0NzRfb3BzID0gew0KKwkuc2V0dXBfcGlfbWF0cml4ID0gc2kzNDc0X3NldHVwX3BpX21h dHJpeCwNCisJLnBpX2VuYWJsZSA9IHNpMzQ3NF9waV9lbmFibGUsDQorCS5waV9kaXNhYmxlID0g c2kzNDc0X3BpX2Rpc2FibGUsDQorCS5waV9nZXRfYWN0dWFsX3B3ID0gc2kzNDc0X3BpX2dldF9h Y3R1YWxfcHcsDQorCS5waV9nZXRfdm9sdGFnZSA9IHNpMzQ3NF9waV9nZXRfdm9sdGFnZSwNCisJ LnBpX2dldF9hZG1pbl9zdGF0ZSA9IHNpMzQ3NF9waV9nZXRfYWRtaW5fc3RhdGUsDQorCS5waV9n ZXRfcHdfc3RhdHVzID0gc2kzNDc0X3BpX2dldF9wd19zdGF0dXMsDQorfTsNCisNCitzdGF0aWMg dm9pZCBzaTM0NzRfYW5jaWxsYXJ5X2kyY19yZW1vdmUodm9pZCAqZGF0YSkNCit7DQorCXN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhOw0KKw0KKwlpMmNfdW5yZWdpc3Rlcl9kZXZpY2Uo Y2xpZW50KTsNCit9DQorDQorc3RhdGljIGludCBzaTM0NzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7 DQorCXN0cnVjdCBzaTM0NzRfcHJpdiAqcHJpdjsNCisJczMyIHJldDsNCisJdTggZndfdmVyc2lv bjsNCisNCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEky Q19GVU5DX0kyQykpIHsNCisJCWRldl9lcnIoZGV2LCAiaTJjIGNoZWNrIGZ1bmN0aW9uYWxpdHkg ZmFpbGVkXG4iKTsNCisJCXJldHVybiAtRU5YSU87DQorCX0NCisNCisJcHJpdiA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXByaXYpDQorCQly ZXR1cm4gLUVOT01FTTsNCisNCisJcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVu dCwgVkVORE9SX0lDX0lEX1JFRyk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisN CisJaWYgKHJldCAhPSBTSTM0NzRfREVWSUNFX0lEKSB7DQorCQlkZXZfZXJyKGRldiwgIldyb25n IGRldmljZSBJRDogMHgleFxuIiwgcmV0KTsNCisJCXJldHVybiAtRU5YSU87DQorCX0NCisNCisJ cmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgRklSTVdBUkVfUkVWSVNJT05f UkVHKTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKwlmd192ZXJzaW9uID0gcmV0 Ow0KKw0KKwlyZXQgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBDSElQX1JFVklT SU9OX1JFRyk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJZGV2X2RiZyhk ZXYsICJDaGlwIHJldmlzaW9uOiAweCV4LCBmaXJtd2FyZSB2ZXJzaW9uOiAweCV4XG4iLA0KKwkJ cmV0LCBmd192ZXJzaW9uKTsNCisNCisJcHJpdi0+Y2xpZW50WzBdID0gY2xpZW50Ow0KKwlpMmNf c2V0X2NsaWVudGRhdGEoY2xpZW50LCBwcml2KTsNCisNCisJcHJpdi0+Y2xpZW50WzFdID0gaTJj X25ld19hbmNpbGxhcnlfZGV2aWNlKHByaXYtPmNsaWVudFswXSwgInNlY29uZGFyeSIsDQorCQkJ CQkJICAgcHJpdi0+Y2xpZW50WzBdLT5hZGRyICsgMSk7DQorCWlmIChJU19FUlIocHJpdi0+Y2xp ZW50WzFdKSkNCisJCXJldHVybiBQVFJfRVJSKHByaXYtPmNsaWVudFsxXSk7DQorDQorCXJldCA9 IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHNpMzQ3NF9hbmNpbGxhcnlfaTJjX3JlbW92 ZSwgcHJpdi0+Y2xpZW50WzFdKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIoJnByaXYt PmNsaWVudFsxXS0+ZGV2LCAiQ2Fubm90IHJlZ2lzdGVyIHJlbW92ZSBjYWxsYmFja1xuIik7DQor CQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJldCA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShw cml2LT5jbGllbnRbMV0sIFZFTkRPUl9JQ19JRF9SRUcpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJ ZGV2X2VycigmcHJpdi0+Y2xpZW50WzFdLT5kZXYsICJDYW5ub3QgYWNjZXNzIHNlY29uZGFyeSBQ U0UgY29udHJvbGxlclxuIik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCWlmIChyZXQgIT0g U0kzNDc0X0RFVklDRV9JRCkgew0KKwkJZGV2X2VycigmcHJpdi0+Y2xpZW50WzFdLT5kZXYsDQor CQkJIldyb25nIGRldmljZSBJRCBmb3Igc2Vjb25kYXJ5IFBTRSBjb250cm9sbGVyOiAweCV4XG4i LCByZXQpOw0KKwkJcmV0dXJuIC1FTlhJTzsNCisJfQ0KKw0KKwlwcml2LT5ucCA9IGRldi0+b2Zf bm9kZTsNCisJcHJpdi0+cGNkZXYub3duZXIgPSBUSElTX01PRFVMRTsNCisJcHJpdi0+cGNkZXYu b3BzID0gJnNpMzQ3NF9vcHM7DQorCXByaXYtPnBjZGV2LmRldiA9IGRldjsNCisJcHJpdi0+cGNk ZXYudHlwZXMgPSBFVEhUT09MX1BTRV9DMzM7DQorCXByaXYtPnBjZGV2Lm5yX2xpbmVzID0gU0kz NDc0X01BWF9DSEFOUzsNCisNCisJcmV0ID0gZGV2bV9wc2VfY29udHJvbGxlcl9yZWdpc3Rlcihk ZXYsICZwcml2LT5wY2Rldik7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIHJlZ2lzdGVyIFBTRSBjb250cm9sbGVyOiAweCV4XG4iLCByZXQpOw0KKwkJcmV0dXJuIHJl dDsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIHNpMzQ3NF9pZFtdID0gew0KKwl7ICJzaTM0NzQiIH0sDQorCXt9DQorfTsNCitN T0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc2kzNDc0X2lkKTsNCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBzaTM0NzRfb2ZfbWF0Y2hbXSA9IHsNCisJew0KKwkJLmNvbXBhdGli bGUgPSAic2t5d29ya3Msc2kzNDc0IiwNCisJfSwNCisJe30sDQorfTsNCitNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBzaTM0NzRfb2ZfbWF0Y2gpOw0KKw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl ciBzaTM0NzRfZHJpdmVyID0gew0KKwkucHJvYmUgPSBzaTM0NzRfaTJjX3Byb2JlLA0KKwkuaWRf dGFibGUgPSBzaTM0NzRfaWQsDQorCS5kcml2ZXIgPSB7DQorCQkubmFtZSA9ICJzaTM0NzQiLA0K KwkJLm9mX21hdGNoX3RhYmxlID0gc2kzNDc0X29mX21hdGNoLA0KKwl9LA0KK307DQorbW9kdWxl X2kyY19kcml2ZXIoc2kzNDc0X2RyaXZlcik7DQorDQorTU9EVUxFX0FVVEhPUigiUGlvdHIgS3Vi aWsgPHBpb3RyLmt1YmlrQGFkdHJhbi5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJTa3l3 b3JrcyBTaTM0NzQgUG9FIFBTRSBDb250cm9sbGVyIGRyaXZlciIpOw0KK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsNCi0tIA0KMi40My4wDQoNCg==