From mboxrd@z Thu Jan 1 00:00:00 1970 From: "He, Min" Subject: Re: [PATCH v4] drm/i915/gvt: Change KVMGT as self load module Date: Fri, 7 Dec 2018 07:47:59 +0000 Message-ID: References: <20181203040550.5171-4-zhenyuw@linux.intel.com> <20181204024028.11311-1-zhenyuw@linux.intel.com> <20181206042759.GD12743@zhen-hp.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181206042759.GD12743@zhen-hp.sh.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhenyu Wang , "Yuan, Hang" , "Wang, Zhi A" , "Zhang, Xiong Y" Cc: "intel-gfx@lists.freedesktop.org" , "intel-gvt-dev@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org Wmhlbnl1LApPdmVyYWxsIEkgdGhpbmsgdGhlIGltcGFjdCB0byBBY3JuR1QgaXMgbm90IGJpZywg d2UgY2FuIG1vZGlmeSBvdXIgY29kZSB0byBhZGFwdAp0byB0aGUgbmV3IGludGVyZmFjZXMuIApC dXQgSSBoYXZlIHNvbWUgY29tbWVudHMgZW1iZWRkZWQuIAoKPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+IEZyb206IFpoZW55dSBXYW5nIFttYWlsdG86emhlbnl1d0BsaW51eC5pbnRlbC5j b21dCj4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDYsIDIwMTggMTI6MjggUE0KPiBUbzogWXVh biwgSGFuZyA8aGFuZy55dWFuQGludGVsLmNvbT47IFdhbmcsIFpoaSBBCj4gPHpoaS5hLndhbmdA aW50ZWwuY29tPjsgWmhhbmcsIFhpb25nIFkgPHhpb25nLnkuemhhbmdAaW50ZWwuY29tPjsgSGUs Cj4gTWluIDxtaW4uaGVAaW50ZWwuY29tPgo+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnOyBBbGV4IFdpbGxpYW1zb24KPiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+OyBp bnRlbC1ndnQtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djRdIGRybS9pOTE1L2d2dDogQ2hhbmdlIEtWTUdUIGFzIHNlbGYgbG9hZCBtb2R1bGUKPiAKPiAK PiBQaW5nIGZvciBhbnkgbW9yZSBjb21tZW50cz8gT3IgYWNrPwo+IAo+IEFkZGluZyBNaW4sIGZv ciBoZWFkLXVwIG5vdGlmeSwgSSd2ZSBtb3ZlZCAna3ZtZ3QnIGludG8gc2VsZiBsb2FkCj4gbW9k dWxlIGluc3RlYWQgb2YgbG9hZGVkIGJ5IGk5MTUvZ3Z0LCBpbiBvcmRlciB0byBjbGVhbiB1cCB0 aGUKPiBkZXBlbmRlbmNlLCBzbyBuZWVkIHRvIGxvYWQgJ2t2bWd0LmtvJyB0byBlbmFibGUgR1ZU IHRocm91Z2gKPiBWRklPL21kZXYuIEh5cGVydmlzb3IgbW9kdWxlIG5lZWRzIHRvIGNhbGwgbmV3 IHJlZ2lzdGVyL3VucmVnaXN0ZXIKPiBmdW5jdGlvbiB0byBpbml0aWFsaXplIGh5cGVydmlzb3Ig c3BlY2lmaWMgaW50ZXJmYWNlIGZvciBHVlQuIElmCj4gQWNybkdUIHJlYmFzZSBvbiB0aGlzLCBp dCBtYXkgbmVlZCB0byBjaGFuZ2UgaW5pdGlhbCBzZXR1cCB0b28sIHNvCj4gY291bGQgeW91IGRv dWJsZSBjaGVjaz8KPiAKPiB0aGFua3MKPiAKPiBPbiAyMDE4LjEyLjA0IDEwOjQwOjI4ICswODAw LCBaaGVueXUgV2FuZyB3cm90ZToKPiA+IFRoaXMgdHJ5cyB0byBtYWtlICdrdm1ndCcgbW9kdWxl IGFzIHNlbGYgbG9hZGFibGUgaW5zdGVhZCBvZiBsb2FkaW5nCj4gPiBieSBpOTE1L2d2dCBkZXZp Y2UgbW9kZWwuIFNvIGh5cGVydmlzb3Igc3BlY2lmaWMgbW9kdWxlIGNvdWxkIGJlCj4gPiBzdGFu ZC1hbG9uZSwgZS5nIG9ubHkgYWZ0ZXIgbG9hZGluZyBoeXBlcnZpc29yIHNwZWNpZmljIG1vZHVs ZSwgR1ZUCj4gPiBmZWF0dXJlIGNvdWxkIGJlIGVuYWJsZWQgdmlhIHNwZWNpZmljIGh5cGVydmlz b3IgaW50ZXJmYWNlLCBlLmcgVkZJTy9tZGV2Lgo+ID4KPiA+IFNvIHRoaXMgdHJ5cyB0byB1c2Ug aHlwZXJ2aXNvciBtb2R1bGUgcmVnaXN0ZXIvdW5yZWdpc3RlciBpbnRlcmZhY2UKPiA+IGZvciB0 aGF0LiBIeXBlcnZpc29yIG1vZHVsZSBuZWVkcyB0byB0YWtlIGNhcmUgb2YgbW9kdWxlIHJlZmVy ZW5jZQo+ID4gaXRzZWxmIHdoZW4gd29ya2luZyBmb3IgaHlwZXJ2aXNvciBpbnRlcmZhY2UsIGUu ZyBmb3IgVkZJTy9tZGV2LAo+ID4gaHlwZXJ2aXNvciBtb2R1bGUgd291bGQgcmVmZXJlbmNlIGNv dW50aW5nIG1kZXYgd2hlbiBvcGVuIGFuZCByZWxlYXNlLgo+ID4KPiA+IFRoaXMgbWFrZXMgJ2t2 bWd0JyBtb2R1bGUgcmVhbGx5IHNwbGl0IGZyb20gR1ZUIGRldmljZSBtb2RlbC4gVXNlcgo+ID4g bmVlZHMgdG8gbG9hZCAna3ZtZ3QnIHRvIGVuYWJsZSBWRklPL21kZXYgaW50ZXJmYWNlLgo+ID4K PiA+IHY0Ogo+ID4gLSBmaXggY2hlY2twYXRjaCB3YXJuaW5nCj4gPgo+ID4gdjM6Cj4gPiAtIEZp eCBtb2R1bGUgcmVmZXJlbmNlIGhhbmRsaW5nIGZvciBkZXZpY2Ugb3BlbiBhbmQgcmVsZWFzZS4g VW51c2VkCj4gPiAgIG1kZXYgZGV2aWNlcyB3b3VsZCBiZSBjbGVhbmVkIHVwIGluIGRldmljZSB1 bnJlZ2lzdGVyIHdoZW4gbW9kdWxlCj4gdW5sb2FkLgo+ID4KPiA+IHYyOgo+ID4gLSBGaXgga3Zt Z3Qgb3JkZXIgYWZ0ZXIgaTkxNSBmb3IgYnVpbHQtaW4gY2FzZQo+ID4KPiA+IENjOiBBbGV4IFdp bGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTog Wmhlbnl1IFdhbmcgPHpoZW55dXdAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgfCAgIDEgLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuYyAgICAgICB8IDEwNyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmggICAgICAgfCAgIDYgKy0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggfCAgIDcgKy0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQva3ZtZ3QuYyAgICAgfCAgMjEgKysrKystCj4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L21wdC5oICAgICAgIHwgICAzICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndnQuYyAgICAgfCAgIDkgLS0tCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRp b25zKCspLCA4MyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiBp bmRleCAwZmY4NzhjOTk0ZTIuLmFlMGQ5NzVhNmYzNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQo+ID4gQEAgLTE5NSwzICsxOTUsNCBAQCBlbmRpZgo+ID4gIGk5MTUteSArPSBpbnRlbF9s cGVfYXVkaW8ubwo+ID4KPiA+ICBvYmotJChDT05GSUdfRFJNX0k5MTUpICs9IGk5MTUubwo+ID4g K29iai0kKENPTkZJR19EUk1fSTkxNV9HVlRfS1ZNR1QpICs9IGd2dC9rdm1ndC5vCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKPiA+IGluZGV4IGIwMTZkYzc1M2RiOS4uMjcxZmI0NmQ0 ZGQwIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKPiA+IEBAIC03LDQgKzcs MyBAQCBHVlRfU09VUkNFIDo9IGd2dC5vIGFwZXJ0dXJlX2dtLm8gaGFuZGxlcnMubyB2Z3B1Lm8K PiB0cmFjZV9wb2ludHMubyBmaXJtd2FyZS5vIFwKPiA+Cj4gPiAgY2NmbGFncy15CQkJCSs9IC1J JChzcmMpIC1JJChzcmMpLyQoR1ZUX0RJUikKPiA+ICBpOTE1LXkJCQkJCSs9ICQoYWRkcHJlZml4 ICQoR1ZUX0RJUikvLAo+ICQoR1ZUX1NPVVJDRSkpCj4gPiAtb2JqLSQoQ09ORklHX0RSTV9JOTE1 X0dWVF9LVk1HVCkJKz0gJChHVlRfRElSKS9rdm1ndC5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0 LmMKPiA+IGluZGV4IGE1Yjc2MGI3YmMxMC4uZTFjOWMyMDkxOGFmIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmMKPiA+IEBAIC0xODcsNTIgKzE4Nyw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfZ3Z0X29wcyBpbnRlbF9ndnRfb3BzID0gewo+ID4gIAkud3JpdGVfcHJvdGVjdF9o YW5kbGVyID0gaW50ZWxfdmdwdV9wYWdlX3RyYWNrX2hhbmRsZXIsCj4gPiAgfTsKPiA+Cj4gPiAt LyoqCj4gPiAtICogaW50ZWxfZ3Z0X2luaXRfaG9zdCAtIExvYWQgTVBUIG1vZHVsZXMgYW5kIGRl dGVjdCBpZiB3ZSdyZSBydW5uaW5nIGluCj4gaG9zdAo+ID4gLSAqCj4gPiAtICogVGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgYXQgdGhlIGRyaXZlciBsb2FkaW5nIHN0YWdlLiBJZiBmYWlsZWQgdG8g ZmluZCBhCj4gPiAtICogbG9hZGFibGUgTVBUIG1vZHVsZSBvciBkZXRlY3QgY3VycmVudGx5IHdl J3JlIHJ1bm5pbmcgaW4gYSBWTSwgdGhlbgo+IEdWVC1nCj4gPiAtICogd2lsbCBiZSBkaXNhYmxl ZAo+ID4gLSAqCj4gPiAtICogUmV0dXJuczoKPiA+IC0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0 aXZlIGVycm9yIGNvZGUgaWYgZmFpbGVkLgo+ID4gLSAqCj4gPiAtICovCj4gPiAtaW50IGludGVs X2d2dF9pbml0X2hvc3Qodm9pZCkKPiA+IC17Cj4gPiAtCWlmIChpbnRlbF9ndnRfaG9zdC5pbml0 aWFsaXplZCkKPiA+IC0JCXJldHVybiAwOwo+ID4gLQo+ID4gLQkvKiBYZW4gRE9NIFUgKi8KPiA+ IC0JaWYgKHhlbl9kb21haW4oKSAmJiAheGVuX2luaXRpYWxfZG9tYWluKCkpCj4gPiAtCQlyZXR1 cm4gLUVOT0RFVjsKPiA+IC0KPiA+IC0JLyogVHJ5IHRvIGxvYWQgTVBUIG1vZHVsZXMgZm9yIGh5 cGVydmlzb3JzICovCj4gPiAtCWlmICh4ZW5faW5pdGlhbF9kb21haW4oKSkgewo+ID4gLQkJLyog SW4gWGVuIGRvbTAgKi8KPiA+IC0JCWludGVsX2d2dF9ob3N0Lm1wdCA9IHRyeV90aGVuX3JlcXVl c3RfbW9kdWxlKAo+ID4gLQkJCQlzeW1ib2xfZ2V0KHhlbmd0X21wdCksICJ4ZW5ndCIpOwo+ID4g LQkJaW50ZWxfZ3Z0X2hvc3QuaHlwZXJ2aXNvcl90eXBlID0KPiBJTlRFTF9HVlRfSFlQRVJWSVNP Ul9YRU47Cj4gPiAtCX0gZWxzZSB7Cj4gPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1 X0dWVF9LVk1HVCkKPiA+IC0JCS8qIG5vdCBpbiBYZW4uIFRyeSBLVk1HVCAqLwo+ID4gLQkJaW50 ZWxfZ3Z0X2hvc3QubXB0ID0gdHJ5X3RoZW5fcmVxdWVzdF9tb2R1bGUoCj4gPiAtCQkJCXN5bWJv bF9nZXQoa3ZtZ3RfbXB0KSwgImt2bWd0Iik7Cj4gPiAtCQlpbnRlbF9ndnRfaG9zdC5oeXBlcnZp c29yX3R5cGUgPQo+IElOVEVMX0dWVF9IWVBFUlZJU09SX0tWTTsKPiA+IC0jZW5kaWYKPiA+IC0J fQo+ID4gLQo+ID4gLQkvKiBGYWlsIHRvIGxvYWQgTVBUIG1vZHVsZXMgLSBiYWlsIG91dCAqLwo+ ID4gLQlpZiAoIWludGVsX2d2dF9ob3N0Lm1wdCkKPiA+IC0JCXJldHVybiAtRUlOVkFMOwo+ID4g LQo+ID4gLQlndnRfZGJnX2NvcmUoIlJ1bm5pbmcgd2l0aCBoeXBlcnZpc29yICVzIGluIGhvc3Qg bW9kZVxuIiwKPiA+IC0KPiAJc3VwcG9ydGVkX2h5cGVydmlzb3JzW2ludGVsX2d2dF9ob3N0Lmh5 cGVydmlzb3JfdHlwZV0pOwo+ID4gLQo+ID4gLQlpbnRlbF9ndnRfaG9zdC5pbml0aWFsaXplZCA9 IHRydWU7Cj4gPiAtCXJldHVybiAwOwo+ID4gLX0KPiA+IC0KPiA+ICBzdGF0aWMgdm9pZCBpbml0 X2RldmljZV9pbmZvKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBp bnRlbF9ndnRfZGV2aWNlX2luZm8gKmluZm8gPSAmZ3Z0LT5kZXZpY2VfaW5mbzsKPiA+IEBAIC0z MTYsNyArMjcwLDYgQEAgdm9pZCBpbnRlbF9ndnRfY2xlYW5fZGV2aWNlKHN0cnVjdAo+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAkJcmV0dXJuOwo+ID4KPiA+ICAJaW50ZWxfZ3Z0 X2Rlc3Ryb3lfaWRsZV92Z3B1KGd2dC0+aWRsZV92Z3B1KTsKPiA+IC0JaW50ZWxfZ3Z0X2h5cGVy dmlzb3JfaG9zdF9leGl0KCZkZXZfcHJpdi0+ZHJtLnBkZXYtPmRldik7Cj4gPiAgCWludGVsX2d2 dF9jbGVhbnVwX3ZncHVfdHlwZV9ncm91cHMoZ3Z0KTsKPiA+ICAJaW50ZWxfZ3Z0X2NsZWFuX3Zn cHVfdHlwZXMoZ3Z0KTsKPiA+Cj4gPiBAQCAtMzUyLDEzICszMDUsNiBAQCBpbnQgaW50ZWxfZ3Z0 X2luaXRfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KQo+ID4gIAlz dHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdTsKPiA+ICAJaW50IHJldDsKPiA+Cj4gPiAtCS8qCj4gPiAt CSAqIENhbm5vdCBpbml0aWFsaXplIEdWVCBkZXZpY2Ugd2l0aG91dCBpbnRlbF9ndnRfaG9zdCBn ZXRzCj4gPiAtCSAqIGluaXRpYWxpemVkIGZpcnN0Lgo+ID4gLQkgKi8KPiA+IC0JaWYgKFdBUk5f T04oIWludGVsX2d2dF9ob3N0LmluaXRpYWxpemVkKSkKPiA+IC0JCXJldHVybiAtRUlOVkFMOwo+ ID4gLQo+ID4gIAlpZiAoV0FSTl9PTihkZXZfcHJpdi0+Z3Z0KSkKPiA+ICAJCXJldHVybiAtRUVY SVNUOwo+ID4KPiA+IEBAIC00MjAsMTMgKzM2Niw2IEBAIGludCBpbnRlbF9ndnRfaW5pdF9kZXZp Y2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYpCj4gPiAgCQlnb3RvIG91dF9j bGVhbl90eXBlczsKPiA+ICAJfQo+ID4KPiA+IC0JcmV0ID0gaW50ZWxfZ3Z0X2h5cGVydmlzb3Jf aG9zdF9pbml0KCZkZXZfcHJpdi0+ZHJtLnBkZXYtPmRldiwgZ3Z0LAo+ID4gLQkJCQkmaW50ZWxf Z3Z0X29wcyk7Cj4gPiAtCWlmIChyZXQpIHsKPiA+IC0JCWd2dF9lcnIoImZhaWxlZCB0byByZWdp c3RlciBndnQtZyBob3N0IGRldmljZTogJWRcbiIsIHJldCk7Cj4gPiAtCQlnb3RvIG91dF9jbGVh bl90eXBlczsKPiA+IC0JfQo+ID4gLQo+ID4gIAl2Z3B1ID0gaW50ZWxfZ3Z0X2NyZWF0ZV9pZGxl X3ZncHUoZ3Z0KTsKPiA+ICAJaWYgKElTX0VSUih2Z3B1KSkgewo+ID4gIAkJcmV0ID0gUFRSX0VS Uih2Z3B1KTsKPiA+IEBAIC00NDEsNiArMzgwLDggQEAgaW50IGludGVsX2d2dF9pbml0X2Rldmlj ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdikKPiA+Cj4gPiAgCWd2dF9kYmdf Y29yZSgiZ3Z0IGRldmljZSBpbml0aWFsaXphdGlvbiBpcyBkb25lXG4iKTsKPiA+ICAJZGV2X3By aXYtPmd2dCA9IGd2dDsKPiA+ICsJaW50ZWxfZ3Z0X2hvc3QuZGV2ID0gJmRldl9wcml2LT5kcm0u cGRldi0+ZGV2Owo+ID4gKwlpbnRlbF9ndnRfaG9zdC5pbml0aWFsaXplZCA9IHRydWU7Cj4gPiAg CXJldHVybiAwOwo+ID4KPiA+ICBvdXRfY2xlYW5fdHlwZXM6Cj4gPiBAQCAtNDY3LDYgKzQwOCw0 NCBAQCBpbnQgaW50ZWxfZ3Z0X2luaXRfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4g KmRldl9wcml2KQo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIH0KPiA+Cj4gPiAtI2lmIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X0dWVF9LVk1HVCkKPiA+IC1NT0RVTEVfU09GVERFUCgicHJlOiBr dm1ndCIpOwo+ID4gLSNlbmRpZgo+ID4gK2ludAo+ID4gK2ludGVsX2d2dF9yZWdpc3Rlcl9oeXBl cnZpc29yKHN0cnVjdCBpbnRlbF9ndnRfbXB0ICptKQo+ID4gK3sKPiA+ICsJaW50IHJldDsKPiA+ ICsJdm9pZCAqZ3Z0Owo+ID4gKwo+ID4gKwlpZiAoIWludGVsX2d2dF9ob3N0LmluaXRpYWxpemVk KQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiArCj4gPiArCWlmIChtLT50eXBlICE9IElOVEVM X0dWVF9IWVBFUlZJU09SX0tWTSAmJgo+ID4gKwkgICAgbS0+dHlwZSAhPSBJTlRFTF9HVlRfSFlQ RVJWSVNPUl9YRU4pCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsJLyogR2V0IGEg cmVmZXJlbmNlIGZvciBkZXZpY2UgbW9kZWwgbW9kdWxlICovCj4gPiArCWlmICghdHJ5X21vZHVs ZV9nZXQoVEhJU19NT0RVTEUpKQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiArCj4gPiArCWlu dGVsX2d2dF9ob3N0Lm1wdCA9IG07Cj4gPiArCWludGVsX2d2dF9ob3N0Lmh5cGVydmlzb3JfdHlw ZSA9IG0tPnR5cGU7Cj4gPiArCWd2dCA9ICh2b2lkICopa2Rldl90b19pOTE1KGludGVsX2d2dF9o b3N0LmRldiktPmd2dDsKPiA+ICsKPiA+ICsJcmV0ID0gaW50ZWxfZ3Z0X2h5cGVydmlzb3JfaG9z dF9pbml0KGludGVsX2d2dF9ob3N0LmRldiwgZ3Z0LAo+ID4gKwkJCQkJICAgICAmaW50ZWxfZ3Z0 X29wcyk7CkkgdGhpbmsgd2UgY2FuIHJlbW92ZSB0aGUgaG9zdF9pbml0IGFuZCBob3N0X2V4aXQg aW50ZXJmYWNlcywgc2luY2Ugbm93Cml0J3MgbXB0IG1vZHVsZXMgd2hvIHByb2FjdGl2ZWx5IGNh bGwgdGhlIEdWVC1nIHRvIGluaXRpYWxpemUgYW5kIHVuLWluaXRpYWxpemUsClRodXMgd2UgY2Fu IHJldHVybiB0aGUgaW50ZWxfZ3Z0X29wcyBpbiBpbnRlbF9ndnRfcmVnaXN0ZXJfaHlwZXJ2aXNv cigpIGFuZAptb2R1ZWxzIGluaXRpYWxpemUgaXRzIHJlc3QgcGFydC4gCkN1cnJlbnQga3ZtZ3Rf aW5pdC0+IGludGVsX2d2dF9yZWdpc3Rlcl9oeXBlcnZpc29yLT5ob3N0X2luaXQgc2VlbXMgYSBs aXR0bGUgYml0CnJlZHVuZGFudC4KQnV0IGl0J3MgdXAgdG8geW91IHRvIG1ha2UgdGhlIGNhbGwg dG8gcmVtb3ZlIGl0IGluIHRoaXMgcGF0Y2ggb3Igb3RoZXIgZnVydHVyZQpvcHRpbWl6YXRpb24g cGF0Y2hlcy4KCj4gPiArCWlmIChyZXQgPCAwKSB7Cj4gPiArCQlndnRfZXJyKCJGYWlsZWQgdG8g aW5pdCAlcyBoeXBlcnZpc29yIG1vZHVsZVxuIiwKPiA+ICsKPiAJc3VwcG9ydGVkX2h5cGVydmlz b3JzW2ludGVsX2d2dF9ob3N0Lmh5cGVydmlzb3JfdHlwZV0pOwo+ID4gKwkJcmV0dXJuIC1FTk9E RVY7Cj4gPiArCX0KPiA+ICsJZ3Z0X2RiZ19jb3JlKCJSdW5uaW5nIHdpdGggaHlwZXJ2aXNvciAl cyBpbiBob3N0IG1vZGVcbiIsCj4gPiArCQkgICAgIHN1cHBvcnRlZF9oeXBlcnZpc29yc1tpbnRl bF9ndnRfaG9zdC5oeXBlcnZpc29yX3R5cGVdKTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKGludGVsX2d2dF9yZWdpc3Rlcl9oeXBlcnZpc29yKTsKPiA+ICsK PiA+ICt2b2lkCj4gPiAraW50ZWxfZ3Z0X3VucmVnaXN0ZXJfaHlwZXJ2aXNvcih2b2lkKQo+ID4g K3sKPiA+ICsJaW50ZWxfZ3Z0X2h5cGVydmlzb3JfaG9zdF9leGl0KGludGVsX2d2dF9ob3N0LmRl dik7Cj4gPiArCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lN Qk9MX0dQTChpbnRlbF9ndnRfdW5yZWdpc3Rlcl9oeXBlcnZpc29yKTsKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuaAo+ID4gaW5kZXggYjRhYjFkYWQwMTQzLi44YTRjZjk5NWQ3NTUgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+ID4gQEAgLTUyLDEyICs1Miw4IEBACj4gPgo+ID4gICNk ZWZpbmUgR1ZUX01BWF9WR1BVIDgKPiA+Cj4gPiAtZW51bSB7Cj4gPiAtCUlOVEVMX0dWVF9IWVBF UlZJU09SX1hFTiA9IDAsCj4gPiAtCUlOVEVMX0dWVF9IWVBFUlZJU09SX0tWTSwKPiA+IC19Owo+ ID4gLQo+ID4gIHN0cnVjdCBpbnRlbF9ndnRfaG9zdCB7Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRl djsKPiA+ICAJYm9vbCBpbml0aWFsaXplZDsKPiA+ICAJaW50IGh5cGVydmlzb3JfdHlwZTsKPiA+ ICAJc3RydWN0IGludGVsX2d2dF9tcHQgKm1wdDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9o eXBlcmNhbGwuaAo+ID4gaW5kZXggZTQ5YTkyNDdlZDc4Li41MDc5ODg2OGFiMTUgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAo+ID4gQEAgLTMzLDExICszMywxNyBA QAo+ID4gICNpZm5kZWYgX0dWVF9IWVBFUkNBTExfSF8KPiA+ICAjZGVmaW5lIF9HVlRfSFlQRVJD QUxMX0hfCj4gPgo+ID4gK2VudW0gaHlwZXJ2aXNvcl90eXBlIHsKPiA+ICsJSU5URUxfR1ZUX0hZ UEVSVklTT1JfWEVOID0gMCwKPiA+ICsJSU5URUxfR1ZUX0hZUEVSVklTT1JfS1ZNLAo+ID4gK307 Cj4gPiArCj4gPiAgLyoKPiA+ICAgKiBTcGVjaWZpYyBHVlQtZyBNUFQgbW9kdWxlcyBmdW5jdGlv biBjb2xsZWN0aW9ucy4gQ3VycmVudGx5IEdWVC1nCj4gc3VwcG9ydHMKPiA+ICAgKiBib3RoIFhl biBhbmQgS1ZNIGJ5IHByb3ZpZGluZyBkZWRpY2F0ZWQgaHlwZXJ2aXNvci1yZWxhdGVkIE1QVAo+ IG1vZHVsZXMuCj4gPiAgICovCj4gPiAgc3RydWN0IGludGVsX2d2dF9tcHQgewo+ID4gKwllbnVt IGh5cGVydmlzb3JfdHlwZSB0eXBlOwo+ID4gIAlpbnQgKCpob3N0X2luaXQpKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqZ3Z0LCBjb25zdCB2b2lkICpvcHMpOwo+ID4gIAl2b2lkICgqaG9zdF9l eGl0KShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gIAlpbnQgKCphdHRhY2hfdmdwdSkodm9pZCAq dmdwdSwgdW5zaWduZWQgbG9uZyAqaGFuZGxlKTsKPiA+IEBAIC02Nyw2ICs3Myw1IEBAIHN0cnVj dCBpbnRlbF9ndnRfbXB0IHsKPiA+ICB9Owo+ID4KPiA+ICBleHRlcm4gc3RydWN0IGludGVsX2d2 dF9tcHQgeGVuZ3RfbXB0OwpXZSBjYW4gcmVtb3ZlIHRoaXMgZGVmaW5pdGlvbiwgdG9vLiAKCj4g PiAtZXh0ZXJuIHN0cnVjdCBpbnRlbF9ndnRfbXB0IGt2bWd0X21wdDsKPiA+Cj4gPiAgI2VuZGlm IC8qIF9HVlRfSFlQRVJDQUxMX0hfICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2t2bWd0LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4g PiBpbmRleCAxYmJkMDRkMzBjNDIuLmVmMjQ4ZDU3N2U0OSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQva3ZtZ3QuYwo+ID4gQEAgLTUwLDYgKzUwLDcgQEAKPiA+ICAjaW5jbHVkZSAiZ3Z0Lmgi Cj4gPgo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ3Z0X29wcyAqaW50ZWxfZ3Z0X29w czsKPiA+ICtzdGF0aWMgc3RydWN0IGludGVsX2d2dCAqaW50ZWxfZ3Z0OwpUaGlzIHZhcmlhYmxl IGludGVsX2d2dCBzZWVtcyB1c2VsZXNzLgoKPiA+Cj4gPiAgLyogaGVscGVyIG1hY3JvcyBjb3Bp ZWQgZnJvbSB2ZmlvLXBjaSAqLwo+ID4gICNkZWZpbmUgVkZJT19QQ0lfT0ZGU0VUX1NISUZUICAg NDAKPiA+IEBAIC02MjcsNiArNjI4LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfdmdwdV9vcGVuKHN0 cnVjdCBtZGV2X2RldmljZQo+ICptZGV2KQo+ID4gIAkJZ290byB1bmRvX2lvbW11Owo+ID4gIAl9 Cj4gPgo+ID4gKwkvKiBUYWtlIGEgbW9kdWxlIHJlZmVyZW5jZSBhcyBtZGV2IGNvcmUgZG9lc24n dCB0YWtlCj4gPiArCSAqIGEgcmVmZXJlbmNlIGZvciB2ZW5kb3IgZHJpdmVyLgo+ID4gKwkgKi8K PiA+ICsJaWYgKCF0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSkpCj4gPiArCQlnb3RvIHVuZG9f Z3JvdXA7Cj4gPiArCj4gPiAgCXJldCA9IGt2bWd0X2d1ZXN0X2luaXQobWRldik7Cj4gPiAgCWlm IChyZXQpCj4gPiAgCQlnb3RvIHVuZG9fZ3JvdXA7Cj4gPiBAQCAtNjc5LDYgKzY4Niw5IEBAIHN0 YXRpYyB2b2lkIF9faW50ZWxfdmdwdV9yZWxlYXNlKHN0cnVjdCBpbnRlbF92Z3B1Cj4gKnZncHUp Cj4gPiAgCQkJCQkmdmdwdS0+dmRldi5ncm91cF9ub3RpZmllcik7Cj4gPiAgCVdBUk4ocmV0LCAi dmZpb191bnJlZ2lzdGVyX25vdGlmaWVyIGZvciBncm91cCBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ ID4KPiA+ICsJLyogZGVyZWZlcmVuY2UgbW9kdWxlIHJlZmVyZW5jZSB0YWtlbiBhdCBvcGVuICov Cj4gPiArCW1vZHVsZV9wdXQoVEhJU19NT0RVTEUpOwo+ID4gKwo+ID4gIAlpbmZvID0gKHN0cnVj dCBrdm1ndF9ndWVzdF9pbmZvICopdmdwdS0+aGFuZGxlOwo+ID4gIAlrdm1ndF9ndWVzdF9leGl0 KGluZm8pOwo+ID4KPiA+IEBAIC0xNDU5LDggKzE0NjksMTAgQEAgc3RhdGljIGludCBrdm1ndF9o b3N0X2luaXQoc3RydWN0IGRldmljZSAqZGV2LAo+IHZvaWQgKmd2dCwgY29uc3Qgdm9pZCAqb3Bz KQo+ID4gIAlzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqa3ZtX3ZncHVfdHlwZV9ncm91cHM7Cj4g Pgo+ID4gIAlpbnRlbF9ndnRfb3BzID0gb3BzOwo+ID4gKwlpbnRlbF9ndnQgPSAoc3RydWN0IGlu dGVsX2d2dCAqKWd2dDsKPiA+ICsKPiA+ICAJaWYgKCFpbnRlbF9ndnRfb3BzLT5nZXRfZ3Z0X2F0 dHJzKCZrdm1fdHlwZV9hdHRycywKPiA+IC0JCQkma3ZtX3ZncHVfdHlwZV9ncm91cHMpKQo+ID4g KwkJCQkJICAma3ZtX3ZncHVfdHlwZV9ncm91cHMpKQpVbnJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4K Cj4gPiAgCQlyZXR1cm4gLUVGQVVMVDsKPiA+ICAJaW50ZWxfdmdwdV9vcHMuc3VwcG9ydGVkX3R5 cGVfZ3JvdXBzID0ga3ZtX3ZncHVfdHlwZV9ncm91cHM7Cj4gPgo+ID4gQEAgLTE4NDksNyArMTg2 MSw4IEBAIHN0YXRpYyBib29sIGt2bWd0X2lzX3ZhbGlkX2dmbih1bnNpZ25lZCBsb25nCj4gaGFu ZGxlLCB1bnNpZ25lZCBsb25nIGdmbikKPiA+ICAJcmV0dXJuIHJldDsKPiA+ICB9Cj4gPgo+ID4g LXN0cnVjdCBpbnRlbF9ndnRfbXB0IGt2bWd0X21wdCA9IHsKPiA+ICtzdGF0aWMgc3RydWN0IGlu dGVsX2d2dF9tcHQga3ZtZ3RfbXB0ID0gewo+ID4gKwkudHlwZSA9IElOVEVMX0dWVF9IWVBFUlZJ U09SX0tWTSwKPiA+ICAJLmhvc3RfaW5pdCA9IGt2bWd0X2hvc3RfaW5pdCwKPiA+ICAJLmhvc3Rf ZXhpdCA9IGt2bWd0X2hvc3RfZXhpdCwKPiA+ICAJLmF0dGFjaF92Z3B1ID0ga3ZtZ3RfYXR0YWNo X3ZncHUsCj4gPiBAQCAtMTg2OCwxNSArMTg4MSwxNyBAQCBzdHJ1Y3QgaW50ZWxfZ3Z0X21wdCBr dm1ndF9tcHQgPSB7Cj4gPiAgCS5wdXRfdmZpb19kZXZpY2UgPSBrdm1ndF9wdXRfdmZpb19kZXZp Y2UsCj4gPiAgCS5pc192YWxpZF9nZm4gPSBrdm1ndF9pc192YWxpZF9nZm4sCj4gPiAgfTsKPiA+ IC1FWFBPUlRfU1lNQk9MX0dQTChrdm1ndF9tcHQpOwo+ID4KPiA+ICBzdGF0aWMgaW50IF9faW5p dCBrdm1ndF9pbml0KHZvaWQpCj4gPiAgewo+ID4gKwlpZiAoaW50ZWxfZ3Z0X3JlZ2lzdGVyX2h5 cGVydmlzb3IoJmt2bWd0X21wdCkgPCAwKQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiAgCXJl dHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZvaWQgX19leGl0IGt2bWd0X2V4aXQodm9p ZCkKPiA+ICB7Cj4gPiArCWludGVsX2d2dF91bnJlZ2lzdGVyX2h5cGVydmlzb3IoKTsKPiA+ICB9 Cj4gPgo+ID4gIG1vZHVsZV9pbml0KGt2bWd0X2luaXQpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21w dC5oCj4gPiBpbmRleCBjOTVlZjc3ZGE2MmMuLjliNDIyNWQ0NDI0MyAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L21wdC5oCj4gPiBAQCAtMzYwLDQgKzM2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v bAo+IGludGVsX2d2dF9oeXBlcnZpc29yX2lzX3ZhbGlkX2dmbigKPiA+ICAJcmV0dXJuIGludGVs X2d2dF9ob3N0Lm1wdC0+aXNfdmFsaWRfZ2ZuKHZncHUtPmhhbmRsZSwgZ2ZuKTsKPiA+ICB9Cj4g Pgo+ID4gK2ludCBpbnRlbF9ndnRfcmVnaXN0ZXJfaHlwZXJ2aXNvcihzdHJ1Y3QgaW50ZWxfZ3Z0 X21wdCAqKTsKPiA+ICt2b2lkIGludGVsX2d2dF91bnJlZ2lzdGVyX2h5cGVydmlzb3Iodm9pZCk7 Cj4gPiArCj4gPiAgI2VuZGlmIC8qIF9HVlRfTVBUX0hfICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d2dC5jCj4gPiBpbmRleCBjMjJiM2UxOGEwZjUuLmQ3NGU1OWUyMmM5ZCAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuYwo+ID4gQEAgLTEwNSwxNSArMTA1LDYgQEAgaW50IGlu dGVsX2d2dF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KQo+ID4gIAkJ cmV0dXJuIC1FSU87Cj4gPiAgCX0KPiA+Cj4gPiAtCS8qCj4gPiAtCSAqIFdlJ3JlIG5vdCBpbiBo b3N0IG9yIGZhaWwgdG8gZmluZCBhIE1QVCBtb2R1bGUsIGRpc2FibGUgR1ZULWcKPiA+IC0JICov Cj4gPiAtCXJldCA9IGludGVsX2d2dF9pbml0X2hvc3QoKTsKPiA+IC0JaWYgKHJldCkgewo+ID4g LQkJRFJNX0RFQlVHX0RSSVZFUigiTm90IGluIGhvc3Qgb3IgTVBUIG1vZHVsZXMgbm90Cj4gZm91 bmRcbiIpOwo+ID4gLQkJZ290byBiYWlsOwo+ID4gLQl9Cj4gPiAtCj4gPiAgCXJldCA9IGludGVs X2d2dF9pbml0X2RldmljZShkZXZfcHJpdik7Cj4gPiAgCWlmIChyZXQpIHsKPiA+ICAJCURSTV9E RUJVR19EUklWRVIoIkZhaWwgdG8gaW5pdCBHVlQgZGV2aWNlXG4iKTsKPiA+IC0tCj4gPiAyLjE5 LjEKPiA+Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gaW50ZWwtZ3Z0LWRldiBtYWlsaW5nIGxpc3QKPiA+IGludGVsLWd2dC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWd2dC1kZXYKPiAKPiAtLQo+IE9wZW4gU291cmNlIFRlY2hub2xvZ3kg Q2VudGVyLCBJbnRlbCBsdGQuCj4gCj4gJGdwZyAtLWtleXNlcnZlciB3d3drZXlzLnBncC5uZXQg LS1yZWN2LWtleXMgNEQ3ODE4MjcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==