From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 15/22] drm/i915: Read hw state into an atomic state struct Date: Mon, 01 Jun 2015 08:35:43 +0200 Message-ID: <556BFD3F.1040601@linux.intel.com> References: <1432129094-11765-1-git-send-email-maarten.lankhorst@linux.intel.com> <1432137874-20543-1-git-send-email-maarten.lankhorst@linux.intel.com> <1432137874-20543-6-git-send-email-maarten.lankhorst@linux.intel.com> <20150529005556.GC15716@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id C23F36E187 for ; Sun, 31 May 2015 23:36:02 -0700 (PDT) In-Reply-To: <20150529005556.GC15716@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMjktMDUtMTUgb20gMDI6NTUgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIFdlZCwgTWF5IDIw LCAyMDE1IGF0IDA2OjA0OjI3UE0gKzAyMDAsIG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVs LmNvbSB3cm90ZToKPj4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5j b25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+Pgo+PiBUbyBtYWtlIHRoaXMgd29yayB3 ZSBsb2FkIHRoZSBuZXcgaGFyZHdhcmUgc3RhdGUgaW50byB0aGUKPj4gYXRvbWljX3N0YXRlLCB0 aGVuIHN3YXAgaXQgd2l0aCB0aGUgc3cgc3RhdGUuCj4+Cj4+IFRoaXMgbGV0cyB1cyBjaGFuZ2Ug dGhlIGZvcmNlIHJlc3RvcmUgcGF0aCBpbiBzZXR1cF9od19zdGF0ZSgpCj4+IHRvIHVzZSBhIHNp bmdsZSBjYWxsIHRvIGludGVsX21vZGVfc2V0KCkgdG8gcmVzdG9yZSBhbGwgdGhlCj4+IHByZXZp b3VzIHN0YXRlLgo+Pgo+PiBBcyBhIG5pY2UgYm9udXMgdGhpcyBraWxscyBvZmYgZW5jb2Rlci0+ bmV3X2VuY29kZXIsCj4+IGNvbm5lY3Rvci0+bmV3X2VuYWJsZWQgYW5kIGNydGMtPm5ld19lbmFi bGVkLiBUaGV5IHdlcmUgdXNlZCBvbmx5Cj4+IHRvIHJlc3RvcmUgdGhlIHN0YXRlIGFmdGVyIGEg bW9kZXNldC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJh IDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5 OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8ICAgMiArLQo+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMzc3ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgMTQgKy0KPj4gIDMgZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMoKyks IDE1MiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPj4g aW5kZXggODMwNzg3NjNiYTE0Li4xN2JmOWU4MGM1NTcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pYy5jCj4+IEBAIC0zOTUsNyArMzk1LDcgQEAgaW50IGludGVsX2F0b21pY19z ZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJcmV0dXJuIDA7Cj4+ICB9 Cj4+ICAKPj4gLXN0YXRpYyB2b2lkCj4+ICt2b2lkCj4+ICBpbnRlbF9hdG9taWNfZHVwbGljYXRl X2RwbGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkJCSAg c3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGwpCj4+ICB7Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggZTdhYTg2MTBjYmRjLi5hNDJl N2Q3YmY4NmIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAg LTk2MzksNyArOTYzOSw3IEBAIGJvb2wgaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gIHJldHJ5Ogo+PiAgCXJldCA9IGRybV9tb2Rl c2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgY3R4KTsKPj4gIAlpZiAocmV0KQo+ PiAtCQlnb3RvIGZhaWxfdW5sb2NrOwo+PiArCQlnb3RvIGZhaWw7Cj4+ICAKPj4gIAkvKgo+PiAg CSAqIEFsZ29yaXRobSBnZXRzIGEgbGl0dGxlIG1lc3N5Ogo+PiBAQCAtOTY1NywxMCArOTY1Nywx MCBAQCByZXRyeToKPj4gIAo+PiAgCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRl eCwgY3R4KTsKPj4gIAkJaWYgKHJldCkKPj4gLQkJCWdvdG8gZmFpbF91bmxvY2s7Cj4+ICsJCQln b3RvIGZhaWw7Cj4+ICAJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11 dGV4LCBjdHgpOwo+PiAgCQlpZiAocmV0KQo+PiAtCQkJZ290byBmYWlsX3VubG9jazsKPj4gKwkJ CWdvdG8gZmFpbDsKPj4gIAo+PiAgCQlvbGQtPmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsK Pj4gIAkJb2xkLT5sb2FkX2RldGVjdF90ZW1wID0gZmFsc2U7Cj4+IEBAIC05Njc5LDkgKzk2Nzks NiBAQCByZXRyeToKPj4gIAkJCWNvbnRpbnVlOwo+PiAgCQlpZiAocG9zc2libGVfY3J0Yy0+c3Rh dGUtPmVuYWJsZSkKPj4gIAkJCWNvbnRpbnVlOwo+PiAtCQkvKiBUaGlzIGNhbiBvY2N1ciB3aGVu IGFwcGx5aW5nIHRoZSBwaXBlIEEgcXVpcmsgb24gcmVzdW1lLiAqLwo+PiAtCQlpZiAodG9faW50 ZWxfY3J0Yyhwb3NzaWJsZV9jcnRjKS0+bmV3X2VuYWJsZWQpCj4+IC0JCQljb250aW51ZTsKPj4g IAo+PiAgCQljcnRjID0gcG9zc2libGVfY3J0YzsKPj4gIAkJYnJlYWs7Cj4+IEBAIC05NjkyLDIw ICs5Njg5LDE3IEBAIHJldHJ5Ogo+PiAgCSAqLwo+PiAgCWlmICghY3J0Yykgewo+PiAgCQlEUk1f REVCVUdfS01TKCJubyBwaXBlIGF2YWlsYWJsZSBmb3IgbG9hZC1kZXRlY3RcbiIpOwo+PiAtCQln b3RvIGZhaWxfdW5sb2NrOwo+PiArCQlnb3RvIGZhaWw7Cj4+ICAJfQo+PiAgCj4+ICAJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4+ICAJaWYgKHJldCkKPj4gLQkJ Z290byBmYWlsX3VubG9jazsKPj4gKwkJZ290byBmYWlsOwo+PiAgCXJldCA9IGRybV9tb2Rlc2V0 X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCBjdHgpOwo+PiAgCWlmIChyZXQpCj4+IC0JCWdv dG8gZmFpbF91bmxvY2s7Cj4+IC0JaW50ZWxfZW5jb2Rlci0+bmV3X2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+PiAtCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5uZXdfZW5jb2Rl ciA9IGludGVsX2VuY29kZXI7Cj4+ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAgCWludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiAtCWludGVsX2NydGMtPm5ld19lbmFibGVkID0gdHJ1 ZTsKPj4gIAlvbGQtPmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsKPj4gIAlvbGQtPmxvYWRf ZGV0ZWN0X3RlbXAgPSB0cnVlOwo+PiAgCW9sZC0+cmVsZWFzZV9mYiA9IE5VTEw7Cj4+IEBAIC05 NzczLDkgKzk3NjcsNyBAQCByZXRyeToKPj4gIAlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBp bnRlbF9jcnRjLT5waXBlKTsKPj4gIAlyZXR1cm4gdHJ1ZTsKPj4gIAo+PiAtIGZhaWw6Cj4+IC0J aW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+ZW5hYmxlOwo+PiAtZmFpbF91 bmxvY2s6Cj4+ICtmYWlsOgo+PiAgCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4+ICAJ c3RhdGUgPSBOVUxMOwo+PiAgCj4+IEBAIC05ODIxLDEwICs5ODEzLDYgQEAgdm9pZCBpbnRlbF9y ZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK Pj4gIAkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPj4gIAkJCWdvdG8gZmFpbDsKPj4gIAo+PiAt CQl0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+bmV3X2VuY29kZXIgPSBOVUxMOwo+PiAt CQlpbnRlbF9lbmNvZGVyLT5uZXdfY3J0YyA9IE5VTEw7Cj4+IC0JCWludGVsX2NydGMtPm5ld19l bmFibGVkID0gZmFsc2U7Cj4+IC0KPj4gIAkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIg PSBOVUxMOwo+PiAgCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBOVUxMOwo+PiAgCj4+IEBAIC0x MDk2OSwzMyArMTA5NTcsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9m dW5jcyBpbnRlbF9oZWxwZXJfZnVuY3MgPSB7Cj4+ICAJLmF0b21pY19mbHVzaCA9IGludGVsX2Zp bmlzaF9jcnRjX2NvbW1pdCwKPj4gIH07Cj4+ICAKPj4gLS8qKgo+PiAtICogaW50ZWxfbW9kZXNl dF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0ZQo+PiAtICoKPj4gLSAqIFVwZGF0ZXMgdGhlIHN0 YWdlZCBvdXRwdXQgY29uZmlndXJhdGlvbiBzdGF0ZSwgZS5nLiBhZnRlciB3ZSd2ZSByZWFkIG91 dCB0aGUKPj4gLSAqIGN1cnJlbnQgaHcgc3RhdGUuCj4+IC0gKi8KPj4gLXN0YXRpYyB2b2lkIGlu dGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPj4gLXsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPj4gLQlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcjsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3I7Cj4+IC0KPj4gLQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsK Pj4gLQkJY29ubmVjdG9yLT5uZXdfZW5jb2RlciA9Cj4+IC0JCQl0b19pbnRlbF9lbmNvZGVyKGNv bm5lY3Rvci0+YmFzZS5lbmNvZGVyKTsKPj4gLQl9Cj4+IC0KPj4gLQlmb3JfZWFjaF9pbnRlbF9l bmNvZGVyKGRldiwgZW5jb2Rlcikgewo+PiAtCQllbmNvZGVyLT5uZXdfY3J0YyA9Cj4+IC0JCQl0 b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4+IC0JfQo+PiAtCj4+IC0JZm9yX2Vh Y2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPj4gLQkJY3J0Yy0+bmV3X2VuYWJsZWQgPSBjcnRj LT5iYXNlLnN0YXRlLT5lbmFibGU7Cj4+IC0JfQo+PiAtfQo+PiAtCj4+ICAvKiBUcmFuc2l0aW9u YWwgaGVscGVyIHRvIGNvcHkgY3VycmVudCBjb25uZWN0b3IvZW5jb2RlciBzdGF0ZSB0bwo+PiAg ICogY29ubmVjdG9yLT5zdGF0ZS4gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCBjb2RlIHRoYXQgaXMg cGFydGlhbGx5Cj4+ICAgKiBjb252ZXJ0ZWQgdG8gYXRvbWljIGRvZXMgdGhlIHJpZ2h0IHRoaW5n Lgo+PiBAQCAtMTE1MjYsNyArMTE0ODcsNiBAQCBpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGF0ZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ICAJfQo+PiAgCj4+ICAJZHJtX2F0b21p Y19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsK Pj4gLQlpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGFnZWRfb3V0cHV0X3N0YXRlKHN0YXRlLT5kZXYp Owo+PiAgCj4+ICAJLyogRG91YmxlIGNoZWNrIHN0YXRlLiAqLwo+PiAgCWZvcl9lYWNoX2NydGMo ZGV2LCBjcnRjKSB7Cj4+IEBAIC0xMTgzMiwxMSArMTE3OTIsMTQgQEAgY2hlY2tfY29ubmVjdG9y X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOwo+PiAgCj4+ICAJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yKGRldiwgY29u bmVjdG9yKSB7Cj4+ICsJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rvci0+ YmFzZS5lbmNvZGVyOwo+PiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUgPSBj b25uZWN0b3ItPmJhc2Uuc3RhdGU7Cj4+ICsKPj4gIAkJLyogVGhpcyBhbHNvIGNoZWNrcyB0aGUg ZW5jb2Rlci9jb25uZWN0b3IgaHcgc3RhdGUgd2l0aCB0aGUKPj4gIAkJICogLT5nZXRfaHdfc3Rh dGUgY2FsbGJhY2tzLiAqLwo+PiAgCQlpbnRlbF9jb25uZWN0b3JfY2hlY2tfc3RhdGUoY29ubmVj dG9yKTsKPj4gIAo+PiAtCQlJOTE1X1NUQVRFX1dBUk4oJmNvbm5lY3Rvci0+bmV3X2VuY29kZXIt PmJhc2UgIT0gY29ubmVjdG9yLT5iYXNlLmVuY29kZXIsCj4+ICsJCUk5MTVfU1RBVEVfV0FSTihz dGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIsCj4+ICAJCSAgICAgImNvbm5lY3RvcidzIHN0 YWdlZCBlbmNvZGVyIGRvZXNuJ3QgbWF0Y2ggY3VycmVudCBlbmNvZGVyXG4iKTsKPj4gIAl9Cj4+ ICB9Cj4+IEBAIC0xMTg1Niw4ICsxMTgxOSw2IEBAIGNoZWNrX2VuY29kZXJfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gIAkJCSAgICAgIGVuY29kZXItPmJhc2UuYmFzZS5pZCwKPj4g IAkJCSAgICAgIGVuY29kZXItPmJhc2UubmFtZSk7Cj4+ICAKPj4gLQkJSTkxNV9TVEFURV9XQVJO KCZlbmNvZGVyLT5uZXdfY3J0Yy0+YmFzZSAhPSBlbmNvZGVyLT5iYXNlLmNydGMsCj4+IC0JCSAg ICAgImVuY29kZXIncyBzdGFnZSBjcnRjIGRvZXNuJ3QgbWF0Y2ggY3VycmVudCBjcnRjXG4iKTsK Pj4gIAkJSTkxNV9TVEFURV9XQVJOKGVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlICYmICFlbmNv ZGVyLT5iYXNlLmNydGMsCj4+ICAJCSAgICAgImVuY29kZXIncyBhY3RpdmVfY29ubmVjdG9ycyBz ZXQsIGJ1dCBubyBjcnRjXG4iKTsKPj4gIAo+PiBAQCAtMTE4NjcsNiArMTE4MjgsOSBAQCBjaGVj a19lbmNvZGVyX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJCQllbmFibGVkID0g dHJ1ZTsKPj4gIAkJCWlmIChjb25uZWN0b3ItPmJhc2UuZHBtcyAhPSBEUk1fTU9ERV9EUE1TX09G RikKPj4gIAkJCQlhY3RpdmUgPSB0cnVlOwo+PiArCj4+ICsJCQlJOTE1X1NUQVRFX1dBUk4oY29u bmVjdG9yLT5iYXNlLnN0YXRlLT5jcnRjICE9IGVuY29kZXItPmJhc2UuY3J0YywKPj4gKwkJCSAg ICAgImVuY29kZXIncyBzdGFnZSBjcnRjIGRvZXNuJ3QgbWF0Y2ggY3VycmVudCBjcnRjXG4iKTsK Pj4gIAkJfQo+PiAgCQkvKgo+PiAgCQkgKiBmb3IgTVNUIGNvbm5lY3RvcnMgaWYgd2UgdW5wbHVn IHRoZSBjb25uZWN0b3IgaXMgZ29uZQo+PiBAQCAtMTIyOTYsMTEgKzEyMjYwLDExIEBAIHZvaWQg aW50ZWxfY3J0Y19yZXN0b3JlX21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiAgCSAqIG5l ZWQgdG8gY29weSB0aGUgc3RhZ2VkIGNvbmZpZyB0byB0aGUgYXRvbWljIHN0YXRlLCBvdGhlcndp c2UgdGhlCj4+ICAJICogbW9kZSBzZXQgd2lsbCBqdXN0IHJlYXBwbHkgdGhlIHN0YXRlIHRoZSBI VyBpcyBhbHJlYWR5IGluLiAqLwo+PiAgCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBlbmNv ZGVyKSB7Cj4+IC0JCWlmICgmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gY3J0YykKPj4gKwkJ aWYgKGVuY29kZXItPmJhc2UuY3J0YyAhPSBjcnRjKQo+PiAgCQkJY29udGludWU7Cj4+ICAKPj4g IAkJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yKGRldiwgY29ubmVjdG9yKSB7Cj4+IC0JCQlpZiAo Y29ubmVjdG9yLT5uZXdfZW5jb2RlciAhPSBlbmNvZGVyKQo+PiArCQkJaWYgKGNvbm5lY3Rvci0+ YmFzZS5zdGF0ZS0+YmVzdF9lbmNvZGVyICE9ICZlbmNvZGVyLT5iYXNlKQo+PiAgCQkJCWNvbnRp bnVlOwo+PiAgCj4+ICAJCQljb25uZWN0b3Jfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0 b3Jfc3RhdGUoc3RhdGUsICZjb25uZWN0b3ItPmJhc2UpOwo+PiBAQCAtMTIzMTMsMTQgKzEyMjc3 LDEwIEBAIHZvaWQgaW50ZWxfY3J0Y19yZXN0b3JlX21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+PiAgCQkJfQo+PiAgCj4+ICAJCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBjcnRjOwo+PiAt CQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSAmZW5jb2Rlci0+YmFzZTsKPj4gIAkJ fQo+PiAgCX0KPj4gIAo+PiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7 Cj4+IC0JCWlmIChpbnRlbF9jcnRjLT5uZXdfZW5hYmxlZCA9PSBpbnRlbF9jcnRjLT5iYXNlLmVu YWJsZWQpCj4+IC0JCQljb250aW51ZTsKPj4gLQo+PiAgCQljcnRjX3N0YXRlID0gaW50ZWxfYXRv bWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKPj4gIAkJaWYgKElTX0VSUihj cnRjX3N0YXRlKSkgewo+PiAgCQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGFkZCBbQ1JUQzol ZF0gdG8gc3RhdGU6ICVsZFxuIiwKPj4gQEAgLTEyMzI5LDkgKzEyMjg5LDYgQEAgdm9pZCBpbnRl bF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAJCQljb250aW51 ZTsKPj4gIAkJfQo+PiAgCj4+IC0JCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID0gY3J0Y19zdGF0 ZS0+YmFzZS5lbmFibGUgPQo+PiAtCQkJaW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQ7Cj4+IC0KPj4g IAkJaWYgKCZpbnRlbF9jcnRjLT5iYXNlID09IGNydGMpCj4+ICAJCQlkcm1fbW9kZV9jb3B5KCZj cnRjX3N0YXRlLT5iYXNlLm1vZGUsICZjcnRjLT5tb2RlKTsKPj4gIAl9Cj4+IEBAIC0xNDU1Miw5 OSArMTQ1MDksMjI0IEBAIHN0YXRpYyBib29sIHByaW1hcnlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAo+PiAtCWlmICghY3J0Yy0+ YWN0aXZlKQo+PiArCWlmICghY3J0Yy0+YmFzZS5lbmFibGVkKQo+PiAgCQlyZXR1cm4gZmFsc2U7 Cj4+ICAKPj4gIAlyZXR1cm4gSTkxNV9SRUFEKERTUENOVFIoY3J0Yy0+cGxhbmUpKSAmIERJU1BM QVlfUExBTkVfRU5BQkxFOwo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0 X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gK3N0YXRpYyBpbnQg cmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4g KwkJCQkgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ICB7Cj4+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQllbnVtIHBpcGUgcGlw ZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcjsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+IC0J aW50IGk7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShz dGF0ZS0+ZGV2KTsKPj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPj4g KwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+YmFzZS5wcmltYXJ5Owo+PiArCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsKPj4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+PiArCWludCByZXQ7Cj4+ICAKPj4gLQlmb3JfZWFj aF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+PiAtCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5 ID0gY3J0Yy0+YmFzZS5wcmltYXJ5Owo+PiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlOwo+PiArCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwo+PiArCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4+ICsJCXJldHVybiBQ VFJfRVJSKGNydGNfc3RhdGUpOwo+PiAgCj4+IC0JCW1lbXNldChjcnRjLT5jb25maWcsIDAsIHNp emVvZigqY3J0Yy0+Y29uZmlnKSk7Cj4+IC0JCWNydGMtPmNvbmZpZy0+YmFzZS5jcnRjID0gJmNy dGMtPmJhc2U7Cj4+ICsJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0YXRl LCAmY3J0Yy0+YmFzZSk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJldDsKPiBEbyB3ZSBh Y3R1YWxseSB0cnkgdG8gaGFuZGxlIG5vbi1wcmltYXJ5IHBsYW5lcyBpbiB0aGlzIGZ1bmN0aW9u PyAgSWYKPiBJJ20gZm9sbG93aW5nIHRoaXMgcHJvcGVybHksIGF0IGJvb3R1cCB3ZSB3b24ndCBh ZGQgYW55IHNwcml0ZSBvciBjdXJzb3IKPiBwbGFuZXMgaGVyZSwgZXZlbiB0aG91Z2ggaXQncyBw b3NzaWJsZSB0aGF0IGEgZ3JhcGhpY3MgZmlybXdhcmUgaGFzCj4gdHVybmVkIHNvbWUgb2YgdGhl bSBvbi4gIEl0IHNlZW1zIGxpa2Ugb3VyIHN3IGFuZCBodyBzdGF0ZXMgd2lsbCBzdGlsbAo+IGJl IGEgYml0IGluY29uc2lzdGVudCBpbiB0aGF0IGNhc2UuCkknbSBhZnJhaWQgd2UgZG9uJ3QsIGJ1 dCBwcm9iYWJseSBzaG91bGQuIEFkZGluZyBhbGwgcG9zc2libGUgcGxhbmVzIG1pZ2h0IGJlIGJl dHRlciBoZXJlLApldmVuIGlmIHdlIGRvbid0IHRyYWNrIHRoZSBwcmV2aW91cyBodyBzdGF0ZSBp dCB3aWxsIGNhdXNlIGF0IGxlYXN0IGV2ZXJ5dGhpbmcgdG8gYmUgZGlzYWJsZWQsCmFub3RoZXIg d2F5IG9mIG1ha2luZyBodyBhbmQgc3cgc3RhdGUgbWF0Y2ggdXAuIDotKQoKfk1hYXJ0ZW4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK