From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chanwoo Choi Subject: Re: [PATCH v5 8/8] drm/rockchip: Add dmc notifier in vop driver Date: Wed, 10 Aug 2016 14:07:39 +0900 Message-ID: <57AAB69B.2000102@samsung.com> References: <1470799604-12877-1-git-send-email-hl@rock-chips.com> <1470799604-12877-9-git-send-email-hl@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1470799604-12877-9-git-send-email-hl-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Lin Huang , heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org Cc: tixy-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, typ-TNX95d0MmH7DzftRWevZcw@public.gmane.org, linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, airlied-cv59FeDIM0c@public.gmane.org, mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org, dbasehore-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, myungjoo.ham-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, sudeep.holla-5wv7dgnIgG8@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, mark.yao-TNX95d0MmH7DzftRWevZcw@public.gmane.org List-Id: linux-pm@vger.kernel.org SGkgTGluLAoKTG9va3MgZ29vZCB0byBtZSBhYm91dCB0aGUgZGV2ZnJlcS9kZXZmcmVxLWV2ZW50 IHVzYWdlLgoKW1VzYWdlIG9mIHRoZSBkZXZmcmVxL2RldmZyZXEtZXZlbnQgQVBJc10KUmV2aWV3 ZWQtYnk6IENoYW53b28gQ2hvaSA8Y3cwMC5jaG9pQHNhbXN1bmcuY29tPgoKUmVnYXJkcywKQ2hh bndvbyBDaG9pCgpPbiAyMDE264WEIDA47JuUIDEw7J28IDEyOjI2LCBMaW4gSHVhbmcgd3JvdGU6 Cj4gd2hlbiBpbiBkZHIgZnJlcXVlbmN5IHNjYWxpbmcgcHJvY2Vzcywgdm9wIGNhbiBub3QgZG8K PiBlbmFibGUgb3IgZGlzYWJsZSBvcGVyYXRpb24sIHNpbmNlIGRjZiB3aWxsIGJhc2Ugb24gdm9w IHZibGFuawo+IHRpbWUgdG8gZG8gZnJlcXVlbmN5IHNjYWxpbmcgYW5kIG5lZWQgdG8gZ2V0IHZv cCBpcnEgaWYgdGhlcmUKPiBoYXZlIHZvcCBlbmFibGVkLiBTbyBuZWVkIHJlZ2lzdGVyIHRvIGRl dmZyZXEgbm90aWZpZXIsIGFuZCB3ZSBjYW4KPiBnZXQgdGhlIGRtYyBzdGF0dXMuIEFsc28sIHdo ZW4gdGhlcmUgaGF2ZSB0d28gdm9wIGVuYWJsZWQsIHdlIG5lZWQKPiB0byBkaXNhYmxlIGRtYywg c2luY2UgZGNmIG9ubHkgYmFzZSBvbiBvbmUgdm9wIHZibGFuayB0aW1lLCBzbyB0aGUKPiBvdGhl ciBwYW5lbCB3aWxsIGZsaWNrZXIgd2hlbiBkbyBkZHIgZnJlcXVlbmN5IHNjYWxpbmcuCj4gCj4g U2lnbmVkLW9mZi1ieTogTGluIEh1YW5nIDxobEByb2NrLWNoaXBzLmNvbT4KPiAtLS0KPiBDaGFu Z2VzIGluIHY1Ogo+IC0gaW1wcm92ZSBzb21lIG5pdHMKPiAKPiBDaGFuZ2VzIGluIHY0Ogo+IC0g cmVnaXN0ZXIgbm90aWZpZXIgdG8gZGV2ZnJlcV9yZWdpc3Rlcl9ub3RpZmllcgo+IC0gdXNlIERF VkZSRVFfUFJFQ0hBTkdFIGFuZCBERVZGUkVRX1BPU1RDSEFOR0UgdG8gZ2V0IGRtYyBzdGF0dXMK PiAtIHdoZW4gdHdvIHZvcCBlbmFibGUsIGRpc2FibGUgZG1jCj4gLSB3aGVuIHR3byB2b3AgYmFj ayB0byBvbmUgdm9wLCBlbmFibGUgZG1jCj4gCj4gQ2hhbmdlcyBpbiB2MzoKPiAtIHdoZW4gZG8g dm9wIGVhbmJsZS9kaXNhYmxlLCBkbWMgd2lsbCB3YWl0IHVudGlsIGl0IGZpbmlzaAo+IAo+IENo YW5nZXMgaW4gdjI6Cj4gLSBOb25lCj4gCj4gQ2hhbmdlcyBpbiB2MToKPiAtIHVzZSB3YWl0X2V2 ZW50IGluc3RlYWQgdXNsZWVwCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fdm9wLmMgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAxIGZpbGUg Y2hhbmdlZCwgMTI1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4gaW5kZXggMzE3NDRmZS4uN2Nl Mzg5MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X3ZvcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3Au Ywo+IEBAIC0xMiw2ICsxMiw4IEBACj4gICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2RldmZyZXEuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2RldmZyZXEtZXZlbnQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm0u aD4KPiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5o Pgo+IEBAIC0xMTgsNiArMTIwLDEzIEBAIHN0cnVjdCB2b3Agewo+ICAKPiAgCWNvbnN0IHN0cnVj dCB2b3BfZGF0YSAqZGF0YTsKPiAgCj4gKwlzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcTsKPiArCXN0 cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZGV2ZnJlcV9ldmVudF9kZXY7Cj4gKwlzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgZG1jX25iOwo+ICsJaW50IGRtY19pbl9wcm9jZXNzOwo+ICsJaW50IHZvcF9z d2l0Y2hfc3RhdHVzOwo+ICsJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9kbWNfcXVldWU7Cj4gKwl3 YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X3ZvcF9zd2l0Y2hfcXVldWU7Cj4gIAl1aW50MzJfdCAqcmVn c2JhazsKPiAgCXZvaWQgX19pb21lbSAqcmVnczsKPiAgCj4gQEAgLTQyOCwyMSArNDM3LDU5IEBA IHN0YXRpYyB2b2lkIHZvcF9kc3BfaG9sZF92YWxpZF9pcnFfZGlzYWJsZShzdHJ1Y3Qgdm9wICp2 b3ApCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2b3AtPmlycV9sb2NrLCBmbGFncyk7Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgZG1jX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5i LCB1bnNpZ25lZCBsb25nIGV2ZW50LAo+ICsJCSAgICAgIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0 cnVjdCB2b3AgKnZvcCA9IGNvbnRhaW5lcl9vZihuYiwgc3RydWN0IHZvcCwgZG1jX25iKTsKPiAr Cj4gKwlpZiAoZXZlbnQgPT0gREVWRlJFUV9QUkVDSEFOR0UpIHsKPiArCQkvKgo+ICsJCSAqIGNo ZWNrIGlmIHZvcCBpbiBlbmFibGUgb3IgZGlzYWJsZSBwcm9jZXNzLAo+ICsJCSAqIGlmIHllcywg d2FpdCB1bnRpbCBpdCBmaW5pc2hlcywgdXNlIDIwMG1zIGFzCj4gKwkJICogdGltZW91dC4KPiAr CQkgKi8KPiArCQlpZiAoIXdhaXRfZXZlbnRfdGltZW91dCh2b3AtPndhaXRfdm9wX3N3aXRjaF9x dWV1ZSwKPiArCQkJCQkhdm9wLT52b3Bfc3dpdGNoX3N0YXR1cywgSFogLyA1KSkKPiArCQkJZGV2 X3dhcm4odm9wLT5kZXYsCj4gKwkJCQkgIlRpbWVvdXQgd2FpdGluZyBmb3Igdm9wIHN3dGljaCBz dGF0dXNcbiIpOwo+ICsJCXZvcC0+ZG1jX2luX3Byb2Nlc3MgPSAxOwo+ICsJfSBlbHNlIGlmIChl dmVudCA9PSBERVZGUkVRX1BPU1RDSEFOR0UpIHsKPiArCQl2b3AtPmRtY19pbl9wcm9jZXNzID0g MDsKPiArCQl3YWtlX3VwKCZ2b3AtPndhaXRfZG1jX3F1ZXVlKTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gTk9USUZZX09LOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCB2b3BfZW5hYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKGNydGMpOwo+ ICsJaW50IG51bV9lbmFibGVkX2NydGMgPSAwOwo+ICAJaW50IHJldDsKPiAgCj4gKwlpZiAodm9w LT5pc19lbmFibGVkKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKgo+ICsJICogaWYgaW4gZG1jIHNj YWxpbmcgZnJlcXVlbmN5IHByb2Nlc3MsIHdhaXQgdW50aWwgaXQgZmluaXNoZXMKPiArCSAqIHVz ZSAxMDBtcyBhcyB0aW1lb3V0IHRpbWUuCj4gKwkgKi8KPiArCWlmICghd2FpdF9ldmVudF90aW1l b3V0KHZvcC0+d2FpdF9kbWNfcXVldWUsCj4gKwkJCQkhdm9wLT5kbWNfaW5fcHJvY2VzcywgSFog LyA1KSkKPiArCQlkZXZfd2Fybih2b3AtPmRldiwKPiArCQkJICJUaW1lb3V0IHdhaXRpbmcgZm9y IGRtYyB3aGVuIHZvcCBlbmFibGVcbiIpOwo+ICsKPiArCXZvcC0+dm9wX3N3aXRjaF9zdGF0dXMg PSAxOwo+ICAJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyh2b3AtPmRldik7Cj4gIAlpZiAocmV0 IDwgMCkgewo+ICAJCWRldl9lcnIodm9wLT5kZXYsICJmYWlsZWQgdG8gZ2V0IHBtIHJ1bnRpbWU6 ICVkXG4iLCByZXQpOwo+IC0JCXJldHVybjsKPiArCQlnb3RvIGVycjsKPiAgCX0KPiAgCj4gIAly ZXQgPSBjbGtfZW5hYmxlKHZvcC0+aGNsayk7Cj4gIAlpZiAocmV0IDwgMCkgewo+ICAJCWRldl9l cnIodm9wLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIGhjbGsgLSAlZFxuIiwgcmV0KTsKPiAtCQly ZXR1cm47Cj4gKwkJZ290byBlcnI7Cj4gIAl9Cj4gIAo+ICAJcmV0ID0gY2xrX2VuYWJsZSh2b3At PmRjbGspOwo+IEBAIC00NTYsNyArNTAzLDYgQEAgc3RhdGljIHZvaWQgdm9wX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJZGV2X2Vycih2b3AtPmRldiwgImZhaWxlZCB0byBlbmFi bGUgYWNsayAtICVkXG4iLCByZXQpOwo+ICAJCWdvdG8gZXJyX2Rpc2FibGVfZGNsazsKPiAgCX0K PiAtCj4gIAkvKgo+ICAJICogU2xhdmUgaW9tbXUgc2hhcmVzIHBvd2VyLCBpcnEgYW5kIGNsb2Nr IHdpdGggdm9wLiAgSXQgd2FzIGFzc29jaWF0ZWQKPiAgCSAqIGF1dG9tYXRpY2FsbHkgd2l0aCB0 aGlzIG1hc3RlciBkZXZpY2UgdmlhIGNvbW1vbiBkcml2ZXIgY29kZS4KPiBAQCAtNDg1LDYgKzUz MSwyMSBAQCBzdGF0aWMgdm9pZCB2b3BfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAg Cj4gIAlkcm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7Cj4gIAo+ICsJdm9wLT52b3Bfc3dpdGNoX3N0 YXR1cyA9IDA7Cj4gKwl3YWtlX3VwKCZ2b3AtPndhaXRfdm9wX3N3aXRjaF9xdWV1ZSk7Cj4gKwo+ ICsJLyogY2hlY2sgaG93IG1hbnkgdm9wIHdlIHVzZSBub3cgKi8KPiArCWRybV9mb3JfZWFjaF9j cnRjKGNydGMsIHZvcC0+ZHJtX2Rldikgewo+ICsJCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKQo+ ICsJCQludW1fZW5hYmxlZF9jcnRjKys7Cj4gKwl9Cj4gKwo+ICsJLyogaWYgZW5hYmxlIHR3byB2 b3AsIG5lZWQgdG8gZGlzYWJsZSBkbWMgKi8KPiArCWlmICgobnVtX2VuYWJsZWRfY3J0YyA+IDEp ICYmIHZvcC0+ZGV2ZnJlcSkgewo+ICsJCWlmICh2b3AtPmRldmZyZXFfZXZlbnRfZGV2KQo+ICsJ CQlkZXZmcmVxX2V2ZW50X2Rpc2FibGVfZWRldih2b3AtPmRldmZyZXFfZXZlbnRfZGV2KTsKPiAr CQlkZXZmcmVxX3N1c3BlbmRfZGV2aWNlKHZvcC0+ZGV2ZnJlcSk7Cj4gKwl9Cj4gIAlyZXR1cm47 Cj4gIAo+ICBlcnJfZGlzYWJsZV9hY2xrOgo+IEBAIC00OTMsMTYgKzU1NCwzMiBAQCBlcnJfZGlz YWJsZV9kY2xrOgo+ICAJY2xrX2Rpc2FibGUodm9wLT5kY2xrKTsKPiAgZXJyX2Rpc2FibGVfaGNs azoKPiAgCWNsa19kaXNhYmxlKHZvcC0+aGNsayk7Cj4gK2VycjoKPiArCXZvcC0+dm9wX3N3aXRj aF9zdGF0dXMgPSAwOwo+ICsJd2FrZV91cCgmdm9wLT53YWl0X3ZvcF9zd2l0Y2hfcXVldWUpOwo+ ICsJcmV0dXJuOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB2b3BfY3J0Y19kaXNhYmxlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKGNydGMp Owo+ICsJaW50IG51bV9lbmFibGVkX2NydGMgPSAwOwo+ICAJaW50IGk7Cj4gIAo+ICAJV0FSTl9P Tih2b3AtPmV2ZW50KTsKPiAgCj4gIAkvKgo+ICsJICogaWYgaW4gZG1jIHNjYWxpbmcgZnJlcXVl bmN5IHByb2Nlc3MsIHdhaXQgdW50aWwgaXQgZmluaXNoCj4gKwkgKiB1c2UgMTAwbXMgYXMgdGlt ZW91dCB0aW1lLgo+ICsJICovCj4gKwlpZiAoIXdhaXRfZXZlbnRfdGltZW91dCh2b3AtPndhaXRf ZG1jX3F1ZXVlLAo+ICsJCQkJIXZvcC0+ZG1jX2luX3Byb2Nlc3MsIEhaIC8gNSkpCj4gKwkJZGV2 X3dhcm4odm9wLT5kZXYsCj4gKwkJCSAiVGltZW91dCB3YWl0aW5nIGZvciBkbWMgd2hlbiB2b3Ag ZGlzYWJsZVxuIik7Cj4gKwo+ICsJdm9wLT52b3Bfc3dpdGNoX3N0YXR1cyA9IDE7Cj4gKwo+ICsJ LyoKPiAgCSAqIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIHdpbmRvd3MgYXJlIGRpc2Fi bGVkIGJlZm9yZSB3ZQo+ICAJICogZGlzYWJsZSB0aGF0IGNydGMuIE90aGVyd2lzZSB3ZSBtaWdo dCB0cnkgdG8gc2NhbiBmcm9tIGEgZGVzdHJveWVkCj4gIAkgKiBidWZmZXIgbGF0ZXIuCj4gQEAg LTU1OSw2ICs2MzYsMjUgQEAgc3RhdGljIHZvaWQgdm9wX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAo+ICAJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gIAl9Cj4g Kwo+ICsJdm9wLT52b3Bfc3dpdGNoX3N0YXR1cyA9IDA7Cj4gKwl3YWtlX3VwKCZ2b3AtPndhaXRf dm9wX3N3aXRjaF9xdWV1ZSk7Cj4gKwo+ICsJLyogY2hlY2sgaG93IG1hbnkgdm9wIHVzZSBub3cg Ki8KPiArCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIHZvcC0+ZHJtX2Rldikgewo+ICsJCWlmIChj cnRjLT5zdGF0ZS0+ZW5hYmxlKQo+ICsJCQludW1fZW5hYmxlZF9jcnRjKys7Cj4gKwl9Cj4gKwo+ ICsJLyoKPiArCSAqIGlmIG51bV9lbmFibGVkX2NydGMgPSAxIG5vdywgaXQgbWVhbnMgMiB2b3Ag ZW5hYmxlZAo+ICsJICogY2hhbmdlIHRvIDEgdm9wIGVuYWJsZWQgIG5lZWQgdG8gZW5hYmxlIGRt YyBhZ2Fpbi4KPiArCSAqLwo+ICsJaWYgKChudW1fZW5hYmxlZF9jcnRjID09IDEpICYmIHZvcC0+ ZGV2ZnJlcSkgewo+ICsJCWlmICh2b3AtPmRldmZyZXFfZXZlbnRfZGV2KQo+ICsJCQlkZXZmcmVx X2V2ZW50X2VuYWJsZV9lZGV2KHZvcC0+ZGV2ZnJlcV9ldmVudF9kZXYpOwo+ICsJCWRldmZyZXFf cmVzdW1lX2RldmljZSh2b3AtPmRldmZyZXEpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCB2b3BfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiBAQCAtMTQwNiw2 ICsxNTAyLDggQEAgc3RhdGljIGludCB2b3BfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1f ZGV2ID0gZGF0YTsKPiAgCXN0cnVjdCB2b3AgKnZvcDsKPiAgCXN0cnVjdCByZXNvdXJjZSAqcmVz Owo+ICsJc3RydWN0IGRldmZyZXEgKmRldmZyZXE7Cj4gKwlzdHJ1Y3QgZGV2ZnJlcV9ldmVudF9k ZXYgKmV2ZW50X2RldjsKPiAgCXNpemVfdCBhbGxvY19zaXplOwo+ICAJaW50IHJldCwgaXJxOwo+ ICAKPiBAQCAtMTQ2Nyw2ICsxNTY1LDMwIEBAIHN0YXRpYyBpbnQgdm9wX2JpbmQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAkJcmV0dXJu IHJldDsKPiAgCj4gIAlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKPiArCj4gKwl2b3At PnBzcl9lbmFibGVkID0gZmFsc2U7Cj4gKwlJTklUX0RFTEFZRURfV09SSygmdm9wLT5wc3Jfd29y aywgdm9wX3Bzcl93b3JrKTsKPiArCj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2b3AtPndhaXRf dm9wX3N3aXRjaF9xdWV1ZSk7Cj4gKwl2b3AtPnZvcF9zd2l0Y2hfc3RhdHVzID0gMDsKPiArCWlu aXRfd2FpdHF1ZXVlX2hlYWQoJnZvcC0+d2FpdF9kbWNfcXVldWUpOwo+ICsJdm9wLT5kbWNfaW5f cHJvY2VzcyA9IDA7Cj4gKwo+ICsJZGV2ZnJlcSA9IGRldmZyZXFfZ2V0X2RldmZyZXFfYnlfcGhh bmRsZShkZXYsIDApOwo+ICsJaWYgKElTX0VSUihkZXZmcmVxKSkKPiArCQlnb3RvIG91dDsKPiAr Cj4gKwl2b3AtPmRldmZyZXEgPSBkZXZmcmVxOwo+ICsJdm9wLT5kbWNfbmIubm90aWZpZXJfY2Fs bCA9IGRtY19ub3RpZnk7Cj4gKwlkZXZmcmVxX3JlZ2lzdGVyX25vdGlmaWVyKHZvcC0+ZGV2ZnJl cSwgJnZvcC0+ZG1jX25iLAo+ICsJCQkJICBERVZGUkVRX1RSQU5TSVRJT05fTk9USUZJRVIpOwo+ ICsKPiArCWV2ZW50X2RldiA9IGRldmZyZXFfZXZlbnRfZ2V0X2VkZXZfYnlfcGhhbmRsZSh2b3At PmRldmZyZXEtPmRldi5wYXJlbnQsCj4gKwkJCQkJCSAgICAgIDApOwo+ICsJaWYgKElTX0VSUihl dmVudF9kZXYpKQo+ICsJCWdvdG8gb3V0Owo+ICsJdm9wLT5kZXZmcmVxX2V2ZW50X2RldiA9IGV2 ZW50X2RldjsKPiArb3V0Ogo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGlu ZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=