From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) (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 C02381EB1B9; Fri, 21 Feb 2025 12:39:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=210.61.82.184 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740141584; cv=fail; b=BHvpIimBSJzkkNzXih9o/Y1U7h9TKVUR6d5FsN7taNOGVlvOeqhIA1BYqGFQ6dH0q2uHr2iW8hB9DZAq/ZbFIuqFQ1Q2JxthSHIX/YT2+tS+ZFOe9KkhOgDk9ofgxfEiGQStB7FHu1yip1mS4DeJK3c+4VzIxYlkJwe3EBImXuk= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740141584; c=relaxed/simple; bh=jLif22clLvpNuaaODxZTCxsWy3qYFITgacoRRuA05ao=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=XKEp5hTwtUQUdHoUGa2YOoVw3KrLPSpDMo1paHiMjbaQyK978yAMgEVcEvnAh12cEZ34HfKRinLAff5JXDaLdyJnIBttELbu9GyIRrtnAielVL1I+tLaJq7M0J3ieSgEmJ4tewlRFCpNWzZqy6RSMB8itJagVLiH0L73lLlOpSg= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com; spf=pass smtp.mailfrom=mediatek.com; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b=f1cDmJDQ; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b=PGLSzwiU; arc=fail smtp.client-ip=210.61.82.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mediatek.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="f1cDmJDQ"; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b="PGLSzwiU" X-UUID: e968bba6f05011ef8eb9c36241bbb6fb-20250221 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=jLif22clLvpNuaaODxZTCxsWy3qYFITgacoRRuA05ao=; b=f1cDmJDQNKIvoo+EfLlU0YSxk96G3zJ6OgGbxfar6hLbt8ScEuJD+MhVHonh6Atb5ifyKqDizYVIlkfu5ouVtSkE4SRaqkAhJbotx610ZsH5ot9oHHwQj9cYX6O0pdSqFFlQ83F38oFx1R/ak0LE7L93gaj9mjLq+KNc6PwktIw=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.46,REQID:f857c78b-5b64-4635-9d4c-479e28cc3353,IP:0,U RL:0,TC:0,Content:3,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:3 X-CID-META: VersionHash:60aa074,CLOUDID:c5c865a4-5c06-4e72-8298-91cabc9efadf,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:80|81|82|83|102,TC:nil,Content:4|51, EDM:-3,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OS A:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: e968bba6f05011ef8eb9c36241bbb6fb-20250221 Received: from mtkmbs13n1.mediatek.inc [(172.21.101.193)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 192609657; Fri, 21 Feb 2025 20:39:37 +0800 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Fri, 21 Feb 2025 20:39:36 +0800 Received: from HK2PR02CU002.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server id 15.2.1258.28 via Frontend Transport; Fri, 21 Feb 2025 20:39:36 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e8TgQbOTkwl8arg9tGj7cDJ57+OiMM3d052au/tyP+xwSZUroqEc02g6qAf+3aRlPZpQjIAfKn30ILbnmGrYbpG0SNPDJQ1OBLNNadTTPbTWv0fUlGZggm23TVdoupDSFt/XblWkMvSNx5UZU76CCXf9J2fjwqSZ+TsXavIoWKBiaIMypoUew8z9KuM/yiAs/bNubb1rG5S2gNxn7/uivV8DiHCjNhVhnpZfmD+jFkV0kfyUB4OqHjtHUZKKUcwG6j5ntUIwv19365DlylRmteVbmpqnkFwLVBMGQU0JK2qHm2PnErkaQA6RIckXZW2jk5wIUHf3DiwkjcCsqLwVKQ== 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=jLif22clLvpNuaaODxZTCxsWy3qYFITgacoRRuA05ao=; b=sy5AogSHhVmraQTtO7PwxqF89MqeMEkL18BQhuRNcmsuUiVenGaGF7+9X6oCHJw9G73MaH9vxd/QcVGqsAWxR5Lp7LFt6FCJ9ppbRpNfaBH8e6QEwlmnx/LqSM2CyzPhLrUgdZ3rfwhmv8qKKoVfTKRNO5rf9tU3MNVBhwcAAdDe4wYmPrp4Bq0UBajUILizEfguyFZLJDqLHzv4VmxL6aT/Bpox1tqTqT7+WMe/v6RbcqyChQXY8IBoGMxQb35rwW1R4MVEeIlOcXyBijkkusTuzGh3JtDDyRCy7oZ+MVSkd09iIZH/bTXUEYT3ShUW598BREl3SDupex2Kmt2BvA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jLif22clLvpNuaaODxZTCxsWy3qYFITgacoRRuA05ao=; b=PGLSzwiU8P+deHp0wIQDqzhLasPZIEs/AIxVxcBFXiKQJyzDc5hg6rQTPrwNrOSheSs2xNQTOz1RxVuqZKnXCgUVHLslWRW/gstKh0HwWk7kEOo0/NWeILr49Fp+ILnuGlm5cWskMsJq2mjpxs/i0Yeoz6fBGqWsEf61ZgbXyLk= Received: from SG2PR03MB6636.apcprd03.prod.outlook.com (2603:1096:4:1b8::6) by JH0PR03MB7611.apcprd03.prod.outlook.com (2603:1096:990:b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.16; Fri, 21 Feb 2025 12:39:33 +0000 Received: from SG2PR03MB6636.apcprd03.prod.outlook.com ([fe80::98e8:d61:f404:4052]) by SG2PR03MB6636.apcprd03.prod.outlook.com ([fe80::98e8:d61:f404:4052%3]) with mapi id 15.20.8445.017; Fri, 21 Feb 2025 12:39:33 +0000 From: =?utf-8?B?UGF1bC1wbCBDaGVuICjpmbPmn4/pnJYp?= To: =?utf-8?B?Q0sgSHUgKOiDoeS/iuWFiSk=?= , "robh@kernel.org" , "krzk+dt@kernel.org" , "conor+dt@kernel.org" , "chunkuang.hu@kernel.org" , "AngeloGioacchino Del Regno" CC: =?utf-8?B?U3VubnkgU2hlbiAo5rKI5aeN5aeNKQ==?= , =?utf-8?B?U2luZ28gQ2hhbmcgKOW8teiIiOWciyk=?= , "treapking@chromium.org" , Project_Global_Chrome_Upstream_Group , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , =?utf-8?B?SmFzb24tSkggTGluICjmnpfnnb/npaUp?= , "linux-kernel@vger.kernel.org" , =?utf-8?B?TmFuY3kgTGluICjmnpfmrKPonqIp?= , =?utf-8?B?WGlhbmRvbmcgV2FuZyAo546L5YWI5YasKQ==?= , "matthias.bgg@gmail.com" , "linux-mediatek@lists.infradead.org" , "p.zabel@pengutronix.de" , =?utf-8?B?U2lyaXVzIFdhbmcgKOeOi+eak+aYsSk=?= , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH 12/12] drm/mediatek: Add support for multiple mmsys in the one mediatek-drm driver Thread-Topic: [PATCH 12/12] drm/mediatek: Add support for multiple mmsys in the one mediatek-drm driver Thread-Index: AQHbY1yxG+PDBXwIykWGm9Rq1kFo4rNDmsoAgA5ZyQA= Date: Fri, 21 Feb 2025 12:39:33 +0000 Message-ID: <773cbb9b4bc8b03c06a5d48a6df7e2faeb3fb49a.camel@mediatek.com> References: <20250110123835.2719824-1-paul-pl.chen@mediatek.com> <20250110123835.2719824-14-paul-pl.chen@mediatek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SG2PR03MB6636:EE_|JH0PR03MB7611:EE_ x-ms-office365-filtering-correlation-id: 55031740-d683-4152-dea3-08dd5274cb13 x-ld-processed: a7687ede-7a6b-4ef6-bace-642f677fbe31,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?OWxUTXRhQnAydTV4Y0NXa1pwRXlsOVRuSFNFZjNGQnN3dVR0UkJmR2MxWWQw?= =?utf-8?B?MGhnL0NUL1lWSHZuUDU0TEYyaHZiaEc2dHhBV1Q4dFAweEtvUU9OVXBLa2tp?= =?utf-8?B?OWw0aXU3UE01UzE2NDRqY1lESmRCeVh1WXQvbEt2YXZvVFZNR3BaUUZtMkRG?= =?utf-8?B?bHdMa0YwZUl5Tzl6RERON3NrWmxGWUI0bUo1a2xUaHA3RnVxT2luUnlCcEFk?= =?utf-8?B?MGlHQndZN01Md0djclk1TVROcHo4cWlScDRwVCtHa2phYlIxYTUyZ2s3Vnc5?= =?utf-8?B?djVTRmRKamNDeGIrejhGVVdtb0lLVEZrL0M4blp1aDVoaXEwOTlkTVd6WHkx?= =?utf-8?B?bUlLZDJZQTFXdkp1MDB4WXMxdzhvUCtWL0hSSUp0djFqK0N3MWN1LytXYVpB?= =?utf-8?B?WWNuc1dDQVFSZ2lKVkJhKzQvNGl1RDM5cjlIM2hsTGRNSWsweUMvNEdZVy9C?= =?utf-8?B?UjhHU1dVTUk0MUxiRHdvSVBjY1lMbXdJN1EvN05hYzRrRS9XUVlPaTlDS1Zi?= =?utf-8?B?VGN0dmhpWk9QZGhMbEt4eDlud2loYXgvdGZQTUlCMkQ1bmdaZTlKejliR1Vw?= =?utf-8?B?d0pVVUV3eThuU2hTY1pndzFQRWpmaTZVaHlqc0JtaEJBeW50cE9DNWZXcE1y?= =?utf-8?B?SWtUUU9aeCsyQnVFeGVxUUIxVm5QZS82cWNQYkdRb3JKNjA5R01XMkg2d3Q0?= =?utf-8?B?K05QcDVEODI5VnY0cUZDYkNhNTVJMDFjUDhGZzNXUGZtR1pTRURnZjUyNDVV?= =?utf-8?B?OU1rZEdGR1F0NGpjOVhKMnRsU2dya2NCN2tOS0UzWk9MQW4zZlAwYWF6dktN?= =?utf-8?B?QklWeDFvL2VQMU9CbmFNUkdhdUlSQ2YrOHQwQUFSQzBCRzhabVphUE9QZldx?= =?utf-8?B?d1ZoY1l4cThFMkhCODBSYy8zMWViNk5LVm1zekk4QkhlS3ppYU1jRlpTYklY?= =?utf-8?B?Z2ZpejBkV2lzeGVZakRaYkt6dW14OTJITDNhb3gwb1ZRSEE3NTRsczBxeHAy?= =?utf-8?B?SldUU3lYMVppaVVuRVZYWkthbHRmNjA1ZmJMMXBGUlJwVzJiL2REYWhYeHBw?= =?utf-8?B?eEx4U2JUR0RaVGRibGZIZUdMZWNKaWdiVEE1REdLUnM1eER6TFRudWNUZlBn?= =?utf-8?B?UGJINWxHdkFoNHRLRXp6R3ZDNHUrNnVBY0dJeDlPUHZLK3VZczJqTkJVTE4z?= =?utf-8?B?VE84OWRoQjFBL210OEx2bmtxT0UvMG93OEY0RkU0SEVodXljeTVZck41ZmhR?= =?utf-8?B?T1R0enZDVHFLazhQMGNHZmtveU5xUnVvVXJmMHJIa3VmVXVLeWgxaHZ3WCtD?= =?utf-8?B?RzNKZEExRWt4NWVVSk96OEVlZWZqMUpDUk9XblA2di9rRXFxTy94MHN5cXFr?= =?utf-8?B?azBzUXNxV3JVWiszZ1NGZUYzMEJFZ0ZlNXlmb1Y5N1g4RGZLVE84T1ZvbFlW?= =?utf-8?B?NHgvL2wxc2lGTTZ0U08xUXQ0SnV5MmE3QnBId1BvemxVWTBIY1FWbXQ4SEE5?= =?utf-8?B?cnZ6eTZqdDZYTXdVdDRUenJDYjRTczR6RUlCZHFjdElGQ3FGM2xTdko1UlNY?= =?utf-8?B?V2prVXZxQlJVWkIrTWIzM1VkRGlQN20yRkNveWFHY25lWjR5UXFZTXV4R2wr?= =?utf-8?B?VGpjWlpweVdWZ3FobUxJNWJXYzRTRWtrT202ZnNDSUZvQ3dObTVJbm5xZVNv?= =?utf-8?B?cHRjQ1ZNWmxiMkt0ZmpBcEZKd0IxcnRmZXpzaXIrZWliUHdKeS9GQnV4VUZo?= =?utf-8?B?Q3ZZZUw3Y2I4TVViZ3ZDNEw0NmxrL1kzTk5TRVpwc2wrMHZQd3pEZktVNnVN?= =?utf-8?B?VUk4cVlueW8wV21mVDc4OUNoa1FFa0ZKdHRXMXdiZE12Z1ZsOVpOY2JJMldw?= =?utf-8?B?aHVKZVZsQm12ODIvc1RZSjJodnVBNWpaQXYvaWhWL0FacTk3dlF2cU9RYjk4?= =?utf-8?Q?XcyTqx6bRcwzd0C6vyj1w3twziSWAq8z?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR03MB6636.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NEsxd0RQRXg4WjVIVWxFRWZHckFvNjlBYS8rbFlZMDFhMXlEZ1pCTUZNdlhY?= =?utf-8?B?UGxFWFBURERGQklpRnZ5RjNBTmxObGR6cHJPRE1nNG9RS21lTTVxTU9SL2tx?= =?utf-8?B?aThjOGVrc1lZMm1OV1JYdFpxRG5MbW5mOVZOWENkL2dIZjZKektrV2s0Qm9E?= =?utf-8?B?emk0NU5oOGRHbU1MOG05WCs4VXhlbFNlZVNNMXNzSG5oejM3Ry85VThuSFFW?= =?utf-8?B?Z0M0ZmNQV2J0anFxM01TMTBGQVRzTUx0TUovOHlRV1V2L1AzQ3hwRVlETjdU?= =?utf-8?B?U2xHcHQzYkZrY0h6RW8zRC9sRHhTb3FWMkxjdW5VeGVJV2J0QWRXbG9yRzdj?= =?utf-8?B?NVNpUDhoeVlqNG1WSjduTmh1VVhVRUx6dTgyRjVaZzBkWUJPQ3ZNK1p0cEVU?= =?utf-8?B?YUV1dUh6U1hVd3k2ZGNhcU1SbWp0WmJpb0lTUGh0dEJQLzlBUnFmRWdya1N2?= =?utf-8?B?RmNNckZzUWFNa3BWbTUwTHhBYU0xZjQrSjRrNDFiRDc2NzUzaXFMbk1rMC9S?= =?utf-8?B?NHppVzd4Z3o3Z3orbFdBaDVKUkFLakhRK3Z2cmxXNFZyWEE3ckpUUEs2RlBO?= =?utf-8?B?UlBwOUpPc0c5SnphZnVIZ21mT0l4eW9WaVp0UENGWFM2WU4rYjdZYVk4NDdN?= =?utf-8?B?bGJ6NHNKOGhvZGcraHpEbVB0Smd4MjZqWEJidnBPYXYyWFQraUlZKzZ4R0Ju?= =?utf-8?B?TEliOGdnS2gzNDRxMXpRMmdZQmIvUnJMMXVuaXBOTUNlVk13dHBVbmVWNWtD?= =?utf-8?B?dzhKakpQbTFXcjZUZWJvZEdnMU9uejF6QWpkbklLTjFabXVWTGtQSUMxOEpv?= =?utf-8?B?ZDdCdTV1cXBnTU1YMEZKQ0NoOSs2QkZDaHczTVBFSnpUaHB0SjM2WE82dVRu?= =?utf-8?B?WGtZT0VKMXFjVDdCRHhXZE40Q1NiaGFkOGYvbU5uMVFBd1krZ0h0U2ppN1N0?= =?utf-8?B?T2FLaUg5UE5CZVBKa0hFSU9PVUZCVkgwcm90WkV2c0JUQzdHSHQzbURmU1BK?= =?utf-8?B?eXJWVklvY3o1WGlVMk40dzF1NFlCZVRYSWo1dUo1clVNNmFoalF4NkVKV3E5?= =?utf-8?B?MzB3TzJTbGlkRGZQQThWK2pLVHJ4V0RaVENYZEJJVnF0VHNOZFNxQWpZa3Na?= =?utf-8?B?b3hNS2toYll4ZklYdzlOd2srMStKVG5CckYvN2dSeTUxZkdaZFlkWlZ2S1lk?= =?utf-8?B?bHJqTWhINUorNnZrR1RPOFdKODVSN1pkYWZGZFN3ZXIzaUJIamphQ2ZwUzI5?= =?utf-8?B?QjBBY01ENUp3bTg4aE5Ra2pZdnNYOVY3Wjdvc1pqeHhkQm5DNXNCWDZWSDBK?= =?utf-8?B?SGZlbHdVZENxajBSN0dGVXJoNzJyQk4xZmJUb1FLSGRuQkVzcXdwTzhqRlR5?= =?utf-8?B?MEgvTWVpZWs2cUgxaVllL2tOeGhuU3ArU3FtdW9PQld1ZmhHRVcvQis0TlBw?= =?utf-8?B?N01zdUsyODQxSmx2WWliRXM4M0JlTEVqTG4rTnp2SmMzeVJzOUxnUVhYNUpl?= =?utf-8?B?L2xZVWlMN3JkRmZZaTNQZGdMQkcvWjl4UmM3MEs4eU0xbEF6dSt3czV4ZjFi?= =?utf-8?B?bllxelVTOWlTUmEycTlHSDdKTlRuYlFnbVRKa3VTZlNMOFlVemRuTjVsbW9t?= =?utf-8?B?SWhqZEVWVHBTcWg5elkyZ1kzVE12RkpZa1p1elR3QXpodkRPam1PVGVHRURY?= =?utf-8?B?cWU0RUcybGh5UVdyNWpJRDZEV25IRmhrS2cySXdMdHVwSXlxRC84YWhhRXFL?= =?utf-8?B?Y0FWcC84NmQ2ME5MUnNyY2VTc085dThjRFJTM05ZU2ZGZk9aODFDNCtxOUZM?= =?utf-8?B?eFBNWStLV2swR1dWdUV5QUpsMXduWFo0L2xWUFZSaVI2cFZjOXNPbGRLSXVF?= =?utf-8?B?L3UwSGdUZnBHdDJqNDJHaWlBTERQRENtTEVZWkdCV1JOaEl1WDRYQVkzbHBM?= =?utf-8?B?Mm4xOTFmbURLTHhCVktCZDFMWS9USXhRcCtFZDZqMUJ1N2o2emJnRGpJend6?= =?utf-8?B?OEpkVFpVN3QrZEJlcnB0eXNIbE9UV2kxZWRBelQySUVwVy95Rk94enRRWEQ3?= =?utf-8?B?QjJndTB2dHhwNG16d2xPc2FpZGFxT3dxczhHTHJxRDhIZzJtck10anQzOTRP?= =?utf-8?B?Mk9DVW1XUS93OWpoVzhQSm8ySUs5ZUhjNklMdkhjSTdLbzBGSlRISHZ4NHdR?= =?utf-8?B?dlE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <0DE4B3D1098A7645A3106E3F8226DEB0@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SG2PR03MB6636.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55031740-d683-4152-dea3-08dd5274cb13 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2025 12:39:33.2647 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Z5FbaGxsasY1OXtgBnsLX0H+9YjahYBxnNxQMRp9zYZYozCuGrOFI2kYebTye04SBI0o2ddxHRYmqnIUbHNicw6zbYe5igOGZMLP2EVzxYI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR03MB7611 T24gV2VkLCAyMDI1LTAyLTEyIGF0IDA5OjMwICswMDAwLCBDSyBIdSAo6IOh5L+K5YWJKSB3cm90 ZToNCj4gSGksIFBhdWw6DQo+IA0KPiBPbiBGcmksIDIwMjUtMDEtMTAgYXQgMjA6MzQgKzA4MDAs IHBhdWwtcGwuY2hlbiB3cm90ZToNCj4gPiBGcm9tOiAiTmFuY3kuTGluIiA8bmFuY3kubGluQG1l ZGlhdGVrLmNvbT4NCj4gPiANCj4gPiBUbyBzdXBwb3J0IG11bHRpcGxlIG1tc3lzIGluc3RhbmNl cyBpbiB0aGUgb25lIG1lZGlhdGVrLWRybQ0KPiA+IGluc3RhbmNlLA0KPiA+IHByb3ZpZGluZyBp bXByb3ZlZCBmbGV4aWJpbGl0eSBhbmQgc2NhbGFiaWxpdHkgYnkgdGhlIGZvbGxvd2luZw0KPiA+ IGNoYW5nZXM6DQo+ID4gDQo+ID4gMS4gRGVmaW5lZCBuZXcgRFJNIGNvbXBvbmVudCBJRHMgRERQ X0NPTVBPTkVOVF9EUk1fT1ZMU1lTX0FEQVBUT1IqDQo+ID4gwqAgdG8gc3VwcG9ydCBkaWZmZXJl bnQgbW1zeXMgY29tcG9zaXRpb24uDQo+ID4gMi4gQWRkZWQgbmV3IGNvbXBvbmVudCB0eXBlcyBN VEtfRElTUF9WSVJUVUFMIHRvIHN1cHBvcnQgdGhlDQo+ID4gwqAgcm91dGluZyB0byB2aXJ0dWFs IGRpc3BsYXkgY29tcG9uZW50cy4NCj4gPiAzLiBBZGRlZCBhbmQgYWRqdXN0ZWQgdGhlIGV4aXN0 ZWQgc3RydWN0dXJlIG9yIGludGVyZmFjZSB0byBleHRlbmQNCj4gPiDCoCB0aGUgc3VwcG9ydCBv ZiBtdWx0aXBsZSBtbXN5cyBpbnN0YW5jZXMuDQo+ID4gNC4gTW9kaWZpZWQgdGhlIGNvbXBvbmVu dCBtYXRjaGluZyBhbmQgYmluZGluZyBsb2dpYyB0byBzdXBwb3J0DQo+ID4gwqAgbXVsdGlwbGUg bW1zeXMgaW5zdGFuY2VzLg0KPiANCj4gSSB0aGluayB0aGUgdGl0bGUgd291bGQgY29uZnVzZSBt ZS4NCj4gT3JpZ2luYWwgbWVkaWF0ZWstZHJtIGRyaXZlciBhbHJlYWR5IHN1cHBvcnQgbXVsdGlw bGUgbW1zeXMuDQo+IEkgdHJ5IHRvIHVuZGVyc3RhbmQgTVQ4MTk2IGRpc3BsYXkuDQo+IElzIG9u ZSBkaXNwbGF5IHBpcGVsaW5lIHNlcGFyYXRlZCBpbnRvIHR3byBtbXN5cz8NCj4gVGhlIGZpcnN0 IGlzIG92bHN5cyBhbmQgdGhlIHNlY29uZCBpcyBkaXNwc3lzPw0KPiBJZiBzbywgSSB3b3VsZCBs aWtlIG1lZGlhdGVrLWRybSBkcml2ZXIgc2VlIG9ubHkgbW1zeXMgKGRpc3BzeXMpLA0KPiBhbmQg bGV0IG92bHN5cyBjb250cm9sIGlzIGhpZGRlbiBpbiBvdmxzeXMgc3ViIGRyaXZlciwgc28gbWVk aWF0ZWstDQo+IGRybSBkcml2ZXIgd291bGQgbm90IGNoYW5nZSBzbyBtdWNoLg0KPiANCj4gPiAN Cj4gPiBTaWduZWQtb2ZmLWJ5OiBOYW5jeS5MaW4gPG5hbmN5LmxpbkBtZWRpYXRlay5jb20+DQo+ ID4gU2lnbmVkLW9mZi1ieTogUGF1bC1wbC5DaGVuIDxwYXVsLXBsLmNoZW5AbWVkaWF0ZWsuY29t Pg0KPiA+IC0tLQ0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmPCoMKg wqDCoCB8IDM1MCArKysrKysrKysrKysrKysrKysrLQ0KPiA+IC0tLS0NCj4gPiDCoGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5owqDCoMKgwqAgfMKgwqAgNiArLQ0KPiA+IMKgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kZHBfY29tcC5jIHwgMTA2ICsrKysrLS0NCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGRwX2NvbXAuaCB8wqDCoCAyICsNCj4gPiDC oGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jwqAgfCAyMjMgKysrKysrKysr KysrLS0tDQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaMKgIHzC oCAxNiArLQ0KPiA+IMKgNiBmaWxlcyBjaGFuZ2VkLCA1NzggaW5zZXJ0aW9ucygrKSwgMTI1IGRl bGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2NydGMuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmMN Cj4gPiBpbmRleCBlYjBlMTIzM2FkMDQuLmVjYTY5NDFiZmFhMiAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jDQo+ID4gQEAgLTU4LDEzICs1OCwxNyBAQCBzdHJ1Y3Qg bXRrX2NydGMgew0KPiA+IMKgCXdhaXRfcXVldWVfaGVhZF90CQljYl9ibG9ja2luZ19xdWV1ZTsN Cj4gPiDCoCNlbmRpZg0KPiA+IMKgDQo+ID4gLQlzdHJ1Y3QgZGV2aWNlCQkJKm1tc3lzX2RldjsN Cj4gPiArCXN0cnVjdCBkZXZpY2UJCQkqbW1zeXNfZGV2W01BWF9NTVNZU107DQo+ID4gwqAJc3Ry dWN0IGRldmljZQkJCSpkbWFfZGV2Ow0KPiA+IC0Jc3RydWN0IG10a19tdXRleAkJKm11dGV4Ow0K PiA+ICsJc3RydWN0IGRldmljZQkJCSp2ZGlzcF9hb19kZXY7DQo+ID4gKwlzdHJ1Y3QgbXRrX211 dGV4CQkqbXV0ZXhbTUFYX01NU1lTXTsNCj4gPiDCoAl1bnNpZ25lZCBpbnQJCQlkZHBfY29tcF9u cjsNCj4gPiDCoAlzdHJ1Y3QgbXRrX2RkcF9jb21wCQkqKmRkcF9jb21wOw0KPiA+ICsJZW51bSBt dGtfZHJtX21tc3lzCQkqZGRwX2NvbXBfc3lzOw0KPiA+ICsJYm9vbAkJCQlleGlzdFtNQVhfTU1T WVNdOw0KPiA+IMKgCXVuc2lnbmVkIGludAkJCW51bV9jb25uX3JvdXRlczsNCj4gPiDCoAljb25z dCBzdHJ1Y3QgbXRrX2RybV9yb3V0ZQkqY29ubl9yb3V0ZXM7DQo+ID4gKwllbnVtIG10a19kcm1f bW1zeXMJCWNvbm5fcm91dGVzX3N5czsNCj4gPiDCoA0KPiA+IMKgCS8qIGxvY2sgZm9yIGRpc3Bs YXkgaGFyZHdhcmUgYWNjZXNzICovDQo+ID4gwqAJc3RydWN0IG11dGV4CQkJaHdfbG9jazsNCj4g PiBAQCAtODIsNiArODYsMTEgQEAgc3RydWN0IG10a19jcnRjX3N0YXRlIHsNCj4gPiDCoAl1bnNp Z25lZCBpbnQJCQlwZW5kaW5nX3ZyZWZyZXNoOw0KPiA+IMKgfTsNCj4gPiDCoA0KPiA+ICtzdHJ1 Y3QgbXRrX2NydGNfY29tcF9pbmZvIHsNCj4gPiArCWVudW0gbXRrX2RybV9tbXN5cyBzeXM7DQo+ ID4gKwl1bnNpZ25lZCBpbnQgY29tcF9pZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gwqBzdGF0aWMg aW5saW5lIHN0cnVjdCBtdGtfY3J0YyAqdG9fbXRrX2NydGMoc3RydWN0IGRybV9jcnRjICpjKQ0K PiA+IMKgew0KPiA+IMKgCXJldHVybiBjb250YWluZXJfb2YoYywgc3RydWN0IG10a19jcnRjLCBi YXNlKTsNCj4gPiBAQCAtMTI1LDcgKzEzNCw5IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2Rlc3Ry b3koc3RydWN0IGRybV9jcnRjDQo+ID4gKmNydGMpDQo+ID4gwqAJc3RydWN0IG10a19jcnRjICpt dGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMpOw0KPiA+IMKgCWludCBpOw0KPiA+IMKgDQo+ID4g LQltdGtfbXV0ZXhfcHV0KG10a19jcnRjLT5tdXRleCk7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwg TUFYX01NU1lTOyBpKyspDQo+ID4gKwkJaWYgKG10a19jcnRjLT5tdXRleFtpXSkNCj4gPiArCQkJ bXRrX211dGV4X3B1dChtdGtfY3J0Yy0+bXV0ZXhbaV0pOw0KPiA+IMKgI2lmIElTX1JFQUNIQUJM RShDT05GSUdfTVRLX0NNRFEpDQo+ID4gwqAJaWYgKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFu KSB7DQo+ID4gwqAJCWNtZHFfcGt0X2Rlc3Ryb3koJm10a19jcnRjLT5jbWRxX2NsaWVudCwNCj4g PiAmbXRrX2NydGMtPmNtZHFfaGFuZGxlKTsNCj4gPiBAQCAtMjIzLDcgKzIzNCwxNCBAQCBzdGF0 aWMgaW50IG10a19jcnRjX2RkcF9jbGtfZW5hYmxlKHN0cnVjdA0KPiA+IG10a19jcnRjICptdGtf Y3J0YykNCj4gPiDCoAlpbnQgaTsNCj4gPiDCoA0KPiA+IMKgCWZvciAoaSA9IDA7IGkgPCBtdGtf Y3J0Yy0+ZGRwX2NvbXBfbnI7IGkrKykgew0KPiA+ICsJCWVudW0gbXRrX2RybV9tbXN5cyBtbXN5 czsNCj4gPiArDQo+ID4gwqAJCXJldCA9IG10a19kZHBfY29tcF9jbGtfZW5hYmxlKG10a19jcnRj LQ0KPiA+ID5kZHBfY29tcFtpXSk7DQo+ID4gKwkJaWYgKG10a19kZHBfY29tcF9nZXRfdHlwZSht dGtfY3J0Yy0+ZGRwX2NvbXBbaV0tDQo+ID4gPmlkKSA9PSBNVEtfRElTUF9WSVJUVUFMKSB7DQo+ ID4gKwkJCW1tc3lzID0gbXRrX2NydGMtPmRkcF9jb21wX3N5c1tpXTsNCj4gPiArCQkJcmV0ID0g bXRrX21tc3lzX2RkcF9jbGtfZW5hYmxlKG10a19jcnRjLQ0KPiA+ID5tbXN5c19kZXZbbW1zeXNd LA0KPiA+ICsJCQkJCQnCoMKgwqDCoMKgwqAgbXRrX2NydGMtDQo+ID4gPmRkcF9jb21wW2ldLT5p ZCk7DQo+ID4gKwkJfQ0KPiA+IMKgCQlpZiAocmV0KSB7DQo+ID4gwqAJCQlEUk1fRVJST1IoIkZh aWxlZCB0byBlbmFibGUgY2xvY2sgJWQ6DQo+ID4gJWRcbiIsIGksIHJldCk7DQo+ID4gwqAJCQln b3RvIGVycjsNCj4gPiBAQCAtMjMyLDE3ICsyNTAsMjggQEAgc3RhdGljIGludCBtdGtfY3J0Y19k ZHBfY2xrX2VuYWJsZShzdHJ1Y3QNCj4gPiBtdGtfY3J0YyAqbXRrX2NydGMpDQo+ID4gwqANCj4g PiDCoAlyZXR1cm4gMDsNCj4gPiDCoGVycjoNCj4gPiAtCXdoaWxlICgtLWkgPj0gMCkNCj4gPiAr CXdoaWxlICgtLWkgPj0gMCkgew0KPiA+IMKgCQltdGtfZGRwX2NvbXBfY2xrX2Rpc2FibGUobXRr X2NydGMtPmRkcF9jb21wW2ldKTsNCj4gPiArCQlpZiAobXRrX2RkcF9jb21wX2dldF90eXBlKG10 a19jcnRjLT5kZHBfY29tcFtpXS0NCj4gPiA+aWQpID09IE1US19ESVNQX1ZJUlRVQUwpDQo+ID4g KwkJCW10a19tbXN5c19kZHBfY2xrX2Rpc2FibGUobXRrX2NydGMtDQo+ID4gPm1tc3lzX2Rldltt dGtfY3J0Yy0+ZGRwX2NvbXBfc3lzW2ldXSwNCj4gPiArCQkJCQkJwqAgbXRrX2NydGMtDQo+ID4g PmRkcF9jb21wW2ldLT5pZCk7DQo+ID4gKwl9DQo+ID4gwqAJcmV0dXJuIHJldDsNCj4gPiDCoH0N Cj4gPiDCoA0KPiA+IMKgc3RhdGljIHZvaWQgbXRrX2NydGNfZGRwX2Nsa19kaXNhYmxlKHN0cnVj dCBtdGtfY3J0YyAqbXRrX2NydGMpDQo+ID4gwqB7DQo+ID4gwqAJaW50IGk7DQo+ID4gKwllbnVt IG10a19kcm1fbW1zeXMgbW1zeXM7DQo+ID4gwqANCj4gPiAtCWZvciAoaSA9IDA7IGkgPCBtdGtf Y3J0Yy0+ZGRwX2NvbXBfbnI7IGkrKykNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBtdGtfY3J0Yy0+ ZGRwX2NvbXBfbnI7IGkrKykgew0KPiA+IMKgCQltdGtfZGRwX2NvbXBfY2xrX2Rpc2FibGUobXRr X2NydGMtPmRkcF9jb21wW2ldKTsNCj4gPiArCQlpZiAobXRrX2RkcF9jb21wX2dldF90eXBlKG10 a19jcnRjLT5kZHBfY29tcFtpXS0NCj4gPiA+aWQpID09IE1US19ESVNQX1ZJUlRVQUwpIHsNCj4g PiArCQkJbW1zeXMgPSBtdGtfY3J0Yy0+ZGRwX2NvbXBfc3lzW2ldOw0KPiA+ICsJCQltdGtfbW1z eXNfZGRwX2Nsa19kaXNhYmxlKG10a19jcnRjLQ0KPiA+ID5tbXN5c19kZXZbbW1zeXNdLA0KPiA+ ICsJCQkJCQnCoCBtdGtfY3J0Yy0NCj4gPiA+ZGRwX2NvbXBbaV0tPmlkKTsNCj4gPiArCQl9DQo+ ID4gKwl9DQo+ID4gwqB9DQo+ID4gwqANCj4gPiDCoHN0YXRpYw0KPiA+IEBAIC0zMzIsNyArMzYx LDggQEAgc3RhdGljIGludCBtdGtfY3J0Y19kZHBfaHdfaW5pdChzdHJ1Y3QgbXRrX2NydGMNCj4g PiAqbXRrX2NydGMpDQo+ID4gwqAJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5f aXRlcjsNCj4gPiDCoAl1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgdnJlZnJlc2gsIGJwYyA9 IE1US19NQVhfQlBDOw0KPiA+IMKgCWludCByZXQ7DQo+ID4gLQlpbnQgaTsNCj4gPiArCWludCBp LCBqOw0KPiA+ICsJZW51bSBtdGtfZHJtX21tc3lzIG1tc3lzOw0KPiA+IMKgDQo+ID4gwqAJaWYg KFdBUk5fT04oIWNydGMtPnN0YXRlKSkNCj4gPiDCoAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gQEAg LTM2MiwxMCArMzkyLDE4IEBAIHN0YXRpYyBpbnQgbXRrX2NydGNfZGRwX2h3X2luaXQoc3RydWN0 DQo+ID4gbXRrX2NydGMgKm10a19jcnRjKQ0KPiA+IMKgCQlyZXR1cm4gcmV0Ow0KPiA+IMKgCX0N Cj4gPiDCoA0KPiA+IC0JcmV0ID0gbXRrX211dGV4X3ByZXBhcmUobXRrX2NydGMtPm11dGV4KTsN Cj4gPiAtCWlmIChyZXQgPCAwKSB7DQo+ID4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxl IG11dGV4IGNsb2NrOiAlZFxuIiwNCj4gPiByZXQpOw0KPiA+IC0JCWdvdG8gZXJyX3BtX3J1bnRp bWVfcHV0Ow0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9NTVNZUzsgaSsrKQ0KPiA+ICsJCWlm IChtdGtfY3J0Yy0+ZXhpc3RbaV0pDQo+ID4gKwkJCW10a19tbXN5c190b3BfY2xrX2VuYWJsZSht dGtfY3J0Yy0NCj4gPiA+bW1zeXNfZGV2W2ldKTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBp IDwgTUFYX01NU1lTOyBpKyspIHsNCj4gPiArCQlpZiAoIW10a19jcnRjLT5tdXRleFtpXSB8fCAh bXRrX2NydGMtPmV4aXN0W2ldKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlyZXQgPSBtdGtf bXV0ZXhfcHJlcGFyZShtdGtfY3J0Yy0+bXV0ZXhbaV0pOw0KPiA+ICsJCWlmIChyZXQgPCAwKSB7 DQo+ID4gKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBtbXN5cyVkIG11dGV4DQo+ID4g Y2xvY2s6ICVkXG4iLCBpLCByZXQpOw0KPiA+ICsJCQlnb3RvIGVycl9wbV9ydW50aW1lX3B1dDsN Cj4gPiArCQl9DQo+ID4gwqAJfQ0KPiA+IMKgDQo+ID4gwqAJcmV0ID0gbXRrX2NydGNfZGRwX2Ns a19lbmFibGUobXRrX2NydGMpOw0KPiA+IEBAIC0zNzQsMTkgKzQxMiwzNiBAQCBzdGF0aWMgaW50 IG10a19jcnRjX2RkcF9od19pbml0KHN0cnVjdA0KPiA+IG10a19jcnRjICptdGtfY3J0YykNCj4g PiDCoAkJZ290byBlcnJfbXV0ZXhfdW5wcmVwYXJlOw0KPiA+IMKgCX0NCj4gPiDCoA0KPiA+ICsJ aWYgKG10a19jcnRjLT52ZGlzcF9hb19kZXYpDQo+ID4gKwkJbXRrX21tc3lzX2RlZmF1bHRfY29u ZmlnKG10a19jcnRjLT52ZGlzcF9hb19kZXYpOw0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkg PCBNQVhfTU1TWVM7IGkrKykNCj4gPiArCQlpZiAobXRrX2NydGMtPmV4aXN0W2ldKQ0KPiA+ICsJ CQltdGtfbW1zeXNfZGVmYXVsdF9jb25maWcobXRrX2NydGMtDQo+ID4gPm1tc3lzX2RldltpXSk7 DQo+ID4gKw0KPiA+IMKgCWZvciAoaSA9IDA7IGkgPCBtdGtfY3J0Yy0+ZGRwX2NvbXBfbnIgLSAx OyBpKyspIHsNCj4gPiAtCQlpZiAoIW10a19kZHBfY29tcF9jb25uZWN0KG10a19jcnRjLT5kZHBf Y29tcFtpXSwNCj4gPiBtdGtfY3J0Yy0+bW1zeXNfZGV2LA0KPiA+ICsJCW1tc3lzID0gbXRrX2Ny dGMtPmRkcF9jb21wX3N5c1tpXTsNCj4gPiArCQlpZiAoIW10a19kZHBfY29tcF9jb25uZWN0KG10 a19jcnRjLT5kZHBfY29tcFtpXSwNCj4gPiBtdGtfY3J0Yy0+bW1zeXNfZGV2W21tc3lzXSwNCj4g PiDCoAkJCQkJwqAgbXRrX2NydGMtPmRkcF9jb21wW2kgKw0KPiA+IDFdLT5pZCkpDQo+ID4gLQkJ CW10a19tbXN5c19kZHBfY29ubmVjdChtdGtfY3J0Yy0+bW1zeXNfZGV2LA0KPiA+ICsJCQltdGtf bW1zeXNfZGRwX2Nvbm5lY3QobXRrX2NydGMtDQo+ID4gPm1tc3lzX2RldlttbXN5c10sDQo+ID4g wqAJCQkJCcKgwqDCoMKgwqAgbXRrX2NydGMtDQo+ID4gPmRkcF9jb21wW2ldLT5pZCwNCj4gPiDC oAkJCQkJwqDCoMKgwqDCoCBtdGtfY3J0Yy0+ZGRwX2NvbXBbaQ0KPiA+ICsgMV0tPmlkKTsNCj4g PiAtCQlpZiAoIW10a19kZHBfY29tcF9hZGQobXRrX2NydGMtPmRkcF9jb21wW2ldLA0KPiA+IG10 a19jcnRjLT5tdXRleCkpDQo+ID4gLQkJCW10a19tdXRleF9hZGRfY29tcChtdGtfY3J0Yy0+bXV0 ZXgsDQo+ID4gKwkJaWYgKCFtdGtfZGRwX2NvbXBfYWRkKG10a19jcnRjLT5kZHBfY29tcFtpXSwN Cj4gPiBtdGtfY3J0Yy0+bXV0ZXhbbW1zeXNdKSkNCj4gPiArCQkJbXRrX211dGV4X2FkZF9jb21w KG10a19jcnRjLT5tdXRleFttbXN5c10sDQo+ID4gwqAJCQkJCcKgwqAgbXRrX2NydGMtPmRkcF9j b21wW2ldLQ0KPiA+ID5pZCk7DQo+ID4gwqAJfQ0KPiA+IC0JaWYgKCFtdGtfZGRwX2NvbXBfYWRk KG10a19jcnRjLT5kZHBfY29tcFtpXSwgbXRrX2NydGMtDQo+ID4gPm11dGV4KSkNCj4gPiAtCQlt dGtfbXV0ZXhfYWRkX2NvbXAobXRrX2NydGMtPm11dGV4LCBtdGtfY3J0Yy0NCj4gPiA+ZGRwX2Nv bXBbaV0tPmlkKTsNCj4gPiAtCW10a19tdXRleF9lbmFibGUobXRrX2NydGMtPm11dGV4KTsNCj4g PiArCW1tc3lzID0gbXRrX2NydGMtPmRkcF9jb21wX3N5c1tpXTsNCj4gPiArCWlmICghbXRrX2Rk cF9jb21wX2FkZChtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0sIG10a19jcnRjLQ0KPiA+ID5tdXRleFtt bXN5c10pKQ0KPiA+ICsJCW10a19tdXRleF9hZGRfY29tcChtdGtfY3J0Yy0+bXV0ZXhbbW1zeXNd LA0KPiA+IG10a19jcnRjLT5kZHBfY29tcFtpXS0+aWQpOw0KPiA+ICsNCj4gPiArCS8qIE5lZWQg dG8gc2V0IHNvZiBzb3VyY2UgZm9yIGFsbCBtbXN5cyBtdXRleHMgaW4gdGhpcw0KPiA+IGNydGMg Ki8NCj4gPiArCWZvciAoaiA9IDA7IGogPCBNQVhfTU1TWVM7IGorKykNCj4gPiArCQlpZiAobXRr X2NydGMtPmV4aXN0W2pdICYmIG10a19jcnRjLT5tdXRleFtqXSkNCj4gPiArCQkJbXRrX211dGV4 X3dyaXRlX2NvbXBfc29mKG10a19jcnRjLQ0KPiA+ID5tdXRleFtqXSwgbXRrX2NydGMtPmRkcF9j b21wW2ldLT5pZCk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9NTVNZUzsgaSsr KQ0KPiA+ICsJCWlmIChtdGtfY3J0Yy0+ZXhpc3RbaV0gJiYgbXRrX2NydGMtPm11dGV4W2ldKQ0K PiA+ICsJCQltdGtfbXV0ZXhfZW5hYmxlKG10a19jcnRjLT5tdXRleFtpXSk7DQo+ID4gwqANCj4g PiDCoAlmb3IgKGkgPSAwOyBpIDwgbXRrX2NydGMtPmRkcF9jb21wX25yOyBpKyspIHsNCj4gPiDC oAkJc3RydWN0IG10a19kZHBfY29tcCAqY29tcCA9IG10a19jcnRjLT5kZHBfY29tcFtpXTsNCj4g PiBAQCAtMzk0LDcgKzQ0OSwxMSBAQCBzdGF0aWMgaW50IG10a19jcnRjX2RkcF9od19pbml0KHN0 cnVjdA0KPiA+IG10a19jcnRjICptdGtfY3J0YykNCj4gPiDCoAkJaWYgKGkgPT0gMSkNCj4gPiDC oAkJCW10a19kZHBfY29tcF9iZ2Nscl9pbl9vbihjb21wKTsNCj4gPiDCoA0KPiA+IC0JCW10a19k ZHBfY29tcF9jb25maWcoY29tcCwgd2lkdGgsIGhlaWdodCwgdnJlZnJlc2gsDQo+ID4gYnBjLCBO VUxMKTsNCj4gPiArCQlpZiAobXRrX2RkcF9jb21wX2dldF90eXBlKGNvbXAtPmlkKSA9PQ0KPiA+ IE1US19ESVNQX1ZJUlRVQUwpDQo+ID4gKwkJCW10a19tbXN5c19kZHBfY29uZmlnKG10a19jcnRj LQ0KPiA+ID5tbXN5c19kZXZbbXRrX2NydGMtPmRkcF9jb21wX3N5c1tpXV0sDQo+ID4gKwkJCQkJ wqDCoMKgwqAgY29tcC0+aWQsIHdpZHRoLA0KPiA+IGhlaWdodCwgTlVMTCk7DQo+ID4gKwkJZWxz ZQ0KPiA+ICsJCQltdGtfZGRwX2NvbXBfY29uZmlnKGNvbXAsIHdpZHRoLCBoZWlnaHQsDQo+ID4g dnJlZnJlc2gsIGJwYywgTlVMTCk7DQo+ID4gwqAJCW10a19kZHBfY29tcF9zdGFydChjb21wKTsN Cj4gPiDCoAl9DQo+ID4gwqANCj4gPiBAQCAtNDE4LDcgKzQ3NywxMCBAQCBzdGF0aWMgaW50IG10 a19jcnRjX2RkcF9od19pbml0KHN0cnVjdA0KPiA+IG10a19jcnRjICptdGtfY3J0YykNCj4gPiDC oAlyZXR1cm4gMDsNCj4gPiDCoA0KPiA+IMKgZXJyX211dGV4X3VucHJlcGFyZToNCj4gPiAtCW10 a19tdXRleF91bnByZXBhcmUobXRrX2NydGMtPm11dGV4KTsNCj4gPiArCWZvciAoaSA9IDA7IGkg PCBNQVhfTU1TWVM7IGkrKykNCj4gPiArCQlpZiAobXRrX2NydGMtPmV4aXN0W2ldICYmIG10a19j cnRjLT5tdXRleFtpXSkNCj4gPiArCQkJbXRrX211dGV4X3VucHJlcGFyZShtdGtfY3J0Yy0+bXV0 ZXhbaV0pOw0KPiA+ICsNCj4gPiDCoGVycl9wbV9ydW50aW1lX3B1dDoNCj4gPiDCoAlwbV9ydW50 aW1lX3B1dChjcnRjLT5kZXYtPmRldik7DQo+ID4gwqAJcmV0dXJuIHJldDsNCj4gPiBAQCAtNDMw LDYgKzQ5Miw3IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2RkcF9od19maW5pKHN0cnVjdA0KPiA+ IG10a19jcnRjICptdGtfY3J0YykNCj4gPiDCoAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmbXRr X2NydGMtPmJhc2U7DQo+ID4gwqAJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiDCoAlpbnQgaTsN Cj4gPiArCWVudW0gbXRrX2RybV9tbXN5cyBtbXN5czsNCj4gPiDCoA0KPiA+IMKgCWZvciAoaSA9 IDA7IGkgPCBtdGtfY3J0Yy0+ZGRwX2NvbXBfbnI7IGkrKykgew0KPiA+IMKgCQltdGtfZGRwX2Nv bXBfc3RvcChtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0pOw0KPiA+IEBAIC00MzcsMjcgKzUwMCw0NiBA QCBzdGF0aWMgdm9pZCBtdGtfY3J0Y19kZHBfaHdfZmluaShzdHJ1Y3QNCj4gPiBtdGtfY3J0YyAq bXRrX2NydGMpDQo+ID4gwqAJCQltdGtfZGRwX2NvbXBfYmdjbHJfaW5fb2ZmKG10a19jcnRjLQ0K PiA+ID5kZHBfY29tcFtpXSk7DQo+ID4gwqAJfQ0KPiA+IMKgDQo+ID4gLQlmb3IgKGkgPSAwOyBp IDwgbXRrX2NydGMtPmRkcF9jb21wX25yOyBpKyspDQo+ID4gLQkJaWYgKCFtdGtfZGRwX2NvbXBf cmVtb3ZlKG10a19jcnRjLT5kZHBfY29tcFtpXSwNCj4gPiBtdGtfY3J0Yy0+bXV0ZXgpKQ0KPiA+ IC0JCQltdGtfbXV0ZXhfcmVtb3ZlX2NvbXAobXRrX2NydGMtPm11dGV4LA0KPiA+ICsJZm9yIChp ID0gMDsgaSA8IG10a19jcnRjLT5kZHBfY29tcF9ucjsgaSsrKSB7DQo+ID4gKwkJbW1zeXMgPSBt dGtfY3J0Yy0+ZGRwX2NvbXBfc3lzW2ldOw0KPiA+ICsJCWlmICghbXRrX2RkcF9jb21wX3JlbW92 ZShtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0sDQo+ID4gbXRrX2NydGMtPm11dGV4W21tc3lzXSkpDQo+ ID4gKwkJCW10a19tdXRleF9yZW1vdmVfY29tcChtdGtfY3J0Yy0NCj4gPiA+bXV0ZXhbbXRrX2Ny dGMtPmRkcF9jb21wX3N5c1tpXV0sDQo+ID4gwqAJCQkJCcKgwqDCoMKgwqAgbXRrX2NydGMtDQo+ ID4gPmRkcF9jb21wW2ldLT5pZCk7DQo+ID4gLQltdGtfbXV0ZXhfZGlzYWJsZShtdGtfY3J0Yy0+ bXV0ZXgpOw0KPiA+ICsJfQ0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9NTVNZUzsgaSsrKQ0K PiA+ICsJCWlmIChtdGtfY3J0Yy0+ZXhpc3RbaV0gJiYgbXRrX2NydGMtPm11dGV4W2ldKQ0KPiA+ ICsJCQltdGtfbXV0ZXhfZGlzYWJsZShtdGtfY3J0Yy0+bXV0ZXhbaV0pOw0KPiA+ICsNCj4gPiDC oAlmb3IgKGkgPSAwOyBpIDwgbXRrX2NydGMtPmRkcF9jb21wX25yIC0gMTsgaSsrKSB7DQo+ID4g LQkJaWYgKCFtdGtfZGRwX2NvbXBfZGlzY29ubmVjdChtdGtfY3J0Yy0NCj4gPiA+ZGRwX2NvbXBb aV0sIG10a19jcnRjLT5tbXN5c19kZXYsDQo+ID4gLQkJCQkJwqDCoMKgwqAgbXRrX2NydGMtPmRk cF9jb21wW2kNCj4gPiArIDFdLT5pZCkpDQo+ID4gLQkJCW10a19tbXN5c19kZHBfZGlzY29ubmVj dChtdGtfY3J0Yy0NCj4gPiA+bW1zeXNfZGV2LA0KPiA+IC0JCQkJCQkgbXRrX2NydGMtDQo+ID4g PmRkcF9jb21wW2ldLT5pZCwNCj4gPiAtCQkJCQkJIG10a19jcnRjLQ0KPiA+ID5kZHBfY29tcFtp ICsgMV0tPmlkKTsNCj4gPiAtCQlpZiAoIW10a19kZHBfY29tcF9yZW1vdmUobXRrX2NydGMtPmRk cF9jb21wW2ldLA0KPiA+IG10a19jcnRjLT5tdXRleCkpDQo+ID4gLQkJCW10a19tdXRleF9yZW1v dmVfY29tcChtdGtfY3J0Yy0+bXV0ZXgsDQo+ID4gKwkJc3RydWN0IG10a19kZHBfY29tcCAqY29t cDsNCj4gPiArCQl1bnNpZ25lZCBpbnQgY3VyciwgbmV4dDsNCj4gPiArDQo+ID4gKwkJY29tcCA9 IG10a19jcnRjLT5kZHBfY29tcFtpXTsNCj4gPiArCQljdXJyID0gbXRrX2NydGMtPmRkcF9jb21w W2ldLT5pZDsNCj4gPiArCQluZXh0ID0gbXRrX2NydGMtPmRkcF9jb21wW2kgKyAxXS0+aWQ7DQo+ ID4gKwkJbW1zeXMgPSBtdGtfY3J0Yy0+ZGRwX2NvbXBfc3lzW2ldOw0KPiA+ICsJCWlmICghbXRr X2RkcF9jb21wX2Rpc2Nvbm5lY3QoY29tcCwgbXRrX2NydGMtDQo+ID4gPm1tc3lzX2RldlttbXN5 c10sIG5leHQpKQ0KPiA+ICsJCQltdGtfbW1zeXNfZGRwX2Rpc2Nvbm5lY3QobXRrX2NydGMtDQo+ ID4gPm1tc3lzX2RldlttbXN5c10sIGN1cnIsIG5leHQpOw0KPiA+ICsJCWlmICghbXRrX2RkcF9j b21wX3JlbW92ZShjb21wLCBtdGtfY3J0Yy0NCj4gPiA+bXV0ZXhbbW1zeXNdKSkNCj4gPiArCQkJ bXRrX211dGV4X3JlbW92ZV9jb21wKG10a19jcnRjLQ0KPiA+ID5tdXRleFttdGtfY3J0Yy0+ZGRw X2NvbXBfc3lzW2ldXSwNCj4gPiDCoAkJCQkJwqDCoMKgwqDCoCBtdGtfY3J0Yy0NCj4gPiA+ZGRw X2NvbXBbaV0tPmlkKTsNCj4gPiDCoAl9DQo+ID4gLQlpZiAoIW10a19kZHBfY29tcF9yZW1vdmUo bXRrX2NydGMtPmRkcF9jb21wW2ldLCBtdGtfY3J0Yy0NCj4gPiA+bXV0ZXgpKQ0KPiA+IC0JCW10 a19tdXRleF9yZW1vdmVfY29tcChtdGtfY3J0Yy0+bXV0ZXgsIG10a19jcnRjLQ0KPiA+ID5kZHBf Y29tcFtpXS0+aWQpOw0KPiA+ICsNCj4gPiArCW1tc3lzID0gbXRrX2NydGMtPmRkcF9jb21wX3N5 c1tpXTsNCj4gPiArCWlmICghbXRrX2RkcF9jb21wX3JlbW92ZShtdGtfY3J0Yy0+ZGRwX2NvbXBb aV0sIG10a19jcnRjLQ0KPiA+ID5tdXRleFttbXN5c10pKQ0KPiA+ICsJCW10a19tdXRleF9yZW1v dmVfY29tcChtdGtfY3J0Yy0+bXV0ZXhbbW1zeXNdLA0KPiA+IG10a19jcnRjLT5kZHBfY29tcFtp XS0+aWQpOw0KPiA+ICsNCj4gPiDCoAltdGtfY3J0Y19kZHBfY2xrX2Rpc2FibGUobXRrX2NydGMp Ow0KPiA+IC0JbXRrX211dGV4X3VucHJlcGFyZShtdGtfY3J0Yy0+bXV0ZXgpOw0KPiA+IMKgDQo+ ID4gLQlwbV9ydW50aW1lX3B1dChkcm0tPmRldik7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFY X01NU1lTOyBpKyspDQo+ID4gKwkJaWYgKG10a19jcnRjLT5leGlzdFtpXSAmJiBtdGtfY3J0Yy0+ bXV0ZXhbaV0pDQo+ID4gKwkJCW10a19tdXRleF91bnByZXBhcmUobXRrX2NydGMtPm11dGV4W2ld KTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX01NU1lTOyBpKyspDQo+ID4gKwkJ aWYgKG10a19jcnRjLT5leGlzdFtpXSkNCj4gPiArCQkJbXRrX21tc3lzX3RvcF9jbGtfZGlzYWJs ZShtdGtfY3J0Yy0NCj4gPiA+bW1zeXNfZGV2W2ldKTsNCj4gPiArDQo+ID4gKwlwbV9ydW50aW1l X3B1dF9zeW5jKGRybS0+ZGV2KTsNCj4gPiDCoA0KPiA+IMKgCWlmIChjcnRjLT5zdGF0ZS0+ZXZl bnQgJiYgIWNydGMtPnN0YXRlLT5hY3RpdmUpIHsNCj4gPiDCoAkJc3Bpbl9sb2NrX2lycXNhdmUo JmNydGMtPmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOw0KPiA+IEBAIC01ODEsOSArNjYzLDE1IEBA IHN0YXRpYyB2b2lkIG10a19jcnRjX3VwZGF0ZV9jb25maWcoc3RydWN0DQo+ID4gbXRrX2NydGMg Km10a19jcnRjLCBib29sIG5lZWRzX3ZibGFuaykNCj4gPiDCoAkJbXRrX2NydGMtPnBlbmRpbmdf YXN5bmNfcGxhbmVzID0gdHJ1ZTsNCj4gPiDCoA0KPiA+IMKgCWlmIChwcml2LT5kYXRhLT5zaGFk b3dfcmVnaXN0ZXIpIHsNCj4gPiAtCQltdGtfbXV0ZXhfYWNxdWlyZShtdGtfY3J0Yy0+bXV0ZXgp Ow0KPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBNQVhfTU1TWVM7IGkrKykNCj4gPiArCQkJaWYgKG10 a19jcnRjLT5leGlzdFtpXSAmJiBtdGtfY3J0Yy0NCj4gPiA+bXV0ZXhbaV0pDQo+ID4gKwkJCQlt dGtfbXV0ZXhfYWNxdWlyZShtdGtfY3J0Yy0NCj4gPiA+bXV0ZXhbaV0pOw0KPiA+ICsNCj4gPiDC oAkJbXRrX2NydGNfZGRwX2NvbmZpZyhjcnRjLCBOVUxMKTsNCj4gPiAtCQltdGtfbXV0ZXhfcmVs ZWFzZShtdGtfY3J0Yy0+bXV0ZXgpOw0KPiA+ICsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgTUFY X01NU1lTOyBpKyspDQo+ID4gKwkJCWlmIChtdGtfY3J0Yy0+ZXhpc3RbaV0gJiYgbXRrX2NydGMt DQo+ID4gPm11dGV4W2ldKQ0KPiA+ICsJCQkJbXRrX211dGV4X3JlbGVhc2UobXRrX2NydGMtDQo+ ID4gPm11dGV4W2ldKTsNCj4gPiDCoAl9DQo+ID4gwqAjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19N VEtfQ01EUSkNCj4gPiDCoAlpZiAobXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4pIHsNCj4gPiBA QCAtNjU5LDYgKzc0Nyw3IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX3VwZGF0ZV9vdXRwdXQoc3Ry dWN0DQo+ID4gZHJtX2NydGMgKmNydGMsDQo+ID4gwqB7DQo+ID4gwqAJaW50IGNydGNfaW5kZXgg PSBkcm1fY3J0Y19pbmRleChjcnRjKTsNCj4gPiDCoAlpbnQgaTsNCj4gPiArCXVuc2lnbmVkIGlu dCBtbXN5czsNCj4gPiDCoAlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ID4gwqAJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlID0gc3RhdGUtDQo+ID4gPmNydGNzW2NydGNfaW5kZXhdLm5l d19zdGF0ZTsNCj4gPiDCoAlzdHJ1Y3QgbXRrX2NydGMgKm10a19jcnRjID0gdG9fbXRrX2NydGMo Y3J0Yyk7DQo+ID4gQEAgLTY3MSw3ICs3NjAsOCBAQCBzdGF0aWMgdm9pZCBtdGtfY3J0Y191cGRh dGVfb3V0cHV0KHN0cnVjdA0KPiA+IGRybV9jcnRjICpjcnRjLA0KPiA+IMKgCWlmICghbXRrX2Ny dGMtPm51bV9jb25uX3JvdXRlcykNCj4gPiDCoAkJcmV0dXJuOw0KPiA+IMKgDQo+ID4gLQlwcml2 ID0gKChzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICopY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZSktDQo+ ID4gPmFsbF9kcm1fcHJpdmF0ZVtjcnRjX2luZGV4XTsNCj4gPiArCW1tc3lzID0gbXRrX2NydGMt PmNvbm5fcm91dGVzX3N5czsNCj4gPiArCXByaXYgPSAoKHN0cnVjdCBtdGtfZHJtX3ByaXZhdGUg KiljcnRjLT5kZXYtPmRldl9wcml2YXRlKS0NCj4gPiA+YWxsX2RybV9wcml2YXRlW21tc3lzXTsN Cj4gPiDCoAlkZXYgPSBwcml2LT5kZXY7DQo+ID4gwqANCj4gPiDCoAlkZXZfZGJnKGRldiwgImNv bm5lY3RvciBjaGFuZ2U6JWQsIGVuY29kZXIgbWFzazoweCV4IGZvcg0KPiA+IGNydGM6JWRcbiIs DQo+ID4gQEAgLTY4NCw2ICs3NzQsOCBAQCBzdGF0aWMgdm9pZCBtdGtfY3J0Y191cGRhdGVfb3V0 cHV0KHN0cnVjdA0KPiA+IGRybV9jcnRjICpjcnRjLA0KPiA+IMKgCQlpZiAoY29tcC0+ZW5jb2Rl cl9pbmRleCA+PSAwICYmDQo+ID4gwqAJCcKgwqDCoCAoZW5jb2Rlcl9tYXNrICYgQklUKGNvbXAt PmVuY29kZXJfaW5kZXgpKSkgew0KPiA+IMKgCQkJbXRrX2NydGMtPmRkcF9jb21wW210a19jcnRj LT5kZHBfY29tcF9uciAtDQo+ID4gMV0gPSBjb21wOw0KPiA+ICsJCQltdGtfY3J0Yy0+ZGRwX2Nv bXBfc3lzW210a19jcnRjLQ0KPiA+ID5kZHBfY29tcF9uciAtIDFdID0gbW1zeXM7DQo+ID4gKwkJ CW10a19jcnRjLT5leGlzdFttbXN5c10gPSB0cnVlOw0KPiA+IMKgCQkJZGV2X2RiZyhkZXYsICJB ZGQgY29tcF9pZDogJWQgYXQgcGF0aA0KPiA+IGluZGV4ICVkXG4iLA0KPiA+IMKgCQkJCWNvbXAt PmlkLCBtdGtfY3J0Yy0+ZGRwX2NvbXBfbnIgLQ0KPiA+IDEpOw0KPiA+IMKgCQkJYnJlYWs7DQo+ ID4gQEAgLTcyMCwxMyArODEyLDM1IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2F0b21pY19lbmFi bGUoc3RydWN0DQo+ID4gZHJtX2NydGMgKmNydGMsDQo+ID4gwqAJc3RydWN0IG10a19jcnRjICpt dGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMpOw0KPiA+IMKgCXN0cnVjdCBtdGtfZGRwX2NvbXAg KmNvbXAgPSBtdGtfY3J0Yy0+ZGRwX2NvbXBbMF07DQo+ID4gwqAJaW50IHJldDsNCj4gPiArCWlu dCBpLCBqOw0KPiA+ICsJaW50IG1tc3lzX2NudCA9IDA7DQo+ID4gwqANCj4gPiDCoAlEUk1fREVC VUdfRFJJVkVSKCIlcyAlZFxuIiwgX19mdW5jX18sIGNydGMtPmJhc2UuaWQpOw0KPiA+IMKgDQo+ ID4gLQlyZXQgPSBtdGtfZGRwX2NvbXBfcG93ZXJfb24oY29tcCk7DQo+ID4gLQlpZiAocmV0IDwg MCkgew0KPiA+IC0JCURSTV9ERVZfRVJST1IoY29tcC0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBw b3dlcg0KPiA+IGRvbWFpbjogJWRcbiIsIHJldCk7DQo+ID4gLQkJcmV0dXJuOw0KPiA+ICsJZm9y IChpID0gMDsgaSA8IE1BWF9NTVNZUzsgaSsrKQ0KPiA+ICsJCWlmIChtdGtfY3J0Yy0+ZXhpc3Rb aV0pDQo+ID4gKwkJCW1tc3lzX2NudCsrOw0KPiA+ICsNCj4gPiArCWlmIChtbXN5c19jbnQgPT0g MSkgew0KPiA+ICsJCXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoY29tcC0+ZGV2KTsN Cj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlEUk1fREVWX0VSUk9SKGNvbXAtPmRldiwg IkZhaWxlZCB0byBlbmFibGUNCj4gPiBwb3dlciBkb21haW46ICVkXG4iLCByZXQpOw0KPiA+ICsJ CQlyZXR1cm47DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBp IDwgTUFYX01NU1lTOyBpKyspIHsNCj4gPiArCQkJaWYgKCFtdGtfY3J0Yy0+ZXhpc3RbaV0pDQo+ ID4gKwkJCQljb250aW51ZTsNCj4gPiArCQkJcmV0ID0gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dl dChtdGtfY3J0Yy0NCj4gPiA+bW1zeXNfZGV2W2ldKTsNCj4gPiArCQkJaWYgKHJldCA8IDApIHsN Cj4gPiArCQkJCURSTV9ERVZfRVJST1IobXRrX2NydGMtDQo+ID4gPm1tc3lzX2RldltpXSwNCj4g PiArCQkJCQnCoMKgwqDCoMKgICJGYWlsZWQgdG8gZW5hYmxlDQo+ID4gcG93ZXIgZG9tYWluOiAl ZFxuIiwgcmV0KTsNCj4gPiArCQkJCWZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkNCj4gPiAr CQkJCQlpZiAobXRrX2NydGMtPmV4aXN0W2ldKQ0KPiA+ICsJCQkJCQlwbV9ydW50aW1lX3B1dChj b20NCj4gPiBwLT5kZXYpOw0KPiA+ICsJCQkJcmV0dXJuOw0KPiA+ICsJCQl9DQo+ID4gKwkJfQ0K PiA+IMKgCX0NCj4gPiDCoA0KPiA+IMKgCW10a19jcnRjX3VwZGF0ZV9vdXRwdXQoY3J0Yywgc3Rh dGUpOw0KPiA+IEBAIC03NDYsMTIgKzg2MCwxNyBAQCBzdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9t aWNfZGlzYWJsZShzdHJ1Y3QNCj4gPiBkcm1fY3J0YyAqY3J0YywNCj4gPiDCoHsNCj4gPiDCoAlz dHJ1Y3QgbXRrX2NydGMgKm10a19jcnRjID0gdG9fbXRrX2NydGMoY3J0Yyk7DQo+ID4gwqAJc3Ry dWN0IG10a19kZHBfY29tcCAqY29tcCA9IG10a19jcnRjLT5kZHBfY29tcFswXTsNCj4gPiAtCWlu dCBpOw0KPiA+ICsJaW50IGksIHJldDsNCj4gPiArCWludCBtbXN5c19jbnQgPSAwOw0KPiA+IMKg DQo+ID4gwqAJRFJNX0RFQlVHX0RSSVZFUigiJXMgJWRcbiIsIF9fZnVuY19fLCBjcnRjLT5iYXNl LmlkKTsNCj4gPiDCoAlpZiAoIW10a19jcnRjLT5lbmFibGVkKQ0KPiA+IMKgCQlyZXR1cm47DQo+ ID4gwqANCj4gPiArCWZvciAoaSA9IDA7IGkgPCBNQVhfTU1TWVM7IGkrKykNCj4gPiArCQlpZiAo bXRrX2NydGMtPmV4aXN0W2ldKQ0KPiA+ICsJCQltbXN5c19jbnQrKzsNCj4gPiArDQo+ID4gwqAJ LyogU2V0IGFsbCBwZW5kaW5nIHBsYW5lIHN0YXRlIHRvIGRpc2FibGVkICovDQo+ID4gwqAJZm9y IChpID0gMDsgaSA8IG10a19jcnRjLT5sYXllcl9ucjsgaSsrKSB7DQo+ID4gwqAJCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lID0gJm10a19jcnRjLT5wbGFuZXNbaV07DQo+ID4gQEAgLTc3Niw3ICs4 OTUsMjEgQEAgc3RhdGljIHZvaWQgbXRrX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0DQo+ID4g ZHJtX2NydGMgKmNydGMsDQo+ID4gwqANCj4gPiDCoAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMp Ow0KPiA+IMKgCW10a19jcnRjX2RkcF9od19maW5pKG10a19jcnRjKTsNCj4gPiAtCW10a19kZHBf Y29tcF9wb3dlcl9vZmYoY29tcCk7DQo+ID4gKw0KPiA+ICsJaWYgKG1tc3lzX2NudCA+IDEpIHsN Cj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgTUFYX01NU1lTOyBpKyspIHsNCj4gPiArCQkJaWYgKG10 a19jcnRjLT5leGlzdFtpXSkgew0KPiA+ICsJCQkJcmV0ID0gcG1fcnVudGltZV9wdXQobXRrX2Ny dGMtDQo+ID4gPm1tc3lzX2RldltpXSk7DQo+ID4gKwkJCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJ CQlEUk1fREVWX0VSUk9SKG10a19jcnRjLQ0KPiA+ID5tbXN5c19kZXZbaV0sDQo+ID4gKwkJCQkJ CcKgwqDCoMKgwqAgIkZhaWxlZCB0bw0KPiA+IGRpc2FibGUgcG93ZXIgZG9tYWluOiAlZFxuIiwg cmV0KTsNCj4gPiArCQkJfQ0KPiA+ICsJCX0NCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcmV0ID0g cG1fcnVudGltZV9wdXQoY29tcC0+ZGV2KTsNCj4gPiArCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJ RFJNX0RFVl9FUlJPUihjb21wLT5kZXYsICJGYWlsZWQgdG8NCj4gPiBkaXNhYmxlIHBvd2VyIGRv bWFpbjogJWRcbiIsIHJldCk7DQo+ID4gKwl9DQo+ID4gwqANCj4gPiDCoAltdGtfY3J0Yy0+ZW5h YmxlZCA9IGZhbHNlOw0KPiA+IMKgfQ0KPiA+IEBAIC05MzcsNDkgKzEwNzAsMTA4IEBAIHN0cnVj dCBkZXZpY2UgKm10a19jcnRjX2RtYV9kZXZfZ2V0KHN0cnVjdA0KPiA+IGRybV9jcnRjICpjcnRj KQ0KPiA+IMKgCXJldHVybiBtdGtfY3J0Yy0+ZG1hX2RldjsNCj4gPiDCoH0NCj4gPiDCoA0KPiA+ IC1pbnQgbXRrX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LCBjb25zdCB1 bnNpZ25lZCBpbnQNCj4gPiAqcGF0aCwNCj4gPiAtCQnCoMKgwqAgdW5zaWduZWQgaW50IHBhdGhf bGVuLCBpbnQgcHJpdl9kYXRhX2luZGV4LA0KPiA+IC0JCcKgwqDCoCBjb25zdCBzdHJ1Y3QgbXRr X2RybV9yb3V0ZSAqY29ubl9yb3V0ZXMsDQo+ID4gLQkJwqDCoMKgIHVuc2lnbmVkIGludCBudW1f Y29ubl9yb3V0ZXMpDQo+ID4gK2ludCBtdGtfY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRybV9kZXYsIGVudW0gbXRrX2NydGNfcGF0aA0KPiA+IHBhdGhfc2VsKQ0KPiA+IMKgew0KPiA+ IMKgCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXYgPSBkcm1fZGV2LT5kZXZfcHJpdmF0ZTsN Cj4gPiDCoAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkcm1fZGV2LT5kZXY7DQo+ID4gwqAJc3RydWN0 IG10a19jcnRjICptdGtfY3J0YzsNCj4gPiDCoAl1bnNpZ25lZCBpbnQgbnVtX2NvbXBfcGxhbmVz ID0gMDsNCj4gPiDCoAlpbnQgcmV0Ow0KPiA+IC0JaW50IGk7DQo+ID4gKwlpbnQgaSwgaiwgazsN Cj4gPiDCoAlib29sIGhhc19jdG0gPSBmYWxzZTsNCj4gPiDCoAl1aW50IGdhbW1hX2x1dF9zaXpl ID0gMDsNCj4gPiDCoAlzdHJ1Y3QgZHJtX2NydGMgKnRtcDsNCj4gPiDCoAlpbnQgY3J0Y19pID0g MDsNCj4gPiAtDQo+ID4gLQlpZiAoIXBhdGgpDQo+ID4gLQkJcmV0dXJuIDA7DQo+ID4gLQ0KPiA+ IC0JcHJpdiA9IHByaXYtPmFsbF9kcm1fcHJpdmF0ZVtwcml2X2RhdGFfaW5kZXhdOw0KPiA+ICsJ c3RydWN0IG10a19kcm1fcHJpdmF0ZSAqc3Vic3lzX3ByaXY7DQo+ID4gKwlzdHJ1Y3QgbXRrX2Ny dGNfY29tcF9pbmZvIHBhdGhbRERQX0NPTVBPTkVOVF9JRF9NQVhdOw0KPiA+ICsJdW5zaWduZWQg aW50IHBhdGhfbGVuID0gMDsNCj4gPiArCWNvbnN0IHN0cnVjdCBtdGtfZHJtX3JvdXRlICpjb25u X3JvdXRlcyA9IE5VTEw7DQo+ID4gKwl1bnNpZ25lZCBpbnQgbnVtX2Nvbm5fcm91dGVzID0gMDsN Cj4gPiArCWVudW0gbXRrX2RybV9tbXN5cyBjb25uX21tc3lzOw0KPiA+IMKgDQo+ID4gwqAJZHJt X2Zvcl9lYWNoX2NydGModG1wLCBkcm1fZGV2KQ0KPiA+IMKgCQljcnRjX2krKzsNCj4gPiDCoA0K PiA+ICsJZm9yIChqID0gMDsgaiA8IHByaXYtPmRhdGEtPm1tc3lzX2Rldl9udW07IGorKykgew0K PiA+ICsJCWZvciAoayA9IDA7IGsgPCBNQVhfTU1TWVM7IGsrKykgew0KPiA+ICsJCQljb25zdCB1 bnNpZ25lZCBpbnQgKnN1YnN5c19wYXRoOw0KPiA+ICsJCQl1bnNpZ25lZCBpbnQgc3Vic3lzX3Bh dGhfbGVuOw0KPiA+ICsJCQl1bnNpZ25lZCBpbnQgb3JkZXIgPSAwOw0KPiA+ICsNCj4gPiArCQkJ c3Vic3lzX3ByaXYgPSBwcml2LT5hbGxfZHJtX3ByaXZhdGVba107DQo+ID4gKwkJCWlmICghc3Vi c3lzX3ByaXYpDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJCWlmIChwYXRoX3Nl bCA9PSBDUlRDX01BSU4pIHsNCj4gPiArCQkJCXN1YnN5c19wYXRoID0gc3Vic3lzX3ByaXYtPmRh dGEtDQo+ID4gPm1haW5fcGF0aDsNCj4gPiArCQkJCXN1YnN5c19wYXRoX2xlbiA9IHN1YnN5c19w cml2LQ0KPiA+ID5kYXRhLT5tYWluX2xlbjsNCj4gPiArCQkJCW9yZGVyID0gc3Vic3lzX3ByaXYt PmRhdGEtDQo+ID4gPm1haW5fb3JkZXI7DQo+ID4gKwkJCX0gZWxzZSBpZiAocGF0aF9zZWwgPT0g Q1JUQ19FWFQpIHsNCj4gPiArCQkJCXN1YnN5c19wYXRoID0gc3Vic3lzX3ByaXYtPmRhdGEtDQo+ ID4gPmV4dF9wYXRoOw0KPiA+ICsJCQkJc3Vic3lzX3BhdGhfbGVuID0gc3Vic3lzX3ByaXYtDQo+ ID4gPmRhdGEtPmV4dF9sZW47DQo+ID4gKwkJCQlvcmRlciA9IHN1YnN5c19wcml2LT5kYXRhLQ0K PiA+ID5leHRfb3JkZXI7DQo+ID4gKwkJCX0gZWxzZSBpZiAocGF0aF9zZWwgPT0gQ1JUQ19USElS RCkgew0KPiA+ICsJCQkJc3Vic3lzX3BhdGggPSBzdWJzeXNfcHJpdi0+ZGF0YS0NCj4gPiA+dGhp cmRfcGF0aDsNCj4gPiArCQkJCXN1YnN5c19wYXRoX2xlbiA9IHN1YnN5c19wcml2LQ0KPiA+ID5k YXRhLT50aGlyZF9sZW47DQo+ID4gKwkJCQlvcmRlciA9IHN1YnN5c19wcml2LT5kYXRhLQ0KPiA+ ID50aGlyZF9vcmRlcjsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKHN1YnN5c19wcml2 LT5kYXRhLT5udW1fY29ubl9yb3V0ZXMpIHsNCj4gPiArCQkJCWNvbm5fcm91dGVzID0gc3Vic3lz X3ByaXYtPmRhdGEtDQo+ID4gPmNvbm5fcm91dGVzOw0KPiA+ICsJCQkJbnVtX2Nvbm5fcm91dGVz ID0gc3Vic3lzX3ByaXYtDQo+ID4gPmRhdGEtPm51bV9jb25uX3JvdXRlczsNCj4gPiArCQkJCWNv bm5fbW1zeXMgPSBzdWJzeXNfcHJpdi0+ZGF0YS0NCj4gPiA+bW1zeXNfaWQ7DQo+ID4gKwkJCX0N Cj4gPiArDQo+ID4gKwkJCWlmIChqICE9IG9yZGVyKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4g KwkJCWlmICghc3Vic3lzX3BhdGhfbGVuKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKw0KPiA+ ICsJCQlmb3IgKGkgPSAwOyBpIDwgc3Vic3lzX3BhdGhfbGVuOyBpKyspIHsNCj4gPiArCQkJCXBh dGhbcGF0aF9sZW5dLnN5cyA9IHN1YnN5c19wcml2LQ0KPiA+ID5kYXRhLT5tbXN5c19pZDsNCj4g PiArCQkJCXBhdGhbcGF0aF9sZW5dLmNvbXBfaWQgPQ0KPiA+IHN1YnN5c19wYXRoW2ldOw0KPiA+ ICsJCQkJcGF0aF9sZW4rKzsNCj4gPiArCQkJfQ0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlpZiAoIXBhdGhfbGVuKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiArCWlmIChu dW1fY29ubl9yb3V0ZXMpIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Nvbm5fcm91dGVz OyBpKyspDQo+ID4gKwkJCWlmIChjb25uX3JvdXRlcy0+Y3J0Y19pZCA9PSBjcnRjX2kpDQo+ID4g KwkJCQlicmVhazsNCj4gPiArCQlpZiAoaSA9PSBudW1fY29ubl9yb3V0ZXMpIHsNCj4gPiArCQkJ bnVtX2Nvbm5fcm91dGVzID0gMDsNCj4gPiArCQkJY29ubl9yb3V0ZXMgPSBOVUxMOw0KPiA+ICsJ CX0NCj4gPiArCX0NCj4gPiArDQo+ID4gwqAJZm9yIChpID0gMDsgaSA8IHBhdGhfbGVuOyBpKysp IHsNCj4gPiAtCQllbnVtIG10a19kZHBfY29tcF9pZCBjb21wX2lkID0gcGF0aFtpXTsNCj4gPiAr CQllbnVtIG10a19kZHBfY29tcF9pZCBjb21wX2lkID0gcGF0aFtpXS5jb21wX2lkOw0KPiA+IMKg CQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQo+ID4gwqAJCXN0cnVjdCBtdGtfZGRwX2NvbXAg KmNvbXA7DQo+ID4gwqANCj4gPiArCQlwcml2ID0gcHJpdi0+YWxsX2RybV9wcml2YXRlW3BhdGhb aV0uc3lzXTsNCj4gPiDCoAkJbm9kZSA9IHByaXYtPmNvbXBfbm9kZVtjb21wX2lkXTsNCj4gPiDC oAkJY29tcCA9ICZwcml2LT5kZHBfY29tcFtjb21wX2lkXTsNCj4gPiDCoA0KPiA+IMKgCQkvKiBO b3QgYWxsIGRybSBjb21wb25lbnRzIGhhdmUgYSBEVFMgZGV2aWNlIG5vZGUsDQo+ID4gc3VjaCBh cyBvdmxfYWRhcHRvciwNCj4gPiDCoAkJICogd2hpY2ggaXMgdGhlIGRybSBicmluZyB1cCBzdWIg ZHJpdmVyDQo+ID4gwqAJCSAqLw0KPiA+IC0JCWlmICghbm9kZSAmJiBjb21wX2lkICE9DQo+ID4g RERQX0NPTVBPTkVOVF9EUk1fT1ZMX0FEQVBUT1IpIHsNCj4gPiArCQlpZiAoIW5vZGUgJiYgY29t cF9pZCAhPQ0KPiA+IEREUF9DT01QT05FTlRfRFJNX09WTF9BREFQVE9SICYmDQo+ID4gKwkJwqDC oMKgIGNvbXBfaWQgIT0gRERQX0NPTVBPTkVOVF9EUk1fT1ZMU1lTX0FEQVBUT1IwDQo+ID4gJiYN Cj4gPiArCQnCoMKgwqAgY29tcF9pZCAhPSBERFBfQ09NUE9ORU5UX0RSTV9PVkxTWVNfQURBUFRP UjENCj4gPiAmJg0KPiA+ICsJCcKgwqDCoCBjb21wX2lkICE9IEREUF9DT01QT05FTlRfRFJNX09W TFNZU19BREFQVE9SMg0KPiA+ICYmDQo+ID4gKwkJwqDCoMKgIG10a19kZHBfY29tcF9nZXRfdHlw ZShjb21wX2lkKSAhPQ0KPiA+IE1US19ESVNQX1ZJUlRVQUwpIHsNCj4gPiDCoAkJCWRldl9pbmZv KGRldiwNCj4gPiDCoAkJCQkiTm90IGNyZWF0aW5nIGNydGMgJWQgYmVjYXVzZQ0KPiA+IGNvbXBv bmVudCAlZCBpcyBkaXNhYmxlZCBvciBtaXNzaW5nXG4iLA0KPiA+IMKgCQkJCWNydGNfaSwgY29t cF9pZCk7DQo+ID4gwqAJCQlyZXR1cm4gMDsNCj4gPiDCoAkJfQ0KPiA+IMKgDQo+ID4gLQkJaWYg KCFjb21wLT5kZXYpIHsNCj4gPiArCQlpZiAoIWNvbXAtPmRldiAmJiBtdGtfZGRwX2NvbXBfZ2V0 X3R5cGUoY29tcF9pZCkNCj4gPiAhPSBNVEtfRElTUF9WSVJUVUFMKSB7DQo+ID4gwqAJCQlkZXZf ZXJyKGRldiwgIkNvbXBvbmVudCAlcE9GIG5vdA0KPiA+IGluaXRpYWxpemVkXG4iLCBub2RlKTsN Cj4gPiDCoAkJCXJldHVybiAtRU5PREVWOw0KPiA+IMKgCQl9DQo+ID4gQEAgLTk4OSw3ICsxMTgx LDkgQEAgaW50IG10a19jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZQ0KPiA+ICpkcm1fZGV2 LCBjb25zdCB1bnNpZ25lZCBpbnQgKnBhdGgsDQo+ID4gwqAJaWYgKCFtdGtfY3J0YykNCj4gPiDC oAkJcmV0dXJuIC1FTk9NRU07DQo+ID4gwqANCj4gPiAtCW10a19jcnRjLT5tbXN5c19kZXYgPSBw cml2LT5tbXN5c19kZXY7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX01NU1lTOyBpKyspDQo+ ID4gKwkJaWYgKHByaXYtPmFsbF9kcm1fcHJpdmF0ZVtpXSkNCj4gPiArCQkJbXRrX2NydGMtPm1t c3lzX2RldltpXSA9IHByaXYtDQo+ID4gPmFsbF9kcm1fcHJpdmF0ZVtpXS0+bW1zeXNfZGV2Ow0K PiA+IMKgCW10a19jcnRjLT5kZHBfY29tcF9uciA9IHBhdGhfbGVuOw0KPiA+IMKgCW10a19jcnRj LT5kZHBfY29tcCA9IGRldm1fa2NhbGxvYyhkZXYsDQo+ID4gwqAJCQkJCcKgIG10a19jcnRjLT5k ZHBfY29tcF9uciArDQo+ID4gKGNvbm5fcm91dGVzID8gMSA6IDApLA0KPiA+IEBAIC05OTgsMTkg KzExOTIsMzYgQEAgaW50IG10a19jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZQ0KPiA+ICpk cm1fZGV2LCBjb25zdCB1bnNpZ25lZCBpbnQgKnBhdGgsDQo+ID4gwqAJaWYgKCFtdGtfY3J0Yy0+ ZGRwX2NvbXApDQo+ID4gwqAJCXJldHVybiAtRU5PTUVNOw0KPiA+IMKgDQo+ID4gLQltdGtfY3J0 Yy0+bXV0ZXggPSBtdGtfbXV0ZXhfZ2V0KHByaXYtPm11dGV4X2Rldik7DQo+ID4gLQlpZiAoSVNf RVJSKG10a19jcnRjLT5tdXRleCkpIHsNCj4gPiAtCQlyZXQgPSBQVFJfRVJSKG10a19jcnRjLT5t dXRleCk7DQo+ID4gLQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IG11dGV4OiAlZFxuIiwg cmV0KTsNCj4gPiAtCQlyZXR1cm4gcmV0Ow0KPiA+ICsJbXRrX2NydGMtPmRkcF9jb21wX3N5cyA9 IGRldm1fa21hbGxvY19hcnJheShkZXYsIG10a19jcnRjLQ0KPiA+ID5kZHBfY29tcF9uciArDQo+ ID4gKwkJCQkJCcKgwqDCoCAoY29ubl9yb3V0ZXMgPw0KPiA+IDEgOiAwKSwNCj4gPiArCQkJCQkJ wqDCoMKgDQo+ID4gc2l6ZW9mKG10a19jcnRjLT5kZHBfY29tcF9zeXMpLCBHRlBfS0VSTkVMKTsN Cj4gPiArCWlmICghbXRrX2NydGMtPmRkcF9jb21wX3N5cykNCj4gPiArCQlyZXR1cm4gLUVOT01F TTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX01NU1lTOyBpKyspIHsNCj4gPiAr CQlpZiAoIXByaXYtPmFsbF9kcm1fcHJpdmF0ZVtpXSkNCj4gPiArCQkJY29udGludWU7DQo+ID4g Kw0KPiA+ICsJCXByaXYgPSBwcml2LT5hbGxfZHJtX3ByaXZhdGVbaV07DQo+ID4gKwkJbXRrX2Ny dGMtPm11dGV4W2ldID0gbXRrX211dGV4X2dldChwcml2LQ0KPiA+ID5tdXRleF9kZXYpOw0KPiA+ ICsJCWlmIChJU19FUlIobXRrX2NydGMtPm11dGV4W2ldKSkgew0KPiA+ICsJCQlyZXQgPSBQVFJf RVJSKG10a19jcnRjLT5tdXRleFtpXSk7DQo+ID4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IGdldCBtdXRleDogJWRcbiIsDQo+ID4gcmV0KTsNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiAr CQl9DQo+ID4gwqAJfQ0KPiA+IMKgDQo+ID4gwqAJZm9yIChpID0gMDsgaSA8IG10a19jcnRjLT5k ZHBfY29tcF9ucjsgaSsrKSB7DQo+ID4gLQkJdW5zaWduZWQgaW50IGNvbXBfaWQgPSBwYXRoW2ld Ow0KPiA+ICsJCXVuc2lnbmVkIGludCBjb21wX2lkID0gcGF0aFtpXS5jb21wX2lkOw0KPiA+IMKg CQlzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wOw0KPiA+IMKgDQo+ID4gKwkJcHJpdiA9IHByaXYt PmFsbF9kcm1fcHJpdmF0ZVtwYXRoW2ldLnN5c107DQo+ID4gwqAJCWNvbXAgPSAmcHJpdi0+ZGRw X2NvbXBbY29tcF9pZF07DQo+ID4gKwkJaWYgKG10a19kZHBfY29tcF9nZXRfdHlwZShjb21wX2lk KSA9PQ0KPiA+IE1US19ESVNQX1ZJUlRVQUwpDQo+ID4gKwkJCWNvbXAtPmlkID0gY29tcF9pZDsN Cj4gPiDCoAkJbXRrX2NydGMtPmRkcF9jb21wW2ldID0gY29tcDsNCj4gPiArCQltdGtfY3J0Yy0+ ZGRwX2NvbXBfc3lzW2ldID0gcGF0aFtpXS5zeXM7DQo+ID4gKwkJbXRrX2NydGMtPmV4aXN0W3Bh dGhbaV0uc3lzXSA9IHRydWU7DQo+ID4gwqANCj4gPiDCoAkJaWYgKGNvbXAtPmZ1bmNzKSB7DQo+ ID4gwqAJCQlpZiAoY29tcC0+ZnVuY3MtPmdhbW1hX3NldCAmJiBjb21wLT5mdW5jcy0NCj4gPiA+ Z2FtbWFfZ2V0X2x1dF9zaXplKSB7DQo+ID4gQEAgLTEwNDcsOCArMTI1OCwxMCBAQCBpbnQgbXRr X2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlDQo+ID4gKmRybV9kZXYsIGNvbnN0IHVuc2ln bmVkIGludCAqcGF0aCwNCj4gPiDCoAkgKiBJbiB0aGUgY2FzZSBvZiBvdmxfYWRhcHRvciBzdWIg ZHJpdmVyLCBpdCBuZWVkcyB0byB1c2UNCj4gPiB0aGUNCj4gPiDCoAkgKiBkbWFfZGV2X2dldCBm dW5jdGlvbiB0byBnZXQgcmVwcmVzZW50YXRpdmUgZG1hIGRldi4NCj4gPiDCoAkgKi8NCj4gPiAt CW10a19jcnRjLT5kbWFfZGV2ID0gbXRrX2RkcF9jb21wX2RtYV9kZXZfZ2V0KCZwcml2LQ0KPiA+ ID5kZHBfY29tcFtwYXRoWzBdXSk7DQo+ID4gKwlwcml2ID0gcHJpdi0+YWxsX2RybV9wcml2YXRl W3BhdGhbMF0uc3lzXTsNCj4gPiArCW10a19jcnRjLT5kbWFfZGV2ID0gbXRrX2RkcF9jb21wX2Rt YV9kZXZfZ2V0KCZwcml2LQ0KPiA+ID5kZHBfY29tcFtwYXRoWzBdLmNvbXBfaWRdKTsNCj4gPiDC oA0KPiA+ICsJbXRrX2NydGMtPnZkaXNwX2FvX2RldiA9IHByaXYtPnZkaXNwX2FvX2RldjsNCj4g PiDCoAlyZXQgPSBtdGtfY3J0Y19pbml0KGRybV9kZXYsIG10a19jcnRjLCBjcnRjX2kpOw0KPiA+ IMKgCWlmIChyZXQgPCAwKQ0KPiA+IMKgCQlyZXR1cm4gcmV0Ow0KPiA+IEBAIC0xMDYxLDcgKzEy NzQsNyBAQCBpbnQgbXRrX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlDQo+ID4gKmRybV9k ZXYsIGNvbnN0IHVuc2lnbmVkIGludCAqcGF0aCwNCj4gPiDCoA0KPiA+IMKgI2lmIElTX1JFQUNI QUJMRShDT05GSUdfTVRLX0NNRFEpDQo+ID4gwqAJaSA9IHByaXYtPm1ib3hfaW5kZXgrKzsNCj4g PiAtCW10a19jcnRjLT5jbWRxX2NsaWVudC5jbGllbnQuZGV2ID0gbXRrX2NydGMtPm1tc3lzX2Rl djsNCj4gPiArCW10a19jcnRjLT5jbWRxX2NsaWVudC5jbGllbnQuZGV2ID0gbXRrX2NydGMtDQo+ ID4gPm1tc3lzX2Rldltwcml2LT5kYXRhLT5tbXN5c19pZF07DQo+ID4gwqAJbXRrX2NydGMtPmNt ZHFfY2xpZW50LmNsaWVudC50eF9ibG9jayA9IGZhbHNlOw0KPiA+IMKgCW10a19jcnRjLT5jbWRx X2NsaWVudC5jbGllbnQua25vd3NfdHhkb25lID0gdHJ1ZTsNCj4gPiDCoAltdGtfY3J0Yy0+Y21k cV9jbGllbnQuY2xpZW50LnJ4X2NhbGxiYWNrID0gZGRwX2NtZHFfY2I7DQo+ID4gQEAgLTExMDEs NiArMTMxNCw3IEBAIGludCBtdGtfY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UNCj4gPiAq ZHJtX2RldiwgY29uc3QgdW5zaWduZWQgaW50ICpwYXRoLA0KPiA+IMKgI2VuZGlmDQo+ID4gwqAN Cj4gPiDCoAlpZiAoY29ubl9yb3V0ZXMpIHsNCj4gPiArCQlwcml2ID0gcHJpdi0+YWxsX2RybV9w cml2YXRlW2Nvbm5fbW1zeXNdOw0KPiA+IMKgCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Nvbm5fcm91 dGVzOyBpKyspIHsNCj4gPiDCoAkJCXVuc2lnbmVkIGludCBjb21wX2lkID0NCj4gPiBjb25uX3Jv dXRlc1tpXS5yb3V0ZV9kZHA7DQo+ID4gwqAJCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBw cml2LQ0KPiA+ID5jb21wX25vZGVbY29tcF9pZF07DQo+ID4gQEAgLTExMTcsNiArMTMzMSw3IEBA IGludCBtdGtfY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UNCj4gPiAqZHJtX2RldiwgY29u c3QgdW5zaWduZWQgaW50ICpwYXRoLA0KPiA+IMKgCQkJbXRrX2RkcF9jb21wX2VuY29kZXJfaW5k ZXhfc2V0KCZwcml2LQ0KPiA+ID5kZHBfY29tcFtjb21wX2lkXSk7DQo+ID4gwqAJCX0NCj4gPiDC oA0KPiA+ICsJCW10a19jcnRjLT5jb25uX3JvdXRlc19zeXMgPSBjb25uX21tc3lzOw0KPiA+IMKg CQltdGtfY3J0Yy0+bnVtX2Nvbm5fcm91dGVzID0gbnVtX2Nvbm5fcm91dGVzOw0KPiA+IMKgCQlt dGtfY3J0Yy0+Y29ubl9yb3V0ZXMgPSBjb25uX3JvdXRlczsNCj4gPiDCoA0KPiA+IEBAIC0xMTI0 LDUgKzEzMzksMTAgQEAgaW50IG10a19jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZQ0KPiA+ ICpkcm1fZGV2LCBjb25zdCB1bnNpZ25lZCBpbnQgKnBhdGgsDQo+ID4gwqAJCW10a19jcnRjLT5k ZHBfY29tcF9ucisrOw0KPiA+IMKgCX0NCj4gPiDCoA0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1B WF9NTVNZUzsgaSsrKQ0KPiA+ICsJCWlmIChtdGtfY3J0Yy0+ZXhpc3RbaV0pDQo+ID4gKwkJCWRl dmljZV9saW5rX2FkZChtdGtfY3J0Yy0+YmFzZS5kZXYtPmRldiwNCj4gPiArCQkJCQlwcml2LT5h bGxfZHJtX3ByaXZhdGVbaV0tDQo+ID4gPm11dGV4X2RldiwgMCk7DQo+ID4gKw0KPiA+IMKgCXJl dHVybiAwOw0KPiA+IMKgfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2NydGMuaA0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmgN Cj4gPiBpbmRleCAzODhlOTAwYjZmNGQuLjI1NWYyODIzZDE3YSAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuaA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5oDQo+ID4gQEAgLTE1LDEwICsxNSw4IEBADQo+ID4gwqAj ZGVmaW5lIE1US19NSU5fQlBDCTMNCj4gPiDCoA0KPiA+IMKgdm9pZCBtdGtfY3J0Y19jb21taXQo c3RydWN0IGRybV9jcnRjICpjcnRjKTsNCj4gPiAtaW50IG10a19jcnRjX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtX2RldiwgY29uc3QgdW5zaWduZWQgaW50DQo+ID4gKnBhdGgsDQo+ID4g LQkJwqDCoMKgIHVuc2lnbmVkIGludCBwYXRoX2xlbiwgaW50IHByaXZfZGF0YV9pbmRleCwNCj4g PiAtCQnCoMKgwqAgY29uc3Qgc3RydWN0IG10a19kcm1fcm91dGUgKmNvbm5fcm91dGVzLA0KPiA+ IC0JCcKgwqDCoCB1bnNpZ25lZCBpbnQgbnVtX2Nvbm5fcm91dGVzKTsNCj4gPiAraW50IG10a19j cnRjX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwNCj4gPiArCQnCoMKgwqAgZW51 bSBtdGtfY3J0Y19wYXRoIHBhdGhfc2VsKTsNCj4gPiDCoGludCBtdGtfY3J0Y19wbGFuZV9jaGVj ayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fcGxhbmUNCj4gPiAqcGxhbmUsDQo+ ID4gwqAJCQkgc3RydWN0IG10a19wbGFuZV9zdGF0ZSAqc3RhdGUpOw0KPiA+IMKgdm9pZCBtdGtf Y3J0Y19hc3luY191cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX3BsYW5l DQo+ID4gKnBsYW5lLA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RkcF9jb21wLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGRwX2Nv bXAuYw0KPiA+IGluZGV4IDQ5MmI4ZDk2NTMwOS4uZjg0MTE4NGQxZTA2IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGRwX2NvbXAuYw0KPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGRwX2NvbXAuYw0KPiA+IEBAIC00NjQsNiArNDY0 LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdA0KPiA+IG10a19kZHBfY29tcF9zdGVtW01U S19ERFBfQ09NUF9UWVBFX01BWF0gPSB7DQo+ID4gwqAJW01US19ESVNQX1BXTV0gPSAicHdtIiwN Cj4gPiDCoAlbTVRLX0RJU1BfUkRNQV0gPSAicmRtYSIsDQo+ID4gwqAJW01US19ESVNQX1VGT0Vd ID0gInVmb2UiLA0KPiA+ICsJW01US19ESVNQX1ZJUlRVQUxdID0gInZpcnR1YWwiLA0KPiA+IMKg CVtNVEtfRElTUF9XRE1BXSA9ICJ3ZG1hIiwNCj4gPiDCoAlbTVRLX0RQX0lOVEZdID0gImRwLWlu dGYiLA0KPiA+IMKgCVtNVEtfRFBJXSA9ICJkcGkiLA0KPiA+IEBAIC00ODcsNiArNDg4LDE1IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX21hdGNoDQo+ID4gbXRrX2RkcF9tYXRj aGVzW0REUF9DT01QT05FTlRfRFJNX0lEX01BWF0NCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9DT0xP UjBdCQk9IHsNCj4gPiBNVEtfRElTUF9DT0xPUiwJCTAsICZkZHBfY29sb3IgfSwNCj4gPiDCoAlb RERQX0NPTVBPTkVOVF9DT0xPUjFdCQk9IHsNCj4gPiBNVEtfRElTUF9DT0xPUiwJCTEsICZkZHBf Y29sb3IgfSwNCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9ESVRIRVIwXQkJPSB7DQo+ID4gTVRLX0RJ U1BfRElUSEVSLAkJMCwgJmRkcF9kaXRoZXIgfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RMSV9B U1lOQzBdwqDCoMKgwqDCoCA9IHsNCj4gPiBNVEtfRElTUF9WSVJUVUFMLMKgwqDCoMKgwqDCoMKg wqDCoMKgIC0xLCBOVUxMIH0sDQo+ID4gKwlbRERQX0NPTVBPTkVOVF9ETElfQVNZTkMxXcKgwqDC oMKgwqAgPSB7DQo+ID4gTVRLX0RJU1BfVklSVFVBTCzCoMKgwqDCoMKgwqDCoMKgwqDCoCAtMSwg TlVMTCB9LA0KPiA+ICsJW0REUF9DT01QT05FTlRfRExJX0FTWU5DOF3CoMKgwqDCoMKgID0gew0K PiA+IE1US19ESVNQX1ZJUlRVQUwswqDCoMKgwqDCoMKgwqDCoMKgwqAgLTEsIE5VTEwgfSwNCj4g PiArCVtERFBfQ09NUE9ORU5UX0RMSV9BU1lOQzIxXcKgwqDCoMKgID0gew0KPiA+IE1US19ESVNQ X1ZJUlRVQUwswqDCoMKgwqDCoMKgwqDCoMKgwqAgLTEsIE5VTEwgfSwNCj4gPiArCVtERFBfQ09N UE9ORU5UX0RMSV9BU1lOQzIyXcKgwqDCoMKgID0gew0KPiA+IE1US19ESVNQX1ZJUlRVQUwswqDC oMKgwqDCoMKgwqDCoMKgwqAgLTEsIE5VTEwgfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RMSV9B U1lOQzIzXcKgwqDCoMKgID0gew0KPiA+IE1US19ESVNQX1ZJUlRVQUwswqDCoMKgwqDCoMKgwqDC oMKgwqAgLTEsIE5VTEwgfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RMT19BU1lOQzFdwqDCoMKg wqDCoCA9IHsNCj4gPiBNVEtfRElTUF9WSVJUVUFMLMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0xLCBO VUxMIH0sDQo+ID4gKwlbRERQX0NPTVBPTkVOVF9ETE9fQVNZTkMyXcKgwqDCoMKgwqAgPSB7DQo+ ID4gTVRLX0RJU1BfVklSVFVBTCzCoMKgwqDCoMKgwqDCoMKgwqDCoCAtMSwgTlVMTCB9LA0KPiA+ ICsJW0REUF9DT01QT05FTlRfRExPX0FTWU5DM13CoMKgwqDCoMKgID0gew0KPiA+IE1US19ESVNQ X1ZJUlRVQUwswqDCoMKgwqDCoMKgwqDCoMKgwqAgLTEsIE5VTEwgfSwNCj4gPiDCoAlbRERQX0NP TVBPTkVOVF9EUF9JTlRGMF0JPSB7DQo+ID4gTVRLX0RQX0lOVEYsCQkwLCAmZGRwX2RwaSB9LA0K PiA+IMKgCVtERFBfQ09NUE9ORU5UX0RQX0lOVEYxXQk9IHsNCj4gPiBNVEtfRFBfSU5URiwJCTEs ICZkZHBfZHBpIH0sDQo+ID4gwqAJW0REUF9DT01QT05FTlRfRFBJMF0JCT0gew0KPiA+IE1US19E UEksCQkJMCwgJmRkcF9kcGkgfSwNCj4gPiBAQCAtNDk0LDYgKzUwNCw5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgbXRrX2RkcF9jb21wX21hdGNoDQo+ID4gbXRrX2RkcF9tYXRjaGVzW0REUF9DT01Q T05FTlRfRFJNX0lEX01BWF0NCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9EUk1fT1ZMX0FEQVBUT1Jd CT0gew0KPiA+IE1US19ESVNQX09WTF9BREFQVE9SLAkwLCAmZGRwX292bF9hZGFwdG9yIH0sDQo+ ID4gwqAJW0REUF9DT01QT05FTlRfRFJNX09WTFNZU19BREFQVE9SMF0gPSB7DQo+ID4gTVRLX0RJ U1BfT1ZMU1lTX0FEQVBUT1IsIDAsICZkZHBfb3Zsc3lzX2FkYXB0b3J9LA0KPiA+IMKgCVtERFBf Q09NUE9ORU5UX0RSTV9PVkxTWVNfQURBUFRPUjFdID0gew0KPiA+IE1US19ESVNQX09WTFNZU19B REFQVE9SLCAxLCAmZGRwX292bHN5c19hZGFwdG9yfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RS TV9PVkxTWVNfQURBUFRPUjBdID0gew0KPiA+IE1US19ESVNQX09WTFNZU19BREFQVE9SLCAwLCAm ZGRwX292bHN5c19hZGFwdG9yfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RSTV9PVkxTWVNfQURB UFRPUjFdID0gew0KPiA+IE1US19ESVNQX09WTFNZU19BREFQVE9SLCAxLCAmZGRwX292bHN5c19h ZGFwdG9yfSwNCj4gPiArCVtERFBfQ09NUE9ORU5UX0RSTV9PVkxTWVNfQURBUFRPUjJdID0gew0K PiA+IE1US19ESVNQX09WTFNZU19BREFQVE9SLCAyLCAmZGRwX292bHN5c19hZGFwdG9yfSwNCj4g PiDCoAlbRERQX0NPTVBPTkVOVF9EU0MwXQkJPSB7DQo+ID4gTVRLX0RJU1BfRFNDLAkJMCwgJmRk cF9kc2MgfSwNCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9EU0MxXQkJPSB7DQo+ID4gTVRLX0RJU1Bf RFNDLAkJMSwgJmRkcF9kc2MgfSwNCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9EU0kwXQkJPSB7DQo+ ID4gTVRLX0RTSSwJCQkwLCAmZGRwX2RzaSB9LA0KPiA+IEBAIC01MTAsNyArNTIzLDEwIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX21hdGNoDQo+ID4gbXRrX2RkcF9tYXRjaGVz W0REUF9DT01QT05FTlRfRFJNX0lEX01BWF0NCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9PRDBdCQk9 IHsNCj4gPiBNVEtfRElTUF9PRCwJCTAsICZkZHBfb2QgfSwNCj4gPiDCoAlbRERQX0NPTVBPTkVO VF9PRDFdCQk9IHsNCj4gPiBNVEtfRElTUF9PRCwJCTEsICZkZHBfb2QgfSwNCj4gPiDCoAlbRERQ X0NPTVBPTkVOVF9PVkwwXQkJPSB7DQo+ID4gTVRLX0RJU1BfT1ZMLAkJMCwgJmRkcF9vdmwgfSwN Cj4gPiArCVtERFBfQ09NUE9ORU5UX09WTDBfRExPX0FTWU5DNV0gPSB7DQo+ID4gTVRLX0RJU1Bf VklSVFVBTCzCoMKgwqDCoMKgwqDCoMKgwqDCoCAtMSwgTlVMTCB9LA0KPiA+ICsJW0REUF9DT01Q T05FTlRfT1ZMMF9ETE9fQVNZTkM2XSA9IHsNCj4gPiBNVEtfRElTUF9WSVJUVUFMLMKgwqDCoMKg wqDCoMKgwqDCoMKgIC0xLCBOVUxMIH0sDQo+ID4gwqAJW0REUF9DT01QT05FTlRfT1ZMMV0JCT0g ew0KPiA+IE1US19ESVNQX09WTCwJCTEsICZkZHBfb3ZsIH0sDQo+ID4gKwlbRERQX0NPTVBPTkVO VF9PVkwxX0RMT19BU1lOQzVdID0gew0KPiA+IE1US19ESVNQX1ZJUlRVQUwswqDCoMKgwqDCoMKg wqDCoMKgwqAgLTEsIE5VTEwgfSwNCj4gPiDCoAlbRERQX0NPTVBPTkVOVF9PVkxfMkwwXQkJPSB7 DQo+ID4gTVRLX0RJU1BfT1ZMXzJMLAkJMCwgJmRkcF9vdmwgfSwNCj4gPiDCoAlbRERQX0NPTVBP TkVOVF9PVkxfMkwxXQkJPSB7DQo+ID4gTVRLX0RJU1BfT1ZMXzJMLAkJMSwgJmRkcF9vdmwgfSwN Cj4gPiDCoAlbRERQX0NPTVBPTkVOVF9PVkxfMkwyXQkJPSB7DQo+ID4gTVRLX0RJU1BfT1ZMXzJM LAkJMiwgJmRkcF9vdmwgfSwNCj4gPiBAQCAtNTY3LDEyICs1ODMsMTkgQEAgc3RhdGljIGJvb2wg bXRrX2RkcF9wYXRoX2F2YWlsYWJsZShjb25zdA0KPiA+IHVuc2lnbmVkIGludCAqcGF0aCwNCj4g PiDCoHsNCj4gPiDCoAl1bnNpZ25lZCBpbnQgaTsNCj4gPiDCoA0KPiA+ICsJaWYgKCFwYXRoX2xl bikNCj4gPiArCQlyZXR1cm4gdHJ1ZTsNCj4gPiArDQo+ID4gwqAJaWYgKCFwYXRoIHx8ICFwYXRo X2xlbikNCj4gPiDCoAkJcmV0dXJuIGZhbHNlOw0KPiA+IMKgDQo+ID4gwqAJZm9yIChpID0gMFU7 IGkgPCBwYXRoX2xlbjsgaSsrKSB7DQo+ID4gwqAJCS8qIE9WTF9BREFQVE9SIGRvZXNuJ3QgaGF2 ZSBhIGRldmljZSBub2RlICovDQo+ID4gLQkJaWYgKHBhdGhbaV0gPT0gRERQX0NPTVBPTkVOVF9E Uk1fT1ZMX0FEQVBUT1IpDQo+ID4gKwkJaWYgKHBhdGhbaV0gPT0gRERQX0NPTVBPTkVOVF9EUk1f T1ZMX0FEQVBUT1IgfHwNCj4gPiArCQnCoMKgwqAgcGF0aFtpXSA9PSBERFBfQ09NUE9ORU5UX0RS TV9PVkxTWVNfQURBUFRPUjANCj4gPiB8fA0KPiA+ICsJCQlwYXRoW2ldID09DQo+ID4gRERQX0NP TVBPTkVOVF9EUk1fT1ZMU1lTX0FEQVBUT1IxIHx8DQo+ID4gKwkJCXBhdGhbaV0gPT0NCj4gPiBE RFBfQ09NUE9ORU5UX0RSTV9PVkxTWVNfQURBUFRPUjIgfHwNCj4gPiArCQkJbXRrX2RkcF9jb21w X2dldF90eXBlKHBhdGhbaV0pID09DQo+ID4gTVRLX0RJU1BfVklSVFVBTCkNCj4gPiDCoAkJCWNv bnRpbnVlOw0KPiA+IMKgDQo+ID4gwqAJCWlmICghY29tcF9ub2RlW3BhdGhbaV1dKQ0KPiA+IEBA IC01OTcsNDQgKzYyMCw4MSBAQCBpbnQgbXRrX2RkcF9jb21wX2dldF9pZChzdHJ1Y3QgZGV2aWNl X25vZGUNCj4gPiAqbm9kZSwNCj4gPiDCoAlyZXR1cm4gLUVJTlZBTDsNCj4gPiDCoH0NCj4gPiDC oA0KPiA+ICtlbnVtIG10a19kZHBfY29tcF90eXBlIG10a19kZHBfY29tcF9nZXRfdHlwZSh1bnNp Z25lZCBpbnQgY29tcF9pZCkNCj4gPiArew0KPiA+ICsJcmV0dXJuIG10a19kZHBfbWF0Y2hlc1tj b21wX2lkXS50eXBlOw0KPiA+ICt9DQo+ID4gKw0KPiA+IMKgaW50IG10a19maW5kX3Bvc3NpYmxl X2NydGNzKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBkZXZpY2UNCj4gPiAqZGV2KQ0K PiA+IMKgew0KPiA+IMKgCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXZhdGUgPSBkcm0tPmRl dl9wcml2YXRlOw0KPiA+IMKgCWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRh dGE7DQo+ID4gwqAJc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdl9uOw0KPiA+IC0JaW50IGkg PSAwLCBqOw0KPiA+IMKgCWludCByZXQ7DQo+ID4gKwlpbnQgaSA9IDAsIGosIGNvdW50ID0gMDsN Cj4gPiArCWJvb2wgZm91bmQgPSBmYWxzZTsNCj4gPiDCoA0KPiA+IMKgCWZvciAoaiA9IDA7IGog PCBwcml2YXRlLT5kYXRhLT5tbXN5c19kZXZfbnVtOyBqKyspIHsNCj4gPiDCoAkJcHJpdl9uID0g cHJpdmF0ZS0+YWxsX2RybV9wcml2YXRlW2pdOw0KPiA+IMKgCQlkYXRhID0gcHJpdl9uLT5kYXRh Ow0KPiA+IMKgDQo+ID4gwqAJCWlmIChtdGtfZGRwX3BhdGhfYXZhaWxhYmxlKGRhdGEtPm1haW5f cGF0aCwgZGF0YS0NCj4gPiA+bWFpbl9sZW4sDQo+ID4gLQkJCQkJwqDCoCBwcml2X24tPmNvbXBf bm9kZSkpIHsNCj4gPiAtCQkJaWYgKG10a19kZHBfY29tcF9maW5kKGRldiwgZGF0YS0NCj4gPiA+ bWFpbl9wYXRoLA0KPiA+IC0JCQkJCcKgwqDCoMKgwqAgZGF0YS0+bWFpbl9sZW4sDQo+ID4gLQkJ CQkJwqDCoMKgwqDCoCBwcml2X24tPmRkcF9jb21wKSkNCj4gPiAtCQkJCXJldHVybiBCSVQoaSk7 DQo+ID4gLQkJCWkrKzsNCj4gPiAtCQl9DQo+ID4gKwkJCQkJwqDCoCBwcml2X24tPmNvbXBfbm9k ZSkpDQo+ID4gKwkJCWNvdW50Kys7DQo+ID4gKw0KPiA+ICsJCWlmIChtdGtfZGRwX2NvbXBfZmlu ZChkZXYsIGRhdGEtPm1haW5fcGF0aCwgZGF0YS0NCj4gPiA+bWFpbl9sZW4sDQo+ID4gKwkJCQnC oMKgwqDCoMKgIHByaXZfbi0+ZGRwX2NvbXApKQ0KPiA+ICsJCQlmb3VuZCA9IHRydWU7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNvdW50ID09IHByaXZhdGUtPmRhdGEtPm1tc3lzX2Rldl9u dW0pIHsNCj4gPiArCQlpZiAoZm91bmQpDQo+ID4gKwkJCXJldHVybiBCSVQoaSk7DQo+ID4gKwkJ aSsrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNvdW50ID0gMDsNCj4gPiArCWZvdW5kID0gZmFs c2U7DQo+ID4gKw0KPiA+ICsJZm9yIChqID0gMDsgaiA8IHByaXZhdGUtPmRhdGEtPm1tc3lzX2Rl dl9udW07IGorKykgew0KPiA+ICsJCXByaXZfbiA9IHByaXZhdGUtPmFsbF9kcm1fcHJpdmF0ZVtq XTsNCj4gPiArCQlkYXRhID0gcHJpdl9uLT5kYXRhOw0KPiA+IMKgDQo+ID4gwqAJCWlmIChtdGtf ZGRwX3BhdGhfYXZhaWxhYmxlKGRhdGEtPmV4dF9wYXRoLCBkYXRhLQ0KPiA+ID5leHRfbGVuLA0K PiA+IC0JCQkJCcKgwqAgcHJpdl9uLT5jb21wX25vZGUpKSB7DQo+ID4gLQkJCWlmIChtdGtfZGRw X2NvbXBfZmluZChkZXYsIGRhdGEtPmV4dF9wYXRoLA0KPiA+IC0JCQkJCcKgwqDCoMKgwqAgZGF0 YS0+ZXh0X2xlbiwNCj4gPiAtCQkJCQnCoMKgwqDCoMKgIHByaXZfbi0+ZGRwX2NvbXApKQ0KPiA+ IC0JCQkJcmV0dXJuIEJJVChpKTsNCj4gPiAtCQkJaSsrOw0KPiA+IC0JCX0NCj4gPiArCQkJCQnC oMKgIHByaXZfbi0+Y29tcF9ub2RlKSkNCj4gPiArCQkJY291bnQrKzsNCj4gPiArDQo+ID4gKwkJ aWYgKG10a19kZHBfY29tcF9maW5kKGRldiwgZGF0YS0+ZXh0X3BhdGgsIGRhdGEtDQo+ID4gPmV4 dF9sZW4sDQo+ID4gKwkJCQnCoMKgwqDCoMKgIHByaXZfbi0+ZGRwX2NvbXApKQ0KPiA+ICsJCQlm b3VuZCA9IHRydWU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNvdW50ID09IHByaXZhdGUt PmRhdGEtPm1tc3lzX2Rldl9udW0pIHsNCj4gPiArCQlpZiAoZm91bmQpDQo+ID4gKwkJCXJldHVy biBCSVQoaSk7DQo+ID4gKwkJaSsrOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNvdW50ID0gMDsN Cj4gPiArCWZvdW5kID0gZmFsc2U7DQo+ID4gKw0KPiA+ICsJZm9yIChqID0gMDsgaiA8IHByaXZh dGUtPmRhdGEtPm1tc3lzX2Rldl9udW07IGorKykgew0KPiA+ICsJCXByaXZfbiA9IHByaXZhdGUt PmFsbF9kcm1fcHJpdmF0ZVtqXTsNCj4gPiArCQlkYXRhID0gcHJpdl9uLT5kYXRhOw0KPiA+IMKg DQo+ID4gwqAJCWlmIChtdGtfZGRwX3BhdGhfYXZhaWxhYmxlKGRhdGEtPnRoaXJkX3BhdGgsIGRh dGEtDQo+ID4gPnRoaXJkX2xlbiwNCj4gPiAtCQkJCQnCoMKgIHByaXZfbi0+Y29tcF9ub2RlKSkg ew0KPiA+IC0JCQlpZiAobXRrX2RkcF9jb21wX2ZpbmQoZGV2LCBkYXRhLQ0KPiA+ID50aGlyZF9w YXRoLA0KPiA+IC0JCQkJCcKgwqDCoMKgwqAgZGF0YS0+dGhpcmRfbGVuLA0KPiA+IC0JCQkJCcKg wqDCoMKgwqAgcHJpdl9uLT5kZHBfY29tcCkpDQo+ID4gLQkJCQlyZXR1cm4gQklUKGkpOw0KPiA+ IC0JCQlpKys7DQo+ID4gLQkJfQ0KPiA+ICsJCQkJCXByaXZfbi0+Y29tcF9ub2RlKSkNCj4gPiAr CQkJY291bnQrKzsNCj4gPiArDQo+ID4gKwkJaWYgKG10a19kZHBfY29tcF9maW5kKGRldiwgZGF0 YS0+dGhpcmRfcGF0aCwgZGF0YS0NCj4gPiA+dGhpcmRfbGVuLA0KPiA+ICsJCQkJwqDCoMKgwqDC oCBwcml2X24tPmRkcF9jb21wKSkNCj4gPiArCQkJZm91bmQgPSB0cnVlOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmIChjb3VudCA9PSBwcml2YXRlLT5kYXRhLT5tbXN5c19kZXZfbnVtKSB7DQo+ ID4gKwkJaWYgKGZvdW5kKQ0KPiA+ICsJCQlyZXR1cm4gQklUKGkpOw0KPiA+ICsJCWkrKzsNCj4g PiDCoAl9DQo+ID4gwqANCj4gPiDCoAlyZXQgPSBtdGtfZGRwX2NvbXBfZmluZF9pbl9yb3V0ZShk ZXYsDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGRwX2Nv bXAuaA0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kZHBfY29tcC5oDQo+ID4g aW5kZXggZWY2NGNlN2EwNzFmLi5iYWRiNDJiZDRmN2MgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kZHBfY29tcC5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kZHBfY29tcC5oDQo+ID4gQEAgLTQwLDYgKzQwLDcgQEAgZW51bSBt dGtfZGRwX2NvbXBfdHlwZSB7DQo+ID4gwqAJTVRLX0RJU1BfUFdNLA0KPiA+IMKgCU1US19ESVNQ X1JETUEsDQo+ID4gwqAJTVRLX0RJU1BfVUZPRSwNCj4gPiArCU1US19ESVNQX1ZJUlRVQUwsDQo+ ID4gwqAJTVRLX0RJU1BfV0RNQSwNCj4gPiDCoAlNVEtfRFBJLA0KPiA+IMKgCU1US19EUF9JTlRG LA0KPiA+IEBAIC00Nyw2ICs0OCw3IEBAIGVudW0gbXRrX2RkcF9jb21wX3R5cGUgew0KPiA+IMKg CU1US19PVkxfQkxFTkRFUiwNCj4gPiDCoAlNVEtfT1ZMX0VYRE1BLA0KPiA+IMKgCU1US19PVkxf T1VUUFJPQywNCj4gPiArCU1US19WRElTUF9BTywNCj4gPiDCoAlNVEtfRERQX0NPTVBfVFlQRV9N QVgsDQo+ID4gwqB9Ow0KPiA+IMKgDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2Rydi5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9kcnYuYw0KPiA+IGluZGV4IDc1MjZiYzM4YmNjNy4uMDY2NWE2ZmViNTQ2IDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jDQo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMNCj4gPiBAQCAtMTkzLDYg KzE5MywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kcm1fcm91dGUNCj4gPiBtdDgxODhf bXRrX2RkcF9tYWluX3JvdXRlc1tdID0gew0KPiA+IMKgCXswLCBERFBfQ09NUE9ORU5UX0RTSTB9 LA0KPiA+IMKgfTsNCj4gPiDCoA0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kcm1fcm91 dGUgbXQ4MTk2X210a19kZHBfcm91dGVzW10gPSB7DQo+ID4gKwl7MiwgRERQX0NPTVBPTkVOVF9E U0kwfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gwqBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG10 ODE5Ml9tdGtfZGRwX21haW5bXSA9IHsNCj4gPiDCoAlERFBfQ09NUE9ORU5UX09WTDAsDQo+ID4g wqAJRERQX0NPTVBPTkVOVF9PVkxfMkwwLA0KPiA+IEBAIC0yMzEsNiArMjM1LDUwIEBAIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBpbnQgbXQ4MTk1X210a19kZHBfZXh0W10NCj4gPiA9IHsNCj4gPiDC oAlERFBfQ09NUE9ORU5UX0RQX0lOVEYxLA0KPiA+IMKgfTsNCj4gPiDCoA0KPiA+ICtzdGF0aWMg Y29uc3QgdW5zaWduZWQgaW50IG10ODE5Nl9tdGtfZGRwX292bDBfbWFpbltdID0gew0KPiA+ICsJ RERQX0NPTVBPTkVOVF9EUk1fT1ZMU1lTX0FEQVBUT1IwLA0KPiA+ICsJRERQX0NPTVBPTkVOVF9P VkwwX0RMT19BU1lOQzUsDQo+ID4gK307DQo+IA0KPiBTZXBhcmF0ZSBNVDgxOTYgcGFydCB0byBh bm90aGVyIHBhdGNoIHdoaWNoIGFkZCBzdXBwb3J0IE1UODE5Ni4NCj4gTGV0IHRoaXMgcGF0Y2gg bm90IHJlbGF0ZWQgdG8gc3BlY2lmaWMgU29DLg0KPiANCj4gUmVnYXJkcywNCj4gQ0sNCg0KU3Vy ZSwgSSB3aWxsIHNlcGFyYXRlIHRoaXMgcGF0Y2ggdG8gMiBwYXJ0LCBmaXJzdCBwYXRjaCBpcyB0 byBzdXBwcnQNCnRoZSBtdWx0aXBsZSBNTVNZUyBmb3IgbWVkaWF0ZWsgZHJtIGRyaXZlci4gU2Vj b25kIHBhdGNoIGlzIHRvIHN1cHBvcnQNCk1UODE5NiBTT0MuDQoNCkJlc3QsIA0KUGF1bCAgDQo=