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.126.84 ARC-Seal: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=pass; t=1793692194; b=q3eFWMVZHr7dIc1WOUSLsIUfgNXAl8VPg5+HwqQ1aMn8la6b1gRvCjqNn84xukXd6hB4 ebUP91GxMIJSgu0p9YAAvNJlkVVE2QN70PF7rhUKbdYO0c9GXW3OnOBU84J6WiXSHtWqi 0kWmZLHrrd0Xi3PTUegKetKb0EZD0U8Wea998diaW13/F8aBwXydlobPVHcmo48QrzTq6 MXg5KwxYW42qaQG7eW/e4g7PECgooMjF8ICsqSTET8FQRnBcC8m4ZTfb9OI/MgaAtAfNE YSElu/kBt3rPMfs6upJUHFjGyhbBZyGOs/c2nPLRdKuGK/KKIa4oG86sq5NtHrEX6Lg== ARC-Message-Signature: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793692194; 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=URbzbNCV9J4Ps1v3bsk9A1iw859tcGdNyap47U08mis=; b=0ieluSySm9x7ei+FEZ2Aom5Pymi2G7xTmOZeA2jR1O9zW3LpzffUGGtpR9ECPFI3pVOu bto30X7cxHV9uXuxMbJd+8H+f0R4YjHvegIvSvdmRKuiUhZ5YCZabqUCckW+nLp9vhiBY 9k18Ti6ZqP3RbszaFWcDJiVFl5TNQLPQY05o8UISrDUffMAhVLxr2CsRImmpyer9+Lm6q PiD348ksFFvtKxl3bzARGCtsF/GFlVCxRCcV3A4xfHqmdKqtIL6rebaNEMbbVbB2JylZu VFbtjQtA/xNRRxYdIGeCT0ZzD9BpLc0CaZqZcgP878vFjLXn9mJQF89cJNPNA4VCUog== 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.126.84 Received: from TYPPR03CU001.outbound.protection.outlook.com (mail-japaneastazon11022084.outbound.protection.outlook.com [52.101.126.84]) (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 0937F606A333; Tue, 3 Nov 2026 07:49:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 0937F606A333 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=Z40/e38L+l/MyV5gmv8sgNdX0pGVdW2jsVfKHjL7P0lkgh2SqNy/muLTqR1jA9+NK4jXTgAzaspjx2F5g9T5BNY1gjX5zwT5c/MM1OLl23bZgbaLTSL0JS2zhLxJiWic87nw1pqo5Iids0oX+pe5+FLji0irx/YCNglbsZG8isPvGSMAz5T0XBkTnl++dh50D6ibJdugqjWXV+C7CPusXagrrcfVGjjEuOkd58LW5FPm8baTtfYmUyHTDihQx0ohLSntYOrxPbrbs20uzAHwV2m4itPRfrU6av5KSAA5T9oKMtBltCk9kBqU+XOb/jRi2LRLDtSccrTCfZtZA/pKvw== 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=URbzbNCV9J4Ps1v3bsk9A1iw859tcGdNyap47U08mis=; b=CWCDICmjgC60ElKpSinqXZ+Ee5ViBYYH8A6B5AQYYDeqYQkZrDI78fpDF4KxT4a2OeCfWkx0ldxawU5wTzJ3ZF+iHazOH42+iwwFJSq5rMPhf0Kxg2KIgSXTyuyItWA3hP2zY1GBrYwt7s5Tlv2zSwYyEKTfHjLLkbQ3i6Rk7sNawG1nZgdppyO0iWhNPAQ0N8L0yyXFHUGIkCwuG1YHtlaT7Q3TMw1PDliU74DrdI/dM8AGLYCzfyJkUh5Qyx3uLBhH5ALqPVjSwxJfOjDFqv2rcj0tzZeqSCgIvZmi6sUoAxXxBknYIlHB7wlcaOG2tFObCuRa1p+BgrG+tq3OaA== 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 OSQPR06MB7251.apcprd06.prod.outlook.com (2603:1096:604:29b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Tue, 3 Nov 2026 07:49:49 +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; Tue, 3 Nov 2026 07:49:48 +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 v5 2/3] usb: cdns3: Add CIX Sky1 glue driver Thread-Topic: [PATCH v5 2/3] usb: cdns3: Add CIX Sky1 glue driver Thread-Index: AQHda2fmb5kzM5xl90uIP03GIHDimg== Date: Tue, 3 Nov 2026 07:49:48 +0000 Message-ID: <20261103074929.1971195-3-hongliang.yang@cixtech.com> References: <20261103074929.1971195-1-hongliang.yang@cixtech.com> In-Reply-To: <20261103074929.1971195-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_|OSQPR06MB7251:EE_ x-ms-office365-filtering-correlation-id: 6d2c0362-93fa-487e-1cc4-08df397f093c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|376014|921020|38070700021|5023799004|56012099006|261009223027099003|261009220027099003|261028144727099003|261009223327099003|261009221727099003|261009221227099003|261022075727099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|261102123227099003|6133799003; x-microsoft-antispam-message-info: HbNuLoBaxaTvFTKcZXyFirPCrSEs5yyqZs8/cTep4Aey9FXHfh5xGbLOTuZX8/G1GnDHwoebUg58etvUd/nduzg0iTcWfM0EyQZD+6sSUoVtczo1sFeYr6+lMGL4l0BJ+rk7cYpif793w2dZ2zDqwKuXcXEy+AUQ/xHGTFALtgx6yI1WNUsolk+bYcF9btqcey4mIOcoYMXHFH9fMNWvyiInW+RvgObiLnh23HV+xhOxzNI10rqF0UPC8K9vhgA7DGvub/8jRZZahJZzxT9nS6fnBd2oU45AxNiXPccobV8iLnYyETrl/Pa+6mw+QyNVL1E1P7VffrjTnWrmvaEgUbHrxIh/27oM/9Gb4na2qKZ1Ig5gMdBcr1JcreLxfEHoJr612jT+6UiMPAuMdzNi7EtRb4+3LNiteewsJNRD0CZDQ9brSDTYlzbhfpwZt+R6K3+fl/ViMaRtW+Gz3KRGteZSrmFveXuTmkrfkfojeSX0XRVQnF509jGbNSAM9VM+G+55AuQxKvj0BDAwtoT6MpqCgvC4eAQ+SD0S2KJm/41zYSzE3Aws0oX2ATC0gBcrRF9OdbNiQleFDUTL5k0YNNy/IDcmAmLjM4gXrGG4mgApJZwVvgONJ2wI1vViOVBZHyRFUxsaarNQyc7UYs8XeAlx/1DOD/F2rNcyCnPXfJHeK8EWNXHyr7grZ3kbyVOVY6yhVUTPFmuoMLxkjXIMAhVXkBX+ptqX58pQgsryGiqHAhxYJx+7KxPh6sdGhH1b 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)(366016)(23010399003)(1800799024)(376014)(921020)(38070700021)(5023799004)(56012099006)(261009223027099003)(261009220027099003)(261028144727099003)(261009223327099003)(261009221727099003)(261009221227099003)(261022075727099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(261102123227099003)(6133799003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Yk85Tzd1a1pRdXJUNTBncktGSnBDbE95SHpFSnIzekIyNElBaW1sbzZDdUg4?= =?utf-8?B?R3UvYmFnS3U5KzcxZDBtK0g0RnFMMStHeHlDQjhrbTVYTUZycHVBaFlsVTdy?= =?utf-8?B?bWhTMVZxWmZsdkVTYVhEaVpMakE3VVpHRkt0N25YZWJiVTVadTN3R0FWVWVz?= =?utf-8?B?WEtFM3J3UkJxaFdOa1hJZ3JCTTduTWFhajl5Q0s0UWgwSmdveXozd2RWR0RV?= =?utf-8?B?ZzJPZlVCTm52UW9uY09CcGt1MGRwSmRvMTg1Mi9zb3VUbkNhSmtKUWwwUERr?= =?utf-8?B?YjQrWkJaczRlWEZzNTlEaW1lTml4ajA4R1ZDVzVUUHVYdWQ5UzRUS2R5VEJa?= =?utf-8?B?RCt1OHJMcVZxYkFRNm83UzVGVk5KWmpXeGhsbFFWVlA3MjlBTUpZZjE5N3Zo?= =?utf-8?B?c1hmNEh1TFowRDZaMThReC9pZDRkRi9wRFVOeW5HN1p5V3QweVpRZDVtNkRM?= =?utf-8?B?bXJxMTRaWVZ6ZlZnT3BqRFRubWtHV2hpQzluZjFnQko3L2lVQnJUVnBPbmlI?= =?utf-8?B?SXBNK0V0aUxidS9jT1JTM2pZaVpRL2RZVGdNRkRYdyt2UmZ2c2NZbUFBakxn?= =?utf-8?B?bkE3Z01jaDlUNit4UUhzYkpvRVR2aW5oNGh4UDNwYUZOcDI1Ull6L28yUTFC?= =?utf-8?B?WUs0UGdYM0ttOEoxQlZkQkFYQnFtR1krSWFkTnp2ZEsvSTUzWWFyeUM0UFM3?= =?utf-8?B?MFdWV2hHWnFXV1F2Slo5YWIxNlZwNkRkcUVLKzB0VFJoTnEvZ1JrSGxocTlV?= =?utf-8?B?M0MveW1zTTEzNVQ5ZU5WTVVoTTZzVEhkOTBISjJsOXI2eHZHa2hnQURHMGNW?= =?utf-8?B?c0VIMXVITlAvZW1LVGRveUtKeG9qaGFEWWhickI3WGtmeWExTlFMQkFxOXNN?= =?utf-8?B?cnR5SnhncUphTjRaUEFMbHFmSXh6RUI1YkR2b3JoS0UwQkZXNWRXQVpVTjdF?= =?utf-8?B?ZEpmZnIxVjJnMUhubkdOakh6TENRYWhCcmNoQmdpSVNYeGtKa1YyMzBKQWcz?= =?utf-8?B?dzdjT3VsZ0k4dlZCT2RXaHl6K0F2Si95Qm9GbU5WdnB0ZnU4UENpcm1YKzd1?= =?utf-8?B?MDhYRmVWTWtseGExdGNxZExVV3JVRkhVRWFLVmp5WDVFblY5am9WQWl4a3E4?= =?utf-8?B?R2tRazZja1poQXVWNFZ1dTl2SHc0Q2kxK1crNkFUWHJRZzVMODBUUS9CdHhu?= =?utf-8?B?cUcwcjV4VXppUWJZRHhhTFZOOTk1aGMvQjAyODJDcDl5QWxRRnlSVTEwaysv?= =?utf-8?B?TlRvRi9xeHdWR3NNVU5OREh1T2VTdFdkc1QvSHcxV1MwckFFeUdNMHV4UXRV?= =?utf-8?B?SDI1K0dBVkdKbGs5alFyb3lhVytpM0RjSHl5Tkk1VmhlK2sxSHF1WmZ6MnI3?= =?utf-8?B?WS9MZkpLcTZyZVZCRUU1UmhqaTdBQmo4UGFjVWkzai9SWlFpNGM5d2lyMmhO?= =?utf-8?B?Q2JhSVMzcHRDRGhFeXZkNVBpaEdVMHI2VWE0R1BJSGYrWUkvdkpjbHczbmxD?= =?utf-8?B?L3VMRG9maG5xU0xINFJrQmpiYkRlYk9GVmZ2dmZ2YVc3c2NibE50NWFLYStM?= =?utf-8?B?VjM0YnF0VTFyYWEzUENnZHBNc2Z6SkZmTkdTb1pKRUNrK1ZQNzVDMDBEa3JQ?= =?utf-8?B?VldUWkIxenBsdzNKRzRNc05SNnN4ZXNnTk16WkU1RDQ0WGxmVXppNy91T0Zw?= =?utf-8?B?a3NjVDNUTzQ5enVOenJ3NzVmK0RjNjA2allQMFFHWnp5aUh6SzNFeDRkSmdi?= =?utf-8?B?ZVQvaG5RMHlYMkFLa1VTUTloaGhPNlJxRTFkL0JpY3pZL3JYUzRoUUlxc0JO?= =?utf-8?B?REdaY1JrT254a3pCWThqdURvSm5wcGpzcDRaVmM2cVFWaS9QMEJoa0taajdx?= =?utf-8?B?bGIzdG1HZUIvNlg1ZHBnQUVxZUVSR2FJSEFwNnFwdHlzenQ4V3lZS1BPcS9T?= =?utf-8?B?QS9wMXp1Vm1yQ0U0djMvQWRlYy9sZ1B0WHlTdFRac3JsNnI5Q3JxRWc5RlRw?= =?utf-8?B?SHorOHdseWVwWWVWbmhHSTQra3Jjem9JZVJwaUlmYjNzTEpyc3VySmRBVGVq?= =?utf-8?B?OWpybC9Td0xWUDVmWDlocGZQTUNtZklmcDI1cWZCSytVYmY5VG0yZ1FjOHM1?= =?utf-8?B?dW9uM2hyL2NQajJnZFpqRmVnZjJCYTdLVXpqcUhhSFpzTGQ3SkNlMUNPajdX?= =?utf-8?B?a2NQMXdqUG1JUU5pb05qbGdTcDhpcE8xR2t1dmFJTG9jY0xPWmNoN1AwR0dS?= =?utf-8?B?YWFrejFsd1FVNkFDNVJMdzVNU0JZd1h5VTl6bVRjMCtaZUExbmN0aDRBcmNT?= =?utf-8?B?cWd5NG1FUEdtRDY4Y1d3REZHVWdRa3VLUGV3TGp1MWZSeWdTQWVFV2NKcFhz?= =?utf-8?Q?WCOnCUfIWBBWOyJ0=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <37417A8F78986F4788113903A4D59511@apcprd06.prod.outlook.com> 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: 6d2c0362-93fa-487e-1cc4-08df397f093c X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2026 07:49:48.8158 (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: q0fiLxilR2CNCL8uTLFVXxI1ps70LHp0Zx+wf5z6YlvBahOQvZpn7q3La0v4soEmd6M8dSdAVZUB3W4Y6RCqOnEsQs2h12behqm1Oy6UL1I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSQPR06MB7251 QWRkIGEgZ2x1ZSBsYXllciBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIFVTQlNTUCBjb250cm9sbGVy IGludGVncmF0ZWQNCmluIHRoZSBDSVggU2t5MSBTb0MuIFRoZSBkcml2ZXIgbWFuYWdlcyB0aGUg Y29udHJvbGxlciBjbG9ja3MsDQpyZXNldHMsIGFuZCB0aGUgbW9kZSBzdHJhcCBjb250cm9scyBs b2NhdGVkIGluIHRoZSBTa3kxIFM1IHN5c3RlbQ0KY29udHJvbGxlci4gVGhlIHBlci1jb250cm9s bGVyIGdsdWUgcmVnaXN0ZXJzLCB0aGUgQVhJIGJ1cyBhdHRyaWJ1dGUNCmNvbmZpZ3VyYXRpb24g cmVnaXN0ZXIgYW5kIHRoZSBjb250cm9sbGVyIHN0YXR1cyByZWdpc3RlciwgYXJlIG1hcHBlZA0K ZGlyZWN0bHkgdGhyb3VnaCB0aGUgcmVnIHByb3BlcnR5IG9mIHRoZSBnbHVlIG5vZGUuDQoNClNp Z25lZC1vZmYtYnk6IEhvbmdsaWFuZyBZYW5nIDxob25nbGlhbmcueWFuZ0BjaXh0ZWNoLmNvbT4N Ci0tLQ0KdjQgLT4gdjU6DQotIE5vIGNoYW5nZXMuDQogZHJpdmVycy91c2IvY2RuczMvS2NvbmZp ZyAgICAgIHwgIDEzICsNCiBkcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZSAgICAgfCAgIDEgKw0K IGRyaXZlcnMvdXNiL2NkbnMzL2NkbnNwLXNreTEuYyB8IDcxNiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysNCiBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1za3kxLmggfCAxMjggKysr KysrDQogNCBmaWxlcyBjaGFuZ2VkLCA4NTggaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1za3kxLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5MS5oDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9jZG5zMy9LY29uZmlnIGIvZHJpdmVycy91c2IvY2RuczMvS2NvbmZpZw0KaW5kZXggMzlhZDIz ZDFhZGE4Li4wM2Q4ZTE3MGE5OGEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9LY29u ZmlnDQorKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnDQpAQCAtNzcsNiArNzcsMTkgQEAg Y29uZmlnIFVTQl9DRE5TUF9QQ0kNCiAJICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIHRoaXMgZHJp dmVyIGFzIG1vZHVsZSBpdCB3aWxsDQogCSAgYmUgZHluYW1pY2FsbHkgbGlua2VkIGFuZCBtb2R1 bGUgd2lsbCBiZSBjYWxsZWQgY2Ruc3AtcGNpLmtvDQogDQorY29uZmlnIFVTQl9DRE5TUF9TS1kx DQorCXRyaXN0YXRlICJDYWRlbmNlIFVTQjMgc3VwcG9ydCBvbiBDSVggU2t5MSBTb0MgcGxhdGZv cm1zIg0KKwlkZXBlbmRzIG9uIFVTQl9DRE5TMw0KKwlkZXBlbmRzIG9uIEFSQ0hfQ0lYIHx8IENP TVBJTEVfVEVTVA0KKwlkZWZhdWx0IFVTQl9DRE5TMw0KKwloZWxwDQorCSAgR2x1ZSBkcml2ZXIg Zm9yIHRoZSBDYWRlbmNlIFVTQiBkdWFsLXJvbGUgY29udHJvbGxlcnMgb24gQ0lYIFNreTENCisJ ICAoZGV2aWNlIHRyZWUgY29tcGF0aWJsZSBjaXgsc2t5MS11c2IzKS4gSXQgZW5hYmxlcyBjbG9j a3MgYW5kIHJlc2V0cw0KKwkgIGZyb20gdGhlIFNvQywgdGhlbiB1c2VzIHRoZSBzaGFyZWQgY2Ru czMgcGxhdGZvcm0gY29yZSAoY2Rucy5rbykuDQorDQorCSAgSWYgYnVpbHQgYXMgYSBtb2R1bGUs IHRoZSBtb2R1bGUgaXMgbmFtZWQgY2Ruc3Atc2t5MS5rbyBhbmQgbXVzdCBiZQ0KKwkgIGxvYWRl ZCBhZnRlciB0aGUgY2RucyBjb3JlIG1vZHVsZSB3aGVuIGJvdGggYXJlIGxvYWRhYmxlIG1vZHVs ZXMuDQorDQogY29uZmlnIFVTQl9DRE5TM19USQ0KIAl0cmlzdGF0ZSAiQ2FkZW5jZSBVU0IzIHN1 cHBvcnQgb24gVEkgcGxhdGZvcm1zIg0KIAlkZXBlbmRzIG9uIEFSQ0hfSzMgfHwgQ09NUElMRV9U RVNUDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgYi9kcml2ZXJzL3Vz Yi9jZG5zMy9NYWtlZmlsZQ0KaW5kZXggYjJlNGJhNmE0OWEzLi5hYjgxM2FhZjk5NDAgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy91c2IvY2Ru czMvTWFrZWZpbGUNCkBAIC0yOCwzICsyOCw0IEBAIG9iai0kKENPTkZJR19VU0JfQ0ROU1BfUENJ KQkJCSs9IGNkbnNwLXBjaS5vDQogb2JqLSQoQ09ORklHX1VTQl9DRE5TM19USSkJCQkrPSBjZG5z My10aS5vDQogb2JqLSQoQ09ORklHX1VTQl9DRE5TM19JTVgpCQkJKz0gY2RuczMtaW14Lm8NCiBv YmotJChDT05GSUdfVVNCX0NETlMzX1NUQVJGSVZFKQkJKz0gY2RuczMtc3RhcmZpdmUubw0KK29i ai0kKENPTkZJR19VU0JfQ0ROU1BfU0tZMSkJCQkrPSBjZG5zcC1za3kxLm8NCmRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1za3kxLmMgYi9kcml2ZXJzL3VzYi9jZG5zMy9jZG5z cC1za3kxLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjFmNzg3 MDI4OWEzNQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy91c2IvY2RuczMvY2Ruc3Atc2t5 MS5jDQpAQCAtMCwwICsxLDcxNiBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQorLyoNCisgKiBjZG5zcC1za3kxLmMgLSBDSVggU2t5MSBnbHVlIGZvciBDYWRlbmNlIFVT QlNTUCBEUkQgY29udHJvbGxlcg0KKyAqDQorICogQ29weXJpZ2h0IChDKSAyMDI2IENJWCBUZWNo bm9sb2d5IEdyb3VwIENvLiwgTHRkLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+ DQorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCisj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L2lvcG9sbC5oPg0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5j bHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisj aW5jbHVkZSA8bGludXgvb2YuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KKyNp bmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcG0uaD4NCisjaW5jbHVkZSA8bGludXgvcG1fcnVu dGltZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCisjaW5jbHVkZSA8bGludXgvcmVz ZXQuaD4NCisNCisjaW5jbHVkZSA8bGludXgvdXNiLmg+DQorI2luY2x1ZGUgPGxpbnV4L3VzYi9o Y2QuaD4NCisNCisjaW5jbHVkZSAiY2Ruc3Atc2t5MS5oIg0KKyNpbmNsdWRlICJjb3JlLmgiDQor DQorc3RhdGljIGNvbnN0IGNoYXIgKmNpeF91c2JfY2xrX25hbWVzW0NJWF9VU0JfQ0xLX05VTV0g PSB7DQorCSJzb2YiLA0KKwkiYXhpIiwNCisJImxwbSIsDQorCSJhcGIiLA0KK307DQorDQorc3Ry dWN0IGNkbnNwX3NreTFfc3RyYXBfc2lnbmFsIHsNCisJdW5zaWduZWQgaW50IG9mZnNldCwgYml0 Ow0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBjZG5zcF9za3kxX3N0cmFwX3NpZ25hbCBz dHJhcF9zaWduYWxzW1NLWTFfVVNCX1M1X05VTV0gPSB7DQorCS8qIHVzYiBjb25maWcgaW4gczUg ZG9tYWluICovDQorCVtVM19UWVBFQ19EUkRfSURdCT0geyBVU0JfTU9ERV9TVFJBUF9TNV9ET01B SU4sIFUzX1RZUEVDX0RSRF9NT0RFX1NUUkFQX0JJVCB9LA0KKwlbVTNfVFlQRUNfSE9TVDBfSURd CT0geyBVU0JfTU9ERV9TVFJBUF9TNV9ET01BSU4sIFUzX1RZUEVDX0hPU1QwX01PREVfU1RSQVBf QklUIH0sDQorCVtVM19UWVBFQ19IT1NUMV9JRF0JPSB7IFVTQl9NT0RFX1NUUkFQX1M1X0RPTUFJ TiwgVTNfVFlQRUNfSE9TVDFfTU9ERV9TVFJBUF9CSVQgfSwNCisJW1UzX1RZUEVDX0hPU1QyX0lE XQk9IHsgVVNCX01PREVfU1RSQVBfUzVfRE9NQUlOLCBVM19UWVBFQ19IT1NUMl9NT0RFX1NUUkFQ X0JJVCB9LA0KKwlbVTNfVFlQRUFfQ1RSTDBfSURdCT0geyBVU0JfTU9ERV9TVFJBUF9TNV9ET01B SU4sIFUzX1RZUEVBX0NUUkwwX01PREVfU1RSQVBfQklUIH0sDQorCVtVM19UWVBFQV9DVFJMMV9J RF0JPSB7IFVTQl9NT0RFX1NUUkFQX1M1X0RPTUFJTiwgVTNfVFlQRUFfQ1RSTDFfTU9ERV9TVFJB UF9CSVR9LA0KKwlbVTJfSE9TVDBfSURdCQk9IHsgVVNCX01PREVfU1RSQVBfUzVfRE9NQUlOLCBV Ml9IT1NUMF9NT0RFX1NUUkFQX0JJVCB9LA0KKwlbVTJfSE9TVDFfSURdCQk9IHsgVVNCX01PREVf U1RSQVBfUzVfRE9NQUlOLCBVMl9IT1NUMV9NT0RFX1NUUkFQX0JJVCB9LA0KKwlbVTJfSE9TVDJf SURdCQk9IHsgVVNCX01PREVfU1RSQVBfUzVfRE9NQUlOLCBVMl9IT1NUMl9NT0RFX1NUUkFQX0JJ VCB9LA0KKwlbVTJfSE9TVDNfSURdCQk9IHsgVVNCX01PREVfU1RSQVBfUzVfRE9NQUlOLCBVMl9I T1NUM19NT0RFX1NUUkFQX0JJVCB9LA0KK307DQorDQorc3RhdGljIGludCBjZG5zcF9za3kxX3Nl dF9tb2RlX2J5X2lkKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IG1vZGUpDQorew0KKwlzdHJ1Y3Qg Y2Ruc3Bfc2t5MSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKw0KKwlyZXR1cm4gcmVn bWFwX3VwZGF0ZV9iaXRzKGRhdGEtPnVzYl9zeXNjb24sDQorCQkJCSAgc3RyYXBfc2lnbmFsc1tk YXRhLT5pZF0ub2Zmc2V0LA0KKwkJCQkgIEdFTk1BU0soc3RyYXBfc2lnbmFsc1tkYXRhLT5pZF0u Yml0ICsgMSwNCisJCQkJCSAgc3RyYXBfc2lnbmFsc1tkYXRhLT5pZF0uYml0KSwNCisJCQkJICBt b2RlIDw8IHN0cmFwX3NpZ25hbHNbZGF0YS0+aWRdLmJpdCk7DQorfQ0KKw0KKy8qKg0KKyAqIGNk bnNwX3NreTFfY2xrX2VuYWJsZV9hbGwoKSAtIGVuYWJsZSBhbGwgY2xvY2tzIGZvciB1c2IgY29u dHJvbGxlcg0KKyAqIEBkZXY6CVBvaW50ZXIgdG8gdGhlIGRldmljZSBvZiBwbGF0Zm9ybV9kZXZp Y2UNCisgKg0KKyAqLw0KKw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9jbGtfZW5hYmxlX2FsbChz dHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlpbnQgaSwgcmV0ID0gMDsNCisJc3RydWN0IGNkbnNw X3NreTEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0IGNsayAqKmNpeF91 c2JfY2xrcyA9IGRhdGEtPmNpeF91c2JfY2xrczsNCisNCisJZm9yIChpID0gMDsgaSA8IENJWF9V U0JfQ0xLX05VTTsgaSsrKSB7DQorCQljaXhfdXNiX2Nsa3NbaV0gPSBkZXZtX2Nsa19nZXQoZGV2 LCBjaXhfdXNiX2Nsa19uYW1lc1tpXSk7DQorCQlpZiAoSVNfRVJSKGNpeF91c2JfY2xrc1tpXSkp IHsNCisJCQlyZXQgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihjaXhfdXNiX2Nsa3NbaV0p LA0KKwkJCQkJICAgICJjb3VsZCBub3QgZ2V0ICVzIGNsb2NrXG4iLA0KKwkJCQkJICAgIGNpeF91 c2JfY2xrX25hbWVzW2ldKTsNCisJCQlnb3RvIGVycl91c2JfY2xrczsNCisJCX0NCisJCXJldCA9 IGNsa19wcmVwYXJlX2VuYWJsZShjaXhfdXNiX2Nsa3NbaV0pOw0KKwkJaWYgKHJldCkgew0KKwkJ CWRldl9lcnIoZGV2LCAiJXMgZW5hYmxlIGZhaWxlZDolZFxuIiwgY2l4X3VzYl9jbGtfbmFtZXNb aV0sIHJldCk7DQorCQkJZ290byBlcnJfdXNiX2Nsa3M7DQorCQl9DQorCX0NCisJZGV2X2RiZyhk ZXYsICJlbmFibGUgc2t5MSBVU0IgY2xvY2sgZG9uZVxuIik7DQorCXJldHVybiByZXQ7DQorDQor ZXJyX3VzYl9jbGtzOg0KKwl3aGlsZSAoLS1pID49IDApDQorCQljbGtfZGlzYWJsZV91bnByZXBh cmUoY2l4X3VzYl9jbGtzW2ldKTsNCisJcmV0dXJuIHJldDsNCit9Ow0KKw0KKy8qKg0KKyAqIGNk bnNwX3NreTFfY2xrX2Rpc2FibGVfYWxsKCkgLSBkaXNhYmxlIGFsbCBjbG9ja3MgZm9yIHVzYiBj b250cm9sbGVyDQorICogQGRldjoJUG9pbnRlciB0byB0aGUgZGV2aWNlIG9mIHBsYXRmb3JtX2Rl dmljZQ0KKyAqDQorICovDQorDQorc3RhdGljIHZvaWQgY2Ruc3Bfc2t5MV9jbGtfZGlzYWJsZV9h bGwoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJaW50IGk7DQorCXN0cnVjdCBjZG5zcF9za3kx ICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVjdCBjbGsgKipjaXhfdXNiX2Ns a3MgPSBkYXRhLT5jaXhfdXNiX2Nsa3M7DQorDQorCWZvciAoaSA9IDA7IGkgPCBDSVhfVVNCX0NM S19OVU07IGkrKykNCisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShjaXhfdXNiX2Nsa3NbaV0pOw0K K307DQorDQorLyoqDQorICogY2Ruc3Bfc2t5MV9jbGtfZW5hYmxlX3Jlc3VtZSgpIC0gZW5hYmxl IHRoZSBjbG9ja3MgdGhhdCBhcmUgdHVybmVkDQorICogb2ZmIHdoaWxlIHN1c3BlbmQNCisgKiBA ZGV2OglQb2ludGVyIHRvIHRoZSBkZXZpY2Ugb2YgcGxhdGZvcm1fZGV2aWNlDQorICoNCisgKi8N CisNCitzdGF0aWMgaW50IGNkbnNwX3NreTFfY2xrX2VuYWJsZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQ0KK3sNCisJaW50IGksIHJldDsNCisJc3RydWN0IGNkbnNwX3NreTEgKmRhdGEgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0IGNsayAqKmNpeF91c2JfY2xrcyA9IGRhdGEt PmNpeF91c2JfY2xrczsNCisNCisJZm9yIChpID0gMDsgaSA8IENJWF9VU0JfQ0xLX09GRl9OVU07 IGkrKykgew0KKwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNpeF91c2JfY2xrc1tpXSk7DQor CQlpZiAocmV0KSB7DQorCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIGNsb2NrICVz OiAlZFxuIiwNCisJCQkJY2l4X3VzYl9jbGtfbmFtZXNbaV0sIHJldCk7DQorCQkJZ290byBlcnJf dXNiX2Nsa3M7DQorCQl9DQorCX0NCisJcmV0dXJuIDA7DQorDQorZXJyX3VzYl9jbGtzOg0KKwl3 aGlsZSAoLS1pID49IDApDQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoY2l4X3VzYl9jbGtzW2ld KTsNCisJcmV0dXJuIHJldDsNCit9Ow0KKw0KKy8qKg0KKyAqIGNkbnNwX3NreTFfY2xrX2Rpc2Fi bGVfc3VzcGVuZCgpIC0gZGlzYWJsZSB0aGUgY2xvY2tzIHdoaWNoIGFyZSBub3QNCisgKiBuZWVk ZWQgd2hlbiBzdXNwZW5kDQorICogQGRldjoJUG9pbnRlciB0byB0aGUgZGV2aWNlIG9mIHBsYXRm b3JtX2RldmljZQ0KKyAqDQorICovDQorDQorc3RhdGljIHZvaWQgY2Ruc3Bfc2t5MV9jbGtfZGlz YWJsZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCWludCBpOw0KKwlzdHJ1Y3Qg Y2Ruc3Bfc2t5MSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlzdHJ1Y3QgY2xrICoq Y2l4X3VzYl9jbGtzID0gZGF0YS0+Y2l4X3VzYl9jbGtzOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwg Q0lYX1VTQl9DTEtfT0ZGX05VTTsgaSsrKQ0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNpeF91 c2JfY2xrc1tpXSk7DQorfTsNCisNCitzdGF0aWMgaW50IHNreTFfcmNzdV9oYW5kc2hha2Uoc3Ry dWN0IGNkbnNwX3NreTEgKmRhdGEsIHUzMiBtYXNrLCB1MzIgZG9uZSwNCisJCQkgICAgICAgdTY0 IHRpbWVvdXRfdXMpDQorew0KKwl1MzIJcmVzdWx0Ow0KKwlpbnQJcmV0Ow0KKw0KKwlyZXQgPSBy ZWFkbF9wb2xsX3RpbWVvdXQoZGF0YS0+cmNzdV9jdHN0X2Jhc2UsIHJlc3VsdCwNCisJCQkJIChy ZXN1bHQgJiBtYXNrKSA9PSBkb25lIHx8DQorCQkJCSByZXN1bHQgPT0gVTMyX01BWCwNCisJCQkJ IDEwLCB0aW1lb3V0X3VzKTsNCisJaWYgKHJlc3VsdCA9PSBVMzJfTUFYKQkJLyogY2FyZCByZW1v dmVkICovDQorCQlyZXR1cm4gLUVOT0RFVjsNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGlj IGludCBjZG5zX3NreTFfcGxhdGZvcm1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsDQorCQkJ CSAgICAgIGJvb2wgc3VzcGVuZCwgYm9vbCB3YWtldXApDQorew0KKwlzdHJ1Y3QgY2RucyAqY2Ru cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICp4aGNp X2RldiA9IGNkbnMtPmhvc3RfZGV2Ow0KKwlzdHJ1Y3QgdXNiX2hjZCAgKmhjZDsNCisJc3RydWN0 IGRldmljZSAqcGFyZW50ID0gY2Rucy0+ZGV2LT5wYXJlbnQ7DQorCXN0cnVjdCBjZG5zcF9za3kx ICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKHBhcmVudCk7DQorCXUzMiB2YWx1ZTsNCisJaW50IHBv bGw7DQorCWludCByZXQgPSAwOw0KKwlpbnQgY291bnQgPSAzOw0KKw0KKwlkYXRhLT53YWtldXAg PSB3YWtldXA7DQorDQorCWlmIChjZG5zLT5yb2xlICE9IFVTQl9ST0xFX0hPU1QpDQorCQlyZXR1 cm4gMDsNCisNCisJaWYgKCF4aGNpX2Rldikgew0KKwkJZGV2X2RiZyhkZXYsICJob3N0IGNvbnRy b2xsZXIgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWRcbiIpOw0KKwkJcmV0dXJuIDA7DQorCX0NCisN CisJaGNkID0gZGV2X2dldF9kcnZkYXRhKCZ4aGNpX2Rldi0+ZGV2KTsNCisJaWYgKCFoY2QpIHsN CisJCWRldl9kYmcoZGV2LCAiaG9zdCBjb250cm9sbGVyIGhhdmUgbm90IHJlZ2lzdGVyZWRcbiIp Ow0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJaWYgKHN1c3BlbmQpIHsNCisJCXdoaWxlIChjb3Vu dC0tKSB7DQorCQkJdmFsdWUgPSByZWFkbChoY2QtPnJlZ3MgKyBYRUNQX1BNX1BNQ1NSKTsNCisJ CQl2YWx1ZSAmPSB+UFNfTUFTSzsNCisJCQl2YWx1ZSB8PSBQU19EMyB8IFBTX1BNRV9FbjsNCisJ CQl3cml0ZWwodmFsdWUsIGhjZC0+cmVncyArIFhFQ1BfUE1fUE1DU1IpOw0KKwkJCS8qIEFmdGVy IGNvbnRyb2xsZXIgZW50ZXJzIEQzLCBkaXNhYmxlIEFYSSBhbmQgU09GDQorCQkJICogdW50aWwg QVhJIHZhbGlkIGZsYWcgY2hhbmdlcyB0byAwLg0KKwkJCSAqLw0KKwkJCWlmIChza3kxX3Jjc3Vf aGFuZHNoYWtlKGRhdGEsIEFYSV9DTE9DS19WQUxJRCwgMCwNCisJCQkJCQkxMDBVTEwgKiAxMDAw KSkgew0KKwkJCQl1MzIgY3RzdDsNCisNCisJCQkJY3RzdCA9IHJlYWRsKGRhdGEtPnJjc3VfY3Rz dF9iYXNlKTsNCisJCQkJZGV2X2RiZyhkZXYsICJlbnRlciBEMyBmYWlsZWQsIHJlZ2lzdGVyIHZh bHVlOiV4XG4iLA0KKwkJCQkJY3RzdCk7DQorCQkJfSBlbHNlIHsNCisJCQkJYnJlYWs7DQorCQkJ fQ0KKwkJfQ0KKwkJaWYgKGNvdW50IDwgMCkgew0KKwkJCXUzMiBjdHN0Ow0KKw0KKwkJCWN0c3Qg PSByZWFkbChkYXRhLT5yY3N1X2N0c3RfYmFzZSk7DQorCQkJZGV2X2VycihkZXYsICJlbnRlciBE MyBmYWlsZWQgYWZ0ZXIgcmV0cmllcywgcmVnaXN0ZXIgdmFsdWU6JXhcbiIsDQorCQkJCWN0c3Qp Ow0KKwkJfQ0KKwl9IGVsc2Ugew0KKwkJd2hpbGUgKGNvdW50LS0pIHsNCisJCQl2YWx1ZSA9IHJl YWRsKGhjZC0+cmVncyArIFhFQ1BfUE1fUE1DU1IpOw0KKwkJCXZhbHVlICY9IH5QU19NQVNLOw0K KwkJCXZhbHVlIHw9IFBTX0QwOw0KKwkJCXZhbHVlICY9IH5QU19QTUVfRW47DQorCQkJd3JpdGVs KHZhbHVlLCBoY2QtPnJlZ3MgKyBYRUNQX1BNX1BNQ1NSKTsNCisJCQkvKiBXYWl0IHBvd2VyIHN0 YXRlIGJhY2sgdG8gRDAgKi8NCisJCQlwb2xsID0gcmVhZGxfcG9sbF90aW1lb3V0KGhjZC0+cmVn cyArIFhFQ1BfUE1fUE1DU1IsDQorCQkJCQkJICB2YWx1ZSwNCisJCQkJCQkgICh2YWx1ZSAmIFBT X01BU0spID09IDAgfHwNCisJCQkJCQkgIHZhbHVlID09IFUzMl9NQVgsDQorCQkJCQkJICAxMCwg MTAwVUxMICogMTAwMCk7DQorCQkJaWYgKHBvbGwpIHsNCisJCQkJZGV2X2RiZyhkZXYsICJleGl0 IEQzIHRpbWVvdXQsIHBvd2VyIHN0YXRlPTB4JWx4XG4iLA0KKwkJCQkJdmFsdWUgJiBQU19NQVNL KTsNCisJCQl9IGVsc2Ugew0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCQlpZiAoY291bnQg PCAwKSB7DQorCQkJZGV2X2VycihkZXYsICJleGl0IEQzIHRpbWVvdXQgYWZ0ZXIgcmV0cmllcywg cG93ZXIgc3RhdGU9MHglbHhcbiIsDQorCQkJCXZhbHVlICYgUFNfTUFTSyk7DQorCQl9DQorCX0N CisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIHZvaWQgY2Ruc3Bfc2t5MV9jb25maWd1 cmVfY29udHJvbGxlcihzdHJ1Y3QgY2Ruc3Bfc2t5MSAqZGF0YSkNCit7DQorCWludCBjbGs7DQor CWludCB2MCwgdjEsIHYyOw0KKwl1MzIgdmFsID0gMDsNCisNCisJaWYgKGRhdGEtPnUzX2Rpc2Fi bGUpIHsNCisJCWRldl9kYmcoZGF0YS0+ZGV2LCAiZGlzYWJsZSB1MyBwb3J0XG4iKTsNCisJCXdy aXRlbChEX1hFQ19DRkdfM1hQT1JUX01PREVfVkFMVUUsIGRhdGEtPmRldmljZV9iYXNlDQorCQkJ KyBEX1hFQ19DRkdfM1hQT1JUX01PREUpOw0KKwl9DQorCXdyaXRlbChBWElfSEFMVCwgZGF0YS0+ ZGV2aWNlX2Jhc2UgKyBEX1hFQ19BWElfQ0FQKTsNCisJd3JpdGVsKEFYSV9IQUxULCBkYXRhLT54 aGNpX2Jhc2UgKyBEX1hFQ19BWElfQ0FQKTsNCisJd3JpdGVsKGRhdGEtPmF4aV9ibWF4X3ZhbHVl LCBkYXRhLT5kZXZpY2VfYmFzZSArIERfWEVDX0FYSV9DVFJMMCk7DQorCXdyaXRlbChkYXRhLT5h eGlfYm1heF92YWx1ZSwgZGF0YS0+eGhjaV9iYXNlICsgRF9YRUNfQVhJX0NUUkwwKTsNCisJd3Jp dGVsKCh+KHUzMikoQVhJX0hBTFQpKSwgZGF0YS0+ZGV2aWNlX2Jhc2UgKyBEX1hFQ19BWElfQ0FQ KTsNCisJd3JpdGVsKCh+KHUzMikoQVhJX0hBTFQpKSwgZGF0YS0+eGhjaV9iYXNlICsgRF9YRUNf QVhJX0NBUCk7DQorCWNsayA9IGRhdGEtPnNvZl9jbGtfZnJlcTsNCisJdjAgPSAgMjUgKiBjbGsg LyAxMDAwMDAwMDA7DQorCXYxID0gY2xrIC8gMTAwMDA7DQorCXYyID0gY2xrIC8gMTA7DQorCXdy aXRlbCgoKHYwID4gMSkgPyB2MCAtIDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9Y RUNfUFJFX1JFR18yNTBOUyk7DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAxMDAgPiAx KSA+IDAgPyAodjEgLyAxMDApIC0gMSA6IDEpLA0KKwkgICAgICAgZGF0YS0+ZGV2aWNlX2Jhc2Ug KyBEX1hFQ19QUkVfUkVHXzFVUyk7DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAxMCA+ IDEpID4gMCA/ICh2MSAvIDEwKSAtIDEgOiAxKSwNCisJICAgICAgIGRhdGEtPmRldmljZV9iYXNl ICsgRF9YRUNfUFJFX1JFR18xMFVTKTsNCisJd3JpdGVsKCgodjEpID4gMSA/IHYxIC0gMSA6IDEp LCBkYXRhLT5kZXZpY2VfYmFzZQ0KKwkJKyBEX1hFQ19QUkVfUkVHXzEwMFVTKTsNCisJd3JpdGVs KCh1bnNpZ25lZCBpbnQpKCgxMjUgKiBjbGsgLyAxMDAwMDAwKSA+IDEgPyAoMTI1ICogY2xrIC8g MTAwMDAwMCkgOiAxKSwNCisJICAgICAgIGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JF R18xMjVVUyk7DQorCXdyaXRlbCgoKHYyIC8gMTAwID4gMSkgPyAodjIgLyAxMDApIC0gMSA6IDEp LCBkYXRhLT5kZXZpY2VfYmFzZQ0KKwkJKyBEX1hFQ19QUkVfUkVHXzFNUyk7DQorCXdyaXRlbCgo KHYyIC8gMTAgPiAxKSA/ICh2MiAvIDEwKSAtIDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJ CSsgRF9YRUNfUFJFX1JFR18xME1TKTsNCisJd3JpdGVsKCh2MiA+IDEgPyB2MiAtIDEgOiAxKSwg ZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9YRUNfUFJFX1JFR18xMDBNUyk7DQorCWRldl9kYmco ZGF0YS0+ZGV2LCAicmVhZGw6JXgsICV4ICwleCwgJXgsICV4LCAleCwgJXgsICV4XG4iLA0KKwkJ cmVhZGwoZGF0YS0+ZGV2aWNlX2Jhc2UgKyBEX1hFQ19QUkVfUkVHXzI1ME5TKSwNCisJCXJlYWRs KGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JFR18xVVMpLA0KKwkJcmVhZGwoZGF0YS0+ ZGV2aWNlX2Jhc2UgKyBEX1hFQ19QUkVfUkVHXzEwVVMpLA0KKwkJcmVhZGwoZGF0YS0+ZGV2aWNl X2Jhc2UgKyBEX1hFQ19QUkVfUkVHXzEwMFVTKSwNCisJCXJlYWRsKGRhdGEtPmRldmljZV9iYXNl ICsgRF9YRUNfUFJFX1JFR18xMjVVUyksDQorCQlyZWFkbChkYXRhLT5kZXZpY2VfYmFzZSArIERf WEVDX1BSRV9SRUdfMU1TKSwNCisJCXJlYWRsKGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJF X1JFR18xME1TKSwNCisJCXJlYWRsKGRhdGEtPmRldmljZV9iYXNlICsgRF9YRUNfUFJFX1JFR18x MDBNUykpOw0KKwljbGsgPSBkYXRhLT5scG1fY2xrX2ZyZXE7DQorCXYwID0gIDI1ICogY2xrIC8g MTAwMDAwMDAwOw0KKwl2MSA9IGNsayAvIDEwMDAwOw0KKwl2MiA9IGNsayAvIDEwOw0KKwl3cml0 ZWwoKCh2MCA+IDEpID8gdjAgLSAxIDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERfWEVD X0xQTV9QUkVfUkVHXzI1ME5TKTsNCisJd3JpdGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwMCA+ IDEpID4gMCA/ICh2MSAvIDEwMCkgLSAxIDogMSksIGRhdGEtPmRldmljZV9iYXNlDQorCQkrIERf WEVDX0xQTV9QUkVfUkVHXzFVUyk7DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAxMCA+ IDEpID4gMCA/ICh2MSAvIDEwKSAtIDEgOiAxKSwgZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9Y RUNfTFBNX1BSRV9SRUdfMTBVUyk7DQorCXdyaXRlbCgoKHYxKSA+IDEgPyB2MSAtIDEgOiAxKSwg ZGF0YS0+ZGV2aWNlX2Jhc2UNCisJCSsgRF9YRUNfTFBNX1BSRV9SRUdfMTAwVVMpOw0KKwl3cml0 ZWwoKHVuc2lnbmVkIGludCkoKDEyNSAqIGNsayAvIDEwMDAwMDApID4gMSA/ICgxMjUgKiBjbGsg LyAxMDAwMDAwKSA6IDEpLA0KKwkgICAgICAgZGF0YS0+ZGV2aWNlX2Jhc2UgKyBEX1hFQ19MUE1f UFJFX1JFR18xMjVVUyk7DQorCXdyaXRlbCgoKHYyIC8gMTAwID4gMSkgPyAodjIgLyAxMDApIC0g MSA6IDEpLCBkYXRhLT5kZXZpY2VfYmFzZQ0KKwkJKyBEX1hFQ19MUE1fUFJFX1JFR18xTVMpOw0K Kwl3cml0ZWwoKCh2MiAvIDEwID4gMSkgPyAodjIgLyAxMCkgLSAxIDogMSksIGRhdGEtPmRldmlj ZV9iYXNlDQorCQkrIERfWEVDX0xQTV9QUkVfUkVHXzEwTVMpOw0KKwl3cml0ZWwoKHYyID4gMSA/ IHYyIC0gMSA6IDEpLCBkYXRhLT5kZXZpY2VfYmFzZQ0KKwkJKyBEX1hFQ19MUE1fUFJFX1JFR18x MDBNUyk7DQorCXYwID0gcmVhZGwoZGF0YS0+eGhjaV9iYXNlICsgWEVDX1VTQlNTUF9DSElDS0VO X0JJVFNfMyk7DQorCXYwICY9IH4oQ0ZHX0FQQl9USU1FT1VUX1BTTFZFUlJfRU4gfCBDRkdfQVBC X1BTTFZFUlJfRU4pOw0KKwl3cml0ZWwodjAsIGRhdGEtPnhoY2lfYmFzZSArIFhFQ19VU0JTU1Bf Q0hJQ0tFTl9CSVRTXzMpOw0KKwlpZiAoZGF0YS0+dTNfZGlzYWJsZSkgew0KKwkJZGV2X2RiZyhk YXRhLT5kZXYsICJkaXNhYmxlIHUzIHBvcnRcbiIpOw0KKwkJd3JpdGVsKFhFQ19DRkdfM1hQT1JU X01PREVfVkFMVUUsIGRhdGEtPnhoY2lfYmFzZQ0KKwkJCSsgWEVDX0NGR18zWFBPUlRfTU9ERSk7 DQorCX0gZWxzZSBpZiAoZGF0YS0+c3NwX2Rpc2FibGUpIHsNCisJCWRldl9kYmcoZGF0YS0+ZGV2 LCAiZGlzYWJsZSBzc3BcbiIpOw0KKwkJdjAgPSByZWFkbChkYXRhLT54aGNpX2Jhc2UgKyBYRUNf Q0ZHXzNYUE9SVF9NT0RFKTsNCisJCXdyaXRlbCh2MCAgJiBDRkdfM1hQT1JUX01PREVfRElTX1NT UCwgZGF0YS0+eGhjaV9iYXNlDQorCQkJKyBYRUNfQ0ZHXzNYUE9SVF9NT0RFKTsNCisJfQ0KKwlj bGsgPSBkYXRhLT5zb2ZfY2xrX2ZyZXE7DQorCXYwID0gIDI1ICogY2xrIC8gMTAwMDAwMDAwOw0K Kwl2MSA9IGNsayAvIDEwMDAwOw0KKwl2MiA9IGNsayAvIDEwOw0KKwl3cml0ZWwoKCh2MCA+IDEp ID8gdjAgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfUFJFX1JFR18yNTBOUyk7 DQorCXdyaXRlbCgodW5zaWduZWQgaW50KSgodjEgLyAxMDAgPiAxKSA+IDAgPyAodjEgLyAxMDAp IC0gMSA6IDApLCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX1BSRV9SRUdfMVVTKTsNCisJd3Jp dGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwID4gMSkgPiAwID8gKHYxIC8gMTApIC0gMSA6IDAp LCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX1BSRV9SRUdfMTBVUyk7DQorCXdyaXRlbCgoKHYx KSA+IDEgPyB2MSAtIDEgOiAwKSwgZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhFQ19QUkVfUkVHXzEw MFVTKTsNCisJd3JpdGVsKCh1bnNpZ25lZCBpbnQpKCgxMjUgKiBjbGsgLyAxMDAwMDAwKSA+IDEg PyAoMTI1ICogY2xrIC8gMTAwMDAwMCkgOiAwKSwNCisJICAgICAgIGRhdGEtPnhoY2lfYmFzZSAr IFhFQ19QUkVfUkVHXzEyNVVTKTsNCisJd3JpdGVsKCgodjIgLyAxMDAgPiAxKSA/ICh2MiAvIDEw MCkgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfUFJFX1JFR18xTVMpOw0KKwl3 cml0ZWwoKCh2MiAvIDEwID4gMSkgPyAodjIgLyAxMCkgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFz ZQ0KKwkJKyBYRUNfUFJFX1JFR18xME1TKTsNCisJd3JpdGVsKCh2MiA+IDEgPyB2MiAtIDEgOiAw KSwgZGF0YS0+eGhjaV9iYXNlDQorCQkrIFhFQ19QUkVfUkVHXzEwME1TKTsNCisJY2xrID0gZGF0 YS0+bHBtX2Nsa19mcmVxOw0KKwl2MCA9ICAyNSAqIGNsayAvIDEwMDAwMDAwMDsNCisJdjEgPSBj bGsgLyAxMDAwMDsNCisJdjIgPSBjbGsgLyAxMDsNCisJd3JpdGVsKCgodjAgPiAxKSA/IHYwIC0g MSA6IDApLCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX0xQTV9QUkVfUkVHXzI1ME5TKTsNCisJ d3JpdGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwMCA+IDEpID4gMCA/ICh2MSAvIDEwMCkgLSAx IDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfTFBNX1BSRV9SRUdfMVVTKTsNCisJd3Jp dGVsKCh1bnNpZ25lZCBpbnQpKCh2MSAvIDEwID4gMSkgPiAwID8gKHYxIC8gMTApIC0gMSA6IDAp LCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX0xQTV9QUkVfUkVHXzEwVVMpOw0KKwl3cml0ZWwo KCh2MSkgPiAxID8gdjEgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfTFBNX1BS RV9SRUdfMTAwVVMpOw0KKwl3cml0ZWwoKHVuc2lnbmVkIGludCkoKDEyNSAqIGNsayAvIDEwMDAw MDApID4gMSA/ICgxMjUgKiBjbGsgLyAxMDAwMDAwKSA6IDApLA0KKwkgICAgICAgZGF0YS0+eGhj aV9iYXNlICsgWEVDX0xQTV9QUkVfUkVHXzEyNVVTKTsNCisJd3JpdGVsKCgodjIgLyAxMDAgPiAx KSA/ICh2MiAvIDEwMCkgLSAxIDogMCksIGRhdGEtPnhoY2lfYmFzZQ0KKwkJKyBYRUNfTFBNX1BS RV9SRUdfMU1TKTsNCisJd3JpdGVsKCgodjIgLyAxMCA+IDEpID8gKHYyIC8gMTApIC0gMSA6IDAp LCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX0xQTV9QUkVfUkVHXzEwTVMpOw0KKwl3cml0ZWwo KHYyID4gMSA/IHYyIC0gMSA6IDApLCBkYXRhLT54aGNpX2Jhc2UNCisJCSsgWEVDX0xQTV9QUkVf UkVHXzEwME1TKTsNCisJdmFsID0gcmVhZGwoZGF0YS0+eGhjaV9iYXNlICsgWEVDX1VTQlNTUF9D TEtfR0FUSU5HX0NUUkwpOw0KKwl2YWwgfD0gSE9TVDIwX0FDTEtfR0FUSU5HX0RJU0FCTEUgfCBI T1NUMjBfVVRNSV9HQVRJTkdfRElTQUJMRTsNCisJd3JpdGVsKHZhbCwgZGF0YS0+eGhjaV9iYXNl ICsgWEVDX1VTQlNTUF9DTEtfR0FUSU5HX0NUUkwpOw0KK30NCisNCitzdGF0aWMgaW50IGNkbnNw X3NreTFfZHJkX2luaXQoc3RydWN0IGNkbnNwX3NreTEgKmRhdGEpDQorew0KKwlpbnQgcmV0ID0g MDsNCisNCisJcmVzZXRfY29udHJvbF9hc3NlcnQoZGF0YS0+cmVzZXQpOw0KKwlyZXNldF9jb250 cm9sX2Fzc2VydChkYXRhLT5wcmVzZXQpOw0KKwljZG5zcF9za3kxX2Nsa19kaXNhYmxlX2FsbChk YXRhLT5kZXYpOw0KKwlyZXQgPSBjZG5zcF9za3kxX2Nsa19lbmFibGVfYWxsKGRhdGEtPmRldik7 DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKwl3cml0ZWwoQ0lYX1VTQl9BWElfV1JfQ0FD SEVfVkFMVUUsIGRhdGEtPnJjc3VfYXhpX2Jhc2UpOw0KKwljZG5zcF9za3kxX3NldF9tb2RlX2J5 X2lkKGRhdGEtPmRldiwgTU9ERV9TVFJBUF9PVEcpOw0KKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0 KGRhdGEtPnByZXNldCk7DQorCWNkbnNwX3NreTFfY29uZmlndXJlX2NvbnRyb2xsZXIoZGF0YSk7 DQorCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoZGF0YS0+cmVzZXQpOw0KKwlyZXR1cm4gcmV0Ow0K K30NCisNCitzdGF0aWMgdm9pZCBfX2lvbWVtICpza3kxX29mX2dldF9hZGRyX2J5X25hbWUoc3Ry dWN0IGRldmljZV9ub2RlICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKwl2b2lkIF9f aW9tZW0gKmFkZHIgPSBOVUxMOw0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQorCWludCBp bmRleDsNCisNCisJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShwYXJlbnQsIG5vZGUpIHsNCisJCWlu ZGV4ID0gb2ZfcHJvcGVydHlfbWF0Y2hfc3RyaW5nKG5vZGUsICJyZWctbmFtZXMiLCBuYW1lKTsN CisJCWlmIChpbmRleCA+PSAwKSB7DQorCQkJYWRkciA9IG9mX2lvbWFwKG5vZGUsIGluZGV4KTsN CisJCQlvZl9ub2RlX3B1dChub2RlKTsNCisJCQlicmVhazsNCisJCX0NCisJfQ0KKw0KKwlyZXR1 cm4gYWRkcjsNCit9DQorDQorc3RhdGljIHZvaWQgX19pb21lbSAqc2t5MV9nZXRfYWRkcl9ieV9u YW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSkNCit7DQorCXJldHVybiBz a3kxX29mX2dldF9hZGRyX2J5X25hbWUoZGV2LT5vZl9ub2RlLCBuYW1lKTsNCit9DQorDQorc3Rh dGljIHZvaWQgc2t5MV9wdXRfYWRkcih2b2lkIF9faW9tZW0gKnJlZ3MpDQorew0KKwlpZiAocmVn cykNCisJCWlvdW5tYXAocmVncyk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY2Ruc3Bfc2t5MV9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsNCisJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gZGV2LT5vZl9ub2Rl Ow0KKwlzdHJ1Y3Qgb2ZfZGV2X2F1eGRhdGEgY2Ruc19za3kxX2F1eGRhdGFbXSA9IHsNCisJCXsg LmNvbXBhdGlibGUgPSAiY2Rucyx1c2IzIiwgfSwNCisJCXt9LA0KKwl9Ow0KKwlzdHJ1Y3QgY2Ru c3Bfc2t5MSAqZGF0YTsNCisJc3RydWN0IGNkbnMzX3BsYXRmb3JtX2RhdGEgKmNkbnNfc2t5MV9w ZGF0YTsNCisJaW50IHJldCA9IDA7DQorDQorCWRhdGEgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFkYXRhKQ0KKwkJcmV0dXJuIC1FTk9NRU07 DQorCWRhdGEtPnJjc3VfYXhpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2Vf YnluYW1lKHBkZXYsICJheGkiKTsNCisJaWYgKElTX0VSUihkYXRhLT5yY3N1X2F4aV9iYXNlKSkN CisJCXJldHVybiBQVFJfRVJSKGRhdGEtPnJjc3VfYXhpX2Jhc2UpOw0KKwlkYXRhLT5yY3N1X2N0 c3RfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgInN0 YXR1cyIpOw0KKwlpZiAoSVNfRVJSKGRhdGEtPnJjc3VfY3RzdF9iYXNlKSkNCisJCXJldHVybiBQ VFJfRVJSKGRhdGEtPnJjc3VfY3RzdF9iYXNlKTsNCisJZGF0YS0+cmVzZXQgPSBkZXZtX3Jlc2V0 X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZSgmcGRldi0+ZGV2LCAiY29yZSIpOw0KKwlpZiAoSVNfRVJS KGRhdGEtPnJlc2V0KSkgew0KKwkJcmV0ID0gUFRSX0VSUihkYXRhLT5yZXNldCk7DQorCQlkZXZf ZXJyKGRldiwgImdldCByZXNldCBlcnJvcjolZFxuIiwgcmV0KTsNCisJCXJldHVybiByZXQ7DQor CX0NCisJZGF0YS0+cHJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoJnBk ZXYtPmRldiwgImFwYiIpOw0KKwlpZiAoSVNfRVJSKGRhdGEtPnByZXNldCkpIHsNCisJCXJldCA9 IFBUUl9FUlIoZGF0YS0+cHJlc2V0KTsNCisJCWRldl9lcnIoZGV2LCAiZ2V0IHJlc2V0IGVycm9y OiVkXG4iLCByZXQpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBkYXRhKTsNCisJZGF0YS0+ZGV2ID0gZGV2Ow0KKwlyZXQgPSBvZl9hbGlhc19nZXRf aWQoZGV2LT5vZl9ub2RlLCAidXNiIik7DQorCWlmIChyZXQgPT0gLUVOT0RFVikgew0KKwkJaWYg KGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJpZCIsICZyZXQpKQ0KKwkJCXJldCA9IC1F Tk9ERVY7DQorCX0NCisJaWYgKHJldCA8IDAgfHwgcmV0ID49ICBTS1kxX1VTQl9TNV9OVU0pIHsN CisJCWRldl9lcnIoZGV2LCAiZ2V0IGFsaWFzIGZhaWxlZC5cbiIpOw0KKwkJcmV0dXJuIHJldDsN CisJfQ0KKwlkYXRhLT5pZCA9IHJldDsNCisJZGF0YS0+dXNiX3N5c2NvbiA9IHN5c2Nvbl9yZWdt YXBfbG9va3VwX2J5X3BoYW5kbGUoZGV2LT5vZl9ub2RlLA0KKwkJCQkJCQkgICAiY2l4LHVzYi1z eXNjb24iKTsNCisJaWYgKElTX0VSUihkYXRhLT51c2Jfc3lzY29uKSkgew0KKwkJZGV2X2Vycihk ZXYsICJVbmFibGUgdG8gZ2V0IGNpeCx1c2Itc3lzY29uIHJlZ21hcCIpOw0KKwkJcmV0dXJuIFBU Ul9FUlIoZGF0YS0+dXNiX3N5c2Nvbik7DQorCX0NCisJZGF0YS0+dTNfZGlzYWJsZSA9IGRldmlj ZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAidTMtcG9ydC1kaXNhYmxlIik7DQorCWRhdGEtPnNz cF9kaXNhYmxlID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsICJzc3AtZGlzYWJsZSIp Ow0KKwlkYXRhLT5zb2ZfY2xrX2ZyZXEgPSBDSVhfVVNCX0NMS184TTsNCisJZGF0YS0+bHBtX2Ns a19mcmVxID0gQ0lYX1VTQl9DTEtfMzJLOw0KKwlkYXRhLT5heGlfYm1heF92YWx1ZSA9IEFYSV9C TUFYX1ZBTFVFX0RFRkFVTFQ7DQorCWRhdGEtPnhoY2lfYmFzZSA9IHNreTFfZ2V0X2FkZHJfYnlf bmFtZShkZXYsICJ4aGNpIik7DQorCWlmICghZGF0YS0+eGhjaV9iYXNlKSB7DQorCQlyZXQgPSAt RU5PREVWOw0KKwkJZ290byBlcnJfcHV0X3hoY2k7DQorCX0NCisJZGF0YS0+ZGV2aWNlX2Jhc2Ug PSBza3kxX2dldF9hZGRyX2J5X25hbWUoZGV2LCAiZGV2Iik7DQorCWlmICghZGF0YS0+ZGV2aWNl X2Jhc2UpIHsNCisJCXJldCA9IC1FTk9ERVY7DQorCQlnb3RvIGVycl9wdXRfYWRkcnM7DQorCX0N CisJcmV0ID0gY2Ruc3Bfc2t5MV9kcmRfaW5pdChkYXRhKTsNCisJaWYgKHJldCA9PSAtRVRJTUVE T1VUKQ0KKwkJcmV0ID0gLUVQUk9CRV9ERUZFUjsNCisJaWYgKHJldCkgew0KKwkJLyoNCisJCSAq IGRyZF9pbml0KCkgbGVhdmVzIHRoZSBjbG9ja3MgZGlzYWJsZWQgYW5kIHRoZSByZXNldHMNCisJ CSAqIGFzc2VydGVkIG9uIGZhaWx1cmU7IG9ubHkgdGhlIGFkZHJlc3MgbWFwcGluZ3MgYXJlDQor CQkgKiBsZWZ0IHRvIHJlbGVhc2UuDQorCQkgKi8NCisJCWdvdG8gZXJyX3B1dF9hZGRyczsNCisJ fQ0KKwlkYXRhLT5vY19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGF0YS0+ZGV2LCAi b2MiLCBHUElPRF9JTik7DQorCWlmIChJU19FUlIoZGF0YS0+b2NfZ3BpbykpIHsNCisJCWRldl9l cnIoZGF0YS0+ZGV2LCAiY2FuIG5vdCBnZXQgb2NfZ3Bpb1xuIik7DQorCQlyZXQgPSBQVFJfRVJS KGRhdGEtPm9jX2dwaW8pOw0KKwkJZ290byBlcnJfcXVpZXNjZTsNCisJfQ0KKwlpZiAoZGF0YS0+ b2NfZ3Bpbykgew0KKwkJcmV0ID0gZ3Bpb2RfZGlyZWN0aW9uX2lucHV0KGRhdGEtPm9jX2dwaW8p Ow0KKwkJaWYgKHJldCA8IDApDQorCQkJZGV2X2VycihkYXRhLT5kZXYsICJzZXQgb2NfZ3BpbyBp bnB1dCBmYWlsZWQ6JWRcbiIsIHJldCk7DQorCX0NCisJLyoNCisJICogVGhlIHBsYXRmb3JtIGRh dGEgaXMgZGV2bS1hbGxvY2F0ZWQsIHNvIGl0IHN0YXlzIGFsaXZlIGFzIGxvbmcgYXMNCisJICog dGhpcyBkZXZpY2U7IHRoZSBjaGlsZCBkZXZpY2VzIGFyZSBkZXBvcHVsYXRlZCBiZWZvcmUgaXQg aXMgZnJlZWQuDQorCSAqLw0KKwljZG5zX3NreTFfcGRhdGEgPSBkZXZtX2t6YWxsb2MoZGV2LCBz aXplb2YoKmNkbnNfc2t5MV9wZGF0YSksIEdGUF9LRVJORUwpOw0KKwlpZiAoIWNkbnNfc2t5MV9w ZGF0YSkgew0KKwkJcmV0ID0gLUVOT01FTTsNCisJCWdvdG8gZXJyX3F1aWVzY2U7DQorCX0NCisJ Y2Ruc19za3kxX3BkYXRhLT5wbGF0Zm9ybV9zdXNwZW5kID0gY2Ruc19za3kxX3BsYXRmb3JtX3N1 c3BlbmQ7DQorCWNkbnNfc2t5MV9wZGF0YS0+cXVpcmtzID0gQ0ROUzNfREVGQVVMVF9QTV9SVU5U SU1FX0FMTE9XOw0KKwljZG5zX3NreTFfYXV4ZGF0YVswXS5wbGF0Zm9ybV9kYXRhID0gY2Ruc19z a3kxX3BkYXRhOw0KKwlyZXQgPSBvZl9wbGF0Zm9ybV9wb3B1bGF0ZShub2RlLCBOVUxMLCBjZG5z X3NreTFfYXV4ZGF0YSwgZGV2KTsNCisJaWYgKHJldCkgew0KKwkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gY3JlYXRlIGNoaWxkcmVuOiAlZFxuIiwgcmV0KTsNCisJCWdvdG8gZXJyX3F1aWVzY2U7 DQorCX0NCisJZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShkZXYsIHRydWUpOw0KKwlwbV9ydW50 aW1lX3NldF9hY3RpdmUoZGV2KTsNCisJcG1fcnVudGltZV9lbmFibGUoZGV2KTsNCisJcmV0dXJu IDA7DQorDQorZXJyX3F1aWVzY2U6DQorCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRhdGEtPnJlc2V0 KTsNCisJcmVzZXRfY29udHJvbF9hc3NlcnQoZGF0YS0+cHJlc2V0KTsNCisJY2Ruc3Bfc2t5MV9j bGtfZGlzYWJsZV9hbGwoZGV2KTsNCitlcnJfcHV0X2FkZHJzOg0KKwlza3kxX3B1dF9hZGRyKGRh dGEtPmRldmljZV9iYXNlKTsNCitlcnJfcHV0X3hoY2k6DQorCXNreTFfcHV0X2FkZHIoZGF0YS0+ eGhjaV9iYXNlKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIHZvaWQgY2Ruc3Bfc2t5 MV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZwZGV2LT5kZXY7DQorCXN0cnVjdCBjZG5zcF9za3kxICpkYXRhID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQorDQorCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsNCisJb2ZfcGxh dGZvcm1fZGVwb3B1bGF0ZShkZXYpOw0KKwlza3kxX3B1dF9hZGRyKGRhdGEtPnhoY2lfYmFzZSk7 DQorCXNreTFfcHV0X2FkZHIoZGF0YS0+ZGV2aWNlX2Jhc2UpOw0KKwlyZXNldF9jb250cm9sX2Fz c2VydChkYXRhLT5yZXNldCk7DQorCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRhdGEtPnByZXNldCk7 DQorCWNkbnNwX3NreTFfY2xrX2Rpc2FibGVfYWxsKGRldik7DQorCXBtX3J1bnRpbWVfZGlzYWJs ZShkZXYpOw0KKwlwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsNCisJcG1fcnVudGltZV9w dXRfbm9pZGxlKGRldik7DQorfQ0KKw0KKy8qDQorICogQmVjYXVzZSB0aGUgd2FrZS11cCBpbnRl cnJ1cHQgYW5kIGhvc3QgaW50ZXJydXB0IGFyZSB0aGUgc2FtZSBpbnRlcnJ1cHQsDQorICogY2xv c2luZyB0aGUgYXhpIGFuZCBzb2YgY2xvY2sgd2lsbCByZXN1bHQgaW4gdGhlIGluYWJpbGl0eSB0 byBnZW5lcmF0ZQ0KKyAqIHBvcnQgc3RhdHVzIGNoYW5nZSBpbnRlcnJ1cHQuDQorICovDQorc3Rh dGljIGludCBjZG5zcF9za3kxX3N5c3RlbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCit7 DQorCXN0cnVjdCBjZG5zcF9za3kxICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorDQor CWlmICghZGF0YS0+d2FrZXVwKSB7DQorCQlyZXNldF9jb250cm9sX2Fzc2VydChkYXRhLT5yZXNl dCk7DQorCQlyZXNldF9jb250cm9sX2Fzc2VydChkYXRhLT5wcmVzZXQpOw0KKwl9DQorCWNkbnNw X3NreTFfY2xrX2Rpc2FibGVfc3VzcGVuZChkZXYpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBjZG5zcF9za3kxX3N5c3RlbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sN CisJaW50IHJldCA9IDA7DQorCXN0cnVjdCBjZG5zcF9za3kxICpkYXRhID0gZGV2X2dldF9kcnZk YXRhKGRldik7DQorDQorCXJldCA9IGNkbnNwX3NreTFfY2xrX2VuYWJsZV9yZXN1bWUoZGV2KTsN CisJaWYgKHJldCkNCisJCXJldHVybiByZXQ7DQorCWlmICghZGF0YS0+d2FrZXVwKSB7DQorCQl3 cml0ZWwoQ0lYX1VTQl9BWElfV1JfQ0FDSEVfVkFMVUUsIGRhdGEtPnJjc3VfYXhpX2Jhc2UpOw0K KwkJY2Ruc3Bfc2t5MV9zZXRfbW9kZV9ieV9pZChkYXRhLT5kZXYsIE1PREVfU1RSQVBfT1RHKTsN CisJCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoZGF0YS0+cHJlc2V0KTsNCisJCWNkbnNwX3NreTFf Y29uZmlndXJlX2NvbnRyb2xsZXIoZGF0YSk7DQorCQlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGRh dGEtPnJlc2V0KTsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBkZXZfcG1fb3BzIGNkbnNwX3NreTFfcG1fb3BzID0gew0KKwlTWVNURU1fU0xFRVBfUE1fT1BT KGNkbnNwX3NreTFfc3lzdGVtX3N1c3BlbmQsIGNkbnNwX3NreTFfc3lzdGVtX3Jlc3VtZSkNCit9 Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfc2t5MV9vZl9tYXRj aFtdID0gew0KKwl7IC5jb21wYXRpYmxlID0gImNpeCxza3kxLXVzYnNzcCIsIH0sDQorCXt9LA0K K307DQorTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgY2Ruc19za3kxX29mX21hdGNoKTsNCisNCitz dGF0aWMgaW50IGNkbnNwX3NreTFfZmluZF9jZG5zX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICoqY2Ruc19kZXYgPSBkYXRhOw0KKw0KKwlp ZiAoZGV2LT5vZl9ub2RlICYmIG9mX2RldmljZV9pc19jb21wYXRpYmxlKGRldi0+b2Zfbm9kZSwg ImNkbnMsdXNiMyIpKSB7DQorCQkvKiBrZWVwIGEgcmVmZXJlbmNlOiB0aGUgcG9pbnRlciBpcyB1 c2VkIGFmdGVyIHRoZSBpdGVyYXRpb24gKi8NCisJCSpjZG5zX2RldiA9IGdldF9kZXZpY2UoZGV2 KTsNCisJCXJldHVybiAxOw0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGNk bnNwX3NreTFfZmluZF9nYWRnZXRfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRh KQ0KK3sNCisJc3RydWN0IGRldmljZSAqKmdhZGdldF9kZXYgPSBkYXRhOw0KKwljb25zdCBjaGFy ICpuYW1lID0gZGV2X25hbWUoZGV2KTsNCisJc3RhdGljIGNvbnN0IGNoYXIgZ2FkZ2V0X3ByZWZp eFtdID0gImdhZGdldC4iOw0KKw0KKwkvKg0KKwkgKiBUaGUgZ2FkZ2V0IGRldmljZSBpcyByZWdp c3RlcmVkIG9uIHRoZSBnYWRnZXQgYnVzIHdpdGggbmFtZQ0KKwkgKiAiZ2FkZ2V0LiVkIiAoc2Vl IHVzYl9hZGRfZ2FkZ2V0X3VkYyAtPiBkZXZfc2V0X25hbWUpLg0KKwkgKiBJdCBzaXRzIG9uIHRo ZSBnYWRnZXQgYnVzIGFuZCBoYXMgdGhlIGZ1bmN0aW9uIGRyaXZlciBib3VuZCB0byBpdC4NCisJ ICogVmVyaWZ5IHRoZSBkZXZpY2UgaXMgb24gdGhlIGdhZGdldCBidXMgYnkgY2hlY2tpbmcgdGhl IGJ1cyBuYW1lLg0KKwkgKiBUaGlzIHByZXZlbnRzIG1hdGNoaW5nIGRldmljZXMgdGhhdCBoYXBw ZW4gdG8gaGF2ZSAiZ2FkZ2V0LiIgcHJlZml4DQorCSAqIGluIHRoZWlyIG5hbWUgYnV0IGFyZSBu b3QgcmVhbCBnYWRnZXQgZGV2aWNlcywgYW5kIGFsc28gYXZvaWRzDQorCSAqIE5VTEwgcG9pbnRl ciBkZXJlZmVyZW5jZSB3aGVuIGRldmljZSBidXMgaXMgYmVpbmcgcmVtb3ZlZC4NCisJICovDQor CWlmIChuYW1lICYmIGRldi0+YnVzICYmICFzdHJjbXAoZGV2LT5idXMtPm5hbWUsICJnYWRnZXQi KSAmJg0KKwkgICAgIXN0cm5jbXAobmFtZSwgZ2FkZ2V0X3ByZWZpeCwgc2l6ZW9mKGdhZGdldF9w cmVmaXgpIC0gMSkpIHsNCisJCS8qIGtlZXAgYSByZWZlcmVuY2U6IHRoZSBwb2ludGVyIGlzIHVz ZWQgYWZ0ZXIgdGhlIGl0ZXJhdGlvbiAqLw0KKwkJKmdhZGdldF9kZXYgPSBnZXRfZGV2aWNlKGRl dik7DQorCQlyZXR1cm4gMTsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQg Y2Ruc3Bfc2t5MV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCisJc3RydWN0IGNkbnNwX3NreTEgKmRh dGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0IGRldmljZSAqY2Ruc19kZXYgPSBO VUxMOw0KKwlzdHJ1Y3QgZGV2aWNlICpnYWRnZXRfZGV2ID0gTlVMTDsNCisJc3RydWN0IGNkbnMg KmNkbnMgPSBOVUxMOw0KKw0KKwlpZiAoIWRldmljZV9tYXlfd2FrZXVwKGRldikpIHsNCisJCS8q DQorCQkgKiBGaW5kIHRoZSBjZG5zMyBjaGlsZCBkZXZpY2UsIHRoZW4gZmluZCBpdHMgZ2FkZ2V0 IGRldmljZQ0KKwkJICogYW5kIHJlbGVhc2UgdGhlIGZ1bmN0aW9uIGRyaXZlciBiZWZvcmUgZGlz YWJsaW5nIGNsb2Nrcy4NCisJCSAqIFRoaXMgZW5zdXJlcyBhbGwgcmVnaXN0ZXIgYWNjZXNzZXMg aW4gZ2FkZ2V0X3VuYmluZF9kcml2ZXINCisJCSAqIGNvbXBsZXRlIGJlZm9yZSBjbG9ja3MgYXJl IHR1cm5lZCBvZmYuDQorCQkgKi8NCisJCWRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsICZjZG5z X2RldiwgY2Ruc3Bfc2t5MV9maW5kX2NkbnNfZGV2KTsNCisJCWlmIChjZG5zX2RldikNCisJCQlj ZG5zID0gZGV2X2dldF9kcnZkYXRhKGNkbnNfZGV2KTsNCisJCWlmIChjZG5zKQ0KKwkJCWRldmlj ZV9mb3JfZWFjaF9jaGlsZChjZG5zX2RldiwgJmdhZGdldF9kZXYsDQorCQkJCQkgICAgICBjZG5z cF9za3kxX2ZpbmRfZ2FkZ2V0X21hdGNoKTsNCisJCWlmIChnYWRnZXRfZGV2KQ0KKwkJCWRldmlj ZV9yZWxlYXNlX2RyaXZlcihnYWRnZXRfZGV2KTsNCisJCWlmIChjZG5zICYmIGNkbnMtPmhvc3Rf ZGV2KSB7DQorCQkJc3RydWN0IHVzYl9oY2QgKmhjZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGNk bnMtPmhvc3RfZGV2KTsNCisNCisJCQlpZiAoaGNkICYmIGhjZC0+aXJxID4gMCkgew0KKwkJCQkv Kg0KKwkJCQkgKiBDbGVhciBIQ0RfRkxBR19IV19BQ0NFU1NJQkxFIGJlZm9yZSBkaXNhYmxlX2ly cS4NCisJCQkJICogVGhpcyBwcmV2ZW50cyB1c2JfaGNkX2lycSBmcm9tIGNhbGxpbmcgeGhjaV9p cnENCisJCQkJICogKHdoaWNoIHJlYWRzIFVTQlNUUykgYWZ0ZXIgY2xvY2tzIGFyZSBkaXNhYmxl ZC4NCisJCQkJICovDQorCQkJCWNsZWFyX2JpdChIQ0RfRkxBR19IV19BQ0NFU1NJQkxFLCAmaGNk LT5mbGFncyk7DQorCQkJCWRpc2FibGVfaXJxKGhjZC0+aXJxKTsNCisJCQkJc3luY2hyb25pemVf aXJxKGhjZC0+aXJxKTsNCisJCQl9DQorCQl9DQorCQlyZXNldF9jb250cm9sX2Fzc2VydChkYXRh LT5yZXNldCk7DQorCQlyZXNldF9jb250cm9sX2Fzc2VydChkYXRhLT5wcmVzZXQpOw0KKwkJY2Ru c3Bfc2t5MV9jbGtfZGlzYWJsZV9hbGwoZGV2KTsNCisJCXB1dF9kZXZpY2UoZ2FkZ2V0X2Rldik7 DQorCQlwdXRfZGV2aWNlKGNkbnNfZGV2KTsNCisJfQ0KK30NCisNCitzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RyaXZlciBjZG5zcF9za3kxX2RyaXZlciA9IHsNCisJLnByb2JlCQk9IGNkbnNwX3Nr eTFfcHJvYmUsDQorCS5yZW1vdmUJCT0gY2Ruc3Bfc2t5MV9yZW1vdmUsDQorCS5zaHV0ZG93bgk9 IGNkbnNwX3NreTFfc2h1dGRvd24sDQorCS5kcml2ZXIJCT0gew0KKwkJLm5hbWUJPSAiY2Ruc3At c2t5MSIsDQorCQkub2ZfbWF0Y2hfdGFibGUJPSBjZG5zX3NreTFfb2ZfbWF0Y2gsDQorCQkucG0J PSBwbV9zbGVlcF9wdHIoJmNkbnNwX3NreTFfcG1fb3BzKSwNCisJfSwNCit9Ow0KKw0KK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoY2Ruc3Bfc2t5MV9kcml2ZXIpOw0KKw0KK01PRFVMRV9BTElBUygi cGxhdGZvcm06Y2Ruc3Atc2t5MSIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiQ0lYIFNreTEgQ2Fk ZW5jZSBVU0JTU1AgRFJEIGdsdWUgZHJpdmVyIik7DQorTU9EVUxFX0FVVEhPUigiSG9uZ2xpYW5n IFlhbmcgPGhvbmdsaWFuZy55YW5nQGNpeHRlY2guY29tPiIpOw0KK01PRFVMRV9MSUNFTlNFKCJH UEwiKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1za3kxLmggYi9kcml2 ZXJzL3VzYi9jZG5zMy9jZG5zcC1za3kxLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAwMDAuLmFjOTdkM2UwNTRlNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy91 c2IvY2RuczMvY2Ruc3Atc2t5MS5oDQpAQCAtMCwwICsxLDEyOCBAQA0KKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQorDQorI2lmbmRlZiBfQ0ROU1BfU0tZMV9IDQorI2Rl ZmluZSBfQ0ROU1BfU0tZMV9IDQorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KKyNpbmNsdWRlIDxs aW51eC9ncGlvL2NvbnN1bWVyLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQorI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+DQorDQorI2RlZmluZSBVU0JfTU9ERV9TVFJBUF9TNV9ET01BSU4g ICAgICAgIDB4NDI0DQorDQorI2RlZmluZSBNT0RFX1NUUkFQX09URyAgICAgICAgICAgICAgICAg IDANCisNCisjZGVmaW5lIFUzX1RZUEVDX0RSRF9JRCAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgVTNfVFlQRUNfSE9TVDBfSUQgICAgICAgICAgICAgICAxDQorI2RlZmluZSBVM19UWVBFQ19I T1NUMV9JRCAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFUzX1RZUEVDX0hPU1QyX0lEICAgICAg ICAgICAgICAgMw0KKyNkZWZpbmUgVTNfVFlQRUFfQ1RSTDBfSUQgICAgICAgICAgICAgICA0DQor I2RlZmluZSBVM19UWVBFQV9DVFJMMV9JRCAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFUyX0hP U1QwX0lEICAgICAgICAgICAgICAgICAgICAgNg0KKyNkZWZpbmUgVTJfSE9TVDFfSUQgICAgICAg ICAgICAgICAgICAgICA3DQorI2RlZmluZSBVMl9IT1NUMl9JRCAgICAgICAgICAgICAgICAgICAg IDgNCisjZGVmaW5lIFUyX0hPU1QzX0lEICAgICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUg U0tZMV9VU0JfUzVfTlVNICAgICAgICAgICAgICAgICAxMA0KKw0KKyNkZWZpbmUgVTNfVFlQRUNf RFJEX01PREVfU1RSQVBfQklUICAgICAxMg0KKyNkZWZpbmUgVTNfVFlQRUNfSE9TVDBfTU9ERV9T VFJBUF9CSVQgICAxNA0KKyNkZWZpbmUgVTNfVFlQRUNfSE9TVDFfTU9ERV9TVFJBUF9CSVQgICAx Ng0KKyNkZWZpbmUgVTNfVFlQRUNfSE9TVDJfTU9ERV9TVFJBUF9CSVQgICAxOA0KKyNkZWZpbmUg VTNfVFlQRUFfQ1RSTDBfTU9ERV9TVFJBUF9CSVQgICA4DQorI2RlZmluZSBVM19UWVBFQV9DVFJM MV9NT0RFX1NUUkFQX0JJVCAgIDEwDQorI2RlZmluZSBVMl9IT1NUMF9NT0RFX1NUUkFQX0JJVCAg ICAgICAgIDANCisjZGVmaW5lIFUyX0hPU1QxX01PREVfU1RSQVBfQklUICAgICAgICAgMg0KKyNk ZWZpbmUgVTJfSE9TVDJfTU9ERV9TVFJBUF9CSVQgICAgICAgICA0DQorI2RlZmluZSBVMl9IT1NU M19NT0RFX1NUUkFQX0JJVCAgICAgICAgIDYNCisNCisjZGVmaW5lIEFYSV9IQUxUICAgICAgICAg ICAgICAgICAgICAgICAgQklUKDMxKQ0KKyNkZWZpbmUgQVhJX0JNQVhfVkFMVUVfREVGQVVMVCAg ICAgICAgICAweDcNCisNCisjZGVmaW5lIERfWEVDX0NGR18zWFBPUlRfTU9ERSAgICAgICAgICAg MHgyMDQwDQorI2RlZmluZSBEX1hFQ19BWElfQ0FQICAgICAgICAgICAgICAgICAgIDB4MjE3NA0K KyNkZWZpbmUgRF9YRUNfQVhJX0NUUkwwICAgICAgICAgICAgICAgICAweDIxN0MNCisjZGVmaW5l IERfWEVDX1BSRV9SRUdfMjUwTlMgICAgICAgICAgICAgMHgyMUU4DQorI2RlZmluZSBEX1hFQ19Q UkVfUkVHXzFVUyAgICAgICAgICAgICAgIDB4MjFFQw0KKyNkZWZpbmUgRF9YRUNfUFJFX1JFR18x MFVTICAgICAgICAgICAgICAweDIxRjANCisjZGVmaW5lIERfWEVDX1BSRV9SRUdfMTAwVVMgICAg ICAgICAgICAgMHgyMUY0DQorI2RlZmluZSBEX1hFQ19QUkVfUkVHXzEyNVVTICAgICAgICAgICAg IDB4MjFGOA0KKyNkZWZpbmUgRF9YRUNfUFJFX1JFR18xTVMgICAgICAgICAgICAgICAweDIxRkMN CisjZGVmaW5lIERfWEVDX1BSRV9SRUdfMTBNUyAgICAgICAgICAgICAgMHgyMjAwDQorI2RlZmlu ZSBEX1hFQ19QUkVfUkVHXzEwME1TICAgICAgICAgICAgIDB4MjIwNA0KKyNkZWZpbmUgRF9YRUNf TFBNX1BSRV9SRUdfMjUwTlMgICAgICAgICAweDIyMDgNCisjZGVmaW5lIERfWEVDX0xQTV9QUkVf UkVHXzFVUyAgICAgICAgICAgMHgyMjBDDQorI2RlZmluZSBEX1hFQ19MUE1fUFJFX1JFR18xMFVT ICAgICAgICAgIDB4MjIxMA0KKyNkZWZpbmUgRF9YRUNfTFBNX1BSRV9SRUdfMTAwVVMgICAgICAg ICAweDIyMTQNCisjZGVmaW5lIERfWEVDX0xQTV9QUkVfUkVHXzEyNVVTICAgICAgICAgMHgyMjE4 DQorI2RlZmluZSBEX1hFQ19MUE1fUFJFX1JFR18xTVMgICAgICAgICAgIDB4MjIxQw0KKyNkZWZp bmUgRF9YRUNfTFBNX1BSRV9SRUdfMTBNUyAgICAgICAgICAweDIyMjANCisjZGVmaW5lIERfWEVD X0xQTV9QUkVfUkVHXzEwME1TICAgICAgICAgMHgyMjI0DQorDQorI2RlZmluZSBYRUNfQ0ZHXzNY UE9SVF9NT0RFICAgICAgICAgICAgIDB4MjA0MA0KKyNkZWZpbmUgWEVDX1BSRV9SRUdfMjUwTlMg ICAgICAgICAgICAgICAweDIxRTgNCisjZGVmaW5lIFhFQ19QUkVfUkVHXzFVUyAgICAgICAgICAg ICAgICAgMHgyMUVDDQorI2RlZmluZSBYRUNfUFJFX1JFR18xMFVTICAgICAgICAgICAgICAgIDB4 MjFGMA0KKyNkZWZpbmUgWEVDX1BSRV9SRUdfMTAwVVMgICAgICAgICAgICAgICAweDIxRjQNCisj ZGVmaW5lIFhFQ19QUkVfUkVHXzEyNVVTICAgICAgICAgICAgICAgMHgyMUY4DQorI2RlZmluZSBY RUNfUFJFX1JFR18xTVMgICAgICAgICAgICAgICAgIDB4MjFGQw0KKyNkZWZpbmUgWEVDX1BSRV9S RUdfMTBNUyAgICAgICAgICAgICAgICAweDIyMDANCisjZGVmaW5lIFhFQ19QUkVfUkVHXzEwME1T ICAgICAgICAgICAgICAgMHgyMjA0DQorI2RlZmluZSBYRUNfTFBNX1BSRV9SRUdfMjUwTlMgICAg ICAgICAgIDB4MjIwOA0KKyNkZWZpbmUgWEVDX0xQTV9QUkVfUkVHXzFVUyAgICAgICAgICAgICAw eDIyMEMNCisjZGVmaW5lIFhFQ19MUE1fUFJFX1JFR18xMFVTICAgICAgICAgICAgMHgyMjEwDQor I2RlZmluZSBYRUNfTFBNX1BSRV9SRUdfMTAwVVMgICAgICAgICAgIDB4MjIxNA0KKyNkZWZpbmUg WEVDX0xQTV9QUkVfUkVHXzEyNVVTICAgICAgICAgICAweDIyMTgNCisjZGVmaW5lIFhFQ19MUE1f UFJFX1JFR18xTVMgICAgICAgICAgICAgMHgyMjFDDQorI2RlZmluZSBYRUNfTFBNX1BSRV9SRUdf MTBNUyAgICAgICAgICAgIDB4MjIyMA0KKyNkZWZpbmUgWEVDX0xQTV9QUkVfUkVHXzEwME1TICAg ICAgICAgICAweDIyMjQNCisjZGVmaW5lIFhFQ19VU0JTU1BfQ0hJQ0tFTl9CSVRTXzMgICAgICAg MHgyMjMwDQorI2RlZmluZSBYRUNfVVNCU1NQX0NMS19HQVRJTkdfQ1RSTCAgICAgIDB4MjIzNA0K KyNkZWZpbmUgWEVDUF9QTV9QTUNTUiAgICAgICAgICAgICAgICAgICAweDIyNDANCisNCisvKiBY RUNfVVNCU1NQX0NMS19HQVRJTkdfQ1RSTCAqLw0KKyNkZWZpbmUgSE9TVDIwX0FDTEtfR0FUSU5H X0RJU0FCTEUgICAgICBCSVQoNCkNCisjZGVmaW5lIEhPU1QyMF9VVE1JX0dBVElOR19ESVNBQkxF ICAgICAgQklUKDUpDQorDQorLyogWEVDUF9QTV9QTUNTUiAqLw0KKyNkZWZpbmUgUFNfTUFTSyAg ICAgICAgICAgICAgICAgICAgICAgICBHRU5NQVNLKDEsIDApDQorI2RlZmluZSBQU19EMCAgICAg ICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFBTX0QzICAgICAgICAgICAgICAgICAg ICAgICAgICAgMw0KKyNkZWZpbmUgUFNfUE1FX0VuICAgICAgICAgICAgICAgICAgICAgICBCSVQo OCkNCisNCisjZGVmaW5lIERfWEVDX0NGR18zWFBPUlRfTU9ERV9WQUxVRSAgICAgMHhhMDAzMWUw Nw0KKyNkZWZpbmUgWEVDX0NGR18zWFBPUlRfTU9ERV9WQUxVRSAgICAgICAweGEwMDMxZTA3DQor I2RlZmluZSBDRkdfM1hQT1JUX01PREVfRElTX1NTUCAgICAgICAgICh+QklUKDMxKSkNCisNCisj ZGVmaW5lIENGR19BUEJfVElNRU9VVF9QU0xWRVJSX0VOICAgICAgQklUKDIyKQ0KKyNkZWZpbmUg Q0ZHX0FQQl9QU0xWRVJSX0VOICAgICAgICAgICAgICBCSVQoMjMpDQorDQorI2RlZmluZSBDSVhf VVNCX0NMS19OVU0gICAgICAgICAgICAgICAgICg0KQ0KKyNkZWZpbmUgQ0lYX1VTQl9DTEtfT0ZG X05VTSAgICAgICAgICAgICAoMikNCisjZGVmaW5lIENJWF9VU0JfQVhJX1dSX0NBQ0hFX1ZBTFVF ICAgICAgMHgzMw0KKyNkZWZpbmUgQ0lYX1VTQl9DTEtfMzJLICAgICAgICAgICAgICAgICAzMjAw MA0KKyNkZWZpbmUgQ0lYX1VTQl9DTEtfOE0gICAgICAgICAgICAgICAgICA4MDAwMDAwDQorDQor I2RlZmluZSBBWElfQ0xPQ0tfVkFMSUQgICAgICAgICAgICAgICAgIEJJVCgxKQ0KKw0KK3N0cnVj dCBjZG5zcF9za3kxIHsNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwl2b2lkIF9faW9tZW0gKnJj c3VfYXhpX2Jhc2U7DQorCXZvaWQgX19pb21lbSAqcmNzdV9jdHN0X2Jhc2U7DQorCXZvaWQgX19p b21lbSAqZHJfYmFzZTsNCisJdm9pZCBfX2lvbWVtICp4aGNpX2Jhc2U7DQorCXZvaWQgX19pb21l bSAqZGV2aWNlX2Jhc2U7DQorCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmNkbnNwX3BkZXY7DQor CXN0cnVjdCByZXNldF9jb250cm9sICpyZXNldDsNCisJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnBy ZXNldDsNCisJc3RydWN0IGNsayAqY2l4X3VzYl9jbGtzW0NJWF9VU0JfQ0xLX05VTV07DQorCWlu dCBpZDsNCisJc3RydWN0IHJlZ21hcAkqdXNiX3N5c2NvbjsNCisJaW50IGxwbV9jbGtfZnJlcTsN CisJaW50IHNvZl9jbGtfZnJlcTsNCisJYm9vbCB1M19kaXNhYmxlOw0KKwlib29sIHNzcF9kaXNh YmxlOw0KKwlpbnQgYXhpX2JtYXhfdmFsdWU7DQorCXN0cnVjdCBncGlvX2Rlc2MgKm9jX2dwaW87 DQorCWJvb2wgd2FrZXVwOw0KK307DQorDQorI2VuZGlmIC8qIF9DRE5TUF9TS1kxX0ggKi8NCi0t IA0KMi41NC4w