From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4 15/27] drm/i915: Use global atomic state for staged pll config, v2. Date: Thu, 04 Jun 2015 10:53:43 +0300 Message-ID: <873827di48.fsf@intel.com> References: <1433155811-9671-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433155811-9671-16-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id CFEA26E34B for ; Thu, 4 Jun 2015 00:51:26 -0700 (PDT) In-Reply-To: <1433155811-9671-16-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwMSBKdW4gMjAxNSwgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZl aXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+Cj4gTm93IHRoYXQg d2UgY2FuIHN1YmNsYXNzIGRybV9hdG9taWNfc3RhdGUgd2UgY2FuIGFsc28gdXNlIGl0IHRvIGtl ZXAKPiB0cmFjayBvZiBhbGwgdGhlIHBsbCBzZXR0aW5ncy4gYXRvbWljX3N0YXRlIGlzIGEgYmV0 dGVyIHBsYWNlIHRvIGhvbGQKPiBhbGwgc2hhcmVkIHN0YXRlIHRoYW4ga2VlcGluZyBwbGwtPm5l d19jb25maWcgZXZlcnl3aGVyZS4KPgo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBBc3NlcnQgY29u bmVjdGlvbl9tdXRleCBpcyBoZWxkLgo+Cj4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAg MSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8ICA1MSArKysrKysr KysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDExMSAr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgfCAgMTMgKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDk3IGluc2Vy dGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggODYyYmI5ZDRiMDhkLi4wY2RjODFjMGU2ZTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMzc2LDcgKzM3Niw2IEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcg ewo+ICAKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsIHsKPiAgCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbF9jb25maWcgY29uZmlnOwo+IC0Jc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZp ZyAqbmV3X2NvbmZpZzsKPiAgCj4gIAlpbnQgYWN0aXZlOyAvKiBjb3VudCBvZiBudW1iZXIgb2Yg YWN0aXZlIENSVENzIChpLmUuIERQTVMgb24pICovCj4gIAlib29sIG9uOyAvKiBpcyB0aGUgUExM IGFjdHVhbGx5IGFjdGl2ZT8gRGlzYWJsZWQgZHVyaW5nIG1vZGVzZXQgKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IDdlZDgwMzNhYWU2MC4uNmFiODJkYzU2Y2VhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBAQCAtNDIxLDMgKzQyMSw1NCBA QCBpbnQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICsKPiArc3RhdGljIHZvaWQKPiAraW50ZWxfYXRvbWlj X2R1cGxpY2F0ZV9kcGxsX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkJCSAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGwpCj4g K3sKPiArCWVudW0gaW50ZWxfZHBsbF9pZCBpOwo+ICsKPiArCS8qIENvcHkgc2hhcmVkIGRwbGwg c3RhdGUgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBp KyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hh cmVkX2RwbGxzW2ldOwo+ICsKPiArCQlzaGFyZWRfZHBsbFtpXSA9IHBsbC0+Y29uZmlnOwo+ICsJ fQo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICoKPiAraW50ZWxf YXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcykK PiArewo+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9hdG9t aWNfc3RhdGUocyk7Cj4gKwo+ICsJV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZzLT5k ZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpKTsKPiArCj4gKwlpZiAoIXN0YXRlLT5k cGxsX3NldCkgewo+ICsJCXN0YXRlLT5kcGxsX3NldCA9IHRydWU7Cj4gKwo+ICsJCWludGVsX2F0 b21pY19kdXBsaWNhdGVfZHBsbF9zdGF0ZSh0b19pOTE1KHMtPmRldiksCj4gKwkJCQkJCSAgc3Rh dGUtPnNoYXJlZF9kcGxsKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gc3RhdGUtPnNoYXJlZF9kcGxs Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqCj4gK2ludGVsX2F0b21pY19z dGF0ZV9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSA9IGt6YWxsb2MoR0ZQX0tFUk5FTCwgc2l6ZW9mKCpzdGF0ZSkp OwoKVGhlIGt6YWxsb2MgcGFyYW1ldGVycyBhcmUgdGhlIHdyb25nIHdheSBhcm91bmQuCgpTcGFy c2Ugd291bGQndmUgdG9sZCB5b3U6CgogIENIRUNLICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljLmMKZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmM6NDU5OjUyOiB3 YXJuaW5nOiBpbmNvcnJlY3QgdHlwZSBpbiBhcmd1bWVudCAxIChkaWZmZXJlbnQgYmFzZSB0eXBl cykKZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmM6NDU5OjUyOiAgICBleHBlY3Rl ZCB1bnNpZ25lZCBsb25nIFt1bnNpZ25lZF0gW3VzZXJ0eXBlXSBzaXplCmRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F0b21pYy5jOjQ1OTo1MjogICAgZ290IHJlc3RyaWN0ZWQgZ2ZwX3QKZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmM6NDU5OjY0OiB3YXJuaW5nOiBpbmNvcnJl Y3QgdHlwZSBpbiBhcmd1bWVudCAyIChkaWZmZXJlbnQgYmFzZSB0eXBlcykKZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljLmM6NDU5OjY0OiAgICBleHBlY3RlZCByZXN0cmljdGVkIGdm cF90IFt1c2VydHlwZV0gZmxhZ3MKZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmM6 NDU5OjY0OiAgICBnb3QgdW5zaWduZWQgbG9uZwoKQlIsCkphbmkuCgoKPiArCj4gKwlpZiAoIXN0 YXRlIHx8IGRybV9hdG9taWNfc3RhdGVfaW5pdChkZXYsICZzdGF0ZS0+YmFzZSkgPCAwKSB7Cj4g KwkJa2ZyZWUoc3RhdGUpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsKPiArCXJldHVybiAm c3RhdGUtPmJhc2U7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfYXRvbWljX3N0YXRlX2NsZWFyKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzKTsKPiArCWRybV9hdG9taWNfc3Rh dGVfZGVmYXVsdF9jbGVhcigmc3RhdGUtPmJhc2UpOwo+ICsJc3RhdGUtPmRwbGxfc2V0ID0gZmFs c2U7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggM2VjMzI0 NjUxYjhhLi4zNTM4YTEwNTlkYjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTQxODYsOCArNDE4NiwxMSBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmlu dGVsX2dldF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRldl9wcml2 YXRlOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGxfY29uZmlnICpzaGFyZWRfZHBsbDsKPiAgCWVudW0gaW50ZWxfZHBsbF9pZCBp Owo+ICAKPiArCXNoYXJlZF9kcGxsID0gaW50ZWxfYXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0 ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiArCj4gIAlpZiAoSEFTX1BDSF9JQlgoZGV2X3By aXYtPmRldikpIHsKPiAgCQkvKiBJcm9ubGFrZSBQQ0ggaGFzIGEgZml4ZWQgUExMLT5QQ0ggcGlw ZSBtYXBwaW5nLiAqLwo+ICAJCWkgPSAoZW51bSBpbnRlbF9kcGxsX2lkKSBjcnRjLT5waXBlOwo+ IEBAIC00MTk2LDcgKzQxOTksNyBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dl dF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlEUk1fREVCVUdfS01T KCJDUlRDOiVkIHVzaW5nIHByZS1hbGxvY2F0ZWQgJXNcbiIsCj4gIAkJCSAgICAgIGNydGMtPmJh c2UuYmFzZS5pZCwgcGxsLT5uYW1lKTsKPiAgCj4gLQkJV0FSTl9PTihwbGwtPm5ld19jb25maWct PmNydGNfbWFzayk7Cj4gKwkJV0FSTl9PTihzaGFyZWRfZHBsbFtpXS5jcnRjX21hc2spOwo+ICAK PiAgCQlnb3RvIGZvdW5kOwo+ICAJfQo+IEBAIC00MjE2LDcgKzQyMTksNyBAQCBzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAgCQlEUk1fREVC VUdfS01TKCJDUlRDOiVkIHVzaW5nIHByZS1hbGxvY2F0ZWQgJXNcbiIsCj4gIAkJCWNydGMtPmJh c2UuYmFzZS5pZCwgcGxsLT5uYW1lKTsKPiAtCQlXQVJOX09OKHBsbC0+bmV3X2NvbmZpZy0+Y3J0 Y19tYXNrKTsKPiArCQlXQVJOX09OKHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayk7Cj4gIAo+ICAJ CWdvdG8gZm91bmQ7Cj4gIAl9Cj4gQEAgLTQyMjUsMTUgKzQyMjgsMTUgQEAgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsICppbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAkJcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV07Cj4gIAo+ICAJCS8qIE9u bHkgd2FudCB0byBjaGVjayBlbmFibGVkIHRpbWluZ3MgZmlyc3QgKi8KPiAtCQlpZiAocGxsLT5u ZXdfY29uZmlnLT5jcnRjX21hc2sgPT0gMCkKPiArCQlpZiAoc2hhcmVkX2RwbGxbaV0uY3J0Y19t YXNrID09IDApCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAobWVtY21wKCZjcnRjX3N0YXRl LT5kcGxsX2h3X3N0YXRlLAo+IC0JCQkgICAmcGxsLT5uZXdfY29uZmlnLT5od19zdGF0ZSwKPiAt CQkJICAgc2l6ZW9mKHBsbC0+bmV3X2NvbmZpZy0+aHdfc3RhdGUpKSA9PSAwKSB7Cj4gKwkJCSAg ICZzaGFyZWRfZHBsbFtpXS5od19zdGF0ZSwKPiArCQkJICAgc2l6ZW9mKGNydGNfc3RhdGUtPmRw bGxfaHdfc3RhdGUpKSA9PSAwKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkNSVEM6JWQgc2hhcmlu ZyBleGlzdGluZyAlcyAoY3J0YyBtYXNrIDB4JTA4eCwgYXRpdmUgJWQpXG4iLAo+ICAJCQkJICAg ICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBwbGwtPm5hbWUsCj4gLQkJCQkgICAgICBwbGwtPm5ld19j b25maWctPmNydGNfbWFzaywKPiArCQkJCSAgICAgIHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzaywK PiAgCQkJCSAgICAgIHBsbC0+YWN0aXZlKTsKPiAgCQkJZ290byBmb3VuZDsKPiAgCQl9Cj4gQEAg LTQyNDIsNyArNDI0NSw3IEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50ZWxfZ2V0X3No YXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJLyogT2sgbm8gbWF0Y2hpbmcg dGltaW5ncywgbWF5YmUgdGhlcmUncyBhIGZyZWUgb25lPyAqLwo+ICAJZm9yIChpID0gMDsgaSA8 IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewo+ICAJCXBsbCA9ICZkZXZfcHJpdi0+ c2hhcmVkX2RwbGxzW2ldOwo+IC0JCWlmIChwbGwtPm5ld19jb25maWctPmNydGNfbWFzayA9PSAw KSB7Cj4gKwkJaWYgKHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayA9PSAwKSB7Cj4gIAkJCURSTV9E RUJVR19LTVMoIkNSVEM6JWQgYWxsb2NhdGVkICVzXG4iLAo+ICAJCQkJICAgICAgY3J0Yy0+YmFz ZS5iYXNlLmlkLCBwbGwtPm5hbWUpOwo+ICAJCQlnb3RvIGZvdW5kOwo+IEBAIC00MjUyLDgzICs0 MjU1LDMzIEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50ZWxfZ2V0X3NoYXJlZF9kcGxs KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJcmV0dXJuIE5VTEw7Cj4gIAo+ICBmb3VuZDoK PiAtCWlmIChwbGwtPm5ld19jb25maWctPmNydGNfbWFzayA9PSAwKQo+IC0JCXBsbC0+bmV3X2Nv bmZpZy0+aHdfc3RhdGUgPSBjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlOwo+ICsJaWYgKHNoYXJl ZF9kcGxsW2ldLmNydGNfbWFzayA9PSAwKQo+ICsJCXNoYXJlZF9kcGxsW2ldLmh3X3N0YXRlID0K PiArCQkJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZTsKPiAgCj4gIAljcnRjX3N0YXRlLT5zaGFy ZWRfZHBsbCA9IGk7Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJ1c2luZyAlcyBmb3IgcGlwZSAlY1xu IiwgcGxsLT5uYW1lLAo+ICAJCQkgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsKPiAgCj4gLQlwbGwt Pm5ld19jb25maWctPmNydGNfbWFzayB8PSAxIDw8IGNydGMtPnBpcGU7Cj4gKwlzaGFyZWRfZHBs bFtpXS5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOwo+ICAKPiAgCXJldHVybiBwbGw7Cj4g IH0KPiAgCj4gLS8qKgo+IC0gKiBpbnRlbF9zaGFyZWRfZHBsbF9zdGFydF9jb25maWcgLSBzdGFy dCBhIG5ldyBQTEwgc3RhZ2VkIGNvbmZpZwo+IC0gKiBAZGV2X3ByaXY6IERSTSBkZXZpY2UKPiAt ICogQGNsZWFyX3BpcGVzOiBtYXNrIG9mIHBpcGVzIHRoYXQgd2lsbCBoYXZlIHRoZWlyIFBMTHMg ZnJlZWQKPiAtICoKPiAtICogU3RhcnRzIGEgbmV3IFBMTCBzdGFnZWQgY29uZmlnLCBjb3B5aW5n IHRoZSBjdXJyZW50IGNvbmZpZyBidXQKPiAtICogcmVsZWFzaW5nIHRoZSByZWZlcmVuY2VzIG9m IHBpcGVzIHNwZWNpZmllZCBpbiBjbGVhcl9waXBlcy4KPiAtICovCj4gLXN0YXRpYyBpbnQgaW50 ZWxfc2hhcmVkX2RwbGxfc3RhcnRfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAtCQkJCQkgIHVuc2lnbmVkIGNsZWFyX3BpcGVzKQo+IC17Cj4gLQlzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiAtCWVudW0gaW50ZWxfZHBsbF9pZCBpOwo+IC0KPiAtCWZv ciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPiAtCQlwbGwg PSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAtCj4gLQkJcGxsLT5uZXdfY29uZmlnID0g a21lbWR1cCgmcGxsLT5jb25maWcsIHNpemVvZiBwbGwtPmNvbmZpZywKPiAtCQkJCQkgIEdGUF9L RVJORUwpOwo+IC0JCWlmICghcGxsLT5uZXdfY29uZmlnKQo+IC0JCQlnb3RvIGNsZWFudXA7Cj4g LQo+IC0JCXBsbC0+bmV3X2NvbmZpZy0+Y3J0Y19tYXNrICY9IH5jbGVhcl9waXBlczsKPiAtCX0K PiAtCj4gLQlyZXR1cm4gMDsKPiAtCj4gLWNsZWFudXA6Cj4gLQl3aGlsZSAoLS1pID49IDApIHsK PiAtCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAtCQlrZnJlZShwbGwtPm5l d19jb25maWcpOwo+IC0JCXBsbC0+bmV3X2NvbmZpZyA9IE5VTEw7Cj4gLQl9Cj4gLQo+IC0JcmV0 dXJuIC1FTk9NRU07Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGludGVsX3NoYXJlZF9kcGxsX2Nv bW1pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGlu dGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g IHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUt PmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICpzaGFyZWRfZHBsbDsK PiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAJZW51bSBpbnRlbF9kcGxsX2lk IGk7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkr Kykgewo+IC0JCXBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldOwo+IC0KPiAtCQlXQVJO X09OKHBsbC0+bmV3X2NvbmZpZyA9PSAmcGxsLT5jb25maWcpOwo+IC0KPiAtCQlwbGwtPmNvbmZp ZyA9ICpwbGwtPm5ld19jb25maWc7Cj4gLQkJa2ZyZWUocGxsLT5uZXdfY29uZmlnKTsKPiAtCQlw bGwtPm5ld19jb25maWcgPSBOVUxMOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBpbnRl bF9zaGFyZWRfZHBsbF9hYm9ydF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiAtCWVudW0gaW50 ZWxfZHBsbF9pZCBpOwo+ICsJaWYgKCF0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5kcGxs X3NldCkKPiArCQlyZXR1cm47Cj4gIAo+ICsJc2hhcmVkX2RwbGwgPSB0b19pbnRlbF9hdG9taWNf c3RhdGUoc3RhdGUpLT5zaGFyZWRfZHBsbDsKPiAgCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+ bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPiAgCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tpXTsKPiAtCj4gLQkJV0FSTl9PTihwbGwtPm5ld19jb25maWcgPT0gJnBsbC0+Y29uZmlnKTsK PiAtCj4gLQkJa2ZyZWUocGxsLT5uZXdfY29uZmlnKTsKPiAtCQlwbGwtPm5ld19jb25maWcgPSBO VUxMOwo+ICsJCXBsbC0+Y29uZmlnID0gc2hhcmVkX2RwbGxbaV07Cj4gIAl9Cj4gIH0KPiAgCj4g QEAgLTExOTc1LDEzICsxMTkyOCwxMiBAQCBzdGF0aWMgdm9pZAo+ICBpbnRlbF9tb2Rlc2V0X3Vw ZGF0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICAJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiAgCj4gLQlpbnRlbF9zaGFyZWRfZHBsbF9jb21taXQoZGV2X3ByaXYpOwo+ICsJaW50 ZWxfc2hhcmVkX2RwbGxfY29tbWl0KHN0YXRlKTsKPiAgCWRybV9hdG9taWNfaGVscGVyX3N3YXBf c3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVsX2VuY29kZXIo ZGV2LCBpbnRlbF9lbmNvZGVyKSB7Cj4gQEAgLTEyNjEwLDkgKzEyNTYyLDEzIEBAIHN0YXRpYyBp bnQgX19pbnRlbF9zZXRfbW9kZV9zZXR1cF9wbGxzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gaW50ZWxfc2hhcmVkX2RwbGxfc3RhcnRf Y29uZmlnKGRldl9wcml2LCBjbGVhcl9waXBlcyk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZG9u ZTsKPiArCWlmIChjbGVhcl9waXBlcykgewo+ICsJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9j b25maWcgKnNoYXJlZF9kcGxsID0KPiArCQkJaW50ZWxfYXRvbWljX2dldF9zaGFyZWRfZHBsbF9z dGF0ZShzdGF0ZSk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJl ZF9kcGxsOyBpKyspCj4gKwkJCXNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayAmPSB+Y2xlYXJfcGlw ZXM7Cj4gKwl9Cj4gIAo+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgewo+ICAJCWlmICghbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSB8fCAhY3J0 Y19zdGF0ZS0+ZW5hYmxlKQo+IEBAIC0xMjYyMywxMyArMTI1NzksMTAgQEAgc3RhdGljIGludCBf X2ludGVsX3NldF9tb2RlX3NldHVwX3BsbHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+ICAKPiAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2soaW50 ZWxfY3J0YywKPiAgCQkJCQkJCSAgIGludGVsX2NydGNfc3RhdGUpOwo+IC0JCWlmIChyZXQpIHsK PiAtCQkJaW50ZWxfc2hhcmVkX2RwbGxfYWJvcnRfY29uZmlnKGRldl9wcml2KTsKPiAtCQkJZ290 byBkb25lOwo+IC0JCX0KPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAK PiAtZG9uZToKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTE0MzI0LDYgKzE0Mjc3LDgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgaW50ZWxfbW9kZV9m dW5jcyA9IHsKPiAgCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW50ZWxfZmJkZXZfb3V0cHV0X3Bv bGxfY2hhbmdlZCwKPiAgCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9hdG9taWNfY2hlY2ssCj4gIAku YXRvbWljX2NvbW1pdCA9IGludGVsX2F0b21pY19jb21taXQsCj4gKwkuYXRvbWljX3N0YXRlX2Fs bG9jID0gaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jLAo+ICsJLmF0b21pY19zdGF0ZV9jbGVhciA9 IGludGVsX2F0b21pY19zdGF0ZV9jbGVhciwKPiAgfTsKPiAgCj4gIC8qIFNldCB1cCBjaGlwIHNw ZWNpZmljIGRpc3BsYXkgZnVuY3Rpb25zICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBp bmRleCBiOTA4MmZkMTY3OTIuLmRkYWUyOGFjNGU2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gQEAgLTI0MSw2ICsyNDEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgZHBsbCB7Cj4gIAlp bnQJcDsKPiAgfSBpbnRlbF9jbG9ja190Owo+ICAKPiArc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSB7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSBiYXNlOwo+ICsKPiArCWJvb2wgZHBsbF9z ZXQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHNoYXJlZF9kcGxsW0k5MTVf TlVNX1BMTFNdOwo+ICt9Owo+ICsKPiAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiAgCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgYmFzZTsKPiAgCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4gQEAg LTYyOCw2ICs2MzUsNyBAQCBzdHJ1Y3QgY3hzcl9sYXRlbmN5IHsKPiAgCXVuc2lnbmVkIGxvbmcg Y3Vyc29yX2hwbGxfZGlzYWJsZTsKPiAgfTsKPiAgCj4gKyNkZWZpbmUgdG9faW50ZWxfYXRvbWlj X3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlLCBiYXNl KQo+ICAjZGVmaW5lIHRvX2ludGVsX2NydGMoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRl bF9jcnRjLCBiYXNlKQo+ICAjZGVmaW5lIHRvX2ludGVsX2NydGNfc3RhdGUoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBiYXNlKQo+ICAjZGVmaW5lIHRvX2ludGVs X2Nvbm5lY3Rvcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX2Nvbm5lY3RvciwgYmFz ZSkKPiBAQCAtMTQwNSw2ICsxNDEzLDExIEBAIGludCBpbnRlbF9jb25uZWN0b3JfYXRvbWljX2dl dF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0Yyk7Cj4gIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+ICtzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICt2b2lkIGludGVsX2F0b21pY19zdGF0ZV9jbGVhcihzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqKTsKPiArc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqCj4g K2ludGVsX2F0b21pY19nZXRfc2hhcmVkX2RwbGxfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnMpOwo+ICsKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqCj4g IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gIAkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAtLSAKPiAyLjEuMAo+Cj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApK YW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK