Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1348215ybz; Thu, 16 Apr 2020 07:38:10 -0700 (PDT) X-Google-Smtp-Source: APiQypKs9oGp+6D2wQSu3DvGlMyG1PuYXPVJAJbVI15Tsh9ITZr/uZx6JJ3lLI/5b9WSAdKgpL7k X-Received: by 2002:a17:906:5045:: with SMTP id e5mr10167377ejk.325.1587047890765; Thu, 16 Apr 2020 07:38:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587047890; cv=none; d=google.com; s=arc-20160816; b=KRqgG6TRGfJFcstadfz/Z5fHu6TeyE5X4PZVBw9r0GQyc02SFuT7haSoY2NF1arXAy NWz+2Ix41ZxBg8sLDi3cyn4Xe8qboGCfn0mfnE/uQ10RkIiTk8YTpRRhKEeAEOahgt8b +AAg9FSkRE/LhEdJbl/V8xPNPMBbrXnOvbWtAeDJnas7ueVtVCparznHhJBMbql6kQVM SXoILXLHCaALjjOwQOBcNpSfHH6BPhf+u72AI6dr9lVKwCPsAcMVtm5ziH7khT5JzC70 JnfG3CRgKQWTgl4KgDhEUqoIsNafFN+MlQnVDY49+nLTqHS/o66fYqZBakD5X8WE3/vu zmmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:from:mime-version:in-reply-to :subject:cc:to:message-id:content-transfer-encoding; bh=lUzjfc/Yot4tJRsaPrP4m4xzLhiuc+5E8dE7w64d3Mo=; b=JPROb9T6lRH7+fmirGBAy3y90mbWAlc0Nb4gXt2QSVgRQTndssTKbBosa95o4+I6eo XU4hA17vuU8FkSSQbK9k+P6PpzWOJYnfWC38w0w9ttXkBa9uWiEC1v/zXvKib3VMo4cO 7RvY4/V1SUfPpmI52KC5KxTKfmJ3/vA+FzSfxP5oliCv2nztKxCyksOw0i8RpTFu7Yoy uGa3QtCdEmKsJq+JGVVd2uqH8CTzTMgELyQCsh/ra7NeADPWSyySx85+ZimaHZHB0wqc bNE+ahzKf2fxLHrOSdXXAWffll8MENC49HH7otE67h+zGCNHW44jq1cHGASGXHq4WAZz FL+g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r13si11755851eja.317.2020.04.16.07.37.47; Thu, 16 Apr 2020 07:38:10 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2410100AbgDPOdv (ORCPT + 99 others); Thu, 16 Apr 2020 10:33:51 -0400 Received: from m142-177.yeah.net ([123.58.177.142]:10672 "EHLO m142-177.yeah.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729952AbgDPOad (ORCPT ); Thu, 16 Apr 2020 10:30:33 -0400 Received: from vivo.com (localhost [127.0.0.1]) by m142-177.yeah.net (Hmail) with ESMTP id A2C3D6424FA; Thu, 16 Apr 2020 22:30:18 +0800 (CST) Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Message-ID: To: Christophe Leroy Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, oss@buserror.net, linuxppc-dev@lists.ozlabs.org, kernel@vivo.com, Michael Ellerman Subject: =?UTF-8?B?UmU6UmU6IFtQQVRDSCBSRVNFTkQsdjMsNC80XSBkcml2ZXJzOiB1aW86IG5ldyBkcml2ZXIgZm9yIGZzbF84NXh4X2NhY2hlX3NyYW0=?= X-Priority: 3 X-Mailer: HMail Webmail Server V2.0 Copyright (c) 2016-163.com X-Originating-IP: 58.251.74.226 In-Reply-To: <6173e4ce-bc26-b87c-e679-65329e8336cc@c-s.fr> MIME-Version: 1.0 Received: from wenhu.wang@vivo.com( [58.251.74.226) ] by ajax-webmail ( [127.0.0.1] ) ; Thu, 16 Apr 2020 22:30:18 +0800 (GMT+08:00) From: =?UTF-8?B?546L5paH6JmO?= Date: Thu, 16 Apr 2020 22:30:18 +0800 (GMT+08:00) X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgYFAkeWUFZT1VIS0JLS0tLSk5JTkNMQllXWShZQU hPN1dZLVlBSVdZCQ4XHghZQVk1NCk2OjckKS43PlkG X-HM-Sender-Digest: e1kJHlYWEh9ZQUhMSU1NT0xCTUhJN1dZDB4ZWUEPCQ4eV1kSHx4VD1lB WUc6NDI6OAw5Ljg2Gg8SPSFIHTETTjoaCzRVSFVKTkNMS09MT0lLTE5CVTMWGhIXVQweFRMOVQwa FRw7DRINFFUYFBZFWVdZEgtZQVlOQ1VJTkpVTE9VSUlNWVdZCAFZQUpPSkJINwY+ X-HM-Tid: 0a718365cb2e6473kursa2c3d6424fa Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIENocmlzdG9waGUsCmRldl9remFsbG9jIHJlYWxseSBsb29rcyBiZXR0ZXIuIEkgd2lsbCB1 cGRhdGUgdGhlIHBhdGNoIHdpdGggdGhlIGNvbW1lbnRzIGFkZHJlc3NlZC4KClRoYW5rcywKV2Vu aHUKCkZyb206IENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lAYy1zLmZyPiBEYXRl OiAyMDIwLTA0LTE2IDE5OjQ5OjAxClRvOldhbmcgV2VuaHUgPHdlbmh1LndhbmdAdml2by5jb20+ LGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnLApsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn LG9zc0BidXNlcnJvci5uZXQsbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKIGNjOiBrZXJu ZWxAdml2by5jb20sTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTdWJqZWN0 OiBSZTogW1BBVENIIFJFU0VORCx2Myw0LzRdIGRyaXZlcnM6IHVpbzogbmV3IGRyaXZlciBmb3Ig ZnNsXzg1eHhfY2FjaGVfc3JhbT4KPgo+TGUgMTYvMDQvMjAyMCDDoCAxMzoxNiwgV2FuZyBXZW5o dSBhIMOpY3JpdMKgOgo+PiBBIGRyaXZlciBmb3IgZnJlZXNjYWxlIDg1eHggcGxhdGZvcm1zIHRv IGFjY2VzcyB0aGUgQ2FjaGUtU3JhbSBmb3JtCj4+IHVzZXIgbGV2ZWwuIFRoaXMgaXMgZXh0cmVt ZWx5IGhlbHBmdWwgZm9yIHNvbWUgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMKPj4gdGhhdCByZXF1 aXJlIGhpZ2ggcGVyZm9ybWFuY2UgbWVtb3J5IGFjY2Vzc2VzLgo+PiAKPj4gQ2M6IEdyZWcgS3Jv YWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cj4+IENjOiBDaHJpc3RvcGhl IExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGMtcy5mcj4KPj4gQ2M6IFNjb3R0IFdvb2QgPG9zc0Bi dXNlcnJvci5uZXQ+Cj4+IENjOiBNaWNoYWVsIEVsbGVybWFuIDxtcGVAZWxsZXJtYW4uaWQuYXU+ Cj4+IENjOiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwo+PiBTaWduZWQtb2ZmLWJ5OiBX YW5nIFdlbmh1IDx3ZW5odS53YW5nQHZpdm8uY29tPgo+PiAtLS0KPj4gQ2hhbmdlcyBzaW5jZSB2 MToKPj4gICAqIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEdyZWcgSy1ICj4+ICAgKiBNb3ZlZCBr ZnJlZShpbmZvLT5uYW1lKSBpbnRvIHVpb19pbmZvX2ZyZWVfaW50ZXJuYWwoKQo+PiBDaGFuZ2Vz IHNpbmNlIHYyOgo+PiAgICogQWRkcmVzc2VkIGNvbW1lbnRzIGZyb20gR3JlZywgU2NvdHQgYW5k IENocmlzdG9waGUKPj4gICAqIFVzZSAidWlvbWVtLT5pbnRlcm5hbF9hZGRyIiBhcyBpZiBjb25k aXRpb24gZm9yIHNyYW0gbWVtb3J5IGZyZWUsCj4+ICAgICBhbmQgbWVtc2V0IHRoZSB1aW9tZW0g ZW50cnkKPj4gICAqIE1vZGlmaWVkIG9mX21hdGNoX3RhYmxlIG1ha2UgdGhlIGRyaXZlciBhcGFy dCBmcm9tIENhY2hlLVNyYW0gSFcgaW5mbwo+PiAgICAgd2hpY2ggYmVsb25nIHRvIHRoZSBIVyBs ZXZlbCBkcml2ZXIgZnNsXzg1eHhfY2FjaGVfc3JhbSB0byBtYXRjaAo+PiAgICogVXNlIHJvdW5k dXBfcG93X29mX3R3byBmb3IgYWxpZ24gY2FsY3VsYXRpb24KPj4gICAqIFJlbW92ZSB1c2VsZXNz IGNsZWFyIGJsb2NrIG9mIHVpb21lbSBlbnRyaWVzLgo+PiAgICogVXNlIFVJT19JTkZPX1ZFUiBt aWNybyBmb3IgaW5mby0+dmVyc2lvbiwgYW5kIGRlZmluZSBpdCBhcwo+PiAgICAgImRldmljZXRy ZWUscHNldWRvIiwgbWVhbmluZyB0aGlzIGlzIHBzZXVkbyBkZXZpY2UgYW5kIHByb2JlZCBmcm9t Cj4+ICAgICBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uCj4+ICAgKiBTZWxlY3QgRlNMXzg1WFhf Q0FDSEVfU1JBTSByYXRoZXIgdGhhbiBkZXBlbmRzIG9uIGl0Cj4+IC0tLQo+PiAgIGRyaXZlcnMv dWlvL0tjb25maWcgICAgICAgICAgICAgICAgICAgfCAgIDkgKysKPj4gICBkcml2ZXJzL3Vpby9N YWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsKPj4gICBkcml2ZXJzL3Vpby91aW9fZnNs Xzg1eHhfY2FjaGVfc3JhbS5jIHwgMTU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAg MyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3Vpby91aW9fZnNsXzg1eHhfY2FjaGVfc3JhbS5jCj4+IAo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy91aW8vS2NvbmZpZyBiL2RyaXZlcnMvdWlvL0tjb25maWcKPj4gaW5kZXggMjAy ZWU4MWNmYzJiLi45YzNiNDc0NjFiNzEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdWlvL0tjb25m aWcKPj4gKysrIGIvZHJpdmVycy91aW8vS2NvbmZpZwo+PiBAQCAtMTA1LDYgKzEwNSwxNSBAQCBj b25maWcgVUlPX05FVFgKPj4gICAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxl LCBjaG9vc2UgTSBoZXJlOyB0aGUgbW9kdWxlCj4+ICAgCSAgd2lsbCBiZSBjYWxsZWQgdWlvX25l dHguCj4+ICAgCj4+ICtjb25maWcgVUlPX0ZTTF84NVhYX0NBQ0hFX1NSQU0KPj4gKwl0cmlzdGF0 ZSAiRnJlZXNjYWxlIDg1eHggQ2FjaGUtU3JhbSBkcml2ZXIiCj4+ICsJZGVwZW5kcyBvbiBGU0xf U09DX0JPT0tFICYmIFBQQzMyCj4+ICsJc2VsZWN0IEZTTF84NVhYX0NBQ0hFX1NSQU0KPj4gKwlo ZWxwCj4+ICsJICBHZW5lcmljIGRyaXZlciBmb3IgYWNjZXNzaW5nIHRoZSBDYWNoZS1TcmFtIGZv cm0gdXNlciBsZXZlbC4gVGhpcwo+PiArCSAgaXMgZXh0cmVtZWx5IGhlbHBmdWwgZm9yIHNvbWUg dXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlCj4+ICsJICBoaWdoIHBlcmZvcm1h bmNlIG1lbW9yeSBhY2Nlc3Nlcy4KPj4gKwo+PiAgIGNvbmZpZyBVSU9fRlNMX0VMQkNfR1BDTQo+ PiAgIAl0cmlzdGF0ZSAiZUxCQy9HUENNIGRyaXZlciIKPj4gICAJZGVwZW5kcyBvbiBGU0xfTEJD Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vpby9NYWtlZmlsZSBiL2RyaXZlcnMvdWlvL01ha2Vm aWxlCj4+IGluZGV4IGMyODVkZDJhNDUzOS4uYmUyMDU2Y2ZmYzIxIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL3Vpby9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL3Vpby9NYWtlZmlsZQo+PiBAQCAt MTAsNCArMTAsNSBAQCBvYmotJChDT05GSUdfVUlPX05FVFgpCSs9IHVpb19uZXR4Lm8KPj4gICBv YmotJChDT05GSUdfVUlPX1BSVVNTKSAgICAgICAgICs9IHVpb19wcnVzcy5vCj4+ICAgb2JqLSQo Q09ORklHX1VJT19NRjYyNCkgICAgICAgICArPSB1aW9fbWY2MjQubwo+PiAgIG9iai0kKENPTkZJ R19VSU9fRlNMX0VMQkNfR1BDTSkJKz0gdWlvX2ZzbF9lbGJjX2dwY20ubwo+PiArb2JqLSQoQ09O RklHX1VJT19GU0xfODVYWF9DQUNIRV9TUkFNKQkrPSB1aW9fZnNsXzg1eHhfY2FjaGVfc3JhbS5v Cj4+ICAgb2JqLSQoQ09ORklHX1VJT19IVl9HRU5FUklDKQkrPSB1aW9faHZfZ2VuZXJpYy5vCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vpby91aW9fZnNsXzg1eHhfY2FjaGVfc3JhbS5jIGIvZHJp dmVycy91aW8vdWlvX2ZzbF84NXh4X2NhY2hlX3NyYW0uYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjg3MDFkZjY5NTMwNwo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL2RyaXZlcnMvdWlvL3Vpb19mc2xfODV4eF9jYWNoZV9zcmFtLmMKPj4gQEAgLTAsMCAr MSwxNTggQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsvKgo+ PiArICogQ29weXJpZ2h0IChDKSAyMDIwIFZpdm8gQ29tbXVuaWNhdGlvbiBUZWNobm9sb2d5IENv LiBMdGQuCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjAgV2FuZyBXZW5odSA8d2VuaHUud2FuZ0B2 aXZvLmNvbT4KPj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKi8KPj4gKwo+PiArI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Vpb19k cml2ZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zdHJpbmdpZnkuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRl IDxhc20vZnNsXzg1eHhfY2FjaGVfc3JhbS5oPgo+PiArCj4+ICsjZGVmaW5lIERSSVZFUl9OQU1F CSJ1aW9fZnNsXzg1eHhfY2FjaGVfc3JhbSIKPj4gKyNkZWZpbmUgVUlPX0lORk9fVkVSCSJkZXZp Y2V0cmVlLHBzZXVkbyIKPj4gKyNkZWZpbmUgVUlPX05BTUUJInVpb19jYWNoZV9zcmFtIgo+PiAr Cj4+ICtzdGF0aWMgdm9pZCB1aW9faW5mb19mcmVlX2ludGVybmFsKHN0cnVjdCB1aW9faW5mbyAq aW5mbykKPj4gK3sKPj4gKwlzdHJ1Y3QgdWlvX21lbSAqdWlvbWVtID0gaW5mby0+bWVtOwo+PiAr Cj4+ICsJd2hpbGUgKHVpb21lbSA8ICZpbmZvLT5tZW1bTUFYX1VJT19NQVBTXSkgewo+Cj5BcyBz dWdnZXN0ZWQgYnkgU2NvdHQsIG1heWJlIGl0IHdvdWxkIGJlIGJldHRlciB0byB1c2UgYSBsb29w IHdpdGggYW4gCj5pbmRleCwgc29tZXRoaW5nIGxpa2UKPgo+CWZvciAoaSA9IDA7IGkgPCBNQVhf VUlPX01BUFM7IGkrKywgdWlvbWVtKyspIHsKPgkJc3RydWN0IHVpb19tZW0gKnVpb21lbSA9IGlu Zm8tPm1lbVtpXTsKPgo+PiArCQlpZiAodWlvbWVtLT5pbnRlcm5hbF9hZGRyKSB7Cj4+ICsJCQlt cGM4NXh4X2NhY2hlX3NyYW1fZnJlZSh1aW9tZW0tPmludGVybmFsX2FkZHIpOwo+PiArCQkJa2Zy ZWUodWlvbWVtLT5uYW1lKTsKPgo+VW5uZWVkZWQgd2hlbiB1c2luZyBkZXZtX2tzdHJkdXAoKSwg c2VlIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4KPgo+PiArCQkJbWVtc2V0KHVpb21lbSwgMCwgc2l6 ZW9mKCp1aW9tZW0pKTsKPj4gKwkJfQo+PiArCQl1aW9tZW0rKzsKPj4gKwl9Cj4+ICsKPj4gKwlr ZnJlZShpbmZvLT5uYW1lKTsKPgo+VGhhdCdzIGEgYml0IHVuYmFsYW5jZWQuIFRoaXMgZnVuY3Rp b24gaXMgaGFuZHkgZm9yIHRoZSB0aGluZ3MgYWxsb2NhdGVkIAo+aW5zaWRlIHRoZSBsb29wLCBi dXQgZm9yIHRoZSBpbmZvLT5uYW1lIGFsbG9jYXRlZCBvdXRzaWRlIHRoZSBsb29wLCBpdCAKPnNo b3VsZCBiZSByZWxlYXNlZCBvdXRzaWRlIHRoaXMgZnVuY3Rpb24uCj4KPkF0IHRoZSBlbmQgaWYg eW91IHVzZSBkZXZtX2tzdHJkdXAoKSwgaXQgd2lsbCB2b2lkIGFueXdheS4KPgo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IHVpb19mc2xfODV4eF9jYWNoZV9zcmFtX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQg PSBwZGV2LT5kZXYub2Zfbm9kZTsKPj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBOVUxM Owo+PiArCXN0cnVjdCB1aW9faW5mbyAqaW5mbzsKPj4gKwlzdHJ1Y3QgdWlvX21lbSAqdWlvbWVt Owo+PiArCWNvbnN0IGNoYXIgKmR0X25hbWU7Cj4+ICsJdTMyIG1lbV9zaXplOwo+PiArCWludCBy ZXQ7Cj4+ICsKPj4gKwkvKiBhbGxvYyB1aW9faW5mbyBmb3Igb25lIGRldmljZSAqLwo+PiArCWlu Zm8gPSBremFsbG9jKHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwo+Cj5NYXliZSB1c2UgZGV2 bV9remFsbG9jKCkuIFRoYXQgd2F5LCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZnJlZWQgd2hl biAKPnRoZSBkcml2ZXIgaXMgcmVsZWFzZWQsIGJvdGggYSBub3JtYWwgcmVsZWFzZSBhbmQgb24g cHJvYmUgZmFpbHVyZS4KPgo+PiArCWlmICghaW5mbykKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ ICsKPj4gKwkvKiBnZXQgb3B0aW9uYWwgdWlvIG5hbWUgKi8KPj4gKwlpZiAob2ZfcHJvcGVydHlf cmVhZF9zdHJpbmcocGFyZW50LCAidWlvX25hbWUiLCAmZHRfbmFtZSkpCj4+ICsJCWR0X25hbWUg PSBVSU9fTkFNRTsKPj4gKwo+PiArCWluZm8tPm5hbWUgPSBrc3RyZHVwKGR0X25hbWUsIEdGUF9L RVJORUwpOwo+Cj5DYW4gdXNlIGRldm1fa3N0cmR1cCgpCj4KPj4gKwlpZiAoIWluZm8tPm5hbWUp IHsKPj4gKwkJcmV0ID0gLUVOT01FTTsKPgo+SWYgdXNpbmcgZGV2bV9remFsbG9jKCksIHlvdSBj YW4gdGhlbiBkaXJlY3RseSBkbyByZXR1cm4gLUVOT01FTSwgYW5kIAo+dGhlIHJlbGVhc2Ugd2ls bCBiZSBhdXRvbWF0aWMuCj4KPj4gKwkJZ290byBlcnJfaW5mb19mcmVlOwo+PiArCX0KPj4gKwo+ PiArCXVpb21lbSA9IGluZm8tPm1lbTsKPj4gKwlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKHBhcmVu dCwgbm9kZSkgewo+PiArCQl2b2lkICp2aXJ0Owo+PiArCQlwaHlzX2FkZHJfdCBwaHlzOwo+PiAr Cj4+ICsJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJjYWNoZS1tZW0tc2l6ZSIs ICZtZW1fc2l6ZSk7Cj4+ICsJCWlmIChyZXQpIHsKPj4gKwkJCXJldCA9IC1FSU5WQUw7Cj4+ICsJ CQlnb3RvIGVycl9pbmZvX2ZyZWVfaW50ZXJuYWw7Cj4+ICsJCX0KPj4gKwo+PiArCQlpZiAobWVt X3NpemUgPT0gMCkgewo+PiArCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2FjaGUtbWVtLXNpemUg c2hvdWxkIG5vdCBiZSAwXG4iKTsKPj4gKwkJCXJldCA9IC1FSU5WQUw7Cj4+ICsJCQlnb3RvIGVy cl9pbmZvX2ZyZWVfaW50ZXJuYWw7Cj4+ICsJCX0KPj4gKwo+PiArCQl2aXJ0ID0gbXBjODV4eF9j YWNoZV9zcmFtX2FsbG9jKG1lbV9zaXplLAo+PiArCQkJCQkJJnBoeXMsCj4KPkkgdGhpbmsgJnBo eXMgY2FuIGZpdCBvbiBmaXJzdCBsaW5lLgo+Cj4+ICsJCQkJCQlyb3VuZHVwX3Bvd19vZl90d28o bWVtX3NpemUpKTsKPj4gKwkJaWYgKCF2aXJ0KSB7Cj4+ICsJCQkvKiBtcGM4NXh4X2NhY2hlX3Ny YW1fYWxsb2MgdG8gZGVmaW5lIHRoZSByZWFsIGNhdXNlICovCj4+ICsJCQlyZXQgPSAtRU5PTUVN Owo+PiArCQkJZ290byBlcnJfaW5mb19mcmVlX2ludGVybmFsOwo+PiArCQl9Cj4+ICsKPj4gKwkJ dWlvbWVtLT5tZW10eXBlID0gVUlPX01FTV9QSFlTOwo+PiArCQl1aW9tZW0tPmFkZHIgPSBwaHlz Owo+PiArCQl1aW9tZW0tPnNpemUgPSBtZW1fc2l6ZTsKPj4gKwkJdWlvbWVtLT5uYW1lID0ga3N0 cmR1cChub2RlLT5uYW1lLCBHRlBfS0VSTkVMKTs7Cj4KPlVzZSBkZXZtX2tzdHJkdXAoKQo+Cj4+ ICsJCXVpb21lbS0+aW50ZXJuYWxfYWRkciA9IHZpcnQ7Cj4+ICsJCXVpb21lbSsrOwo+PiArCj4+ ICsJCWlmICh1aW9tZW0gPj0gJmluZm8tPm1lbVtNQVhfVUlPX01BUFNdKSB7Cj4+ICsJCQlkZXZf d2FybigmcGRldi0+ZGV2LCAibW9yZSB0aGFuICVkIHVpby1tYXBzIGZvciBkZXZpY2UuXG4iLAo+ PiArCQkJCSBNQVhfVUlPX01BUFMpOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsK Pj4gKwlpZiAodWlvbWVtID09IGluZm8tPm1lbSkgewo+PiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJlcnJvciBubyB2YWxpZCB1aW8tbWFwIGNvbmZpZ3VyZWRcbiIpOwo+PiArCQlyZXQgPSAtRUlO VkFMOwo+PiArCQlnb3RvIGVycl9pbmZvX2ZyZWVfaW50ZXJuYWw7Cj4KPklzIHRoZXJlIGFueXRo aW5nIHRvIGZyZWUgdXAgaWYgbm90aGluZyBoYXMgYmVlbiBhbGxvY2F0ZWQgPwo+Cj4+ICsJfQo+ PiArCj4+ICsJaW5mby0+dmVyc2lvbiA9IFVJT19JTkZPX1ZFUjsKPj4gKwo+PiArCS8qIHJlZ2lz dGVyIHVpbyBkZXZpY2UgKi8KPj4gKwlpZiAodWlvX3JlZ2lzdGVyX2RldmljZSgmcGRldi0+ZGV2 LCBpbmZvKSkgewo+PiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1aW8gcmVnaXN0cmF0aW9uIGZh aWxlZFxuIik7Cj4+ICsJCXJldCA9IC1FTk9ERVY7Cj4+ICsJCWdvdG8gZXJyX2luZm9fZnJlZV9p bnRlcm5hbDsKPj4gKwl9Cj4+ICsKPj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBpbmZv KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArZXJyX2luZm9fZnJlZV9pbnRlcm5hbDoKPj4gKwl1 aW9faW5mb19mcmVlX2ludGVybmFsKGluZm8pOwo+PiArZXJyX2luZm9fZnJlZToKPj4gKwlrZnJl ZShpbmZvKTsKPgo+U2hvdWxkbid0IGJlIG5lZWRlZCB3aGVuIHVzaW5nIGRldm1fa3phbGxvYygp Lgo+Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB1aW9fZnNsXzg1 eHhfY2FjaGVfc3JhbV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sK Pj4gKwlzdHJ1Y3QgdWlvX2luZm8gKmluZm8gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK Pj4gKwo+PiArCXVpb191bnJlZ2lzdGVyX2RldmljZShpbmZvKTsKPj4gKwo+PiArCXVpb19pbmZv X2ZyZWVfaW50ZXJuYWwoaW5mbyk7Cj4+ICsKPj4gKwlrZnJlZShpbmZvKTsKPgo+Tm90IG5lZWRl ZCB3aGVuIHVzaW5nIGRldl9remFsbG9jKCkKPgo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHVpb19tcGM4NXh4X2wyY3Rs cl9vZl9tYXRjaFtdID0gewo+PiArCXsJLmNvbXBhdGlibGUgPSAidWlvLG1wYzg1eHgtY2FjaGUt c3JhbSIsCX0sCj4+ICsJe30sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RyaXZlciB1aW9fZnNsXzg1eHhfY2FjaGVfc3JhbSA9IHsKPj4gKwkucHJvYmUgPSB1aW9fZnNs Xzg1eHhfY2FjaGVfc3JhbV9wcm9iZSwKPj4gKwkucmVtb3ZlID0gdWlvX2ZzbF84NXh4X2NhY2hl X3NyYW1fcmVtb3ZlLAo+PiArCS5kcml2ZXIgPSB7Cj4+ICsJCS5uYW1lID0gRFJJVkVSX05BTUUs Cj4+ICsJCS5vd25lciA9IFRISVNfTU9EVUxFLAo+PiArCQkub2ZfbWF0Y2hfdGFibGUJPSB1aW9f bXBjODV4eF9sMmN0bHJfb2ZfbWF0Y2gsCj4+ICsJfSwKPj4gK307Cj4+ICsKPj4gK21vZHVsZV9w bGF0Zm9ybV9kcml2ZXIodWlvX2ZzbF84NXh4X2NhY2hlX3NyYW0pOwo+PiArCj4+ICtNT0RVTEVf QVVUSE9SKCJXYW5nIFdlbmh1IDx3ZW5odS53YW5nQHZpdm8uY29tPiIpOwo+PiArTU9EVUxFX0RF U0NSSVBUSU9OKCJGcmVlc2NhbGUgTVBDODV4eCBDYWNoZS1TcmFtIFVJTyBQbGF0Zm9ybSBEcml2 ZXIiKTsKPj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7Cj4+ICtNT0RV TEVfTElDRU5TRSgiR1BMIHYyIik7Cj4+IAo+Cj5DaHJpc3RvcGhlCg0KDQo=