Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp656730pxb; Tue, 1 Feb 2022 07:50:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJwwoWLMseJtxHHXs8WCk5kvf/OFW9DGPfCE88Fn7fVMgpbygGSNRVT2w+kENDFlQEZDLQgF X-Received: by 2002:a17:90b:249:: with SMTP id fz9mr2945602pjb.99.1643730613510; Tue, 01 Feb 2022 07:50:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643730613; cv=none; d=google.com; s=arc-20160816; b=bUUB1SdHuEHSsERKvHaABNVmIA97iFFPhPDJqWpcpltyb99CHZRMMVGQLR54D882Rt k12Ab7MaRWfsXj1RCRYr5lP2lt32IwQ7Pi7ipu6mr874hiVkVDrUiB6tUI7hgVG6rTTL d8UFEY3hjNmqqErtSo5Svgk70NSNerNHgiL9N3Lgc3mTZW3caKXX+TbzVfIcxSeCg8ou YjxDuA14KIM0pEmWhbZ4HJcN7XpgcYJzpXKiRZWXx5McyDVb5mxdW7O2bwEPbWMj409m P7QrSt7xWOOpwqYN2VuJKKnu5w9gv86OhOk1UEvLvwH7Ob+yWIhftp9dnb+ND5kez71s y9PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=CTINFAIyRFIsN62/dIt8GWxn0lfVv70ko5fAEYoFwqs=; b=u1mWZJKAkgTj4P4ru6Hm9PFHSgQ9HafNwYQp1zj4EKrFzx/vi5BOJP6sn1uY5l9ezl nJ8j5pxnNSLlGqMNNhXNMzHnnhmucr1P/AdmgDLjg5rEodqlJJPnA7+AYOD7gFgfBChl KT479jmaRojEF7VybLNJaWBUg9JKz4ZfyKm8pMym97slfVG+2PfMtO/GBO/5lsT7cMM/ IKfL2w+U4kDECWwqWFwEy4/FEkCCp/brPq9E95yVAS3Kdl6maelHMd/G8xfH0zs5EG3k YLB3z+uzFsZpGT+ISzN0BNt2qME0sBH6DRCVPpsqTa0w3zovPqjFceD92YTHTJrWceJS Nvlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=EsT1lXwQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=kjpBgj39; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y190si15281006pgd.653.2022.02.01.07.50.01; Tue, 01 Feb 2022 07:50:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=EsT1lXwQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=kjpBgj39; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238472AbiAaJSF (ORCPT + 99 others); Mon, 31 Jan 2022 04:18:05 -0500 Received: from smtp-out1.suse.de ([195.135.220.28]:50312 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231476AbiAaJSD (ORCPT ); Mon, 31 Jan 2022 04:18:03 -0500 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id CB868212C9; Mon, 31 Jan 2022 09:18:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1643620681; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=CTINFAIyRFIsN62/dIt8GWxn0lfVv70ko5fAEYoFwqs=; b=EsT1lXwQXbH6mf1GRlveqtfK/zmz7EyOpROATBW2gDR+gzKjOruTwXRsJ3/ty2qQu4Tujl VlspoIsAH0Jzt/R1Lwr/XyxF6bHqWRtHkwROGkrl+OZxWUU0BULW6nqDRiba1u9EwsX0sm zzrdqGGNJFoOFTaVFwXSZLnZRhxyXSU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1643620681; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=CTINFAIyRFIsN62/dIt8GWxn0lfVv70ko5fAEYoFwqs=; b=kjpBgj39hyyyXt+A+VZlh9E3x2nIDIjw5vmhafflQOOlbMqwkk/zIjENEXgJuLd2OPkMwU 9tgaE7mtIC05K+DA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 7939713B24; Mon, 31 Jan 2022 09:18:01 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 9s5LHEmp92FjfwAAMHmgww (envelope-from ); Mon, 31 Jan 2022 09:18:01 +0000 Message-ID: Date: Mon, 31 Jan 2022 10:18:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH v1 1/4] fbtft: Unorphan the driver Content-Language: en-US To: Javier Martinez Canillas , Andy Shevchenko Cc: Andy Shevchenko , linux-fbdev@vger.kernel.org, Michael Hennerich , Greg Kroah-Hartman , Helge Deller , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Phillip Potter , Carlis , Lee Jones , Heiner Kallweit References: <20220125202118.63362-1-andriy.shevchenko@linux.intel.com> <20220125202118.63362-2-andriy.shevchenko@linux.intel.com> <6e74d4cc-655a-e38e-0856-a59e4e6deb36@redhat.com> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------dzYI56NUgYzLE33VrTaOjDhC" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------dzYI56NUgYzLE33VrTaOjDhC Content-Type: multipart/mixed; boundary="------------I1jdNQleT0p3ryYGhUA7UeEN"; protected-headers="v1" From: Thomas Zimmermann To: Javier Martinez Canillas , Andy Shevchenko Cc: Andy Shevchenko , linux-fbdev@vger.kernel.org, Michael Hennerich , Greg Kroah-Hartman , Helge Deller , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Phillip Potter , Carlis , Lee Jones , Heiner Kallweit Message-ID: Subject: Re: [PATCH v1 1/4] fbtft: Unorphan the driver References: <20220125202118.63362-1-andriy.shevchenko@linux.intel.com> <20220125202118.63362-2-andriy.shevchenko@linux.intel.com> <6e74d4cc-655a-e38e-0856-a59e4e6deb36@redhat.com> In-Reply-To: --------------I1jdNQleT0p3ryYGhUA7UeEN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMzEuMDEuMjIgdW0gMDk6Mjkgc2NocmllYiBKYXZpZXIgTWFydGluZXogQ2Fu aWxsYXM6DQo+IE9uIDEvMjYvMjIgMTU6MTUsIEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyB3 cm90ZToNCj4+IE9uIDEvMjYvMjIgMTU6MTAsIEFuZHkgU2hldmNoZW5rbyB3cm90ZToNCj4+ PiBPbiBXZWQsIEphbiAyNiwgMjAyMiBhdCAwNDowODozMlBNICswMjAwLCBBbmR5IFNoZXZj aGVua28gd3JvdGU6DQo+Pj4+IE9uIFdlZCwgSmFuIDI2LCAyMDIyIGF0IDAyOjQ2OjA4UE0g KzAxMDAsIEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyB3cm90ZToNCj4+Pj4+IE9uIDEvMjYv MjIgMTQ6MTIsIEFuZHkgU2hldmNoZW5rbyB3cm90ZToNCj4+Pg0KPj4+IC4uLg0KPj4+DQo+ Pj4+PiBJJ3ZlIGp1c3QgYm91Z2h0IGEgU1NEMTMwNiAoSTJDKSBiYXNlZCBvbmUgYW5kIHdp bGwgYXR0ZW1wdCB0byB3cml0ZSBhIERSTQ0KPj4+Pj4gZHJpdmVyIHVzaW5nIGRyaXZlcnMv c3RhZ2luZy9mYnRmdC9mYl9zc2QxMzA2LmMgYXMgYSByZWZlcmVuY2UuDQo+Pj4+DQo+Pj4+ IFlvdSBzaG91bGQgdGFrZSBzc2QxMzA3ZmIuYyBpbnN0ZWFkLiBBbmQgYmFzaWNhbGx5IGNy ZWF0ZSBhIE1JUEkgYmFzZWQgZHJpdmVyDQo+Pj4+IGZvciBJMkMuIFRoZW4gd2Ugd29uJ3Qg Z28gc2FtZSByb2FkIGFnYWluIGZvciBvdGhlciBzaW1pbGFyIGRldmljZXMuDQo+Pj4NCj4+ PiBGb3IgdGhlIHJlY29yZCBpdCBzdXBwb3J0cyB5b3VyIGRldmljZToNCj4+Pg0KPj4+IHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzc2QxMzA3ZmJfaTJjX2lkW10gPSB7 DQo+Pj4geyAic3NkMTMwNWZiIiwgMCB9LA0KPj4+IHsgInNzZDEzMDZmYiIsIDAgfSwNCj4+ PiB7ICJzc2QxMzA3ZmIiLCAwIH0sDQo+Pj4geyAic3NkMTMwOWZiIiwgMCB9LA0KPj4+DQo+ Pj4NCj4+DQo+PiBUaGFua3MgYSBsb3QgZm9yIHRoZSBwb2ludGVyLiBJIHdhcyBvbmx5IGxv b2tpbmcgYXQgZHJpdmVycy9zdGFnaW5nDQo+PiBhbmQgZGlkbid0IGNoZWNrIGRyaXZlcnMv dmlkZW8uIEknbGwgdHJ5IHRvIGNvbnZlcnQgdGhhdCBvbmUgdGhlbg0KPj4gb25jZSBJIGdl dCB0aGUgZGlzcGxheS4NCj4+DQo+IA0KPiBJIGdvdCBzb21lIHRpbWUgdGhpcyB3ZWVrZW5k IGFuZCB3YXMgYWJsZSB0byBwb3J0IHRoZSBzc2QxMzA2IGZiZGV2IGRyaXZlcg0KPiB0byBE Uk0gWzBdLiBJJ20gbm90IHRoYXQgZmFtaWxpYXIgd2l0aCB0aGUgc2ltcGxlIGRpc3BsYXkg cGlwZSBoZWxwZXJzLCBzbw0KPiB0aGVyZSBtYXkgYmUgc29tZSB3cm9uZyB0aGluZ3MgdGhl cmUuIEJ1dCBpdCBkb2VzIHdvcmsgYW5kIGFsbCB0aGUgZmJ0ZXN0cw0KPiBmcm9tIGh0dHBz Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dlZXJ0L2ZidGVz dC5naXQgcGFzcy4NCg0KQXdlc29tZSENCg0KPiANCj4gVGhlcmUgYXJlIHNvbWUgaGFja3Mg aW4gdGhlIGRyaXZlciB0aG91Z2guIEZvciBleGFtcGxlIGl0IGV4cG9zZXMgYW4gWFJHQjg4 ODgNCj4gZm9ybWF0IGV2ZW4gdGhvdWdodCB0aGUgT0xFRCBkaXNwbGF5IGlzIG1vbm9jaHJv bWF0aWMgYW5kIGhhcyAxIGJpdCBwZXIgcGl4ZWwuDQo+IA0KPiBUaGUgZHJpdmVyIHRoZW4g Z29lcyBhbmQgY29udmVydHMgdGhlIFhSR0I4ODg4IHBpeGVscyBmaXJzdCB0byBncmF5c2Nh bGUgYW5kDQo+IHRoZW4gdG8gcmV2ZXJzZSBtb25vLiBJIHRvb2sgdGhhdCBpZGVhIGZyb20g dGhlIHJlcGFwZXIgZHJpdmVyIGJ1dCB0aGF0IGdpdmVzDQo+IHVzIHRoZSBtdWx0aXBsZSBj b3BpZXMgdGhhdCBHZWVydCB3YXMgY29tcGxhaW5pbmcgYWJvdXQuDQoNClRoaXMgcmVxdWly ZXMgdG8gdXBkYXRlIHRoZSBjb25zb2xlIGNvZGUgZm9yIDEtYml0IEJXIG91dHB1dC4gVGhl IGZiY29uIA0Kc2lkZSBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgQUZBSUsuIERSTSdzIGZiZGV2 IG5lZWRzIGEgZmV3IG1vcmUgYnJhbmNoZXMgDQphbmQgc29tZXRoaW5nIGxpa2UgYSBEUk1f Rk9STUFUX0MxIGZvdXJjYy4gVGhlIFhSR0I4ODg4IGlzIHJlYWxseSBhIA0KdXNlcnNwYWNl IHJlcXVpcmVtZW50IHRoYXQgaXMgaW1wb3NlZCBieSBtb2Rlcm4gZGVza3RvcHMuIElmIERS TSdzIA0KY29uc29sZSBoYXMgYmVlbiB1cGRhdGVkLCB5b3UgY291bGQgbGVhdmUgaXQgb3V0 IGVudGlyZWx5Lg0KDQpJIGNvdWxkIGltYWdpbmUgdGhhdCBzb21lIHNpbXBsZSB1c2Vyc3Bh Y2UsIHN1Y2ggYXMgV2VzdG9uLCBjb21lcyB3aXRoIA0Kc3VwcG9ydCBmb3IgcGFsZXR0ZSBm b3JtYXRzIGFuZCBCVy4gT3IgdGhlcmUgY291bGQgYmUgYW4gZW50aXJlbHkgDQpzZXBhcmF0 ZSBwcm9ncmFtIHRoYXQgcHV0cyBncmFwaGljcyBvbnRvIHRoZXNlIGRpc3BsYXlzLg0KDQpC ZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+IA0KPiBBbm90aGVyIGhhY2sgaXMgdGhhdCBJIGFt IGp1c3QgaGFyZGNvZGluZyB0aGUge3dpZHRoLCBoZWlnaHR9X21tLCBidXQgSSBkb24ndA0K PiBrbm93IHdoYXQgRFBJIGNvdWxkIGJlIHVzZWQgZm9yIHRoZXNlIHBhbmVscyBub3IgaG93 IEkgY291bGQgY2FsY3VsYXRlIHRoZSBtbS4NCj4gDQo+IEJlc3QgcmVnYXJkcywNCj4gSmF2 aWVyDQo+IA0KPiBbMF06DQo+ICBGcm9tIDVlYzRiNDY4YjY2MDIyZDRjNDhhZTZiZWM4YTY4 OTI2YTAxYTY3ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQo+IEZyb206IEphdmllciBN YXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRoYXQuY29tPg0KPiBEYXRlOiBTdW4sIDMw IEphbiAyMDIyIDEyOjE2OjM0ICswMTAwDQo+IFN1YmplY3Q6IFtSRkNdIGRybS90aW55OiBB ZGQgZHJpdmVyIGZvciBTb2xvbW9uIFNTRDEzMFggT0xFRCBkaXNwbGF5cw0KPiANCj4gQWRk IGEgRFJNIGRyaXZlciBmb3IgU1NEMTMwNSwgU1NEMTMwNiwgU1NEMTMwNyBhbmQgU1NEMTMw OSBTb2xvbW9uIE9MRUQNCj4gY29udHJvbGxlcnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1lZCB2 aWEgYW4gSTJDIGludGVyZmFjZS4gVGhpcyBpcyBhIHBvcnQNCj4gb2YgdGhlIHNzZDEzMDdm YiBkcml2ZXIgdGhhdCBhbHJlYWR5IHN1cHBvcnRzIHRoZXNlIGRldmljZXMuDQo+IA0KPiBB IERldmljZSBUcmVlIGJpbmRpbmcgaXMgbm90IGFkZGVkIGJlY2F1c2UgdGhlIERSTSBkcml2 ZXIgaXMgY29tcGF0aWJsZQ0KPiB3aXRoIHRoZSBleGlzdGluZyBiaW5kaW5nIGZvciB0aGUg c3NkMTMwN2ZiIGRyaXZlci4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEphdmllciBNYXJ0aW5l eiBDYW5pbGxhcyA8amF2aWVybUByZWRoYXQuY29tPg0KPiAtLS0NCj4gICBNQUlOVEFJTkVS UyAgICAgICAgICAgICAgICAgICAgfCAgIDcgKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS90aW55 L0tjb25maWcgICB8ICAxMiArDQo+ICAgZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUg IHwgICAxICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vdGlueS9zc2QxMzB4LmMgfCA5NDQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA5 NjQgaW5zZXJ0aW9ucygrKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vdGlueS9zc2QxMzB4LmMNCj4gDQo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01B SU5UQUlORVJTDQo+IGluZGV4IGQwM2FkOGRhMWYzNi4uODczMzQ2NzZjZTA3IDEwMDY0NA0K PiAtLS0gYS9NQUlOVEFJTkVSUw0KPiArKysgYi9NQUlOVEFJTkVSUw0KPiBAQCAtNjEwMiw2 ICs2MTAyLDEzIEBAIFQ6CWdpdCBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9kcm0v ZHJtLW1pc2MNCj4gICBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlz cGxheS9yZXBhcGVyLnR4dA0KPiAgIEY6CWRyaXZlcnMvZ3B1L2RybS90aW55L3JlcGFwZXIu Yw0KPiAgIA0KPiArRFJNIERSSVZFUiBGT1IgU09MT01PTiBTU0QxMzBYIERJU1BMQVlTDQo+ ICtNOglKYXZpZXIgTWFydGluZXogQ2FuaWxsYXMgPGphdmllcm1AcmVkaGF0LmNvbT4NCj4g K1M6CU1haW50YWluZWQNCj4gK1Q6CWdpdCBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9y Zy9kcm0vZHJtLW1pc2MNCj4gK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kaXNwbGF5L3NvbG9tb24sc3NkMTMwN2ZiLnlhbWwNCj4gK0Y6CWRyaXZlcnMvZ3B1L2Ry bS90aW55L3NzZDEzMHguYw0KPiArDQo+ICAgRFJNIERSSVZFUiBGT1IgUUVNVSdTIENJUlJV UyBERVZJQ0UNCj4gICBNOglEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPg0KPiAg IE06CUdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L0tj b25maWcNCj4gaW5kZXggNzEyZTAwMDRlOTZlLi4zNThjZWI3MzU0ZjUgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3RpbnkvS2NvbmZpZw0KPiBAQCAtMTU3LDYgKzE1NywxOCBAQCBjb25maWcgVElOWURS TV9SRVBBUEVSDQo+ICAgDQo+ICAgCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdp bGwgYmUgY2FsbGVkIHJlcGFwZXIuDQo+ICAgDQo+ICtjb25maWcgVElOWURSTV9TU0QxMzBY DQo+ICsJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBTb2xvbW9uIFNTRDEzMFggT0xFRCBk aXNwbGF5cyINCj4gKwlkZXBlbmRzIG9uIERSTSAmJiBPRiAmJiBJMkMNCj4gKwlzZWxlY3Qg RFJNX0tNU19IRUxQRVINCj4gKwlzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVINCj4gKwlz ZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQ0KPiArCWhlbHANCj4gKwkgIERSTSBkcml2 ZXIgZm9yIHRoZSBTU0QxMzA1LCBTU0QxMzA2LCBTU0QxMzA3IGFuZCBTU0QxMzA5IFNvbG9t b24NCj4gKwkgIE9MRUQgY29udHJvbGxlcnMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1lZCB2aWEg YW4gSTJDIGludGVyZmFjZS4NCj4gKw0KPiArCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9k dWxlIHdpbGwgYmUgY2FsbGVkIHNzZDEzMHguDQo+ICsNCj4gICBjb25maWcgVElOWURSTV9T VDc1ODYNCj4gICAJdHJpc3RhdGUgIkRSTSBzdXBwb3J0IGZvciBTaXRyb25peCBTVDc1ODYg ZGlzcGxheSBwYW5lbHMiDQo+ICAgCWRlcGVuZHMgb24gRFJNICYmIFNQSQ0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v dGlueS9NYWtlZmlsZQ0KPiBpbmRleCA1ZDU1MDVkNDBlN2IuLjkzYTFkNzAxNTVmMCAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUNCj4gQEAgLTEyLDUgKzEyLDYgQEAgb2JqLSQo Q09ORklHX1RJTllEUk1fSUxJOTM0MSkJCSs9IGlsaTkzNDEubw0KPiAgIG9iai0kKENPTkZJ R19USU5ZRFJNX0lMSTk0ODYpCQkrPSBpbGk5NDg2Lm8NCj4gICBvYmotJChDT05GSUdfVElO WURSTV9NSTAyODNRVCkJCSs9IG1pMDI4M3F0Lm8NCj4gICBvYmotJChDT05GSUdfVElOWURS TV9SRVBBUEVSKQkJKz0gcmVwYXBlci5vDQo+ICtvYmotJChDT05GSUdfVElOWURSTV9TU0Qx MzBYKQkJKz0gc3NkMTMweC5vDQo+ICAgb2JqLSQoQ09ORklHX1RJTllEUk1fU1Q3NTg2KQkJ Kz0gc3Q3NTg2Lm8NCj4gICBvYmotJChDT05GSUdfVElOWURSTV9TVDc3MzVSKQkJKz0gc3Q3 NzM1ci5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9zc2QxMzB4LmMg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueS9zc2QxMzB4LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi44OGQ4OGNhZWIzN2QNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9zc2QxMzB4LmMNCj4gQEAgLTAsMCAr MSw5NDQgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkN Cj4gKy8qDQo+ICsgKiBEUk0gZHJpdmVyIGZvciBTb2xvbW9uIFNTRDEzMFggT0xFRCBkaXNw bGF5cw0KPiArICoNCj4gKyAqIENvcHlyaWdodCAyMDIyIFJlZCBIYXQgSW5jLg0KPiArICoN Cj4gKyAqIEJhc2VkIG9uIGRyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMNCj4gKyAq IENvcHlyaWdodCAyMDEyIEZyZWUgRWxlY3Ryb25zDQo+ICsgKg0KPiArICovDQo+ICsNCj4g KyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9pMmMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9wcm9wZXJ0eS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3B3bS5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPg0KPiArDQo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kYW1h Z2VfaGVscGVyLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4NCj4gKyNpbmNsdWRl IDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hl bHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZm9ybWF0X2hlbHBlci5oPg0KPiArI2lu Y2x1ZGUgPGRybS9kcm1fZ2VtX2F0b21pY19oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dl bV9zaG1lbV9oZWxwZXIuaD4NCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4NCj4g KyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9yZWN0 Lmg+DQo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4NCj4gKyNpbmNsdWRl IDxkcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+DQo+ICsNCj4gKyNkZWZpbmUgRFJJVkVS X05BTUUJInNzZDEzMHgiDQo+ICsjZGVmaW5lIERSSVZFUl9ERVNDCSJEUk0gZHJpdmVyIGZv ciBTb2xvbW9uIFNTRDEzMFggT0xFRCBkaXNwbGF5cyINCj4gKyNkZWZpbmUgRFJJVkVSX0RB VEUJIjIwMjIwMTMwIg0KPiArI2RlZmluZSBEUklWRVJfTUFKT1IJMQ0KPiArI2RlZmluZSBE UklWRVJfTUlOT1IJMA0KPiArDQo+ICsjZGVmaW5lIFNTRDEzMFhfREFUQQkJCQkweDQwDQo+ ICsjZGVmaW5lIFNTRDEzMFhfQ09NTUFORAkJCQkweDgwDQo+ICsNCj4gKyNkZWZpbmUgU1NE MTMwWF9TRVRfQUREUkVTU19NT0RFCQkweDIwDQo+ICsjZGVmaW5lIFNTRDEzMFhfU0VUX0FE RFJFU1NfTU9ERV9IT1JJWk9OVEFMCSgweDAwKQ0KPiArI2RlZmluZSBTU0QxMzBYX1NFVF9B RERSRVNTX01PREVfVkVSVElDQUwJKDB4MDEpDQo+ICsjZGVmaW5lIFNTRDEzMFhfU0VUX0FE RFJFU1NfTU9ERV9QQUdFCQkoMHgwMikNCj4gKyNkZWZpbmUgU1NEMTMwWF9TRVRfQ09MX1JB TkdFCQkJMHgyMQ0KPiArI2RlZmluZSBTU0QxMzBYX1NFVF9QQUdFX1JBTkdFCQkJMHgyMg0K PiArI2RlZmluZSBTU0QxMzBYX0NPTlRSQVNUCQkJMHg4MQ0KPiArI2RlZmluZSBTU0QxMzBY X1NFVF9MT09LVVBfVEFCTEUJCTB4OTENCj4gKyNkZWZpbmUgU1NEMTMwWF9DSEFSR0VfUFVN UAkJCTB4OGQNCj4gKyNkZWZpbmUgU1NEMTMwWF9TRUdfUkVNQVBfT04JCQkweGExDQo+ICsj ZGVmaW5lIFNTRDEzMFhfRElTUExBWV9PRkYJCQkweGFlDQo+ICsjZGVmaW5lIFNTRDEzMFhf U0VUX01VTFRJUExFWF9SQVRJTwkJMHhhOA0KPiArI2RlZmluZSBTU0QxMzBYX0RJU1BMQVlf T04JCQkweGFmDQo+ICsjZGVmaW5lIFNTRDEzMFhfU1RBUlRfUEFHRV9BRERSRVNTCQkweGIw DQo+ICsjZGVmaW5lIFNTRDEzMFhfU0VUX0RJU1BMQVlfT0ZGU0VUCQkweGQzDQo+ICsjZGVm aW5lIFNTRDEzMFhfU0VUX0NMT0NLX0ZSRVEJCQkweGQ1DQo+ICsjZGVmaW5lIFNTRDEzMFhf U0VUX0FSRUFfQ09MT1JfTU9ERQkJMHhkOA0KPiArI2RlZmluZSBTU0QxMzBYX1NFVF9QUkVD SEFSR0VfUEVSSU9ECQkweGQ5DQo+ICsjZGVmaW5lIFNTRDEzMFhfU0VUX0NPTV9QSU5TX0NP TkZJRwkJMHhkYQ0KPiArI2RlZmluZSBTU0QxMzBYX1NFVF9WQ09NSAkJCTB4ZGINCj4gKw0K PiArI2RlZmluZSBNQVhfQ09OVFJBU1QgMjU1DQo+ICsNCj4gK3N0cnVjdCBzc2QxMzB4X2Rl dmljZWluZm8gew0KPiArCXUzMiBkZWZhdWx0X3Zjb21oOw0KPiArCXUzMiBkZWZhdWx0X2Rj bGtfZGl2Ow0KPiArCXUzMiBkZWZhdWx0X2RjbGtfZnJxOw0KPiArCWludCBuZWVkX3B3bTsN Cj4gKwlpbnQgbmVlZF9jaGFyZ2VwdW1wOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHNzZDEz MHhfZGV2aWNlIHsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSBkcm07DQo+ICsJc3RydWN0IGRy bV9zaW1wbGVfZGlzcGxheV9waXBlIHBpcGU7DQo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgbW9kZTsNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+ICsJc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudDsNCj4gKw0KPiArCWNvbnN0IHN0cnVjdCBzc2QxMzB4 X2RldmljZWluZm8gKmRldmljZV9pbmZvOw0KPiArDQo+ICsJdW5zaWduZWQgYXJlYV9jb2xv cl9lbmFibGUgOiAxOw0KPiArCXVuc2lnbmVkIGNvbV9pbnZkaXIgOiAxOw0KPiArCXVuc2ln bmVkIGNvbV9scnJlbWFwIDogMTsNCj4gKwl1bnNpZ25lZCBjb21fc2VxIDogMTsNCj4gKwl1 bnNpZ25lZCBsb29rdXBfdGFibGVfc2V0IDogMTsNCj4gKwl1bnNpZ25lZCBsb3dfcG93ZXIg OiAxOw0KPiArCXVuc2lnbmVkIHNlZ19yZW1hcCA6IDE7DQo+ICsJdTMyIGNvbV9vZmZzZXQ7 DQo+ICsJdTMyIGNvbnRyYXN0Ow0KPiArCXUzMiBkY2xrX2RpdjsNCj4gKwl1MzIgZGNsa19m cnE7DQo+ICsJdTMyIGhlaWdodDsNCj4gKwl1OCBsb29rdXBfdGFibGVbNF07DQo+ICsJdTMy IHBhZ2Vfb2Zmc2V0Ow0KPiArCXUzMiBjb2xfb2Zmc2V0Ow0KPiArCXUzMiBwcmVjaGFyZ2Vw MTsNCj4gKwl1MzIgcHJlY2hhcmdlcDI7DQo+ICsNCj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqYmxfZGV2Ow0KPiArCXN0cnVjdCBwd21fZGV2aWNlICpwd207DQo+ICsJc3RydWN0 IGdwaW9fZGVzYyAqcmVzZXQ7DQo+ICsJc3RydWN0IHJlZ3VsYXRvciAqdmJhdF9yZWc7DQo+ ICsJdTMyIHZjb21oOw0KPiArCXUzMiB3aWR0aDsNCj4gKwkvKiBDYWNoZWQgYWRkcmVzcyBy YW5nZXMgKi8NCj4gKwl1OCBjb2xfc3RhcnQ7DQo+ICsJdTggY29sX2VuZDsNCj4gKwl1OCBw YWdlX3N0YXJ0Ow0KPiArCXU4IHBhZ2VfZW5kOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHNz ZDEzMHhfYXJyYXkgew0KPiArCXU4CXR5cGU7DQo+ICsJdTgJZGF0YVtdOw0KPiArfTsNCj4g Kw0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKmRybV90b19zc2Qx MzB4KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pDQo+ICt7DQo+ICsJcmV0dXJuIGNvbnRhaW5l cl9vZihkcm0sIHN0cnVjdCBzc2QxMzB4X2RldmljZSwgZHJtKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHN0cnVjdCBzc2QxMzB4X2FycmF5ICpzc2QxMzB4X2FsbG9jX2FycmF5KHUzMiBs ZW4sIHU4IHR5cGUpDQo+ICt7DQo+ICsJc3RydWN0IHNzZDEzMHhfYXJyYXkgKmFycmF5Ow0K PiArDQo+ICsJYXJyYXkgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc3NkMTMweF9hcnJheSkg KyBsZW4sIEdGUF9LRVJORUwpOw0KPiArCWlmICghYXJyYXkpDQo+ICsJCXJldHVybiBOVUxM Ow0KPiArDQo+ICsJYXJyYXktPnR5cGUgPSB0eXBlOw0KPiArDQo+ICsJcmV0dXJuIGFycmF5 Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHNzZDEzMHhfd3JpdGVfYXJyYXkoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qgc3NkMTMweF9hcnJh eSAqYXJyYXksIHUzMiBsZW4pDQo+ICt7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWxlbiAr PSBzaXplb2Yoc3RydWN0IHNzZDEzMHhfYXJyYXkpOw0KPiArDQo+ICsJcmV0ID0gaTJjX21h c3Rlcl9zZW5kKGNsaWVudCwgKHU4ICopYXJyYXksIGxlbik7DQo+ICsJaWYgKHJldCAhPSBs ZW4pIHsNCj4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJDb3VsZG4ndCBzZW5kIEkyQyBj b21tYW5kLlxuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJu IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgaW50IHNzZDEzMHhfd3JpdGVfY21k KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IGNtZCkNCj4gK3sNCj4gKwlzdHJ1Y3Qg c3NkMTMweF9hcnJheSAqYXJyYXk7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWFycmF5ID0g c3NkMTMweF9hbGxvY19hcnJheSgxLCBTU0QxMzBYX0NPTU1BTkQpOw0KPiArCWlmICghYXJy YXkpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJYXJyYXktPmRhdGFbMF0gPSBj bWQ7DQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2FycmF5KGNsaWVudCwgYXJyYXks IDEpOw0KPiArCWtmcmVlKGFycmF5KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgc3NkMTMweF9zZXRfY29sX3JhbmdlKHN0cnVjdCBzc2QxMzB4 X2RldmljZSAqc3NkMTMweCwNCj4gKwkJCQkgdTggY29sX3N0YXJ0LCB1OCBjb2xzKQ0KPiAr ew0KPiArCXU4IGNvbF9lbmQgPSBjb2xfc3RhcnQgKyBjb2xzIC0gMTsNCj4gKwlpbnQgcmV0 Ow0KPiArDQo+ICsJaWYgKGNvbF9zdGFydCA9PSBzc2QxMzB4LT5jb2xfc3RhcnQgJiYgY29s X2VuZCA9PSBzc2QxMzB4LT5jb2xfZW5kKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXJl dCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgU1NEMTMwWF9TRVRfQ09M X1JBTkdFKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiAr CXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgY29sX3N0YXJ0KTsN Cj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IHNz ZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgY29sX2VuZCk7DQo+ICsJaWYgKHJl dCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlzc2QxMzB4LT5jb2xfc3RhcnQg PSBjb2xfc3RhcnQ7DQo+ICsJc3NkMTMweC0+Y29sX2VuZCA9IGNvbF9lbmQ7DQo+ICsJcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgc3NkMTMweF9zZXRfcGFnZV9yYW5n ZShzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHgsDQo+ICsJCQkJICB1OCBwYWdlX3N0 YXJ0LCB1OCBwYWdlcykNCj4gK3sNCj4gKwl1OCBwYWdlX2VuZCA9IHBhZ2Vfc3RhcnQgKyBw YWdlcyAtIDE7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmIChwYWdlX3N0YXJ0ID09IHNz ZDEzMHgtPnBhZ2Vfc3RhcnQgJiYgcGFnZV9lbmQgPT0gc3NkMTMweC0+cGFnZV9lbmQpDQo+ ICsJCXJldHVybiAwOw0KPiArDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMw eC0+Y2xpZW50LCBTU0QxMzBYX1NFVF9QQUdFX1JBTkdFKTsNCj4gKwlpZiAocmV0IDwgMCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNz ZDEzMHgtPmNsaWVudCwgcGFnZV9zdGFydCk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJl dHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4LT5j bGllbnQsIHBhZ2VfZW5kKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsN Cj4gKw0KPiArCXNzZDEzMHgtPnBhZ2Vfc3RhcnQgPSBwYWdlX3N0YXJ0Ow0KPiArCXNzZDEz MHgtPnBhZ2VfZW5kID0gcGFnZV9lbmQ7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgc3NkMTMweF91cGRhdGVfZGlzcGxheShzdHJ1Y3Qgc3NkMTMweF9kZXZp Y2UgKnNzZDEzMHgsIHU4ICpidWYsDQo+ICsJCQkJICB1MzIgd2lkdGgsIHUzMiBoZWlnaHQp DQo+ICt7DQo+ICsJc3RydWN0IHNzZDEzMHhfYXJyYXkgKmFycmF5Ow0KPiArCXVuc2lnbmVk IGludCBsaW5lX2xlbmd0aCA9IERJVl9ST1VORF9VUCh3aWR0aCwgOCk7DQo+ICsJdW5zaWdu ZWQgaW50IHBhZ2VzID0gRElWX1JPVU5EX1VQKGhlaWdodCwgOCk7DQo+ICsJdTMyIGFycmF5 X2lkeCA9IDA7DQo+ICsJaW50IHJldCwgaSwgaiwgazsNCj4gKw0KPiArCWFycmF5ID0gc3Nk MTMweF9hbGxvY19hcnJheSh3aWR0aCAqIHBhZ2VzLCBTU0QxMzBYX0RBVEEpOw0KPiArCWlm ICghYXJyYXkpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBU aGUgc2NyZWVuIGlzIGRpdmlkZWQgaW4gcGFnZXMsIGVhY2ggaGF2aW5nIGEgaGVpZ2h0IG9m IDgNCj4gKwkgKiBwaXhlbHMsIGFuZCB0aGUgd2lkdGggb2YgdGhlIHNjcmVlbi4gV2hlbiBz ZW5kaW5nIGEgYnl0ZSBvZg0KPiArCSAqIGRhdGEgdG8gdGhlIGNvbnRyb2xsZXIsIGl0IGdp dmVzIHRoZSA4IGJpdHMgZm9yIHRoZSBjdXJyZW50DQo+ICsJICogY29sdW1uLiBJLmUsIHRo ZSBmaXJzdCBieXRlIGFyZSB0aGUgOCBiaXRzIG9mIHRoZSBmaXJzdA0KPiArCSAqIGNvbHVt biwgdGhlbiB0aGUgOCBiaXRzIGZvciB0aGUgc2Vjb25kIGNvbHVtbiwgZXRjLg0KPiArCSAq DQo+ICsJICoNCj4gKwkgKiBSZXByZXNlbnRhdGlvbiBvZiB0aGUgc2NyZWVuLCBhc3N1bWlu ZyBpdCBpcyA1IGJpdHMNCj4gKwkgKiB3aWRlLiBFYWNoIGxldHRlci1udW1iZXIgY29tYmlu YXRpb24gaXMgYSBiaXQgdGhhdCBjb250cm9scw0KPiArCSAqIG9uZSBwaXhlbC4NCj4gKwkg Kg0KPiArCSAqIEEwIEExIEEyIEEzIEE0DQo+ICsJICogQjAgQjEgQjIgQjMgQjQNCj4gKwkg KiBDMCBDMSBDMiBDMyBDNA0KPiArCSAqIEQwIEQxIEQyIEQzIEQ0DQo+ICsJICogRTAgRTEg RTIgRTMgRTQNCj4gKwkgKiBGMCBGMSBGMiBGMyBGNA0KPiArCSAqIEcwIEcxIEcyIEczIEc0 DQo+ICsJICogSDAgSDEgSDIgSDMgSDQNCj4gKwkgKg0KPiArCSAqIElmIHlvdSB3YW50IHRv IHVwZGF0ZSB0aGlzIHNjcmVlbiwgeW91IG5lZWQgdG8gc2VuZCA1IGJ5dGVzOg0KPiArCSAq ICAoMSkgQTAgQjAgQzAgRDAgRTAgRjAgRzAgSDANCj4gKwkgKiAgKDIpIEExIEIxIEMxIEQx IEUxIEYxIEcxIEgxDQo+ICsJICogICgzKSBBMiBCMiBDMiBEMiBFMiBGMiBHMiBIMg0KPiAr CSAqICAoNCkgQTMgQjMgQzMgRDMgRTMgRjMgRzMgSDMNCj4gKwkgKiAgKDUpIEE0IEI0IEM0 IEQ0IEU0IEY0IEc0IEg0DQo+ICsJICovDQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3NldF9j b2xfcmFuZ2Uoc3NkMTMweCwgc3NkMTMweC0+Y29sX29mZnNldCwgd2lkdGgpOw0KPiArCWlm IChyZXQgPCAwKQ0KPiArCQlnb3RvIG91dF9mcmVlOw0KPiArDQo+ICsJcmV0ID0gc3NkMTMw eF9zZXRfcGFnZV9yYW5nZShzc2QxMzB4LCBzc2QxMzB4LT5wYWdlX29mZnNldCAvIDgsIHBh Z2VzKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZ290byBvdXRfZnJlZTsNCj4gKw0KPiAr CWZvciAoaSA9IDA7IGkgPCBwYWdlczsgaSsrKSB7DQo+ICsJCWludCBtID0gODsNCj4gKw0K PiArCQkvKiBMYXN0IHBhZ2UgbWF5IGJlIHBhcnRpYWwgKi8NCj4gKwkJaWYgKDggKiAoaSAr IDEpID4gc3NkMTMweC0+aGVpZ2h0KQ0KPiArCQkJbSA9IHNzZDEzMHgtPmhlaWdodCAlIDg7 DQo+ICsJCWZvciAoaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7DQo+ICsJCQl1OCBkYXRhID0g MDsNCj4gKw0KPiArCQkJZm9yIChrID0gMDsgayA8IG07IGsrKykgew0KPiArCQkJCXU4IGJ5 dGUgPSBidWZbKDggKiBpICsgaykgKiBsaW5lX2xlbmd0aCArDQo+ICsJCQkJCSAgICAgICBq IC8gOF07DQo+ICsJCQkJdTggYml0ID0gKGJ5dGUgPj4gKGogJSA4KSkgJiAxOw0KPiArDQo+ ICsJCQkJZGF0YSB8PSBiaXQgPDwgazsNCj4gKwkJCX0NCj4gKwkJCWFycmF5LT5kYXRhW2Fy cmF5X2lkeCsrXSA9IGRhdGE7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBzc2Qx MzB4X3dyaXRlX2FycmF5KHNzZDEzMHgtPmNsaWVudCwgYXJyYXksIHdpZHRoICogcGFnZXMp Ow0KPiArDQo+ICtvdXRfZnJlZToNCj4gKwlrZnJlZShhcnJheSk7DQo+ICsJcmV0dXJuIHJl dDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgc3NkMTMweF9ncmF5OF90b19tb25vX3Jl dmVyc2VkKHU4ICpidWYsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCkNCj4gK3sNCj4gKwl1OCAq Z3JheTggPSBidWYsICptb25vID0gYnVmOw0KPiArCWludCB5LCB4YiwgaTsNCj4gKw0KPiAr CWZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykNCj4gKwkJZm9yICh4YiA9IDA7IHhiIDwg d2lkdGggLyA4OyB4YisrKSB7DQo+ICsJCQl1OCBieXRlID0gMHgwMDsNCj4gKw0KPiArCQkJ Zm9yIChpID0gMDsgaSA8IDg7IGkrKykgew0KPiArCQkJCWludCB4ID0geGIgKiA4ICsgaTsN Cj4gKw0KPiArCQkJCWJ5dGUgPj49IDE7DQo+ICsJCQkJaWYgKGdyYXk4W3kgKiB3aWR0aCAr IHhdID4+IDcpDQo+ICsJCQkJCWJ5dGUgfD0gQklUKDcpOw0KPiArCQkJfQ0KPiArCQkJKm1v bm8rKyA9IGJ5dGU7DQo+ICsJCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzc2QxMzB4 X2ZiX2JsaXRfcmVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgY29uc3Qgc3RydWN0 IGRtYV9idWZfbWFwICptYXAsDQo+ICsJCQkJc3RydWN0IGRybV9yZWN0ICpyZWN0KQ0KPiAr ew0KPiArCXN0cnVjdCBzc2QxMzB4X2RldmljZSAqc3NkMTMweCA9IGRybV90b19zc2QxMzB4 KGZiLT5kZXYpOw0KPiArCXZvaWQgKnZtYXAgPSBtYXAtPnZhZGRyOyAvKiBUT0RPOiBVc2Ug bWFwcGluZyBhYnN0cmFjdGlvbiBwcm9wZXJseSAqLw0KPiArCWludCBpZHgsIHJldCA9IDA7 DQo+ICsJdTggKmJ1ZiA9IE5VTEw7DQo+ICsNCj4gKwlpZiAoIWRybV9kZXZfZW50ZXIoZmIt PmRldiwgJmlkeCkpDQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArDQo+ICsJYnVmID0ga21h bGxvY19hcnJheShmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIEdGUF9LRVJORUwpOw0KPiArCWlm ICghYnVmKSB7DQo+ICsJCXJldCA9IC1FTk9NRU07DQo+ICsJCWdvdG8gb3V0X2V4aXQ7DQo+ ICsJfQ0KPiArDQo+ICsJZHJtX2ZiX3hyZ2I4ODg4X3RvX2dyYXk4KGJ1ZiwgMCwgdm1hcCwg ZmIsIHJlY3QpOw0KPiArDQo+ICsJc3NkMTMweF9ncmF5OF90b19tb25vX3JldmVyc2VkKGJ1 ZiwgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsNCj4gKw0KPiArCXNzZDEzMHhfdXBkYXRlX2Rp c3BsYXkoc3NkMTMweCwgYnVmLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOw0KPiArDQo+ICsJ a2ZyZWUoYnVmKTsNCj4gK291dF9leGl0Og0KPiArCWRybV9kZXZfZXhpdChpZHgpOw0KPiAr DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgc3NkMTMweF9k aXNwbGF5X3BpcGVfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlw ZSwNCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0K PiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkNCj4g K3sNCj4gKwlzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBkcm1fdG9fc3NkMTMw eChwaXBlLT5jcnRjLmRldik7DQo+ICsJaW50IGlkeDsNCj4gKw0KPiArCWlmICghZHJtX2Rl dl9lbnRlcihwaXBlLT5jcnRjLmRldiwgJmlkeCkpDQo+ICsJCXJldHVybjsNCj4gKw0KPiAr CWJhY2tsaWdodF9lbmFibGUoc3NkMTMweC0+YmxfZGV2KTsNCj4gKw0KPiArCXNzZDEzMHhf d3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgU1NEMTMwWF9ESVNQTEFZX09OKTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgc3NkMTMweF9kaXNwbGF5X3BpcGVfZGlzYWJsZShzdHJ1 Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpDQo+ICt7DQo+ICsJc3RydWN0IHNz ZDEzMHhfZGV2aWNlICpzc2QxMzB4ID0gZHJtX3RvX3NzZDEzMHgocGlwZS0+Y3J0Yy5kZXYp Ow0KPiArDQo+ICsJc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50LCBTU0QxMzBY X0RJU1BMQVlfT0ZGKTsNCj4gKw0KPiArCWJhY2tsaWdodF9kaXNhYmxlKHNzZDEzMHgtPmJs X2Rldik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNzZDEzMHhfZGlzcGxheV9waXBl X3VwZGF0ZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsDQo+ICsJCQkJ CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBpcGUtPnBsYW5lLnN0YXRlOw0KPiAr CXN0cnVjdCBkcm1fc2hhZG93X3BsYW5lX3N0YXRlICpzaGFkb3dfcGxhbmVfc3RhdGUgPSB0 b19kcm1fc2hhZG93X3BsYW5lX3N0YXRlKHN0YXRlKTsNCj4gKwlzdHJ1Y3QgZHJtX3JlY3Qg cmVjdDsNCj4gKw0KPiArCWlmICghcGlwZS0+Y3J0Yy5zdGF0ZS0+YWN0aXZlKQ0KPiArCQly ZXR1cm47DQo+ICsNCj4gKwlpZiAoZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX21lcmdlZChv bGRfcGxhbmVfc3RhdGUsIHN0YXRlLCAmcmVjdCkpDQo+ICsJCXNzZDEzMHhfZmJfYmxpdF9y ZWN0KHN0YXRlLT5mYiwgJnNoYWRvd19wbGFuZV9zdGF0ZS0+ZGF0YVswXSwgJnJlY3QpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9w aXBlX2Z1bmNzIHNzZDEzMHhfcGlwZV9mdW5jcyA9IHsNCj4gKwkuZW5hYmxlID0gc3NkMTMw eF9kaXNwbGF5X3BpcGVfZW5hYmxlLA0KPiArCS5kaXNhYmxlID0gc3NkMTMweF9kaXNwbGF5 X3BpcGVfZGlzYWJsZSwNCj4gKwkudXBkYXRlID0gc3NkMTMweF9kaXNwbGF5X3BpcGVfdXBk YXRlLA0KPiArCURSTV9HRU1fU0lNUExFX0RJU1BMQVlfUElQRV9TSEFET1dfUExBTkVfRlVO Q1MsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IHNzZDEzMHhfY29ubmVjdG9yX2dldF9t b2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiArew0KPiArCXN0cnVj dCBzc2QxMzB4X2RldmljZSAqc3NkMTMweCA9IGRybV90b19zc2QxMzB4KGNvbm5lY3Rvci0+ ZGV2KTsNCj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsNCj4gKw0KPiArCW1v ZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoY29ubmVjdG9yLT5kZXYsICZzc2QxMzB4LT5tb2Rl KTsNCj4gKwlpZiAoIW1vZGUpIHsNCj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZHVwbGlj YXRlIG1vZGVcbiIpOw0KPiArCQlyZXR1cm4gMDsNCj4gKwl9DQo+ICsNCj4gKwljb25uZWN0 b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IG1vZGUtPndpZHRoX21tOw0KPiArCWNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsNCj4gKwlj b25uZWN0b3ItPmRpc3BsYXlfaW5mby5icGMgPSAzMjsNCj4gKw0KPiArCWRybV9tb2RlX3Nl dF9uYW1lKG1vZGUpOw0KPiArCW1vZGUtPnR5cGUgfD0gRFJNX01PREVfVFlQRV9QUkVGRVJS RUQ7DQo+ICsJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOw0KPiArDQo+ ICsJcmV0dXJuIDE7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3Mgc3NkMTMweF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0g ew0KPiArCS5nZXRfbW9kZXMgPSBzc2QxMzB4X2Nvbm5lY3Rvcl9nZXRfbW9kZXMsDQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3Mgc3Nk MTMweF9jb25uZWN0b3JfZnVuY3MgPSB7DQo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiArCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9i ZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPiArCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rv cl9jbGVhbnVwLA0KPiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz IHNzZDEzMHhfbW9kZV9jb25maWdfZnVuY3MgPSB7DQo+ICsJLmZiX2NyZWF0ZSA9IGRybV9n ZW1fZmJfY3JlYXRlX3dpdGhfZGlydHksDQo+ICsJLmF0b21pY19jaGVjayA9IGRybV9hdG9t aWNfaGVscGVyX2NoZWNrLA0KPiArCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29tbWl0LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHVpbnQzMl90IHNzZDEz MHhfZm9ybWF0c1tdID0gew0KPiArCURSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ICt9Ow0KPiAr DQo+ICtERUZJTkVfRFJNX0dFTV9GT1BTKHNzZDEzMHhfZm9wcyk7DQo+ICsNCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBzc2QxMzB4X2RybV9kcml2ZXIgPSB7DQo+ICsJ RFJNX0dFTV9TSE1FTV9EUklWRVJfT1BTLA0KPiArCS5uYW1lCQkJPSBEUklWRVJfTkFNRSwN Cj4gKwkuZGVzYwkJCT0gRFJJVkVSX0RFU0MsDQo+ICsJLmRhdGUJCQk9IERSSVZFUl9EQVRF LA0KPiArCS5tYWpvcgkJCT0gRFJJVkVSX01BSk9SLA0KPiArCS5taW5vcgkJCT0gRFJJVkVS X01JTk9SLA0KPiArCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfQVRPTUlDIHwgRFJJVkVS X0dFTSB8IERSSVZFUl9NT0RFU0VULA0KPiArCS5mb3BzCQkJPSAmc3NkMTMweF9mb3BzLA0K PiArfTsNCj4gKw0KPiArc3RhdGljIGludCBzc2QxMzB4X3B3bV9lbmFibGUoc3RydWN0IHNz ZDEzMHhfZGV2aWNlICpzc2QxMzB4KQ0KPiArew0KPiArCXN0cnVjdCBwd21fc3RhdGUgcHdt c3RhdGU7DQo+ICsNCj4gKwlzc2QxMzB4LT5wd20gPSBwd21fZ2V0KCZzc2QxMzB4LT5jbGll bnQtPmRldiwgTlVMTCk7DQo+ICsJaWYgKElTX0VSUihzc2QxMzB4LT5wd20pKSB7DQo+ICsJ CWRldl9lcnIoJnNzZDEzMHgtPmNsaWVudC0+ZGV2LCAiQ291bGQgbm90IGdldCBQV00gZnJv bSBkZXZpY2UgdHJlZSFcbiIpOw0KPiArCQlyZXR1cm4gUFRSX0VSUihzc2QxMzB4LT5wd20p Ow0KPiArCX0NCj4gKw0KPiArCXB3bV9pbml0X3N0YXRlKHNzZDEzMHgtPnB3bSwgJnB3bXN0 YXRlKTsNCj4gKwlwd21fc2V0X3JlbGF0aXZlX2R1dHlfY3ljbGUoJnB3bXN0YXRlLCA1MCwg MTAwKTsNCj4gKwlwd21fYXBwbHlfc3RhdGUoc3NkMTMweC0+cHdtLCAmcHdtc3RhdGUpOw0K PiArDQo+ICsJLyogRW5hYmxlIHRoZSBQV00gKi8NCj4gKwlwd21fZW5hYmxlKHNzZDEzMHgt PnB3bSk7DQo+ICsNCj4gKwlkZXZfZGJnKCZzc2QxMzB4LT5jbGllbnQtPmRldiwgIlVzaW5n IFBXTSVkIHdpdGggYSAlbGx1bnMgcGVyaW9kLlxuIiwNCj4gKwkJc3NkMTMweC0+cHdtLT5w d20sIHB3bV9nZXRfcGVyaW9kKHNzZDEzMHgtPnB3bSkpOw0KPiArDQo+ICsJcmV0dXJuIDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgc3NkMTMweF9pbml0KHN0cnVjdCBzc2QxMzB4 X2RldmljZSAqc3NkMTMweCkNCj4gK3sNCj4gKwl1MzIgcHJlY2hhcmdlLCBkY2xrLCBjb21f aW52ZGlyLCBjb21waW5zOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwkvKiBTZXQgaW5pdGlh bCBjb250cmFzdCAqLw0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNs aWVudCwgU1NEMTMwWF9DT05UUkFTVCk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVy biByZXQ7DQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4LT5jbGll bnQsIHNzZDEzMHgtPmNvbnRyYXN0KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJu IHJldDsNCj4gKw0KPiArCS8qIFNldCBzZWdtZW50IHJlLW1hcCAqLw0KPiArCWlmIChzc2Qx MzB4LT5zZWdfcmVtYXApIHsNCj4gKwkJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMw eC0+Y2xpZW50LCBTU0QxMzBYX1NFR19SRU1BUF9PTik7DQo+ICsJCWlmIChyZXQgPCAwKQ0K PiArCQkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBTZXQgQ09NIGRpcmVjdGlv biAqLw0KPiArCWNvbV9pbnZkaXIgPSAweGMwIHwgc3NkMTMweC0+Y29tX2ludmRpciA8PCAz Ow0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgIGNvbV9p bnZkaXIpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJ LyogU2V0IG11bHRpcGxleCByYXRpbyB2YWx1ZSAqLw0KPiArCXJldCA9IHNzZDEzMHhfd3Jp dGVfY21kKHNzZDEzMHgtPmNsaWVudCwgU1NEMTMwWF9TRVRfTVVMVElQTEVYX1JBVElPKTsN Cj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IHNz ZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgc3NkMTMweC0+aGVpZ2h0IC0gMSk7 DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBzZXQg ZGlzcGxheSBvZmZzZXQgdmFsdWUgKi8NCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChz c2QxMzB4LT5jbGllbnQsIFNTRDEzMFhfU0VUX0RJU1BMQVlfT0ZGU0VUKTsNCj4gKwlpZiAo cmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IHNzZDEzMHhfd3Jp dGVfY21kKHNzZDEzMHgtPmNsaWVudCwgc3NkMTMweC0+Y29tX29mZnNldCk7DQo+ICsJaWYg KHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBTZXQgY2xvY2sgZnJl cXVlbmN5ICovDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50 LCBTU0QxMzBYX1NFVF9DTE9DS19GUkVRKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0 dXJuIHJldDsNCj4gKw0KPiArCWRjbGsgPSAoKHNzZDEzMHgtPmRjbGtfZGl2IC0gMSkgJiAw eGYpIHwgKHNzZDEzMHgtPmRjbGtfZnJxICYgMHhmKSA8PCA0Ow0KPiArCXJldCA9IHNzZDEz MHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgZGNsayk7DQo+ICsJaWYgKHJldCA8IDAp DQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBTZXQgQXJlYSBDb2xvciBNb2RlIE9O L09GRiAmIExvdyBQb3dlciBEaXNwbGF5IE1vZGUgKi8NCj4gKwlpZiAoc3NkMTMweC0+YXJl YV9jb2xvcl9lbmFibGUgfHwgc3NkMTMweC0+bG93X3Bvd2VyKSB7DQo+ICsJCXUzMiBtb2Rl Ow0KPiArDQo+ICsJCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwN Cj4gKwkJCQkJU1NEMTMwWF9TRVRfQVJFQV9DT0xPUl9NT0RFKTsNCj4gKwkJaWYgKHJldCA8 IDApDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJCW1vZGUgPSAoc3NkMTMweC0+YXJl YV9jb2xvcl9lbmFibGUgPyAweDMwIDogMCkgfA0KPiArCQkJKHNzZDEzMHgtPmxvd19wb3dl ciA/IDUgOiAwKTsNCj4gKwkJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xp ZW50LCBtb2RlKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiAr CX0NCj4gKw0KPiArCS8qIFNldCBwcmVjaGFyZ2UgcGVyaW9kIGluIG51bWJlciBvZiB0aWNr cyBmcm9tIHRoZSBpbnRlcm5hbCBjbG9jayAqLw0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVf Y21kKHNzZDEzMHgtPmNsaWVudCwgU1NEMTMwWF9TRVRfUFJFQ0hBUkdFX1BFUklPRCk7DQo+ ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlwcmVjaGFyZ2Ug PSAoc3NkMTMweC0+cHJlY2hhcmdlcDEgJiAweGYpIHwgKHNzZDEzMHgtPnByZWNoYXJnZXAy ICYgMHhmKSA8PCA0Ow0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNs aWVudCwgcHJlY2hhcmdlKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsN Cj4gKw0KPiArCS8qIFNldCBDT00gcGlucyBjb25maWd1cmF0aW9uICovDQo+ICsJcmV0ID0g c3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50LCBTU0QxMzBYX1NFVF9DT01fUElO U19DT05GSUcpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ ICsJY29tcGlucyA9IDB4MDIgfCAhc3NkMTMweC0+Y29tX3NlcSA8PCA0IHwgc3NkMTMweC0+ Y29tX2xycmVtYXAgPDwgNTsNCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4 LT5jbGllbnQsIGNvbXBpbnMpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4gcmV0 Ow0KPiArDQo+ICsJLyogU2V0IFZDT01IICovDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9j bWQoc3NkMTMweC0+Y2xpZW50LCBTU0QxMzBYX1NFVF9WQ09NSCk7DQo+ICsJaWYgKHJldCA8 IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2Nt ZChzc2QxMzB4LT5jbGllbnQsIHNzZDEzMHgtPnZjb21oKTsNCj4gKwlpZiAocmV0IDwgMCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIFR1cm4gb24gdGhlIERDLURDIENoYXJn ZSBQdW1wICovDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50 LCBTU0QxMzBYX0NIQVJHRV9QVU1QKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJu IHJldDsNCj4gKw0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVu dCwNCj4gKwkJQklUKDQpIHwgKHNzZDEzMHgtPmRldmljZV9pbmZvLT5uZWVkX2NoYXJnZXB1 bXAgPyBCSVQoMikgOiAwKSk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7 DQo+ICsNCj4gKwkvKiBTZXQgbG9va3VwIHRhYmxlICovDQo+ICsJaWYgKHNzZDEzMHgtPmxv b2t1cF90YWJsZV9zZXQpIHsNCj4gKwkJaW50IGk7DQo+ICsNCj4gKwkJcmV0ID0gc3NkMTMw eF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50LA0KPiArCQkJCQlTU0QxMzBYX1NFVF9MT09L VVBfVEFCTEUpOw0KPiArCQlpZiAocmV0IDwgMCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsN Cj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3NkMTMweC0+bG9va3VwX3RhYmxl KTsgKytpKSB7DQo+ICsJCQl1OCB2YWwgPSBzc2QxMzB4LT5sb29rdXBfdGFibGVbaV07DQo+ ICsNCj4gKwkJCWlmICh2YWwgPCAzMSB8fCB2YWwgPiA2MykNCj4gKwkJCQlkZXZfd2Fybigm c3NkMTMweC0+Y2xpZW50LT5kZXYsDQo+ICsJCQkJCSAibG9va3VwIHRhYmxlIGluZGV4ICVk IHZhbHVlIG91dCBvZiByYW5nZSAzMSA8PSAlZCA8PSA2M1xuIiwNCj4gKwkJCQkJIGksIHZh bCk7DQo+ICsJCQlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4LT5jbGllbnQsIHZh bCk7DQo+ICsJCQlpZiAocmV0IDwgMCkNCj4gKwkJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ ICsJfQ0KPiArDQo+ICsJLyogU3dpdGNoIHRvIGhvcml6b250YWwgYWRkcmVzc2luZyBtb2Rl ICovDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50LCBTU0Qx MzBYX1NFVF9BRERSRVNTX01PREUpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4g cmV0Ow0KPiArDQo+ICsJcmV0ID0gc3NkMTMweF93cml0ZV9jbWQoc3NkMTMweC0+Y2xpZW50 LA0KPiArCQkJCVNTRDEzMFhfU0VUX0FERFJFU1NfTU9ERV9IT1JJWk9OVEFMKTsNCj4gKwlp ZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIFR1cm4gb24gdGhl IGRpc3BsYXkgKi8NCj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4LT5jbGll bnQsIFNTRDEzMFhfRElTUExBWV9PTik7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVy biByZXQ7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBz c2QxMzB4X3VwZGF0ZV9ibChzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmRldikNCj4gK3sN Cj4gKwlzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEzMHggPSBibF9nZXRfZGF0YShiZGV2 KTsNCj4gKwlpbnQgYnJpZ2h0bmVzcyA9IGJkZXYtPnByb3BzLmJyaWdodG5lc3M7DQo+ICsJ aW50IHJldDsNCj4gKw0KPiArCXNzZDEzMHgtPmNvbnRyYXN0ID0gYnJpZ2h0bmVzczsNCj4g Kw0KPiArCXJldCA9IHNzZDEzMHhfd3JpdGVfY21kKHNzZDEzMHgtPmNsaWVudCwgU1NEMTMw WF9DT05UUkFTVCk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsN Cj4gKwlyZXQgPSBzc2QxMzB4X3dyaXRlX2NtZChzc2QxMzB4LT5jbGllbnQsIHNzZDEzMHgt PmNvbnRyYXN0KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHNzZDEzMHhfZ2V0X2Jy aWdodG5lc3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkZXYpDQo+ICt7DQo+ICsJc3Ry dWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4ID0gYmxfZ2V0X2RhdGEoYmRldik7DQo+ICsN Cj4gKwlyZXR1cm4gc3NkMTMweC0+Y29udHJhc3Q7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBzc2QxMzB4ZmJfYmxfb3BzID0gew0KPiArCS51 cGRhdGVfc3RhdHVzCT0gc3NkMTMweF91cGRhdGVfYmwsDQo+ICsJLmdldF9icmlnaHRuZXNz CT0gc3NkMTMweF9nZXRfYnJpZ2h0bmVzcywNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB2b2lk IHNzZDEzMHhfcmVzZXQoc3RydWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4KQ0KPiArew0K PiArCS8qIFJlc2V0IHRoZSBzY3JlZW4gKi8NCj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xl ZXAoc3NkMTMweC0+cmVzZXQsIDEpOw0KPiArCXVkZWxheSg0KTsNCj4gKwlncGlvZF9zZXRf dmFsdWVfY2Fuc2xlZXAoc3NkMTMweC0+cmVzZXQsIDApOw0KPiArCXVkZWxheSg0KTsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQgc3NkMTMweF9wYXJzZV9wcm9wZXJ0aWVzKHN0cnVj dCBzc2QxMzB4X2RldmljZSAqc3NkMTMweCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmc3NkMTMweC0+Y2xpZW50LT5kZXY7DQo+ICsNCj4gKwlpZiAoZGV2aWNlX3Byb3Bl cnR5X3JlYWRfdTMyKGRldiwgInNvbG9tb24sd2lkdGgiLCAmc3NkMTMweC0+d2lkdGgpKQ0K PiArCQlzc2QxMzB4LT53aWR0aCA9IDk2Ow0KPiArDQo+ICsJaWYgKGRldmljZV9wcm9wZXJ0 eV9yZWFkX3UzMihkZXYsICJzb2xvbW9uLGhlaWdodCIsICZzc2QxMzB4LT5oZWlnaHQpKQ0K PiArCQlzc2QxMzB4LT5oZWlnaHQgPSAxNjsNCj4gKw0KPiArCWlmIChkZXZpY2VfcHJvcGVy dHlfcmVhZF91MzIoZGV2LCAic29sb21vbixwYWdlLW9mZnNldCIsICZzc2QxMzB4LT5wYWdl X29mZnNldCkpDQo+ICsJCXNzZDEzMHgtPnBhZ2Vfb2Zmc2V0ID0gMTsNCj4gKw0KPiArCWlm IChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAic29sb21vbixjb2wtb2Zmc2V0Iiwg JnNzZDEzMHgtPmNvbF9vZmZzZXQpKQ0KPiArCQlzc2QxMzB4LT5jb2xfb2Zmc2V0ID0gMDsN Cj4gKw0KPiArCWlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAic29sb21vbixj b20tb2Zmc2V0IiwgJnNzZDEzMHgtPmNvbV9vZmZzZXQpKQ0KPiArCQlzc2QxMzB4LT5jb21f b2Zmc2V0ID0gMDsNCj4gKw0KPiArCWlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2 LCAic29sb21vbixwcmVjaGFyZ2VwMSIsICZzc2QxMzB4LT5wcmVjaGFyZ2VwMSkpDQo+ICsJ CXNzZDEzMHgtPnByZWNoYXJnZXAxID0gMjsNCj4gKw0KPiArCWlmIChkZXZpY2VfcHJvcGVy dHlfcmVhZF91MzIoZGV2LCAic29sb21vbixwcmVjaGFyZ2VwMiIsICZzc2QxMzB4LT5wcmVj aGFyZ2VwMikpDQo+ICsJCXNzZDEzMHgtPnByZWNoYXJnZXAyID0gMjsNCj4gKw0KPiArCWlm ICghZGV2aWNlX3Byb3BlcnR5X3JlYWRfdThfYXJyYXkoZGV2LCAic29sb21vbixsb29rdXAt dGFibGUiLA0KPiArCQkJCQkgICBzc2QxMzB4LT5sb29rdXBfdGFibGUsDQo+ICsJCQkJCSAg IEFSUkFZX1NJWkUoc3NkMTMweC0+bG9va3VwX3RhYmxlKSkpDQo+ICsJCXNzZDEzMHgtPmxv b2t1cF90YWJsZV9zZXQgPSAxOw0KPiArDQo+ICsJc3NkMTMweC0+c2VnX3JlbWFwID0gIWRl dmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAic29sb21vbixzZWdtZW50LW5vLXJlbWFw Iik7DQo+ICsJc3NkMTMweC0+Y29tX3NlcSA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2wo ZGV2LCAic29sb21vbixjb20tc2VxIik7DQo+ICsJc3NkMTMweC0+Y29tX2xycmVtYXAgPSBk ZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgInNvbG9tb24sY29tLWxycmVtYXAiKTsN Cj4gKwlzc2QxMzB4LT5jb21faW52ZGlyID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChk ZXYsICJzb2xvbW9uLGNvbS1pbnZkaXIiKTsNCj4gKwlzc2QxMzB4LT5hcmVhX2NvbG9yX2Vu YWJsZSA9DQo+ICsJCWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAic29sb21vbixh cmVhLWNvbG9yLWVuYWJsZSIpOw0KPiArCXNzZDEzMHgtPmxvd19wb3dlciA9IGRldmljZV9w cm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAic29sb21vbixsb3ctcG93ZXIiKTsNCj4gKw0KPiAr CXNzZDEzMHgtPmNvbnRyYXN0ID0gMTI3Ow0KPiArCXNzZDEzMHgtPnZjb21oID0gc3NkMTMw eC0+ZGV2aWNlX2luZm8tPmRlZmF1bHRfdmNvbWg7DQo+ICsNCj4gKwkvKiBTZXR1cCBkaXNw bGF5IHRpbWluZyAqLw0KPiArCWlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAi c29sb21vbixkY2xrLWRpdiIsICZzc2QxMzB4LT5kY2xrX2RpdikpDQo+ICsJCXNzZDEzMHgt PmRjbGtfZGl2ID0gc3NkMTMweC0+ZGV2aWNlX2luZm8tPmRlZmF1bHRfZGNsa19kaXY7DQo+ ICsJaWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJzb2xvbW9uLGRjbGstZnJx IiwgJnNzZDEzMHgtPmRjbGtfZnJxKSkNCj4gKwkJc3NkMTMweC0+ZGNsa19mcnEgPSBzc2Qx MzB4LT5kZXZpY2VfaW5mby0+ZGVmYXVsdF9kY2xrX2ZycTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHZvaWQgc3NkMTMweF9zZXRfbW9kZShzdHJ1Y3Qgc3NkMTMweF9kZXZpY2UgKnNzZDEz MHgpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmc3NkMTMw eC0+bW9kZTsNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gJnNzZDEzMHgtPmRybTsN Cj4gKw0KPiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUjsNCj4gKwltb2Rl LT5jbG9jayA9IDE7DQo+ICsJbW9kZS0+aGRpc3BsYXkgPSBtb2RlLT5odG90YWwgPSBzc2Qx MzB4LT53aWR0aDsNCj4gKwltb2RlLT5oc3luY19zdGFydCA9IG1vZGUtPmhzeW5jX2VuZCA9 IHNzZDEzMHgtPndpZHRoOw0KPiArCW1vZGUtPnZkaXNwbGF5ID0gbW9kZS0+dnRvdGFsID0g c3NkMTMweC0+aGVpZ2h0Ow0KPiArCW1vZGUtPnZzeW5jX3N0YXJ0ID0gbW9kZS0+dnN5bmNf ZW5kID0gc3NkMTMweC0+aGVpZ2h0Ow0KPiArCW1vZGUtPndpZHRoX21tID0gMjc7DQo+ICsJ bW9kZS0+aGVpZ2h0X21tID0gMjc7DQo+ICsNCj4gKwlkcm0tPm1vZGVfY29uZmlnLm1pbl93 aWR0aCA9IHNzZDEzMHgtPndpZHRoOw0KPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dpZHRo ID0gc3NkMTMweC0+d2lkdGg7DQo+ICsJZHJtLT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0g c3NkMTMweC0+aGVpZ2h0Ow0KPiArCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IHNz ZDEzMHgtPmhlaWdodDsNCj4gKwlkcm0tPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9 IDMyOw0KPiArCWRybS0+bW9kZV9jb25maWcuZnVuY3MgPSAmc3NkMTMweF9tb2RlX2NvbmZp Z19mdW5jczsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzc2QxMzB4X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0g JmNsaWVudC0+ZGV2Ow0KPiArCXN0cnVjdCBzc2QxMzB4X2RldmljZSAqc3NkMTMweDsNCj4g KwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmw7DQo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRybTsNCj4gKwljaGFyIGJsX25hbWVbMTJdOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlz c2QxMzB4ID0gZGV2bV9kcm1fZGV2X2FsbG9jKGRldiwgJnNzZDEzMHhfZHJtX2RyaXZlciwN Cj4gKwkJCQkgc3RydWN0IHNzZDEzMHhfZGV2aWNlLCBkcm0pOw0KPiArCWlmIChJU19FUlIo c3NkMTMweCkpDQo+ICsJCXJldHVybiBQVFJfRVJSKHNzZDEzMHgpOw0KPiArDQo+ICsJZHJt ID0gJnNzZDEzMHgtPmRybTsNCj4gKw0KPiArCXJldCA9IGRybW1fbW9kZV9jb25maWdfaW5p dChkcm0pOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlzc2Qx MzB4LT5jbGllbnQgPSBjbGllbnQ7DQo+ICsNCj4gKwlzc2QxMzB4LT5kZXZpY2VfaW5mbyA9 IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiArDQo+ICsJc3NkMTMweF9wYXJzZV9w cm9wZXJ0aWVzKHNzZDEzMHgpOw0KPiArDQo+ICsJc3NkMTMweF9zZXRfbW9kZShzc2QxMzB4 KTsNCj4gKw0KPiArCXNzZDEzMHgtPnJlc2V0ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwo ZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfTE9XKTsNCj4gKwlpZiAoSVNfRVJSKHNzZDEzMHgt PnJlc2V0KSkgew0KPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcmVzZXQgZ3Bp bzogJWxkXG4iLA0KPiArCQkJUFRSX0VSUihzc2QxMzB4LT5yZXNldCkpOw0KPiArCQlyZXR1 cm4gUFRSX0VSUihzc2QxMzB4LT5yZXNldCk7DQo+ICsJfQ0KPiArDQo+ICsJc3NkMTMweC0+ dmJhdF9yZWcgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwoZGV2LCAidmJhdCIpOw0K PiArCWlmIChJU19FUlIoc3NkMTMweC0+dmJhdF9yZWcpKSB7DQo+ICsJCXJldCA9IFBUUl9F UlIoc3NkMTMweC0+dmJhdF9yZWcpOw0KPiArCQlpZiAocmV0ID09IC1FTk9ERVYpIHsNCj4g KwkJCXNzZDEzMHgtPnZiYXRfcmVnID0gTlVMTDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCWRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBWQkFUIHJlZ3VsYXRvcjogJWRcbiIsIHJldCk7 DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfYWRkKCZzc2QxMzB4LT5jb25uZWN0b3IsICZzc2QxMzB4X2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MpOw0KPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkcm0sICZz c2QxMzB4LT5jb25uZWN0b3IsICZzc2QxMzB4X2Nvbm5lY3Rvcl9mdW5jcywNCj4gKwkJCQkg RFJNX01PREVfQ09OTkVDVE9SX1Vua25vd24pOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVy biByZXQ7DQo+ICsNCj4gKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBzc2QxMzB4KTsN Cj4gKw0KPiArCWlmIChzc2QxMzB4LT5yZXNldCkNCj4gKwkJc3NkMTMweF9yZXNldChzc2Qx MzB4KTsNCj4gKw0KPiArCWlmIChzc2QxMzB4LT52YmF0X3JlZykgew0KPiArCQlyZXQgPSBy ZWd1bGF0b3JfZW5hYmxlKHNzZDEzMHgtPnZiYXRfcmVnKTsNCj4gKwkJaWYgKHJldCkgew0K PiArCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIFZCQVQ6ICVkXG4iLCByZXQp Ow0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCXJldCA9IHNz ZDEzMHhfaW5pdChzc2QxMzB4KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlnb3RvIHJlZ3VsYXRv cl9kaXNhYmxlOw0KPiArDQo+ICsJaWYgKHNzZDEzMHgtPmRldmljZV9pbmZvLT5uZWVkX3B3 bSkgew0KPiArCQlyZXQgPSBzc2QxMzB4X3B3bV9lbmFibGUoc3NkMTMweCk7DQo+ICsJCWlm IChyZXQpDQo+ICsJCQlnb3RvIHJlZ3VsYXRvcl9kaXNhYmxlOw0KPiArCX0NCj4gKw0KPiAr CXNucHJpbnRmKGJsX25hbWUsIHNpemVvZihibF9uYW1lKSwgInNzZDEzMHglZCIsIGRybS0+ cHJpbWFyeS0+aW5kZXgpOw0KPiArCWJsID0gYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rlcihi bF9uYW1lLCBkZXYsIHNzZDEzMHgsICZzc2QxMzB4ZmJfYmxfb3BzLA0KPiArCQkJCSAgICAg ICBOVUxMKTsNCj4gKwlpZiAoSVNfRVJSKGJsKSkgew0KPiArCQlyZXQgPSBQVFJfRVJSKGJs KTsNCj4gKwkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gcmVnaXN0ZXIgYmFja2xpZ2h0IGRl dmljZTogJWRcbiIsIHJldCk7DQo+ICsJCWdvdG8gcHdtX2Rpc2FibGU7DQo+ICsJfQ0KPiAr DQo+ICsJYmwtPnByb3BzLmJyaWdodG5lc3MgPSBzc2QxMzB4LT5jb250cmFzdDsNCj4gKwli bC0+cHJvcHMubWF4X2JyaWdodG5lc3MgPSBNQVhfQ09OVFJBU1Q7DQo+ICsJc3NkMTMweC0+ YmxfZGV2ID0gYmw7DQo+ICsNCj4gKwlyZXQgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9p bml0KGRybSwgJnNzZDEzMHgtPnBpcGUsICZzc2QxMzB4X3BpcGVfZnVuY3MsDQo+ICsJCQkJ CSAgIHNzZDEzMHhfZm9ybWF0cywgQVJSQVlfU0laRShzc2QxMzB4X2Zvcm1hdHMpLA0KPiAr CQkJCQkgICBOVUxMLCAmc3NkMTMweC0+Y29ubmVjdG9yKTsNCj4gKwlpZiAocmV0KQ0KPiAr CQlnb3RvIHB3bV9kaXNhYmxlOw0KPiArDQo+ICsJZHJtX3BsYW5lX2VuYWJsZV9mYl9kYW1h Z2VfY2xpcHMoJnNzZDEzMHgtPnBpcGUucGxhbmUpOw0KPiArDQo+ICsJZHJtX21vZGVfY29u ZmlnX3Jlc2V0KGRybSk7DQo+ICsNCj4gKwlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwg MCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBiYWNrbGlnaHRfdW5yZWdpc3RlcjsNCj4g Kw0KPiArCWRybV9mYmRldl9nZW5lcmljX3NldHVwKGRybSwgMCk7DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gKw0KPiArYmFja2xpZ2h0X3VucmVnaXN0ZXI6DQo+ICsJYmFja2xpZ2h0X2Rl dmljZV91bnJlZ2lzdGVyKHNzZDEzMHgtPmJsX2Rldik7DQo+ICtwd21fZGlzYWJsZToNCj4g KwlpZiAoc3NkMTMweC0+ZGV2aWNlX2luZm8tPm5lZWRfcHdtKSB7DQo+ICsJCXB3bV9kaXNh YmxlKHNzZDEzMHgtPnB3bSk7DQo+ICsJCXB3bV9wdXQoc3NkMTMweC0+cHdtKTsNCj4gKwl9 DQo+ICtyZWd1bGF0b3JfZGlzYWJsZToNCj4gKwlpZiAoc3NkMTMweC0+dmJhdF9yZWcpDQo+ ICsJCXJlZ3VsYXRvcl9kaXNhYmxlKHNzZDEzMHgtPnZiYXRfcmVnKTsNCj4gKwlyZXR1cm4g cmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHNzZDEzMHhfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpDQo+ICt7DQo+ICsJc3RydWN0IHNzZDEzMHhfZGV2aWNlICpz c2QxMzB4ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+ICsNCj4gKwlkcm1fZGV2 X3VucGx1Zygmc3NkMTMweC0+ZHJtKTsNCj4gKw0KPiArCXNzZDEzMHhfd3JpdGVfY21kKHNz ZDEzMHgtPmNsaWVudCwgU1NEMTMwWF9ESVNQTEFZX09GRik7DQo+ICsNCj4gKwliYWNrbGln aHRfZGV2aWNlX3VucmVnaXN0ZXIoc3NkMTMweC0+YmxfZGV2KTsNCj4gKw0KPiArCWlmIChz c2QxMzB4LT5kZXZpY2VfaW5mby0+bmVlZF9wd20pIHsNCj4gKwkJcHdtX2Rpc2FibGUoc3Nk MTMweC0+cHdtKTsNCj4gKwkJcHdtX3B1dChzc2QxMzB4LT5wd20pOw0KPiArCX0NCj4gKwlp ZiAoc3NkMTMweC0+dmJhdF9yZWcpDQo+ICsJCXJlZ3VsYXRvcl9kaXNhYmxlKHNzZDEzMHgt PnZiYXRfcmVnKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBzc2QxMzB4X3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpDQo+ICt7 DQo+ICsJc3RydWN0IHNzZDEzMHhfZGV2aWNlICpzc2QxMzB4ID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7DQo+ICsNCj4gKwlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigmc3Nk MTMweC0+ZHJtKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHN0cnVjdCBzc2QxMzB4X2Rldmlj ZWluZm8gc3NkMTMweF9zc2QxMzA1X2RldmljZWluZm8gPSB7DQo+ICsJLmRlZmF1bHRfdmNv bWggPSAweDM0LA0KPiArCS5kZWZhdWx0X2RjbGtfZGl2ID0gMSwNCj4gKwkuZGVmYXVsdF9k Y2xrX2ZycSA9IDcsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHNzZDEzMHhfZGV2 aWNlaW5mbyBzc2QxMzB4X3NzZDEzMDZfZGV2aWNlaW5mbyA9IHsNCj4gKwkuZGVmYXVsdF92 Y29taCA9IDB4MjAsDQo+ICsJLmRlZmF1bHRfZGNsa19kaXYgPSAxLA0KPiArCS5kZWZhdWx0 X2RjbGtfZnJxID0gOCwNCj4gKwkubmVlZF9jaGFyZ2VwdW1wID0gMSwNCj4gK307DQo+ICsN Cj4gK3N0YXRpYyBzdHJ1Y3Qgc3NkMTMweF9kZXZpY2VpbmZvIHNzZDEzMHhfc3NkMTMwN19k ZXZpY2VpbmZvID0gew0KPiArCS5kZWZhdWx0X3Zjb21oID0gMHgyMCwNCj4gKwkuZGVmYXVs dF9kY2xrX2RpdiA9IDIsDQo+ICsJLmRlZmF1bHRfZGNsa19mcnEgPSAxMiwNCj4gKwkubmVl ZF9wd20gPSAxLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBzc2QxMzB4X2Rldmlj ZWluZm8gc3NkMTMweF9zc2QxMzA5X2RldmljZWluZm8gPSB7DQo+ICsJLmRlZmF1bHRfdmNv bWggPSAweDM0LA0KPiArCS5kZWZhdWx0X2RjbGtfZGl2ID0gMSwNCj4gKwkuZGVmYXVsdF9k Y2xrX2ZycSA9IDEwLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgc3NkMTMweF9vZl9tYXRjaFtdID0gew0KPiArCXsNCj4gKwkJLmNvbXBhdGli bGUgPSAic29sb21vbixzc2QxMzA1ZmItaTJjIiwNCj4gKwkJLmRhdGEgPSAodm9pZCAqKSZz c2QxMzB4X3NzZDEzMDVfZGV2aWNlaW5mbywNCj4gKwl9LA0KPiArCXsNCj4gKwkJLmNvbXBh dGlibGUgPSAic29sb21vbixzc2QxMzA2ZmItaTJjIiwNCj4gKwkJLmRhdGEgPSAodm9pZCAq KSZzc2QxMzB4X3NzZDEzMDZfZGV2aWNlaW5mbywNCj4gKwl9LA0KPiArCXsNCj4gKwkJLmNv bXBhdGlibGUgPSAic29sb21vbixzc2QxMzA3ZmItaTJjIiwNCj4gKwkJLmRhdGEgPSAodm9p ZCAqKSZzc2QxMzB4X3NzZDEzMDdfZGV2aWNlaW5mbywNCj4gKwl9LA0KPiArCXsNCj4gKwkJ LmNvbXBhdGlibGUgPSAic29sb21vbixzc2QxMzA5ZmItaTJjIiwNCj4gKwkJLmRhdGEgPSAo dm9pZCAqKSZzc2QxMzB4X3NzZDEzMDlfZGV2aWNlaW5mbywNCj4gKwl9LA0KPiArCXt9LA0K PiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNzZDEzMHhfb2ZfbWF0Y2gpOw0K PiArDQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzc2QxMzB4X2kyY19kcml2 ZXIgPSB7DQo+ICsJLmRyaXZlciA9IHsNCj4gKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwNCj4g KwkJLm9mX21hdGNoX3RhYmxlID0gc3NkMTMweF9vZl9tYXRjaCwNCj4gKwl9LA0KPiArCS5w cm9iZV9uZXcgPSBzc2QxMzB4X3Byb2JlLA0KPiArCS5yZW1vdmUgPSBzc2QxMzB4X3JlbW92 ZSwNCj4gKwkuc2h1dGRvd24gPSBzc2QxMzB4X3NodXRkb3duLA0KPiArfTsNCj4gKw0KPiAr bW9kdWxlX2kyY19kcml2ZXIoc3NkMTMweF9pMmNfZHJpdmVyKTsNCj4gKw0KPiArTU9EVUxF X0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsNCj4gK01PRFVMRV9BVVRIT1IoIkphdmllciBN YXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRoYXQuY29tPiIpOw0KPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCB2MiIpOw0KDQotLSANClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBE cml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgN Ck1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhSQiAzNjgwOSwg QUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2byBUb3Rldg0K --------------I1jdNQleT0p3ryYGhUA7UeEN-- --------------dzYI56NUgYzLE33VrTaOjDhC Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmH3qUgFAwAAAAAACgkQlh/E3EQov+AW JxAAyhdaUIPt+EYcpnnP9Vau3VYvAmcrZRs7yxwdaYXv9LNO2RPmP/CKwaNB0AYECH50ggUd8N/o urx72WgtoIFuk1Lzlpax9aZTi5DieTaSnoZJ6U6EKbtx++Ux+FG+/F4uEhPn9k4Ou60BAuwdz+4m LsR0mJCYpBQniIwiv9AC+sue/brsV/uYMXnldztmZ+0jHb2TwvSENab31ITx49HLW6XcZW0C8LnR wSUk5efk3g+VRzxJfiSeD2pkH+6UUjZBcb4q2Jh1u15fwYCx4Wf0SN2D4Gd8+uVlMtlW1LfEMQ/b IHbFC4RFYkjmU1N+Dck13UeucF/cmhHYC7FwpHWH9FzO7MPoIfLWSGK7w3Lp+j3HWowUSz83xXgb WZO8m+B/fmZDnqT0ntOOn0/a3eTTU9/alWX1ywe3OvkmyjvjpXNX1cp1X5r1PrKPhT9Y7hN88GNS gpZAU/Xf/DQqY20HAE/nLSfXMaGjG8KMxkj+UwzPVScch5x+K3JoFJ82ZEhvDmxo3RJqcEgjBiYr lhdwjY8NF/YvONCRirRgVSlrzPnwBgr3FILq+50p2OsmNhP7ct1bgQ7x5rSmTO/a8Fd4eTVQ1t/S hiQN2SMIG/LZHteYZNRYy6FBSEoFFoA26Qns8hdTIcDbKuPOYgdPKD5YEKFQjqNUxqQ8VNFq8XPS 94w= =44pu -----END PGP SIGNATURE----- --------------dzYI56NUgYzLE33VrTaOjDhC--