From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Thu, 28 Mar 2019 17:03:03 -0400 Message-ID: <20190328210303.GM114153@art_vandelay> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87F506E3EC for ; Thu, 28 Mar 2019 21:03:06 +0000 (UTC) Received: by mail-qt1-x841.google.com with SMTP id p20so24835812qtc.9 for ; Thu, 28 Mar 2019 14:03:06 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190327181500.GP2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel@lists.freedesktop.org, Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjcsIDIwMTkgYXQgMDc6MTU6MDBQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIE1hciAyNiwgMjAxOSBhdCAwNDo0NDo1NFBNIC0wNDAwLCBTZWFuIFBh dWwgd3JvdGU6Cj4gPiBGcm9tOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+ IAo+ID4gVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRybSBoZWxwZXIgbGlicmFyeSB0byBoZWxwIGRy aXZlcnMgaW1wbGVtZW50Cj4gPiBzZWxmIHJlZnJlc2guIERyaXZlcnMgY2hvb3NpbmcgdG8gdXNl IGl0IHdpbGwgcmVnaXN0ZXIgY3J0Y3MgYW5kCj4gPiB3aWxsIHJlY2VpdmUgY2FsbGJhY2tzIHdo ZW4gaXQncyB0aW1lIHRvIGVudGVyIG9yIGV4aXQgc2VsZiByZWZyZXNoCj4gPiBtb2RlLgo+ID4g Cj4gPiBJbiBpdHMgY3VycmVudCBmb3JtLCBpdCBoYXMgYSB0aW1lciB3aGljaCB3aWxsIHRyaWdn ZXIgYWZ0ZXIgYQo+ID4gZHJpdmVyLXNwZWNpZmllZCBhbW91bnQgb2YgaW5hY3Rpdml0eS4gV2hl biB0aGUgdGltZXIgdHJpZ2dlcnMsIHRoZQo+ID4gaGVscGVycyB3aWxsIHN1Ym1pdCBhIG5ldyBh dG9taWMgY29tbWl0IHRvIHNodXQgdGhlIHJlZnJlc2hpbmcgcGlwZQo+ID4gb2ZmLiBPbiB0aGUg bmV4dCBhdG9taWMgY29tbWl0LCB0aGUgZHJtIGNvcmUgd2lsbCByZXZlcnQgdGhlIHNlbGYKPiA+ IHJlZnJlc2ggc3RhdGUgYW5kIGJyaW5nIGV2ZXJ5dGhpbmcgYmFjayB1cCB0byBiZSBhY3RpdmVs eSBkcml2ZW4uCj4gPiAKPiA+IEZyb20gdGhlIGRyaXZlcidzIHBlcnNwZWN0aXZlLCB0aGlzIHdv cmtzIGxpa2UgYSByZWd1bGFyIGRpc2FibGUvZW5hYmxlCj4gPiBjeWNsZS4gVGhlIGRyaXZlciBu ZWVkIG9ubHkgY2hlY2sgdGhlICdzZWxmX3JlZnJlc2hfYWN0aXZlJyBhbmQvb3IKPiA+ICdzZWxm X3JlZnJlc2hfY2hhbmdlZCcgc3RhdGUgaW4gY3J0Y19zdGF0ZSBhbmQgY29ubmVjdG9yX3N0YXRl LiBJdAo+ID4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2RlIG9uIHRoZSBwYW5lbCBh bmQgZW50ZXIgYW4gb2ZmIG9yCj4gPiBsb3ctcG93ZXIgc3RhdGUuCj4gPiAKPiA+IENoYW5nZXMg aW4gdjI6Cj4gPiAtIHMvcHNyL3NlbGZfcmVmcmVzaC8gKERhbmllbCkKPiA+IC0gaW50ZWdyYXRl ZCB0aGUgcHNyIGV4aXQgaW50byB0aGUgY29tbWl0IHRoYXQgd2FrZXMgaXQgdXAgKEpvc2UvRGFu aWVsKQo+ID4gLSBtYWRlIHRoZSBwc3Igc3RhdGUgcGVyLWNydGMgKEpvc2UvRGFuaWVsKQo+ID4g Cj4gPiBMaW5rIHRvIHYxOiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gv bXNnaWQvMjAxOTAyMjgyMTA5MzkuODMzODYtMi1zZWFuQHBvb3JseS5ydW4KPiA+IAo+ID4gQ2M6 IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+IENjOiBKb3NlIFNvdXphIDxqb3Nl LnNvdXphQGludGVsLmNvbT4KPiA+IENjOiBaYWluIFdhbmcgPHd6ekByb2NrLWNoaXBzLmNvbT4K PiA+IENjOiBUb21hc3ogRmlnYSA8dGZpZ2FAY2hyb21pdW0ub3JnPgo+ID4gU2lnbmVkLW9mZi1i eTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiAtLS0KPiA+ICBEb2N1bWVu dGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0ICAgICB8ICAgOSArCj4gPiAgZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgICAgICB8ICAgNCArCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgfCAgMzYgKysrLQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jIHwgICA4ICsKPiA+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY191YXBpLmMgICAgICAgICB8ICAgNSArLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysK PiA+ICBpbmNsdWRlL2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgICB8ICAxNSArKwo+ ID4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgIHwgIDMxICsrKysK PiA+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArKwo+ ID4gIGluY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmggICAgIHwgIDIzICsrKwo+ ID4gIDExIGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9o ZWxwZXIuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZy ZXNoX2hlbHBlci5oCj4gPiAKCi9zbmlwCgpUaGFua3MgZm9yIHRoZSByZXZpZXchCgoKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiBpbmRleCAyNDUzNjc4ZDExODYuLmM2NTlk YjEwNTEzMyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBl ci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gQEAg LTMwLDYgKzMwLDcgQEAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfdWFwaS5oPgo+ID4g ICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVs cGVyLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+Cj4gPiAgI2luY2x1ZGUg PGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2Uu aD4KPiA+IEBAIC05NTAsMTAgKzk1MSwzMyBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfY2hlY2so c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJaWYgKHN0YXRlLT5sZWdhY3lfY3Vyc29yX3Vw ZGF0ZSkKPiA+ICAJCXN0YXRlLT5hc3luY191cGRhdGUgPSAhZHJtX2F0b21pY19oZWxwZXJfYXN5 bmNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4gPiAgCj4gPiArCWRybV9zZWxmX3JlZnJlc2hfaGVscGVy X2FsdGVyX3N0YXRlKHN0YXRlKTsKPiA+ICsKPiA+ICAJcmV0dXJuIHJldDsKPiA+ICB9Cj4gPiAg RVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7Cj4gPiAgCj4gPiArc3RhdGlj IGJvb2wKPiA+ICtjcnRjX25lZWRzX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf c3RhdGUsCj4gPiArCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKPiA+ICt7 Cj4gPiArCS8qCj4gPiArCSAqIE5vIG5ld19zdGF0ZSBtZWFucyB0aGUgY3J0YyBpcyBvZmYsIHNv IHRoZSBvbmx5IGNyaXRlcmlhIGlzIHdoZXRoZXIKPiA+ICsJICogaXQncyBjdXJyZW50bHkgYWN0 aXZlIG9yIGluIHNlbGYgcmVmcmVzaCBtb2RlLgo+ID4gKwkgKi8KPiA+ICsJaWYgKCFuZXdfc3Rh dGUpCj4gPiArCQlyZXR1cm4gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZShvbGRf c3RhdGUpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBXZSBuZWVkIHRvIHJ1biB0aHJvdWdoIHRo ZSBjcnRjX2Z1bmNzLT5kaXNhYmxlKCkgZnVuY3Rpb24gaWYgdGhlIGNydGMKPiA+ICsJICogaXMg Y3VycmVudGx5IG9uLCBpZiBpdCdzIHRyYW5zaXRpb25pbmcgdG8gc2VsZiByZWZyZXNoIG1vZGUs IG9yIGlmCj4gPiArCSAqIGl0J3MgaW4gc2VsZiByZWZyZXNoIG1vZGUgYW5kIG5lZWRzIHRvIGJl IGZ1bGx5IGRpc2FibGVkLgo+ID4gKwkgKi8KPiA+ICsJcmV0dXJuIG9sZF9zdGF0ZS0+YWN0aXZl IHx8Cj4gPiArCSAgICAgICAob2xkX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlICYmICFuZXdf c3RhdGUtPmVuYWJsZSkgfHwKPiA+ICsJICAgICAgIG5ld19zdGF0ZS0+c2VsZl9yZWZyZXNoX2Fj dGl2ZTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBkaXNhYmxlX291dHB1dHMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0 ZSkKPiA+ICB7Cj4gPiBAQCAtOTc0LDcgKzk5OCwxNCBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ ICAKPiA+ICAJCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUo b2xkX3N0YXRlLCBvbGRfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gPiAgCj4gPiAtCQlpZiAoIW9sZF9j cnRjX3N0YXRlLT5hY3RpdmUgfHwKPiA+ICsJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YykKPiA+ ICsJCQluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKAo+ID4g KwkJCQkJCW9sZF9zdGF0ZSwKPiA+ICsJCQkJCQluZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gPiAr CQllbHNlCj4gPiArCQkJbmV3X2NydGNfc3RhdGUgPSBOVUxMOwo+ID4gKwo+ID4gKwkJaWYgKCFj cnRjX25lZWRzX2Rpc2FibGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKSB8fAo+ID4g IAkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChvbGRfY29ubl9zdGF0ZS0+Y3J0 Yy0+c3RhdGUpKQo+IAo+IEkgaGF2ZSBhIHJlYWxseSBoYXJkIHRpbWUgcGFyc2luZyB0aGUgbG9n aWMgaGVyZSBhbmQgaW4gdGhlIGhlbHBlciwgc2luY2UKPiBpdCdzIGFsc28gc3ByZWFkIGFyb3Vu ZC4gSSB0aGluayB5b3VyIGhlbHBlciBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZQo+IG5lZWRzX21v ZGVzZXQgY2hlY2suIFBsdXMgeW91ciBjb21tZW50cyBsb29rIGEgYml0IHN0cmFuZ2UgLSBlLmcu IHdpdGggdGhlCj4gZG91YmxlIG5lZ2F0aW9uIHRoZSByZWFzb24gZm9yIHRoZSBvbGRfY3J0Yy0+ YWN0aXZlIGNoZWNrIGlzbid0IHRoYXQgd2UKPiBuZWVkIHRvIGRpc2FibGUgaWYgaXQncyBhY3Rp dmUsIGJ1dCB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZGlzYWJsZSBpZiBpdCdzCj4gbm90IGFjdGl2 ZSAoeW91IGNvbWJpbmUgd2l0aCB8fCBoZXJlLCBub3QgJiYpLgo+IAo+IEJ1dCBhc2lkZSBmcm9t IGFsbCB0aGF0LCB3aHkgZG8geW91IGV2ZW4gY2hhbmdlIHN0dWZmIGhlcmU/IFRoZSBzZWxmCj4g cmVmcmVzaCB3b3JrZXIgY2hhbmdlcyAtPmFjdGl2ZSB0byBmYWxzZSwgd2hpY2ggbWVhbnMgbmVl ZHNfbW9kZXNldCB3aWxsCj4gZmlyZSwgYW5kIG5vIGNoYW5nZSBzaG91bGQgYmUgbmVlZGVkIGlu IHRoZSBjb21taXQgY29kZSBhdCBhbGwuCgpUaGUgaXNzdWUgaXMgdGhhdCB3ZSBuZWVkIHRvIGdv IHRocm91Z2ggZGlzYWJsZSBpZiB3ZSdyZSBjdXJyZW50bHkgaW4gU1IgYW5kCm5lZWQgdG8gdHVy biBvZmYgKGllOiBvbGQtPmFjdGl2ZT1mYWxzZSBvbGQtPnNlbGZfcmVmcmVzaF9hY3RpdmU9dHJ1 ZQpuZXctPmFjdGl2ZT1mYWxzZSkuIEluIHRoaXMgY2FzZSwgbmVlZHNfbW9kZXNldCByZXR1cm5z IGZhbHNlLgoKU28geWVhaCwgSSB0aGluayB0aGUgbmV3LT5zZWxmX3JlZnJlc2hfYWN0aXZlIGNo ZWNrIGFib3ZlIGlzIHByb2JhYmx5IHJlZHVuZGFudAood2lsbCBuZWVkIHRvIGRvdWJsZSBjaGVj ayB0aGF0KSwgYnV0IHdlIGRvIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2UgZ28gdGhyb3VnaCBhCmZ1 bGwgZGlzYWJsZSBpZiB3ZSdyZSBpbiBTUi4KCk9uIHRoZSBlbmFibGUgc2lkZSwgeW91J3JlIHJp Z2h0LCB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBhbnl0aGluZy4KCj4gCj4gVGhhdCdzIHdoeSBJ IHN1Z2dlc3RlZCB0aGUgdHJpY2sgd2l0aAo+IGRybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9h Y3RpdmUoKSwgaXQgYWxsb3dzIHVzIHRvIGtlZXAgdGhlIGVudGlyZQo+IGNoZWNrL2NvbW1pdCBk cml2ZXIgY29kZSBhcy1pcy4KPiAKPiA+ICAJCQljb250aW51ZTsKPiA+ICAKPiA+IEBAIC0xMDE4 LDcgKzEwNDksNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ICAJCWlmICghZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4g IAo+ID4gLQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4gKwkJaWYgKCFjcnRjX25l ZWRzX2Rpc2FibGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKSkKPiA+ICAJCQljb250 aW51ZTsKPiA+ICAKPiA+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gPiBAQCAt Mjk0OCw2ICsyOTc5LDcgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc3RydWN0 IGRybV9tb2RlX3NldCAqc2V0LAo+ID4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gPiAgCj4gPiAgCXN0 YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiA+ICsKPiA+ICAJcmV0ID0gX19kcm1fYXRvbWljX2hl bHBlcl9zZXRfY29uZmlnKHNldCwgc3RhdGUpOwo+ID4gIAlpZiAocmV0ICE9IDApCj4gPiAgCQln b3RvIGZhaWw7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3Rh dGVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ ID4gaW5kZXggNDk4NTM4NGU1MWY2Li5lYzkwYzUyN2RlZWQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+IEBAIC0xMDUsNiArMTA1LDEwIEBA IHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gPiAgCXN0YXRlLT5jb21taXQgPSBOVUxMOwo+ID4gIAlzdGF0ZS0+ZXZl bnQgPSBOVUxMOwo+ID4gIAlzdGF0ZS0+cGFnZWZsaXBfZmxhZ3MgPSAwOwo+ID4gKwo+ID4gKwkv KiBTZWxmIHJlZnJlc2ggc2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXcgdXBkYXRlIGlzIGF2 YWlsYWJsZSAqLwo+ID4gKwlzdGF0ZS0+YWN0aXZlID0gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2 ZWx5X2FjdGl2ZShzdGF0ZSk7Cj4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gZmFs c2U7Cj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1 cGxpY2F0ZV9zdGF0ZSk7Cj4gPiAgCj4gPiBAQCAtMzcwLDYgKzM3NCwxMCBAQCBfX2RybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiA+ICAKPiA+ICAJLyogRG9uJ3QgY29weSBvdmVyIGEgd3JpdGViYWNrIGpv YiwgdGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8KPiA+ICAJc3RhdGUtPndyaXRlYmFja19qb2Ig PSBOVUxMOwo+ID4gKwo+ID4gKwkvKiBTZWxmIHJlZnJlc2ggc2hvdWxkIGJlIGNhbmNlbGVkIHdo ZW4gYSBuZXcgdXBkYXRlIGlzIGF2YWlsYWJsZSAqLwo+ID4gKwlzdGF0ZS0+c2VsZl9yZWZyZXNo X2NoYW5nZWQgPSBzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZTsKPiA+ICsJc3RhdGUtPnNlbGZf cmVmcmVzaF9hY3RpdmUgPSBmYWxzZTsKPiAKPiBXaHkgdGhlIGR1cGxpY2F0aW9uIGluIHNlbGYt cmVmcmVzaCB0cmFja2luZz8gQ29ubmVjdG9ycyBuZXZlciBoYXZlIGEKPiBkaWZmZXJlbnQgc2Vs Zi1yZWZyZXNoIHN0YXRlLCBhbmQgeW91IGNhbiBhbHdheXMgbG9vayBhdCB0aGUgcmlnaHQKPiBj cnRjX3N0YXRlLiBEdXBsaWNhdGlvbiBqdXN0IGdpdmVzIHVzIHRoZSBjaGFuY2UgdG8gc2NyZXcg dXAgYW5kIGdldCBvdXQKPiBvZiBzeW5jIChlLmcuIGlmIHRoZSBjcnRjIGZvciBhIGNvbm5lY3Rv ciBjaGFuZ2VzKS4KPiAKCk9uIGRpc2FibGUgdGhlIGNydGMgaXMgY2xlYXJlZCBmcm9tIGNvbm5l Y3Rvcl9zdGF0ZSwgc28gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KaXQuIElmIEkgYWRkIHRoZSBh cHByb3ByaWF0ZSBhdG9taWNfZW5hYmxlL2Rpc2FibGUgaG9va3MgYXMgc3VnZ2VzdGVkIGJlbG93 LCB3ZQpzaG91bGQgYmUgYWJsZSB0byBudWtlIHRoZXNlLgoKCj4gPiAgfQo+ID4gIEVYUE9SVF9T WU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKTsKPiA+ ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+IGluZGV4IDRlYjgxZjEwYmM1NC4u ZDIwODUzMzIxNzJiIDEwMDY0NAoKL3NuaXAKCj4gPiArCj4gPiArc3RhdGljIHZvaWQgZHJtX3Nl bGZfcmVmcmVzaF9oZWxwZXJfZW50cnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4g PiArewo+ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGUgPSBjb250 YWluZXJfb2YoCj4gPiArCQkJCXRvX2RlbGF5ZWRfd29yayh3b3JrKSwKPiA+ICsJCQkJc3RydWN0 IGRybV9zZWxmX3JlZnJlc2hfc3RhdGUsIGVudHJ5X3dvcmspOwo+ID4gKwlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBzcl9zdGF0ZS0+Y3J0YzsKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiA+ ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubjsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7 Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ICsJaW50IGksIHJl dDsKPiA+ICsKPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ID4gKwo+ ID4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+ICsJaWYgKCFzdGF0 ZSkgewo+ID4gKwkJcmV0ID0gLUVOT01FTTsKPiA+ICsJCWdvdG8gb3V0Owo+ID4gKwl9Cj4gPiAr Cj4gPiArcmV0cnk6Cj4gPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7Cj4gPiArCj4gPiAr CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ID4gKwkJcmV0ID0gUFRSX0VSUihjcnRjX3N0 YXRlKTsKPiA+ICsJCWdvdG8gb3V0Owo+ID4gKwl9Cj4gPiArCj4gPiArCWlmICghY3J0Y19zdGF0 ZS0+ZW5hYmxlKQo+ID4gKwkJZ290byBvdXQ7Cj4gPiArCj4gPiArCXJldCA9IGRybV9hdG9taWNf YWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNydGMpOwo+ID4gKwlpZiAocmV0KQo+ID4g KwkJZ290byBvdXQ7Cj4gPiArCj4gPiArCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+ID4g KwljcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gdHJ1ZTsKPiA+ICsKPiA+ICsJZm9y X2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkg ewo+ID4gKwkJaWYgKCFjb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfYXdhcmUpCj4gPiArCQkJZ290 byBvdXQ7Cj4gPiArCj4gPiArCQljb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfY2hhbmdlZCA9IHRy dWU7Cj4gPiArCQljb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gdHJ1ZTsKPiA+ICsJ fQo+IAo+IEkgd29uZGVyIHdoZXRoZXIgd2Ugc2hvdWxkIHJlamVjdCB0aGUgdGltZXIgaGVyZSBi ZWZvcmUgZ29pbmcgYWhlYWQuCj4gVGhlcmUncyBvZmMgc3RpbGwgYSByYWNlLCBidXQgaWYgd2Un cmUgdW5sdWNreSBhbmQgdGhlIHNlbGYgZnJlc2ggd29yawo+IGZpcmVzIGF0IHRoZSBzYW1lIHRp bWUgYXMgdXNlcnNwYWNlIGRvZXMgYSBuZXcgYXRvbWljIGNvbW1pdCB3ZSBjb3VsZCBlbmQKPiB1 cCB3aXRoIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2U6Cj4gMS4gc2VsZi1yZWZyZXNoIHdvcmsgc3Rh cnRzCj4gMi4gdXNlcnNwYWNlIGRvZXMgaW9jdGxzLCBzdGFydHMgdG8gZ3JhYiBzb21lIGxvY2tz Cj4gMy4gc2VsZi1yZWZyZXNoIGdyYWJzIHNldHMgdXAgdGhlIGFjcXVpcmUgY3R4Cj4gNC4gYXRv bWljIGlvY3RsIHB1bGxzIHRocm91Z2gsIGRvZXMgYSBjb21taXQsIGJsb2NraW5nIHRoZSBzZWxm LXJlZnJlc2gKPiB3b3JrCj4gNS4gc2VsZi1yZWZyZXNoIHdvcmsgZmluYWxseSBnZXRzIGFsbCB0 aGUgbG9ja3MsIGdvZXMgYWhlYWQgYW5kIHB1dHMgdGhlCj4gZGlzcGxheSBpbnRvIHNlbGYtcmVm cmVzaC4KPiAKPiBOb3Qgc3VyZSBob3cgbXVjaCB3ZSBjYXJlIGFib3V0IHRoaXMgcmVhbGx5LCBv ciB3aGV0aGVyIGRlbGF5aW5nIHRoZSB0aW1lcgo+IGZyb20gYWxsIGF0b21pY19jaGVjayAoaW5j bHVkaW5nIFRFU1RfT05MWSkgaXMgZW5vdWdoIHRvIHBhcGVyIG92ZXIgdGhpcy4KPgoKSG1tLCB5 ZWFoIEkgc3VwcG9zZSBpZiB0aGUgZW50cnkgdGltZXIgcGVyaW9kIHdhcyB0aGUgc2FtZSBhcyBz b21lIHBlcmlvZGljCmFuaW1hdGlvbiAobGlrZSBhIGZhbmN5IGJsaW5raW5nIGN1cnNvciksIHlv dSBjb3VsZCBnZXQgc29tZSBuYXN0eSBqYW5rLiAKCkFzIHlvdSBzYXkgaXQncyBub3QgYXZvaWRh YmxlIGFuZCB0aGUgYnVsayBvZiB0aGUgdGltZSBoZXJlIHdpbGwgYmUgZG9pbmcgdGhlCmFjdHVh bCBlbnRyeSBpbnN0ZWFkIG9mIHRoZSBzZXR1cC4gU28gaWYgdGhlcmUgaXMgYW4gdW5mb3J0dW5h dGUgY29sbGlzaW9uLAp3ZSdyZSBnb2luZyB0byBoaXQgaXQgbW9yZSBvZnRlbiB0aGFuIG5vdCBl dmVuIHdpdGggdGhlIHRpbWVyIGNoZWNrLiBTbyBJJ20KaGF2aW5nIGEgaGFyZCB0aW1lIGdldHRp bmcgZXhjaXRlZCBhYm91dCB0aGlzLgoKVGhhdCBzYWlkLCBJJ2xsIHdyaXRlIHRoZSBjb2RlIHRv IGNoZWNrIHRoZSB0aW1lciBhbmQgc2VlIGhvdyBpdCBsb29rcyA6KQoKPiA+ICsKPiA+ICsJcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJZ290byBv dXQ7Cj4gPiArCj4gPiArb3V0Ogo+ID4gKwlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPiArCQlk cm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiA+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7Cj4gPiArCQlpZiAoIXJldCkKPiA+ICsJCQlnb3RvIHJldHJ5Owo+ID4gKwl9 Cj4gPiArCj4gPiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiA+ICsJZHJtX21vZGVz ZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgp Owo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9h bHRlcl9zdGF0ZSAtIEFsdGVycyB0aGUgYXRvbWljIHN0YXRlIGZvciBTUiBleGl0Cj4gPiArICog QHN0YXRlOiB0aGUgc3RhdGUgY3VycmVudGx5IGJlaW5nIGNoZWNrZWQKPiA+ICsgKgo+ID4gKyAq IENhbGxlZCBhdCB0aGUgZW5kIG9mIGF0b21pYyBjaGVjay4gVGhpcyBmdW5jdGlvbiBjaGVja3Mg dGhlIHN0YXRlIGZvciBmbGFncwo+ID4gKyAqIGluY29tcGF0aWJsZSB3aXRoIHNlbGYgcmVmcmVz aCBleGl0IGFuZCBjaGFuZ2VzIHRoZW0uIFRoaXMgaXMgYSBiaXQKPiA+ICsgKiBkaXNpbmdlbnVv dXMgc2luY2UgdXNlcnNwYWNlIGlzIGV4cGVjdGluZyBvbmUgdGhpbmcgYW5kIHdlJ3JlIGdpdmlu ZyBpdAo+ID4gKyAqIGFub3RoZXIuIEhvd2V2ZXIgaW4gb3JkZXIgdG8ga2VlcCBzZWxmIHJlZnJl c2ggZW50aXJlbHkgaGlkZGVuIGZyb20KPiA+ICsgKiB1c2Vyc3BhY2UsIHRoaXMgaXMgcmVxdWly ZWQuCj4gPiArICoKPiA+ICsgKiBBdCB0aGUgZW5kLCB3ZSBxdWV1ZSB1cCB0aGUgc2VsZiByZWZy ZXNoIGVudHJ5IHdvcmsgc28gd2UgY2FuIGVudGVyIFBTUiBhZnRlcgo+ID4gKyAqIHRoZSBkZXNp cmVkIGRlbGF5Lgo+ID4gKyAqLwo+ID4gK3ZvaWQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfYWx0 ZXJfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGRybV9jcnRjICpjcnRjOwo+ID4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGU7Cj4gPiArCWludCBpOwo+ID4gKwo+ID4gKwlpZiAoc3RhdGUtPmFzeW5jX3VwZGF0ZSkgewo+ ID4gKwkJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUs IGkpIHsKPiA+ICsJCQlpZiAoY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkgewo+ID4g KwkJCQlzdGF0ZS0+YXN5bmNfdXBkYXRlID0gZmFsc2U7Cj4gPiArCQkJCWJyZWFrOwo+ID4gKwkJ CX0KPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwlpZiAoIXN0YXRlLT5hbGxvd19tb2Rlc2V0KSB7Cj4g PiArCQlmb3JfZWFjaF9vbGRfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwg aSkgewo+ID4gKwkJCWlmIChjcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7Cj4gPiAr CQkJCXN0YXRlLT5hbGxvd19tb2Rlc2V0ID0gdHJ1ZTsKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCQkJ fQo+ID4gKwkJfQo+ID4gKwl9Cj4gCj4gSSB0aGluayB5b3UgY2FuIGZsYXR0ZW4gdGhlIGFib3Zl IHR3byB0bzoKPiAKPiAJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPiAJCWlmIChjcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7 Cj4gCQkJc3RhdGUtPmFsbG93X21vZGVzZXQgPSB0cnVlOwo+IAkJCXN0YXRlLT5hc3luY191cGRh dGUgPSBmYWxzZTsKPiAJCQlicmVhazsKPiAJCX0KPiAJfQoKRCdvaCEgSSd2ZSBzdGFyZWQgYXQg dGhpcyBTUiBjb2RlIGZvciBzb29vIGxvbmcsIEkgZ3Vlc3MgSSBnb3QgaGlnaHdheSBoeXBub3Np cwpvbiB0aGlzIGJpdC4KCj4gCj4gUGx1cyBhIGNvbW1lbnQgdGhhdCB0aGlzIGJyZWFrcyB1YXBp LCBidXQgd2hvIGNhcmVzOgo+IAo+IAkvKiBUaGlzIGJyZWFrcyB1YXBpLCBidXQgd2Ugd2FudCBz ZWxmLXJlZnJlc2ggdG8gYmUgYXMgdHJhbnNwYXJlbnQKPiAJICogdG8gdXNlcnNwYWNlIGFzIHBv c3NpYmxlLiBQbHVzIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgd2l0aCB0aGUKPiAJICogZGlzcGxh eSBzdGlsbCBvbiwgdGhlIG1vZGVzZXQgd2lsbCB0YWtlIGF0IG1vc3QgYSBmZXcgdmJsYW5rcywK PiAJICogYW5kIHRoYXQncyBzdGlsbCBvay4gKi8KPiAKPiA+ICsKPiA+ICsJZm9yX2VhY2hfbmV3 X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiA+ICsJCXN0cnVj dCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZTsKPiA+ICsKPiA+ICsJCS8qIERvbid0 IHRyaWdnZXIgdGhlIGVudHJ5IHRpbWVyIHdoZW4gd2UncmUgYWxyZWFkeSBpbiBTUiAqLwo+ID4g KwkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpCj4gPiArCQkJY29udGludWU7 Cj4gPiArCj4gPiArCQlzcl9zdGF0ZSA9IGNydGMtPnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiA+ICsJ CW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmc3Jfc3RhdGUtPmVudHJ5X3dvcmssCj4gPiAr CQkJIG1zZWNzX3RvX2ppZmZpZXMoc3Jfc3RhdGUtPmVudHJ5X2RlbGF5X21zKSk7Cj4gCj4gVGhp cyBiaXQgbmVlZHMgdG8gYmUgaW4gYXRvbWljX2NvbW1pdCwgbm90IGF0b21pYyBjaGVjay4gT3Ig YXQgbGVhc3QgaXQKPiBmZWVscyBhIGJpdCB3cm9uZyB0byBkZWxheSBzZWxmLXJlZnJlc2ggaWYg dXNlcnNwYWNlIGRvZXMgYSBmZXcgVEVTVF9PTkxZCj4gY29tbWl0cy4KCklNTyB3ZSBzaG91bGQg YmUgZXJyaW5nIG9uIHRoZSBzaWRlIG9mIGJlaW5nIG92ZXJseSBjYXV0aW91cyBhYm91dCBlbnRl cmluZyBQU1IKc2luY2UgaXQncyBhIHByZXR0eSBiaWcgY29tbWl0bWVudC4gRG9pbmcgdGhpcyBp biBhdG9taWMgY2hlY2sgaXMgYSBzaWduYWwgdGhhdAp1c2Vyc3BhY2UgaXMgYXQgbGVhc3QgaW50 ZXJlc3RlZCBpbiBwb2tpbmcgYXQgS01TIGFuZCB3ZSBzaG91bGQgYmFjayBvZmYgdW50aWwKaXRz IGRvbmUuCgo+IAo+IElmIHlvdSBmZWVsIGxpa2Ugd2Ugc2hvdWxkIGRvIHRoYXQsIHRoZW4gd2Ug bmVlZCBhIGNvbW1lbnQgaGVyZSwgc2luY2UKPiBpdCdzIGNsZWFybHkgYWdhaW5zdCBhbGwgdGhl ICJuZXZlciB0b3VjaCBhbnl0aGluZyBvdXRzaWRlIG9mIHRoZSBmcmVlCj4gc3RhbmRpbmcgc3Rh dGUgc3RydWN0dXJlcyBmcm9tIGF0b21pY19jaGVjayBjb2RlIiBydWxlcy4KCkdvb2QgcG9pbnQs IEknbGwgYWRkIGEgY29tbWVudCB0byB0aGlzIGVmZmVjdC4gV2UncmUgYnJlYWtpbmcgYWxsIHRo ZSBydWxlcwoncm91bmQgaGVyZSA6KQoKPiAKPiA+ICsJfQo+ID4gK30KPiA+ICtFWFBPUlRfU1lN Qk9MKGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlKTsKCi9zbmlwCgo+ID4gKy8q Kgo+ID4gKyAqIGRybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3RpdmUgLSBjb21wdXRlIHdo ZXRoZXIgY3J0YyBpcyBhY3R1YWxseSBhY3RpdmUKPiA+ICsgKiBAc3RhdGU6ICZkcm1fY3J0Y19z dGF0ZSBmb3IgdGhlIENSVEMKPiA+ICsgKgo+ID4gKyAqIFdoZW4gaW4gc2VsZiByZWZyZXNoIG1v ZGUsIHRoZSBjcnRjX3N0YXRlLT5hY3RpdmUgdmFsdWUgd2lsbCBiZSBmYWxzZSwgc2luY2UKPiA+ ICsgKiB0aGUgY3J0YyBpcyBvZmYuIEhvd2V2ZXIgaW4gc29tZSBjYXNlcyB3ZSdyZSBpbnRlcmVz dGVkIGluIHdoZXRoZXIgdGhlIGNydGMKPiA+ICsgKiBpcyBhY3RpdmUsIG9yIGVmZmVjdGl2ZWx5 IGFjdGl2ZSAoaWU6IGl0J3MgY29ubmVjdGVkIHRvIGFuIGFjdGl2ZSBkaXNwbGF5KS4KPiA+ICsg KiBJbiB0aGVzZSBjYXNlcywgdXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBqdXN0IGNoZWNr aW5nIGFjdGl2ZS4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiA+ICtkcm1fYXRv bWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlKGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUpCj4gPiArewo+ID4gKwlyZXR1cm4gc3RhdGUtPmFjdGl2ZSB8fCBzdGF0ZS0+c2VsZl9y ZWZyZXNoX2FjdGl2ZTsKPiA+ICt9Cj4gPiArCj4gPiAgI2VuZGlmIC8qIERSTV9BVE9NSUNfSF8g Ki8KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRl L2RybS9kcm1fY29ubmVjdG9yLmgKPiA+IGluZGV4IGM4MDYxOTkyZDZjYi4uMGFlN2U4MTJlYzYy IDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiArKysgYi9p bmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+IEBAIC01MDEsNiArNTAxLDM3IEBAIHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiA+ICAJLyoqIEB0djogVFYgY29ubmVjdG9yIHN0YXRl ICovCj4gPiAgCXN0cnVjdCBkcm1fdHZfY29ubmVjdG9yX3N0YXRlIHR2Owo+ID4gIAo+ID4gKwkv KioKPiA+ICsJICogQHNlbGZfcmVmcmVzaF9jaGFuZ2VkOgo+ID4gKwkgKgo+ID4gKwkgKiBTZXQg dHJ1ZSB3aGVuIHNlbGYgcmVmcmVzaCBzdGF0dXMgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVs IGZvcgo+ID4gKwkgKiB1c2UgaW4gZW5jb2Rlci9icmlkZ2UgZW5hYmxlIHdoZXJlIHRoZSBvbGQg c3RhdGUgaXMgdW5hdmFpbGFibGUgdG8KPiA+ICsJICogdGhlIGRyaXZlciBhbmQgaXQgbmVlZHMg dG8ga25vdyB3aGV0aGVyIHRoZSBlbmFibGUgdHJhbnNpdGlvbiBpcyBhCj4gPiArCSAqIGZ1bGwg dHJhbnNpdGlvbiwgb3IgaWYgaXQganVzdCBuZWVkcyB0byBleGl0IHNlbGYgcmVmcmVzaCBtb2Rl Lgo+IAo+IFVoLCB3ZSBqdXN0IG5lZWQgcHJvcGVyIGF0b21pYyBjYWxsYmFja3Mgd2l0aCBhbGwg dGhlIHN0YXRlcyBhdmFpbGFibGUuCj4gT25jZSB5b3UgaGF2ZSBvbmUsIHlvdSBjYW4gZ2V0IGF0 IHRoZSBvdGhlcnMuCj4gCgpXZWxsLCBzdXJlLCB3ZSBjb3VsZCBkbyB0aGF0IHRvbyA6KQoKPiA+ ICsJICovCj4gPiArCWJvb2wgc2VsZl9yZWZyZXNoX2NoYW5nZWQ7Cj4gPiArCj4gPiArCS8qKgo+ ID4gKwkgKiBAc2VsZl9yZWZyZXNoX2FjdGl2ZToKPiA+ICsJICoKPiA+ICsJICogVXNlZCBieSB0 aGUgc2VsZiByZWZyZXNoIChTUikgaGVscGVycyB0byBkZW5vdGUgd2hlbiB0aGUgZGlzcGxheQo+ ID4gKwkgKiBzaG91bGQgYmUgc2VsZiByZWZyZXNoaW5nLiBJZiB5b3VyIGNvbm5lY3RvciBpcyBT Ui1jYXBhYmxlLCBjaGVjawo+ID4gKwkgKiB0aGlzIGZsYWcgaW4gLmRpc2FibGUoKS4gSWYgaXQg aXMgdHJ1ZSwgaW5zdGVhZCBvZiBzaHV0dGluZyBvZmYgdGhlCj4gPiArCSAqIHBhbmVsLCBwdXQg aXQgaW50byBzZWxmIHJlZnJlc2hpbmcgbW9kZS4KPiA+ICsJICovCj4gPiArCWJvb2wgc2VsZl9y ZWZyZXNoX2FjdGl2ZTsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBzZWxmX3JlZnJlc2hfYXdh cmU6Cj4gPiArCSAqCj4gPiArCSAqIFRoaXMgdHJhY2tzIHdoZXRoZXIgYSBjb25uZWN0b3IgaXMg YXdhcmUgb2YgdGhlIHNlbGYgcmVmcmVzaCBzdGF0ZS4KPiA+ICsJICogSXQgc2hvdWxkIGJlIHNl dCB0byB0cnVlIGZvciB0aG9zZSBjb25uZWN0b3IgaW1wbGVtZW50YXRpb25zIHdoaWNoCj4gPiAr CSAqIHVuZGVyc3RhbmQgdGhlIHNlbGYgcmVmcmVzaCBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgc2lu Y2UgdGhlIGNydGMKPiA+ICsJICogcmVnaXN0ZXJzIHRoZSBzZWxmIHJlZnJlc2ggaGVscGVycyBh bmQgaXQgZG9lc24ndCBrbm93IGlmIHRoZQo+ID4gKwkgKiBjb25uZWN0b3JzIGRvd25zdHJlYW0g aGF2ZSBpbXBsZW1lbnRlZCBzZWxmIHJlZnJlc2ggZW50cnkvZXhpdC4KPiAKPiBNYXliZSBnb29k IHRvIGNsYXJpZnkgd2hldGhlciBkcml2ZXJzIGNhbiBhZGp1c3QgdGhpcyBhdCBydW50aW1lIGZy b20KPiB0aGVpciBhdG9taWNfY2hlY2sgY29kZT8gSSB0aGluayB0aGV5IGNhbiAuLi4KCldpbGwg ZG8uIFllcyB0aGV5IGNhbiwgdGhhdCdzIGV4YWN0bHkgd2hhdCB0aGlzIGlzIGZvci4gU2luY2Ug bm90IGFsbCBwYW5lbHMKY29ubmVjdGVkIHRvIGEgZGV2aWNlIGNhbiBzdXBwb3J0IFNSLCBhbmQg eW91IGNvdWxkIGNvbmNlaXZhYmx5IGhvdHBsdWcgYmV0d2Vlbgp0aGUgdHdvLCB3ZSB3YW50IGEg d2F5IHRvIGF2b2lkIHR1cm5pbmcgb2ZmIHRoZSBjaXJjdWl0cnkgdXBzdHJlYW0gb2YgdGhlIHBh bmVsLgoKPiAKPiA+ICsJICovCj4gPiArCWJvb2wgc2VsZl9yZWZyZXNoX2F3YXJlOwo+ID4gKwo+ ID4gIAkvKioKPiA+ICAJICogQHBpY3R1cmVfYXNwZWN0X3JhdGlvOiBDb25uZWN0b3IgcHJvcGVy dHkgdG8gY29udHJvbCB0aGUKPiA+ICAJICogSERNSSBpbmZvZnJhbWUgYXNwZWN0IHJhdGlvIHNl dHRpbmcuCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUv ZHJtL2RybV9jcnRjLmgKPiA+IGluZGV4IGY3YzMwMjJkYmRmNC4uMjA4ZDY4MTI5YjRjIDEwMDY0 NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ID4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2NydGMuaAo+ID4gQEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IGRybV9tb2RlX3NldDsKPiA+ ICBzdHJ1Y3QgZHJtX2ZpbGU7Cj4gPiAgc3RydWN0IGRybV9jbGlwX3JlY3Q7Cj4gPiAgc3RydWN0 IGRybV9wcmludGVyOwo+ID4gK3N0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlOwo+ID4gIHN0 cnVjdCBkZXZpY2Vfbm9kZTsKPiA+ICBzdHJ1Y3QgZG1hX2ZlbmNlOwo+ID4gIHN0cnVjdCBlZGlk Owo+ID4gQEAgLTI5OSw2ICszMDAsMTcgQEAgc3RydWN0IGRybV9jcnRjX3N0YXRlIHsKPiA+ICAJ ICovCj4gPiAgCWJvb2wgdnJyX2VuYWJsZWQ7Cj4gPiAgCj4gPiArCS8qKgo+ID4gKwkgKiBAc2Vs Zl9yZWZyZXNoX2FjdGl2ZToKPiA+ICsJICoKPiA+ICsJICogVXNlZCBieSB0aGUgc2VsZiByZWZy ZXNoIGhlbHBlcnMgdG8gZGVub3RlIHdoZW4gYSBzZWxmIHJlZnJlc2gKPiA+ICsJICogdHJhbnNp dGlvbiBpcyBvY2N1cmluZy4gVGhpcyB3aWxsIGJlIHNldCBvbiBlbmFibGUvZGlzYWJsZSBjYWxs YmFja3MKPiA+ICsJICogd2hlbiBzZWxmIHJlZnJlc2ggaXMgYmVpbmcgZW5hYmxlZCBvciBkaXNh YmxlZC4gSW4gc29tZSBjYXNlcywgaXQgbWF5Cj4gPiArCSAqIG5vdCBiZSBkZXNpcmFibGUgdG8g ZnVsbHkgc2h1dCBvZmYgdGhlIGNydGMgZHVyaW5nIHNlbGYgcmVmcmVzaC4KPiA+ICsJICogQ1JU QydzIGNhbiBpbnNwZWN0IHRoaXMgZmxhZyBhbmQgZGV0ZXJtaW5lIHRoZSBiZXN0IGNvdXJzZSBv ZiBhY3Rpb24uCj4gPiArCSAqLwo+ID4gKwlib29sIHNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiAr Cj4gPiAgCS8qKgo+ID4gIAkgKiBAZXZlbnQ6Cj4gPiAgCSAqCj4gPiBAQCAtMTA4Nyw2ICsxMDk5 LDEzIEBAIHN0cnVjdCBkcm1fY3J0YyB7Cj4gPiAgCSAqIFRoZSBuYW1lIG9mIHRoZSBDUlRDJ3Mg ZmVuY2UgdGltZWxpbmUuCj4gPiAgCSAqLwo+ID4gIAljaGFyIHRpbWVsaW5lX25hbWVbMzJdOwo+ ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQHNlbGZfcmVmcmVzaF9zdGF0ZTogSG9sZHMgdGhlIHN0 YXRlIGZvciB0aGUgc2VsZiByZWZyZXNoIGhlbHBlcnMKPiA+ICsJICoKPiA+ICsJICogSW5pdGlh bGl6ZWQgdmlhIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3JlZ2lzdGVyKCkuCj4gPiArCSAqLwo+ ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc2VsZl9yZWZyZXNoX3N0YXRlOwo+ IAo+IENhbiB3ZSBkcm9wIHRoZSBfc3RhdGUgaGVyZT8gSW4gYXRvbWljIHN0cnVjdHVyZXMgd2l0 aCBfc3RhdGUgc3VmZml4IGhhdmUKPiB2ZXJ5IHNwZWNpZmljIG1lYW5pbmcmc2VtYW50aWNzLCB0 aGlzIGlzbid0IG9uZSBvZiB0aGVtLiBzL3N0YXRlL2RhdGUvIGlzCgpkYXRhIG1pZ2h0IGJlIGV2 ZW4gYmV0dGVyIDspCgo+IGltbyBjbGVhcmVyIGluIHRoZSBkZXNjcmlwdGlvbiB0b28uCgpZZWFo LCBnb29kIHN1Z2dlc3Rpb24uCgo+IAo+ID4gIH07Cj4gPiAgCj4gPiAgLyoqCj4gPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmgKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjAxNWRhY2I4YTgwNwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaAo+ID4gQEAgLTAsMCArMSwy MyBAQAo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KPiA+ICsvKgo+ID4g KyAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUsIEluYy4KPiA+ICsgKgo+ID4gKyAqIEF1dGhv cnM6Cj4gPiArICogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiArICovCj4g PiArI2lmbmRlZiBEUk1fU0VMRl9SRUZSRVNIX0hFTFBFUl9IXwo+ID4gKyNkZWZpbmUgRFJNX1NF TEZfUkVGUkVTSF9IRUxQRVJfSF8KPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsK PiA+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvcjsKPiA+ICtzdHJ1Y3QgZHJtX2RldmljZTsKPiA+ICtz dHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZTsKPiA+ICtzdHJ1Y3QgZHJtX21vZGVzZXRfYWNx dWlyZV9jdHg7Cj4gPiArCj4gPiArdm9pZCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9hbHRlcl9z dGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ID4gKwo+ID4gK2ludCBkcm1f c2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAr CQkJCSAgICAgdW5zaWduZWQgaW50IGVudHJ5X2RlbGF5X21zKTsKPiA+ICsKPiA+ICt2b2lkIGRy bV9zZWxmX3JlZnJlc2hfaGVscGVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjKTsK PiA+ICsjZW5kaWYKPiA+IC0tIAo+ID4gU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29v Z2xlIC8gQ2hyb21pdW0gT1MKPiAKPiBBc2lkZSBmcm9tIHRoZSBiaWtlc2hlZHMgYW5kIHN1Z2dl c3Rpb25zLCBsb29rcyBhbGwgZ29vZCB0byBtZS4gSSB0aGluawo+IGl0J2QgYmUgZ29vZCB0byBh bHNvIGhhdmUgYW4gYWNrIGZyb20gc29tZSBvdGhlciBzb2MgZGlzcGxheSBtYWludGFpbmVyCj4g dGhhdCB0aGlzIGlzIHVzZWZ1bCAoVG9taSwgTGF1cmVudCwgTGl2aXUsIG9yIHNvbWVvbmUgZWxz ZSkuIEl0J3MgYWx3YXlzCj4gZ29vZCB0byBjaGVjayBhIGRlc2lnbiBhZ2FpbnN0IGEgaGFuZGZ1 bCBvZiBhY3R1YWwgZHJpdmVycyBpbnN0ZWFkIG9mIHNvbWUKPiBtb29uc2hvdCBjbGVhbiBzaGVl dCBkZXNpZ24gOi0pCgpZZWFoLCB3b3VsZCBiZSBuaWNlIHRvIGdldCBhIHRoaXJkIHNldCBvZiBl eWVzLiBJJ20gcGxhbm5pbmcgb24gdXNpbmcgdGhpcwpmb3IgbXNtIGRzaSBhcyB3ZWxsLCBzbyBJ J3ZlIGJlZW4ga2VlcGluZyB0aGF0IGluIHRoZSBiYWNrIG9mIG15IGhlYWQgd2hpbGUKd29ya2lu ZyBvbiB0aGlzLgoKPiAKPiBCdXQgdGhlcmUncyBhIGJpZyBvbmU6IFdvdWxkIGJlIHJlYWxseSBs b3ZlbHkgdG8gaGF2ZSBzZWxmdGVzdHMgZm9yIHRoaXMKPiBzdHVmZiwga2luZGEgYXMgYSBzdGFy dCBmb3IgbWFraW5nIHN1cmUgd2UgaGF2ZSBhIHNvbGlkIG1vZGVsIG9mIHRoZQo+IGF0b21pYyBo ZWxwZXJzIC4uLgoKSSBnb3Qgc28gZmFyIHRocm91Z2ggdGhlIHJldmlldyB3aXRob3V0IGFueSBC aWcgSXRlbXMgKHdlbGwgZXhjZXB0IGZvciB0aGUKY29tcGxldGUgcmVkZXNpZ24gYmV0d2VlbiB2 MSBhbmQgdjIgKGJ1dCBJIGtpbmQgb2YgZXhwZWN0ZWQgdGhhdCkpISBJJ3ZlIG5ldmVyCmRvbmUg YW55IHNlbGZ0ZXN0cywgc28gdGhpcyB3aWxsIGJlIGEgZ29vZCBjaGFuY2UgdG8gZ2V0IGZhbWls aWFyIHdpdGggdGhlbS4KClRoYW5rcyBhZ2FpbiBmb3IgdGhlIHJldmlldyEKClNlYW4KCj4gCj4g Q2hlZXJzLCBEYW5pZWwKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApTZWFuIFBhdWws IFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=