From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 265A5C0219B for ; Mon, 10 Feb 2025 02:20:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version: Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=1kNTq+EmK+cKfNke8pgnsDm9F8rz3ahxkSAJfCvuOWU=; b=1YMRV3LUhsJrk+NM5n9njHofsn HHHbWchePKL1+B6/Y0ZX0XH3xgzHC+JCUtmuLFXYgqs76wDi/j6nZQ+NbUdvHVEcnAKOiZ2kAmY4x 8gB1s7feoS5MDEwRnljI0mJhlkaHKRUs6gUBkf8YsTy4KX3bbc3YY97pWd/x7ACi/haJgcYEFfIIp L3nWIEGjwI3zn9jAyVf/GnV4fkcm3OvqnY90eCPINtFu3aeO78snLywwBITxcjEo/HgddcyNxGA5u 4dGC0g05N1LxTb0aC8AnWlFke7+Ttcdl5JrlfrPxC5w9JGcBmzecfRcr+bXxQcXsAB1ZkmpUx1qg2 d76KDM4Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thJPV-0000000Fyup-39s0; Mon, 10 Feb 2025 02:20:33 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thJO5-0000000FymF-2Fqc; Mon, 10 Feb 2025 02:19:07 +0000 X-UUID: 623f49f0e75511ef82ff63e91e7eb18c-20250209 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=1kNTq+EmK+cKfNke8pgnsDm9F8rz3ahxkSAJfCvuOWU=; b=hIqRKYC3W7MlKFTiQLLeyD0zgKbqGdHQbn43y3gmgWTr0O3jOaB/brWVo7/be1RP1VYjL+JYXig4IotjVb0orugBlYhKR8fRsV8S6SRTDPxhj+T//oXu1Jn1fRNInmS0cwHtjAYPrL3vyGL2PaP7FJYMNIdY8hpIGF/qy/b3OGA=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.46,REQID:f172a609-8f8f-4fb0-b4de-67d346bf73ae,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:60aa074,CLOUDID:9c82527f-427a-4311-9df4-bfaeeacd8532,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:80|81|82|83|102,TC:nil,Content:0|50, 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 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: 623f49f0e75511ef82ff63e91e7eb18c-20250209 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 128511223; Sun, 09 Feb 2025 19:18:57 -0700 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by MTKMBS09N2.mediatek.inc (172.21.101.94) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Mon, 10 Feb 2025 10:18:54 +0800 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1258.28 via Frontend Transport; Mon, 10 Feb 2025 10:18:54 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F9mFvpTx22Hpsckg66hDt2gDyrc43bFlkxjgvGIqfbSt/H7GFBoR40H8ZaxgBGz+8lvfQq4f8GE1UbZ7bzybFW3Eiww0RPbjjxt2yO1DAjlt4t3jNw+MX3ST1/Gs2PBqj0yUBzjELAIwvDKA1nJBsbtpMy+ySeXT/6S/BD0pPIgxBatxNO5Gv/XuvZCiWkISoh/G1vr7BLSIUY/43X+tlEqzexWDrvhwUTigSyVBDZ3Mt7FHLhOs6oQLBlOvvB8pKy4N3eGRsXhcNalLJ8gSlGgblzI5RAWX6ssmXVDRsTv1Ep+jq1dzi9yZwJQuVK9ZhWZnw4tawQTPeRWITWcZpw== 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=1kNTq+EmK+cKfNke8pgnsDm9F8rz3ahxkSAJfCvuOWU=; b=thzbMrNYKi+DW/AY9orCsKz91PQFVdPFztA2/Xt+20PQrUxosEbTxpmITo9U+Xehax2srhnNYutB4kAh10uebrF2kJDzkJ0LbeQ4dagGkk7I59gZoOSmG08RSS4zYctXEgQtDKDAae+g1bZf6EoDozgptK93UofHVcrBb8XdN6v38KwHzzoau87evF70HIgbwgzI8HKtqEjtgrlIwdub4lJRt5MlMWZHt0/jbFfWH1J0LNod/0arhHicl5mqCHZ2UWHgay4299Hb4WlNFvLbHg5jJ6ESUeW8K7NU9VxY9p4mlnfPmfikb0w9WNLlgm6k/PvFBtInqwzn+Gjgso+6xQ== 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=1kNTq+EmK+cKfNke8pgnsDm9F8rz3ahxkSAJfCvuOWU=; b=UbuC1E7Jqi6wYUY0ZsE2JgIssVWDQXrKnGVUrVpiVcDc+DYckBdmUmWYWfHN7KCkJ9imlNTOderO+OlapT++YHeI3eVz2K3tSMCt30ogtvyJpVAJHOaKalWX/QPYNpgdn/5T5aMGoSMFIOm7nKAF9MJqljobcCg766+r23wSVk8= Received: from TYZPR03MB6624.apcprd03.prod.outlook.com (2603:1096:400:1f4::13) by SEYPR03MB6878.apcprd03.prod.outlook.com (2603:1096:101:b7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.14; Mon, 10 Feb 2025 02:18:52 +0000 Received: from TYZPR03MB6624.apcprd03.prod.outlook.com ([fe80::9ce6:1e85:c4a7:2a54]) by TYZPR03MB6624.apcprd03.prod.outlook.com ([fe80::9ce6:1e85:c4a7:2a54%3]) with mapi id 15.20.8422.015; Mon, 10 Feb 2025 02:18:52 +0000 From: =?utf-8?B?Q0sgSHUgKOiDoeS/iuWFiSk=?= To: AngeloGioacchino Del Regno , "chunkuang.hu@kernel.org" CC: "robh@kernel.org" , "jie.qiu@mediatek.com" , "tzimmermann@suse.de" , "simona@ffwll.ch" , "mripard@kernel.org" , =?utf-8?B?Sml0YW8gU2hpICjnn7PorrDmtpsp?= , "linux-mediatek@lists.infradead.org" , "dri-devel@lists.freedesktop.org" , "maarten.lankhorst@linux.intel.com" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "kernel@collabora.com" , "dmitry.baryshkov@linaro.org" , "krzk+dt@kernel.org" , =?utf-8?B?TGV3aXMgTGlhbyAo5buW5p+P6YieKQ==?= , "p.zabel@pengutronix.de" , "conor+dt@kernel.org" , =?utf-8?B?VG9tbXlZTCBDaGVuICjpmbPlvaXoia8p?= , =?utf-8?B?SXZlcyBDaGVuamggKOmZs+S/iuW8mCk=?= , "airlied@gmail.com" , "linux-arm-kernel@lists.infradead.org" , "matthias.bgg@gmail.com" , =?utf-8?B?SmFzb24tSkggTGluICjmnpfnnb/npaUp?= , "junzhi.zhao@mediatek.com" Subject: Re: [PATCH v5 29/34] drm/mediatek: mtk_hdmi: Split driver and add common probe function Thread-Topic: [PATCH v5 29/34] drm/mediatek: mtk_hdmi: Split driver and add common probe function Thread-Index: AQHbZcsJPTtI35H9nk+ZWUM6xqlgv7M/+KmA Date: Mon, 10 Feb 2025 02:18:52 +0000 Message-ID: <8a4ba3fb6d953f1106d3a766208c4b86da1cfcb8.camel@mediatek.com> References: <20250113145232.227674-1-angelogioacchino.delregno@collabora.com> <20250113145232.227674-30-angelogioacchino.delregno@collabora.com> In-Reply-To: <20250113145232.227674-30-angelogioacchino.delregno@collabora.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.52.3-0ubuntu1 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: TYZPR03MB6624:EE_|SEYPR03MB6878:EE_ x-ms-office365-filtering-correlation-id: f98dca97-8745-4bc4-1c67-08dd49794308 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?RzVwMWdJbWJxMi93dlpzQ0x2ZHV0N205S2FUMnFzMXlJV0pSNldkRlRocFFZ?= =?utf-8?B?Q2hSTGtJb09jbm5QOE9oL1dIcVVCMmN6YlYzWEkzZHBNQ2tjSjYwR29pSWxF?= =?utf-8?B?a0RvTms2ck1LUXdaV05nVUVYT1hGVlVicThhemk5ZUQ1Ti8xcDhmc2pXVHBu?= =?utf-8?B?VU90WTN2SzBLRURNVDJid2w0T0g1SkJISFY3ckZQSmdqRkpDZTY1ZkNFd1hJ?= =?utf-8?B?Z0YzWUsxL1hISmlhOEFyNjJReTVzZTlRVnRHOW1UR3ArUUJiY0p1bDQ0dkNq?= =?utf-8?B?Sm9xaTByb3ZmV2NjMFpUTjliNm9HTGE2bzF6MlJrMlJ4Vzhxb1ArdDRsSUlo?= =?utf-8?B?eWdxQ0w2VnhHK0sxWTdBODFrRWZrNWtxYTVKRU8rUzk3d0s4MjVnNVJxSWFK?= =?utf-8?B?ZXJHSTVkOWl6TURSZTV1b0plczNUU2cxVlFGZFpnUElCd3ZqczdSM3lSV25V?= =?utf-8?B?bU5PTko5TEVBeGlPUU5CcG15T2hsaHd6a1I2ZnZoQ0pCVDRVcFhlbXZpdUVT?= =?utf-8?B?ZVR1RXRQNFRmWjNMZVVjU01sVUxGN29LdW1wZmRzYVpBQm9YbzBuMkdTU29P?= =?utf-8?B?dUpMbnlzMyttZ2daaThhWWRwbzNSRjk5TlArYVc0RnJlMElJV215c0YwUkZ3?= =?utf-8?B?dUpkN1JyYVNJbnQyaUhOdlpQSEFGRWlLWUgzYUdUVG10R1FweGJqb2NNV0VI?= =?utf-8?B?dG5IdnhiekRFQnBJeE9hZ2dudGF3cW95U2VENTRDK3ZkbkxFaThHTHFIbE1Y?= =?utf-8?B?VUJKZEVrbzNWY0VUOW5vd1RCdTFzZ3N0ODVwT2xUUndZN3h2SGdKWjhQN3hQ?= =?utf-8?B?TElKUEJObERseWFpTkx3T096SmtPVGNmWUJrdXZ0TmQ1R1ZkQVdUZzFqN0di?= =?utf-8?B?SkJjczRnZWZmbW1IL3FjTWg4MmlFRDFjcWVPSEpjRFg5QTJQRDhIVVdDY2Uy?= =?utf-8?B?NFZxR1Y4TFpQSzB6UFdmSSthMzR0T0Y4b28wWEQycHphdXlId2tDKzVGVXlh?= =?utf-8?B?ZDM0dUVyUWtXTGlyeXptcis5alRLOEQ1ZkQyZ1pLd3VMblpSY1hSNTM5bkpp?= =?utf-8?B?RktKcW9Kbnp4WjA3ekd2dEEvRW1IcjVmNysxWlA5b2N4YWRoZGlhRHgyY3Ju?= =?utf-8?B?dTZHU09rQzR6cGlBa0tkRHpjSVh0WEhtTjM2elpsd3JoRTRxOFFCNUhxV2VG?= =?utf-8?B?cEpNOFloRURRQVNwdDlHME5qNVdRUmVJeGtsRVFuYXprUjErdjNRc1B1MEp4?= =?utf-8?B?WFNsc092Vmx2WUNzV0M4dXlINGU5enpKb1ZDeG1BNVNkMG1KT2FjeGNxaTda?= =?utf-8?B?Vmx5OWh1aGJITnJPelNQK3ZpanRKQTRldi8wTDljUVpJVllqQ3dnOFoxWFY5?= =?utf-8?B?eCtPdHlveWE2QjVROXlmcHB3ZnlINXdMWkRXZ2NoS3JWb1JMNStOZjBvSEpn?= =?utf-8?B?cUxTOWFBbCtWTmp5blVVQkdUSUV2cmRNeklpRDF0dHZSN3UreTdlNFU4TDla?= =?utf-8?B?MUNHNWJDYjlEeEZLOXVwcENWMFM3cW5ERlU2ZXAwaDBqdzJRQ0hBbjFZNXkv?= =?utf-8?B?WE5VbGUzUjZkcjAvT1RVcUNCejNsa1Y5WXdzWGNDaFdXazlCSWRDd3lNUjNG?= =?utf-8?B?UnRHUW80U3JqV0VvcFhBNE9wTi95VDBMYzJaU004SEZ4L3FQUnltTDBRS2V1?= =?utf-8?B?QVArWmhSRWNLMUxtUFFBUEVQY0VmZG5nUWFLbCs0T0hTWE16Z28xaVprTFpM?= =?utf-8?B?NWgrVzVHS1Vqb0MzSkxUKytkWHZRL1V6cEdaSCtZV1dXb3VFY0dIMnJJTnl4?= =?utf-8?B?SlBvanBLbFlNd2ZKR2FqRFJFLzBhY2pEYXczNlZjelNKbDI0WU9oZWQvc3RO?= =?utf-8?B?T3lXQS9Ha2cvM2YzbE1EdzFaaDMza2N1eFd1QVJBMk9zdlpYakdtTllXOHBC?= =?utf-8?Q?lftmPyzNmrCTLz5B0FfMkROKBtU2oWb6?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR03MB6624.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?SWZWRTVIQVNNNmUydkYzc2xNUVpqNzRYTEVKbnAwdkEwU3R0aUpZMmVISTk3?= =?utf-8?B?K1NqN2dlVDZPaDlMWnpJOGQxQnlTb2RvUStmYzZzZjR3Rk5DV3JWUTYxdjdm?= =?utf-8?B?eXNmbGZZQVBSREc2cktGSUkwTlFveklmZ2dRdXp2ZVV6c2Zib2c5RFZlZWFW?= =?utf-8?B?eEZ4cXR2RW8wQ2piL3dqb2V3K0s3bXRzbUtPQ1RXQy9SdnhiYUw3dkVkNEFZ?= =?utf-8?B?bGUwRVl6QUw1cjdNOG5jYW0zWHV0S2tqRktzclliUDhQK2V2SWgxVGRTNHJB?= =?utf-8?B?TlpYVmpBcWhsNzN5R2hRaFRyYTdCOUNUNnByV1ZqRXlya1JFaW54ajliVFc2?= =?utf-8?B?UEtnV2hsSGF5NUE5dXZtbW9ZY044ZW9GYUpjYjVjMytpeWFSSkdBQUlGYkRB?= =?utf-8?B?VzBOVWV2OFMrUFhyWGtSM0JYbDg2K1N6NUhuWllGazBDU29ZOENmY1pydUZ2?= =?utf-8?B?SHFpZlQrZWV3NytJbHQ1NHV4MmpPbTRKZ3Jtd1QvaUZSU2JWZTloOFdxbHFx?= =?utf-8?B?VFphNUhpZUU5VjlQZitqbGtibHJKTTE2Rzg2N0xnQnBuOHd2TmgwNUZXVDgw?= =?utf-8?B?ZzBjT3RCM0IzNm1TWXRSMnA1WWlYNWNLUTVaMnRQbmFwUHd0V0hYbGFYK3l0?= =?utf-8?B?RUt3eUVVaGVKZnFZRVpFeWgvZXZaNytMV095ZVljanpHenFDdGJtd3plLzhN?= =?utf-8?B?V2hRMHMySzdNRkE5S09PVHpTcklvVkdBWGdldUhjNDBKaWpocGpIUVcxbm4w?= =?utf-8?B?REkxdVBMcERVY2JpajB4YWs4YWtzZTBHQVphbmV2RzRqMG9sa3pCYll6V1gr?= =?utf-8?B?QXRBTTN1aFZJb2RsRWh4V2VyZzJMTmFhL2FtVEtmV0JEekFvRjExRXE2UUF0?= =?utf-8?B?ZDh5aytiYSt4QVVLMm9LTEZCK0VyU0ZoMHBxejB0RzZDOHlPcFpjbmZDUktT?= =?utf-8?B?N2Z1R2tGMlNNNmY1NkVTV3RMR1UrTHNJNnhFYUhjKzBLc1NvVk1mcW1jMk9R?= =?utf-8?B?YnVCbGRSY1c0N3RGbzJmYmJhQnR0eWE1TEpqdGFJK0hGa2FBVFhtamFLam1Y?= =?utf-8?B?Q0hvNkJtd1YxVFBadFlVbXN3ZEJwall2ajV0VkJxeGpUODJXZTRaQ24reFVR?= =?utf-8?B?bEw5cXlpeWI5eFZzWVRxajJFbEprNUFZWENrZFpyKzZFQ1pONUNTWWhtcGw4?= =?utf-8?B?K1R4eXFwdHJEZDNxeEc4N0RXOXdPVXR0QmdDZ3lxTmVxVlFxdngyTENXcnpl?= =?utf-8?B?UzFRanZMVUF1YnlPTkY1VXJTUUVnNFc2dkpZRG4yaXQxc3V2U3dXL0tUcFow?= =?utf-8?B?TFloZmdxa2JISkwwa0VDTWlNWm56cWgvVlVUT3VWeGtPek5Ga2hESm11M2Fr?= =?utf-8?B?NzBOYUhPOWJtRlZoZTIwcEJqczhJNEx3dG80ZUcyanhVRk83dTl0d0tMVFpp?= =?utf-8?B?dnRpQU1ta2tuRFIraVZ1T3lXYXhJM2VMYThqcDRoRmpYZVJmeURoUjM5Y09s?= =?utf-8?B?WmxJM1FhaFdCcWJPV0tFejRUS0NpWVZNVThoTnlhN1JFaUQ2cmxYR1NIYWZF?= =?utf-8?B?WWNKTkhObUVKcVNpUjJNelFZWVZ6T01WcVAxQlM5QWcwdVlGY3NhL3ZNRlVs?= =?utf-8?B?bjV1L2ZLdzZaSC9FeDVBcktsMWsrNDY0UU9md05XcTBFWElSMjRIanIvSVJk?= =?utf-8?B?blMxTUVxdVJIUHJrOFV3WUNrbGRUZXQvaElUckQ5Q1k0ZElTSWo1azFHS2RX?= =?utf-8?B?SnVZdW84SFBFYVZPZTUrRTcyVWRCQTFHbmhqZEZYUmhva1pHNDROYUZGa09k?= =?utf-8?B?Vk9Pb042NGt1dy9UL2E4Z3dhRW9ycGNINWN1Q1Z6TFhQSU54RW1DMkxZRElY?= =?utf-8?B?SlVSUGhaWEZOWTlwaGdxSHo2L25adXIzQnVyWEtpRmtJSE5tb2U1QmxQOXhs?= =?utf-8?B?MzlkT3dxTzNCNzh6cXpMWWdIcS9jRjhMYk1xc3Q3MDVON2hXUUV0R1lLRDFX?= =?utf-8?B?Nm9HTERobFR1QUp2WnpWejRXelNhRTJ5ZmFrTjlQU1lWY3h6cGpIc21POHp5?= =?utf-8?B?SUtObFVuTG1lOXVsbjg1OGhpRHdwWnc3cEVoTkE2ZWpNdUFzZWxteERnRUlK?= =?utf-8?Q?+ERJxbRtQqmy/UqN4IzlTHLGt?= Content-Type: text/plain; charset="utf-8" Content-ID: <086E63077C8A644281E9FC7EF9CD64E5@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR03MB6624.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f98dca97-8745-4bc4-1c67-08dd49794308 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2025 02:18:52.0653 (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: caNj9StPsKFRkXBqXAv9BK91Dsux3nHXmUbWYtlXo5lA4giLDdyHOhqQw6e34g66BdYXewXdc+LPNLzG8OHAiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR03MB6878 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250209_181905_618413_2E5C744D X-CRM114-Status: GOOD ( 17.00 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGksIEFuZ2VsbzoNCg0KT24gTW9uLCAyMDI1LTAxLTEzIGF0IDE1OjUyICswMTAwLCBBbmdlbG9H aW9hY2NoaW5vIERlbCBSZWdubyB3cm90ZToNCj4gRXh0ZXJuYWwgZW1haWwgOiBQbGVhc2UgZG8g bm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW50aWwgeW91IGhhdmUgdmVyaWZp ZWQgdGhlIHNlbmRlciBvciB0aGUgY29udGVudC4NCj4gDQo+IA0KPiBJbiBwcmVwYXJhdGlvbiBm b3IgYWRkaW5nIGEgbmV3IGRyaXZlciBmb3IgdGhlIEhETUkgVFggdjIgSVAsDQo+IHNwbGl0IG91 dCB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjb21tb24gYmV0d2VlbiB0aGUgYWxyZWFkeQ0K PiBwcmVzZW50IG10a19oZG1pICh2MSkgZHJpdmVyIGFuZCB0aGUgbmV3IG9uZS4NCj4gDQo+IFNp bmNlIHRoZSBwcm9iZSBmbG93IGZvciBib3RoIGRyaXZlcnMgaXMgOTAlIHNpbWlsYXIsIGFkZCBh IGNvbW1vbg0KPiBwcm9iZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGZyb20gZWFjaCBk cml2ZXIncyAucHJvYmUoKQ0KPiBjYWxsYmFjaywgYXZvaWRpbmcgbG90cyBvZiBjb2RlIGR1cGxp Y2F0aW9uLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8g PGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4NCj4gLS0tDQo+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZyAgICAgICAgICAgfCAgMTEgKy0NCj4gIGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYyAgICAgICAgfCA1NTMgKy0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfY29tbW9uLmMgfCA0 MjYgKysrKysrKysrKysrKysrKw0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1p X2NvbW1vbi5oIHwgMTg4ICsrKysrKysNCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjQ4IGluc2VydGlv bnMoKyksIDUzMSBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfY29tbW9uLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfY29tbW9uLmgNCj4gDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9LY29uZmlnDQo+IGluZGV4IGU0N2RlYmQ2MDYxOS4uOTk0YjQ4YjgyZDQ0IDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZw0KPiBAQCAtMzAsOSArMzAsMTggQEAgY29uZmln IERSTV9NRURJQVRFS19EUA0KPiAgICAgICAgIGhlbHANCj4gICAgICAgICAgIERSTS9LTVMgRGlz cGxheSBQb3J0IGRyaXZlciBmb3IgTWVkaWFUZWsgU29Dcy4NCj4gDQo+ICtjb25maWcgRFJNX01F RElBVEVLX0hETUlfQ09NTU9ODQo+ICsgICAgICAgdHJpc3RhdGUNCj4gKyAgICAgICBkZXBlbmRz IG9uIERSTV9NRURJQVRFSw0KPiArICAgICAgIHNlbGVjdCBEUk1fRElTUExBWV9IRE1JX0hFTFBF Ug0KPiArICAgICAgIHNlbGVjdCBEUk1fRElTUExBWV9IRUxQRVINCj4gKyAgICAgICBzZWxlY3Qg U05EX1NPQ19IRE1JX0NPREVDIGlmIFNORF9TT0MNCj4gKyAgICAgICBoZWxwDQo+ICsgICAgICAg ICBNZWRpYVRlayBTb0MgSERNSSBjb21tb24gbGlicmFyeQ0KPiArDQo+ICBjb25maWcgRFJNX01F RElBVEVLX0hETUkNCj4gICAgICAgICB0cmlzdGF0ZSAiRFJNIEhETUkgU3VwcG9ydCBmb3IgTWVk aWF0ZWsgU29DcyINCj4gICAgICAgICBkZXBlbmRzIG9uIERSTV9NRURJQVRFSw0KPiAtICAgICAg IHNlbGVjdCBTTkRfU09DX0hETUlfQ09ERUMgaWYgU05EX1NPQw0KPiArICAgICAgIHNlbGVjdCBE Uk1fTUVESUFURUtfSERNSV9DT01NT04NCj4gICAgICAgICBoZWxwDQo+ICAgICAgICAgICBEUk0v S01TIEhETUkgZHJpdmVyIGZvciBNZWRpYXRlayBTb0NzDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFr ZWZpbGUNCj4gaW5kZXggNDNhZmQwYTI2ZDE0Li43OGNmMmQ0ZmM4NWYgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUNCj4gQEAgLTIxLDYgKzIxLDcgQEAgbWVkaWF0ZWstZHJtLXkg Oj0gbXRrX2NydGMubyBcDQo+IA0KPiAgb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFSykgKz0gbWVk aWF0ZWstZHJtLm8NCj4gDQo+ICtvYmotJChDT05GSUdfRFJNX01FRElBVEVLX0hETUlfQ09NTU9O KSArPSBtdGtfaGRtaV9jb21tb24ubw0KDQpJdCdzIG5vdCBuZWNlc3NhcnkgdG8gY3JlYXRlIENP TkZJR19EUk1fTUVESUFURUtfSERNSV9DT01NT04gdG8gYnVpbGQgbXRrX2hkbWlfY29tbW9uLm8u DQoNCm9iai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkgKz0gbXRrX2hkbWlfY29tbW9uLm8N Cm9iai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSV9WMikgKz0gbXRrX2hkbWlfY29tbW9uLm8N Cg0KPiAgb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFS19IRE1JKSArPSBtdGtfY2VjLm8NCj4gIG9i ai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkgKz0gbXRrX2hkbWkubw0KPiAgb2JqLSQoQ09O RklHX0RSTV9NRURJQVRFS19IRE1JKSArPSBtdGtfaGRtaV9kZGMubw0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2hkbWkuYw0KPiBpbmRleCAxMzhjNjI4M2MwMzguLjc5NDBjOWI1OThjMSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMNCj4gQEAgLTMxLDYgKzMxLDcgQEAN Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPg0KPiANCj4gICNpbmNsdWRlICJt dGtfY2VjLmgiDQo+ICsjaW5jbHVkZSAibXRrX2hkbWlfY29tbW9uLmgiDQo+ICAjaW5jbHVkZSAi bXRrX2hkbWlfcmVncy5oIg0KPiANCj4gICNkZWZpbmUgTkNUU19CWVRFUyAgICAgNw0KPiBAQCAt NDMsMTQzICs0NCw2IEBAIGVudW0gbXRrX2hkbWlfY2xrX2lkIHsNCj4gICAgICAgICBNVEtfSERN SV9DTEtfQ09VTlQNCj4gIH07DQo+IA0KPiAtZW51bSBoZG1pX2F1ZF9pbnB1dF90eXBlIHsNCj4g LSAgICAgICBIRE1JX0FVRF9JTlBVVF9JMlMgPSAwLA0KPiAtICAgICAgIEhETUlfQVVEX0lOUFVU X1NQRElGLA0KPiAtfTsNCj4gLQ0KPiAtZW51bSBoZG1pX2F1ZF9pMnNfZm10IHsNCj4gLSAgICAg ICBIRE1JX0kyU19NT0RFX1JKVF8yNEJJVCA9IDAsDQo+IC0gICAgICAgSERNSV9JMlNfTU9ERV9S SlRfMTZCSVQsDQo+IC0gICAgICAgSERNSV9JMlNfTU9ERV9MSlRfMjRCSVQsDQo+IC0gICAgICAg SERNSV9JMlNfTU9ERV9MSlRfMTZCSVQsDQo+IC0gICAgICAgSERNSV9JMlNfTU9ERV9JMlNfMjRC SVQsDQo+IC0gICAgICAgSERNSV9JMlNfTU9ERV9JMlNfMTZCSVQNCj4gLX07DQo+IC0NCj4gLWVu dW0gaGRtaV9hdWRfbWNsayB7DQo+IC0gICAgICAgSERNSV9BVURfTUNMS18xMjhGUywNCj4gLSAg ICAgICBIRE1JX0FVRF9NQ0xLXzE5MkZTLA0KPiAtICAgICAgIEhETUlfQVVEX01DTEtfMjU2RlMs DQo+IC0gICAgICAgSERNSV9BVURfTUNMS18zODRGUywNCj4gLSAgICAgICBIRE1JX0FVRF9NQ0xL XzUxMkZTLA0KPiAtICAgICAgIEhETUlfQVVEX01DTEtfNzY4RlMsDQo+IC0gICAgICAgSERNSV9B VURfTUNMS18xMTUyRlMsDQo+IC19Ow0KPiAtDQo+IC1lbnVtIGhkbWlfYXVkX2NoYW5uZWxfdHlw ZSB7DQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzFfMCA9IDAsDQo+IC0gICAgICAgSERN SV9BVURfQ0hBTl9UWVBFXzFfMSwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfMl8wLA0K PiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8yXzEsDQo+IC0gICAgICAgSERNSV9BVURfQ0hB Tl9UWVBFXzNfMCwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfM18xLA0KPiAtICAgICAg IEhETUlfQVVEX0NIQU5fVFlQRV80XzAsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzRf MSwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNV8wLA0KPiAtICAgICAgIEhETUlfQVVE X0NIQU5fVFlQRV81XzEsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMCwNCj4gLSAg ICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8xLA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV83XzAsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMSwNCj4gLSAgICAgICBIRE1J X0FVRF9DSEFOX1RZUEVfM18wX0xSUywNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfM18x X0xSUywNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNF8wX0NMUlMsDQo+IC0gICAgICAg SERNSV9BVURfQ0hBTl9UWVBFXzRfMV9DTFJTLA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV82XzFfQ1MsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMV9DSCwNCj4gLSAgICAg ICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8xX09ILA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV82XzFfQ0hSLA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTEhfUkgsDQo+IC0g ICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MU1JfUlNSLA0KPiAtICAgICAgIEhETUlfQVVE X0NIQU5fVFlQRV83XzFfTENfUkMsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9M V19SVywNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0xTRF9SU0QsDQo+IC0gICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MU1NfUlNTLA0KPiAtICAgICAgIEhETUlfQVVEX0NI QU5fVFlQRV83XzFfTEhTX1JIUywNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0NT X0NILA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfQ1NfT0gsDQo+IC0gICAgICAg SERNSV9BVURfQ0hBTl9UWVBFXzdfMV9DU19DSFIsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9U WVBFXzdfMV9DSF9PSCwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0NIX0NIUiwN Cj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX09IX0NIUiwNCj4gLSAgICAgICBIRE1J X0FVRF9DSEFOX1RZUEVfN18xX0xTU19SU1NfTFNSX1JTUiwNCj4gLSAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfNl8wX0NTLA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV82XzBfQ0gsDQo+ IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzZfMF9PSCwNCj4gLSAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfNl8wX0NIUiwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0xIX1JI LA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFNSX1JTUiwNCj4gLSAgICAgICBI RE1JX0FVRF9DSEFOX1RZUEVfN18wX0xDX1JDLA0KPiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV83XzBfTFdfUlcsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9MU0RfUlNELA0K PiAtICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTFNTX1JTUywNCj4gLSAgICAgICBIRE1J X0FVRF9DSEFOX1RZUEVfN18wX0xIU19SSFMsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBF XzdfMF9DU19DSCwNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0NTX09ILA0KPiAt ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfQ1NfQ0hSLA0KPiAtICAgICAgIEhETUlfQVVE X0NIQU5fVFlQRV83XzBfQ0hfT0gsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9D SF9DSFIsDQo+IC0gICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9PSF9DSFIsDQo+IC0gICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9MU1NfUlNTX0xTUl9SU1IsDQo+IC0gICAgICAgSERN SV9BVURfQ0hBTl9UWVBFXzhfMF9MSF9SSF9DUywNCj4gLSAgICAgICBIRE1JX0FVRF9DSEFOX1RZ UEVfVU5LTk9XTiA9IDB4RkYNCj4gLX07DQo+IC0NCj4gLWVudW0gaGRtaV9hdWRfY2hhbm5lbF9z d2FwX3R5cGUgew0KPiAtICAgICAgIEhETUlfQVVEX1NXQVBfTFIsDQo+IC0gICAgICAgSERNSV9B VURfU1dBUF9MRkVfQ0MsDQo+IC0gICAgICAgSERNSV9BVURfU1dBUF9MU1JTLA0KPiAtICAgICAg IEhETUlfQVVEX1NXQVBfUkxTX1JSUywNCj4gLSAgICAgICBIRE1JX0FVRF9TV0FQX0xSX1NUQVRV UywNCj4gLX07DQo+IC0NCj4gLXN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFtIHsNCj4gLSAgICAgICBl bnVtIGhkbWlfYXVkaW9fY29kaW5nX3R5cGUgYXVkX2NvZGVjOw0KPiAtICAgICAgIGVudW0gaGRt aV9hdWRpb19zYW1wbGVfc2l6ZSBhdWRfc2FtcGxlX3NpemU7DQo+IC0gICAgICAgZW51bSBoZG1p X2F1ZF9pbnB1dF90eXBlIGF1ZF9pbnB1dF90eXBlOw0KPiAtICAgICAgIGVudW0gaGRtaV9hdWRf aTJzX2ZtdCBhdWRfaTJzX2ZtdDsNCj4gLSAgICAgICBlbnVtIGhkbWlfYXVkX21jbGsgYXVkX21j bGs7DQo+IC0gICAgICAgZW51bSBoZG1pX2F1ZF9jaGFubmVsX3R5cGUgYXVkX2lucHV0X2NoYW5f dHlwZTsNCj4gLSAgICAgICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJhbXMgY29kZWNfcGFyYW1zOw0K PiAtfTsNCj4gLQ0KPiAtc3RydWN0IG10a19oZG1pX2NvbmYgew0KPiAtICAgICAgIGJvb2wgdHpf ZGlzYWJsZWQ7DQo+IC0gICAgICAgYm9vbCBjZWFfbW9kZXNfb25seTsNCj4gLSAgICAgICB1bnNp Z25lZCBsb25nIG1heF9tb2RlX2Nsb2NrOw0KPiAtfTsNCj4gLQ0KPiAtc3RydWN0IG10a19oZG1p IHsNCj4gLSAgICAgICBzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7DQo+IC0gICAgICAgc3RydWN0 IGRybV9icmlkZ2UgKm5leHRfYnJpZGdlOw0KPiAtICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjdXJyX2Nvbm47LyogY3VycmVudCBjb25uZWN0b3IgKG9ubHkgdmFsaWQgd2hlbiAnZW5hYmxl ZCcpICovDQo+IC0gICAgICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiAtICAgICAgIGNvbnN0IHN0 cnVjdCBtdGtfaGRtaV9jb25mICpjb25mOw0KPiAtICAgICAgIHN0cnVjdCBwaHkgKnBoeTsNCj4g LSAgICAgICBzdHJ1Y3QgZGV2aWNlICpjZWNfZGV2Ow0KPiAtICAgICAgIHN0cnVjdCBpMmNfYWRh cHRlciAqZGRjX2FkcHQ7DQo+IC0gICAgICAgc3RydWN0IGNsayAqKmNsazsNCj4gLSAgICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBtb2RlOw0KPiAtICAgICAgIGJvb2wgZHZpX21vZGU7DQo+ IC0gICAgICAgc3RydWN0IHJlZ21hcCAqc3lzX3JlZ21hcDsNCj4gLSAgICAgICB1bnNpZ25lZCBp bnQgc3lzX29mZnNldDsNCj4gLSAgICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdzOw0KPiAtICAgICAg IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmF1ZGlvX3BkZXY7DQo+IC0gICAgICAgc3RydWN0IGhk bWlfYXVkaW9fcGFyYW0gYXVkX3BhcmFtOw0KPiAtICAgICAgIGJvb2wgYXVkaW9fZW5hYmxlOw0K PiAtICAgICAgIGJvb2wgcG93ZXJlZDsNCj4gLSAgICAgICBib29sIGVuYWJsZWQ7DQo+IC0gICAg ICAgaGRtaV9jb2RlY19wbHVnZ2VkX2NiIHBsdWdnZWRfY2I7DQo+IC0gICAgICAgc3RydWN0IGRl dmljZSAqY29kZWNfZGV2Ow0KPiAtICAgICAgIHN0cnVjdCBtdXRleCB1cGRhdGVfcGx1Z2dlZF9z dGF0dXNfbG9jazsNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IG10a19oZG1p ICpoZG1pX2N0eF9mcm9tX2JyaWRnZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYikNCj4gLXsNCj4gLSAg ICAgICByZXR1cm4gY29udGFpbmVyX29mKGIsIHN0cnVjdCBtdGtfaGRtaSwgYnJpZGdlKTsNCj4g LX0NCj4gLQ0KPiAgc3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfdmlkX2JsYWNrKHN0cnVjdCBtdGtf aGRtaSAqaGRtaSwgYm9vbCBibGFjaykNCj4gIHsNCj4gICAgICAgICByZWdtYXBfdXBkYXRlX2Jp dHMoaGRtaS0+cmVncywgVklERU9fU09VUkNFX1NFTCwNCj4gQEAgLTYwMCw4OCArNDY0LDYgQEAg c3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfYXVkX3NldF9tY2xrKHN0cnVjdCBtdGtfaGRtaSAqaGRt aSwNCj4gICAgICAgICByZWdtYXBfd3JpdGUoaGRtaS0+cmVncywgR1JMX0NGRzUsIHZhbCk7DQo+ ICB9DQo+IA0KPiAtc3RydWN0IGhkbWlfYWNyX24gew0KPiAtICAgICAgIHVuc2lnbmVkIGludCBj bG9jazsNCj4gLSAgICAgICB1bnNpZ25lZCBpbnQgblszXTsNCj4gLX07DQo+IC0NCj4gLS8qIFJl Y29tbWVuZGVkIE4gdmFsdWVzIGZyb20gSERNSSBzcGVjaWZpY2F0aW9uLCB0YWJsZXMgNy0xIHRv IDctMyAqLw0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBoZG1pX2Fjcl9uIGhkbWlfcmVjX25fdGFi bGVbXSA9IHsNCj4gLSAgICAgICAvKiBDbG9jaywgTjogMzJrSHogNDQuMWtIeiA0OGtIeiAqLw0K PiAtICAgICAgIHsgIDI1MTc1LCB7ICA0NTc2LCAgNzAwNywgIDY4NjQgfSB9LA0KPiAtICAgICAg IHsgIDc0MTc2LCB7IDExNjQ4LCAxNzgzNiwgMTE2NDggfSB9LA0KPiAtICAgICAgIHsgMTQ4MzUy LCB7IDExNjQ4LCAgODkxOCwgIDU4MjQgfSB9LA0KPiAtICAgICAgIHsgMjk2NzAzLCB7ICA1ODI0 LCAgNDQ1OSwgIDU4MjQgfSB9LA0KPiAtICAgICAgIHsgMjk3MDAwLCB7ICAzMDcyLCAgNDcwNCwg IDUxMjAgfSB9LA0KPiAtICAgICAgIHsgICAgICAwLCB7ICA0MDk2LCAgNjI3MiwgIDYxNDQgfSB9 LCAvKiBhbGwgb3RoZXIgVE1EUyBjbG9ja3MgKi8NCj4gLX07DQo+IC0NCj4gLS8qKg0KPiAtICog aGRtaV9yZWNvbW1lbmRlZF9uKCkgLSBSZXR1cm4gTiB2YWx1ZSByZWNvbW1lbmRlZCBieSBIRE1J IHNwZWNpZmljYXRpb24NCj4gLSAqIEBmcmVxOiBhdWRpbyBzYW1wbGUgcmF0ZSBpbiBIeg0KPiAt ICogQGNsb2NrOiByb3VuZGVkIFRNRFMgY2xvY2sgaW4ga0h6DQo+IC0gKi8NCj4gLXN0YXRpYyB1 bnNpZ25lZCBpbnQgaGRtaV9yZWNvbW1lbmRlZF9uKHVuc2lnbmVkIGludCBmcmVxLCB1bnNpZ25l ZCBpbnQgY2xvY2spDQo+IC17DQo+IC0gICAgICAgY29uc3Qgc3RydWN0IGhkbWlfYWNyX24gKnJl Y29tbWVuZGVkOw0KPiAtICAgICAgIHVuc2lnbmVkIGludCBpOw0KPiAtDQo+IC0gICAgICAgZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGRtaV9yZWNfbl90YWJsZSkgLSAxOyBpKyspIHsNCj4g LSAgICAgICAgICAgICAgIGlmIChjbG9jayA9PSBoZG1pX3JlY19uX3RhYmxlW2ldLmNsb2NrKQ0K PiAtICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICB9DQo+IC0gICAgICAg cmVjb21tZW5kZWQgPSBoZG1pX3JlY19uX3RhYmxlICsgaTsNCj4gLQ0KPiAtICAgICAgIHN3aXRj aCAoZnJlcSkgew0KPiAtICAgICAgIGNhc2UgMzIwMDA6DQo+IC0gICAgICAgICAgICAgICByZXR1 cm4gcmVjb21tZW5kZWQtPm5bMF07DQo+IC0gICAgICAgY2FzZSA0NDEwMDoNCj4gLSAgICAgICAg ICAgICAgIHJldHVybiByZWNvbW1lbmRlZC0+blsxXTsNCj4gLSAgICAgICBjYXNlIDQ4MDAwOg0K PiAtICAgICAgICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzJdOw0KPiAtICAgICAgIGNh c2UgODgyMDA6DQo+IC0gICAgICAgICAgICAgICByZXR1cm4gcmVjb21tZW5kZWQtPm5bMV0gKiAy Ow0KPiAtICAgICAgIGNhc2UgOTYwMDA6DQo+IC0gICAgICAgICAgICAgICByZXR1cm4gcmVjb21t ZW5kZWQtPm5bMl0gKiAyOw0KPiAtICAgICAgIGNhc2UgMTc2NDAwOg0KPiAtICAgICAgICAgICAg ICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzFdICogNDsNCj4gLSAgICAgICBjYXNlIDE5MjAwMDoN Cj4gLSAgICAgICAgICAgICAgIHJldHVybiByZWNvbW1lbmRlZC0+blsyXSAqIDQ7DQo+IC0gICAg ICAgZGVmYXVsdDoNCj4gLSAgICAgICAgICAgICAgIHJldHVybiAoMTI4ICogZnJlcSkgLyAxMDAw Ow0KPiAtICAgICAgIH0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHVuc2lnbmVkIGludCBoZG1pX21v ZGVfY2xvY2tfdG9faHoodW5zaWduZWQgaW50IGNsb2NrKQ0KPiAtew0KPiAtICAgICAgIHN3aXRj aCAoY2xvY2spIHsNCj4gLSAgICAgICBjYXNlIDI1MTc1Og0KPiAtICAgICAgICAgICAgICAgcmV0 dXJuIDI1MTc0ODI1OyAgICAgICAgLyogMjUuMi8xLjAwMSBNSHogKi8NCj4gLSAgICAgICBjYXNl IDc0MTc2Og0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIDc0MTc1ODI0OyAgICAgICAgLyogNzQu MjUvMS4wMDEgTUh6ICovDQo+IC0gICAgICAgY2FzZSAxNDgzNTI6DQo+IC0gICAgICAgICAgICAg ICByZXR1cm4gMTQ4MzUxNjQ4OyAgICAgICAvKiAxNDguNS8xLjAwMSBNSHogKi8NCj4gLSAgICAg ICBjYXNlIDI5NjcwMzoNCj4gLSAgICAgICAgICAgICAgIHJldHVybiAyOTY3MDMyOTc7ICAgICAg IC8qIDI5Ny8xLjAwMSBNSHogKi8NCj4gLSAgICAgICBkZWZhdWx0Og0KPiAtICAgICAgICAgICAg ICAgcmV0dXJuIGNsb2NrICogMTAwMDsNCj4gLSAgICAgICB9DQo+IC19DQo+IC0NCj4gLXN0YXRp YyB1bnNpZ25lZCBpbnQgaGRtaV9leHBlY3RlZF9jdHModW5zaWduZWQgaW50IGF1ZGlvX3NhbXBs ZV9yYXRlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB0bWRzX2Nsb2NrLCB1bnNpZ25lZCBpbnQgbikNCj4gLXsNCj4gLSAgICAgICByZXR1cm4g RElWX1JPVU5EX0NMT1NFU1RfVUxMKCh1NjQpaGRtaV9tb2RlX2Nsb2NrX3RvX2h6KHRtZHNfY2xv Y2spICogbiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOCAqIGF1 ZGlvX3NhbXBsZV9yYXRlKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgbXRrX2hkbWlfZ2V0 X25jdHModW5zaWduZWQgaW50IHNhbXBsZV9yYXRlLCB1bnNpZ25lZCBpbnQgY2xvY2ssDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqbiwgdW5zaWduZWQgaW50 ICpjdHMpDQo+IC17DQo+IC0gICAgICAgKm4gPSBoZG1pX3JlY29tbWVuZGVkX24oc2FtcGxlX3Jh dGUsIGNsb2NrKTsNCj4gLSAgICAgICAqY3RzID0gaGRtaV9leHBlY3RlZF9jdHMoc2FtcGxlX3Jh dGUsIGNsb2NrLCAqbik7DQo+IC19DQo+IC0NCj4gIHN0YXRpYyB2b2lkIGRvX2hkbWlfaHdfYXVk X3NldF9uY3RzKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgdW5zaWduZWQgaW50IG4sDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjdHMpDQo+ICB7DQo+ IEBAIC0xMDcyLDIxICs4NTQsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG10a19oZG1p X2Nsa19uYW1lc1tNVEtfSERNSV9DTEtfQ09VTlRdID0gew0KPiAgICAgICAgIFtNVEtfSERNSV9D TEtfQVVEX1NQRElGXSA9ICJzcGRpZiIsDQo+ICB9Ow0KPiANCj4gLXN0YXRpYyBpbnQgbXRrX2hk bWlfZ2V0X2FsbF9jbGsoc3RydWN0IG10a19oZG1pICpoZG1pLCBzdHJ1Y3QgZGV2aWNlX25vZGUg Km5wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25z dCAqY2xvY2tfbmFtZXMsIHNpemVfdCBudW1fY2xvY2tzKQ0KPiAtew0KPiAtICAgICAgIGludCBp Ow0KPiAtDQo+IC0gICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9jbG9ja3M7IGkrKykgew0KPiAt ICAgICAgICAgICAgICAgaGRtaS0+Y2xrW2ldID0gb2ZfY2xrX2dldF9ieV9uYW1lKG5wLCBjbG9j a19uYW1lc1tpXSk7DQo+IC0NCj4gLSAgICAgICAgICAgICAgIGlmIChJU19FUlIoaGRtaS0+Y2xr W2ldKSkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaGRtaS0+Y2xr W2ldKTsNCj4gLSAgICAgICB9DQo+IC0NCj4gLSAgICAgICByZXR1cm4gMDsNCj4gLX0NCj4gLQ0K PiAgc3RhdGljIGludCBtdGtfaGRtaV9jbGtfZW5hYmxlX2F1ZGlvKHN0cnVjdCBtdGtfaGRtaSAq aGRtaSkNCj4gIHsNCj4gICAgICAgICBpbnQgcmV0Ow0KPiBAQCAtMTIyOSwxMyArOTk2LDYgQEAg c3RhdGljIGludCBtdGtfaGRtaV9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UsDQo+ICAgICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAtc3RhdGljIGJvb2wgbXRrX2hk bWlfYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQ0KPiAtew0KPiAtICAgICAgIHJl dHVybiB0cnVlOw0KPiAtfQ0KPiAtDQo+ICBzdGF0aWMgdm9pZCBtdGtfaGRtaV9icmlkZ2VfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICpvbGRf YnJpZGdlX3N0YXRlKQ0KPiAgew0KPiBAQCAtMTI2NywyOCArMTAyNyw2IEBAIHN0YXRpYyB2b2lk IG10a19oZG1pX2JyaWRnZV9hdG9taWNfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UsDQo+ICAgICAgICAgaGRtaS0+cG93ZXJlZCA9IGZhbHNlOw0KPiAgfQ0KPiANCj4gLXN0 YXRpYyB2b2lkIG10a19oZG1pX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQ0KPiAtew0KPiAtICAg ICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGhkbWlfY3R4X2Zyb21fYnJpZGdlKGJyaWRnZSk7 DQo+IC0NCj4gLSAgICAgICBkZXZfZGJnKGhkbWktPmRldiwgImN1ciBpbmZvOiBuYW1lOiVzLCBo ZGlzcGxheTolZFxuIiwNCj4gLSAgICAgICAgICAgICAgIGFkanVzdGVkX21vZGUtPm5hbWUsIGFk anVzdGVkX21vZGUtPmhkaXNwbGF5KTsNCj4gLSAgICAgICBkZXZfZGJnKGhkbWktPmRldiwgImhz eW5jX3N0YXJ0OiVkLGhzeW5jX2VuZDolZCwgaHRvdGFsOiVkIiwNCj4gLSAgICAgICAgICAgICAg IGFkanVzdGVkX21vZGUtPmhzeW5jX3N0YXJ0LCBhZGp1c3RlZF9tb2RlLT5oc3luY19lbmQsDQo+ IC0gICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT5odG90YWwpOw0KPiAtICAgICAgIGRldl9k YmcoaGRtaS0+ZGV2LCAiaHNrZXc6JWQsIHZkaXNwbGF5OiVkXG4iLA0KPiAtICAgICAgICAgICAg ICAgYWRqdXN0ZWRfbW9kZS0+aHNrZXcsIGFkanVzdGVkX21vZGUtPnZkaXNwbGF5KTsNCj4gLSAg ICAgICBkZXZfZGJnKGhkbWktPmRldiwgInZzeW5jX3N0YXJ0OiVkLCB2c3luY19lbmQ6JWQsIHZ0 b3RhbDolZCIsDQo+IC0gICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT52c3luY19zdGFydCwg YWRqdXN0ZWRfbW9kZS0+dnN5bmNfZW5kLA0KPiAtICAgICAgICAgICAgICAgYWRqdXN0ZWRfbW9k ZS0+dnRvdGFsKTsNCj4gLSAgICAgICBkZXZfZGJnKGhkbWktPmRldiwgInZzY2FuOiVkLCBmbGFn OiVkXG4iLA0KPiAtICAgICAgICAgICAgICAgYWRqdXN0ZWRfbW9kZS0+dnNjYW4sIGFkanVzdGVk X21vZGUtPmZsYWdzKTsNCj4gLQ0KPiAtICAgICAgIGRybV9tb2RlX2NvcHkoJmhkbWktPm1vZGUs IGFkanVzdGVkX21vZGUpOw0KPiAtfQ0KPiAtDQo+ICBzdGF0aWMgdm9pZCBtdGtfaGRtaV9icmlk Z2VfYXRvbWljX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fYnJpZGdl X3N0YXRlICpvbGRfc3RhdGUpDQo+ICB7DQo+IEBAIC0xMzQ1LDE2NyArMTA4MywxMCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgbXRrX2hkbWlfYnJpZGdlX2Z1bmNzID0g ew0KPiAgICAgICAgIC5lZGlkX3JlYWQgPSBtdGtfaGRtaV9icmlkZ2VfZWRpZF9yZWFkLA0KPiAg fTsNCj4gDQo+IC1zdGF0aWMgaW50IG10a19oZG1pX2dldF9jZWNfZGV2KHN0cnVjdCBtdGtfaGRt aSAqaGRtaSwgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQ0KPiAt ew0KPiAtICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmNlY19wZGV2Ow0KPiAtICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2VjX25wOw0KPiAtICAgICAgIGludCByZXQ7DQo+IC0NCj4g LSAgICAgICAvKiBUaGUgQ0VDIG1vZHVsZSBoYW5kbGVzIEhETUkgaG90cGx1ZyBkZXRlY3Rpb24g Ki8NCj4gLSAgICAgICBjZWNfbnAgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChucC0+cGFyZW50 LCAibWVkaWF0ZWssbXQ4MTczLWNlYyIpOw0KPiAtICAgICAgIGlmICghY2VjX25wKQ0KPiAtICAg ICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRU5PVFNVUFAsICJGYWlsZWQg dG8gZmluZCBDRUMgbm9kZVxuIik7DQo+IC0NCj4gLSAgICAgICBjZWNfcGRldiA9IG9mX2ZpbmRf ZGV2aWNlX2J5X25vZGUoY2VjX25wKTsNCj4gLSAgICAgICBpZiAoIWNlY19wZGV2KSB7DQo+IC0g ICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwgIldhaXRpbmcgZm9yIENFQyBkZXZpY2Ug JXBPRlxuIiwgY2VjX25wKTsNCj4gLSAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGNlY19ucCk7 DQo+IC0gICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9ERUZFUjsNCj4gLSAgICAgICB9DQo+ IC0gICAgICAgb2Zfbm9kZV9wdXQoY2VjX25wKTsNCj4gLQ0KPiAtICAgICAgIC8qDQo+IC0gICAg ICAgICogVGhlIG1lZGlhdGVrLHN5c2Nvbi1oZG1pIHByb3BlcnR5IGNvbnRhaW5zIGEgcGhhbmRs ZSBsaW5rIHRvIHRoZQ0KPiAtICAgICAgICAqIE1NU1lTX0NPTkZJRyBkZXZpY2UgYW5kIHRoZSBy ZWdpc3RlciBvZmZzZXQgb2YgdGhlIEhETUlfU1lTX0NGRw0KPiAtICAgICAgICAqIHJlZ2lzdGVy cyBpdCBjb250YWlucy4NCj4gLSAgICAgICAgKi8NCj4gLSAgICAgICBoZG1pLT5zeXNfcmVnbWFw ID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShucCwgIm1lZGlhdGVrLHN5c2Nvbi1o ZG1pIik7DQo+IC0gICAgICAgaWYgKElTX0VSUihoZG1pLT5zeXNfcmVnbWFwKSkNCj4gLSAgICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhkbWktPnN5c19yZWdtYXApOw0KPiAtDQo+IC0gICAg ICAgcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgobnAsICJtZWRpYXRlayxzeXNjb24t aGRtaSIsIDEsICZoZG1pLT5zeXNfb2Zmc2V0KTsNCj4gLSAgICAgICBpZiAocmV0KQ0KPiAtICAg ICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBzeXN0ZW0gY29uZmlndXJh dGlvbiByZWdpc3RlcnNcbiIpOw0KPiAtDQo+IC0gICAgICAgaGRtaS0+Y2VjX2RldiA9ICZjZWNf cGRldi0+ZGV2Ow0KPiAtICAgICAgIHJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50 IG10a19oZG1pX2R0X3BhcnNlX3BkYXRhKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICogY29uc3QgKmNsa19uYW1lcywgc2l6ZV90IG51bV9jbG9ja3MpDQo+IC17 DQo+IC0gICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gLSAgICAgICBz dHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiAtICAgICAgIHN0cnVjdCBk ZXZpY2Vfbm9kZSAqcmVtb3RlLCAqaTJjX25wOw0KPiAtICAgICAgIGludCByZXQ7DQo+IC0NCj4g LSAgICAgICByZXQgPSBtdGtfaGRtaV9nZXRfYWxsX2NsayhoZG1pLCBucCwgY2xrX25hbWVzLCBu dW1fY2xvY2tzKTsNCj4gLSAgICAgICBpZiAocmV0KQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gZ2V0IGNsb2Nrc1xuIik7DQo+IC0N Cj4gLSAgICAgICBoZG1pLT5yZWdzID0gZGV2aWNlX25vZGVfdG9fcmVnbWFwKGRldi0+b2Zfbm9k ZSk7DQo+IC0gICAgICAgaWYgKElTX0VSUihoZG1pLT5yZWdzKSkNCj4gLSAgICAgICAgICAgICAg IHJldHVybiBQVFJfRVJSKGhkbWktPnJlZ3MpOw0KPiAtDQo+IC0gICAgICAgcmVtb3RlID0gb2Zf Z3JhcGhfZ2V0X3JlbW90ZV9ub2RlKG5wLCAxLCAwKTsNCj4gLSAgICAgICBpZiAoIXJlbW90ZSkN Cj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAtDQo+IC0gICAgICAgaWYgKCFv Zl9kZXZpY2VfaXNfY29tcGF0aWJsZShyZW1vdGUsICJoZG1pLWNvbm5lY3RvciIpKSB7DQo+IC0g ICAgICAgICAgICAgICBoZG1pLT5uZXh0X2JyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShyZW1v dGUpOw0KPiAtICAgICAgICAgICAgICAgaWYgKCFoZG1pLT5uZXh0X2JyaWRnZSkgew0KPiAtICAg ICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIldhaXRpbmcgZm9yIGV4dGVybmFsIGJy aWRnZVxuIik7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KHJlbW90ZSk7 DQo+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBST0JFX0RFRkVSOw0KPiAtICAg ICAgICAgICAgICAgfQ0KPiAtICAgICAgIH0NCj4gLQ0KPiAtICAgICAgIGkyY19ucCA9IG9mX3Bh cnNlX3BoYW5kbGUocmVtb3RlLCAiZGRjLWkyYy1idXMiLCAwKTsNCj4gLSAgICAgICBvZl9ub2Rl X3B1dChyZW1vdGUpOw0KPiAtICAgICAgIGlmICghaTJjX25wKQ0KPiAtICAgICAgICAgICAgICAg cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiTm8gZGRjLWkyYy1idXMgaW4gY29u bmVjdG9yXG4iKTsNCj4gLQ0KPiAtICAgICAgIGhkbWktPmRkY19hZHB0ID0gb2ZfZmluZF9pMmNf YWRhcHRlcl9ieV9ub2RlKGkyY19ucCk7DQo+IC0gICAgICAgb2Zfbm9kZV9wdXQoaTJjX25wKTsN Cj4gLSAgICAgICBpZiAoIWhkbWktPmRkY19hZHB0KQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiRmFpbGVkIHRvIGdldCBkZGMgaTJjIGFkYXB0 ZXIgYnkgbm9kZVxuIik7DQo+IC0NCj4gLSAgICAgICByZXQgPSBtdGtfaGRtaV9nZXRfY2VjX2Rl dihoZG1pLCBkZXYsIG5wKTsNCj4gLSAgICAgICBpZiAocmV0KQ0KPiAtICAgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gLQ0KPiAtICAgICAgIHJldHVybiAwOw0KPiAtfQ0KPiAtDQo+ICAvKg0K PiAgICogSERNSSBhdWRpbyBjb2RlYyBjYWxsYmFja3MNCj4gICAqLw0KPiANCj4gLXN0YXRpYyBp bnQgbXRrX2hkbWlfYXVkaW9fcGFyYW1zKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhkbWlfY29kZWNfZGFpZm10ICpkYWlm bXQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVj X3BhcmFtcyAqcGFyYW1zKQ0KPiAtew0KPiAtICAgICAgIHN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFt IGF1ZF9wYXJhbXMgPSB7IDAgfTsNCj4gLSAgICAgICB1bnNpZ25lZCBpbnQgY2hhbiA9IHBhcmFt cy0+Y2VhLmNoYW5uZWxzOw0KPiAtDQo+IC0gICAgICAgZGV2X2RiZyhoZG1pLT5kZXYsICIlczog JXUgSHosICVkIGJpdCwgJWQgY2hhbm5lbHNcbiIsIF9fZnVuY19fLA0KPiAtICAgICAgICAgICAg ICAgcGFyYW1zLT5zYW1wbGVfcmF0ZSwgcGFyYW1zLT5zYW1wbGVfd2lkdGgsIGNoYW4pOw0KPiAt DQo+IC0gICAgICAgaWYgKCFoZG1pLT5icmlkZ2UuZW5jb2RlcikNCj4gLSAgICAgICAgICAgICAg IHJldHVybiAtRU5PREVWOw0KPiAtDQo+IC0gICAgICAgc3dpdGNoIChjaGFuKSB7DQo+IC0gICAg ICAgY2FzZSAyOg0KPiAtICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRfaW5wdXRfY2hhbl90 eXBlID0gSERNSV9BVURfQ0hBTl9UWVBFXzJfMDsNCj4gLSAgICAgICAgICAgICAgIGJyZWFrOw0K PiAtICAgICAgIGNhc2UgNDoNCj4gLSAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVkX2lucHV0 X2NoYW5fdHlwZSA9IEhETUlfQVVEX0NIQU5fVFlQRV80XzA7DQo+IC0gICAgICAgICAgICAgICBi cmVhazsNCj4gLSAgICAgICBjYXNlIDY6DQo+IC0gICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1 ZF9pbnB1dF9jaGFuX3R5cGUgPSBIRE1JX0FVRF9DSEFOX1RZUEVfNV8xOw0KPiAtICAgICAgICAg ICAgICAgYnJlYWs7DQo+IC0gICAgICAgY2FzZSA4Og0KPiAtICAgICAgICAgICAgICAgYXVkX3Bh cmFtcy5hdWRfaW5wdXRfY2hhbl90eXBlID0gSERNSV9BVURfQ0hBTl9UWVBFXzdfMTsNCj4gLSAg ICAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgICAgICAg ICBkZXZfZXJyKGhkbWktPmRldiwgImNoYW5uZWxbJWRdIG5vdCBzdXBwb3J0ZWQhXG4iLCBjaGFu KTsNCj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAtICAgICAgIH0NCj4gLQ0K PiAtICAgICAgIHN3aXRjaCAocGFyYW1zLT5zYW1wbGVfcmF0ZSkgew0KPiAtICAgICAgIGNhc2Ug MzIwMDA6DQo+IC0gICAgICAgY2FzZSA0NDEwMDoNCj4gLSAgICAgICBjYXNlIDQ4MDAwOg0KPiAt ICAgICAgIGNhc2UgODgyMDA6DQo+IC0gICAgICAgY2FzZSA5NjAwMDoNCj4gLSAgICAgICBjYXNl IDE3NjQwMDoNCj4gLSAgICAgICBjYXNlIDE5MjAwMDoNCj4gLSAgICAgICAgICAgICAgIGJyZWFr Ow0KPiAtICAgICAgIGRlZmF1bHQ6DQo+IC0gICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRl diwgInJhdGVbJWRdIG5vdCBzdXBwb3J0ZWQhXG4iLA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICBwYXJhbXMtPnNhbXBsZV9yYXRlKTsNCj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiAtICAgICAgIH0NCj4gLQ0KPiAtICAgICAgIHN3aXRjaCAoZGFpZm10LT5mbXQpIHsNCj4g LSAgICAgICBjYXNlIEhETUlfSTJTOg0KPiAtICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRf Y29kZWMgPSBIRE1JX0FVRElPX0NPRElOR19UWVBFX1BDTTsNCj4gLSAgICAgICAgICAgICAgIGF1 ZF9wYXJhbXMuYXVkX3NhbXBsZV9zaXplID0gSERNSV9BVURJT19TQU1QTEVfU0laRV8xNjsNCj4g LSAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVkX2lucHV0X3R5cGUgPSBIRE1JX0FVRF9JTlBV VF9JMlM7DQo+IC0gICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pMnNfZm10ID0gSERNSV9J MlNfTU9ERV9JMlNfMjRCSVQ7DQo+IC0gICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9tY2xr ID0gSERNSV9BVURfTUNMS18xMjhGUzsNCj4gLSAgICAgICAgICAgICAgIGJyZWFrOw0KPiAtICAg ICAgIGNhc2UgSERNSV9TUERJRjoNCj4gLSAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVkX2Nv ZGVjID0gSERNSV9BVURJT19DT0RJTkdfVFlQRV9QQ007DQo+IC0gICAgICAgICAgICAgICBhdWRf cGFyYW1zLmF1ZF9zYW1wbGVfc2l6ZSA9IEhETUlfQVVESU9fU0FNUExFX1NJWkVfMTY7DQo+IC0g ICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pbnB1dF90eXBlID0gSERNSV9BVURfSU5QVVRf U1BESUY7DQo+IC0gICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICBkZWZhdWx0Og0KPiAt ICAgICAgICAgICAgICAgZGV2X2VycihoZG1pLT5kZXYsICIlczogSW52YWxpZCBEQUkgZm9ybWF0 ICVkXG4iLCBfX2Z1bmNfXywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGFpZm10LT5mbXQp Ow0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+IC0gICAgICAgfQ0KPiAtICAg ICAgIG1lbWNweSgmYXVkX3BhcmFtcy5jb2RlY19wYXJhbXMsIHBhcmFtcywgc2l6ZW9mKGF1ZF9w YXJhbXMuY29kZWNfcGFyYW1zKSk7DQo+IC0gICAgICAgbWVtY3B5KCZoZG1pLT5hdWRfcGFyYW0s ICZhdWRfcGFyYW1zLCBzaXplb2YoYXVkX3BhcmFtcykpOw0KPiAtDQo+IC0gICAgICAgZGV2X2Ri ZyhoZG1pLT5kZXYsICJjb2RlYzolZCwgaW5wdXQ6JWQsIGNoYW5uZWw6JWQsIGZzOiVkXG4iLA0K PiAtICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRfY29kZWMsIGF1ZF9wYXJhbXMuYXVkX2lu cHV0X3R5cGUsDQo+IC0gICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pbnB1dF9jaGFuX3R5 cGUsIGF1ZF9wYXJhbXMuY29kZWNfcGFyYW1zLnNhbXBsZV9yYXRlKTsNCj4gLQ0KPiAtICAgICAg IHJldHVybiAwOw0KPiAtfQ0KPiAtDQo+ICBzdGF0aWMgaW50IG10a19oZG1pX2F1ZGlvX2h3X3Bh cmFtcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFpZm10LA0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJh bXMgKnBhcmFtcykNCj4gQEAgLTE1NTMsMjYgKzExMzQsNiBAQCBtdGtfaGRtaV9hdWRpb19tdXRl KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gICAgICAgICByZXR1cm4gMDsNCj4g IH0NCj4gDQo+IC1zdGF0aWMgaW50IG10a19oZG1pX2F1ZGlvX2dldF9lbGQoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhLCB1aW50OF90ICpidWYsIHNpemVfdCBsZW4pDQo+IC17DQo+IC0g ICAgICAgc3RydWN0IG10a19oZG1pICpoZG1pID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+IC0N Cj4gLSAgICAgICBpZiAoaGRtaS0+ZW5hYmxlZCkNCj4gLSAgICAgICAgICAgICAgIG1lbWNweShi dWYsIGhkbWktPmN1cnJfY29ubi0+ZWxkLCBtaW4oc2l6ZW9mKGhkbWktPmN1cnJfY29ubi0+ZWxk KSwgbGVuKSk7DQo+IC0gICAgICAgZWxzZQ0KPiAtICAgICAgICAgICAgICAgbWVtc2V0KGJ1Ziwg MCwgbGVuKTsNCj4gLSAgICAgICByZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQg bXRrX2hkbWlfYXVkaW9fc2V0X3BsdWdnZWRfY2Ioc3RydWN0IG10a19oZG1pICpoZG1pLCBoZG1p X2NvZGVjX3BsdWdnZWRfY2IgZm4sDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmNvZGVjX2RldikNCj4gLXsNCj4gLSAgICAgICBtdXRl eF9sb2NrKCZoZG1pLT51cGRhdGVfcGx1Z2dlZF9zdGF0dXNfbG9jayk7DQo+IC0gICAgICAgaGRt aS0+cGx1Z2dlZF9jYiA9IGZuOw0KPiAtICAgICAgIGhkbWktPmNvZGVjX2RldiA9IGNvZGVjX2Rl djsNCj4gLSAgICAgICBtdXRleF91bmxvY2soJmhkbWktPnVwZGF0ZV9wbHVnZ2VkX3N0YXR1c19s b2NrKTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGludCBtdGtfaGRtaV9hdWRpb19ob29rX3BsdWdn ZWRfY2Ioc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZG1pX2NvZGVjX3BsdWdnZWRfY2IgZm4sDQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmNv ZGVjX2RldikNCj4gQEAgLTE1OTQsMTAwICsxMTU1LDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aGRtaV9jb2RlY19vcHMgbXRrX2hkbWlfYXVkaW9fY29kZWNfb3BzID0gew0KPiAgICAgICAgIC5o b29rX3BsdWdnZWRfY2IgPSBtdGtfaGRtaV9hdWRpb19ob29rX3BsdWdnZWRfY2IsDQo+ICB9Ow0K PiANCj4gLXN0YXRpYyB2b2lkIG10a19oZG1pX3VucmVnaXN0ZXJfYXVkaW9fZHJpdmVyKHZvaWQg KmRhdGEpDQo+IC17DQo+IC0gICAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YSk7 DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQgbXRrX2hkbWlfcmVnaXN0ZXJfYXVkaW9fZHJpdmVy KHN0cnVjdCBkZXZpY2UgKmRldikNCj4gLXsNCj4gLSAgICAgICBzdHJ1Y3QgbXRrX2hkbWkgKmhk bWkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gLSAgICAgICBzdHJ1Y3QgaGRtaV9hdWRpb19w YXJhbSAqYXVkX3BhcmFtID0gJmhkbWktPmF1ZF9wYXJhbTsNCj4gLSAgICAgICBzdHJ1Y3QgaGRt aV9jb2RlY19wZGF0YSBjb2RlY19kYXRhID0gew0KPiAtICAgICAgICAgICAgICAgLm9wcyA9ICZt dGtfaGRtaV9hdWRpb19jb2RlY19vcHMsDQo+IC0gICAgICAgICAgICAgICAubWF4X2kyc19jaGFu bmVscyA9IDIsDQo+IC0gICAgICAgICAgICAgICAuaTJzID0gMSwNCj4gLSAgICAgICAgICAgICAg IC5kYXRhID0gaGRtaSwNCj4gLSAgICAgICAgICAgICAgIC5ub19jYXB0dXJlX211dGUgPSAxLA0K DQpXaHkgZG8geW91IHJlbW92ZSBub19jYXB0dXJlX211dGU/DQoNCj4gLSAgICAgICB9Ow0KPiAt ICAgICAgIGludCByZXQ7DQo+IC0NCj4gLSAgICAgICBhdWRfcGFyYW0tPmF1ZF9jb2RlYyA9IEhE TUlfQVVESU9fQ09ESU5HX1RZUEVfUENNOw0KPiAtICAgICAgIGF1ZF9wYXJhbS0+YXVkX3NhbXBs ZV9zaXplID0gSERNSV9BVURJT19TQU1QTEVfU0laRV8xNjsNCj4gLSAgICAgICBhdWRfcGFyYW0t PmF1ZF9pbnB1dF90eXBlID0gSERNSV9BVURfSU5QVVRfSTJTOw0KPiAtICAgICAgIGF1ZF9wYXJh bS0+YXVkX2kyc19mbXQgPSBIRE1JX0kyU19NT0RFX0kyU18yNEJJVDsNCj4gLSAgICAgICBhdWRf cGFyYW0tPmF1ZF9tY2xrID0gSERNSV9BVURfTUNMS18xMjhGUzsNCj4gLSAgICAgICBhdWRfcGFy YW0tPmF1ZF9pbnB1dF9jaGFuX3R5cGUgPSBIRE1JX0FVRF9DSEFOX1RZUEVfMl8wOw0KPiAtDQo+ IC0gICAgICAgaGRtaS0+YXVkaW9fcGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9kYXRh KGRldiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSERNSV9DT0RFQ19EUlZfTkFNRSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBVEZPUk1fREVWSURfQVVUTywNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmNvZGVjX2RhdGEsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihjb2RlY19kYXRhKSk7DQo+IC0gICAgICAgaWYgKElTX0VS UihoZG1pLT5hdWRpb19wZGV2KSkNCj4gLSAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhk bWktPmF1ZGlvX3BkZXYpOw0KPiAtDQo+IC0gICAgICAgcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29y X3Jlc2V0KGRldiwgbXRrX2hkbWlfdW5yZWdpc3Rlcl9hdWRpb19kcml2ZXIsDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkbWktPmF1ZGlvX3BkZXYpOw0KPiAtICAg ICAgIGlmIChyZXQpDQo+IC0gICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiAtDQo+IC0gICAg ICAgcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gIHN0YXRpYyBpbnQgbXRrX2hkbWlfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gICAgICAgICBzdHJ1Y3QgbXRrX2hk bWkgKmhkbWk7DQo+IC0gICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4g LSAgICAgICBjb25zdCBpbnQgbnVtX2Nsb2NrcyA9IE1US19IRE1JX0NMS19DT1VOVDsNCj4gLSAg ICAgICBpbnQgcmV0Ow0KPiAtDQo+IC0gICAgICAgaGRtaSA9IGRldm1fa3phbGxvYyhkZXYsIHNp emVvZigqaGRtaSksIEdGUF9LRVJORUwpOw0KPiAtICAgICAgIGlmICghaGRtaSkNCj4gLSAgICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiANCj4gLSAgICAgICBoZG1pLT5kZXYgPSBkZXY7 DQo+IC0gICAgICAgaGRtaS0+Y29uZiA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0K PiArICAgICAgIGhkbWkgPSBtdGtfaGRtaV9jb21tb25fcHJvYmUocGRldik7DQo+ICsgICAgICAg aWYgKElTX0VSUihoZG1pKSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhkbWkp Ow0KPiANCj4gLSAgICAgICBoZG1pLT5jbGsgPSBkZXZtX2tjYWxsb2MoZGV2LCBudW1fY2xvY2tz LCBzaXplb2YoKmhkbWktPmNsayksIEdGUF9LRVJORUwpOw0KPiAtICAgICAgIGlmICghaGRtaS0+ Y2xrKQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+IC0NCj4gLSAgICAgICBy ZXQgPSBtdGtfaGRtaV9kdF9wYXJzZV9wZGF0YShoZG1pLCBwZGV2LCBtdGtfaGRtaV9jbGtfbmFt ZXMsIG51bV9jbG9ja3MpOw0KPiAtICAgICAgIGlmIChyZXQpDQo+IC0gICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiAtDQo+IC0gICAgICAgaGRtaS0+cGh5ID0gZGV2bV9waHlfZ2V0KGRldiwg ImhkbWkiKTsNCj4gLSAgICAgICBpZiAoSVNfRVJSKGhkbWktPnBoeSkpDQo+IC0gICAgICAgICAg ICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaGRtaS0+cGh5KSwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IEhETUkgUEhZ XG4iKTsNCj4gLQ0KPiAtICAgICAgIG11dGV4X2luaXQoJmhkbWktPnVwZGF0ZV9wbHVnZ2VkX3N0 YXR1c19sb2NrKTsNCj4gLSAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBoZG1pKTsN Cj4gLQ0KPiAtICAgICAgIHJldCA9IG10a19oZG1pX3JlZ2lzdGVyX2F1ZGlvX2RyaXZlcihkZXYp Ow0KPiAtICAgICAgIGlmIChyZXQpDQo+IC0gICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIHJldCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJG YWlsZWQgdG8gcmVnaXN0ZXIgYXVkaW8gZHJpdmVyXG4iKTsNCj4gLQ0KPiAtICAgICAgIGhkbWkt PmJyaWRnZS5mdW5jcyA9ICZtdGtfaGRtaV9icmlkZ2VfZnVuY3M7DQo+IC0gICAgICAgaGRtaS0+ YnJpZGdlLm9mX25vZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsNCj4gLSAgICAgICBoZG1pLT5icmlk Z2Uub3BzID0gRFJNX0JSSURHRV9PUF9ERVRFQ1QgfCBEUk1fQlJJREdFX09QX0VESUQNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgIHwgRFJNX0JSSURHRV9PUF9IUEQ7DQo+IC0gICAgICAgaGRt aS0+YnJpZGdlLnR5cGUgPSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUE7DQo+IC0gICAgICAgaGRt aS0+YnJpZGdlLnZlbmRvciA9ICJNZWRpYVRlayI7DQo+IC0gICAgICAgaGRtaS0+YnJpZGdlLnBy b2R1Y3QgPSAiT24tQ2hpcCBIRE1JIjsNCj4gLQ0KPiAtICAgICAgIHJldCA9IGRldm1fZHJtX2Jy aWRnZV9hZGQoZGV2LCAmaGRtaS0+YnJpZGdlKTsNCj4gLSAgICAgICBpZiAocmV0KQ0KPiAtICAg ICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gYWRk IGJyaWRnZVxuIik7DQo+ICsgICAgICAgaWYgKCFoZG1pLT5jZWNfZGV2KQ0KPiArICAgICAgICAg ICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoaGRtaS0+ZGV2LCAtRU5PREVWLCAiQ0VDIGlzIHJl cXVpcmVkIGJ5IEhETUl2MVxuIik7DQo+IA0KPiAtICAgICAgIHJldCA9IG10a19oZG1pX2Nsa19l bmFibGVfYXVkaW8oaGRtaSk7DQo+IC0gICAgICAgaWYgKHJldCkNCj4gLSAgICAgICAgICAgICAg IHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkZhaWxlZCB0byBlbmFibGUgYXVkaW8gY2xvY2tzXG4iKTsNCg0KT3Jp Z2luYWxseSwgcHJpbnQgZXJyb3IgbWVzc2FnZSBmb3IgbXRrX2hkbWlfY2xrX2VuYWJsZV9hdWRp bygpIGhlcmUuDQpJbiB0aGlzIHBhdGNoLCBpdCBkb2VzIG5vdCBwcmludCBlcnJvciBtZXNzYWdl IGhlcmUuDQpJZiB0aGlzIG1vZGlmaWNhdGlvbiBpcyBuZWNlc3NhcnksIHNlcGFyYXRlIHRoaXMg dG8gYW5vdGhlciBwYXRjaC4NCg0KPiAtDQo+IC0gICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAg cmV0dXJuIG10a19oZG1pX2Nsa19lbmFibGVfYXVkaW8oaGRtaSk7DQo+ICB9DQo+IA0KPiAgc3Rh dGljIHZvaWQgbXRrX2hkbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ IEBAIC0xNzE1LDE5ICsxMTk0LDMyIEBAIHN0YXRpYyBfX21heWJlX3VudXNlZCBpbnQgbXRrX2hk bWlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gDQo+ICBzdGF0aWMgU0lNUExFX0RFVl9Q TV9PUFMobXRrX2hkbWlfcG1fb3BzLCBtdGtfaGRtaV9zdXNwZW5kLCBtdGtfaGRtaV9yZXN1bWUp Ow0KPiANCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfdmVyX2NvbmYgbXRrX2hkbWlf djFfdmVyX2NvbmYgPSB7DQo+ICsgICAgICAgLmJyaWRnZV9mdW5jcyA9ICZtdGtfaGRtaV9icmlk Z2VfZnVuY3MsDQo+ICsgICAgICAgLmNvZGVjX29wcyA9ICZtdGtfaGRtaV9hdWRpb19jb2RlY19v cHMsDQo+ICsgICAgICAgLm10a19oZG1pX2Nsb2NrX25hbWVzID0gbXRrX2hkbWlfY2xrX25hbWVz LA0KPiArICAgICAgIC5udW1fY2xvY2tzID0gQVJSQVlfU0laRShtdGtfaGRtaV9jbGtfbmFtZXMp DQo+ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19oZG1pX2NvbmYgbXRrX2hk bWlfY29uZl9tdDI3MDEgPSB7DQo+ICAgICAgICAgLnR6X2Rpc2FibGVkID0gdHJ1ZSwNCj4gKyAg ICAgICAudmVyX2NvbmYgPSAmbXRrX2hkbWlfdjFfdmVyX2NvbmYNCj4gIH07DQo+IA0KPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBtdGtfaGRtaV9jb25mIG10a19oZG1pX2NvbmZfbXQ4MTY3ID0gew0K PiAtICAgICAgIC5tYXhfbW9kZV9jbG9jayA9IDE0ODUwMCwNCj4gICAgICAgICAuY2VhX21vZGVz X29ubHkgPSB0cnVlLA0KPiArICAgICAgIC5tYXhfbW9kZV9jbG9jayA9IDE0ODUwMCwNCj4gKyAg ICAgICAudmVyX2NvbmYgPSAmbXRrX2hkbWlfdjFfdmVyX2NvbmYNCj4gK307DQo+ICsNCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfY29uZiBtdGtfaGRtaV9jb25mX210ODE3MyA9IHsN Cj4gKyAgICAgICAudmVyX2NvbmYgPSAmbXRrX2hkbWlfdjFfdmVyX2NvbmYNCj4gIH07DQo+IA0K PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2hkbWlfb2ZfaWRzW10gPSB7 DQo+ICAgICAgICAgeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtaGRtaSIsIC5kYXRh ID0gJm10a19oZG1pX2NvbmZfbXQyNzAxIH0sDQo+ICAgICAgICAgeyAuY29tcGF0aWJsZSA9ICJt ZWRpYXRlayxtdDgxNjctaGRtaSIsIC5kYXRhID0gJm10a19oZG1pX2NvbmZfbXQ4MTY3IH0sDQo+ IC0gICAgICAgeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaGRtaSIgfSwNCj4gKyAg ICAgICB7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pIiwgLmRhdGEgPSAmbXRr X2hkbWlfY29uZl9tdDgxNzMgfSwNCj4gICAgICAgICB7IC8qIHNlbnRpbmVsICovIH0NCj4gIH07 DQo+ICBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdGtfaGRtaV9vZl9pZHMpOw0KPiBAQCAtMTc0 NywzICsxMjM5LDQgQEAgTU9EVUxFX0FVVEhPUigiSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5j b20+Iik7DQo+ICBNT0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIEhETUkgRHJpdmVyIik7DQo+ ICBNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ICBNT0RVTEVfSU1QT1JUX05TKCJEUk1fTVRL X0hETUlfVjEiKTsNCj4gK01PRFVMRV9JTVBPUlRfTlMoIkRSTV9NVEtfSERNSSIpOw0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX2NvbW1vbi5jIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX2NvbW1vbi5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2RjN2JhNDZmNDRkDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX2NvbW1vbi5jDQo+ IEBAIC0wLDAgKzEsNDI2IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vbmx5DQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4NCj4g KyAqIENvcHlyaWdodCAoYykgMjAyNCBDb2xsYWJvcmEgTHRkLg0KPiArICogICAgICAgICAgICAg ICAgICAgIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIDxhbmdlbG9naW9hY2NoaW5vLmRlbHJl Z25vQGNvbGxhYm9yYS5jb20+DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGRybS9kcm1fbW9k ZXMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9o ZG1pLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbWF0 aC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxh dGZvcm0uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9tZmQvc3lzY29uLmg+DQo+ICsjaW5jbHVkZSA8c291bmQvaGRtaS1jb2RlYy5o Pg0KPiArDQo+ICsjaW5jbHVkZSAibXRrX2hkbWlfY29tbW9uLmgiDQo+ICsNCj4gK3N0cnVjdCBo ZG1pX2Fjcl9uIHsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgY2xvY2s7DQo+ICsgICAgICAgdW5z aWduZWQgaW50IG5bM107DQo+ICt9Ow0KPiArDQo+ICsvKiBSZWNvbW1lbmRlZCBOIHZhbHVlcyBm cm9tIEhETUkgc3BlY2lmaWNhdGlvbiwgdGFibGVzIDctMSB0byA3LTMgKi8NCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaGRtaV9hY3JfbiBoZG1pX3JlY19uX3RhYmxlW10gPSB7DQo+ICsgICAgICAg LyogQ2xvY2ssIE46IDMya0h6IDQ0LjFrSHogNDhrSHogKi8NCj4gKyAgICAgICB7ICAyNTE3NSwg eyAgNDU3NiwgIDcwMDcsICA2ODY0IH0gfSwNCj4gKyAgICAgICB7ICA3NDE3NiwgeyAxMTY0OCwg MTc4MzYsIDExNjQ4IH0gfSwNCj4gKyAgICAgICB7IDE0ODM1MiwgeyAxMTY0OCwgIDg5MTgsICA1 ODI0IH0gfSwNCj4gKyAgICAgICB7IDI5NjcwMywgeyAgNTgyNCwgIDQ0NTksICA1ODI0IH0gfSwN Cj4gKyAgICAgICB7IDI5NzAwMCwgeyAgMzA3MiwgIDQ3MDQsICA1MTIwIH0gfSwNCj4gKyAgICAg ICB7ICAgICAgMCwgeyAgNDA5NiwgIDYyNzIsICA2MTQ0IH0gfSwgLyogYWxsIG90aGVyIFRNRFMg Y2xvY2tzICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIGhkbWlfcmVjb21tZW5kZWRfbigp IC0gUmV0dXJuIE4gdmFsdWUgcmVjb21tZW5kZWQgYnkgSERNSSBzcGVjaWZpY2F0aW9uDQo+ICsg KiBAZnJlcTogYXVkaW8gc2FtcGxlIHJhdGUgaW4gSHoNCj4gKyAqIEBjbG9jazogcm91bmRlZCBU TURTIGNsb2NrIGluIGtIeg0KPiArICovDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IGhkbWlfcmVj b21tZW5kZWRfbih1bnNpZ25lZCBpbnQgZnJlcSwgdW5zaWduZWQgaW50IGNsb2NrKQ0KPiArew0K PiArICAgICAgIGNvbnN0IHN0cnVjdCBoZG1pX2Fjcl9uICpyZWNvbW1lbmRlZDsNCj4gKyAgICAg ICB1bnNpZ25lZCBpbnQgaTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGhkbWlfcmVjX25fdGFibGUpIC0gMTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAo Y2xvY2sgPT0gaGRtaV9yZWNfbl90YWJsZVtpXS5jbG9jaykNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIHJlY29tbWVuZGVkID0gaGRtaV9y ZWNfbl90YWJsZSArIGk7DQo+ICsNCj4gKyAgICAgICBzd2l0Y2ggKGZyZXEpIHsNCj4gKyAgICAg ICBjYXNlIDMyMDAwOg0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzBd Ow0KPiArICAgICAgIGNhc2UgNDQxMDA6DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmVjb21t ZW5kZWQtPm5bMV07DQo+ICsgICAgICAgY2FzZSA0ODAwMDoNCj4gKyAgICAgICAgICAgICAgIHJl dHVybiByZWNvbW1lbmRlZC0+blsyXTsNCj4gKyAgICAgICBjYXNlIDg4MjAwOg0KPiArICAgICAg ICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzFdICogMjsNCj4gKyAgICAgICBjYXNlIDk2 MDAwOg0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHJlY29tbWVuZGVkLT5uWzJdICogMjsNCj4g KyAgICAgICBjYXNlIDE3NjQwMDoNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZWNvbW1lbmRl ZC0+blsxXSAqIDQ7DQo+ICsgICAgICAgY2FzZSAxOTIwMDA6DQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmVjb21tZW5kZWQtPm5bMl0gKiA0Ow0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAg ICAgICAgICAgICByZXR1cm4gKDEyOCAqIGZyZXEpIC8gMTAwMDsNCj4gKyAgICAgICB9DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaGRtaV9tb2RlX2Nsb2NrX3RvX2h6KHVuc2ln bmVkIGludCBjbG9jaykNCj4gK3sNCj4gKyAgICAgICBzd2l0Y2ggKGNsb2NrKSB7DQo+ICsgICAg ICAgY2FzZSAyNTE3NToNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAyNTE3NDgyNTsgICAgICAg IC8qIDI1LjIvMS4wMDEgTUh6ICovDQo+ICsgICAgICAgY2FzZSA3NDE3NjoNCj4gKyAgICAgICAg ICAgICAgIHJldHVybiA3NDE3NTgyNDsgICAgICAgIC8qIDc0LjI1LzEuMDAxIE1IeiAqLw0KPiAr ICAgICAgIGNhc2UgMTQ4MzUyOg0KPiArICAgICAgICAgICAgICAgcmV0dXJuIDE0ODM1MTY0ODsg ICAgICAgLyogMTQ4LjUvMS4wMDEgTUh6ICovDQo+ICsgICAgICAgY2FzZSAyOTY3MDM6DQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gMjk2NzAzMjk3OyAgICAgICAvKiAyOTcvMS4wMDEgTUh6ICov DQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBjbG9jayAqIDEw MDA7DQo+ICsgICAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IGhkbWlf ZXhwZWN0ZWRfY3RzKHVuc2lnbmVkIGludCBhdWRpb19zYW1wbGVfcmF0ZSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdG1kc19jbG9jaywgdW5z aWduZWQgaW50IG4pDQo+ICt7DQo+ICsgICAgICAgcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUX1VM TCgodTY0KWhkbWlfbW9kZV9jbG9ja190b19oeih0bWRzX2Nsb2NrKSAqIG4sDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjggKiBhdWRpb19zYW1wbGVfcmF0ZSk7DQo+ ICt9DQo+ICsNCj4gK3ZvaWQgbXRrX2hkbWlfZ2V0X25jdHModW5zaWduZWQgaW50IHNhbXBsZV9y YXRlLCB1bnNpZ25lZCBpbnQgY2xvY2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50ICpuLCB1bnNpZ25lZCBpbnQgKmN0cykNCj4gK3sNCj4gKyAgICAgICAqbiA9IGhkbWlf cmVjb21tZW5kZWRfbihzYW1wbGVfcmF0ZSwgY2xvY2spOw0KPiArICAgICAgICpjdHMgPSBoZG1p X2V4cGVjdGVkX2N0cyhzYW1wbGVfcmF0ZSwgY2xvY2ssICpuKTsNCj4gK30NCj4gK0VYUE9SVF9T WU1CT0xfTlNfR1BMKG10a19oZG1pX2dldF9uY3RzLCAiRFJNX01US19IRE1JIik7DQo+ICsNCj4g K2ludCBtdGtfaGRtaV9hdWRpb19wYXJhbXMoc3RydWN0IG10a19oZG1pICpoZG1pLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFpZm10LA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX3BhcmFtcyAqcGFy YW1zKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFtIGF1ZF9wYXJhbXMg PSB7IDAgfTsNCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgY2hhbiA9IHBhcmFtcy0+Y2VhLmNoYW5u ZWxzOw0KPiArDQo+ICsgICAgICAgZGV2X2RiZyhoZG1pLT5kZXYsICIlczogJXUgSHosICVkIGJp dCwgJWQgY2hhbm5lbHNcbiIsIF9fZnVuY19fLA0KPiArICAgICAgICAgICAgICAgcGFyYW1zLT5z YW1wbGVfcmF0ZSwgcGFyYW1zLT5zYW1wbGVfd2lkdGgsIGNoYW4pOw0KPiArDQo+ICsgICAgICAg aWYgKCFoZG1pLT5icmlkZ2UuZW5jb2RlcikNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P REVWOw0KPiArDQo+ICsgICAgICAgc3dpdGNoIChjaGFuKSB7DQo+ICsgICAgICAgY2FzZSAyOg0K PiArICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRfaW5wdXRfY2hhbl90eXBlID0gSERNSV9B VURfQ0hBTl9UWVBFXzJfMDsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGNh c2UgNDoNCj4gKyAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVkX2lucHV0X2NoYW5fdHlwZSA9 IEhETUlfQVVEX0NIQU5fVFlQRV80XzA7DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICBjYXNlIDY6DQo+ICsgICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pbnB1dF9jaGFu X3R5cGUgPSBIRE1JX0FVRF9DSEFOX1RZUEVfNV8xOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7 DQo+ICsgICAgICAgY2FzZSA4Og0KPiArICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRfaW5w dXRfY2hhbl90eXBlID0gSERNSV9BVURfQ0hBTl9UWVBFXzdfMTsNCj4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhk bWktPmRldiwgImNoYW5uZWxbJWRdIG5vdCBzdXBwb3J0ZWQhXG4iLCBjaGFuKTsNCj4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHN3 aXRjaCAocGFyYW1zLT5zYW1wbGVfcmF0ZSkgew0KPiArICAgICAgIGNhc2UgMzIwMDA6DQo+ICsg ICAgICAgY2FzZSA0NDEwMDoNCj4gKyAgICAgICBjYXNlIDQ4MDAwOg0KPiArICAgICAgIGNhc2Ug ODgyMDA6DQo+ICsgICAgICAgY2FzZSA5NjAwMDoNCj4gKyAgICAgICBjYXNlIDE3NjQwMDoNCj4g KyAgICAgICBjYXNlIDE5MjAwMDoNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAg IGRlZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwgInJhdGVbJWRd IG5vdCBzdXBwb3J0ZWQhXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnNh bXBsZV9yYXRlKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArICAgICAg IH0NCj4gKw0KPiArICAgICAgIHN3aXRjaCAoZGFpZm10LT5mbXQpIHsNCj4gKyAgICAgICBjYXNl IEhETUlfSTJTOg0KPiArICAgICAgICAgICAgICAgYXVkX3BhcmFtcy5hdWRfY29kZWMgPSBIRE1J X0FVRElPX0NPRElOR19UWVBFX1BDTTsNCj4gKyAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVk X3NhbXBsZV9zaXplID0gSERNSV9BVURJT19TQU1QTEVfU0laRV8xNjsNCj4gKyAgICAgICAgICAg ICAgIGF1ZF9wYXJhbXMuYXVkX2lucHV0X3R5cGUgPSBIRE1JX0FVRF9JTlBVVF9JMlM7DQo+ICsg ICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pMnNfZm10ID0gSERNSV9JMlNfTU9ERV9JMlNf MjRCSVQ7DQo+ICsgICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9tY2xrID0gSERNSV9BVURf TUNMS18xMjhGUzsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGNhc2UgSERN SV9TUERJRjoNCj4gKyAgICAgICAgICAgICAgIGF1ZF9wYXJhbXMuYXVkX2NvZGVjID0gSERNSV9B VURJT19DT0RJTkdfVFlQRV9QQ007DQo+ICsgICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9z YW1wbGVfc2l6ZSA9IEhETUlfQVVESU9fU0FNUExFX1NJWkVfMTY7DQo+ICsgICAgICAgICAgICAg ICBhdWRfcGFyYW1zLmF1ZF9pbnB1dF90eXBlID0gSERNSV9BVURfSU5QVVRfU1BESUY7DQo+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAg ICAgZGV2X2VycihoZG1pLT5kZXYsICIlczogSW52YWxpZCBEQUkgZm9ybWF0ICVkXG4iLCBfX2Z1 bmNfXywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGFpZm10LT5mbXQpOw0KPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIG1lbWNweSgm YXVkX3BhcmFtcy5jb2RlY19wYXJhbXMsIHBhcmFtcywgc2l6ZW9mKGF1ZF9wYXJhbXMuY29kZWNf cGFyYW1zKSk7DQo+ICsgICAgICAgbWVtY3B5KCZoZG1pLT5hdWRfcGFyYW0sICZhdWRfcGFyYW1z LCBzaXplb2YoYXVkX3BhcmFtcykpOw0KPiArDQo+ICsgICAgICAgZGV2X2RiZyhoZG1pLT5kZXYs ICJjb2RlYzolZCwgaW5wdXQ6JWQsIGNoYW5uZWw6JWQsIGZzOiVkXG4iLA0KPiArICAgICAgICAg ICAgICAgYXVkX3BhcmFtcy5hdWRfY29kZWMsIGF1ZF9wYXJhbXMuYXVkX2lucHV0X3R5cGUsDQo+ ICsgICAgICAgICAgICAgICBhdWRfcGFyYW1zLmF1ZF9pbnB1dF9jaGFuX3R5cGUsIGF1ZF9wYXJh bXMuY29kZWNfcGFyYW1zLnNhbXBsZV9yYXRlKTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0K PiArfQ0KPiArRVhQT1JUX1NZTUJPTF9OU19HUEwobXRrX2hkbWlfYXVkaW9fcGFyYW1zLCAiRFJN X01US19IRE1JIik7DQo+ICsNCj4gK2ludCBtdGtfaGRtaV9hdWRpb19nZXRfZWxkKHN0cnVjdCBk ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgdWludDhfdCAqYnVmLCBzaXplX3QgbGVuKQ0KPiArew0K PiArICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0K PiArDQo+ICsgICAgICAgaWYgKGhkbWktPmVuYWJsZWQpDQo+ICsgICAgICAgICAgICAgICBtZW1j cHkoYnVmLCBoZG1pLT5jdXJyX2Nvbm4tPmVsZCwgbWluKHNpemVvZihoZG1pLT5jdXJyX2Nvbm4t PmVsZCksIGxlbikpOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIG1lbXNldChi dWYsIDAsIGxlbik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gK0VYUE9SVF9T WU1CT0xfTlNfR1BMKG10a19oZG1pX2F1ZGlvX2dldF9lbGQsICJEUk1fTVRLX0hETUkiKTsNCj4g Kw0KPiArdm9pZCBtdGtfaGRtaV9hdWRpb19zZXRfcGx1Z2dlZF9jYihzdHJ1Y3QgbXRrX2hkbWkg KmhkbWksIGhkbWlfY29kZWNfcGx1Z2dlZF9jYiBmbiwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpjb2RlY19kZXYpDQo+ICt7DQo+ICsgICAgICAg bXV0ZXhfbG9jaygmaGRtaS0+dXBkYXRlX3BsdWdnZWRfc3RhdHVzX2xvY2spOw0KPiArICAgICAg IGhkbWktPnBsdWdnZWRfY2IgPSBmbjsNCj4gKyAgICAgICBoZG1pLT5jb2RlY19kZXYgPSBjb2Rl Y19kZXY7DQo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZoZG1pLT51cGRhdGVfcGx1Z2dlZF9zdGF0 dXNfbG9jayk7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX05TX0dQTChtdGtfaGRtaV9hdWRpb19z ZXRfcGx1Z2dlZF9jYiwgIkRSTV9NVEtfSERNSSIpOw0KPiArDQo+ICtzdGF0aWMgaW50IG10a19o ZG1pX2dldF9hbGxfY2xrKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgc3RydWN0IGRldmljZV9ub2Rl ICpucCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29u c3QgKmNsb2NrX25hbWVzLCBzaXplX3QgbnVtX2Nsb2NrcykNCj4gK3sNCj4gKyAgICAgICBpbnQg aTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fY2xvY2tzOyBpKyspIHsNCj4g KyAgICAgICAgICAgICAgIGhkbWktPmNsa1tpXSA9IG9mX2Nsa19nZXRfYnlfbmFtZShucCwgY2xv Y2tfbmFtZXNbaV0pOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGhkbWktPmNs a1tpXSkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhkbWktPmNs a1tpXSk7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK2Jvb2wgbXRrX2hkbWlfYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkNCj4gK3sNCj4gKyAgICAgICBy ZXR1cm4gdHJ1ZTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfTlNfR1BMKG10a19oZG1pX2JyaWRn ZV9tb2RlX2ZpeHVwLCAiRFJNX01US19IRE1JIik7DQo+ICsNCj4gK3ZvaWQgbXRrX2hkbWlfYnJp ZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbXRrX2hkbWkgKmhkbWkg PSBoZG1pX2N0eF9mcm9tX2JyaWRnZShicmlkZ2UpOw0KPiArDQo+ICsgICAgICAgZGV2X2RiZyho ZG1pLT5kZXYsICJjdXIgaW5mbzogbmFtZTolcywgaGRpc3BsYXk6JWRcbiIsDQo+ICsgICAgICAg ICAgICAgICBhZGp1c3RlZF9tb2RlLT5uYW1lLCBhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSk7DQo+ ICsgICAgICAgZGV2X2RiZyhoZG1pLT5kZXYsICJoc3luY19zdGFydDolZCxoc3luY19lbmQ6JWQs IGh0b3RhbDolZCIsDQo+ICsgICAgICAgICAgICAgICBhZGp1c3RlZF9tb2RlLT5oc3luY19zdGFy dCwgYWRqdXN0ZWRfbW9kZS0+aHN5bmNfZW5kLA0KPiArICAgICAgICAgICAgICAgYWRqdXN0ZWRf bW9kZS0+aHRvdGFsKTsNCj4gKyAgICAgICBkZXZfZGJnKGhkbWktPmRldiwgImhza2V3OiVkLCB2 ZGlzcGxheTolZFxuIiwNCj4gKyAgICAgICAgICAgICAgIGFkanVzdGVkX21vZGUtPmhza2V3LCBh ZGp1c3RlZF9tb2RlLT52ZGlzcGxheSk7DQo+ICsgICAgICAgZGV2X2RiZyhoZG1pLT5kZXYsICJ2 c3luY19zdGFydDolZCwgdnN5bmNfZW5kOiVkLCB2dG90YWw6JWQiLA0KPiArICAgICAgICAgICAg ICAgYWRqdXN0ZWRfbW9kZS0+dnN5bmNfc3RhcnQsIGFkanVzdGVkX21vZGUtPnZzeW5jX2VuZCwN Cj4gKyAgICAgICAgICAgICAgIGFkanVzdGVkX21vZGUtPnZ0b3RhbCk7DQo+ICsgICAgICAgZGV2 X2RiZyhoZG1pLT5kZXYsICJ2c2NhbjolZCwgZmxhZzolZFxuIiwNCj4gKyAgICAgICAgICAgICAg IGFkanVzdGVkX21vZGUtPnZzY2FuLCBhZGp1c3RlZF9tb2RlLT5mbGFncyk7DQo+ICsNCj4gKyAg ICAgICBkcm1fbW9kZV9jb3B5KCZoZG1pLT5tb2RlLCBhZGp1c3RlZF9tb2RlKTsNCj4gK30NCj4g K0VYUE9SVF9TWU1CT0xfTlNfR1BMKG10a19oZG1pX2JyaWRnZV9tb2RlX3NldCwgIkRSTV9NVEtf SERNSSIpOw0KPiArDQo+ICtzdGF0aWMgaW50IG10a19oZG1pX2dldF9jZWNfZGV2KHN0cnVjdCBt dGtfaGRtaSAqaGRtaSwgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmNlY19wZGV2Ow0KPiAr ICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2VjX25wOw0KPiArICAgICAgIGludCByZXQ7DQo+ ICsNCj4gKyAgICAgICAvKiBUaGUgQ0VDIG1vZHVsZSBoYW5kbGVzIEhETUkgaG90cGx1ZyBkZXRl Y3Rpb24gKi8NCj4gKyAgICAgICBjZWNfbnAgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChucC0+ cGFyZW50LCAibWVkaWF0ZWssbXQ4MTczLWNlYyIpOw0KPiArICAgICAgIGlmICghY2VjX25wKQ0K PiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRU5PVFNVUFAsICJG YWlsZWQgdG8gZmluZCBDRUMgbm9kZVxuIik7DQo+ICsNCj4gKyAgICAgICBjZWNfcGRldiA9IG9m X2ZpbmRfZGV2aWNlX2J5X25vZGUoY2VjX25wKTsNCj4gKyAgICAgICBpZiAoIWNlY19wZGV2KSB7 DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGhkbWktPmRldiwgIldhaXRpbmcgZm9yIENFQyBk ZXZpY2UgJXBPRlxuIiwgY2VjX25wKTsNCj4gKyAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGNl Y19ucCk7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9ERUZFUjsNCj4gKyAgICAg ICB9DQo+ICsgICAgICAgb2Zfbm9kZV9wdXQoY2VjX25wKTsNCj4gKw0KPiArICAgICAgIC8qDQo+ ICsgICAgICAgICogVGhlIG1lZGlhdGVrLHN5c2Nvbi1oZG1pIHByb3BlcnR5IGNvbnRhaW5zIGEg cGhhbmRsZSBsaW5rIHRvIHRoZQ0KPiArICAgICAgICAqIE1NU1lTX0NPTkZJRyBkZXZpY2UgYW5k IHRoZSByZWdpc3RlciBvZmZzZXQgb2YgdGhlIEhETUlfU1lTX0NGRw0KPiArICAgICAgICAqIHJl Z2lzdGVycyBpdCBjb250YWlucy4NCj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBoZG1pLT5zeXNf cmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhhbmRsZShucCwgIm1lZGlhdGVrLHN5 c2Nvbi1oZG1pIik7DQo+ICsgICAgICAgaWYgKElTX0VSUihoZG1pLT5zeXNfcmVnbWFwKSkNCj4g KyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGhkbWktPnN5c19yZWdtYXApOw0KPiArDQo+ ICsgICAgICAgcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgobnAsICJtZWRpYXRlayxz eXNjb24taGRtaSIsIDEsICZoZG1pLT5zeXNfb2Zmc2V0KTsNCj4gKyAgICAgICBpZiAocmV0KQ0K PiArICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBzeXN0ZW0gY29u ZmlndXJhdGlvbiByZWdpc3RlcnNcbiIpOw0KPiArDQo+ICsgICAgICAgaGRtaS0+Y2VjX2RldiA9 ICZjZWNfcGRldi0+ZGV2Ow0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IG10a19oZG1pX2R0X3BhcnNlX3BkYXRhKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKmNsa19uYW1lcywgc2l6ZV90IG51bV9jbG9ja3Mp DQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gKyAg ICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiArICAgICAgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlLCAqaTJjX25wOw0KPiArICAgICAgIGludCByZXQ7DQo+ ICsNCj4gKyAgICAgICByZXQgPSBtdGtfaGRtaV9nZXRfYWxsX2NsayhoZG1pLCBucCwgY2xrX25h bWVzLCBudW1fY2xvY2tzKTsNCj4gKyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAg cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJGYWlsZWQgdG8gZ2V0IGNsb2Nrc1xuIik7 DQo+ICsNCj4gKyAgICAgICBoZG1pLT5yZWdzID0gZGV2aWNlX25vZGVfdG9fcmVnbWFwKGRldi0+ b2Zfbm9kZSk7DQo+ICsgICAgICAgaWYgKElTX0VSUihoZG1pLT5yZWdzKSkNCj4gKyAgICAgICAg ICAgICAgIHJldHVybiBQVFJfRVJSKGhkbWktPnJlZ3MpOw0KPiArDQo+ICsgICAgICAgcmVtb3Rl ID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2RlKG5wLCAxLCAwKTsNCj4gKyAgICAgICBpZiAoIXJl bW90ZSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAgICAg aWYgKCFvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShyZW1vdGUsICJoZG1pLWNvbm5lY3RvciIpKSB7 DQo+ICsgICAgICAgICAgICAgICBoZG1pLT5uZXh0X2JyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRn ZShyZW1vdGUpOw0KPiArICAgICAgICAgICAgICAgaWYgKCFoZG1pLT5uZXh0X2JyaWRnZSkgew0K PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIldhaXRpbmcgZm9yIGV4dGVy bmFsIGJyaWRnZVxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KHJl bW90ZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBST0JFX0RFRkVSOw0K PiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGkyY19ucCA9 IG9mX3BhcnNlX3BoYW5kbGUocmVtb3RlLCAiZGRjLWkyYy1idXMiLCAwKTsNCj4gKyAgICAgICBv Zl9ub2RlX3B1dChyZW1vdGUpOw0KPiArICAgICAgIGlmICghaTJjX25wKQ0KPiArICAgICAgICAg ICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiTm8gZGRjLWkyYy1idXMg aW4gY29ubmVjdG9yXG4iKTsNCj4gKw0KPiArICAgICAgIGhkbWktPmRkY19hZHB0ID0gb2ZfZmlu ZF9pMmNfYWRhcHRlcl9ieV9ub2RlKGkyY19ucCk7DQo+ICsgICAgICAgb2Zfbm9kZV9wdXQoaTJj X25wKTsNCj4gKyAgICAgICBpZiAoIWhkbWktPmRkY19hZHB0KQ0KPiArICAgICAgICAgICAgICAg cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiRmFpbGVkIHRvIGdldCBkZGMgaTJj IGFkYXB0ZXIgYnkgbm9kZVxuIik7DQo+ICsNCj4gKyAgICAgICByZXQgPSBtdGtfaGRtaV9nZXRf Y2VjX2RldihoZG1pLCBkZXYsIG5wKTsNCj4gKyAgICAgICBpZiAocmV0ID09IC1FTk9UU1VQUCkN Cj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGRldiwgIkNFQyBzdXBwb3J0IHVuYXZhaWxhYmxl OiBub2RlIG5vdCBmb3VuZFxuIik7DQoNCkNFQyBpcyB1c2VkIG9ubHkgaW4gdjEgZHJpdmVyLiBT byBzZXBhcmF0ZSBDRUMgcmVsYXRlZCBtb2RpZmljYXRpb24gdG8gYW5vdGhlciBwYXRjaC4NCg0K PiArICAgICAgIGVsc2UgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbXRrX2hk bWlfdW5yZWdpc3Rlcl9hdWRpb19kcml2ZXIodm9pZCAqZGF0YSkNCj4gK3sNCj4gKyAgICAgICBw bGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihkYXRhKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBtdGtfaGRtaV9yZWdpc3Rlcl9hdWRpb19kcml2ZXIoc3RydWN0IGRldmljZSAqZGV2KQ0KPiAr ew0KPiArICAgICAgIHN0cnVjdCBtdGtfaGRtaSAqaGRtaSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp Ow0KPiArICAgICAgIHN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFtICphdWRfcGFyYW0gPSAmaGRtaS0+ YXVkX3BhcmFtOw0KPiArICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX3BkYXRhIGNvZGVjX2RhdGEg PSB7DQo+ICsgICAgICAgICAgICAgICAub3BzID0gaGRtaS0+Y29uZi0+dmVyX2NvbmYtPmNvZGVj X29wcywNCj4gKyAgICAgICAgICAgICAgIC5tYXhfaTJzX2NoYW5uZWxzID0gMiwNCj4gKyAgICAg ICAgICAgICAgIC5pMnMgPSAxLA0KPiArICAgICAgICAgICAgICAgLmRhdGEgPSBoZG1pLA0KPiAr ICAgICAgIH07DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIGF1ZF9wYXJhbS0+ YXVkX2NvZGVjID0gSERNSV9BVURJT19DT0RJTkdfVFlQRV9QQ007DQo+ICsgICAgICAgYXVkX3Bh cmFtLT5hdWRfc2FtcGxlX3NpemUgPSBIRE1JX0FVRElPX1NBTVBMRV9TSVpFXzE2Ow0KPiArICAg ICAgIGF1ZF9wYXJhbS0+YXVkX2lucHV0X3R5cGUgPSBIRE1JX0FVRF9JTlBVVF9JMlM7DQo+ICsg ICAgICAgYXVkX3BhcmFtLT5hdWRfaTJzX2ZtdCA9IEhETUlfSTJTX01PREVfSTJTXzI0QklUOw0K PiArICAgICAgIGF1ZF9wYXJhbS0+YXVkX21jbGsgPSBIRE1JX0FVRF9NQ0xLXzEyOEZTOw0KPiAr ICAgICAgIGF1ZF9wYXJhbS0+YXVkX2lucHV0X2NoYW5fdHlwZSA9IEhETUlfQVVEX0NIQU5fVFlQ RV8yXzA7DQo+ICsNCj4gKyAgICAgICBoZG1pLT5hdWRpb19wZGV2ID0gcGxhdGZvcm1fZGV2aWNl X3JlZ2lzdGVyX2RhdGEoZGV2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0NPREVDX0RSVl9OQU1FLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFURk9STV9E RVZJRF9BVVRPLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY29kZWNfZGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNvZGVjX2RhdGEpKTsNCj4gKyAg ICAgICBpZiAoSVNfRVJSKGhkbWktPmF1ZGlvX3BkZXYpKQ0KPiArICAgICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIoaGRtaS0+YXVkaW9fcGRldik7DQo+ICsNCj4gKyAgICAgICByZXQgPSBkZXZt X2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBtdGtfaGRtaV91bnJlZ2lzdGVyX2F1ZGlvX2RyaXZl ciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRtaS0+YXVkaW9f cGRldik7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RydWN0IG10a19oZG1p ICptdGtfaGRtaV9jb21tb25fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4g K3sNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfdmVyX2NvbmYgKnZlcl9jb25mOw0K PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsgICAgICAgc3Ry dWN0IG10a19oZG1pICpoZG1pOw0KPiArICAgICAgIGludCByZXQ7DQo+ICsNCj4gKyAgICAgICBo ZG1pID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpoZG1pKSwgR0ZQX0tFUk5FTCk7DQo+ICsg ICAgICAgaWYgKCFoZG1pKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7DQo+ICsNCj4gKyAgICAgICBoZG1pLT5kZXYgPSBkZXY7DQo+ICsgICAgICAgaGRtaS0+Y29u ZiA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiArICAgICAgIHZlcl9jb25mID0g aGRtaS0+Y29uZi0+dmVyX2NvbmY7DQo+ICsNCj4gKyAgICAgICBoZG1pLT5jbGsgPSBkZXZtX2tj YWxsb2MoZGV2LCB2ZXJfY29uZi0+bnVtX2Nsb2Nrcywgc2l6ZW9mKCpoZG1pLT5jbGspLCBHRlBf S0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIWhkbWktPmNsaykNCj4gKyAgICAgICAgICAgICAgIHJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiArDQo+ICsgICAgICAgcmV0ID0gbXRrX2hkbWlfZHRf cGFyc2VfcGRhdGEoaGRtaSwgcGRldiwgdmVyX2NvbmYtPm10a19oZG1pX2Nsb2NrX25hbWVzLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcl9jb25mLT5udW1fY2xv Y2tzKTsNCj4gKyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9Q VFIocmV0KTsNCj4gKw0KPiArICAgICAgIGhkbWktPnBoeSA9IGRldm1fcGh5X2dldChkZXYsICJo ZG1pIik7DQo+ICsgICAgICAgaWYgKElTX0VSUihoZG1pLT5waHkpKQ0KPiArICAgICAgICAgICAg ICAgcmV0dXJuIGRldl9lcnJfY2FzdF9wcm9iZShkZXYsIGhkbWktPnBoeSwgIkZhaWxlZCB0byBn ZXQgSERNSSBQSFlcbiIpOw0KPiArDQo+ICsgICAgICAgbXV0ZXhfaW5pdCgmaGRtaS0+dXBkYXRl X3BsdWdnZWRfc3RhdHVzX2xvY2spOw0KPiArICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIGhkbWkpOw0KPiArDQo+ICsgICAgICAgcmV0ID0gbXRrX2hkbWlfcmVnaXN0ZXJfYXVkaW9f ZHJpdmVyKGRldik7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVy biBkZXZfZXJyX3B0cl9wcm9iZShkZXYsIHJldCwgIkNhbm5vdCByZWdpc3RlciBIRE1JIEF1ZGlv IGRyaXZlclxuIik7DQo+ICsNCj4gKyAgICAgICBoZG1pLT5icmlkZ2UuZnVuY3MgPSB2ZXJfY29u Zi0+YnJpZGdlX2Z1bmNzOw0KPiArICAgICAgIGhkbWktPmJyaWRnZS5vZl9ub2RlID0gcGRldi0+ ZGV2Lm9mX25vZGU7DQo+ICsgICAgICAgaGRtaS0+YnJpZGdlLm9wcyA9IERSTV9CUklER0VfT1Bf REVURUNUIHwgRFJNX0JSSURHRV9PUF9FRElEDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICB8 IERSTV9CUklER0VfT1BfSFBEOw0KPiArICAgICAgIGhkbWktPmJyaWRnZS50eXBlID0gRFJNX01P REVfQ09OTkVDVE9SX0hETUlBOw0KPiArICAgICAgIGhkbWktPmJyaWRnZS52ZW5kb3IgPSAiTWVk aWFUZWsiOw0KPiArICAgICAgIGhkbWktPmJyaWRnZS5wcm9kdWN0ID0gIk9uLUNoaXAgSERNSSI7 DQo+ICsNCj4gKyAgICAgICByZXQgPSBkZXZtX2RybV9icmlkZ2VfYWRkKGRldiwgJmhkbWktPmJy aWRnZSk7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBkZXZf ZXJyX3B0cl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBhZGQgYnJpZGdlXG4iKTsNCj4gKw0K PiArICAgICAgIHJldHVybiBoZG1pOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9OU19HUEwobXRr X2hkbWlfY29tbW9uX3Byb2JlLCAiRFJNX01US19IRE1JIik7DQo+ICsNCj4gK01PRFVMRV9BVVRI T1IoIkFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIDxhbmdlbG9naW9hY2NoaW5vLmRlbHJlZ25v QGNvbGxhYm9yYS5jb20+Iik7DQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIEhETUkg Q29tbW9uIExpYnJhcnkiKTsNCj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9jb21tb24uaCBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9jb21tb24uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQzZGU4YWZmZjQwZg0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9jb21tb24uaA0KPiBAQCAt MCwwICsxLDE4OCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjEgTWVkaWFUZWsgSW5jLg0KPiArICogQ29w eXJpZ2h0IChjKSAyMDI0IENvbGxhYm9yYSBMdGQuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBf TVRLX0hETUlfQ09NTU9OX0gNCj4gKyNkZWZpbmUgX01US19IRE1JX0NPTU1PTl9IDQo+ICsNCj4g KyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJt X2JyaWRnZS5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPg0KPiArI2luY2x1ZGUgPGRy bS9kcm1fY3J0Y19oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4NCj4gKyNp bmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9oZG1pLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nv bi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGh5 L3BoeS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArDQo+ICsj aW5jbHVkZSA8c291bmQvaGRtaS1jb2RlYy5oPg0KPiArDQo+ICtlbnVtIGhkbWlfYXVkX2lucHV0 X3R5cGUgew0KPiArICAgICAgIEhETUlfQVVEX0lOUFVUX0kyUyA9IDAsDQo+ICsgICAgICAgSERN SV9BVURfSU5QVVRfU1BESUYsDQo+ICt9Ow0KPiArDQo+ICtlbnVtIGhkbWlfYXVkX2kyc19mbXQg ew0KPiArICAgICAgIEhETUlfSTJTX01PREVfUkpUXzI0QklUID0gMCwNCj4gKyAgICAgICBIRE1J X0kyU19NT0RFX1JKVF8xNkJJVCwNCj4gKyAgICAgICBIRE1JX0kyU19NT0RFX0xKVF8yNEJJVCwN Cj4gKyAgICAgICBIRE1JX0kyU19NT0RFX0xKVF8xNkJJVCwNCj4gKyAgICAgICBIRE1JX0kyU19N T0RFX0kyU18yNEJJVCwNCj4gKyAgICAgICBIRE1JX0kyU19NT0RFX0kyU18xNkJJVA0KPiArfTsN Cj4gKw0KPiArZW51bSBoZG1pX2F1ZF9tY2xrIHsNCj4gKyAgICAgICBIRE1JX0FVRF9NQ0xLXzEy OEZTLA0KPiArICAgICAgIEhETUlfQVVEX01DTEtfMTkyRlMsDQo+ICsgICAgICAgSERNSV9BVURf TUNMS18yNTZGUywNCj4gKyAgICAgICBIRE1JX0FVRF9NQ0xLXzM4NEZTLA0KPiArICAgICAgIEhE TUlfQVVEX01DTEtfNTEyRlMsDQo+ICsgICAgICAgSERNSV9BVURfTUNMS183NjhGUywNCj4gKyAg ICAgICBIRE1JX0FVRF9NQ0xLXzExNTJGUywNCj4gK307DQo+ICsNCj4gK2VudW0gaGRtaV9hdWRf Y2hhbm5lbF90eXBlIHsNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfMV8wID0gMCwNCj4g KyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfMV8xLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5f VFlQRV8yXzAsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzJfMSwNCj4gKyAgICAgICBI RE1JX0FVRF9DSEFOX1RZUEVfM18wLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8zXzEs DQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzRfMCwNCj4gKyAgICAgICBIRE1JX0FVRF9D SEFOX1RZUEVfNF8xLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV81XzAsDQo+ICsgICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzVfMSwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVf Nl8wLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV82XzEsDQo+ICsgICAgICAgSERNSV9B VURfQ0hBTl9UWVBFXzdfMCwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xLA0KPiAr ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV8zXzBfTFJTLA0KPiArICAgICAgIEhETUlfQVVEX0NI QU5fVFlQRV8zXzFfTFJTLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV80XzBfQ0xSUywN Cj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNF8xX0NMUlMsDQo+ICsgICAgICAgSERNSV9B VURfQ0hBTl9UWVBFXzZfMV9DUywNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8xX0NI LA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV82XzFfT0gsDQo+ICsgICAgICAgSERNSV9B VURfQ0hBTl9UWVBFXzZfMV9DSFIsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9M SF9SSCwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0xTUl9SU1IsDQo+ICsgICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MQ19SQywNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFO X1RZUEVfN18xX0xXX1JXLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTFNEX1JT RCwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0xTU19SU1MsDQo+ICsgICAgICAg SERNSV9BVURfQ0hBTl9UWVBFXzdfMV9MSFNfUkhTLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5f VFlQRV83XzFfQ1NfQ0gsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMV9DU19PSCwN Cj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18xX0NTX0NIUiwNCj4gKyAgICAgICBIRE1J X0FVRF9DSEFOX1RZUEVfN18xX0NIX09ILA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83 XzFfQ0hfQ0hSLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfT0hfQ0hSLA0KPiAr ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzFfTFNTX1JTU19MU1JfUlNSLA0KPiArICAgICAg IEhETUlfQVVEX0NIQU5fVFlQRV82XzBfQ1MsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBF XzZfMF9DSCwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfNl8wX09ILA0KPiArICAgICAg IEhETUlfQVVEX0NIQU5fVFlQRV82XzBfQ0hSLA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQ RV83XzBfTEhfUkgsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9MU1JfUlNSLA0K PiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTENfUkMsDQo+ICsgICAgICAgSERNSV9B VURfQ0hBTl9UWVBFXzdfMF9MV19SVywNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18w X0xTRF9SU0QsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9MU1NfUlNTLA0KPiAr ICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBfTEhTX1JIUywNCj4gKyAgICAgICBIRE1JX0FV RF9DSEFOX1RZUEVfN18wX0NTX0NILA0KPiArICAgICAgIEhETUlfQVVEX0NIQU5fVFlQRV83XzBf Q1NfT0gsDQo+ICsgICAgICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9DU19DSFIsDQo+ICsgICAg ICAgSERNSV9BVURfQ0hBTl9UWVBFXzdfMF9DSF9PSCwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFO X1RZUEVfN18wX0NIX0NIUiwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX09IX0NI UiwNCj4gKyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfN18wX0xTU19SU1NfTFNSX1JTUiwNCj4g KyAgICAgICBIRE1JX0FVRF9DSEFOX1RZUEVfOF8wX0xIX1JIX0NTLA0KPiArICAgICAgIEhETUlf QVVEX0NIQU5fVFlQRV9VTktOT1dOID0gMHhGRg0KPiArfTsNCj4gKw0KPiArZW51bSBoZG1pX2F1 ZF9jaGFubmVsX3N3YXBfdHlwZSB7DQo+ICsgICAgICAgSERNSV9BVURfU1dBUF9MUiwNCj4gKyAg ICAgICBIRE1JX0FVRF9TV0FQX0xGRV9DQywNCj4gKyAgICAgICBIRE1JX0FVRF9TV0FQX0xTUlMs DQo+ICsgICAgICAgSERNSV9BVURfU1dBUF9STFNfUlJTLA0KPiArICAgICAgIEhETUlfQVVEX1NX QVBfTFJfU1RBVFVTLA0KPiArfTsNCj4gKw0KPiArc3RydWN0IGhkbWlfYXVkaW9fcGFyYW0gew0K PiArICAgICAgIGVudW0gaGRtaV9hdWRpb19jb2RpbmdfdHlwZSBhdWRfY29kZWM7DQo+ICsgICAg ICAgZW51bSBoZG1pX2F1ZGlvX3NhbXBsZV9zaXplIGF1ZF9zYW1wbGVfc2l6ZTsNCj4gKyAgICAg ICBlbnVtIGhkbWlfYXVkX2lucHV0X3R5cGUgYXVkX2lucHV0X3R5cGU7DQo+ICsgICAgICAgZW51 bSBoZG1pX2F1ZF9pMnNfZm10IGF1ZF9pMnNfZm10Ow0KPiArICAgICAgIGVudW0gaGRtaV9hdWRf bWNsayBhdWRfbWNsazsNCj4gKyAgICAgICBlbnVtIGhkbWlfYXVkX2NoYW5uZWxfdHlwZSBhdWRf aW5wdXRfY2hhbl90eXBlOw0KPiArICAgICAgIHN0cnVjdCBoZG1pX2NvZGVjX3BhcmFtcyBjb2Rl Y19wYXJhbXM7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgbXRrX2hkbWlfdmVyX2NvbmYgew0KPiAr ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzICpicmlkZ2VfZnVuY3M7DQo+ICsg ICAgICAgY29uc3Qgc3RydWN0IGhkbWlfY29kZWNfb3BzICpjb2RlY19vcHM7DQo+ICsgICAgICAg Y29uc3QgY2hhciAqIGNvbnN0ICptdGtfaGRtaV9jbG9ja19uYW1lczsNCj4gKyAgICAgICBpbnQg bnVtX2Nsb2NrczsNCj4gK307DQoNClRoaXMgcGF0Y2ggY3JlYXRlIHNvbWV0aGluZyBuZXcgZm9y IG5ldyBoZG1pIGRyaXZlci4NCkFuZCB0aGlzIHBhdGNoIGFsc28gc2VwYXJhdGUgY29tbW9uIGZ1 bmN0aW9uIHRvIGNvbW1vbiBmaWxlLg0KSSB3b3VsZCBsaWtlIHRvIHNlcGFyYXRlIHRoZXNlIHRv IHR3byBwYXRjaGVzLg0KT25lIGZvciBjcmVhdGluZyBzb21ldGhpbmcgbmV3IGZvciBuZXcgaGRt aSBkcml2ZXIuDQpBbm90aGVyIG9uZSBmb3Igc2VwYXJhdGluZyBjb21tb24gZnVuY3Rpb24gdG8g Y29tbW9uIGZpbGUuDQoNClJlZ2FyZHMsDQpDSw0KDQo+ICsNCj4gK3N0cnVjdCBtdGtfaGRtaV9j b25mIHsNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfdmVyX2NvbmYgKnZlcl9jb25m Ow0KPiArICAgICAgIGJvb2wgdHpfZGlzYWJsZWQ7DQo+ICsgICAgICAgYm9vbCBjZWFfbW9kZXNf b25seTsNCj4gKyAgICAgICB1bnNpZ25lZCBsb25nIG1heF9tb2RlX2Nsb2NrOw0KPiArfTsNCj4g Kw0KPiArc3RydWN0IG10a19oZG1pIHsNCj4gKyAgICAgICBzdHJ1Y3QgZHJtX2JyaWRnZSBicmlk Z2U7DQo+ICsgICAgICAgc3RydWN0IGRybV9icmlkZ2UgKm5leHRfYnJpZGdlOw0KPiArICAgICAg IHN0cnVjdCBkcm1fY29ubmVjdG9yICpjdXJyX2Nvbm47LyogY3VycmVudCBjb25uZWN0b3IgKG9u bHkgdmFsaWQgd2hlbiAnZW5hYmxlZCcpICovDQo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2 Ow0KPiArICAgICAgIGNvbnN0IHN0cnVjdCBtdGtfaGRtaV9jb25mICpjb25mOw0KPiArICAgICAg IHN0cnVjdCBwaHkgKnBoeTsNCj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpjZWNfZGV2Ow0KPiAr ICAgICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqZGRjX2FkcHQ7DQo+ICsgICAgICAgc3RydWN0IGNs ayAqKmNsazsNCj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBtb2RlOw0KPiArICAg ICAgIGJvb2wgZHZpX21vZGU7DQo+ICsgICAgICAgc3RydWN0IHJlZ21hcCAqc3lzX3JlZ21hcDsN Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgc3lzX29mZnNldDsNCj4gKyAgICAgICBzdHJ1Y3QgcmVn bWFwICpyZWdzOw0KPiArICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmF1ZGlvX3BkZXY7 DQo+ICsgICAgICAgc3RydWN0IGhkbWlfYXVkaW9fcGFyYW0gYXVkX3BhcmFtOw0KPiArICAgICAg IGJvb2wgYXVkaW9fZW5hYmxlOw0KPiArICAgICAgIGJvb2wgcG93ZXJlZDsNCj4gKyAgICAgICBi b29sIGVuYWJsZWQ7DQo+ICsgICAgICAgaGRtaV9jb2RlY19wbHVnZ2VkX2NiIHBsdWdnZWRfY2I7 DQo+ICsgICAgICAgc3RydWN0IGRldmljZSAqY29kZWNfZGV2Ow0KPiArICAgICAgIHN0cnVjdCBt dXRleCB1cGRhdGVfcGx1Z2dlZF9zdGF0dXNfbG9jazsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IG10a19oZG1pICpoZG1pX2N0eF9mcm9tX2JyaWRnZShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYikNCj4gK3sNCj4gKyAgICAgICByZXR1cm4gY29udGFpbmVyX29mKGIsIHN0cnVjdCBt dGtfaGRtaSwgYnJpZGdlKTsNCj4gK30NCj4gKw0KPiArDQo+ICtpbnQgbXRrX2hkbWlfYXVkaW9f Z2V0X2VsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHVpbnQ4X3QgKmJ1Ziwgc2l6 ZV90IGxlbik7DQo+ICt2b2lkIG10a19oZG1pX2F1ZGlvX3NldF9wbHVnZ2VkX2NiKHN0cnVjdCBt dGtfaGRtaSAqaGRtaSwgaGRtaV9jb2RlY19wbHVnZ2VkX2NiIGZuLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmNvZGVjX2Rldik7DQo+ICtpbnQg bXRrX2hkbWlfYXVkaW9fcGFyYW1zKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgc3RydWN0IGhkbWlf Y29kZWNfZGFpZm10ICpkYWlmbXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGhkbWlfY29kZWNfcGFyYW1zICpwYXJhbXMpOw0KPiArdm9pZCBtdGtfaGRtaV9nZXRfbmN0cyh1 bnNpZ25lZCBpbnQgc2FtcGxlX3JhdGUsIHVuc2lnbmVkIGludCBjbG9jaywNCj4gKyAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm4sIHVuc2lnbmVkIGludCAqY3RzKTsNCj4gK2Jv b2wgbXRrX2hkbWlfYnJpZGdlX21vZGVfZml4dXAoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSk7DQo+ICt2b2lkIG10a19oZG1pX2JyaWRn ZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUpOw0KPiArc3RydWN0IG10a19oZG1pICptdGtfaGRtaV9jb21tb25fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7DQo+ICsjZW5kaWYgLyogX01US19IRE1J X0NPTU1PTl9IICovDQo+IC0tDQo+IDIuNDcuMA0KPiANCg0K