From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [Intel-gfx] [RFC] drm: add a mechanism for drivers to schedule vblank callbacks Date: Tue, 2 Dec 2014 18:13:54 -0800 Message-ID: <20141203021354.GL10216@intel.com> References: <1416426435-2237-1-git-send-email-przanoni@gmail.com> <1416426435-2237-2-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1416426435-2237-2-git-send-email-przanoni@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni , dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMTksIDIwMTQgYXQgMDU6NDc6MDhQTSAtMDIwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEZyb206IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IAo+ IFRoZSBkcml2ZXJzIG5lZWQgYSB3YXkgdG8gc2NoZWR1bGUgZnVuY3Rpb25zIHRvIGJlIHJhbiBh ZnRlciBhIGNlcnRhaW4KPiBudW1iZXIgb2YgdmJsYW5rcy4gVGhlIGk5MTUua28gZHJpdmVyIGhh cyBwbGVudHkgb2YgZXhhbXBsZXMgd2hlcmUKPiB0aGlzIGNvdWxkIGJlIHVzZWQsIHN1Y2ggYXMg Zm9yIHVucGlubmluZyBidWZmZXJzIGFmdGVyIGEgbW9kZXNldC4KPiBTaW5jZSB0aGUgdmJsYW5r IHdhaXQgSU9DVEwgZG9lcyBiYXNpY2FsbHkgd2hhdCB3ZSB3YW50LCBidXQgZm9yIHRoZQo+IHVz ZXIgc3BhY2UsIGluIHRoaXMgcGF0Y2ggd2UgYWRkIGEgbmV3IGxpc3Qgb2YgdmJsYW5rIGV2ZW50 cwo+IChkZXYtPnZibGFua19rZXJuZWxfbGlzdCkgYW5kIGhhbmRsZSBpdCBleGFjdGx5IGxpa2Ug d2UgaGFuZGxlIHRoZQo+IHVzZXIgc3BhY2UgZXZlbnRzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBh dWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2Rydi5jICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f aXJxLmMgICAgICAgICAgIHwgMTA2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8ICA4MSArKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAgICAgICAgICAg fCAgMjIgKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiBpbmRleCAyZTVjN2Q5Li5iNWFlNmM4IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2Rydi5jCj4gQEAgLTU1Nyw2ICs1NTcsNyBAQCBzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2Rldl9hbGxvYyhzdHJ1Y3QgZHJtX2RyaXZlciAqZHJpdmVyLAo+ICAJSU5JVF9MSVNUX0hFQUQo JmRldi0+dm1hbGlzdCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5tYXBsaXN0KTsKPiAgCUlO SVRfTElTVF9IRUFEKCZkZXYtPnZibGFua19ldmVudF9saXN0KTsKPiArCUlOSVRfTElTVF9IRUFE KCZkZXYtPnZibGFua19rZXJuZWxfbGlzdCk7Cj4gIAo+ICAJc3Bpbl9sb2NrX2luaXQoJmRldi0+ YnVmX2xvY2spOwo+ICAJc3Bpbl9sb2NrX2luaXQoJmRldi0+ZXZlbnRfbG9jayk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jCj4gaW5kZXggMGU0N2RmNC4uNmUwNDAzNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+IEBAIC0xMTA3 LDYgKzExMDcsMTMgQEAgdm9pZCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5r KTsKPiAgCj4gK3N0YXRpYyB2b2lkIHNlbmRfa2VybmVsX3ZibGFua19ldmVudChzdHJ1Y3QgZHJt X2tlcm5lbF92YmxhbmtfaXRlbSAqaXRlbSkKCk1pbm9yIG5pdHBpY2ssIGJ1dCBpdCBtaWdodCBi ZSBnb29kIHRvIGF2b2lkIHRoZSB3b3JkICdldmVudCcgaGVyZS4gIElmCkkgd2VyZSBza2ltbWlu ZyB0aGUgY29kZSBhbmQgc2F3IHRoaXMgZnVuY3Rpb24gbmFtZSwgbXkgZmlyc3QgaW1wcmVzc2lv bgp3b3VsZCBiZSB0aGF0IHRoaXMgaGFkIHNvbWV0aGluZyB0byBkbyB3aXRoIGRybV9ldmVudCdz LCB3aGljaCBhcmUgYQp1c2Vyc3BhY2UgZmQgY29uY2VwdC4gIEkgdGhpbmsgYSBmdW5jdGlvbiBu YW1lIGxpa2UKJ2RvX3ZibGFua19jYWxsYmFjaygpJyBvciBzb21ldGhpbmcgd291bGQgYXZvaWQg dGhhdCBwb3RlbnRpYWwKY29uZnVzaW9uLgoKPiArewo+ICsJaWYgKGl0ZW0tPmNhbGxiYWNrX2Zy b21fd29yaykKPiArCQlzY2hlZHVsZV93b3JrKCZpdGVtLT53b3JrKTsKPiArCWVsc2UKPiArCQlp dGVtLT5jYWxsYmFjayhpdGVtKTsKPiArfQoKV291bGQgY2FsbGVycyBwb3RlbnRpYWxseSB3YW50 IHRvIGJlIGFibGUgdG8gcHJvdmlkZSB0aGVpciBvd24Kd29ya3F1ZXVlPyAgSW4gaTkxNSB3ZSB1 c2Ugc29tZSBwcml2YXRlIHdvcmtxdWV1ZXMgZm9yIHVucGlubmluZyBvbgpwYWdlZmxpcCBjb21w bGV0aW9uIGFuZCBzdWNoLiAgTWF5YmUgcmF0aGVyIHRoYW4gYSBib29sZWFuIGZsYWcgaGVyZSB5 b3UKY2FuIGp1c3QgcGFzcyB0aGUgd29ya3F1ZXVlIHRvIGRvIHF1ZXVlX3dvcmsoKSBvbiBhbmQg anVzdCBjYWxsIHRoZQpjYWxsYmFjayBkaXJlY3RseSBpZiBpdCdzIE5VTEw/Cgo+ICAvKioKPiAg ICogZHJtX3ZibGFua19vZmYgLSBkaXNhYmxlIHZibGFuayBldmVudHMgb24gYSBDUlRDCj4gICAq IEBkZXY6IERSTSBkZXZpY2UKPiBAQCAtMTEyNCw3ICsxMTMxLDggQEAgRVhQT1JUX1NZTUJPTChk cm1fY3J0Y193YWl0X29uZV92YmxhbmspOwo+ICB2b2lkIGRybV92Ymxhbmtfb2ZmKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRj ICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107Cj4gLQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICplLCAqdDsKPiArCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUs ICpldDsKPiArCXN0cnVjdCBkcm1fa2VybmVsX3ZibGFua19pdGVtICppLCAqaXQ7Cj4gIAlzdHJ1 Y3QgdGltZXZhbCBub3c7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAJdW5zaWduZWQg aW50IHNlcTsKPiBAQCAtMTE1MSw3ICsxMTU5LDcgQEAgdm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCS8qIFNlbmQgYW55IHF1ZXVlZCB2Ymxh bmsgZXZlbnRzLCBsZXN0IHRoZSBuYXRpdmVzIGdyb3cgZGlzcXVpZXQgKi8KPiAgCXNlcSA9IGRy bV92YmxhbmtfY291bnRfYW5kX3RpbWUoZGV2LCBjcnRjLCAmbm93KTsKPiAgCj4gLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoZSwgdCwgJmRldi0+dmJsYW5rX2V2ZW50X2xpc3QsIGJhc2UubGlu aykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIGV0LCAmZGV2LT52YmxhbmtfZXZl bnRfbGlzdCwgYmFzZS5saW5rKSB7Cj4gIAkJaWYgKGUtPnBpcGUgIT0gY3J0YykKPiAgCQkJY29u dGludWU7Cj4gIAkJRFJNX0RFQlVHKCJTZW5kaW5nIHByZW1hdHVyZSB2YmxhbmsgZXZlbnQgb24g ZGlzYWJsZTogXAo+IEBAIC0xMTYxLDYgKzExNjksMjEgQEAgdm9pZCBkcm1fdmJsYW5rX29mZihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCQlkcm1fdmJsYW5rX3B1dChkZXYs IGUtPnBpcGUpOwo+ICAJCXNlbmRfdmJsYW5rX2V2ZW50KGRldiwgZSwgc2VxLCAmbm93KTsKPiAg CX0KPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaSwgaXQsICZkZXYtPnZibGFua19r ZXJuZWxfbGlzdCwgbGluaykgewo+ICsJCWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoaS0+Y3J0 Yyk7Cj4gKwo+ICsJCWlmIChwaXBlICE9IGNydGMpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlE Uk1fREVCVUcoIlNlbmRpbmcgcHJlbWF0dXJlIGtlcm5lbCB2YmxhbmsgZXZlbnQgb24gZGlzYWJs ZTogXAo+ICsJCQkgIHdhbnRlZCAlZCwgY3VycmVudCAlZFxuIiwKPiArCQkJICBpLT50YXJnZXRf c2VxLCBzZXEpOwo+ICsJCWktPnByZW1hdHVyZSA9IHRydWU7Cj4gKwkJbGlzdF9kZWwoJmktPmxp bmspOwo+ICsJCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7Cj4gKwkJc2VuZF9rZXJuZWxfdmJs YW5rX2V2ZW50KGkpOwo+ICsJfQo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVu dF9sb2NrLCBpcnFmbGFncyk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX29mZik7 Cj4gQEAgLTE1NjAsOSArMTU4Myw2OCBAQCBkb25lOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAK PiArc3RhdGljIHZvaWQgZHJtX2tlcm5lbF92Ymxhbmtfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGRybV9rZXJuZWxfdmJsYW5rX2l0ZW0gKml0ZW0g PQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHJtX2tlcm5lbF92YmxhbmtfaXRlbSwg d29yayk7Cj4gKwo+ICsJaXRlbS0+Y2FsbGJhY2soaXRlbSk7Cj4gK30KPiArCj4gK2ludCBkcm1f d2FpdF92Ymxhbmtfa2VybmVsKHN0cnVjdCBkcm1fa2VybmVsX3ZibGFua19pdGVtICppdGVtKQo+ ICt7CgpBbm90aGVyIG5hbWluZyBuaXRwaWNrLi4uYXQgZmlyc3QgZ2xhbmNlIHRoZSBuYW1lIGhl cmUgc291bmRzIGxpa2UgYQpibG9ja2luZyBmdW5jdGlvbiBjYWxsLiAgTWF5YmUgc29tZXRoaW5n IGxpa2UgZHJtX3NjaGVkdWxlX2Zvcl92YmxhbmsoKQp3b3VsZCBtYWtlIHRoZSBhc3luY2hyb25v dXMgbmF0dXJlIG1vcmUgY2xlYXI/CgpZb3UgbWVudGlvbmVkIGluIHlvdXIgY292ZXIgbGV0dGVy IHRoYXQgeW91IHdlcmUgdHJ5aW5nIHRvIGRlY2lkZQpiZXR3ZWVuIHBhc3NpbmcgYSBwcmUtZmls bGVkIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgdGFzayBkZXRhaWxzIChhcwp5b3UgZG8gaW4g eW91ciBpbXBsZW1lbnRhdGlvbiBoZXJlKSB2cyBwYXNzaW5nIHRoZW0gYXMgcGFyYW1ldGVycyB0 byB0aGUKZnVuY3Rpb24uICBQZXJzb25hbGx5IEkgZmluZCB0aGUgcHJlLWZpbGxlZCBzdHJ1Y3R1 cmUgYXBwcm9hY2ggYSBsaXR0bGUKYml0IGxlc3MgaW50dWl0aXZlLiAgSXQgc2VlbXMgbGlrZSBz b21lIG9mIHRoZSBmaWVsZHMgeW91J3JlIGZpbGxpbmcgaW4KYmVsb3cgYXJlIG9ubHkgdXNlZCBi eSB0aGlzIGZ1bmN0aW9uIChlLmcuLCAiYWJzb2x1dGUiKSwgc28gaXQgc2VlbXMKbGlrZSBhdCBs ZWFzdCB0aG9zZSBmaWVsZHMgY291bGQgYmUgZWFzaWx5IGNvbnZlcnRlZCB0byBwYXJhbWV0ZXJz LgoKRmluYWxseSwgeW91J2xsIG5lZWQgc29tZSBrZXJuZWxkb2MgaGVyZSBldmVudHVhbGx5LiAg WW91IHNob3VsZCBtYWtlCnN1cmUgdG8gbm90ZSB0aGF0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiBp cyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUKaXRlbSBzdHJ1Y3R1cmUuCgo+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gaXRlbS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gKwlpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpOwo+ICsJc3Ry dWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+ICsJdW5z aWduZWQgaW50IHNlcTsKPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gKwlpbnQgcmV0ID0g MDsKPiArCj4gKwlpZiAoIWRldi0+aXJxX2VuYWJsZWQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7CgpJ dCdzIG5vdCBpbW1lZGlhdGVseSBjbGVhciB0byBtZSB3aHkgd2UgbmVlZCB0byBiYWlsIGluIHRo aXMgY2FzZT8KT2J2aW91c2x5IHlvdSB3b24ndCBhY3R1YWxseSBnZXQgYW55IHZibGFuayBpbnRl cnJ1cHRzIHdoaWxlIGlycSdzIGFyZQpkaXNhYmxlZCwgYnV0IGlmIHRoZSBkcml2ZXIga25vd3Mg aXQncyBnb2luZyB0byByZWVuYWJsZSBpbnRlcnJ1cHRzCnNvb24sIEkgZG9uJ3Qgc2VlIHdoeSBp dCBjYW4ndCBnZXQgdGhlIGNhbGxiYWNrIHNldHVwIHdoaWxlIHRoZXkncmUgb2ZmLgpXZSBkb24n dCBjYWxsIGFueXRoaW5nIGhlcmUgdGhhdCB0YWtlcyBhIG11dGV4IG9yIGNhbiBzbGVlcCBkbyB3 ZT8KCj4gKwo+ICsJaWYgKGl0ZW0tPmNhbGxiYWNrX2Zyb21fd29yaykKPiArCQlJTklUX1dPUkso Jml0ZW0tPndvcmssIGRybV9rZXJuZWxfdmJsYW5rX3dvcmtfZnVuYyk7Cj4gKwo+ICsJcmV0ID0g ZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVCVUco ImZhaWxlZCB0byBhY3F1aXJlIHZibGFuayBjb3VudGVyLCAlZFxuIiwgcmV0KTsKPiArCQlyZXR1 cm4gcmV0Owo+ICsJfQo+ICsKPiArCXNlcSA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsK PiArCWlmICghaXRlbS0+YWJzb2x1dGUpCgpBcyBub3RlZCBhYm92ZSwgdGhpcyBzZWVtcyBtb3Jl IGFwcHJvcHJpYXRlIGFzIGEgcGFyYW1ldGVyLiAgQnV0IG1heWJlIGEKZ2VuZXJhbCAnZmxhZ3Mn IHBhcmFtZXRlciB3b3VsZCBiZSBiZXN0IHNvIHRoYXQgd2UgY2FuIGVhc2lseSBhZGQKYWRkaXRp b25hbCBiaXRzIGluIHRoZSBmdXR1cmUuCgoKTWF0dAoKPiArCQlpdGVtLT50YXJnZXRfc2VxICs9 IHNlcTsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBpcnFmbGFn cyk7Cj4gKwo+ICsJaWYgKCF2YmxhbmstPmVuYWJsZWQpIHsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWlmIChzZXEgLSBpdGVtLT50YXJnZXRfc2VxIDw9 ICgxIDw8IDIzKSkgewo+ICsJCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7Cj4gKwkJc2VuZF9r ZXJuZWxfdmJsYW5rX2V2ZW50KGl0ZW0pOwo+ICsJfSBlbHNlIHsKPiArCQlsaXN0X2FkZF90YWls KCZpdGVtLT5saW5rLCAmZGV2LT52Ymxhbmtfa2VybmVsX2xpc3QpOwo+ICsJfQo+ICsKPiArCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwo+ICsJcmV0 dXJuIDA7Cj4gKwo+ICtvdXQ6Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50 X2xvY2ssIGlycWZsYWdzKTsKPiArCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX3dhaXRfdmJsYW5rX2tlcm5lbCk7Cj4g Kwo+ICBzdGF0aWMgdm9pZCBkcm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZl bnQgKmUsICp0Owo+ICsJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSwgKmV0Owo+ ICsJc3RydWN0IGRybV9rZXJuZWxfdmJsYW5rX2l0ZW0gKmksICppdDsKPiAgCXN0cnVjdCB0aW1l dmFsIG5vdzsKPiAgCXVuc2lnbmVkIGludCBzZXE7Cj4gIAo+IEBAIC0xNTcwLDcgKzE2NTIsNyBA QCBzdGF0aWMgdm9pZCBkcm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGNydGMpCj4gIAo+ICAJc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShk ZXYsIGNydGMsICZub3cpOwo+ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCB0LCAm ZGV2LT52YmxhbmtfZXZlbnRfbGlzdCwgYmFzZS5saW5rKSB7Cj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUoZSwgZXQsICZkZXYtPnZibGFua19ldmVudF9saXN0LCBiYXNlLmxpbmspIHsKPiAg CQlpZiAoZS0+cGlwZSAhPSBjcnRjKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAoKHNlcSAtIGUt PmV2ZW50LnNlcXVlbmNlKSA+ICgxPDwyMykpCj4gQEAgLTE1ODQsNiArMTY2NiwyMiBAQCBzdGF0 aWMgdm9pZCBkcm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMpCj4gIAkJc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBlLCBzZXEsICZub3cpOwo+ICAJ fQo+ICAKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpLCBpdCwgJmRldi0+dmJsYW5rX2tl cm5lbF9saXN0LCBsaW5rKSB7Cj4gKwkJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChpLT5jcnRj KTsKPiArCj4gKwkJaWYgKHBpcGUgIT0gY3J0YykKPiArCQkJY29udGludWU7Cj4gKwkJaWYgKChz ZXEgLSBpLT50YXJnZXRfc2VxKSA+ICgxPDwyMykpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlE Uk1fREVCVUcoImtlcm5lbCB2YmxhbmsgZXZlbnQgb24gJWQsIGN1cnJlbnQgJWRcbiIsCj4gKwkJ CSAgaS0+dGFyZ2V0X3NlcSwgc2VxKTsKPiArCj4gKwkJbGlzdF9kZWwoJmktPmxpbmspOwo+ICsJ CWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7Cj4gKwkJc2VuZF9rZXJuZWxfdmJsYW5rX2V2ZW50 KGkpOwo+ICsJfQo+ICsKPiAgCXRyYWNlX2RybV92YmxhbmtfZXZlbnQoY3J0Yywgc2VxKTsKPiAg fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDMxOWRhNjEuLmU3 MDU5NzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNzE1LDYg KzI3MTUsODYgQEAgc3RhdGljIGludCBpOTE1X2RkYl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0cnVjdCB2YmxhbmtfZGF0 YSB7Cj4gKwlpbnQgZWlnaHQ7Cj4gKwljb25zdCBjaGFyICptZXNzYWdlOwo+ICsJc3RydWN0IGRy bV9rZXJuZWxfdmJsYW5rX2l0ZW0gaXRlbTsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIHZibGFu a19jYWxsYmFjayhzdHJ1Y3QgZHJtX2tlcm5lbF92YmxhbmtfaXRlbSAqaXRlbSkKPiArewo+ICsJ c3RydWN0IHZibGFua19kYXRhICpkYXRhID0gY29udGFpbmVyX29mKGl0ZW0sIHN0cnVjdCB2Ymxh bmtfZGF0YSwgaXRlbSk7Cj4gKwo+ICsJV0FSTl9PTihkYXRhLT5laWdodCAhPSA4KTsKPiArCVdB Uk5fT04oaXRlbS0+Y2FsbGJhY2tfZnJvbV93b3JrICE9IGRybV9jYW5fc2xlZXAoKSk7Cj4gKwlE Uk1fREVCVUdfS01TKCJ2YmxhbmsgY2FsbGJhY2ssIHByZW1hdHVyZTogJXMsIG1lc3NhZ2U6ICVz XG4iLAo+ICsJCSAgICAgIHllc25vKGl0ZW0tPnByZW1hdHVyZSksIGRhdGEtPm1lc3NhZ2UpOwo+ ICsKPiArCWtmcmVlKGRhdGEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGk5MTVfdmJsYW5rX3F1 ZXVlX3Rlc3RfbmV3KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gTlVMTDsKPiArCWludCByZXQgPSAwOwo+ICsJc3RydWN0IHZibGFua19kYXRhICpkYXRhMSwg KmRhdGEyOwo+ICsKPiArCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKQo+ICsJCWlmIChj cnRjLT5waXBlID09IFBJUEVfQSkKPiArCQkJYnJlYWs7Cj4gKwlpZiAoV0FSTl9PTighY3J0Yykp Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZGF0YTEgPSBremFsbG9jKHNpemVvZiAqZGF0 YTEsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkYXRhMSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlkYXRhMiA9IGt6YWxsb2Moc2l6ZW9mICpkYXRhMiwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IWRhdGEyKSB7Cj4gKwkJa2ZyZWUoZGF0YTEpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ ICsKPiArCWRhdGExLT5tZXNzYWdlID0gImhlbGxvIHdvcmxkIChhdG9taWMpIjsKPiArCWRhdGEx LT5laWdodCA9IDg7Cj4gKwlkYXRhMS0+aXRlbS5jcnRjID0gJmNydGMtPmJhc2U7Cj4gKwlkYXRh MS0+aXRlbS50YXJnZXRfc2VxID0gNjA7Cj4gKwlkYXRhMS0+aXRlbS5hYnNvbHV0ZSA9IGZhbHNl Owo+ICsJZGF0YTEtPml0ZW0uY2FsbGJhY2sgPSB2YmxhbmtfY2FsbGJhY2s7Cj4gKwlkYXRhMS0+ aXRlbS5jYWxsYmFja19mcm9tX3dvcmsgPSBmYWxzZTsKPiArCj4gKwlkYXRhMi0+bWVzc2FnZSA9 ICJoZWxsbyB3b3JsZCAod29yaykiOwo+ICsJZGF0YTItPmVpZ2h0ID0gODsKPiArCWRhdGEyLT5p dGVtLmNydGMgPSAmY3J0Yy0+YmFzZTsKPiArCWRhdGEyLT5pdGVtLnRhcmdldF9zZXEgPSA2MDsK PiArCWRhdGEyLT5pdGVtLmFic29sdXRlID0gZmFsc2U7Cj4gKwlkYXRhMi0+aXRlbS5jYWxsYmFj ayA9IHZibGFua19jYWxsYmFjazsKPiArCWRhdGEyLT5pdGVtLmNhbGxiYWNrX2Zyb21fd29yayA9 IHRydWU7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygic2NoZWR1bGluZyA2MCB2YmxhbmtzIChubyB3 b3JrKVxuIik7Cj4gKwlyZXQgPSBkcm1fd2FpdF92Ymxhbmtfa2VybmVsKCZkYXRhMS0+aXRlbSk7 Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygidmJsYW5rIHNjaGVkdWxlIGVycm9y OiAlZFxuIiwgcmV0KTsKPiArCQlrZnJlZShkYXRhMSk7Cj4gKwkJa2ZyZWUoZGF0YTIpOwo+ICsJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwlEUk1fREVCVUdfS01TKCJ2YmxhbmtzIHNjaGVkdWxlZFxu Iik7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygic2NoZWR1bGluZyA2MCB2YmxhbmtzICh3aXRoIHdv cmspXG4iKTsKPiArCXJldCA9IGRybV93YWl0X3ZibGFua19rZXJuZWwoJmRhdGEyLT5pdGVtKTsK PiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVCVUdfS01TKCJ2Ymxhbmsgc2NoZWR1bGUgZXJyb3I6 ICVkXG4iLCByZXQpOwo+ICsJCWtmcmVlKGRhdGEyKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ ICsJRFJNX0RFQlVHX0tNUygidmJsYW5rcyBzY2hlZHVsZWRcbiIpOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICBzdHJ1Y3QgcGlwZV9jcmNfaW5mbyB7Cj4gIAljb25zdCBjaGFyICpuYW1l Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiBAQCAtNDI4OSw2ICs0MzY5LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0IGk5MTVfZGVidWdmc19saXN0W10gPSB7Cj4g IAl7Imk5MTVfZHBfbXN0X2luZm8iLCBpOTE1X2RwX21zdF9pbmZvLCAwfSwKPiAgCXsiaTkxNV93 YV9yZWdpc3RlcnMiLCBpOTE1X3dhX3JlZ2lzdGVycywgMH0sCj4gIAl7Imk5MTVfZGRiX2luZm8i LCBpOTE1X2RkYl9pbmZvLCAwfSwKPiArCXsiaTkxNV92YmxhbmtfcXVldWVfdGVzdF9uZXciLCBp OTE1X3ZibGFua19xdWV1ZV90ZXN0X25ldywgMH0sCj4gIH07Cj4gICNkZWZpbmUgSTkxNV9ERUJV R0ZTX0VOVFJJRVMgQVJSQVlfU0laRShpOTE1X2RlYnVnZnNfbGlzdCkKPiAgCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+IGluZGV4IGJlNzc2 ZmIuLjI5NWQwZTAgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtUC5oCj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtUC5oCj4gQEAgLTY2Nyw2ICs2NjcsMjYgQEAgc3RydWN0IGRybV9wZW5kaW5n X3ZibGFua19ldmVudCB7Cj4gIAlzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayBldmVudDsKPiAgfTsK PiAgCj4gK3N0cnVjdCBkcm1fa2VybmVsX3ZibGFua19pdGVtIHsKPiArCS8qIEludGVybmFsIG1l bWJlcnMsIHNldCBieSBkcm0ua28uICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gKwlz dHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiArCj4gKwkvKiBQYXJhbWV0ZXJzOiBzZXQgYnkgdGhl IGNhbGxlciBvZiBkcm1fd2FpdF92Ymxhbmtfa2VybmVsKCkuICovCj4gKwlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Cj4gKwo+ICsJaW50IHRhcmdldF9zZXE7Cj4gKwlib29sIGFic29sdXRlOyAvKiBU ZWxscyBpZiB0YXJnZXRfc2VxIGlzIGEgcmVsYXRpdmUgb2Zmc2V0IHRvIHRoZQo+ICsJCQkqIGN1 cnJlbnQgdmJsYW5rIGNvdW50LCBvciBqdXN0IGFuIGFic29sdXRlIHZhbHVlLiAqLwo+ICsKPiAr CXZvaWQgKCpjYWxsYmFjaykoc3RydWN0IGRybV9rZXJuZWxfdmJsYW5rX2l0ZW0gKml0ZW0pOwo+ ICsKPiArCWJvb2wgY2FsbGJhY2tfZnJvbV93b3JrOwo+ICsKPiArCS8qIE91dHB1dDogdG8gYmUg dXNlZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uICovCj4gKwlib29sIHByZW1hdHVyZTsKPiAr fTsKPiArCj4gIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsJCS8qIHBvaW50ZXIgdG8gdGhlIGRybV9kZXZpY2UgKi8KPiAgCXdhaXRfcXVldWVfaGVh ZF90IHF1ZXVlOwkvKio8IFZCTEFOSyB3YWl0IHF1ZXVlICovCj4gQEAgLTc4NCw2ICs4MDQsNyBA QCBzdHJ1Y3QgZHJtX2RldmljZSB7Cj4gIAkgKiBMaXN0IG9mIGV2ZW50cwo+ICAJICovCj4gIAlz dHJ1Y3QgbGlzdF9oZWFkIHZibGFua19ldmVudF9saXN0Owo+ICsJc3RydWN0IGxpc3RfaGVhZCB2 Ymxhbmtfa2VybmVsX2xpc3Q7Cj4gIAlzcGlubG9ja190IGV2ZW50X2xvY2s7Cj4gIAo+ICAJLypA fSAqLwo+IEBAIC05MDAsNiArOTIxLDcgQEAgZXh0ZXJuIGludCBkcm1faXJxX3VuaW5zdGFsbChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgZXh0ZXJuIGludCBkcm1fdmJsYW5rX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG51bV9jcnRjcyk7Cj4gIGV4dGVybiBpbnQgZHJtX3dh aXRfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCSAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4gK2V4dGVybiBpbnQgZHJtX3dhaXRfdmJsYW5rX2tlcm5l bChzdHJ1Y3QgZHJtX2tlcm5lbF92YmxhbmtfaXRlbSAqaXRlbSk7Cj4gIGV4dGVybiB1MzIgZHJt X3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7Cj4gIGV4dGVy biB1MzIgZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YywKPiAgCQkJCSAgICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3RpbWUpOwo+IC0tIAo+ IDIuMS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxh dGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYt Mjc5NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=