From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.184]) (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 B8A5130C359; Fri, 16 Oct 2026 00:58:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=67.231.154.184 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112327; cv=fail; b=njXKfUg1u0+KCf0QHxlYO7Y/ftLKhb1iMI4Y8Ibvk+01yxa+lcl5sP5tHI82jhkgczTWHLgULm3GTrrZhS1yLhZxh6NPR32kYzrzQqcfz2Hzy5lPB6hAqLjZN9F8jvDE4JQOPRVMkm3En/e6EYJRzaWJZXdtjtZl4Ih+ZLEdk0k= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112327; c=relaxed/simple; bh=L5AYiha7HWowHB2nS+iM16HAYTkiDe4miHz6on6kJ10=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=f32NsZxdS9E5SvJX1jEinNXLOn0mRd8HgTY0p1TPRQJL1RoppHIXOvFc+tEmhILkSbkUh+sXrzlG105x6Czsc0Ln4vHIBb/ywtnsla3OX97CtZ8nZ66YQvTb6YztU4oesMQulyxNA15hJMewh07mebrcT7LX6QtZZdkHXKM7co0= 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=IvcL9pdd; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b=ArQUEWQ+; arc=fail smtp.client-ip=67.231.154.184 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="IvcL9pdd"; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b="ArQUEWQ+" 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=L5AYiha7HWowHB2nS+iM16HAYTkiDe4miHz6on6kJ10=; b=IvcL9pddAfbeLmPqu1NlARbgxBPmmfRx8o+sj075zAE75JkU0WfOROBQOQUMsdM8zdSmYISz0XrNFCyeOxA+XTuHb/R3c2e9mJojMf9YrqvPVgTc2FvjhMS2ziu6VeRMDdy+lHp/vRjUaZ0jf/ozy1p0xz8b6wIjQD1jXbDndx7lxAjUvis8Ua2MowPYGjK1eTpZSxOvBkBgOA4lB5xmUYyZZa8E5phTQSD5RnP6vFXjffkc/vAMArjaXWGIXUvT/CBa8R4S9xlGFRkaKaf8JVWh8NmffuP7RYgUp+hX00czWFFMFQHaCfHwciNAWgdT9zoO2oEMG+5rpZs+0/p+oA== X-Virus-Scanned: Proofpoint Essentials engine Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11022079.outbound.protection.outlook.com [52.101.43.79]) (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 C5E6C90007F; Fri, 16 Oct 2026 00:58:34 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R2OSj2JGeInIRfqNUjOZLxKyYOoIOu3kRPLGXjNiK2qYwfN6p9FcXTFN7s1o0x52ZgyEyu66CpQeg+Ed3SLsu5b5XzDxxdijvYhum+tvXBU3nwmH7i8S1YRkCw2LScARA035mG7l6CSH4s2NxLgj/AiWW7LSFOJcQp+vatJy+wNj3J7F1IS9OOChGr9NoiLH6I29LdrnoEndiNjh6HZAciT5lu5KD73u+q2facBSRHk+tVTWRSTklXDMQww/4B5BMfEzHIOchRQ08f77DqWhLlQyxYlhEKBNI0ZBKHLIMyVP+gHZIEofJ1HKPxlrbS5Tb3rcffOVjNnWIfOARsPNVw== 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=L5AYiha7HWowHB2nS+iM16HAYTkiDe4miHz6on6kJ10=; b=yDs2Xng3tHj0JmkZ9fhy9+WJ/btsZByXNzyn/lMfynqwOL7FQC4zMN0u/gmMHVh8tgE9MpfvbEmtgGQDi4YWILaghdB0hBptaovDW6vvNTYsZdBh3XsNOHp43gu3YAbU0fHfPc8S4D/J3UGbdBES73jxECda7a+bxJvPPHFsOv0WXEc8NIycY1bDQDw28z5sty8Oy7/cCtv1y6FuNw8O+AfctxNaygmMXRmthbiO/9blvV4GRRocAFTZslg22hrL5GJAkguojc4+Nr5INKR+FXXP0iqNckG8J88Bi4TPVj1rcxiVdeVJwoEBAXZtEYYXjCk55FBMytOZR3JWmgm12w== 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=L5AYiha7HWowHB2nS+iM16HAYTkiDe4miHz6on6kJ10=; b=ArQUEWQ+eEyfyGJ0mJO/G5YSOCXkYBwE9EXr9Ifa95QOm2fYHv5/im8dH/RlnK7gvijhdHmNEMUPEVTvbr2YYH4+zHx1cs52IEVGQcKijrshEAtReG0Lns32Ye1ajhJ+HYM17YBxyz7vwUUybPrh3LrtODTuVFGo1PQ6kFp7IwIJPooiwdUn7aSqxqsnamKx9G4tLuQz8JauGiVyLSO3ZpnDBg5PiLeJTyo5mxQUFP/MauhU1Nto65TNeRwuI7Qullss30n/Op0+3m2TZ/kLG0RFtzyTCMw2RQze52ui0hO3wqoR2Prs23GC2kdHQ7uN6cAvLll9Gb8N66hBb5Oddg== 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:32 +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:32 +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 12/12] dpll: sit9531x: model the inter-PLL sync net as a pair of pins Thread-Topic: [PATCH net-next v14 12/12] dpll: sit9531x: model the inter-PLL sync net as a pair of pins Thread-Index: AQHdXQl2GPVilbDam0G4FOmt+3PTUQ== Date: Fri, 16 Oct 2026 00:58:32 +0000 Message-ID: <20261016005823.13690-13-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: abf2f152-3b49-4bbe-3a19-08df2b209955 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|260925022911599003|5023799004|260925021911599003|260925021311599003|261009223027099003|38070700021|56012099006; x-microsoft-antispam-message-info: 2kcIcMzQJLQ7jUAGm5PSav2hEph/mX1F3cNxSocBPGbCz4XriEGbqBKsgAi1fuZKFWVlWxgPeXmLXpsa5LO9F3q4Lw/D4f1jCWJtEtd7MXt9BzFCVipqLU8y31TzeOOsfOmAMmonKokzExtE7n2UP2Rynwbfzkp/yli5ZIdVxlWkoHLvZsEnpozsLeqW+tsvXGIB0mtQkG7Y17p6V9tRISjl+7Jd2NuGSYFq3QjpdCLYDQZ94XVTpw+x1wkdDhUYy2alO/BtzQ3kgiXPePeALHlf25IRxzlwOU3lqUq5mNVnPBXLS9Mo7IzYhXzi9t3UXDzer6fjdxZBwqyWIEngOMQpGDycgRIkIZ1hNgohgfgalHho1gop6ez/NIrmMXwooUTq6v++L3VlmokRGBP790u7oGm5J/TnEXH6iOVlfyxxYzTods/oqNgmxtjD9LxuM8sM9kYv4FvpcDt3G+lui+uTTw6zHMs7PcWPYBRYt0tZIMlVJF0BdYy1JKfrOGjaNuW16+77hBImIb+fxtlM/MX/DIoY4W0AKf2dsyRen3maHIcgh3N/uKupKvV3P5o+IWSAW5l5Ien+B0EACwf3ErENcSkpQJFnJYVR89RMj6wnslX1tCw6bv2utpoKS3tWdX6JePzu7bRaT9h6/cgZLA4ckzFTGOskoRyqVAoy5UBg1aOF6dyeVgbugg2nYiTUa1fdVRCIEVxdU9Br96DXnISty7Dsx5JAudRwKvEuN6E= 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)(260925022911599003)(5023799004)(260925021911599003)(260925021311599003)(261009223027099003)(38070700021)(56012099006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QThYVDRvdk1lY0RtNUFVNGRadGdGVEVEMDJmSGxDcE93U2RaUmkyRFRyd05n?= =?utf-8?B?S1Bwejh1RjgzWTFHcTVrWFM4TTdKMkJMa0VCSzhHZW95bGN2a1lOUHBidWRy?= =?utf-8?B?Z3hRcWgrQnMwaDVjRldCSFNxdWZ2RGhmSXR2MWZiaFEwNWJGdEtNRlM4R3h5?= =?utf-8?B?SjhoQkxlZEhMYlBjdFk2d3lRMVA1YmpSaXlkcXZzYldZRVZyUnJlYkY1aTRN?= =?utf-8?B?NXlPM1BESGpxa1FrNVVDVGgxTnZ6dFd6L1VxYUswUDhJbXV2RVBJdTczOGtC?= =?utf-8?B?bkZEY1FEK25Ed1M1dDhwMDFoTi9vL3NVR1VnUnM4c3VZdG1DQXlPd1A3M0dY?= =?utf-8?B?elFienkzdmhxeXdMQWlpT1JzNUJRUUdUUElndTF3bGNhcm1lT1VKcnJtTkpa?= =?utf-8?B?dW9YR1V5RWxMd3V0TmdtbGNRR2NhejJsV3dXOHRCMFphbDhTMUlQa1hrYUR6?= =?utf-8?B?bDlOdVVSbUNzRlhJelVlaU1HTG9oVzJQZEJhOG9xbkVhNnFWUkdjTVNVVXR0?= =?utf-8?B?UnY4UVArcjdJaE9xQjA4TDlCTi9MZHZCdEZKdnZ0YUViVWVmaGJ6MFU1UERx?= =?utf-8?B?MGFHSjc3V01rb3FwTlZzN1hlWURSaENieVBJYmV1S3FZa0ZPNnYyNTJLUmhQ?= =?utf-8?B?cXhHcE95and5c2Qza2prZVppTWo2WTA5RGZ0eG9DaXBWUnh5cXAyUUhEZGt4?= =?utf-8?B?UXEvZ05oZGUxT0pQSG9qek91dUs0dWZ2WmVqblVkamF2TkpyRE1aRTlQM1RH?= =?utf-8?B?QnVTVjlUYXljaTlmR1RaN1U2Y05LWHg4RW91Vno1Wm90UFE2anppd0t2dzNP?= =?utf-8?B?OU9CQzJjSXZxd3RmZS9ucUtvaTA3ZElqb2lhLzlINWU2WW1QTktTSVFmaFlI?= =?utf-8?B?c2VHbm1KT1lHalhTZStFWXMzazVIbHZUWXo5RXJJNzFZaHJWQUZKeXVOOWlV?= =?utf-8?B?Wm9kMkdhNkJNVzFSWHNYTnp1Q3BmajRMQXdYMHFqbnM1dDJ6N2MwMWdoNG1M?= =?utf-8?B?ZmJZZjNsWC8wdUg3NExXRzQ4ZjdrVG1hNjJCdW9vc1dXaTBOd2t0WVdITTZD?= =?utf-8?B?enFXTUc3ZHBEVCtBR3Z6aXNLWkFzdW9QUS8rSlhaUlV1YTVNemxxYmtwZE1i?= =?utf-8?B?OWJBOEVkQnQxNDBMK25UeHd2elE4d0lENTNaQ3crRGdlK3lEeDlueXFzV2t4?= =?utf-8?B?d1oyU0hmUFlXQkZVUFN1a0xnTUlndGpEWFFjUmNWNXdXZytYNmlBS1V4aXJz?= =?utf-8?B?bEpkZUlnZlBiWjVYZlpKcGk3RVkrUm9HOGYyMlcvRjFxQzAyVm1iRzdtZUhF?= =?utf-8?B?S3hhTjZrdGdQa1ZDdjh6YVorT2VWbUtseHE5cDg3QkNiVk9MNThpdEx1RWt2?= =?utf-8?B?cXdtOTEyeWpNeE9xMVhFb1BiRjBDNC80S1dwK2laMUV5dmtnTWxlNlY1NHJp?= =?utf-8?B?UytjVVU2TWxHOVJHMWFhL0gvNzROMzZjUzNZVFJudnJjK2kyeVNtUTQyRWN6?= =?utf-8?B?ZU9YYTgwSlFBQ1VlT0x0UHpXV1ZuMHo0R256eDZocnRoemt1QmpuMlF2TklP?= =?utf-8?B?R2FHd3dqajNvSGhXb1dTOUpQVWhSTDdBQWJFb3MzaFhUR2lrNEg5NkJScWht?= =?utf-8?B?YXRxUEFkd0pSeXdZRmtrSitpZ1cwcGNaM0VDZTRaaG1nenJUQk9Rcjk0NlFw?= =?utf-8?B?Y2d3YjYzTWRDdWlVdUw3TlRtVWtqdGRzZXZsMEZZclBTL3pRSlFvQ0hrdEZx?= =?utf-8?B?bmM3RHhoZWVrRHF1VXphQWoydHgvcVZWbWNmTTA1ZmRrWTVKTXkwaWdPM2sr?= =?utf-8?B?QzVYbXE5VWUxZlJlb0VrNVVkNXFMUWVJaXBubmFZK3o2MGg0MElJcE95c3hr?= =?utf-8?B?Tk5Jdkt1WFRVZVFoWWxkZm92cXJLdnRtNGRFZGdPRnhNNXkxZjhqbkxxZXlI?= =?utf-8?B?ekRQQTNRc0NnSFpWUmRBMXE2OFBCMVhjallFK2tuMlF6TWtXdTdTaXlINDNz?= =?utf-8?B?UDByaWxqMlhmem9FTlFVMEpVa2NQNWhYVWlaakd6SFo3MFRJTDQxaVNaWjV3?= =?utf-8?B?amRlaitSSEJoek9ycG5hZW9ob2RnOWtKbG9JbUVyQytoWklxQlpvRUtjcDh4?= =?utf-8?B?UHNETFdFYWNTMmhSbXJWalhyVnN6MkVYeDBSYmhFMFJGb3gwQjdsQVh5eWc4?= =?utf-8?B?Z25GRzNEZkVxYS9FSEJxeXBGNEpGU0hvaGt6cm1YMVg2YTVidHpVS1gvbDdJ?= =?utf-8?B?LzdScFpuVGp5MVAxMHlUQk5uSjBydWI1Tk9SdEMwaWRBTmhrSkNvMkgyOTJi?= =?utf-8?Q?tMtRBY4taJr2in5Uag?= 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: bhutQSd33E5fVTMSkCsDqVyXR0F91iaeSIine6JKlQ7LwLvmnOp75jGpb20k9a24gkHZt+p486ty0UGfxZ1YLTa8Wvvtadz0TvFUFNb2tAB0VApCHvCAL5A/L8TiYKaCerG/I3wcEL6unUuZJjvvxAAPvg6gZJWV9XXVWLzOjhjngdNEHQ3e9Jxv/Ab7xzjvls/f6igYGHe/VzFVkkTfDTbcvHgS1moCUrYOW4K06p/3lE+Z/HdrksK+nrTvJI+4rDHWSbB5GINC+OGMHos3tvg33uZzhmkX9wRWJSCEUfWi6VNRIZtlMj/YvEP2zpUlcJtOJJ9pFjWQaEh8ZnFItw== 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: abf2f152-3b49-4bbe-3a19-08df2b209955 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2026 00:58:32.1211 (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: SLxsb4QNfDTPc5KbxKknwYp21dJ4fyHebx/dqA+Z9/vJqdRSIutWIp6Dnxo551p/0hv68+LgWiJtkD9V87suhQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR20MB995299 X-MDID: 1792112315-IJyFqcV4j4sf X-PPE-STACK: {"stack":"us1"} X-MDID-O: us1;at1;1792112315;IJyFqcV4j4sf;;ba04557de9d2da8490f5f1e6de07b967 X-PPE-TRUSTED: V=1;DIR=OUT; RnJvbTogT2xlZyBaYWRvcm96aG55aSA8T2xlZy5aYWRvcm96aG55aUBkZXZveHNvZnR3YXJlLmNv bT4KClRoZSBkZXZpY2UgaGFzIGFuIGludGVybmFsIG5ldCBieSB3aGljaCBvbmUgUExMIGNhbiBk cml2ZSB0aGUgb3RoZXJzOiB0aGUKc291cmNlIFBMTCBwdXRzIGl0cyBvdXRwdXQgb24gaXQsIGFu ZCBhbnkgb3RoZXIgUExMIGNhbiBzZWxlY3QgaXQgYXMgYQpyZWZlcmVuY2UgaW5zdGVhZCBvZiBh biBleHRlcm5hbCBpbnB1dC4gIFRoZSB0d28gZW5kcyBhcmUgbm90aGluZyBhbGlrZSAtLQpvbmUg aXMgZHJpdmVuLCB0aGUgb3RoZXIgaXMgc2VsZWN0ZWQgLS0gc28gdGhleSBhcmUgdHdvIHBpbnMg cmF0aGVyIHRoYW4Kb25lOiBhbiBvdXRwdXQgcGluIG9uIHRoZSBzb3VyY2UgYW5kIGFuIGlucHV0 IHBpbiBvbiBlYWNoIGRlc3RpbmF0aW9uLgoKVGhhdCBrZWVwcyBlYWNoIHBpbiBob25lc3QgYWJv dXQgd2hhdCBpdHMgc3RhdGUgbWVhbnMuICBUaGUgc291cmNlIHBpbgpyZXBvcnRzIHdoZXRoZXIg dGhpcyBQTEwgaXMgdGhlIG9uZSBkcml2aW5nIHRoZSBuZXQsIGFuZCBzZXR0aW5nIGl0IHRha2Vz CnRoZSBuZXQgb3ZlciBvciBnaXZlcyBpdCB1cDsgYSBkZXN0aW5hdGlvbiBwaW4gcmVwb3J0cyB3 aGV0aGVyIGl0cyBQTEwgaGFzCnNlbGVjdGVkIHRoZSBuZXQsIGFuZCBiZWhhdmVzIGxpa2UgYW55 IG90aGVyIHNlbGVjdGFibGUgaW5wdXQuICBBIHNpbmdsZQpwaW4gd291bGQgaGF2ZSBoYWQgdG8g YW5zd2VyIGJvdGggcXVlc3Rpb25zIGF0IG9uY2UgYW5kIGNvdWxkIG9ubHkgaGF2ZQpiZWVuIHJp Z2h0IGFib3V0IG9uZSBvZiB0aGVtLgoKQSBkZXN0aW5hdGlvbiBwaW4gd2hvc2UgbmV0IG5vIFBM TCBkcml2ZXMgcmVwb3J0cyBubyBzaWduYWwsIGFzIGFuCmV4dGVybmFsIGlucHV0IHRoYXQgbG9z dCBpdHMgY2xvY2sgZG9lcy4gIEEgc291cmNlIHRoYXQgZmFpbGVkIHRvIHRha2UKdGhlIG5ldCBv dmVyLCBvciB3aG9zZSBjb25maWd1cmF0aW9uIHRoZSBzY2FuIGZvdW5kIG9ubHkgcGFydGx5IGlu CnBsYWNlLCBpcyByZWNvcmRlZCBhcyBhIHBhcnRpYWwgb3duZXIsIHNvIGEgcmV0cnkgcmUtcnVu cyB0aGUgZW5hYmxlCmluc3RlYWQgb2YgYmVpbmcgcmVmdXNlZCBhcyBidXN5OyBnaXZpbmcgdGhl IG5ldCB1cCByZXN0b3JlcyB0aGUgZ2xvYmFsCmVuYWJsZSBvbmx5IHdoaWxlIHRoZSBuZXQgaXMg c3RpbGwgY29uZmlndXJlZCwgYW5kIHRoZSByZXN0b3JlIGlzCmxhdGNoZWQgYXMgZXZlcnkgb3Ro ZXIgd3JpdGUgdG8gdGhhdCByZWdpc3RlciBpcy4gIEEgZmFpbGVkIHJlcXVlc3QKdGhhdCBtb3Zl ZCB0aGUgb3duZXIgaXMgYW5ub3VuY2VkLiAgT3duZXJzaGlwIGFuZCB0aGUgb3V0cHV0IG11dGVz IGFyZQpyZWFkIGJhY2sgZnJvbSB0aGUgcGFydCBvbiByZXN1bWUuCgpTaWduZWQtb2ZmLWJ5OiBP bGVnIFphZG9yb3pobnlpIDxPbGVnLlphZG9yb3pobnlpQGRldm94c29mdHdhcmUuY29tPgpBc3Np c3RlZC1ieTogTExNClNpZ25lZC1vZmYtYnk6IEFsaSBSb3VoaSA8YXJvdWhpQHNpdGltZS5jb20+ Ci0tLQogZHJpdmVycy9kcGxsL3NpdDk1MzF4L2NvcmUuYyB8IDQxNSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCiBkcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29yZS5oIHwgIDEwICsKIGRy aXZlcnMvZHBsbC9zaXQ5NTMxeC9kcGxsLmMgfCA0NjEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIGRyaXZlcnMvZHBsbC9zaXQ5NTMxeC9yZWdzLmggfCAgIDMgKwogNCBmaWxl cyBjaGFuZ2VkLCA4NzkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2NvcmUuYyBiL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9j b3JlLmMKaW5kZXggMTA2MDlkNDZhN2UxLi43ZGU2NTg0YWNlYTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmMKKysrIGIvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2NvcmUu YwpAQCAtMzA1NCw2ICszMDU0LDM4MSBAQCBzdGF0aWMgaW50IHNpdDk1MzF4X2NsZWFyX25vdGlm aWNhdGlvbnMoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2KQogCXJldHVybiAwOwogfQogCisv KgorICogQ2xvc2UgdGhlIGRlYnVnIHdpbmRvdyBvbiBhIFBMTCdzIEVYVCBwYWdlLiAgVGhlIGtl eSByZWdpc3RlciBvcGVucworICogZXZlcnkgZGVidWcgcmVnaXN0ZXIgb24gdGhhdCBwYWdlIHdo aWxlIGl0IGhvbGRzIHRoZSB1bmxvY2sgdmFsdWUuCisgKi8KK3N0YXRpYyBpbnQgc2l0OTUzMXhf aW50c3luY19kZWJ1Z19sb2NrKHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwgdTggZXh0X3Bh Z2UpCit7CisJcmV0dXJuIHNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwKKwkJCQkgU0lUOTUzMVhf UkVHKGV4dF9wYWdlLCBTSVQ5NTMxWF9QTExfUkVHX0RFQlVHKSwKKwkJCQkgU0lUOTUzMVhfUExM X0RFQlVHX0xPQ0spOworfQorCisvKgorICogSU5UU1lOQyBjb25maWd1cmF0aW9uIHJlZ2lzdGVy IHZhbHVlcy4KKyAqIFRoZXNlIGFyZSB3cml0dGVuIHRvIHRoZSBzb3VyY2UgUExMJ3MgRVhUIHBh Z2UgdG8gZW5hYmxlL2Rpc2FibGUKKyAqIGludGVyLVBMTCBzeW5jaHJvbml6YXRpb24gKGxvY2sg ZnJlcXVlbmN5IFBMTCB0byBwaGFzZSBQTEwpLgorICovCitzdHJ1Y3Qgc2l0OTUzMXhfaW50c3lu Y19yZWcgeworCXU4IG9mZnNldDsKKwl1OCBlbl92YWw7CisJdTggZGlzX3ZhbDsKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc2l0OTUzMXhfaW50c3luY19yZWcgaW50c3luY19jb25maWdbXSA9 IHsKKwl7IDB4MkQsIDB4MDIsIDB4MDAgfSwKKwl7IDB4NTAsIDB4MDgsIDB4MDAgfSwKKwl7IDB4 NTEsIDB4MDQsIDB4MDAgfSwKKwl7IDB4NTQsIDB4MDIsIDB4MDAgfSwKKwl7IDB4NTUsIDB4Mjgs IDB4MjAgfSwKKwl7IDB4NUMsIDB4MEYsIDB4MDAgfSwKKwl7IDB4NUQsIDB4RkYsIDB4MDAgfSwK Kwl7IDB4NkMsIDB4REQsIDB4MDAgfSwKK307CisKK2ludCBzaXQ5NTMxeF9pbnRzeW5jX3NyY19k ZXRlY3Qoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2KQoreworCXM4IHNyYyA9IC0xLCBwYXJ0 aWFsID0gLTE7CisJaW50IHJjLCByZXQsIG5fZW4sIG5fZGlzOworCXU4IHBsbCwgZXh0X3BhZ2U7 CisJdW5zaWduZWQgaW50IGk7CisJdTggZ2xvYmFsOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm c2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCisJcmMgPSBzaXQ5NTMxeF9yZWFkX3U4KHNpdGRldiwg U0lUOTUzMVhfUkVHX0lOVFNZTkNfR0xPQkFMLCAmZ2xvYmFsKTsKKwlpZiAocmMpCisJCXJldHVy biByYzsKKworCWlmICghKGdsb2JhbCAmIEJJVChTSVQ5NTMxWF9JTlRTWU5DX0VOX0JJVCkpKSB7 CisJCXNpdGRldi0+aW50c3luY19zcmMgPSAtMTsKKwkJc2l0ZGV2LT5pbnRzeW5jX3BhcnRpYWwg PSBmYWxzZTsKKwkJcmV0dXJuIDA7CisJfQorCisJZm9yIChwbGwgPSAwOyBwbGwgPCBTSVQ5NTMx WF9OVU1fUExMUzsgcGxsKyspIHsKKwkJZXh0X3BhZ2UgPSBTSVQ5NTMxWF9QTExfRVhUX1BBR0Uo cGxsKTsKKworCQkvKgorCQkgKiBUaGVzZSBhcmUgZGVidWcgcmVnaXN0ZXJzLCB3aGljaCB0aGUg ZW5hYmxlIGFuZCBkaXNhYmxlCisJCSAqIHNlcXVlbmNlcyBvbmx5IHRvdWNoIHdpdGggdGhlIEVY VCBwYWdlJ3MgZGVidWcgd2luZG93CisJCSAqIG9wZW47IHJlYWQgdGhlbSB0aGUgc2FtZSB3YXku CisJCSAqLworCQlyYyA9IHNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwKKwkJCQkgICAgICAgU0lU OTUzMVhfUkVHKGV4dF9wYWdlLAorCQkJCQkJICAgIFNJVDk1MzFYX1BMTF9SRUdfREVCVUcpLAor CQkJCSAgICAgICBTSVQ5NTMxWF9QTExfREVCVUdfVU5MT0NLKTsKKwkJaWYgKHJjKQorCQkJcmV0 dXJuIHJjOworCisJCW5fZW4gPSAwOworCQluX2RpcyA9IDA7CisJCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGludHN5bmNfY29uZmlnKTsgaSsrKSB7CisJCQl1MTYgcmVnOworCQkJdTggdmFs OworCisJCQlyZWcgPSBTSVQ5NTMxWF9SRUcoZXh0X3BhZ2UsIGludHN5bmNfY29uZmlnW2ldLm9m ZnNldCk7CisKKwkJCXJjID0gc2l0OTUzMXhfcmVhZF91OChzaXRkZXYsIHJlZywgJnZhbCk7CisJ CQlpZiAocmMpCisJCQkJYnJlYWs7CisJCQlpZiAodmFsID09IGludHN5bmNfY29uZmlnW2ldLmVu X3ZhbCkKKwkJCQluX2VuKys7CisJCQllbHNlIGlmICh2YWwgPT0gaW50c3luY19jb25maWdbaV0u ZGlzX3ZhbCkKKwkJCQluX2RpcysrOworCQl9CisKKwkJcmV0ID0gc2l0OTUzMXhfaW50c3luY19k ZWJ1Z19sb2NrKHNpdGRldiwgZXh0X3BhZ2UpOworCQlpZiAoIXJjKQorCQkJcmMgPSByZXQ7CisJ CWlmIChyYykKKwkJCXJldHVybiByYzsKKworCQlpZiAobl9lbiA9PSBBUlJBWV9TSVpFKGludHN5 bmNfY29uZmlnKSkgeworCQkJLyoKKwkJCSAqIE9ubHkgb25lIFBMTCBjYW4gZHJpdmUgdGhlIG5l dC4gIElmIGEgc2Vjb25kCisJCQkgKiBvbmUgbWF0Y2hlcywgdGhlIHJlZ2lzdGVycyBhcmUgbm90 IGRlc2NyaWJpbmcKKwkJCSAqIGEgc3RhdGUgdGhpcyBkcml2ZXIgcHV0IHRoZSBkZXZpY2UgaW4s IHNvIHNheQorCQkJICogc28gcmF0aGVyIHRoYW4gcGljayBzaWxlbnRseS4KKwkJCSAqLworCQkJ aWYgKHNyYyA8IDApCisJCQkJc3JjID0gcGxsOworCQkJZWxzZQorCQkJCWRldl93YXJuKHNpdGRl di0+ZGV2LAorCQkJCQkgIlBMTCVjIGFsc28gbWF0Y2hlcyB0aGUgSU5UU1lOQyBzb3VyY2UgcGF0 dGVybjsga2VlcGluZyBQTEwlY1xuIiwKKwkJCQkJICdBJyArIHBsbCwgJ0EnICsgc3JjKTsKKwkJ fSBlbHNlIGlmIChuX2VuICYmIG5fZGlzICYmCisJCQkgICBuX2VuICsgbl9kaXMgPT0gQVJSQVlf U0laRShpbnRzeW5jX2NvbmZpZykgJiYKKwkJCSAgIHBhcnRpYWwgPCAwKSB7CisJCQkvKgorCQkJ ICogRXZlcnkgcmVnaXN0ZXIgaG9sZHMgb25lIG9mIHRoZSB0d28gcGF0dGVybnMgYW5kIGJvdGgK KwkJCSAqIG9jY3VyOiB0aGUgcmVzaWR1ZSBvZiBhbiBlbmFibGUgb3IgYSBkaXNhYmxlIHRoYXQK KwkJCSAqIHN0b3BwZWQgcGFydCB3YXksIGFuZCBub3RoaW5nIGEgcHJvZmlsZSB3cml0ZXMuCisJ CQkgKi8KKwkJCXBhcnRpYWwgPSBwbGw7CisJCX0KKwl9CisKKwkvKgorCSAqIEFuIGVuYWJsZSBv ciBhIGRpc2FibGUgdGhhdCBzdG9wcGVkIHBhcnQgd2F5IGxlYXZlcyBhIFBMTCBob2xkaW5nCisJ ICogYSBtaXggb2YgdGhlIHR3byBwYXR0ZXJucy4gIFRyZWF0IGl0IGFzIHRoZSBvd25lciwgc28g dGhhdCBhbm90aGVyCisJICogUExMIGNhbm5vdCBiZSBlbmFibGVkIG9uIHRvcCBvZiB0aGUgbGVm dG92ZXIgY29uZmlndXJhdGlvbiwgYnV0CisJICogcmVjb3JkIHRoYXQgaXQgaXMgcGFydGlhbDog YSByZXBlYXRlZCBjb25uZWN0IG9uIHRoYXQgUExMIG11c3QgcnVuCisJICogdGhlIGVuYWJsZSBh Z2FpbiByYXRoZXIgdGhhbiB0YWtlIHRoZSBQTEwgZm9yIGNvbmZpZ3VyZWQsIGFuZCBhCisJICog cmVwZWF0ZWQgZGlzY29ubmVjdCBydW5zIHRoZSBkaXNhYmxlIGFnYWluLgorCSAqLworCXNpdGRl di0+aW50c3luY19wYXJ0aWFsID0gc3JjIDwgMCAmJiBwYXJ0aWFsID49IDA7CisJaWYgKHNpdGRl di0+aW50c3luY19wYXJ0aWFsKSB7CisJCWRldl93YXJuKHNpdGRldi0+ZGV2LAorCQkJICJQTEwl YyBob2xkcyBhIHBhcnRpYWwgSU5UU1lOQyBzb3VyY2UgY29uZmlndXJhdGlvblxuIiwKKwkJCSAn QScgKyBwYXJ0aWFsKTsKKwkJc3JjID0gcGFydGlhbDsKKwl9CisKKwlzaXRkZXYtPmludHN5bmNf c3JjID0gc3JjOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19zaXQ5NTMxeF9pbnRz eW5jX2Rpc2FibGUoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LAorCQkJCSAgICAgIHU4IHNy Y19wbGxfaWR4LCBib29sIHJlc3RvcmUpOworCisvKgorICogc2l0OTUzMXhfaW50c3luY19lbmFi bGUgLSBlbmFibGUgaW50ZXItUExMIHN5bmNocm9uaXphdGlvbgorICogQHNyY19wbGxfaWR4OiBz b3VyY2UgKGZyZXF1ZW5jeSkgUExMIGluZGV4ICgwLTMpCisgKgorICogRW5hYmxlcyBJTlRTWU5D IGdsb2JhbCBiaXQsIHVubG9ja3MgdGhlIHNvdXJjZSBQTEwncyBFWFQgcGFnZQorICogZGVidWcg cmVnaXN0ZXJzLCB3cml0ZXMgY29uZmlndXJhdGlvbiwgYW5kIHRyaWdnZXJzIGEgc21hbGwKKyAq IHVwZGF0ZSBvbiB0aGUgc291cmNlIFBMTC4KKyAqCisgKiBDYWxsZXIgbXVzdCBob2xkIHNpdGRl di0+bXVsdGlvcF9sb2NrLgorICovCitpbnQgc2l0OTUzMXhfaW50c3luY19lbmFibGUoc3RydWN0 IHNpdDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBzcmNfcGxsX2lkeCkKK3sKKwl1OCBleHRfcGFnZSwg dmFsOworCWludCByYywgbG9ja19yYzsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCWlmIChzcmNfcGxsX2lkeCA+PSBT SVQ5NTMxWF9OVU1fUExMUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlleHRfcGFnZSA9IFNJVDk1 MzFYX1BMTF9FWFRfUEFHRShzcmNfcGxsX2lkeCk7CisKKwlyYyA9IHNpdDk1MzF4X3JlYWRfdTgo c2l0ZGV2LCBTSVQ5NTMxWF9SRUdfSU5UU1lOQ19HTE9CQUwsICZ2YWwpOworCWlmIChyYykKKwkJ cmV0dXJuIHJjOworCXJjID0gc2l0OTUzMXhfd3JpdGVfdTgoc2l0ZGV2LCBTSVQ5NTMxWF9SRUdf SU5UU1lOQ19HTE9CQUwsCisJCQkgICAgICAgdmFsIHwgQklUKFNJVDk1MzFYX0lOVFNZTkNfRU5f QklUKSk7CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisKKwkvKiBTbWFsbCB1cGRhdGUgb24gUGFn ZSAwICovCisJcmMgPSBzaXQ5NTMxeF93cml0ZV91OChzaXRkZXYsIFNJVDk1MzFYX1JFR19HTE9C QUxfVVBEQVRFLAorCQkJICAgICAgIFNJVDk1MzFYX1NNQUxMX1VQREFURV9DTUQpOworCXVzbGVl cF9yYW5nZSgxMDAwLCAyMDAwKTsKKwlpZiAocmMpCisJCWdvdG8gcmVsb2NrX2VycjsKKworCS8q IFVubG9jayBkZWJ1ZyBvbiBFWFQgcGFnZSAqLworCXJjID0gc2l0OTUzMXhfd3JpdGVfdTgoc2l0 ZGV2LAorCQkJICAgICAgIFNJVDk1MzFYX1JFRyhleHRfcGFnZSwKKwkJCQkJICAgIFNJVDk1MzFY X1BMTF9SRUdfREVCVUcpLAorCQkJICAgICAgIFNJVDk1MzFYX1BMTF9ERUJVR19VTkxPQ0spOwor CWlmIChyYykKKwkJZ290byByZWxvY2tfZXJyOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoaW50c3luY19jb25maWcpOyBpKyspIHsKKwkJcmMgPSBzaXQ5NTMxeF93cml0ZV91OChzaXRk ZXYsCisJCQkJICAgICAgIFNJVDk1MzFYX1JFRyhleHRfcGFnZSwKKwkJCQkJCSAgICBpbnRzeW5j X2NvbmZpZ1tpXS5vZmZzZXQpLAorCQkJCSAgICAgICBpbnRzeW5jX2NvbmZpZ1tpXS5lbl92YWwp OworCQlpZiAocmMpCisJCQlnb3RvIHJlbG9ja19lcnI7CisJfQorCisJLyogU21hbGwgdXBkYXRl IG9uIHNvdXJjZSBQTEwgKi8KKwlyYyA9IHNpdDk1MzF4X3BsbF9zbWFsbF91cGRhdGUoc2l0ZGV2 LCBzcmNfcGxsX2lkeCk7CisJaWYgKHJjKQorCQlnb3RvIHJlbG9ja19lcnI7CisKKwlyYyA9IDA7 CisJZ290byByZWxvY2s7CisKK3JlbG9ja19lcnI6CisJc2l0OTUzMXhfaW50c3luY19kZWJ1Z19s b2NrKHNpdGRldiwgZXh0X3BhZ2UpOworCWdvdG8gZXJyX2Rpc2FibGU7CisKK3JlbG9jazoKKwkv KgorCSAqIENsb3NlIHRoZSBFWFQgcGFnZSBkZWJ1ZyB3aW5kb3cgdGhlIHNlcXVlbmNlIG9wZW5l ZC4gIE5vdGhpbmcKKwkgKiBlbHNlIHdyaXRlcyB0aGUga2V5IGJhY2ssIHNvIGxlYXZpbmcgaXQg b3BlbiB3b3VsZCBrZWVwIHRoZSBibG9jaworCSAqIHVubG9ja2VkIGZvciBhcyBsb25nIGFzIHRo ZSBkZXZpY2UgcnVucy4gIFRoZSBuZXQgaXMgZHJpdmVuIGJ5CisJICogbm93LCB0aG91Z2gsIHNv IGEgZmFpbHVyZSBoZXJlIG11c3Qgbm90IHJlYWQgYXMgYSBmYWlsZWQgZW5hYmxlOgorCSAqIHRo ZSBjYWxsZXIgd291bGQgdGhlbiBub3QgcmVjb3JkIHRoZSBvd25lciBvZiBhIG5ldCB0aGF0IGlz CisJICogZHJpdmVuLgorCSAqLworCWxvY2tfcmMgPSBzaXQ5NTMxeF9pbnRzeW5jX2RlYnVnX2xv Y2soc2l0ZGV2LCBleHRfcGFnZSk7CisJaWYgKGxvY2tfcmMpCisJCWRldl93YXJuKHNpdGRldi0+ ZGV2LAorCQkJICJQTEwlYzogSU5UU1lOQyBlbmFibGVkIGJ1dCB0aGUgZGVidWcgd2luZG93IHdh cyBsZWZ0IG9wZW46ICVkXG4iLAorCQkJICdBJyArIHNyY19wbGxfaWR4LCBsb2NrX3JjKTsKKwor CXJldHVybiByYzsKKworZXJyX2Rpc2FibGU6CisJLyoKKwkgKiBUaGUgZ2xvYmFsIGVuYWJsZSBp cyBhbHJlYWR5IHNldCBhdCB0aGlzIHBvaW50LiAgVGhlIGNhbGxlciBvbmx5CisJICogcmVjb3Jk cyB0aGUgc291cmNlIFBMTCB3aGVuIHRoaXMgZnVuY3Rpb24gc3VjY2VlZHMsIHNvIG5vdGhpbmcK KwkgKiBlbHNlIHdpbGwgZXZlciBjbGVhciB0aGUgYml0OiB1bmRvIGl0IGhlcmUgcmF0aGVyIHRo YW4gbGVhdmUgdGhlCisJICogbmV0IGFzc2VydGVkIHdpdGggYSBoYWxmLXdyaXR0ZW4gRVhUIHBh Z2UuICBUaGUgZGlzYWJsZSBtdXN0IG5vdAorCSAqIHB1dCB0aGUgYml0IGJhY2sgd2hlbiBpdCBm YWlscyBwYXJ0IHdheSwgYXMgaXQgZG9lcyBmb3IgYQorCSAqIGRpc2Nvbm5lY3Q6IGhlcmUgdGhl IGJpdCBpcyB3aGF0IHRoZSByb2xsYmFjayBzZXQgb3V0IHRvIGNsZWFyLAorCSAqIGFuZCByZXN0 b3JpbmcgaXQgd291bGQgbGVhdmUgdGhlIG5ldCBhc3NlcnRlZCB3aXRoIG5vIFBMTAorCSAqIG1h dGNoaW5nIHRoZSBzb3VyY2UgcGF0dGVybiwgd2hpY2ggbm8gb3duZXIgb24gcmVjb3JkIHdvdWxk IGV2ZXIKKwkgKiBjbGVhci4KKwkgKi8KKwl7CisJCWludCByb2xsYmFja19yYzsKKworCQlyb2xs YmFja19yYyA9IF9fc2l0OTUzMXhfaW50c3luY19kaXNhYmxlKHNpdGRldiwgc3JjX3BsbF9pZHgs CisJCQkJCQkJIGZhbHNlKTsKKwkJaWYgKHJvbGxiYWNrX3JjKQorCQkJZGV2X3dhcm4oc2l0ZGV2 LT5kZXYsCisJCQkJICJJTlRTWU5DIHJvbGxiYWNrIGZhaWxlZCBhZnRlciBlbmFibGUgZXJyb3I6 ICVkIChvcmlnaW5hbCAlZClcbiIsCisJCQkJIHJvbGxiYWNrX3JjLCByYyk7CisJfQorCisJcmV0 dXJuIHJjOworfQorCisvKgorICogVGhlIGRpc2FibGUgc2VxdWVuY2UuICBAcmVzdG9yZSBzYXlz IHdoZXRoZXIgYSBmYWlsdXJlIGJlZm9yZSB0aGUgRVhUCisgKiBwYWdlIGhvbGRzIHRoZSBkaXNh YmxlIHBhdHRlcm4gcHV0cyB0aGUgZ2xvYmFsIGVuYWJsZSBiYWNrLCB3aGljaCBhCisgKiBkaXNj b25uZWN0IHdhbnRzIChzZWUgcmVzdG9yZV9nbG9iYWwgYmVsb3cpIGFuZCB0aGUgcm9sbGJhY2sg b2YgYQorICogZmFpbGVkIGVuYWJsZSBkb2VzIG5vdC4KKyAqLworc3RhdGljIGludCBfX3NpdDk1 MzF4X2ludHN5bmNfZGlzYWJsZShzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsCisJCQkJICAg ICAgdTggc3JjX3BsbF9pZHgsIGJvb2wgcmVzdG9yZSkKK3sKKwl1OCBleHRfcGFnZSwgdmFsOwor CWludCByYywgbG9ja19yYzsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCWlmIChzcmNfcGxsX2lkeCA+PSBTSVQ5NTMx WF9OVU1fUExMUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlleHRfcGFnZSA9IFNJVDk1MzFYX1BM TF9FWFRfUEFHRShzcmNfcGxsX2lkeCk7CisKKwlyYyA9IHNpdDk1MzF4X3JlYWRfdTgoc2l0ZGV2 LCBTSVQ5NTMxWF9SRUdfSU5UU1lOQ19HTE9CQUwsICZ2YWwpOworCWlmIChyYykKKwkJcmV0dXJu IHJjOworCXJjID0gc2l0OTUzMXhfd3JpdGVfdTgoc2l0ZGV2LCBTSVQ5NTMxWF9SRUdfSU5UU1lO Q19HTE9CQUwsCisJCQkgICAgICAgdmFsICYgfkJJVChTSVQ5NTMxWF9JTlRTWU5DX0VOX0JJVCkp OworCWlmIChyYykKKwkJZ290byByZXN0b3JlX2dsb2JhbDsKKworCS8qIFNtYWxsIHVwZGF0ZSBv biBQYWdlIDAgKi8KKwlyYyA9IHNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwgU0lUOTUzMVhfUkVH X0dMT0JBTF9VUERBVEUsCisJCQkgICAgICAgU0lUOTUzMVhfU01BTExfVVBEQVRFX0NNRCk7CisJ dXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWlmIChyYykKKwkJZ290byByZXN0b3JlX2dsb2Jh bDsKKworCS8qIFVubG9jayBkZWJ1ZyBvbiBFWFQgcGFnZSAqLworCXJjID0gc2l0OTUzMXhfd3Jp dGVfdTgoc2l0ZGV2LAorCQkJICAgICAgIFNJVDk1MzFYX1JFRyhleHRfcGFnZSwKKwkJCQkJICAg IFNJVDk1MzFYX1BMTF9SRUdfREVCVUcpLAorCQkJICAgICAgIFNJVDk1MzFYX1BMTF9ERUJVR19V TkxPQ0spOworCWlmIChyYykKKwkJZ290byByZXN0b3JlX2dsb2JhbDsKKworCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGludHN5bmNfY29uZmlnKTsgaSsrKSB7CisJCXJjID0gc2l0OTUzMXhf d3JpdGVfdTgoc2l0ZGV2LAorCQkJCSAgICAgICBTSVQ5NTMxWF9SRUcoZXh0X3BhZ2UsCisJCQkJ CQkgICAgaW50c3luY19jb25maWdbaV0ub2Zmc2V0KSwKKwkJCQkgICAgICAgaW50c3luY19jb25m aWdbaV0uZGlzX3ZhbCk7CisJCWlmIChyYykKKwkJCWdvdG8gcmVzdG9yZV9nbG9iYWw7CisJfQor CisJLyoKKwkgKiBTbWFsbCB1cGRhdGUgb24gc291cmNlIFBMTC4gIFRoZSBnbG9iYWwgZW5hYmxl IGlzIGxhdGNoZWQgb2ZmIGFuZAorCSAqIGV2ZXJ5IHJlZ2lzdGVyIGhvbGRzIHRoZSBkaXNhYmxl IHZhbHVlIGJ5IG5vdywgc28gdGhlIG5ldCBpcyBub3QKKwkgKiBkcml2ZW4gd2hldGhlciBvciBu b3QgdGhpcyBsYXRjaCB3ZW50IHRocm91Z2guICBQdXR0aW5nIHRoZSBiaXQKKwkgKiBiYWNrIGZv ciBhIGZhaWx1cmUgaGVyZSB3b3VsZCBkZXNjcmliZSB0aGUgbmV0IGFzIGRyaXZlbiB3aXRoIG5v CisJICogUExMIG1hdGNoaW5nIHRoZSBzb3VyY2UgcGF0dGVybjogdGhlIGRldGVjdG9yIHdvdWxk IHJlY29yZCBubworCSAqIG93bmVyLCBhbmQgbm90aGluZyB3b3VsZCBldmVyIGNsZWFyIHRoZSBi aXQuCisJICovCisJcmMgPSBzaXQ5NTMxeF9wbGxfc21hbGxfdXBkYXRlKHNpdGRldiwgc3JjX3Bs bF9pZHgpOworCisJZ290byByZWxvY2s7CisKK3Jlc3RvcmVfZ2xvYmFsOgorCS8qCisJICogVGhl IGdsb2JhbCBlbmFibGUgd2FzIGNsZWFyZWQgZmlyc3QsIHNvIGEgZmFpbHVyZSBoZXJlIGxlYXZl cyB0aGUKKwkgKiBFWFQgcGFnZSBzdGlsbCBob2xkaW5nIHRoZSBlbmFibGUgcGF0dGVybiB3aXRo IG5vdGhpbmcgcG9pbnRpbmcKKwkgKiBhdCBpdDogdGhlIHNvdXJjZSBkZXRlY3RvciBrZXlzIG9u IHRoZSBnbG9iYWwgYml0LCB3b3VsZCByZXBvcnQKKwkgKiB0aGUgbmV0IGFzIHVub3duZWQsIGFu ZCBhIHJldHJ5IG9mIHRoZSBkaXNhYmxlIHdvdWxkIHRoZW4KKwkgKiBzaG9ydC1jaXJjdWl0LiAg UHV0IHRoZSBiaXQgYmFjayBzbyB0aGUgc3RhdGUgc3RheXMgb25lIHRoZQorCSAqIGRyaXZlciBj YW4gZGVzY3JpYmUgYW5kIHRoZSByZXF1ZXN0IGNhbiBiZSByZXBlYXRlZC4KKwkgKi8KKwlpZiAo cmVzdG9yZSAmJgorCSAgICAhc2l0OTUzMXhfcmVhZF91OChzaXRkZXYsIFNJVDk1MzFYX1JFR19J TlRTWU5DX0dMT0JBTCwgJnZhbCkgJiYKKwkgICAgIXNpdDk1MzF4X3dyaXRlX3U4KHNpdGRldiwg U0lUOTUzMVhfUkVHX0lOVFNZTkNfR0xPQkFMLAorCQkJICAgICAgIHZhbCB8IEJJVChTSVQ5NTMx WF9JTlRTWU5DX0VOX0JJVCkpKSB7CisJCS8qCisJCSAqIEV2ZXJ5IHdyaXRlIG9mIHRoZSBnbG9i YWwgZW5hYmxlLCBoZXJlIGFuZCBpbiBTaVRpbWUncworCQkgKiBzZXF1ZW5jZXMsIGlzIGZvbGxv d2VkIGJ5IHRoZSBwYWdlLTAgc21hbGwgdXBkYXRlIHRoYXQKKwkJICogYXBwbGllcyBpdC4gIFdp dGhvdXQgaXQgdGhlIGJpdCB3b3VsZCBzaXQgcGVuZGluZyB1bnRpbAorCQkgKiBhbiB1bnJlbGF0 ZWQgY29tbWl0IHRocm91Z2ggdGhlIHNhbWUgdXBkYXRlIHJlZ2lzdGVyCisJCSAqIGFwcGxpZWQg aXQsIHJlLWFzc2VydGluZyB0aGUgbmV0IG92ZXIgYSBoYWxmLXdyaXR0ZW4KKwkJICogRVhUIHBh Z2Ugd2l0aCBub2JvZHkgaGF2aW5nIGFza2VkLgorCQkgKi8KKwkJc2l0OTUzMXhfd3JpdGVfdTgo c2l0ZGV2LCBTSVQ5NTMxWF9SRUdfR0xPQkFMX1VQREFURSwKKwkJCQkgIFNJVDk1MzFYX1NNQUxM X1VQREFURV9DTUQpOworCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisJfQorCityZWxvY2s6 CisJLyoKKwkgKiBDbG9zZSB0aGUgRVhUIHBhZ2UgZGVidWcgd2luZG93IHRoZSBzZXF1ZW5jZSBv cGVuZWQuICBBZnRlciBhCisJICogZGlzYWJsZSB0aGF0IHRvb2sgZWZmZWN0LCBhIGZhaWx1cmUg aGVyZSBpcyBhIHdhcm5pbmcsIGZvciB0aGUKKwkgKiBzYW1lIHJlYXNvbiBhcyBpbiBzaXQ5NTMx eF9pbnRzeW5jX2VuYWJsZSgpLgorCSAqLworCWxvY2tfcmMgPSBzaXQ5NTMxeF9pbnRzeW5jX2Rl YnVnX2xvY2soc2l0ZGV2LCBleHRfcGFnZSk7CisJaWYgKGxvY2tfcmMpIHsKKwkJaWYgKHJjKQor CQkJZGV2X3dhcm4oc2l0ZGV2LT5kZXYsCisJCQkJICJQTEwlYzogZGVidWcgd2luZG93IGxlZnQg b3BlbjogJWRcbiIsCisJCQkJICdBJyArIHNyY19wbGxfaWR4LCBsb2NrX3JjKTsKKwkJZWxzZQor CQkJZGV2X3dhcm4oc2l0ZGV2LT5kZXYsCisJCQkJICJQTEwlYzogSU5UU1lOQyBkaXNhYmxlZCBi dXQgdGhlIGRlYnVnIHdpbmRvdyB3YXMgbGVmdCBvcGVuOiAlZFxuIiwKKwkJCQkgJ0EnICsgc3Jj X3BsbF9pZHgsIGxvY2tfcmMpOworCX0KKworCXJldHVybiByYzsKK30KKworLyoKKyAqIHNpdDk1 MzF4X2ludHN5bmNfZGlzYWJsZSAtIGRpc2FibGUgaW50ZXItUExMIHN5bmNocm9uaXphdGlvbgor ICogQHNyY19wbGxfaWR4OiBzb3VyY2UgKGZyZXF1ZW5jeSkgUExMIGluZGV4ICgwLTMpCisgKgor ICogQ2xlYXJzIElOVFNZTkMgZ2xvYmFsIGJpdCwgd3JpdGVzIGRpc2FibGUgdmFsdWVzIHRvIHRo ZSBzb3VyY2UKKyAqIFBMTCdzIEVYVCBwYWdlLCBhbmQgdHJpZ2dlcnMgYSBzbWFsbCB1cGRhdGUu CisgKgorICogQ2FsbGVyIG11c3QgaG9sZCBzaXRkZXYtPm11bHRpb3BfbG9jay4KKyAqLworaW50 IHNpdDk1MzF4X2ludHN5bmNfZGlzYWJsZShzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsIHU4 IHNyY19wbGxfaWR4KQoreworCXJldHVybiBfX3NpdDk1MzF4X2ludHN5bmNfZGlzYWJsZShzaXRk ZXYsIHNyY19wbGxfaWR4LCB0cnVlKTsKK30KKwogLyoqCiAgKiBzaXQ5NTMxeF9waGFzZV9vZmZz ZXRfcmVhZCAtIHJlYWQgcGhhc2UgZGlmZmVyZW5jZSB2aWEgVERDCiAgKiBAc2l0ZGV2OglkZXZp Y2UgcG9pbnRlcgpAQCAtMzcwNSw2ICs0MDgwLDE1IEBAIHN0YXRpYyBpbnQgc2l0OTUzMXhfZGV2 X3N0YXRlX2ZldGNoKHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldikKIAkJcmV0dXJuIHJjOwog CX0KIAorCW11dGV4X2xvY2soJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKwlyYyA9IHNpdDk1MzF4 X2ludHN5bmNfc3JjX2RldGVjdChzaXRkZXYpOworCW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0 aW9wX2xvY2spOworCWlmIChyYykgeworCQlkZXZfZXJyKHNpdGRldi0+ZGV2LAorCQkJIkZhaWxl ZCB0byBkZXRlY3QgSU5UU1lOQyBzb3VyY2U6ICVkXG4iLCByYyk7CisJCXJldHVybiByYzsKKwl9 CisKIAlmb3IgKGkgPSAwOyBpIDwgc2l0ZGV2LT5pbmZvLT5udW1fb3V0cHV0czsgaSsrKSB7CiAJ CWJvb2wgY2xhbXBlZDsKIAkJczMyIHBoYXNlX3BzOwpAQCAtNDQ1MiwxMyArNDgzNiwxMyBAQCBz dGF0aWMgYm9vbCBzaXQ5NTMxeF9kcGxsX3Bpbl9pc19yZWdpc3RyYWJsZShzdHJ1Y3Qgc2l0OTUz MXhfZHBsbCAqc2l0ZHBsbCwKIAkJaWYgKGluZGV4ID09IFNJVDk1MzFYX01BWF9JTlBVVFMpCiAJ CQlyZXR1cm4gdHJ1ZTsKIAkJaWYgKGluZGV4ID09IFNJVDk1MzFYX0lOVFNZTkNfUElOX0lEKQot CQkJcmV0dXJuIGZhbHNlOworCQkJcmV0dXJuIHRydWU7CiAKIAkJcmV0dXJuIHNpdDk1MzF4X2lu cHV0X3Bpbl9pc19yZWdpc3RyYWJsZShzaXRkZXYsIGluZGV4KTsKIAl9CiAKIAlpZiAoaW5kZXgg PT0gU0lUOTUzMVhfSU5UU1lOQ19PVVRfUElOX0lEKQotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVy biB0cnVlOwogCiAJaWYgKGluZGV4ID49IHNpdGRldi0+aW5mby0+bnVtX291dHB1dHMpCiAJCXJl dHVybiBmYWxzZTsKQEAgLTQ4OTQsOCArNTI3OCwzNSBAQCBzdGF0aWMgaW50IHNpdDk1MzF4X3N1 c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogc3RhdGljIGludCBzaXQ5NTMxeF9yZXN1bWUoc3Ry dWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOworCWludCByYzsKKwl1OCBpOwogCiAJc2l0OTUzMXhfcGFnZV9jYWNo ZV9kcm9wKHNpdGRldik7CisKKwkvKgorCSAqIEEgcGFydCB0aGF0IGxvc3QgcG93ZXIgYWNyb3Nz IHN1c3BlbmQgY29tZXMgYmFjayB3aXRoIGl0cworCSAqIHByb2ZpbGUncyBJTlRTWU5DIHJvdXRp bmcgYW5kIG91dHB1dCBtdXRlcywgbm90IHdpdGggd2hhdCB0aGUKKwkgKiBjYWNoZXMgc2F5LCBh bmQgdGhlIHBvbGwgd2F0Y2hlcyBuZWl0aGVyLiAgUmVhZCB0aGVtIGJhY2sgaGVyZTsKKwkgKiBh IGNhY2hlIHRoYXQgY2Fubm90IGJlIHJlYWQgaXMgbGVmdCBmb3IgdGhlIGdldHRlcidzIHJlYWQt dGhyb3VnaC4KKwkgKiBOb3RoaW5nIHJhY2VzIHRoaXM6IHRoZSBwb2xsIGlzIHBhcmtlZCBhbmQg dGhlIElSUSBkaXNhYmxlZC4KKwkgKi8KKwltdXRleF9sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9j ayk7CisJcmMgPSBzaXQ5NTMxeF9pbnRzeW5jX3NyY19kZXRlY3Qoc2l0ZGV2KTsKKwlpZiAocmMp CisJCWRldl93YXJuKHNpdGRldi0+ZGV2LAorCQkJICJJTlRTWU5DIHNvdXJjZSBub3QgcmUtZGV0 ZWN0ZWQgb24gcmVzdW1lOiAlZFxuIiwgcmMpOworCXNpdGRldi0+aW50c3luY19zdGFsZSA9IHJj ICE9IDA7CisJZm9yIChpID0gMDsgaSA8IHNpdGRldi0+aW5mby0+bnVtX291dHB1dHM7IGkrKykg eworCQlyYyA9IHNpdDk1MzF4X291dHB1dF9zdGF0ZV9yZWZyZXNoKHNpdGRldiwgaSk7CisJCWlm IChyYykgeworCQkJZGV2X3dhcm4oc2l0ZGV2LT5kZXYsCisJCQkJICJPdXRwdXQgJXUgbXV0ZSBz dGF0ZSBub3QgcmVhZCBvbiByZXN1bWU6ICVkXG4iLAorCQkJCSBpLCByYyk7CisJCQlzaXRkZXYt Pm91dFtpXS5zdGF0ZV9zdGFsZSA9IHRydWU7CisJCX0KKwl9CisJbXV0ZXhfdW5sb2NrKCZzaXRk ZXYtPm11bHRpb3BfbG9jayk7CisKIAlpZiAoc2l0ZGV2LT5pcnEgPiAwKQogCQllbmFibGVfaXJx KHNpdGRldi0+aXJxKTsKIAlrdGhyZWFkX3F1ZXVlX2RlbGF5ZWRfd29yayhzaXRkZXYtPmt3b3Jr ZXIsICZzaXRkZXYtPndvcmssIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3NpdDk1MzF4 L2NvcmUuaCBiL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmgKaW5kZXggYjQ0MGUyZDYwMTFk Li44Nzc5MzczODdkZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmgK KysrIGIvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2NvcmUuaApAQCAtMjExLDYgKzIxMSwxMSBAQCBz dHJ1Y3Qgc2l0OTUzMXhfY2hhbiB7CiAgKgkJCUkyQyBjbGllbnQpLCAwIGlmIG5vIElSUSBpcyB3 aXJlZAogICogQGludHN5bmNfc3JjOglQTEwgaW5kZXggY3VycmVudGx5IHNvdXJjaW5nIGludGVy LVBMTAogICoJCQlzeW5jaHJvbml6YXRpb24gKElOVFNZTkMpLCBvciAtMSB3aGVuIGRpc2FibGVk CisgKiBAaW50c3luY19wYXJ0aWFsOglAaW50c3luY19zcmMgaG9sZHMgb25seSBwYXJ0IG9mIHRo ZSBzb3VyY2UKKyAqCQkJY29uZmlndXJhdGlvbiwgbGVmdCBieSBhbiBlbmFibGUgb3IgYSBkaXNh YmxlCisgKgkJCXRoYXQgc3RvcHBlZCBwYXJ0IHdheQorICogQGludHN5bmNfc3RhbGU6CUBpbnRz eW5jX3NyYyBjb3VsZCBub3QgYmUgcmVhZCBiYWNrIG9uIHJlc3VtZTsgdGhlCisgKgkJCW5leHQg SU5UU1lOQyBwaW4gZ2V0dGVyIG9yIHNldHRlciByZWFkcyBpdCB0aHJvdWdoCiAgKiBAaXJxX2Fj a19mYWlsczoJY29uc2VjdXRpdmUgZmFpbHVyZXMgdG8gYWNrbm93bGVkZ2UgdGhlCiAgKgkJCW5v dGlmaWNhdGlvbiBsYXRjaGVzIGZyb20gdGhlIGludGVycnVwdCBoYW5kbGVyCiAgKiBAZnZjb19i YW5kX3dhcm5lZDoJYml0IHBlciBQTEwgd2hvc2UgRnJlZiAqIERJVk4gaGFzIGJlZW4gcmVwb3J0 ZWQgYXMKQEAgLTI0OCw2ICsyNTMsOCBAQCBzdHJ1Y3Qgc2l0OTUzMXhfZGV2IHsKIAogCS8qIElu dGVyLVBMTCBzeW5jaHJvbml6YXRpb24gc3RhdGUgKi8KIAlzOAkJCWludHN5bmNfc3JjOworCWJv b2wJCQlpbnRzeW5jX3BhcnRpYWw7CisJYm9vbAkJCWludHN5bmNfc3RhbGU7CiAKIH07CiAKQEAg LTI5OCw2ICszMDUsOSBAQCBpbnQgc2l0OTUzMXhfb3V0cHV0X3BoYXNlX2FkanVzdF9zZXQoc3Ry dWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LAogCQkJCSAgICAgdTggb3V0X2lkeCwgczMyIHBoYXNl X3BzKTsKIAogLyogLS0tLSBJTlRTWU5DIChpbnRlci1QTEwgc3luY2hyb25pemF0aW9uKSAtLS0t ICovCitpbnQgc2l0OTUzMXhfaW50c3luY19lbmFibGUoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0 ZGV2LCB1OCBzcmNfcGxsX2lkeCk7CitpbnQgc2l0OTUzMXhfaW50c3luY19kaXNhYmxlKHN0cnVj dCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwgdTggc3JjX3BsbF9pZHgpOworaW50IHNpdDk1MzF4X2lu dHN5bmNfc3JjX2RldGVjdChzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYpOwogCiAvKiAtLS0t IFBoYXNlIG9mZnNldCAoVERDIHJlYWRiYWNrKSAtLS0tICovCiBpbnQgc2l0OTUzMXhfY2hhbl9y b3V0ZWRfcmVmX3JlYWQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LCB1OCBwbGxfaWR4LApk aWZmIC0tZ2l0IGEvZHJpdmVycy9kcGxsL3NpdDk1MzF4L2RwbGwuYyBiL2RyaXZlcnMvZHBsbC9z aXQ5NTMxeC9kcGxsLmMKaW5kZXggZGM4ZDg0MTMzYjcyLi45ODI2YWRiMzUzYzkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9kcGxsLmMKKysrIGIvZHJpdmVycy9kcGxsL3NpdDk1 MzF4L2RwbGwuYwpAQCAtMjcsNiArMjcsMjAgQEAgc3RhdGljIGJvb2wgc2l0OTUzMXhfZHBsbF9p c19pbnB1dF9waW4oY29uc3Qgc3RydWN0IHNpdDk1MzF4X2RwbGxfcGluICpwaW4pCiAJcmV0dXJu IHBpbi0+ZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVDsKIH0KIAorc3RhdGljIGJvb2wK K3NpdDk1MzF4X2RwbGxfaXNfaW50c3luY19waW4oY29uc3Qgc3RydWN0IHNpdDk1MzF4X2RwbGxf cGluICpwaW4pCit7CisJcmV0dXJuIHNpdDk1MzF4X2RwbGxfaXNfaW5wdXRfcGluKHBpbikgJiYK KwkgICAgICAgcGluLT5pZCA9PSBTSVQ5NTMxWF9JTlRTWU5DX1BJTl9JRDsKK30KKworc3RhdGlj IGJvb2wKK3NpdDk1MzF4X2RwbGxfaXNfaW50c3luY19zcmNfcGluKGNvbnN0IHN0cnVjdCBzaXQ5 NTMxeF9kcGxsX3BpbiAqcGluKQoreworCXJldHVybiAhc2l0OTUzMXhfZHBsbF9pc19pbnB1dF9w aW4ocGluKSAmJgorCSAgICAgICBwaW4tPmlkID09IFNJVDk1MzFYX0lOVFNZTkNfT1VUX1BJTl9J RDsKK30KKwogc3RhdGljIGJvb2wKIHNpdDk1MzF4X2RwbGxfaXNfeG9fcGluKGNvbnN0IHN0cnVj dCBzaXQ5NTMxeF9kcGxsX3BpbiAqcGluKQogewpAQCAtMzExLDYgKzMyNSw1OSBAQCBzaXQ5NTMx eF9kcGxsX3NlbGVjdGlvbl9zdGF0ZV9nZXQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LAog CQkqc3RhdGUgPSBEUExMX1BJTl9TVEFURV9ESVNDT05ORUNURUQ7CiB9CiAKKy8qCisgKiBEb2Vz IHRoZSBkZXZpY2UgZmVlZCBhIGxvY2tlZCBQTEwgZnJvbSB0aGUgSU5UU1lOQyBuZXQ/CisgKgor ICogQ2FsbGVyIG11c3QgaG9sZCBzaXRkZXYtPm11bHRpb3BfbG9jay4KKyAqLworc3RhdGljIGJv b2wgc2l0OTUzMXhfZHBsbF9pbnRzeW5jX3RyYWNrZWQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0 ZGV2KQoreworCWNvbnN0IHN0cnVjdCBzaXQ5NTMxeF9jaGFuICpjaGFuOworCXU4IHBsbDsKKwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCWZvciAocGxs ID0gMDsgcGxsIDwgU0lUOTUzMVhfTlVNX1BMTFM7IHBsbCsrKSB7CisJCWNoYW4gPSBzaXQ5NTMx eF9jaGFuX3N0YXRlX2dldChzaXRkZXYsIHBsbCk7CisJCWlmIChjaGFuLT5yb3V0ZWRfcmVmID09 IFNJVDk1MzFYX0lOVFNZTkNfUElOX0lEICYmCisJCSAgICBjaGFuLT5sb2NrZWQgJiYgIWNoYW4t PmhvX2ZyZWV6ZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwor LyoKKyAqIERvZXMgYSBzZWxlY3Rpb24tcm9sZSBwaW4gY2FycnkgYSBzaWduYWw/ICBBIHBoeXNp Y2FsIGlucHV0IGhhcyB0aGUKKyAqIGRldmljZSdzIExPUyBtb25pdG9yOyB0aGUgSU5UU1lOQyBu ZXQgaGFzIG5vIG1vbml0b3IsIGFuZCB3aGF0IHN0YW5kcyBpbgorICogZm9yIG9uZSBpcyB0aGUg ZHJpdmVyJ3MgcmVjb3JkIG9mIGEgUExMIGRyaXZpbmcgaXQuICBBIHBhcnRpYWwgc291cmNlCisg KiBjb25maWd1cmF0aW9uIGRvZXMgbm90IGNvdW50OiB0aGUgc291cmNlIHBpbiByZXBvcnRzIGl0 IGFzIG5vCisgKiBjb25uZWN0aW9uLCBhbmQgdGhlIG5ldCBpcyBub3QgY29uZmlybWVkIGRyaXZl bi4KKyAqCisgKiBDYWxsZXIgbXVzdCBob2xkIHNpdGRldi0+bXVsdGlvcF9sb2NrLgorICovCitz dGF0aWMgYm9vbAorc2l0OTUzMXhfZHBsbF9zZWxlY3Rpb25fbm9fc2lnbmFsKHN0cnVjdCBzaXQ5 NTMxeF9kZXYgKnNpdGRldiwgdTggcGluX2lkKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNp dGRldi0+bXVsdGlvcF9sb2NrKTsKKworCWlmIChwaW5faWQgPT0gU0lUOTUzMVhfSU5UU1lOQ19Q SU5fSUQpIHsKKwkJLyoKKwkJICogVGhlIGRyaXZlciBrbm93cyB0aGUgbmV0IGlzIGRyaXZlbiB3 aGVuIGl0IGVuYWJsZWQgdGhlCisJCSAqIHNvdXJjZSBpdHNlbGYgb3IgZm91bmQgdGhlIGNvbmZp Z3VyYXRpb24gaXQgd291bGQgaGF2ZQorCQkgKiB3cml0dGVuLiAgQSBwcm9maWxlIGNhbiBkcml2 ZSB0aGUgbmV0IHdpdGggYSBjb25maWd1cmF0aW9uCisJCSAqIG9mIGl0cyBvd247IHRoZW4gYSBQ TEwgdGhlIGRldmljZSBmZWVkcyBmcm9tIHRoZSBuZXQgYW5kCisJCSAqIGhvbGRzIGxvY2tlZCBp cyB0aGUgZXZpZGVuY2UgdGhhdCB0aGUgbmV0IGNhcnJpZXMgYSBzaWduYWwuCisJCSAqLworCQlp ZiAoc2l0ZGV2LT5pbnRzeW5jX3NyYyA+PSAwICYmICFzaXRkZXYtPmludHN5bmNfcGFydGlhbCkK KwkJCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuICFzaXQ5NTMxeF9kcGxsX2ludHN5bmNfdHJhY2tl ZChzaXRkZXYpOworCX0KKworCXJldHVybiBwaW5faWQgPCBzaXRkZXYtPmluZm8tPm51bV9pbnB1 dHMgJiYKKwkgICAgICAgc2l0OTUzMXhfcmVmX3N0YXRlX2dldChzaXRkZXYsIHBpbl9pZCktPmxv czsKK30KKwogLyoKICAqIElzIHRoaXMgdGhlIHJlZmVyZW5jZSB0aGUgUExMIGlzIHRyYWNraW5n IG5vdz8gIFNlZSB0aGUgUyAmJiBMICYmICFOCiAgKiBwcmVkaWNhdGUgaW4gdGhlIHBpbi1zdGF0 ZSBjb250cmFjdC4gIFRoaXMgaXMgYWxzbyB3aGF0IGdhdGVzIHRoZQpAQCAtMzM0LDExICs0MDEs MTAgQEAgc2l0OTUzMXhfZHBsbF9zZWxlY3Rpb25fYWN0aXZlKHN0cnVjdCBzaXQ5NTMxeF9kZXYg KnNpdGRldiwKIAogCS8qCiAJICogRmVkIHRvIHRoZSBQTEwgaXMgbm90IGxvY2tlZCB0bzogdGhl IGRldmljZSBuYW1lcyB0aGUgc291cmNlIGl0Ci0JICogcm91dGVzLCBhbmQgYSBsYW5lIHRoYXQg bG9zdCBpdHMgc2lnbmFsIGlzIG9uZSB0aGUgUExMIGlzIGFib3V0CisJICogcm91dGVzLCBhbmQg YSBzb3VyY2UgdGhhdCBsb3N0IGl0cyBzaWduYWwgaXMgb25lIHRoZSBQTEwgaXMgYWJvdXQKIAkg KiB0byBiZSBtb3ZlZCBvZmYsIHdoYXRldmVyIHRoZSBsb2NrIGJpdCBzdGlsbCBzYXlzLgogCSAq LwotCWlmIChwaW5faWQgPCBzaXRkZXYtPmluZm8tPm51bV9pbnB1dHMgJiYKLQkgICAgc2l0OTUz MXhfcmVmX3N0YXRlX2dldChzaXRkZXYsIHBpbl9pZCktPmxvcykKKwlpZiAoc2l0OTUzMXhfZHBs bF9zZWxlY3Rpb25fbm9fc2lnbmFsKHNpdGRldiwgcGluX2lkKSkKIAkJcmV0dXJuIGZhbHNlOwog CiAJcmV0dXJuIHRydWU7CkBAIC0zNjQsMTIgKzQzMCwxNyBAQCBzaXQ5NTMxeF9kcGxsX3NlbGVj dGlvbl9vcGVyc3RhdGVfZ2V0KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKIAkJcmV0dXJu OwogCX0KIAorCS8qCisJICogU3RhbmRieSBpcyBhIHF1YWxpZmllZCBzb3VyY2UgdGhlIFBMTCBp cyBub3QgdXNpbmcuICBBIG5ldCBub2JvZHkKKwkgKiBkcml2ZXMgaXMgbm8gbW9yZSB0aGF0IHRo YW4gYSBsYW5lIGluIExPUyBpcy4KKwkgKi8KKwlpZiAoc2l0OTUzMXhfZHBsbF9zZWxlY3Rpb25f bm9fc2lnbmFsKHNpdGRldiwgcGluX2lkKSkgeworCQkqb3BlcnN0YXRlID0gRFBMTF9QSU5fT1BF UlNUQVRFX05PX1NJR05BTDsKKwkJcmV0dXJuOworCX0KKwogCWlmIChwaW5faWQgPCBzaXRkZXYt PmluZm8tPm51bV9pbnB1dHMpIHsKIAkJcmVmID0gc2l0OTUzMXhfcmVmX3N0YXRlX2dldChzaXRk ZXYsIHBpbl9pZCk7Ci0JCWlmIChyZWYtPmxvcykgewotCQkJKm9wZXJzdGF0ZSA9IERQTExfUElO X09QRVJTVEFURV9OT19TSUdOQUw7Ci0JCQlyZXR1cm47Ci0JCX0KIAkJaWYgKHJlZi0+cXVhbF9m YWlsKSB7CiAJCQkqb3BlcnN0YXRlID0gRFBMTF9QSU5fT1BFUlNUQVRFX1FVQUxfRkFJTEVEOwog CQkJcmV0dXJuOwpAQCAtODY5LDggKzk0MCwzNzcgQEAgc2l0OTUzMXhfZHBsbF9vdXRwdXRfcGlu X2RpcmVjdGlvbl9nZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpwaW4sCiAJCQkJICAgICAgIGVu dW0gZHBsbF9waW5fZGlyZWN0aW9uICpkaXJlY3Rpb24sCiAJCQkJICAgICAgIHN0cnVjdCBuZXRs aW5rX2V4dF9hY2sgKmV4dGFjayk7CiAKKy8qCisgKiBEb2VzIHRoaXMgUExMIGRyaXZlIHRoZSBJ TlRTWU5DIG5ldCB3aXRoIGEgY29tcGxldGUgY29uZmlndXJhdGlvbj8KKyAqIFdoYXQgdGhlIHNv dXJjZSBwaW4gcmVwb3J0cyBhcyBDT05ORUNURUQuCisgKgorICogQ2FsbGVyIG11c3QgaG9sZCBz aXRkZXYtPm11bHRpb3BfbG9jay4KKyAqLworc3RhdGljIGJvb2wKK3NpdDk1MzF4X2RwbGxfaW50 c3luY19zcmNfY29ubmVjdGVkKGNvbnN0IHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKKwkJ CQkgICAgY29uc3Qgc3RydWN0IHNpdDk1MzF4X2RwbGwgKnNpdGRwbGwpCit7CisJcmV0dXJuIHNp dGRldi0+aW50c3luY19zcmMgPT0gc2l0ZHBsbC0+aWQgJiYgIXNpdGRldi0+aW50c3luY19wYXJ0 aWFsOworfQorCisvKgorICogQSByZXN1bWUgdGhhdCBjb3VsZCBub3QgcmVhZCB0aGUgSU5UU1lO QyBzb3VyY2UgYmFjayBsZWF2ZXMgdGhlIGNhY2hlCisgKiBtYXJrZWQsIGFuZCB0aGUgZmlyc3Qg SU5UU1lOQyBwaW4gZ2V0dGVyIG9yIHNldHRlciByZWFkcyBpdCB0aHJvdWdoLCBzbworICogdGhl IHN0YXRlIHJlcG9ydGVkIGFuZCB0aGUgY2hlY2tzIGEgc2V0IG1ha2VzIGZvbGxvdyB0aGUgcGFy dCByYXRoZXIKKyAqIHRoYW4gdGhlIHZhbHVlIGZyb20gYmVmb3JlIHRoZSBzdXNwZW5kLiAgQ2Fs bGVyIGhvbGRzIG11bHRpb3BfbG9jay4KKyAqLworc3RhdGljIGludCBzaXQ5NTMxeF9kcGxsX2lu dHN5bmNfcmVmcmVzaChzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsCisJCQkJCSBzdHJ1Y3Qg bmV0bGlua19leHRfYWNrICpleHRhY2spCit7CisJaW50IHJjOworCisJaWYgKCFzaXRkZXYtPmlu dHN5bmNfc3RhbGUpCisJCXJldHVybiAwOworCisJcmMgPSBzaXQ5NTMxeF9pbnRzeW5jX3NyY19k ZXRlY3Qoc2l0ZGV2KTsKKwlpZiAocmMpIHsKKwkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAiSU5U U1lOQyBzb3VyY2UgY291bGQgbm90IGJlIHJlYWQgYmFjayIpOworCQlyZXR1cm4gcmM7CisJfQor CXNpdGRldi0+aW50c3luY19zdGFsZSA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQKK3NpdDk1MzF4X2RwbGxfaW50c3luY19zcmNfc3RhdGVfb25fZHBsbF9nZXQoY29uc3Qg c3RydWN0IGRwbGxfcGluICpwaW4sCisJCQkJCSAgICB2b2lkICpwaW5fcHJpdiwKKwkJCQkJICAg IGNvbnN0IHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwKKwkJCQkJICAgIHZvaWQgKmRwbGxfcHJp diwKKwkJCQkJICAgIGVudW0gZHBsbF9waW5fc3RhdGUgKnN0YXRlLAorCQkJCQkgICAgc3RydWN0 IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQoreworCXN0cnVjdCBzaXQ5NTMxeF9kcGxsICpzaXRk cGxsID0gZHBsbF9wcml2OworCXN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiA9IHNpdGRwbGwt PmRldjsKKwlpbnQgcmM7CisKKwltdXRleF9sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7CisJ cmMgPSBzaXQ5NTMxeF9kcGxsX2ludHN5bmNfcmVmcmVzaChzaXRkZXYsIGV4dGFjayk7CisJaWYg KHJjKSB7CisJCW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCQlyZXR1cm4g cmM7CisJfQorCWlmIChzaXQ5NTMxeF9kcGxsX2ludHN5bmNfc3JjX2Nvbm5lY3RlZChzaXRkZXYs IHNpdGRwbGwpKQorCQkqc3RhdGUgPSBEUExMX1BJTl9TVEFURV9DT05ORUNURUQ7CisJZWxzZQor CQkqc3RhdGUgPSBEUExMX1BJTl9TVEFURV9ESVNDT05ORUNURUQ7CisJbXV0ZXhfdW5sb2NrKCZz aXRkZXYtPm11bHRpb3BfbG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHNpdDk1MzF4 X2RwbGxfaW50c3luY19zcmNfc3RhdGVfb25fZHBsbF9zZXQgLSBkcml2ZSBJTlRTWU5DIGZyb20g YSBQTEwKKyAqCisgKiAgIENPTk5FQ1RFRCAgICAtPiB0aGlzIFBMTCBkcml2ZXMgdGhlIElOVFNZ TkMgbmV0CisgKiAgIERJU0NPTk5FQ1RFRCAtPiBzdG9wIGRyaXZpbmcgSU5UU1lOQyBpZiB0aGlz IFBMTCBkcml2ZXMgaXQKKyAqCisgKiBTRUxFQ1RBQkxFIGlzIHJlamVjdGVkOiBkcml2aW5nIHRo ZSBuZXQgaXMgYW4gZXhwbGljaXQgb3V0cHV0IHJvdXRpbmcsCisgKiBub3QgYW4gYXV0b21hdGlj LXNlbGVjdGlvbiBjYW5kaWRhdGUsIG1hdGNoaW5nIHRoZSByZWd1bGFyIG91dHB1dCBwaW4uCisg Ki8KK3N0YXRpYyBpbnQKK3NpdDk1MzF4X2RwbGxfaW50c3luY19zcmNfc3RhdGVfb25fZHBsbF9z ZXQoY29uc3Qgc3RydWN0IGRwbGxfcGluICpwaW4sCisJCQkJCSAgICB2b2lkICpwaW5fcHJpdiwK KwkJCQkJICAgIGNvbnN0IHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwKKwkJCQkJICAgIHZvaWQg KmRwbGxfcHJpdiwKKwkJCQkJICAgIGVudW0gZHBsbF9waW5fc3RhdGUgc3RhdGUsCisJCQkJCSAg ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCit7CisJc3RydWN0IHNpdDk1MzF4X2Rw bGxfcGluICpkcGluID0gcGluX3ByaXY7CisJc3RydWN0IHNpdDk1MzF4X2RwbGwgKnNpdGRwbGwg PSBkcGxsX3ByaXY7CisJc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2ID0gc2l0ZHBsbC0+ZGV2 OworCWludCByYyA9IDAsIGRldGVjdF9yYyA9IDA7CisJYm9vbCB3YXNfY29ubmVjdGVkLCBtb3Zl ZDsKKwlib29sIGNoYW5nZWQgPSBmYWxzZTsKKwl1OCBod19zcmM7CisKKwltdXRleF9sb2NrKCZz aXRkZXYtPm11bHRpb3BfbG9jayk7CisKKwlyYyA9IHNpdDk1MzF4X2RwbGxfaW50c3luY19yZWZy ZXNoKHNpdGRldiwgZXh0YWNrKTsKKwlpZiAocmMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZzaXRkZXYt Pm11bHRpb3BfbG9jayk7CisJCXJldHVybiByYzsKKwl9CisJd2FzX2Nvbm5lY3RlZCA9IHNpdDk1 MzF4X2RwbGxfaW50c3luY19zcmNfY29ubmVjdGVkKHNpdGRldiwgc2l0ZHBsbCk7CisKKwlzd2l0 Y2ggKHN0YXRlKSB7CisJY2FzZSBEUExMX1BJTl9TVEFURV9DT05ORUNURUQ6CisJCS8qCisJCSAq IEEgcGFydGlhbCBjb25maWd1cmF0aW9uIG9uIHRoaXMgUExMIGlzIG5vdCBhIGNvbm5lY3Rpb246 CisJCSAqIHJ1biB0aGUgZW5hYmxlIGFnYWluIHNvIGEgcmV0cnkgYWZ0ZXIgYSBmYWlsZWQgb25l IHJlcGFpcnMKKwkJICogdGhlIGRldmljZSBpbnN0ZWFkIG9mIHJlcG9ydGluZyBzdWNjZXNzIG92 ZXIgaXQuCisJCSAqLworCQlpZiAod2FzX2Nvbm5lY3RlZCkKKwkJCWJyZWFrOworCQlpZiAoc2l0 ZGV2LT5pbnRzeW5jX3NyYyA+PSAwICYmCisJCSAgICBzaXRkZXYtPmludHN5bmNfc3JjICE9IHNp dGRwbGwtPmlkKSB7CisJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCisJCQkJICAgICAgICJJTlRT WU5DIGlzIGFscmVhZHkgc291cmNlZCBieSBhbm90aGVyIFBMTCIpOworCQkJcmMgPSAtRUJVU1k7 CisJCQlicmVhazsKKwkJfQorCQkvKgorCQkgKiBBIFBMTCB0aGF0IGFscmVhZHkgbGlzdHMgSU5U U1lOQyBhbW9uZyBpdHMgcmVmZXJlbmNlcyBtdXN0CisJCSAqIG5vdCBhbHNvIGRyaXZlIGl0OiB0 aGUgZGVzdGluYXRpb24gc2lkZSByZWZ1c2VzIHRoZSBtaXJyb3IKKwkJICogb2YgdGhpcywgYW5k IHdpdGhvdXQgdGhlIGNoZWNrIGhlcmUgdGhlIG5ldCBjb3VsZCBiZSByb3V0ZWQKKwkJICogYmFj ayBpbnRvIHRoZSBQTEwgZmVlZGluZyBpdC4KKwkJICovCisJCWh3X3NyYyA9IHNpdDk1MzF4X2lu cHV0X2h3X3NyYyhTSVQ5NTMxWF9JTlRTWU5DX1BJTl9JRCk7CisJCWlmIChzaXQ5NTMxeF9pbnB1 dF9wcmlvX3ByZXNlbnQoc2l0ZGV2LCBzaXRkcGxsLT5pZCwgaHdfc3JjKSkgeworCQkJTkxfU0VU X0VSUl9NU0coZXh0YWNrLAorCQkJCSAgICAgICAiUExMIHNlbGVjdHMgSU5UU1lOQyBhcyBhIHJl ZmVyZW5jZTsgaXQgY2Fubm90IGRyaXZlIGl0Iik7CisJCQlyYyA9IC1FQlVTWTsKKwkJCWJyZWFr OworCQl9CisJCXJjID0gc2l0OTUzMXhfaW50c3luY19lbmFibGUoc2l0ZGV2LCBzaXRkcGxsLT5p ZCk7CisJCWNoYW5nZWQgPSB0cnVlOworCQlicmVhazsKKwljYXNlIERQTExfUElOX1NUQVRFX0RJ U0NPTk5FQ1RFRDoKKwkJaWYgKHNpdGRldi0+aW50c3luY19zcmMgIT0gc2l0ZHBsbC0+aWQpCisJ CQlicmVhazsKKwkJcmMgPSBzaXQ5NTMxeF9pbnRzeW5jX2Rpc2FibGUoc2l0ZGV2LCBzaXRkcGxs LT5pZCk7CisJCWNoYW5nZWQgPSB0cnVlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyYyA9IC1F SU5WQUw7CisJCWJyZWFrOworCX0KKworCS8qCisJICogUmVjb3JkIHdoYXQgd2FzIGRvbmUgYmVm b3JlIGNvbmZpcm1pbmcgaXQsIGFuZCBvbmx5IHdoZW4gdGhpcyBQTEwKKwkgKiBhY3R1YWxseSBj aGFuZ2VkOiB0aGUgY29yZSBmb3J3YXJkcyBhIHJlcXVlc3QgZm9yIHRoZSBzdGF0ZSB0aGUKKwkg KiBwaW4gaXMgYWxyZWFkeSBpbiwgYW5kIGEgRElTQ09OTkVDVEVEIG9uIGEgUExMIHRoYXQgbmV2 ZXIgZHJvdmUgdGhlCisJICogbmV0IG11c3Qgbm90IGVyYXNlIHRoZSBvd25lci4gIFRoZSByZWZy ZXNoIGJlbG93IGxlYXZlcyB0aGUgY2FjaGUKKwkgKiB1bnRvdWNoZWQgd2hlbiBhIHJlYWQgZmFp bHMsIGFuZCBhIGNhY2hlIHRoYXQgd3JvbmdseSBzYXlzIG5vYm9keQorCSAqIGRyaXZlcyB0aGUg bmV0IHdvdWxkIGxldCBhIHNlY29uZCBQTEwgYmUgY29uZmlndXJlZCB0byBkcml2ZSBpdC4KKwkg Ki8KKwlpZiAoY2hhbmdlZCAmJiAhcmMpIHsKKwkJc2l0ZGV2LT5pbnRzeW5jX3NyYyA9IHN0YXRl ID09IERQTExfUElOX1NUQVRFX0NPTk5FQ1RFRCA/CisJCQkJICAgICAgc2l0ZHBsbC0+aWQgOiAt MTsKKwkJc2l0ZGV2LT5pbnRzeW5jX3BhcnRpYWwgPSBmYWxzZTsKKwl9CisKKwkvKgorCSAqIFJl LXNjYW4gaGFyZHdhcmUgYWZ0ZXIgYSB0cmFuc2l0aW9uIHNvIHRoZSBjYWNoZSBmb2xsb3dzIGEK KwkgKiBwYXJ0aWFsbHkgZmFpbGVkIGVuYWJsZSBvciBkaXNhYmxlIGFzIGNsb3NlbHkgYXMgcG9z c2libGUuCisJICovCisJaWYgKGNoYW5nZWQpCisJCWRldGVjdF9yYyA9IHNpdDk1MzF4X2ludHN5 bmNfc3JjX2RldGVjdChzaXRkZXYpOworCS8qCisJICogQSBmYWlsZWQgZW5hYmxlIHRoYXQgdGhl IHNjYW4gc3RpbGwgZmluZHMgb24gdGhpcyBQTEwgaXMgcGFydGlhbAorCSAqIGV2ZW4gd2hlbiBl dmVyeSByZWdpc3RlciByZWFkcyB0aGUgZW5hYmxlIHBhdHRlcm46IHRoZSBzbWFsbAorCSAqIHVw ZGF0ZSB0aGF0IGNvbW1pdHMgaXQgbWF5IGJlIHRoZSBzdGVwIHRoYXQgZmFpbGVkLiAgTWFyayBp dCwgc28KKwkgKiBhIHJldHJpZWQgY29ubmVjdCBydW5zIHRoZSBlbmFibGUgYWdhaW4uCisJICoK KwkgKiBXaGVuIHRoZSBzY2FuIGl0c2VsZiBmYWlsZWQsIG5vdGhpbmcgc2F5cyBob3cgZmFyIHRo ZSBlbmFibGUgYW5kCisJICogaXRzIHJvbGxiYWNrIGdvdCwgYW5kIHRoZSBuZXQgbWF5IGJlIGRy aXZlbi4gIFJlY29yZCB0aGlzIFBMTCBhcworCSAqIHRoZSBwYXJ0aWFsIG93bmVyIHJhdGhlciB0 aGFuIGxlYXZlIHRoZSBjYWNoZSBzYXlpbmcgbm9ib2R5IGRyaXZlcworCSAqIHRoZSBuZXQsIHdo aWNoIHdvdWxkIGxldCBhIHNlY29uZCBQTEwgYmUgY29uZmlndXJlZCBvbiB0b3Agb2YgaXQuCisJ ICogQSBkaXNjb25uZWN0IG9uIHRoaXMgUExMIHJ1bnMgdGhlIGRpc2FibGUgYW5kIGEgc2NhbiB0 aGF0IHNldHRsZQorCSAqIHRoZSByZWNvcmQuCisJICovCisJaWYgKGNoYW5nZWQgJiYgcmMgJiYg c3RhdGUgPT0gRFBMTF9QSU5fU1RBVEVfQ09OTkVDVEVEICYmCisJICAgIChkZXRlY3RfcmMgfHwg c2l0ZGV2LT5pbnRzeW5jX3NyYyA9PSBzaXRkcGxsLT5pZCkpIHsKKwkJc2l0ZGV2LT5pbnRzeW5j X3NyYyA9IHNpdGRwbGwtPmlkOworCQlzaXRkZXYtPmludHN5bmNfcGFydGlhbCA9IHRydWU7CisJ fQorCS8qCisJICogVGhlIHJlZnJlc2ggb25seSByZS1yZWFkcyB3aGF0IHRoZSBkZXZpY2Ugbm93 IHNob3dzLiAgRmFpbGluZworCSAqIHRoZSByZXF1ZXN0IGJlY2F1c2UgdGhhdCByZWFkIGhpdCBh IGJ1cyBlcnJvciB3b3VsZCB0ZWxsCisJICogdXNlcnNwYWNlIHRoZSBlbmFibGUgZGlkIG5vdCBo YXBwZW4gd2hlbiBpdCBkaWQuCisJICovCisJaWYgKGRldGVjdF9yYykKKwkJZGV2X3dhcm4oc2l0 ZGV2LT5kZXYsCisJCQkgIklOVFNZTkMgc291cmNlIGNhY2hlIG5vdCByZWZyZXNoZWQ6ICVkXG4i LAorCQkJIGRldGVjdF9yYyk7CisKKwkvKgorCSAqIFdoYXQgdGhlIHBpbiByZXBvcnRzIG1heSBo YXZlIG1vdmVkIGFsdGhvdWdoIHRoZSByZXF1ZXN0IGZhaWxlZDoKKwkgKiBhIGRpc2FibGUgdGhh dCBzdG9wcGVkIGF0IGl0cyBsYXN0IHN0ZXAgbGVhdmVzIG5vdGhpbmcgZHJpdmluZworCSAqIHRo ZSBuZXQsIGEgZmFpbGVkIGVuYWJsZSBsZWF2ZXMgYSBwYXJ0aWFsIG93bmVyLiAgVGhlIGNvcmUK KwkgKiBub3RpZmllcyBvbmx5IGEgcmVxdWVzdCB0aGF0IHN1Y2NlZWRlZCBhbmQgdGhlIHBvbGwg ZG9lcyBub3QKKwkgKiB3YXRjaCB0aGlzIHBpbiwgc28gYW5ub3VuY2UgaXQgaGVyZSwgYXMgdGhl IG91dHB1dCBzZXR0ZXIgZG9lcy4KKwkgKi8KKwltb3ZlZCA9IHNpdDk1MzF4X2RwbGxfaW50c3lu Y19zcmNfY29ubmVjdGVkKHNpdGRldiwgc2l0ZHBsbCkgIT0KKwkJd2FzX2Nvbm5lY3RlZDsKKwor CW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCisJaWYgKHJjKSB7CisJCXN0 cnVjdCBkcGxsX3BpbiAqZHBsbF9waW47CisKKwkJaWYgKHJjICE9IC1FQlVTWSAmJiByYyAhPSAt RUlOVkFMICYmIHJjICE9IC1FT1BOT1RTVVBQKQorCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLAor CQkJCSAgICAgICAiRmFpbGVkIHRvIHNldCBJTlRTWU5DIHNvdXJjZSBzdGF0ZSIpOworCQkvKgor CQkgKiBUaGUgY29yZSdzIGxvY2sgaXMgaGVsZCBoZXJlLCBhcyB0aGUgaGVscGVyIHJlcXVpcmVz LgorCQkgKiBUZWFyZG93biBjbGVhcnMgdGhlIGhhbmRsZSBiZWZvcmUgaXQgdW5yZWdpc3RlcnMg dGhlIHBpbjsKKwkJICogc2VlIHRoZSBvdXRwdXQgc3RhdGUgc2V0dGVyLgorCQkgKi8KKwkJZHBs bF9waW4gPSBSRUFEX09OQ0UoZHBpbi0+ZHBsbF9waW4pOworCQlpZiAobW92ZWQgJiYgZHBsbF9w aW4pCisJCQlfX2RwbGxfcGluX2NoYW5nZV9udGYoZHBsbF9waW4pOworCX0KKworCXJldHVybiBy YzsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgc2l0OTUzMXhfZHBsbF9p bnRzeW5jX3NyY19waW5fb3BzID0geworCS5kaXJlY3Rpb25fZ2V0CQk9IHNpdDk1MzF4X2RwbGxf b3V0cHV0X3Bpbl9kaXJlY3Rpb25fZ2V0LAorCS5zdGF0ZV9vbl9kcGxsX2dldAk9IHNpdDk1MzF4 X2RwbGxfaW50c3luY19zcmNfc3RhdGVfb25fZHBsbF9nZXQsCisJLnN0YXRlX29uX2RwbGxfc2V0 CT0gc2l0OTUzMXhfZHBsbF9pbnRzeW5jX3NyY19zdGF0ZV9vbl9kcGxsX3NldCwKK307CisKIC8q IC0tLS0gSU5UU1lOQyBkZXN0aW5hdGlvbiAoaW5wdXQpIHBpbiAtLS0tICovCiAKKy8qCisgKiBz aXQ5NTMxeF9kcGxsX2ludHN5bmNfZHN0X3N0YXRlX29uX2RwbGxfZ2V0IC0gSU5UU1lOQyByZWZl cmVuY2Ugc3RhdGUKKyAqCisgKiBTZWxlY3Rpb24gcm9sZSwgc28gdGhlIGNvbnRyYWN0IGFib3Zl IGRlY2lkZXMgdGhpcyBleGFjdGx5IGFzIGl0IGRvZXMKKyAqIGZvciBhIHBoeXNpY2FsIGlucHV0 OiB0aGUgcHJpb3JpdHkgdGFibGUgaXMgdGhlIGVsaWdpYmlsaXR5IHJlY29yZCwgYW5kCisgKiB3 aGV0aGVyIGEgc291cmNlIFBMTCBoYXBwZW5zIHRvIGJlIGRyaXZpbmcgdGhlIG5ldCByaWdodCBu b3cgaXMgbm8gbW9yZQorICogYSBzdGF0ZSB0aGFuIGEgbW9tZW50YXJ5IExPUyBpcyBvbiBhbiBl eHRlcm5hbCByZWZlcmVuY2UuICBUaGUgb25lCisgKiBhZGRpdGlvbiBpcyB0aGF0IHRoZSBQTEwg ZHJpdmluZyBJTlRTWU5DIGlzIG5ldmVyIGl0cyBvd24gZGVzdGluYXRpb24uCisgKi8KK3N0YXRp YyBpbnQKK3NpdDk1MzF4X2RwbGxfaW50c3luY19kc3Rfc3RhdGVfb25fZHBsbF9nZXQoY29uc3Qg c3RydWN0IGRwbGxfcGluICpwaW4sCisJCQkJCSAgICB2b2lkICpwaW5fcHJpdiwKKwkJCQkJICAg IGNvbnN0IHN0cnVjdCBkcGxsX2RldmljZSAqZHBsbCwKKwkJCQkJICAgIHZvaWQgKmRwbGxfcHJp diwKKwkJCQkJICAgIGVudW0gZHBsbF9waW5fc3RhdGUgKnN0YXRlLAorCQkJCQkgICAgc3RydWN0 IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQoreworCXN0cnVjdCBzaXQ5NTMxeF9kcGxsICpzaXRk cGxsID0gZHBsbF9wcml2OworCXN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiA9IHNpdGRwbGwt PmRldjsKKwlpbnQgcmM7CisKKwltdXRleF9sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7CisJ cmMgPSBzaXQ5NTMxeF9kcGxsX2ludHN5bmNfcmVmcmVzaChzaXRkZXYsIGV4dGFjayk7CisJaWYg KHJjKSB7CisJCW11dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCQlyZXR1cm4g cmM7CisJfQorCWlmIChzaXRkZXYtPmludHN5bmNfc3JjID09IHNpdGRwbGwtPmlkKQorCQkqc3Rh dGUgPSBEUExMX1BJTl9TVEFURV9ESVNDT05ORUNURUQ7CisJZWxzZQorCQlzaXQ5NTMxeF9kcGxs X3NlbGVjdGlvbl9zdGF0ZV9nZXQoc2l0ZGV2LCBzaXRkcGxsLAorCQkJCQkJICBTSVQ5NTMxWF9J TlRTWU5DX1BJTl9JRCwKKwkJCQkJCSAgc3RhdGUpOworCW11dGV4X3VubG9jaygmc2l0ZGV2LT5t dWx0aW9wX2xvY2spOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBzaXQ5NTMxeF9kcGxsX2lu dHN5bmNfZHN0X3N0YXRlX29uX2RwbGxfc2V0IC0gbG9jayBhIFBMTCB0byBJTlRTWU5DCisgKgor ICogU2VsZWN0aW9uIHJvbGUsIHNvIHRoaXMgYWNjZXB0cyBhbmQgcmVmdXNlcyB3aGF0IGEgcGh5 c2ljYWwgaW5wdXQgZG9lcywKKyAqIENPTk5FQ1RFRCBpbmNsdWRlZDogdGhlIGRldmljZSBwaW5z IG5vIHJlZmVyZW5jZSBvbiByZXF1ZXN0IHdoaWNoZXZlcgorICogc291cmNlIGlzIGFza2VkIGZv ci4gIElOVFNZTkMgaXMgYW4gaW50ZXJuYWwgbmV0IHdpdGggbm8gcGh5c2ljYWwKKyAqIHJlY2Vp dmVyLCBzbyBvbmx5IHRoZSBwZXItUExMIHByaW9yaXR5IHRhYmxlIGlzIHRvdWNoZWQ7IHRoZSBz b3VyY2UgcGluCisgKiBjb250cm9scyBnZW5lcmF0aW9uLgorICovCitzdGF0aWMgaW50CitzaXQ5 NTMxeF9kcGxsX2ludHN5bmNfZHN0X3N0YXRlX29uX2RwbGxfc2V0KGNvbnN0IHN0cnVjdCBkcGxs X3BpbiAqcGluLAorCQkJCQkgICAgdm9pZCAqcGluX3ByaXYsCisJCQkJCSAgICBjb25zdCBzdHJ1 Y3QgZHBsbF9kZXZpY2UgKmRwbGwsCisJCQkJCSAgICB2b2lkICpkcGxsX3ByaXYsCisJCQkJCSAg ICBlbnVtIGRwbGxfcGluX3N0YXRlIHN0YXRlLAorCQkJCQkgICAgc3RydWN0IG5ldGxpbmtfZXh0 X2FjayAqZXh0YWNrKQoreworCXU4IGh3X3NyYyA9IHNpdDk1MzF4X2lucHV0X2h3X3NyYyhTSVQ5 NTMxWF9JTlRTWU5DX1BJTl9JRCk7CisJc3RydWN0IHNpdDk1MzF4X2RwbGwgKnNpdGRwbGwgPSBk cGxsX3ByaXY7CisJc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2ID0gc2l0ZHBsbC0+ZGV2Owor CWludCByYzsKKworCW11dGV4X2xvY2soJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKworCXJjID0g c2l0OTUzMXhfZHBsbF9pbnRzeW5jX3JlZnJlc2goc2l0ZGV2LCBleHRhY2spOworCWlmIChyYykg eworCQltdXRleF91bmxvY2soJnNpdGRldi0+bXVsdGlvcF9sb2NrKTsKKwkJcmV0dXJuIHJjOwor CX0KKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBEUExMX1BJTl9TVEFURV9ESVNDT05ORUNURUQ6 CisJCXJjID0gc2l0OTUzMXhfaW5wdXRfcHJpb19yZW1vdmUoc2l0ZGV2LCBzaXRkcGxsLT5pZCwg aHdfc3JjKTsKKwkJYnJlYWs7CisJY2FzZSBEUExMX1BJTl9TVEFURV9DT05ORUNURUQ6CisJCU5M X1NFVF9FUlJfTVNHKGV4dGFjaywKKwkJCSAgICAgICAiRGV2aWNlIHNlbGVjdHMgaXRzIHJlZmVy ZW5jZSBieSBwcmlvcml0eTsgdXNlIHNlbGVjdGFibGUiKTsKKwkJcmMgPSAtRU9QTk9UU1VQUDsK KwkJYnJlYWs7CisJY2FzZSBEUExMX1BJTl9TVEFURV9TRUxFQ1RBQkxFOgorCQlpZiAoc2l0ZGV2 LT5pbnRzeW5jX3NyYyA9PSBzaXRkcGxsLT5pZCkgeworCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNr LAorCQkJCSAgICAgICAiUExMIGNhbm5vdCBsb2NrIHRvIHRoZSBJTlRTWU5DIGl0IGRyaXZlcyIp OworCQkJcmMgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKwkJcmMgPSBzaXQ5NTMxeF9pbnB1 dF9wcmlvX2FkZChzaXRkZXYsIHNpdGRwbGwtPmlkLCBod19zcmMpOworCQlicmVhazsKKwlkZWZh dWx0OgorCQlyYyA9IC1FSU5WQUw7CisJCWJyZWFrOworCX0KKworCW11dGV4X3VubG9jaygmc2l0 ZGV2LT5tdWx0aW9wX2xvY2spOworCisJaWYgKHJjID09IC1FTk9TUEMpCisJCU5MX1NFVF9FUlJf TVNHKGV4dGFjaywKKwkJCSAgICAgICAiUHJpb3JpdHkgdGFibGUgaXMgZnVsbCBvZiB1bmlxdWUg c291cmNlcyBvbiB0aGlzIFBMTCIpOworCWVsc2UgaWYgKHJjICYmIHJjICE9IC1FSU5WQUwgJiYg cmMgIT0gLUVPUE5PVFNVUFApCisJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgIkZhaWxlZCB0byBz ZXQgSU5UU1lOQyBpbnB1dCBzdGF0ZSIpOworCisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50 CitzaXQ5NTMxeF9kcGxsX2ludHN5bmNfZHN0X29wZXJzdGF0ZV9vbl9kcGxsX2dldChjb25zdCBz dHJ1Y3QgZHBsbF9waW4gKnBpbiwKKwkJCQkJCXZvaWQgKnBpbl9wcml2LAorCQkJCQkJY29uc3Qg c3RydWN0IGRwbGxfZGV2aWNlICpkcGxsLAorCQkJCQkJdm9pZCAqZHBsbF9wcml2LAorCQkJCQkJ ZW51bSBkcGxsX3Bpbl9vcGVyc3RhdGUgKnN0YXRlLAorCQkJCQkJc3RydWN0IG5ldGxpbmtfZXh0 X2FjayAqZXh0YWNrKQoreworCXN0cnVjdCBzaXQ5NTMxeF9kcGxsICpzaXRkcGxsID0gZHBsbF9w cml2OworCXN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiA9IHNpdGRwbGwtPmRldjsKKwlpbnQg cmM7CisKKwltdXRleF9sb2NrKCZzaXRkZXYtPm11bHRpb3BfbG9jayk7CisJcmMgPSBzaXQ5NTMx eF9kcGxsX2ludHN5bmNfcmVmcmVzaChzaXRkZXYsIGV4dGFjayk7CisJaWYgKHJjKSB7CisJCW11 dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCQlyZXR1cm4gcmM7CisJfQorCXNp dDk1MzF4X2RwbGxfc2VsZWN0aW9uX29wZXJzdGF0ZV9nZXQoc2l0ZGV2LCBzaXRkcGxsLAorCQkJ CQkgICAgICBTSVQ5NTMxWF9JTlRTWU5DX1BJTl9JRCwKKwkJCQkJICAgICAgc3RhdGUpOworCW11 dGV4X3VubG9jaygmc2l0ZGV2LT5tdWx0aW9wX2xvY2spOworCisJcmV0dXJuIDA7Cit9CisKKy8q CisgKiBEbyBub3QgYWRkIC5mcmVxdWVuY3lfZ2V0IC8gdGhlIGdlbmVyaWMgaW5wdXQgc3RhdGUg Z2V0dGVyIGhlcmU6IHRoZQorICogZGVzdGluYXRpb24gcGluIGlkIGlzIFNJVDk1MzFYX0lOVFNZ TkNfUElOX0lELCBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZQorICogcmVmW10gYXJyYXkgKElOVFNZ TkMgaXMgYW4gaW50ZXJuYWwgbmV0IHdpdGggbm8gcmVmW10gZW50cnkpLiAgVGhlIG9wcworICog YmVsb3cgb25seSBldmVyIGtleSBvbiBjaGFuW10gYW5kIHRoZSBwcmlvcml0eSB0YWJsZSwgbmV2 ZXIgcmVmW2lkXS4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgc2l0OTUz MXhfZHBsbF9pbnRzeW5jX2RzdF9waW5fb3BzID0geworCS5kaXJlY3Rpb25fZ2V0CQk9IHNpdDk1 MzF4X2RwbGxfaW5wdXRfcGluX2RpcmVjdGlvbl9nZXQsCisJLnN0YXRlX29uX2RwbGxfZ2V0CT0g c2l0OTUzMXhfZHBsbF9pbnRzeW5jX2RzdF9zdGF0ZV9vbl9kcGxsX2dldCwKKwkuc3RhdGVfb25f ZHBsbF9zZXQJPSBzaXQ5NTMxeF9kcGxsX2ludHN5bmNfZHN0X3N0YXRlX29uX2RwbGxfc2V0LAor CS5vcGVyc3RhdGVfb25fZHBsbF9nZXQJPQorCQlzaXQ5NTMxeF9kcGxsX2ludHN5bmNfZHN0X29w ZXJzdGF0ZV9vbl9kcGxsX2dldCwKKwkucHJpb19nZXQJCT0gc2l0OTUzMXhfZHBsbF9pbnB1dF9w aW5fcHJpb19nZXQsCisJLnByaW9fc2V0CQk9IHNpdDk1MzF4X2RwbGxfaW5wdXRfcGluX3ByaW9f c2V0LAorfTsKKwogLyoKICAqIFhPIChjcnlzdGFsIG9zY2lsbGF0b3IpIHBpbiBvcHMKICAqCkBA IC0xMTk3LDggKzE2MzcsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMgc2l0 OTUzMXhfZHBsbF9vdXRwdXRfcGluX29wcyA9IHsKIGNvbnN0IHN0cnVjdCBkcGxsX3Bpbl9vcHMg Kgogc2l0OTUzMXhfZHBsbF9waW5fb3BzX2dldChjb25zdCBzdHJ1Y3Qgc2l0OTUzMXhfZHBsbF9w aW4gKnBpbikKIHsKLQlpZiAoIXNpdDk1MzF4X2RwbGxfaXNfaW5wdXRfcGluKHBpbikpCisJaWYg KCFzaXQ5NTMxeF9kcGxsX2lzX2lucHV0X3BpbihwaW4pKSB7CisJCWlmIChzaXQ5NTMxeF9kcGxs X2lzX2ludHN5bmNfc3JjX3BpbihwaW4pKQorCQkJcmV0dXJuICZzaXQ5NTMxeF9kcGxsX2ludHN5 bmNfc3JjX3Bpbl9vcHM7CiAJCXJldHVybiAmc2l0OTUzMXhfZHBsbF9vdXRwdXRfcGluX29wczsK Kwl9CisJaWYgKHNpdDk1MzF4X2RwbGxfaXNfaW50c3luY19waW4ocGluKSkKKwkJcmV0dXJuICZz aXQ5NTMxeF9kcGxsX2ludHN5bmNfZHN0X3Bpbl9vcHM7CiAJaWYgKHNpdDk1MzF4X2RwbGxfaXNf eG9fcGluKHBpbikpCiAJCXJldHVybiAmc2l0OTUzMXhfZHBsbF94b19waW5fb3BzOwogCS8qCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvcmVncy5oIGIvZHJpdmVycy9kcGxsL3Np dDk1MzF4L3JlZ3MuaAppbmRleCAxODkxNjc5Njk4ZTIuLjYwMWRhZmJiMjE3OSAxMDA2NDQKLS0t IGEvZHJpdmVycy9kcGxsL3NpdDk1MzF4L3JlZ3MuaAorKysgYi9kcml2ZXJzL2RwbGwvc2l0OTUz MXgvcmVncy5oCkBAIC0zMTIsNiArMzEyLDkgQEAKICNkZWZpbmUgU0lUOTUzMVhfUExMX1JFR19B Q1RJVkUJCTB4MDIKICNkZWZpbmUgU0lUOTUzMVhfUExMX0FDVElWRV9CSVQJCUJJVCgwKSAgLyog UExMIHJlYWNoZWQgYWN0aXZlIHN0YXRlICovCiAKKy8qIFBMTCBFWFQgcGFnZSBJTlRTWU5DIGNv bmZpZ3VyYXRpb24gcmVnaXN0ZXJzICovCisjZGVmaW5lIFNJVDk1MzFYX1BMTF9FWFRfUEFHRShf aWR4KQkoU0lUOTUzMVhfUEFHRV9QTExBX0VYVCArIChfaWR4KSkKKwogI2RlZmluZSBTSVQ5NTMx WF9QTExfU1RBVFVTX09VVEVSX0RJUwlCSVQoNSkKIAogLyoKLS0gCjIuMzkuMiAoQXBwbGUgR2l0 LTE0MykKCg==