From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=pass header.oldest-pass=0 smtp.remote-ip=52.101.127.120 ARC-Seal: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=pass; t=1793841494; b=oQKsX2O3Grd/VrRim9zGGPb4vXj92d3KAm/SiyNPaeqUgh0rjLX5THVXUy660MSiJkze 7IyOiSD99uft7Maqo3Y/VCdhFX/26QgE/Bd1ii/44rCzpvkBHEgcKoP3yxzP4IVVivJIi JAQKfiwhOy+pU/2P7IxCG/tna/TYLtx09ImXKssLoyAz+VjUeR+peWDQHrzpC4NY/mPCI Z7hqPaGWE8YSCtZmaXxkkCEr7h4mcWSeTJ3oNeb7l082/dI9/ZEnmRWGlCzKrlimBfffF bUXxHWCcTRmhck+diNsJvUl3+6zHRdQStX0nxOjUNhEHoiNq3RgPVoeUO1I69syAnLQ== ARC-Message-Signature: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793841494; h=DMARC-Filter:Received:Received:From:To:CC:Subject:Thread-Topic: Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language: Content-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator: x-ms-publictraffictype:x-ms-traffictypediagnostic: x-ms-office365-filtering-correlation-id:x-ms-exchange-senderadcheck: x-ms-exchange-antispam-relay:x-microsoft-antispam: x-microsoft-antispam-message-info:x-forefront-antispam-report: x-ms-exchange-antispam-messagedata-chunkcount: x-ms-exchange-antispam-messagedata-0:Content-Type:Content-ID: Content-Transfer-Encoding:MIME-Version:X-OriginatorOrg: X-MS-Exchange-CrossTenant-AuthAs:X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped; bh=yzBLF7r3YEMwoihNQtauwBx1HMosQxdVyQOymkZVx/k=; b=5hEToVRJBzlmjgLe6IbKD+7ob1uXCnKcTotUJgfH3mevFOIjoyXbjpU8PCWpi07RPrUM DTVK2KZr/pldUfVfKCeo5uUnGJcgCdvZa+jjGfOzpzXBA13AaG6wmFS8gV/CPdBan46KT YovRc/nl8aa/TQgaRlZICxSPGIxfOl8fRuy6VPZJkLASkz+5Ggz4vqcsCw8y5irSUH1cr gcOwdEZwHivwtvrlsr+SLtV43yp9THNdETzlBwDG4GOdh1cC2+q7M2l7eNCBhDmvfxpCt SPhvgfMNiRzkOfQ9xsNuDIrL8vh6Ckjy/4rYZEvKFM5c6xEA6gWykBD2LdgZqbD89GQ== ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none header.from=cixtech.com; spf=pass smtp.mailfrom=cixtech.com; arc=pass header.oldest-pass=0 smtp.remote-ip=52.101.127.120 Received: from TYDPR03CU002.outbound.protection.outlook.com (mail-japaneastazon11023120.outbound.protection.outlook.com [52.101.127.120]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52BB8606D817; Thu, 5 Nov 2026 01:18:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 52BB8606D817 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=cixtech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cixtech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JuSkbkeZljyCcAHVH6mj9UhJ0hfsoDsny51/fezcmBRbg4y7QTGw97BPPsXo6EDN8JJMPAc5kIEnHbSf7/qo7QLBtcjX5Sjfim9I5Yl63YjAfhC8o6rFX/Dc8yvuDvhmURjr//yhBgMV5TMuGk8PnUVkPRgWPs+gp91I2jb7eUTRZ1jGggLCXw7uveMX0cIFWJ5nqWmFEAYB6MczGBtOLk5hHRS63E66Ovh7nvcvm2UcG6B092IsC98548B+uxtWbpV+ZLA0f9/bOiNfz5NeOaIuxP51WJZ5rVc3vvLIhFRza3Kq6nFvjxUOhffapxF7OS/PRQvGtDtj/LP8Bb+ArQ== 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=yzBLF7r3YEMwoihNQtauwBx1HMosQxdVyQOymkZVx/k=; b=qYwhoX8ddPNxppyf4OyfX+VNm3/ydjNeBWBo7u5NldJl1RmtqVl9F2KnwKiNlbMik7PqVrgYKASOAB7f8SLCFvwvmwQ29kfDlOyz5vRQE05/Km8E2lMxAzHvzeoYchKNkxdHdo5dUguvDQVdeN87qkK8EYcGnsxZt9lcUkpskf9WBmOa1bzhjzOaxp74jskNLixRvCxDB6TES4bsnmMQY2EC4QMejq8iW462ZsGI/3muahJzD8wyHAwUX1bXkjlLXRhJjMBaOVM3StVPOVTR7f7eP3vglC3ENMfbTLR3ydZje4q0lunI4HD8gh/4xRCOQwvhovWiOAb/jzJuGRz9Xg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cixtech.com; dmarc=pass action=none header.from=cixtech.com; dkim=pass header.d=cixtech.com; arc=none Received: from PSAPR06MB4439.apcprd06.prod.outlook.com (2603:1096:301:80::7) by TYSPR06MB6921.apcprd06.prod.outlook.com (2603:1096:400:468::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026 01:18:11 +0000 Received: from PSAPR06MB4439.apcprd06.prod.outlook.com ([fe80::c772:e1f:2c48:f9ac]) by PSAPR06MB4439.apcprd06.prod.outlook.com ([fe80::c772:e1f:2c48:f9ac%3]) with mapi id 15.21.0592.007; Thu, 5 Nov 2026 01:18:11 +0000 From: =?utf-8?B?SG9uZ2xpYW5nIFlhbmcgKOadqOWuj+S6rik=?= To: Greg Kroah-Hartman , Peter Chen , Pawel Laszczak , Roger Quadros , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , =?utf-8?B?R2FyeSBZYW5nICjmnajmlrDkvJ8p?= , =?utf-8?B?RnVnYW5nIER1YW4gKOauteWvjOWImik=?= CC: "linux-usb@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , cix-kernel-upstream , =?utf-8?B?SG9uZ2xpYW5nIFlhbmcgKOadqOWuj+S6rik=?= Subject: [PATCH v6 2/3] usb: cdns3: Add CIX Sky1 glue driver Thread-Topic: [PATCH v6 2/3] usb: cdns3: Add CIX Sky1 glue driver Thread-Index: AQHdbMOF4AKxpuHBHUuD/20u7GMI5w== Date: Thu, 5 Nov 2026 01:18:11 +0000 Message-ID: <20261105011803.4058557-3-hongliang.yang@cixtech.com> References: <20261105011803.4058557-1-hongliang.yang@cixtech.com> In-Reply-To: <20261105011803.4058557-1-hongliang.yang@cixtech.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cixtech.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PSAPR06MB4439:EE_|TYSPR06MB6921:EE_ x-ms-office365-filtering-correlation-id: 298e74eb-3eff-44e3-3c42-08df3adaa87c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|23010399003|366016|6133799003|10067099003|18002099003|261102123227099003|22082099003|56012099006|38070700021|261009223327099003|5023799004|261021121427099003|261022075727099003|261009220027099003|261026121527099003|261026140227099003|261009221227099003|261009223027099003|261028144727099003|261009221727099003|261022105027099003|921020; x-microsoft-antispam-message-info: mMDnubIDLSXkGKiw1jzEU6XeYoBLLgH1XfKV6mLJN63FrpjHr+LOvSIrgKvkMDhcsOlUoOguPKT4qbhMiyrCwSsZRuql0+l/OZ/HuZHEg5T9JJhSG/bk4FgUtBwnGgnQgBg7zXMlLfC8vCnSAef5IMat2M9UGpJMan3aTyz4BnFp6k8zXg+syd/V7v84HyMF7szTsc9FT8SoleEnrK+OFvNiykn/v8JZkNspSP3ok9oweg0331myLIVQLLWfLWHoXCXGu9CWm30EgqvH12s3B5Qn6dhEcF8dRmzGnLCjet+fmKNob26RR5UpB+h1kEd7951L6ZEIvpk/Jr3I+Q+VJBE2uTJpnJIC0URkdU2zUbeGPY61mHaRcW/VdZ/nyW7B6mKyv6qNyO+Mbj+Vah2ySEhCRNgz2E/9AqXhOgi+jOXb/CdyT7o+wugWZLDv9zYS4z6SYihWIaC0G9XrLFYivwXn1NobkqVw/sCm8FA8C+fTU10QX+kya8TO6lazVobTGfkPmz1r2A8aNdkSjMTE+EEcT02Vkx3HuoIsK8O21XnAl+/JCgCn42q0xZvYNrwijIDYyy1MW4XEp0nVcpRWZbyoocDxQtR0OCmfdRmIrtKTvHxOCAzQnmW7vJqq2YkeVw7rg+7p3nrpaQ7guo8271z1TaxzNKL37TfBWYXJovu5fBV4t58JxHgop+8CFRuB3q7Se6651X5CcCd1hGRkE3MWpSVkhPsldWJzNG7S2F2b+MJA/6T3ra0sb3I386fD x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PSAPR06MB4439.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(23010399003)(366016)(6133799003)(10067099003)(18002099003)(261102123227099003)(22082099003)(56012099006)(38070700021)(261009223327099003)(5023799004)(261021121427099003)(261022075727099003)(261009220027099003)(261026121527099003)(261026140227099003)(261009221227099003)(261009223027099003)(261028144727099003)(261009221727099003)(261022105027099003)(921020);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UkJ4NXZVT08wclUra3VEbUNXZU0yQ0NlWHE0emtqK3hNYnNWaGI0TVFhK3hL?= =?utf-8?B?SGtqQVpwQndWa3BaOStlQkprTkRqSDBrVTNpOEFvZ0lBOS9FOXFIMG9uQ3Iw?= =?utf-8?B?Q3RFT3VFMkM3d2tRWE9yblY3Z0w0T1VtakhkbFFVVTZrL1B6TmJCWmhYeU40?= =?utf-8?B?b1oxYjNhOGJ5M1U5djdCNW1LTlJydmR2ZkxMT2E0RVN0NFJFdWhXdTd5S2k2?= =?utf-8?B?OWE5dGhiUDluVU10MFRXZjA1Y1VyYjMxcXNscllzd0xZSXBtRCtxZVNHMGRs?= =?utf-8?B?U1U3SDBYeEhCQ3gyL2p5RmlKSklvVTNrVU5WR3R2aUxqRjBwd1lKWlpKUVp4?= =?utf-8?B?c3M2MS9hbGxPeGNtL1JOQUJyMkFqeTFMNUwwS1IwUFZkWkVpbU16V3dPNjhm?= =?utf-8?B?ZHBybk5QOUk2Uzd1elEvanhIZk9mMEpWdkltZTVOM04yQ2pOWVRIVXVMa0dN?= =?utf-8?B?ZmpLMWhEZ1E5bXVIZFYxcXpCcXJOOC9KelF0MUtYRmJJcHNsNWxkdTFkbnE3?= =?utf-8?B?UXhpYXp2WXdYOWwvR0R6c1BiKzd6a0dXN2hxc1hwZmRWSit0NHFBVXVyaDJ1?= =?utf-8?B?SDhEZTNBZnZuVWRjOGg3Wkx4RUJrRGtJSk1oTXQrNXVnaE5KTjRQaHNhSFlS?= =?utf-8?B?cU80S0czL0tweFFnQlgwV1NwNmxBTXIzRVpwVDB2U2JCa1VFWGc1RVJ6SlJz?= =?utf-8?B?VzhRVUpnUnpBYVNqQ1BTMnIrRXpjSkxDeEVMWmk4ZEgvV2g1NjNKdyt3ZCt6?= =?utf-8?B?SEluL0wwQ2QzaU05b3gzTjlWdWFDcmZvQm9IU2lleCszUUMxS2h0dVpqZTRH?= =?utf-8?B?QmJkc2oyZjNsb256RkZnU0V3bm1KQUs2MUFjR3FITEJmQmNvMVNPZ1ZJcXcw?= =?utf-8?B?RWlhMDNVc2xwNjNWT2QySTBiSlowK0V0djVTeWVIK1EzTVpEN09BRmVlYis4?= =?utf-8?B?TEJSekJuKzB6TUdtMzJJM1Z0WVlJekV5RjJmbEpRdjA4Wkg1SG1oZzJ2V0lB?= =?utf-8?B?L1JteVdiUStjc1dDS0pCTU9LY214b0tBcmYrbEZFMVBHTjFER2lOVkVwdlFV?= =?utf-8?B?eTRTUktFMENaRG1WUGN5NmZSb0NrYWRiKzZqNjF4RDIrYWZTcEIraGdkKzUr?= =?utf-8?B?TkVQZjFQT2g0RzdTd0wrWEhHMEk2YW1McHFZTWJsU2Voay8zUzhONXNIdzBS?= =?utf-8?B?dytXWXBFelBDbkhhOENZN0FKMEVCNjZ5UnpTNFdMUXVLTDBuMUdsVkl0YWxm?= =?utf-8?B?Q1Yvd3NORHZVM1N5ZC95ZEJ1ejc4Qk9qUWNMeEpOQk9lclpTU3BkNDR0dk1s?= =?utf-8?B?ejNhaUx5Um9vOWNQeGFZKzJWcjl2M0h6S0NWK3IycDlOWVdpRmhPdXc5MzFO?= =?utf-8?B?R2M4RHhzaFNBQ3M0eG1jYXV6V2VNTnl4aEFMVDJxL1NNU3hPS2dnYWE5UVkr?= =?utf-8?B?S3VwOXpLaHA4anJ6MmJkMFZmK0xRUFVGMnlQWEJ0L0JXdnoyUmdPaEY4Wm1B?= =?utf-8?B?NFBsMzNDUElJQkFDbTZkVG1XT20rRjA0WWVCU1VRbWdIdk1rai9JbVd6VFkv?= =?utf-8?B?NVFUcDRKRUIrTkhWc1FtOExhRGlCRFlrbGdpeFdqbVlVVStSdTMvNnZDQ3pR?= =?utf-8?B?QkkwY2JtOU9uL3AvOTdlZTlGRWhFYmZkaGtGK0g3R1plOXU2bW9ldGg1VWdO?= =?utf-8?B?TWxQRnNwS00yZ0NSYUFNNGtzRzJKNFFZSlNuVmEySWRHYklRckp2amdWSVBq?= =?utf-8?B?Z21nLzlsS2RpbDNsWm5xYkpoWDNUSGcyQzNlYlRoOFZVenZpQlpyaVU0Y3lL?= =?utf-8?B?Qlo5MnZIS3NrSngvUlUrSzJ0K2NSMmZPaWxvZGR5UlptbnhDZkFNYlVVbVpa?= =?utf-8?B?WDZESHNyODE4QWZnYklYbTZ3WkY4R2R4V3BldHRlKzZ6RGNlUFcwNWp4RlUy?= =?utf-8?B?OGxDdzVOTnl6TUduUG9RWWhxaWtWQ1UxdkQ4MzhWOTErZGNKT1hIcHlGNmtz?= =?utf-8?B?bnZJdy9VSzF1eWpZY1VPays2d1RBLzR4L3hvQmZ6Y1ZaUURzTzNFZURkS2M4?= =?utf-8?B?U1hVY25lNFhPUmVxb0x5ZzNCODhSM2k2bkpYM0pVM3BVQlJ0aXFLbXVpbG93?= =?utf-8?B?dGlmTGlWNkIrdmdKZjB4U1lESjBobWo5em0ycG9VVXUzdSswVkdwczIvVzcx?= =?utf-8?B?VW16MWcwRkpBdy90R045eXZZaVpkeWY5Z0NBaGxjZmhDL01ROGpBZE55djFU?= =?utf-8?B?S0x3WkxCb1UwZ2JHRWFIeWhRVno4SkQ1S3kwbTcxcjdvYmRzQ1RSMDhPSXEv?= =?utf-8?B?UHZMR2thR3ZFQnEvSFVXaWVnL29WYVM1UEs4TThUSWpMcWl5Z3c1SmsyVUQv?= =?utf-8?Q?7r/rZj7fdc96cVRU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 X-OriginatorOrg: cixtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PSAPR06MB4439.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 298e74eb-3eff-44e3-3c42-08df3adaa87c X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2026 01:18:11.3613 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0409f77a-e53d-4d23-943e-ccade7cb4811 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: V2DGt/nqfVO3AiXrRxYSg8k0r1BOmhlSH/frupDzUF0PjbNX8B1Zl1b9x4AXtQO8gGas35XGPyzY+L0lGXsF6ouAENoj288JK44Rx7T+U3k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYSPR06MB6921 QWRkIGEgZ2x1ZSBsYXllciBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIFVTQlNTUCBjb250cm9sbGVy IGludGVncmF0ZWQgaW4NCnRoZSBDSVggU2t5MSBTb0MuIFRoZSBkcml2ZXIgbWFuYWdlcyB0aGUg Y29udHJvbGxlciBjbG9ja3MsIHJlc2V0cywgYW5kDQp0aGUgbW9kZSBzdHJhcCBjb250cm9scyBs b2NhdGVkIGluIHRoZSBTa3kxIFM1IHN5c3RlbSBjb250cm9sbGVyLiBUaGUNCnBlci1jb250cm9s bGVyIGdsdWUgcmVnaXN0ZXJzLCB0aGUgQVhJIGJ1cyBhdHRyaWJ1dGUgY29uZmlndXJhdGlvbg0K cmVnaXN0ZXIgYW5kIHRoZSBjb250cm9sbGVyIHN0YXR1cyByZWdpc3RlciwgYXJlIG1hcHBlZCBk aXJlY3RseQ0KdGhyb3VnaCB0aGUgcmVnIHByb3BlcnR5IG9mIHRoZSBjb250cm9sbGVyIG5vZGUu DQoNClNpZ25lZC1vZmYtYnk6IEhvbmdsaWFuZyBZYW5nIDxob25nbGlhbmcueWFuZ0BjaXh0ZWNo LmNvbT4NCi0tLQ0KQ2hhbmdlcyBpbiB2NjoNCi0gUmVhZCB0aGUgVVNCIG1vZGUgc3RyYXAgcmVn aXN0ZXIgb2Zmc2V0IGFuZCBiaXQgcG9zaXRpb24gZnJvbSB0aGUNCiAgY2l4LHVzYi1zeXNjb24g cGhhbmRsZSBhcmd1bWVudHMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSB1c2JODQogIGFsaWFz ZXMgYW5kIHRoZSB1bmRvY3VtZW50ZWQgaWQgcHJvcGVydHkuDQotIFVzZSBkZXZfZXJyX3Byb2Jl KCkgaW4gdGhlIHByb2JlIGVycm9yIHBhdGhzLg0KLSBEcm9wIHRoZSB1bnVzZWQgb3Zlci1jdXJy ZW50IEdQSU8gaGFuZGxpbmcgYW5kIHRoZSB1bnVzZWQgZHJfYmFzZSBhbmQNCiAgY2Ruc3BfcGRl diBmaWVsZHMuDQotIERvIG5vdCBkaXNhYmxlIHRoZSBjbG9ja3MgYmVmb3JlIHRoZXkgaGF2ZSBi ZWVuIGFjcXVpcmVkLg0KLSBEcm9wIHRoZSByZWR1bmRhbnQgZGVwZW5kcyBvbiBVU0JfQ0ROUzMg YW5kIGZpeCB0aGUgY29tcGF0aWJsZSBuYW1lDQogIGluIHRoZSBLY29uZmlnIGhlbHAgdGV4dC4N Ci0tLQ0KIGRyaXZlcnMvdXNiL2NkbnMzL0tjb25maWcgICAgICB8ICAxMyArDQogZHJpdmVycy91 c2IvY2RuczMvTWFrZWZpbGUgICAgIHwgICAxICsNCiBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1z a3kxLmMgfCA2ODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogZHJpdmVycy91 c2IvY2RuczMvY2Ruc3Atc2t5MS5oIHwgMTAwICsrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCA3OTQg aW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jZG5z cC1za3kxLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5 MS5oDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnIGIvZHJpdmVycy91 c2IvY2RuczMvS2NvbmZpZw0KaW5kZXggMzlhZDIzZDFhZGE4Li42NzhjZWRkOGRlOTcgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnDQorKysgYi9kcml2ZXJzL3VzYi9jZG5z My9LY29uZmlnDQpAQCAtNzcsNiArNzcsMTkgQEAgY29uZmlnIFVTQl9DRE5TUF9QQ0kNCiAJICBJ ZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFzIG1vZHVsZSBpdCB3aWxsDQogCSAg YmUgZHluYW1pY2FsbHkgbGlua2VkIGFuZCBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY2Ruc3AtcGNp LmtvDQogDQorY29uZmlnIFVTQl9DRE5TUF9TS1kxDQorCXRyaXN0YXRlICJDYWRlbmNlIFVTQjMg c3VwcG9ydCBvbiBDSVggU2t5MSBTb0MgcGxhdGZvcm1zIg0KKwlkZXBlbmRzIG9uIEFSQ0hfQ0lY IHx8IENPTVBJTEVfVEVTVA0KKwlkZWZhdWx0IFVTQl9DRE5TMw0KKwloZWxwDQorCSAgR2x1ZSBk cml2ZXIgZm9yIHRoZSBDYWRlbmNlIFVTQiBkdWFsLXJvbGUgY29udHJvbGxlcnMgb24gQ0lYIFNr eTENCisJICAoZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBjaXgsc2t5MS11c2Jzc3ApLiBJdCBlbmFi bGVzIGNsb2NrcyBhbmQNCisJICByZXNldHMgZnJvbSB0aGUgU29DLCB0aGVuIHVzZXMgdGhlIHNo YXJlZCBjZG5zMyBwbGF0Zm9ybSBjb3JlDQorCSAgKGNkbnMua28pLg0KKw0KKwkgIElmIGJ1aWx0 IGFzIGEgbW9kdWxlLCB0aGUgbW9kdWxlIGlzIG5hbWVkIGNkbnNwLXNreTEua28gYW5kIG11c3Qg YmUNCisJICBsb2FkZWQgYWZ0ZXIgdGhlIGNkbnMgY29yZSBtb2R1bGUgd2hlbiBib3RoIGFyZSBs b2FkYWJsZSBtb2R1bGVzLg0KKw0KIGNvbmZpZyBVU0JfQ0ROUzNfVEkNCiAJdHJpc3RhdGUgIkNh ZGVuY2UgVVNCMyBzdXBwb3J0IG9uIFRJIHBsYXRmb3JtcyINCiAJZGVwZW5kcyBvbiBBUkNIX0sz IHx8IENPTVBJTEVfVEVTVA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxl IGIvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUNCmluZGV4IGIyZTRiYTZhNDlhMy4uYWI4MTNh YWY5OTQwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUNCisrKyBiL2Ry aXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlDQpAQCAtMjgsMyArMjgsNCBAQCBvYmotJChDT05GSUdf VVNCX0NETlNQX1BDSSkJCQkrPSBjZG5zcC1wY2kubw0KIG9iai0kKENPTkZJR19VU0JfQ0ROUzNf VEkpCQkJKz0gY2RuczMtdGkubw0KIG9iai0kKENPTkZJR19VU0JfQ0ROUzNfSU1YKQkJCSs9IGNk bnMzLWlteC5vDQogb2JqLSQoQ09ORklHX1VTQl9DRE5TM19TVEFSRklWRSkJCSs9IGNkbnMzLXN0 YXJmaXZlLm8NCitvYmotJChDT05GSUdfVVNCX0NETlNQX1NLWTEpCQkJKz0gY2Ruc3Atc2t5MS5v DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5MS5jIGIvZHJpdmVycy91 c2IvY2RuczMvY2Ruc3Atc2t5MS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAwLi5jYTFhMzdjNjFiYWENCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvdXNiL2Nk bnMzL2NkbnNwLXNreTEuYw0KQEAgLTAsMCArMSw2ODAgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMA0KKy8qDQorICogY2Ruc3Atc2t5MS5jIC0gQ0lYIFNreTEgZ2x1ZSBm b3IgQ2FkZW5jZSBVU0JTU1AgRFJEIGNvbnRyb2xsZXINCisgKg0KKyAqIENvcHlyaWdodCAoQykg MjAyNiBDSVggVGVjaG5vbG9neSBHcm91cCBDby4sIEx0ZC4NCisgKi8NCisNCisjaW5jbHVkZSA8 bGludXgvYml0cy5oPg0KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCisjaW5jbHVkZSA8bGludXgv ZGV2aWNlLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51 eC9pby5oPg0KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4NCisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+DQorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4NCisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2Fk ZHJlc3MuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCisjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3BtLmg+DQorI2luY2x1ZGUg PGxpbnV4L3BtX3J1bnRpbWUuaD4NCisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQorI2luY2x1 ZGUgPGxpbnV4L3Jlc2V0Lmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPg0KKyNpbmNsdWRl IDxsaW51eC91c2IvaGNkLmg+DQorDQorI2luY2x1ZGUgImNkbnNwLXNreTEuaCINCisjaW5jbHVk ZSAiY29yZS5oIg0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICpjaXhfdXNiX2Nsa19uYW1lc1tDSVhf VVNCX0NMS19OVU1dID0gew0KKwkic29mIiwNCisJImF4aSIsDQorCSJscG0iLA0KKwkiYXBiIiwN Cit9Ow0KKw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9zZXRfbW9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIGludCBtb2RlKQ0KK3sNCisJc3RydWN0IGNkbnNwX3NreTEgKmRhdGEgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCisNCisJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkYXRhLT51c2Jfc3lz Y29uLCBkYXRhLT5zdHJhcF9vZmZzZXQsDQorCQkJCSAgR0VOTUFTSyhkYXRhLT5zdHJhcF9iaXQg KyAxLCBkYXRhLT5zdHJhcF9iaXQpLA0KKwkJCQkgIG1vZGUgPDwgZGF0YS0+c3RyYXBfYml0KTsN Cit9DQorDQorLyoqDQorICogY2Ruc3Bfc2t5MV9jbGtfZW5hYmxlX2FsbCgpIC0gZW5hYmxlIGFs bCBjbG9ja3MgZm9yIHVzYiBjb250cm9sbGVyDQorICogQGRldjoJUG9pbnRlciB0byB0aGUgZGV2 aWNlIG9mIHBsYXRmb3JtX2RldmljZQ0KKyAqDQorICovDQorDQorc3RhdGljIGludCBjZG5zcF9z a3kxX2Nsa19lbmFibGVfYWxsKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCWludCBpLCByZXQg PSAwOw0KKwlzdHJ1Y3QgY2Ruc3Bfc2t5MSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0K KwlzdHJ1Y3QgY2xrICoqY2l4X3VzYl9jbGtzID0gZGF0YS0+Y2l4X3VzYl9jbGtzOw0KKw0KKwlm b3IgKGkgPSAwOyBpIDwgQ0lYX1VTQl9DTEtfTlVNOyBpKyspIHsNCisJCWNpeF91c2JfY2xrc1tp XSA9IGRldm1fY2xrX2dldChkZXYsIGNpeF91c2JfY2xrX25hbWVzW2ldKTsNCisJCWlmIChJU19F UlIoY2l4X3VzYl9jbGtzW2ldKSkgew0KKwkJCXJldCA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJf RVJSKGNpeF91c2JfY2xrc1tpXSksDQorCQkJCQkgICAgImNvdWxkIG5vdCBnZXQgJXMgY2xvY2tc biIsDQorCQkJCQkgICAgY2l4X3VzYl9jbGtfbmFtZXNbaV0pOw0KKwkJCWdvdG8gZXJyX3VzYl9j bGtzOw0KKwkJfQ0KKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNpeF91c2JfY2xrc1tpXSk7 DQorCQlpZiAocmV0KSB7DQorCQkJZGV2X2VycihkZXYsICIlcyBlbmFibGUgZmFpbGVkOiVkXG4i LCBjaXhfdXNiX2Nsa19uYW1lc1tpXSwgcmV0KTsNCisJCQlnb3RvIGVycl91c2JfY2xrczsNCisJ CX0NCisJfQ0KKwlkZXZfZGJnKGRldiwgImVuYWJsZSBza3kxIFVTQiBjbG9jayBkb25lXG4iKTsN CisJcmV0dXJuIHJldDsNCisNCitlcnJfdXNiX2Nsa3M6DQorCXdoaWxlICgtLWkgPj0gMCkNCisJ CWNsa19kaXNhYmxlX3VucHJlcGFyZShjaXhfdXNiX2Nsa3NbaV0pOw0KKwlyZXR1cm4gcmV0Ow0K K307DQorDQorLyoqDQorICogY2Ruc3Bfc2t5MV9jbGtfZGlzYWJsZV9hbGwoKSAtIGRpc2FibGUg YWxsIGNsb2NrcyBmb3IgdXNiIGNvbnRyb2xsZXINCisgKiBAZGV2OglQb2ludGVyIHRvIHRoZSBk ZXZpY2Ugb2YgcGxhdGZvcm1fZGV2aWNlDQorICoNCisgKi8NCisNCitzdGF0aWMgdm9pZCBjZG5z cF9za3kxX2Nsa19kaXNhYmxlX2FsbChzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlpbnQgaTsN CisJc3RydWN0IGNkbnNwX3NreTEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3Ry dWN0IGNsayAqKmNpeF91c2JfY2xrcyA9IGRhdGEtPmNpeF91c2JfY2xrczsNCisNCisJZm9yIChp ID0gMDsgaSA8IENJWF9VU0JfQ0xLX05VTTsgaSsrKQ0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGNpeF91c2JfY2xrc1tpXSk7DQorfTsNCisNCisvKioNCisgKiBjZG5zcF9za3kxX2Nsa19lbmFi bGVfcmVzdW1lKCkgLSBlbmFibGUgdGhlIGNsb2NrcyB0aGF0IGFyZSB0dXJuZWQNCisgKiBvZmYg d2hpbGUgc3VzcGVuZA0KKyAqIEBkZXY6CVBvaW50ZXIgdG8gdGhlIGRldmljZSBvZiBwbGF0Zm9y bV9kZXZpY2UNCisgKg0KKyAqLw0KKw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9jbGtfZW5hYmxl X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlpbnQgaSwgcmV0Ow0KKwlzdHJ1Y3Qg Y2Ruc3Bfc2t5MSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlzdHJ1Y3QgY2xrICoq Y2l4X3VzYl9jbGtzID0gZGF0YS0+Y2l4X3VzYl9jbGtzOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwg Q0lYX1VTQl9DTEtfT0ZGX05VTTsgaSsrKSB7DQorCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUo Y2l4X3VzYl9jbGtzW2ldKTsNCisJCWlmIChyZXQpIHsNCisJCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBlbmFibGUgY2xvY2sgJXM6ICVkXG4iLA0KKwkJCQljaXhfdXNiX2Nsa19uYW1lc1tpXSwg cmV0KTsNCisJCQlnb3RvIGVycl91c2JfY2xrczsNCisJCX0NCisJfQ0KKwlyZXR1cm4gMDsNCisN CitlcnJfdXNiX2Nsa3M6DQorCXdoaWxlICgtLWkgPj0gMCkNCisJCWNsa19kaXNhYmxlX3VucHJl cGFyZShjaXhfdXNiX2Nsa3NbaV0pOw0KKwlyZXR1cm4gcmV0Ow0KK307DQorDQorLyoqDQorICog Y2Ruc3Bfc2t5MV9jbGtfZGlzYWJsZV9zdXNwZW5kKCkgLSBkaXNhYmxlIHRoZSBjbG9ja3Mgd2hp Y2ggYXJlIG5vdA0KKyAqIG5lZWRlZCB3aGVuIHN1c3BlbmQNCisgKiBAZGV2OglQb2ludGVyIHRv IHRoZSBkZXZpY2Ugb2YgcGxhdGZvcm1fZGV2aWNlDQorICoNCisgKi8NCisNCitzdGF0aWMgdm9p ZCBjZG5zcF9za3kxX2Nsa19kaXNhYmxlX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sN CisJaW50IGk7DQorCXN0cnVjdCBjZG5zcF9za3kxICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRl dik7DQorCXN0cnVjdCBjbGsgKipjaXhfdXNiX2Nsa3MgPSBkYXRhLT5jaXhfdXNiX2Nsa3M7DQor DQorCWZvciAoaSA9IDA7IGkgPCBDSVhfVVNCX0NMS19PRkZfTlVNOyBpKyspDQorCQljbGtfZGlz YWJsZV91bnByZXBhcmUoY2l4X3VzYl9jbGtzW2ldKTsNCit9Ow0KKw0KK3N0YXRpYyBpbnQgc2t5 MV9yY3N1X2hhbmRzaGFrZShzdHJ1Y3QgY2Ruc3Bfc2t5MSAqZGF0YSwgdTMyIG1hc2ssIHUzMiBk b25lLA0KKwkJCSAgICAgICB1NjQgdGltZW91dF91cykNCit7DQorCXUzMglyZXN1bHQ7DQorCWlu dAlyZXQ7DQorDQorCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkYXRhLT5yY3N1X2N0c3RfYmFz ZSwgcmVzdWx0LA0KKwkJCQkgKHJlc3VsdCAmIG1hc2spID09IGRvbmUgfHwNCisJCQkJIHJlc3Vs dCA9PSBVMzJfTUFYLA0KKwkJCQkgMTAsIHRpbWVvdXRfdXMpOw0KKwlpZiAocmVzdWx0ID09IFUz Ml9NQVgpCQkvKiBjYXJkIHJlbW92ZWQgKi8NCisJCXJldHVybiAtRU5PREVWOw0KKwlyZXR1cm4g cmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGNkbnNfc2t5MV9wbGF0Zm9ybV9zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldiwNCisJCQkJICAgICAgYm9vbCBzdXNwZW5kLCBib29sIHdha2V1cCkNCit7 DQorCXN0cnVjdCBjZG5zICpjZG5zID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnhoY2lfZGV2ID0gY2Rucy0+aG9zdF9kZXY7DQorCXN0cnVjdCB1c2Jf aGNkICAqaGNkOw0KKwlzdHJ1Y3QgZGV2aWNlICpwYXJlbnQgPSBjZG5zLT5kZXYtPnBhcmVudDsN CisJc3RydWN0IGNkbnNwX3NreTEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEocGFyZW50KTsNCisJ dTMyIHZhbHVlOw0KKwlpbnQgcG9sbDsNCisJaW50IHJldCA9IDA7DQorCWludCBjb3VudCA9IDM7 DQorDQorCWRhdGEtPndha2V1cCA9IHdha2V1cDsNCisNCisJaWYgKGNkbnMtPnJvbGUgIT0gVVNC X1JPTEVfSE9TVCkNCisJCXJldHVybiAwOw0KKw0KKwlpZiAoIXhoY2lfZGV2KSB7DQorCQlkZXZf ZGJnKGRldiwgImhvc3QgY29udHJvbGxlciBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZFxuIik7DQor CQlyZXR1cm4gMDsNCisJfQ0KKw0KKwloY2QgPSBkZXZfZ2V0X2RydmRhdGEoJnhoY2lfZGV2LT5k ZXYpOw0KKwlpZiAoIWhjZCkgew0KKwkJZGV2X2RiZyhkZXYsICJob3N0IGNvbnRyb2xsZXIgaGF2 ZSBub3QgcmVnaXN0ZXJlZFxuIik7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlpZiAoc3VzcGVu ZCkgew0KKwkJd2hpbGUgKGNvdW50LS0pIHsNCisJCQl2YWx1ZSA9IHJlYWRsKGhjZC0+cmVncyAr IFhFQ1BfUE1fUE1DU1IpOw0KKwkJCXZhbHVlICY9IH5QU19NQVNLOw0KKwkJCXZhbHVlIHw9IFBT X0QzIHwgUFNfUE1FX0VuOw0KKwkJCXdyaXRlbCh2YWx1ZSwgaGNkLT5yZWdzICsgWEVDUF9QTV9Q TUNTUik7DQorCQkJLyogQWZ0ZXIgY29udHJvbGxlciBlbnRlcnMgRDMsIGRpc2FibGUgQVhJIGFu ZCBTT0YNCisJCQkgKiB1bnRpbCBBWEkgdmFsaWQgZmxhZyBjaGFuZ2VzIHRvIDAuDQorCQkJICov DQorCQkJaWYgKHNreTFfcmNzdV9oYW5kc2hha2UoZGF0YSwgQVhJX0NMT0NLX1ZBTElELCAwLA0K KwkJCQkJCTEwMFVMTCAqIDEwMDApKSB7DQorCQkJCXUzMiBjdHN0Ow0KKw0KKwkJCQljdHN0ID0g cmVhZGwoZGF0YS0+cmNzdV9jdHN0X2Jhc2UpOw0KKwkJCQlkZXZfZGJnKGRldiwgImVudGVyIEQz IGZhaWxlZCwgcmVnaXN0ZXIgdmFsdWU6JXhcbiIsDQorCQkJCQljdHN0KTsNCisJCQl9IGVsc2Ug ew0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCQlpZiAoY291bnQgPCAwKSB7DQorCQkJdTMy IGN0c3Q7DQorDQorCQkJY3RzdCA9IHJlYWRsKGRhdGEtPnJjc3VfY3RzdF9iYXNlKTsNCisJCQlk ZXZfZXJyKGRldiwgImVudGVyIEQzIGZhaWxlZCBhZnRlciByZXRyaWVzLCByZWdpc3RlciB2YWx1 ZToleFxuIiwNCisJCQkJY3RzdCk7DQorCQl9DQorCX0gZWxzZSB7DQorCQl3aGlsZSAoY291bnQt LSkgew0KKwkJCXZhbHVlID0gcmVhZGwoaGNkLT5yZWdzICsgWEVDUF9QTV9QTUNTUik7DQorCQkJ dmFsdWUgJj0gflBTX01BU0s7DQorCQkJdmFsdWUgfD0gUFNfRDA7DQorCQkJdmFsdWUgJj0gflBT X1BNRV9FbjsNCisJCQl3cml0ZWwodmFsdWUsIGhjZC0+cmVncyArIFhFQ1BfUE1fUE1DU1IpOw0K KwkJCS8qIFdhaXQgcG93ZXIgc3RhdGUgYmFjayB0byBEMCAqLw0KKwkJCXBvbGwgPSByZWFkbF9w b2xsX3RpbWVvdXQoaGNkLT5yZWdzICsgWEVDUF9QTV9QTUNTUiwNCisJCQkJCQkgIHZhbHVlLA0K KwkJCQkJCSAgKHZhbHVlICYgUFNfTUFTSykgPT0gMCB8fA0KKwkJCQkJCSAgdmFsdWUgPT0gVTMy X01BWCwNCisJCQkJCQkgIDEwLCAxMDBVTEwgKiAxMDAwKTsNCisJCQlpZiAocG9sbCkgew0KKwkJ CQlkZXZfZGJnKGRldiwgImV4aXQgRDMgdGltZW91dCwgcG93ZXIgc3RhdGU9MHglbHhcbiIsDQor CQkJCQl2YWx1ZSAmIFBTX01BU0spOw0KKwkJCX0gZWxzZSB7DQorCQkJCWJyZWFrOw0KKwkJCX0N CisJCX0NCisJCWlmIChjb3VudCA8IDApIHsNCisJCQlkZXZfZXJyKGRldiwgImV4aXQgRDMgdGlt ZW91dCBhZnRlciByZXRyaWVzLCBwb3dlciBzdGF0ZT0weCVseFxuIiwNCisJCQkJdmFsdWUgJiBQ U19NQVNLKTsNCisJCX0NCisJfQ0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgdm9p ZCBjZG5zcF9za3kxX2NvbmZpZ3VyZV9jb250cm9sbGVyKHN0cnVjdCBjZG5zcF9za3kxICpkYXRh KQ0KK3sNCisJaW50IGNsazsNCisJaW50IHYwLCB2MSwgdjIsIHYzOw0KKwl1MzIgZGV2X2NhcCwg eGhjaV9jYXA7DQorCXUzMiB2YWwgPSAwOw0KKw0KKwlpZiAoZGF0YS0+dTNfZGlzYWJsZSkgew0K KwkJZGV2X2RiZyhkYXRhLT5kZXYsICJkaXNhYmxlIHUzIHBvcnRcbiIpOw0KKwkJd3JpdGVsKERf WEVDX0NGR18zWFBPUlRfTU9ERV9WQUxVRSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCQkrIERfWEVD X0NGR18zWFBPUlRfTU9ERSk7DQorCX0NCisJZGV2X2NhcCA9IHJlYWRsKGRhdGEtPmRldmljZV9i YXNlICsgRF9YRUNfQVhJX0NBUCk7DQorCXhoY2lfY2FwID0gcmVhZGwoZGF0YS0+eGhjaV9iYXNl ICsgRF9YRUNfQVhJX0NBUCk7DQorCXdyaXRlbChkZXZfY2FwIHwgQVhJX0hBTFQsIGRhdGEtPmRl dmljZV9iYXNlICsgRF9YRUNfQVhJX0NBUCk7DQorCXdyaXRlbCh4aGNpX2NhcCB8IEFYSV9IQUxU LCBkYXRhLT54aGNpX2Jhc2UgKyBEX1hFQ19BWElfQ0FQKTsNCisJd3JpdGVsKGRhdGEtPmF4aV9i bWF4X3ZhbHVlLCBkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX0FYSV9DVFJMMCk7DQorCXdyaXRl bChkYXRhLT5heGlfYm1heF92YWx1ZSwgZGF0YS0+eGhjaV9iYXNlICsgRF9YRUNfQVhJX0NUUkww KTsNCisJd3JpdGVsKGRldl9jYXAgJiB+QVhJX0hBTFQsIGRhdGEtPmRldmljZV9iYXNlICsgRF9Y RUNfQVhJX0NBUCk7DQorCXdyaXRlbCh4aGNpX2NhcCAmIH5BWElfSEFMVCwgZGF0YS0+eGhjaV9i YXNlICsgRF9YRUNfQVhJX0NBUCk7DQorCWNsayA9IGRhdGEtPnNvZl9jbGtfZnJlcTsNCisJdjAg PSAgMjUgKiBjbGsgLyAxMDAwMDAwMDA7DQorCXYxID0gY2xrIC8gMTAwMDA7DQorCXYyID0gY2xr IC8gMTA7DQorCXYzID0gMTI1ICogY2xrIC8gMTAwMDAwMDsNCisJd3JpdGVsKCgodjAgPiAxKSA/ IHYwIC0gMSA6IDEpLCBkYXRhLT5kZXZpY2VfYmFzZQ0KKwkJKyBEX1hFQ19QUkVfUkVHXzI1ME5T KTsNCisJd3JpdGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwMCA+IDEpID4gMCA/ICh2MSAvIDEw MCkgLSAxIDogMSksDQorCSAgICAgICBkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX1BSRV9SRUdf MVVTKTsNCisJd3JpdGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwID4gMSkgPiAwID8gKHYxIC8g MTApIC0gMSA6IDEpLA0KKwkgICAgICAgZGF0YS0+ZGV2aWNlX2Jhc2UgKyBEX1hFQ19QUkVfUkVH XzEwVVMpOw0KKwl3cml0ZWwoKCh2MSkgPiAxID8gdjEgLSAxIDogMSksIGRhdGEtPmRldmljZV9i YXNlDQorCQkrIERfWEVDX1BSRV9SRUdfMTAwVVMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCko djMgPiAxID8gdjMgLSAxIDogMSksDQorCSAgICAgICBkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVD X1BSRV9SRUdfMTI1VVMpOw0KKwl3cml0ZWwoKCh2MiAvIDEwMCA+IDEpID8gKHYyIC8gMTAwKSAt IDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9YRUNfUFJFX1JFR18xTVMpOw0KKwl3 cml0ZWwoKCh2MiAvIDEwID4gMSkgPyAodjIgLyAxMCkgLSAxIDogMSksIGRhdGEtPmRldmljZV9i YXNlDQorCQkrIERfWEVDX1BSRV9SRUdfMTBNUyk7DQorCXdyaXRlbCgodjIgPiAxID8gdjIgLSAx IDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVDX1BSRV9SRUdfMTAwTVMpOw0KKwlk ZXZfZGJnKGRhdGEtPmRldiwgInJlYWRsOiV4LCAleCAsJXgsICV4LCAleCwgJXgsICV4LCAleFxu IiwNCisJCXJlYWRsKGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JFR18yNTBOUyksDQor CQlyZWFkbChkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX1BSRV9SRUdfMVVTKSwNCisJCXJlYWRs KGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JFR18xMFVTKSwNCisJCXJlYWRsKGRhdGEt PmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JFR18xMDBVUyksDQorCQlyZWFkbChkYXRhLT5kZXZp Y2VfYmFzZSArIERfWEVDX1BSRV9SRUdfMTI1VVMpLA0KKwkJcmVhZGwoZGF0YS0+ZGV2aWNlX2Jh c2UgKyBEX1hFQ19QUkVfUkVHXzFNUyksDQorCQlyZWFkbChkYXRhLT5kZXZpY2VfYmFzZSArIERf WEVDX1BSRV9SRUdfMTBNUyksDQorCQlyZWFkbChkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX1BS RV9SRUdfMTAwTVMpKTsNCisJY2xrID0gZGF0YS0+bHBtX2Nsa19mcmVxOw0KKwl2MCA9ICAyNSAq IGNsayAvIDEwMDAwMDAwMDsNCisJdjEgPSBjbGsgLyAxMDAwMDsNCisJdjIgPSBjbGsgLyAxMDsN CisJdjMgPSAxMjUgKiBjbGsgLyAxMDAwMDAwOw0KKwl3cml0ZWwoKCh2MCA+IDEpID8gdjAgLSAx IDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVDX0xQTV9QUkVfUkVHXzI1ME5TKTsN CisJd3JpdGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwMCA+IDEpID4gMCA/ICh2MSAvIDEwMCkg LSAxIDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVDX0xQTV9QUkVfUkVHXzFVUyk7 DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAxMCA+IDEpID4gMCA/ICh2MSAvIDEwKSAt IDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9YRUNfTFBNX1BSRV9SRUdfMTBVUyk7 DQorCXdyaXRlbCgoKHYxKSA+IDEgPyB2MSAtIDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJ CSsgRF9YRUNfTFBNX1BSRV9SRUdfMTAwVVMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCkodjMg PiAxID8gdjMgLSAxIDogMSksDQorCSAgICAgICBkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX0xQ TV9QUkVfUkVHXzEyNVVTKTsNCisJd3JpdGVsKCgodjIgLyAxMDAgPiAxKSA/ICh2MiAvIDEwMCkg LSAxIDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVDX0xQTV9QUkVfUkVHXzFNUyk7 DQorCXdyaXRlbCgoKHYyIC8gMTAgPiAxKSA/ICh2MiAvIDEwKSAtIDEgOiAxKSwgZGF0YS0+ZGV2 aWNlX2Jhc2UNCisJCSsgRF9YRUNfTFBNX1BSRV9SRUdfMTBNUyk7DQorCXdyaXRlbCgodjIgPiAx ID8gdjIgLSAxIDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVDX0xQTV9QUkVfUkVH XzEwME1TKTsNCisJdjAgPSByZWFkbChkYXRhLT54aGNpX2Jhc2UgKyBYRUNfVVNCU1NQX0NISUNL RU5fQklUU18zKTsNCisJdjAgJj0gfihDRkdfQVBCX1RJTUVPVVRfUFNMVkVSUl9FTiB8IENGR19B UEJfUFNMVkVSUl9FTik7DQorCXdyaXRlbCh2MCwgZGF0YS0+eGhjaV9iYXNlICsgWEVDX1VTQlNT UF9DSElDS0VOX0JJVFNfMyk7DQorCWlmIChkYXRhLT51M19kaXNhYmxlKSB7DQorCQlkZXZfZGJn KGRhdGEtPmRldiwgImRpc2FibGUgdTMgcG9ydFxuIik7DQorCQl3cml0ZWwoWEVDX0NGR18zWFBP UlRfTU9ERV9WQUxVRSwgZGF0YS0+eGhjaV9iYXNlDQorCQkJKyBYRUNfQ0ZHXzNYUE9SVF9NT0RF KTsNCisJfSBlbHNlIGlmIChkYXRhLT5zc3BfZGlzYWJsZSkgew0KKwkJZGV2X2RiZyhkYXRhLT5k ZXYsICJkaXNhYmxlIHNzcFxuIik7DQorCQl2MCA9IHJlYWRsKGRhdGEtPnhoY2lfYmFzZSArIFhF Q19DRkdfM1hQT1JUX01PREUpOw0KKwkJd3JpdGVsKHYwICAmIENGR18zWFBPUlRfTU9ERV9ESVNf U1NQLCBkYXRhLT54aGNpX2Jhc2UNCisJCQkrIFhFQ19DRkdfM1hQT1JUX01PREUpOw0KKwl9DQor CWNsayA9IGRhdGEtPnNvZl9jbGtfZnJlcTsNCisJdjAgPSAgMjUgKiBjbGsgLyAxMDAwMDAwMDA7 DQorCXYxID0gY2xrIC8gMTAwMDA7DQorCXYyID0gY2xrIC8gMTA7DQorCXYzID0gMTI1ICogY2xr IC8gMTAwMDAwMDsNCisJd3JpdGVsKCgodjAgPiAxKSA/IHYwIC0gMSA6IDApLCBkYXRhLT54aGNp X2Jhc2UNCisJCSsgWEVDX1BSRV9SRUdfMjUwTlMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCko KHYxIC8gMTAwID4gMSkgPiAwID8gKHYxIC8gMTAwKSAtIDEgOiAwKSwgZGF0YS0+eGhjaV9iYXNl DQorCQkrIFhFQ19QUkVfUkVHXzFVUyk7DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAx MCA+IDEpID4gMCA/ICh2MSAvIDEwKSAtIDEgOiAwKSwgZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhF Q19QUkVfUkVHXzEwVVMpOw0KKwl3cml0ZWwoKCh2MSkgPiAxID8gdjEgLSAxIDogMCksIGRhdGEt PnhoY2lfYmFzZQ0KKwkJKyBYRUNfUFJFX1JFR18xMDBVUyk7DQorCXdyaXRlbCgodW5zaWduZWQg aW50KSh2MyA+IDEgPyB2MyAtIDEgOiAwKSwNCisJICAgICAgIGRhdGEtPnhoY2lfYmFzZSArIFhF Q19QUkVfUkVHXzEyNVVTKTsNCisJd3JpdGVsKCgodjIgLyAxMDAgPiAxKSA/ICh2MiAvIDEwMCkg LSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfUFJFX1JFR18xTVMpOw0KKwl3cml0 ZWwoKCh2MiAvIDEwID4gMSkgPyAodjIgLyAxMCkgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0K KwkJKyBYRUNfUFJFX1JFR18xME1TKTsNCisJd3JpdGVsKCh2MiA+IDEgPyB2MiAtIDEgOiAwKSwg ZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhFQ19QUkVfUkVHXzEwME1TKTsNCisJY2xrID0gZGF0YS0+ bHBtX2Nsa19mcmVxOw0KKwl2MCA9ICAyNSAqIGNsayAvIDEwMDAwMDAwMDsNCisJdjEgPSBjbGsg LyAxMDAwMDsNCisJdjIgPSBjbGsgLyAxMDsNCisJdjMgPSAxMjUgKiBjbGsgLyAxMDAwMDAwOw0K Kwl3cml0ZWwoKCh2MCA+IDEpID8gdjAgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBY RUNfTFBNX1BSRV9SRUdfMjUwTlMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCkoKHYxIC8gMTAw ID4gMSkgPiAwID8gKHYxIC8gMTAwKSAtIDEgOiAwKSwgZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhF Q19MUE1fUFJFX1JFR18xVVMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCkoKHYxIC8gMTAgPiAx KSA+IDAgPyAodjEgLyAxMCkgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfTFBN X1BSRV9SRUdfMTBVUyk7DQorCXdyaXRlbCgoKHYxKSA+IDEgPyB2MSAtIDEgOiAwKSwgZGF0YS0+ eGhjaV9iYXNlDQorCQkrIFhFQ19MUE1fUFJFX1JFR18xMDBVUyk7DQorCXdyaXRlbCgodW5zaWdu ZWQgaW50KSh2MyA+IDEgPyB2MyAtIDEgOiAwKSwNCisJICAgICAgIGRhdGEtPnhoY2lfYmFzZSAr IFhFQ19MUE1fUFJFX1JFR18xMjVVUyk7DQorCXdyaXRlbCgoKHYyIC8gMTAwID4gMSkgPyAodjIg LyAxMDApIC0gMSA6IDApLCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX0xQTV9QUkVfUkVHXzFN Uyk7DQorCXdyaXRlbCgoKHYyIC8gMTAgPiAxKSA/ICh2MiAvIDEwKSAtIDEgOiAwKSwgZGF0YS0+ eGhjaV9iYXNlDQorCQkrIFhFQ19MUE1fUFJFX1JFR18xME1TKTsNCisJd3JpdGVsKCh2MiA+IDEg PyB2MiAtIDEgOiAwKSwgZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhFQ19MUE1fUFJFX1JFR18xMDBN Uyk7DQorCXZhbCA9IHJlYWRsKGRhdGEtPnhoY2lfYmFzZSArIFhFQ19VU0JTU1BfQ0xLX0dBVElO R19DVFJMKTsNCisJdmFsIHw9IEhPU1QyMF9BQ0xLX0dBVElOR19ESVNBQkxFIHwgSE9TVDIwX1VU TUlfR0FUSU5HX0RJU0FCTEU7DQorCXdyaXRlbCh2YWwsIGRhdGEtPnhoY2lfYmFzZSArIFhFQ19V U0JTU1BfQ0xLX0dBVElOR19DVFJMKTsNCit9DQorDQorc3RhdGljIGludCBjZG5zcF9za3kxX2Ry ZF9pbml0KHN0cnVjdCBjZG5zcF9za3kxICpkYXRhKQ0KK3sNCisJaW50IHJldCA9IDA7DQorDQor CXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRhdGEtPnJlc2V0KTsNCisJcmVzZXRfY29udHJvbF9hc3Nl cnQoZGF0YS0+cHJlc2V0KTsNCisJcmV0ID0gY2Ruc3Bfc2t5MV9jbGtfZW5hYmxlX2FsbChkYXRh LT5kZXYpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCisJd3JpdGVsKENJWF9VU0JfQVhJ X1dSX0NBQ0hFX1ZBTFVFLCBkYXRhLT5yY3N1X2F4aV9iYXNlKTsNCisJY2Ruc3Bfc2t5MV9zZXRf bW9kZShkYXRhLT5kZXYsIE1PREVfU1RSQVBfT1RHKTsNCisJcmVzZXRfY29udHJvbF9kZWFzc2Vy dChkYXRhLT5wcmVzZXQpOw0KKwljZG5zcF9za3kxX2NvbmZpZ3VyZV9jb250cm9sbGVyKGRhdGEp Ow0KKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGRhdGEtPnJlc2V0KTsNCisJcmV0dXJuIHJldDsN Cit9DQorDQorc3RhdGljIHZvaWQgX19pb21lbSAqc2t5MV9vZl9nZXRfYWRkcl9ieV9uYW1lKHN0 cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lKQ0KK3sNCisJdm9pZCBf X2lvbWVtICphZGRyID0gTlVMTDsNCisJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0KKwlpbnQg aW5kZXg7DQorDQorCWZvcl9lYWNoX2NoaWxkX29mX25vZGUocGFyZW50LCBub2RlKSB7DQorCQlp bmRleCA9IG9mX3Byb3BlcnR5X21hdGNoX3N0cmluZyhub2RlLCAicmVnLW5hbWVzIiwgbmFtZSk7 DQorCQlpZiAoaW5kZXggPj0gMCkgew0KKwkJCWFkZHIgPSBvZl9pb21hcChub2RlLCBpbmRleCk7 DQorCQkJb2Zfbm9kZV9wdXQobm9kZSk7DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCisNCisJcmV0 dXJuIGFkZHI7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9faW9tZW0gKnNreTFfZ2V0X2FkZHJfYnlf bmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKwlyZXR1cm4g c2t5MV9vZl9nZXRfYWRkcl9ieV9uYW1lKGRldi0+b2Zfbm9kZSwgbmFtZSk7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHNreTFfcHV0X2FkZHIodm9pZCBfX2lvbWVtICpyZWdzKQ0KK3sNCisJaWYgKHJl Z3MpDQorCQlpb3VubWFwKHJlZ3MpOw0KK30NCisNCitzdGF0aWMgaW50IGNkbnNwX3NreTFfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRl diA9ICZwZGV2LT5kZXY7DQorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9k ZTsNCisJc3RydWN0IG9mX2Rldl9hdXhkYXRhIGNkbnNfc2t5MV9hdXhkYXRhW10gPSB7DQorCQl7 IC5jb21wYXRpYmxlID0gImNkbnMsdXNiMyIsIH0sDQorCQl7fSwNCisJfTsNCisJc3RydWN0IGNk bnNwX3NreTEgKmRhdGE7DQorCXN0cnVjdCBjZG5zM19wbGF0Zm9ybV9kYXRhICpjZG5zX3NreTFf cGRhdGE7DQorCXVuc2lnbmVkIGludCBhcmdzWzJdOw0KKwlpbnQgcmV0ID0gMDsNCisNCisJZGF0 YSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOw0KKwlpZiAo IWRhdGEpDQorCQlyZXR1cm4gLUVOT01FTTsNCisJZGF0YS0+cmNzdV9heGlfYmFzZSA9IGRldm1f cGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgImF4aSIpOw0KKwlpZiAoSVNf RVJSKGRhdGEtPnJjc3VfYXhpX2Jhc2UpKQ0KKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+cmNzdV9h eGlfYmFzZSk7DQorCWRhdGEtPnJjc3VfY3RzdF9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFw X3Jlc291cmNlX2J5bmFtZShwZGV2LCAic3RhdHVzIik7DQorCWlmIChJU19FUlIoZGF0YS0+cmNz dV9jdHN0X2Jhc2UpKQ0KKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+cmNzdV9jdHN0X2Jhc2UpOw0K KwlkYXRhLT5yZXNldCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKCZwZGV2LT5k ZXYsICJjb3JlIik7DQorCWlmIChJU19FUlIoZGF0YS0+cmVzZXQpKQ0KKwkJcmV0dXJuIGRldl9l cnJfcHJvYmUoZGV2LCBQVFJfRVJSKGRhdGEtPnJlc2V0KSwNCisJCQkJICAgICAiZmFpbGVkIHRv IGdldCBjb3JlIHJlc2V0XG4iKTsNCisJZGF0YS0+cHJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9s X2dldF9leGNsdXNpdmUoJnBkZXYtPmRldiwgImFwYiIpOw0KKwlpZiAoSVNfRVJSKGRhdGEtPnBy ZXNldCkpDQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZGF0YS0+cHJlc2V0 KSwNCisJCQkJICAgICAiZmFpbGVkIHRvIGdldCBBUEIgcmVzZXRcbiIpOw0KKwlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBkYXRhKTsNCisJZGF0YS0+ZGV2ID0gZGV2Ow0KKwlkYXRhLT51c2Jf c3lzY29uID0NCisJCXN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGVfYXJncyhub2RlLCAi Y2l4LHVzYi1zeXNjb24iLA0KKwkJCQkJCSAgICAgMiwgYXJncyk7DQorCWlmIChJU19FUlIoZGF0 YS0+dXNiX3N5c2NvbikpDQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZGF0 YS0+dXNiX3N5c2NvbiksDQorCQkJCSAgICAgImZhaWxlZCB0byBnZXQgUzUgc3lzdGVtIGNvbnRy b2xsZXJcbiIpOw0KKwlkYXRhLT5zdHJhcF9vZmZzZXQgPSBhcmdzWzBdOw0KKwlkYXRhLT5zdHJh cF9iaXQgPSBhcmdzWzFdOw0KKwlkYXRhLT51M19kaXNhYmxlID0gZGV2aWNlX3Byb3BlcnR5X3Jl YWRfYm9vbChkZXYsICJ1My1wb3J0LWRpc2FibGUiKTsNCisJZGF0YS0+c3NwX2Rpc2FibGUgPSBk ZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgInNzcC1kaXNhYmxlIik7DQorCWRhdGEtPnNv Zl9jbGtfZnJlcSA9IENJWF9VU0JfQ0xLXzhNOw0KKwlkYXRhLT5scG1fY2xrX2ZyZXEgPSBDSVhf VVNCX0NMS18zMks7DQorCWRhdGEtPmF4aV9ibWF4X3ZhbHVlID0gQVhJX0JNQVhfVkFMVUVfREVG QVVMVDsNCisJZGF0YS0+eGhjaV9iYXNlID0gc2t5MV9nZXRfYWRkcl9ieV9uYW1lKGRldiwgInho Y2kiKTsNCisJaWYgKCFkYXRhLT54aGNpX2Jhc2UpIHsNCisJCXJldCA9IC1FTk9ERVY7DQorCQln b3RvIGVycl9wdXRfeGhjaTsNCisJfQ0KKwlkYXRhLT5kZXZpY2VfYmFzZSA9IHNreTFfZ2V0X2Fk ZHJfYnlfbmFtZShkZXYsICJkZXYiKTsNCisJaWYgKCFkYXRhLT5kZXZpY2VfYmFzZSkgew0KKwkJ cmV0ID0gLUVOT0RFVjsNCisJCWdvdG8gZXJyX3B1dF9hZGRyczsNCisJfQ0KKwlyZXQgPSBjZG5z cF9za3kxX2RyZF9pbml0KGRhdGEpOw0KKwlpZiAocmV0ID09IC1FVElNRURPVVQpDQorCQlyZXQg PSAtRVBST0JFX0RFRkVSOw0KKwlpZiAocmV0KSB7DQorCQkvKg0KKwkJICogZHJkX2luaXQoKSBs ZWF2ZXMgdGhlIGNsb2NrcyBkaXNhYmxlZCBhbmQgdGhlIHJlc2V0cw0KKwkJICogYXNzZXJ0ZWQg b24gZmFpbHVyZTsgb25seSB0aGUgYWRkcmVzcyBtYXBwaW5ncyBhcmUNCisJCSAqIGxlZnQgdG8g cmVsZWFzZS4NCisJCSAqLw0KKwkJZ290byBlcnJfcHV0X2FkZHJzOw0KKwl9DQorCS8qDQorCSAq IFRoZSBwbGF0Zm9ybSBkYXRhIGlzIGRldm0tYWxsb2NhdGVkLCBzbyBpdCBzdGF5cyBhbGl2ZSBh cyBsb25nIGFzDQorCSAqIHRoaXMgZGV2aWNlOyB0aGUgY2hpbGQgZGV2aWNlcyBhcmUgZGVwb3B1 bGF0ZWQgYmVmb3JlIGl0IGlzIGZyZWVkLg0KKwkgKi8NCisJY2Ruc19za3kxX3BkYXRhID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjZG5zX3NreTFfcGRhdGEpLCBHRlBfS0VSTkVMKTsNCisJ aWYgKCFjZG5zX3NreTFfcGRhdGEpIHsNCisJCXJldCA9IC1FTk9NRU07DQorCQlnb3RvIGVycl9x dWllc2NlOw0KKwl9DQorCWNkbnNfc2t5MV9wZGF0YS0+cGxhdGZvcm1fc3VzcGVuZCA9IGNkbnNf c2t5MV9wbGF0Zm9ybV9zdXNwZW5kOw0KKwljZG5zX3NreTFfcGRhdGEtPnF1aXJrcyA9IENETlMz X0RFRkFVTFRfUE1fUlVOVElNRV9BTExPVzsNCisJY2Ruc19za3kxX2F1eGRhdGFbMF0ucGxhdGZv cm1fZGF0YSA9IGNkbnNfc2t5MV9wZGF0YTsNCisJcmV0ID0gb2ZfcGxhdGZvcm1fcG9wdWxhdGUo bm9kZSwgTlVMTCwgY2Ruc19za3kxX2F1eGRhdGEsIGRldik7DQorCWlmIChyZXQpIHsNCisJCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBjaGlsZHJlbjogJWRcbiIsIHJldCk7DQorCQln b3RvIGVycl9xdWllc2NlOw0KKwl9DQorCWRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoZGV2LCB0 cnVlKTsNCisJcG1fcnVudGltZV9zZXRfYWN0aXZlKGRldik7DQorCXBtX3J1bnRpbWVfZW5hYmxl KGRldik7DQorCXJldHVybiAwOw0KKw0KK2Vycl9xdWllc2NlOg0KKwlyZXNldF9jb250cm9sX2Fz c2VydChkYXRhLT5yZXNldCk7DQorCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRhdGEtPnByZXNldCk7 DQorCWNkbnNwX3NreTFfY2xrX2Rpc2FibGVfYWxsKGRldik7DQorZXJyX3B1dF9hZGRyczoNCisJ c2t5MV9wdXRfYWRkcihkYXRhLT5kZXZpY2VfYmFzZSk7DQorZXJyX3B1dF94aGNpOg0KKwlza3kx X3B1dF9hZGRyKGRhdGEtPnhoY2lfYmFzZSk7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRp YyB2b2lkIGNkbnNwX3NreTFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQor ew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KKwlzdHJ1Y3QgY2Ruc3Bfc2t5 MSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKw0KKwlwbV9ydW50aW1lX2dldF9zeW5j KGRldik7DQorCW9mX3BsYXRmb3JtX2RlcG9wdWxhdGUoZGV2KTsNCisJc2t5MV9wdXRfYWRkcihk YXRhLT54aGNpX2Jhc2UpOw0KKwlza3kxX3B1dF9hZGRyKGRhdGEtPmRldmljZV9iYXNlKTsNCisJ cmVzZXRfY29udHJvbF9hc3NlcnQoZGF0YS0+cmVzZXQpOw0KKwlyZXNldF9jb250cm9sX2Fzc2Vy dChkYXRhLT5wcmVzZXQpOw0KKwljZG5zcF9za3kxX2Nsa19kaXNhYmxlX2FsbChkZXYpOw0KKwlw bV9ydW50aW1lX2Rpc2FibGUoZGV2KTsNCisJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7 DQorCXBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOw0KK30NCisNCisvKg0KKyAqIEJlY2F1c2Ug dGhlIHdha2UtdXAgaW50ZXJydXB0IGFuZCBob3N0IGludGVycnVwdCBhcmUgdGhlIHNhbWUgaW50 ZXJydXB0LA0KKyAqIGNsb3NpbmcgdGhlIGF4aSBhbmQgc29mIGNsb2NrIHdpbGwgcmVzdWx0IGlu IHRoZSBpbmFiaWxpdHkgdG8gZ2VuZXJhdGUNCisgKiBwb3J0IHN0YXR1cyBjaGFuZ2UgaW50ZXJy dXB0Lg0KKyAqLw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9zeXN0ZW1fc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQorew0KKwlzdHJ1Y3QgY2Ruc3Bfc2t5MSAqZGF0YSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOw0KKw0KKwlpZiAoIWRhdGEtPndha2V1cCkgew0KKwkJcmVzZXRfY29udHJvbF9h c3NlcnQoZGF0YS0+cmVzZXQpOw0KKwkJcmVzZXRfY29udHJvbF9hc3NlcnQoZGF0YS0+cHJlc2V0 KTsNCisJfQ0KKwljZG5zcF9za3kxX2Nsa19kaXNhYmxlX3N1c3BlbmQoZGV2KTsNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9zeXN0ZW1fcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldikNCit7DQorCWludCByZXQgPSAwOw0KKwlzdHJ1Y3QgY2Ruc3Bfc2t5MSAqZGF0 YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKw0KKwlyZXQgPSBjZG5zcF9za3kxX2Nsa19lbmFi bGVfcmVzdW1lKGRldik7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKwlpZiAoIWRhdGEt Pndha2V1cCkgew0KKwkJd3JpdGVsKENJWF9VU0JfQVhJX1dSX0NBQ0hFX1ZBTFVFLCBkYXRhLT5y Y3N1X2F4aV9iYXNlKTsNCisJCWNkbnNwX3NreTFfc2V0X21vZGUoZGF0YS0+ZGV2LCBNT0RFX1NU UkFQX09URyk7DQorCQlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGRhdGEtPnByZXNldCk7DQorCQlj ZG5zcF9za3kxX2NvbmZpZ3VyZV9jb250cm9sbGVyKGRhdGEpOw0KKwkJcmVzZXRfY29udHJvbF9k ZWFzc2VydChkYXRhLT5yZXNldCk7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBjZG5zcF9za3kxX3BtX29wcyA9IHsNCisJU1lTVEVNX1NM RUVQX1BNX09QUyhjZG5zcF9za3kxX3N5c3RlbV9zdXNwZW5kLCBjZG5zcF9za3kxX3N5c3RlbV9y ZXN1bWUpDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjZG5zX3Nr eTFfb2ZfbWF0Y2hbXSA9IHsNCisJeyAuY29tcGF0aWJsZSA9ICJjaXgsc2t5MS11c2Jzc3AiLCB9 LA0KKwl7fSwNCit9Ow0KK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNkbnNfc2t5MV9vZl9tYXRj aCk7DQorDQorc3RhdGljIGludCBjZG5zcF9za3kxX2ZpbmRfY2Ruc19kZXYoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKQ0KK3sNCisJc3RydWN0IGRldmljZSAqKmNkbnNfZGV2ID0gZGF0 YTsNCisNCisJaWYgKGRldi0+b2Zfbm9kZSAmJiBvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYt Pm9mX25vZGUsICJjZG5zLHVzYjMiKSkgew0KKwkJLyoga2VlcCBhIHJlZmVyZW5jZTogdGhlIHBv aW50ZXIgaXMgdXNlZCBhZnRlciB0aGUgaXRlcmF0aW9uICovDQorCQkqY2Ruc19kZXYgPSBnZXRf ZGV2aWNlKGRldik7DQorCQlyZXR1cm4gMTsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBjZG5zcF9za3kxX2ZpbmRfZ2FkZ2V0X21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqZGF0YSkNCit7DQorCXN0cnVjdCBkZXZpY2UgKipnYWRnZXRfZGV2ID0gZGF0YTsNCisJ Y29uc3QgY2hhciAqbmFtZSA9IGRldl9uYW1lKGRldik7DQorCXN0YXRpYyBjb25zdCBjaGFyIGdh ZGdldF9wcmVmaXhbXSA9ICJnYWRnZXQuIjsNCisNCisJLyoNCisJICogVGhlIGdhZGdldCBkZXZp Y2UgaXMgcmVnaXN0ZXJlZCBvbiB0aGUgZ2FkZ2V0IGJ1cyB3aXRoIG5hbWUNCisJICogImdhZGdl dC4lZCIgKHNlZSB1c2JfYWRkX2dhZGdldF91ZGMgLT4gZGV2X3NldF9uYW1lKS4NCisJICogSXQg c2l0cyBvbiB0aGUgZ2FkZ2V0IGJ1cyBhbmQgaGFzIHRoZSBmdW5jdGlvbiBkcml2ZXIgYm91bmQg dG8gaXQuDQorCSAqIFZlcmlmeSB0aGUgZGV2aWNlIGlzIG9uIHRoZSBnYWRnZXQgYnVzIGJ5IGNo ZWNraW5nIHRoZSBidXMgbmFtZS4NCisJICogVGhpcyBwcmV2ZW50cyBtYXRjaGluZyBkZXZpY2Vz IHRoYXQgaGFwcGVuIHRvIGhhdmUgImdhZGdldC4iIHByZWZpeA0KKwkgKiBpbiB0aGVpciBuYW1l IGJ1dCBhcmUgbm90IHJlYWwgZ2FkZ2V0IGRldmljZXMsIGFuZCBhbHNvIGF2b2lkcw0KKwkgKiBO VUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBkZXZpY2UgYnVzIGlzIGJlaW5nIHJlbW92ZWQu DQorCSAqLw0KKwlpZiAobmFtZSAmJiBkZXYtPmJ1cyAmJiAhc3RyY21wKGRldi0+YnVzLT5uYW1l LCAiZ2FkZ2V0IikgJiYNCisJICAgICFzdHJuY21wKG5hbWUsIGdhZGdldF9wcmVmaXgsIHNpemVv ZihnYWRnZXRfcHJlZml4KSAtIDEpKSB7DQorCQkvKiBrZWVwIGEgcmVmZXJlbmNlOiB0aGUgcG9p bnRlciBpcyB1c2VkIGFmdGVyIHRoZSBpdGVyYXRpb24gKi8NCisJCSpnYWRnZXRfZGV2ID0gZ2V0 X2RldmljZShkZXYpOw0KKwkJcmV0dXJuIDE7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIGNkbnNwX3NreTFfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQorCXN0cnVjdCBjZG5z cF9za3kxICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVjdCBkZXZpY2UgKmNk bnNfZGV2ID0gTlVMTDsNCisJc3RydWN0IGRldmljZSAqZ2FkZ2V0X2RldiA9IE5VTEw7DQorCXN0 cnVjdCBjZG5zICpjZG5zID0gTlVMTDsNCisNCisJaWYgKCFkZXZpY2VfbWF5X3dha2V1cChkZXYp KSB7DQorCQkvKg0KKwkJICogRmluZCB0aGUgY2RuczMgY2hpbGQgZGV2aWNlLCB0aGVuIGZpbmQg aXRzIGdhZGdldCBkZXZpY2UNCisJCSAqIGFuZCByZWxlYXNlIHRoZSBmdW5jdGlvbiBkcml2ZXIg YmVmb3JlIGRpc2FibGluZyBjbG9ja3MuDQorCQkgKiBUaGlzIGVuc3VyZXMgYWxsIHJlZ2lzdGVy IGFjY2Vzc2VzIGluIGdhZGdldF91bmJpbmRfZHJpdmVyDQorCQkgKiBjb21wbGV0ZSBiZWZvcmUg Y2xvY2tzIGFyZSB0dXJuZWQgb2ZmLg0KKwkJICovDQorCQlkZXZpY2VfZm9yX2VhY2hfY2hpbGQo ZGV2LCAmY2Ruc19kZXYsIGNkbnNwX3NreTFfZmluZF9jZG5zX2Rldik7DQorCQlpZiAoY2Ruc19k ZXYpDQorCQkJY2RucyA9IGRldl9nZXRfZHJ2ZGF0YShjZG5zX2Rldik7DQorCQlpZiAoY2RucykN CisJCQlkZXZpY2VfZm9yX2VhY2hfY2hpbGQoY2Ruc19kZXYsICZnYWRnZXRfZGV2LA0KKwkJCQkJ ICAgICAgY2Ruc3Bfc2t5MV9maW5kX2dhZGdldF9tYXRjaCk7DQorCQlpZiAoZ2FkZ2V0X2RldikN CisJCQlkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZ2FkZ2V0X2Rldik7DQorCQlpZiAoY2RucyAmJiBj ZG5zLT5ob3N0X2Rldikgew0KKwkJCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShjZG5zLT5ob3N0X2Rldik7DQorDQorCQkJaWYgKGhjZCAmJiBoY2QtPmlycSA+IDAp IHsNCisJCQkJLyoNCisJCQkJICogQ2xlYXIgSENEX0ZMQUdfSFdfQUNDRVNTSUJMRSBiZWZvcmUg ZGlzYWJsZV9pcnEuDQorCQkJCSAqIFRoaXMgcHJldmVudHMgdXNiX2hjZF9pcnEgZnJvbSBjYWxs aW5nIHhoY2lfaXJxDQorCQkJCSAqICh3aGljaCByZWFkcyBVU0JTVFMpIGFmdGVyIGNsb2NrcyBh cmUgZGlzYWJsZWQuDQorCQkJCSAqLw0KKwkJCQljbGVhcl9iaXQoSENEX0ZMQUdfSFdfQUNDRVNT SUJMRSwgJmhjZC0+ZmxhZ3MpOw0KKwkJCQlkaXNhYmxlX2lycShoY2QtPmlycSk7DQorCQkJCXN5 bmNocm9uaXplX2lycShoY2QtPmlycSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmVzZXRfY29udHJvbF9h c3NlcnQoZGF0YS0+cmVzZXQpOw0KKwkJcmVzZXRfY29udHJvbF9hc3NlcnQoZGF0YS0+cHJlc2V0 KTsNCisJCWNkbnNwX3NreTFfY2xrX2Rpc2FibGVfYWxsKGRldik7DQorCQlwdXRfZGV2aWNlKGdh ZGdldF9kZXYpOw0KKwkJcHV0X2RldmljZShjZG5zX2Rldik7DQorCX0NCit9DQorDQorc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2Ruc3Bfc2t5MV9kcml2ZXIgPSB7DQorCS5wcm9iZQkJ PSBjZG5zcF9za3kxX3Byb2JlLA0KKwkucmVtb3ZlCQk9IGNkbnNwX3NreTFfcmVtb3ZlLA0KKwku c2h1dGRvd24JPSBjZG5zcF9za3kxX3NodXRkb3duLA0KKwkuZHJpdmVyCQk9IHsNCisJCS5uYW1l CT0gImNkbnNwLXNreTEiLA0KKwkJLm9mX21hdGNoX3RhYmxlCT0gY2Ruc19za3kxX29mX21hdGNo LA0KKwkJLnBtCT0gcG1fc2xlZXBfcHRyKCZjZG5zcF9za3kxX3BtX29wcyksDQorCX0sDQorfTsN CisNCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNkbnNwX3NreTFfZHJpdmVyKTsNCisNCitNT0RV TEVfQUxJQVMoInBsYXRmb3JtOmNkbnNwLXNreTEiKTsNCitNT0RVTEVfREVTQ1JJUFRJT04oIkNJ WCBTa3kxIENhZGVuY2UgVVNCU1NQIERSRCBnbHVlIGRyaXZlciIpOw0KK01PRFVMRV9BVVRIT1Io IkhvbmdsaWFuZyBZYW5nIDxob25nbGlhbmcueWFuZ0BjaXh0ZWNoLmNvbT4iKTsNCitNT0RVTEVf TElDRU5TRSgiR1BMIik7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5 MS5oIGIvZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5MS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zZGU5OWZiYmJlMDMNCi0tLSAvZGV2L251bGwNCisrKyBi L2RyaXZlcnMvdXNiL2NkbnMzL2NkbnNwLXNreTEuaA0KQEAgLTAsMCArMSwxMDAgQEANCisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKw0KKyNpZm5kZWYgX0NETlNQX1NL WTFfSA0KKyNkZWZpbmUgX0NETlNQX1NLWTFfSA0KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCisj aW5jbHVkZSA8bGludXgvcmVzZXQuaD4NCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisNCisj ZGVmaW5lIE1PREVfU1RSQVBfT1RHICAgICAgICAgICAgICAgICAgMA0KKw0KKyNkZWZpbmUgQVhJ X0hBTFQgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMzEpDQorI2RlZmluZSBBWElfQk1BWF9W QUxVRV9ERUZBVUxUICAgICAgICAgIDB4Nw0KKw0KKyNkZWZpbmUgRF9YRUNfQ0ZHXzNYUE9SVF9N T0RFICAgICAgICAgICAweDIwNDANCisjZGVmaW5lIERfWEVDX0FYSV9DQVAgICAgICAgICAgICAg ICAgICAgMHgyMTc0DQorI2RlZmluZSBEX1hFQ19BWElfQ1RSTDAgICAgICAgICAgICAgICAgIDB4 MjE3Qw0KKyNkZWZpbmUgRF9YRUNfUFJFX1JFR18yNTBOUyAgICAgICAgICAgICAweDIxRTgNCisj ZGVmaW5lIERfWEVDX1BSRV9SRUdfMVVTICAgICAgICAgICAgICAgMHgyMUVDDQorI2RlZmluZSBE X1hFQ19QUkVfUkVHXzEwVVMgICAgICAgICAgICAgIDB4MjFGMA0KKyNkZWZpbmUgRF9YRUNfUFJF X1JFR18xMDBVUyAgICAgICAgICAgICAweDIxRjQNCisjZGVmaW5lIERfWEVDX1BSRV9SRUdfMTI1 VVMgICAgICAgICAgICAgMHgyMUY4DQorI2RlZmluZSBEX1hFQ19QUkVfUkVHXzFNUyAgICAgICAg ICAgICAgIDB4MjFGQw0KKyNkZWZpbmUgRF9YRUNfUFJFX1JFR18xME1TICAgICAgICAgICAgICAw eDIyMDANCisjZGVmaW5lIERfWEVDX1BSRV9SRUdfMTAwTVMgICAgICAgICAgICAgMHgyMjA0DQor I2RlZmluZSBEX1hFQ19MUE1fUFJFX1JFR18yNTBOUyAgICAgICAgIDB4MjIwOA0KKyNkZWZpbmUg RF9YRUNfTFBNX1BSRV9SRUdfMVVTICAgICAgICAgICAweDIyMEMNCisjZGVmaW5lIERfWEVDX0xQ TV9QUkVfUkVHXzEwVVMgICAgICAgICAgMHgyMjEwDQorI2RlZmluZSBEX1hFQ19MUE1fUFJFX1JF R18xMDBVUyAgICAgICAgIDB4MjIxNA0KKyNkZWZpbmUgRF9YRUNfTFBNX1BSRV9SRUdfMTI1VVMg ICAgICAgICAweDIyMTgNCisjZGVmaW5lIERfWEVDX0xQTV9QUkVfUkVHXzFNUyAgICAgICAgICAg MHgyMjFDDQorI2RlZmluZSBEX1hFQ19MUE1fUFJFX1JFR18xME1TICAgICAgICAgIDB4MjIyMA0K KyNkZWZpbmUgRF9YRUNfTFBNX1BSRV9SRUdfMTAwTVMgICAgICAgICAweDIyMjQNCisNCisjZGVm aW5lIFhFQ19DRkdfM1hQT1JUX01PREUgICAgICAgICAgICAgMHgyMDQwDQorI2RlZmluZSBYRUNf UFJFX1JFR18yNTBOUyAgICAgICAgICAgICAgIDB4MjFFOA0KKyNkZWZpbmUgWEVDX1BSRV9SRUdf MVVTICAgICAgICAgICAgICAgICAweDIxRUMNCisjZGVmaW5lIFhFQ19QUkVfUkVHXzEwVVMgICAg ICAgICAgICAgICAgMHgyMUYwDQorI2RlZmluZSBYRUNfUFJFX1JFR18xMDBVUyAgICAgICAgICAg ICAgIDB4MjFGNA0KKyNkZWZpbmUgWEVDX1BSRV9SRUdfMTI1VVMgICAgICAgICAgICAgICAweDIx RjgNCisjZGVmaW5lIFhFQ19QUkVfUkVHXzFNUyAgICAgICAgICAgICAgICAgMHgyMUZDDQorI2Rl ZmluZSBYRUNfUFJFX1JFR18xME1TICAgICAgICAgICAgICAgIDB4MjIwMA0KKyNkZWZpbmUgWEVD X1BSRV9SRUdfMTAwTVMgICAgICAgICAgICAgICAweDIyMDQNCisjZGVmaW5lIFhFQ19MUE1fUFJF X1JFR18yNTBOUyAgICAgICAgICAgMHgyMjA4DQorI2RlZmluZSBYRUNfTFBNX1BSRV9SRUdfMVVT ICAgICAgICAgICAgIDB4MjIwQw0KKyNkZWZpbmUgWEVDX0xQTV9QUkVfUkVHXzEwVVMgICAgICAg ICAgICAweDIyMTANCisjZGVmaW5lIFhFQ19MUE1fUFJFX1JFR18xMDBVUyAgICAgICAgICAgMHgy MjE0DQorI2RlZmluZSBYRUNfTFBNX1BSRV9SRUdfMTI1VVMgICAgICAgICAgIDB4MjIxOA0KKyNk ZWZpbmUgWEVDX0xQTV9QUkVfUkVHXzFNUyAgICAgICAgICAgICAweDIyMUMNCisjZGVmaW5lIFhF Q19MUE1fUFJFX1JFR18xME1TICAgICAgICAgICAgMHgyMjIwDQorI2RlZmluZSBYRUNfTFBNX1BS RV9SRUdfMTAwTVMgICAgICAgICAgIDB4MjIyNA0KKyNkZWZpbmUgWEVDX1VTQlNTUF9DSElDS0VO X0JJVFNfMyAgICAgICAweDIyMzANCisjZGVmaW5lIFhFQ19VU0JTU1BfQ0xLX0dBVElOR19DVFJM ICAgICAgMHgyMjM0DQorI2RlZmluZSBYRUNQX1BNX1BNQ1NSICAgICAgICAgICAgICAgICAgIDB4 MjI0MA0KKw0KKy8qIFhFQ19VU0JTU1BfQ0xLX0dBVElOR19DVFJMICovDQorI2RlZmluZSBIT1NU MjBfQUNMS19HQVRJTkdfRElTQUJMRSAgICAgIEJJVCg0KQ0KKyNkZWZpbmUgSE9TVDIwX1VUTUlf R0FUSU5HX0RJU0FCTEUgICAgICBCSVQoNSkNCisNCisvKiBYRUNQX1BNX1BNQ1NSICovDQorI2Rl ZmluZSBQU19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMSwgMCkNCisjZGVm aW5lIFBTX0QwICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUFNfRDMgICAg ICAgICAgICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBQU19QTUVfRW4gICAgICAgICAgICAg ICAgICAgICAgIEJJVCg4KQ0KKw0KKyNkZWZpbmUgRF9YRUNfQ0ZHXzNYUE9SVF9NT0RFX1ZBTFVF ICAgICAweGEwMDMxZTA3DQorI2RlZmluZSBYRUNfQ0ZHXzNYUE9SVF9NT0RFX1ZBTFVFICAgICAg IDB4YTAwMzFlMDcNCisjZGVmaW5lIENGR18zWFBPUlRfTU9ERV9ESVNfU1NQICAgICAgICAgKH5C SVQoMzEpKQ0KKw0KKyNkZWZpbmUgQ0ZHX0FQQl9USU1FT1VUX1BTTFZFUlJfRU4gICAgICBCSVQo MjIpDQorI2RlZmluZSBDRkdfQVBCX1BTTFZFUlJfRU4gICAgICAgICAgICAgIEJJVCgyMykNCisN CisjZGVmaW5lIENJWF9VU0JfQ0xLX05VTSAgICAgICAgICAgICAgICAgKDQpDQorI2RlZmluZSBD SVhfVVNCX0NMS19PRkZfTlVNICAgICAgICAgICAgICgyKQ0KKyNkZWZpbmUgQ0lYX1VTQl9BWElf V1JfQ0FDSEVfVkFMVUUgICAgICAweDMzDQorI2RlZmluZSBDSVhfVVNCX0NMS18zMksgICAgICAg ICAgICAgICAgIDMyMDAwDQorI2RlZmluZSBDSVhfVVNCX0NMS184TSAgICAgICAgICAgICAgICAg IDgwMDAwMDANCisNCisjZGVmaW5lIEFYSV9DTE9DS19WQUxJRCAgICAgICAgICAgICAgICAgQklU KDEpDQorDQorc3RydWN0IGNkbnNwX3NreTEgew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQorCXZv aWQgX19pb21lbSAqcmNzdV9heGlfYmFzZTsNCisJdm9pZCBfX2lvbWVtICpyY3N1X2N0c3RfYmFz ZTsNCisJdm9pZCBfX2lvbWVtICp4aGNpX2Jhc2U7DQorCXZvaWQgX19pb21lbSAqZGV2aWNlX2Jh c2U7DQorCXN0cnVjdCByZXNldF9jb250cm9sICpyZXNldDsNCisJc3RydWN0IHJlc2V0X2NvbnRy b2wgKnByZXNldDsNCisJc3RydWN0IGNsayAqY2l4X3VzYl9jbGtzW0NJWF9VU0JfQ0xLX05VTV07 DQorCXVuc2lnbmVkIGludCBzdHJhcF9vZmZzZXQ7DQorCXVuc2lnbmVkIGludCBzdHJhcF9iaXQ7 DQorCXN0cnVjdCByZWdtYXAJKnVzYl9zeXNjb247DQorCWludCBscG1fY2xrX2ZyZXE7DQorCWlu dCBzb2ZfY2xrX2ZyZXE7DQorCWJvb2wgdTNfZGlzYWJsZTsNCisJYm9vbCBzc3BfZGlzYWJsZTsN CisJaW50IGF4aV9ibWF4X3ZhbHVlOw0KKwlib29sIHdha2V1cDsNCit9Ow0KKw0KKyNlbmRpZiAv KiBfQ0ROU1BfU0tZMV9IICov