From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 11/17] drm/i915: Use global atomic state for staged pll config Date: Mon, 18 May 2015 17:45:13 +0200 Message-ID: <20150518154513.GY15256@phenom.ffwll.local> References: <1431548627-2527-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431548627-2527-12-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 mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 035286E504 for ; Mon, 18 May 2015 08:42:48 -0700 (PDT) Received: by wgbgq6 with SMTP id gq6so19275313wgb.3 for ; Mon, 18 May 2015 08:42:47 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431548627-2527-12-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 Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXkgMTMsIDIwMTUgYXQgMTA6MjM6NDFQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25z ZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+IAo+IE5vdyB0aGF0IHdlIGNhbiBzdWJjbGFz cyBkcm1fYXRvbWljX3N0YXRlIHdlIGNhbiBhbHNvIHVzZSBpdCB0byBrZWVwCj4gdHJhY2sgb2Yg YWxsIHRoZSBwbGwgc2V0dGluZ3MuIGF0b21pY19zdGF0ZSBpcyBhIGJldHRlciBwbGFjZSB0byBo b2xkCj4gYWxsIHNoYXJlZCBzdGF0ZSB0aGFuIGtlZXBpbmcgcGxsLT5uZXdfY29uZmlnIGV2ZXJ5 d2hlcmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgIHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj LmMgIHwgIDQ5ICsrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIHwgMTExICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxMyArKysrCj4gIDQgZmlsZXMg Y2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggYTBlNDg2ODY1M2YyLi4wZTIwMDAxOGM5YWEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzE5LDcgKzMxOSw2IEBAIHN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbF9jb25maWcgewo+ICAKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsIHsKPiAg CXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgY29uZmlnOwo+IC0Jc3RydWN0IGludGVs X3NoYXJlZF9kcGxsX2NvbmZpZyAqbmV3X2NvbmZpZzsKPiAgCj4gIAlpbnQgYWN0aXZlOyAvKiBj b3VudCBvZiBudW1iZXIgb2YgYWN0aXZlIENSVENzIChpLmUuIERQTVMgb24pICovCj4gIAlib29s IG9uOyAvKiBpcyB0aGUgUExMIGFjdHVhbGx5IGFjdGl2ZT8gRGlzYWJsZWQgZHVyaW5nIG1vZGVz ZXQgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IDdlZDgwMzNhYWU2 MC4uYWZmODcwNTQ0MDZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBA QCAtNDIxLDMgKzQyMSw1MiBAQCBpbnQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICsKPiArc3RhdGljIHZv aWQgaW50ZWxfYXRvbWljX2R1cGxpY2F0ZV9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gKwkJCQkJICAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAr CXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICsJZW51bSBpbnRlbF9kcGxsX2lkIGk7 Cj4gKwo+ICsJc3RhdGUtPmRwbGxfc2V0ID0gdHJ1ZTsKClRoZSB3dyBtdXRleCBsb2NraW5nIGRh bmNlIGhlcmUgaXMgbWlzc2luZy4gRm9yIHNpbXBsaWNpdHkgSSB0aGluayB3ZQpjb3VsZCBqdXN0 IHJlcHVycG9zZSB0aGUgZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LiBXZSBuZWVk IHRoYXQKYW55d2F5IGZ1bGwgbW9kZXNldHMsIGFuZCBkcGxsIGNoYW5nZXMgc2hvdWxkIG9ubHkg YmUgcmVxdWlyZWQgaW4gdGhvc2UuCldoaWNoIG1lYW5zIHRoaXMgd29udCBpbnRyb2R1Y2UgYW55 IHVuZWNlc3NhcnkgcGFyYWxsZWxpc20uCgpJdCBtZWFucyB0aG91Z2ggdGhhdCB3ZSBuZWVkIHRv IHdpcmUgdXAgYSBwcm9wZXIgZXJyb3IgY29kZSB0byBhbGwgY2FsbGVycwpvZiBkdXBsaWNhdGUv Z2V0X2RwbGxfc3RhdGUsIGxpa2Ugd2l0aCBhbGwgdGhlIG90aGVyIGF0b21pYyBzdGF0ZXMuIE1p Z2h0CmJlIGJlc3QgdG8gZm9sbG93IHRoZSBkZXNpZ24gZm9yIGNvbm5lY3Rvci9jcnRjL3BsYW5l cyBhbiBwYXNzIGFyb3VuZApwb2ludGVycyB3aXRoIGVycm9yIGNvZGVzIGV4cGxpY2l0bHkgKGlu c3RlYWQgb2YgcmV0dXJuaW5nCnN0YXRlLT5zaGFyZWRfZHBsbCBiZWxvdyBzaW5jZSB0aGF0IGNh biBvbmx5IGNvcGUgd2l0aCBOVUxMIGFuZCBub3Qgd2l0aAotRURFQURMSykuCgpTb3JyeSB0aGF0 IEkgZGlkbid0IHNwb3QgdGhpcyBlYXJsaWVyLgotRGFuaWVsCgo+ICsKPiArCS8qIENvcHkgc2hh cmVkIGRwbGwgc3RhdGUgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJl ZF9kcGxsOyBpKyspIHsKPiArCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAr Cj4gKwkJbWVtY3B5KCZzdGF0ZS0+c2hhcmVkX2RwbGxbaV0sCj4gKwkJICAgICAgICZwbGwtPmNv bmZpZywgc2l6ZW9mKHBsbC0+Y29uZmlnKSk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbF9jb25maWcgKgo+ICtpbnRlbF9hdG9taWNfZ2V0X3NoYXJlZF9kcGxsX3N0 YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzKTsKPiArCj4gKwlpZiAo IXN0YXRlLT5kcGxsX3NldCkKPiArCQlpbnRlbF9hdG9taWNfZHVwbGljYXRlX2RwbGxfc3RhdGUo c3RhdGUtPmJhc2UuZGV2LCBzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHN0YXRlLT5zaGFyZWRfZHBs bDsKPiArfQo+ICsKPiArc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgo+ICtpbnRlbF9hdG9taWNf c3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUgPSBremFsbG9jKEdGUF9LRVJORUwsIHNpemVvZigqc3RhdGUp KTsKPiArCj4gKwlpZiAoIXN0YXRlIHx8IGRybV9hdG9taWNfc3RhdGVfaW5pdChkZXYsICZzdGF0 ZS0+YmFzZSkgPCAwKSB7Cj4gKwkJa2ZyZWUoc3RhdGUpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJ fQo+ICsKPiArCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfYXRv bWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzKQo+ICt7Cj4gKwlzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzKTsK PiArCWRybV9hdG9taWNfc3RhdGVfZGVmYXVsdF9jbGVhcigmc3RhdGUtPmJhc2UpOwo+ICsJc3Rh dGUtPmRwbGxfc2V0ID0gZmFsc2U7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggMGEyYTdiNmUxOThjLi5lZDY5ZWRkZjQ1N2UgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTQyMjksOCArNDIyOSwxMSBAQCBzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+ YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7 Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICpzaGFyZWRfZHBsbDsKPiAgCWVu dW0gaW50ZWxfZHBsbF9pZCBpOwo+ICAKPiArCXNoYXJlZF9kcGxsID0gaW50ZWxfYXRvbWljX2dl dF9zaGFyZWRfZHBsbF9zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiArCj4gIAlpZiAo SEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsKPiAgCQkvKiBJcm9ubGFrZSBQQ0ggaGFzIGEg Zml4ZWQgUExMLT5QQ0ggcGlwZSBtYXBwaW5nLiAqLwo+ICAJCWkgPSAoZW51bSBpbnRlbF9kcGxs X2lkKSBjcnRjLT5waXBlOwo+IEBAIC00MjM5LDcgKzQyNDIsNyBAQCBzdHJ1Y3QgaW50ZWxfc2hh cmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCQlEUk1fREVCVUdfS01TKCJDUlRDOiVkIHVzaW5nIHByZS1hbGxvY2F0ZWQgJXNcbiIsCj4g IAkJCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGxsLT5uYW1lKTsKPiAgCj4gLQkJV0FSTl9P TihwbGwtPm5ld19jb25maWctPmNydGNfbWFzayk7Cj4gKwkJV0FSTl9PTihzaGFyZWRfZHBsbFtp XS5jcnRjX21hc2spOwo+ICAKPiAgCQlnb3RvIGZvdW5kOwo+ICAJfQo+IEBAIC00MjU5LDcgKzQy NjIsNyBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxs c1tpXTsKPiAgCQlEUk1fREVCVUdfS01TKCJDUlRDOiVkIHVzaW5nIHByZS1hbGxvY2F0ZWQgJXNc biIsCj4gIAkJCWNydGMtPmJhc2UuYmFzZS5pZCwgcGxsLT5uYW1lKTsKPiAtCQlXQVJOX09OKHBs bC0+bmV3X2NvbmZpZy0+Y3J0Y19tYXNrKTsKPiArCQlXQVJOX09OKHNoYXJlZF9kcGxsW2ldLmNy dGNfbWFzayk7Cj4gIAo+ICAJCWdvdG8gZm91bmQ7Cj4gIAl9Cj4gQEAgLTQyNjgsMTUgKzQyNzEs MTUgQEAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNb aV07Cj4gIAo+ICAJCS8qIE9ubHkgd2FudCB0byBjaGVjayBlbmFibGVkIHRpbWluZ3MgZmlyc3Qg Ki8KPiAtCQlpZiAocGxsLT5uZXdfY29uZmlnLT5jcnRjX21hc2sgPT0gMCkKPiArCQlpZiAoc2hh cmVkX2RwbGxbaV0uY3J0Y19tYXNrID09IDApCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAo bWVtY21wKCZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLAo+IC0JCQkgICAmcGxsLT5uZXdfY29u ZmlnLT5od19zdGF0ZSwKPiAtCQkJICAgc2l6ZW9mKHBsbC0+bmV3X2NvbmZpZy0+aHdfc3RhdGUp KSA9PSAwKSB7Cj4gKwkJCSAgICZzaGFyZWRfZHBsbFtpXS5od19zdGF0ZSwKPiArCQkJICAgc2l6 ZW9mKGNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUpKSA9PSAwKSB7Cj4gIAkJCURSTV9ERUJVR19L TVMoIkNSVEM6JWQgc2hhcmluZyBleGlzdGluZyAlcyAoY3J0YyBtYXNrIDB4JTA4eCwgYXRpdmUg JWQpXG4iLAo+ICAJCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBwbGwtPm5hbWUsCj4gLQkJ CQkgICAgICBwbGwtPm5ld19jb25maWctPmNydGNfbWFzaywKPiArCQkJCSAgICAgIHNoYXJlZF9k cGxsW2ldLmNydGNfbWFzaywKPiAgCQkJCSAgICAgIHBsbC0+YWN0aXZlKTsKPiAgCQkJZ290byBm b3VuZDsKPiAgCQl9Cj4gQEAgLTQyODUsNyArNDI4OCw3IEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJ LyogT2sgbm8gbWF0Y2hpbmcgdGltaW5ncywgbWF5YmUgdGhlcmUncyBhIGZyZWUgb25lPyAqLwo+ ICAJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewo+ICAJ CXBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldOwo+IC0JCWlmIChwbGwtPm5ld19jb25m aWctPmNydGNfbWFzayA9PSAwKSB7Cj4gKwkJaWYgKHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayA9 PSAwKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkNSVEM6JWQgYWxsb2NhdGVkICVzXG4iLAo+ICAJ CQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBwbGwtPm5hbWUpOwo+ICAJCQlnb3RvIGZvdW5k Owo+IEBAIC00Mjk1LDgzICs0Mjk4LDMzIEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50 ZWxfZ2V0X3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJcmV0dXJuIE5V TEw7Cj4gIAo+ICBmb3VuZDoKPiAtCWlmIChwbGwtPm5ld19jb25maWctPmNydGNfbWFzayA9PSAw KQo+IC0JCXBsbC0+bmV3X2NvbmZpZy0+aHdfc3RhdGUgPSBjcnRjX3N0YXRlLT5kcGxsX2h3X3N0 YXRlOwo+ICsJaWYgKHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayA9PSAwKQo+ICsJCXNoYXJlZF9k cGxsW2ldLmh3X3N0YXRlID0KPiArCQkJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZTsKPiAgCj4g IAljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGk7Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJ1c2lu ZyAlcyBmb3IgcGlwZSAlY1xuIiwgcGxsLT5uYW1lLAo+ICAJCQkgcGlwZV9uYW1lKGNydGMtPnBp cGUpKTsKPiAgCj4gLQlwbGwtPm5ld19jb25maWctPmNydGNfbWFzayB8PSAxIDw8IGNydGMtPnBp cGU7Cj4gKwlzaGFyZWRfZHBsbFtpXS5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOwo+ICAK PiAgCXJldHVybiBwbGw7Cj4gIH0KPiAgCj4gLS8qKgo+IC0gKiBpbnRlbF9zaGFyZWRfZHBsbF9z dGFydF9jb25maWcgLSBzdGFydCBhIG5ldyBQTEwgc3RhZ2VkIGNvbmZpZwo+IC0gKiBAZGV2X3By aXY6IERSTSBkZXZpY2UKPiAtICogQGNsZWFyX3BpcGVzOiBtYXNrIG9mIHBpcGVzIHRoYXQgd2ls bCBoYXZlIHRoZWlyIFBMTHMgZnJlZWQKPiAtICoKPiAtICogU3RhcnRzIGEgbmV3IFBMTCBzdGFn ZWQgY29uZmlnLCBjb3B5aW5nIHRoZSBjdXJyZW50IGNvbmZpZyBidXQKPiAtICogcmVsZWFzaW5n IHRoZSByZWZlcmVuY2VzIG9mIHBpcGVzIHNwZWNpZmllZCBpbiBjbGVhcl9waXBlcy4KPiAtICov Cj4gLXN0YXRpYyBpbnQgaW50ZWxfc2hhcmVkX2RwbGxfc3RhcnRfY29uZmlnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJCQkgIHVuc2lnbmVkIGNsZWFyX3BpcGVzKQo+ IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiAtCWVudW0gaW50ZWxfZHBs bF9pZCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxs OyBpKyspIHsKPiAtCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAtCj4gLQkJ cGxsLT5uZXdfY29uZmlnID0ga21lbWR1cCgmcGxsLT5jb25maWcsIHNpemVvZiBwbGwtPmNvbmZp ZywKPiAtCQkJCQkgIEdGUF9LRVJORUwpOwo+IC0JCWlmICghcGxsLT5uZXdfY29uZmlnKQo+IC0J CQlnb3RvIGNsZWFudXA7Cj4gLQo+IC0JCXBsbC0+bmV3X2NvbmZpZy0+Y3J0Y19tYXNrICY9IH5j bGVhcl9waXBlczsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAtCj4gLWNsZWFudXA6Cj4gLQl3 aGlsZSAoLS1pID49IDApIHsKPiAtCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsK PiAtCQlrZnJlZShwbGwtPm5ld19jb25maWcpOwo+IC0JCXBsbC0+bmV3X2NvbmZpZyA9IE5VTEw7 Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIC1FTk9NRU07Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGlu dGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK3N0YXRpYyB2b2lkIGludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29u ZmlnICpzaGFyZWRfZHBsbDsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAJ ZW51bSBpbnRlbF9kcGxsX2lkIGk7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5u dW1fc2hhcmVkX2RwbGw7IGkrKykgewo+IC0JCXBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxz W2ldOwo+IC0KPiAtCQlXQVJOX09OKHBsbC0+bmV3X2NvbmZpZyA9PSAmcGxsLT5jb25maWcpOwo+ IC0KPiAtCQlwbGwtPmNvbmZpZyA9ICpwbGwtPm5ld19jb25maWc7Cj4gLQkJa2ZyZWUocGxsLT5u ZXdfY29uZmlnKTsKPiAtCQlwbGwtPm5ld19jb25maWcgPSBOVUxMOwo+IC0JfQo+IC19Cj4gLQo+ IC1zdGF0aWMgdm9pZCBpbnRlbF9zaGFyZWRfZHBsbF9hYm9ydF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KnBsbDsKPiAtCWVudW0gaW50ZWxfZHBsbF9pZCBpOwo+ICsJaWYgKCF0b19pbnRlbF9hdG9taWNf c3RhdGUoc3RhdGUpLT5kcGxsX3NldCkKPiArCQlyZXR1cm47Cj4gIAo+ICsJc2hhcmVkX2RwbGwg PSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5zaGFyZWRfZHBsbDsKPiAgCWZvciAoaSA9 IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPiAgCQlwbGwgPSAmZGV2 X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAtCj4gLQkJV0FSTl9PTihwbGwtPm5ld19jb25maWcg PT0gJnBsbC0+Y29uZmlnKTsKPiAtCj4gLQkJa2ZyZWUocGxsLT5uZXdfY29uZmlnKTsKPiAtCQlw bGwtPm5ld19jb25maWcgPSBOVUxMOwo+ICsJCXBsbC0+Y29uZmlnID0gc2hhcmVkX2RwbGxbaV07 Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTExNTMyLDEzICsxMTQ4NSwxMiBAQCBzdGF0aWMgdm9pZAo+ ICBpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOwo+ICAJc3RydWN0IGRybV9jcnRjICpj cnRjOwo+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAgCj4gLQlpbnRlbF9zaGFyZWRfZHBsbF9jb21taXQo ZGV2X3ByaXYpOwo+ICsJaW50ZWxfc2hhcmVkX2RwbGxfY29tbWl0KHN0YXRlKTsKPiAgCWRybV9h dG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+ICAKPiAgCWZvcl9l YWNoX2ludGVsX2VuY29kZXIoZGV2LCBpbnRlbF9lbmNvZGVyKSB7Cj4gQEAgLTEyMTcxLDkgKzEy MTIzLDEzIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZV9zZXR1cF9wbGxzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gaW50ZWxf c2hhcmVkX2RwbGxfc3RhcnRfY29uZmlnKGRldl9wcml2LCBjbGVhcl9waXBlcyk7Cj4gLQlpZiAo cmV0KQo+IC0JCWdvdG8gZG9uZTsKPiArCWlmIChjbGVhcl9waXBlcykgewo+ICsJCXN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbF9jb25maWcgKnNoYXJlZF9kcGxsID0KPiArCQkJaW50ZWxfYXRvbWlj X2dldF9zaGFyZWRfZHBsbF9zdGF0ZShzdGF0ZSk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBk ZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspCj4gKwkJCXNoYXJlZF9kcGxsW2ldLmNydGNf bWFzayAmPSB+Y2xlYXJfcGlwZXM7Cj4gKwl9Cj4gIAo+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0 ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWlmICghbmVlZHNfbW9kZXNldChj cnRjX3N0YXRlKSB8fCAhY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+IEBAIC0xMjE4NCwxMyArMTIxNDAs MTAgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlX3NldHVwX3BsbHMoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ICAKPiAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2NvbXB1dGVfY2xvY2soaW50ZWxfY3J0YywKPiAgCQkJCQkJCSAgIGludGVsX2NydGNfc3RhdGUp Owo+IC0JCWlmIChyZXQpIHsKPiAtCQkJaW50ZWxfc2hhcmVkX2RwbGxfYWJvcnRfY29uZmlnKGRl dl9wcml2KTsKPiAtCQkJZ290byBkb25lOwo+IC0JCX0KPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1 cm4gcmV0Owo+ICAJfQo+ICAKPiAtZG9uZToKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAg LTEzODg3LDYgKzEzODQwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdf ZnVuY3MgaW50ZWxfbW9kZV9mdW5jcyA9IHsKPiAgCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW50 ZWxfZmJkZXZfb3V0cHV0X3BvbGxfY2hhbmdlZCwKPiAgCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9h dG9taWNfY2hlY2ssCj4gIAkuYXRvbWljX2NvbW1pdCA9IGludGVsX2F0b21pY19jb21taXQsCj4g KwkuYXRvbWljX3N0YXRlX2FsbG9jID0gaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jLAo+ICsJLmF0 b21pY19zdGF0ZV9jbGVhciA9IGludGVsX2F0b21pY19zdGF0ZV9jbGVhciwKPiAgfTsKPiAgCj4g IC8qIFNldCB1cCBjaGlwIHNwZWNpZmljIGRpc3BsYXkgZnVuY3Rpb25zICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBkMGQ5OTY2OWFhMDAuLjcwMTJjNjdkZThkNSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTI0MSw2ICsyNDEsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgZHBsbCB7Cj4gIAlpbnQJcDsKPiAgfSBpbnRlbF9jbG9ja190Owo+ICAKPiArc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSBiYXNlOwo+ ICsKPiArCWJvb2wgZHBsbF9zZXQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmln IHNoYXJlZF9kcGxsW0k5MTVfTlVNX1BMTFNdOwo+ICt9Owo+ICsKPiAgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlIHsKPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgYmFzZTsKPiAgCXN0cnVjdCBk cm1fcmVjdCBzcmM7Cj4gQEAgLTYyNyw2ICs2MzQsNyBAQCBzdHJ1Y3QgY3hzcl9sYXRlbmN5IHsK PiAgCXVuc2lnbmVkIGxvbmcgY3Vyc29yX2hwbGxfZGlzYWJsZTsKPiAgfTsKPiAgCj4gKyNkZWZp bmUgdG9faW50ZWxfYXRvbWljX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlLCBiYXNlKQo+ICAjZGVmaW5lIHRvX2ludGVsX2NydGMoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjLCBiYXNlKQo+ICAjZGVmaW5lIHRvX2ludGVsX2NydGNf c3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBiYXNlKQo+ ICAjZGVmaW5lIHRvX2ludGVsX2Nvbm5lY3Rvcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGlu dGVsX2Nvbm5lY3RvciwgYmFzZSkKPiBAQCAtMTQwMiw2ICsxNDEwLDExIEBAIGludCBpbnRlbF9j b25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmludGVsX2NydGNfZHVwbGljYXRlX3N0YXRl KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqc3RhdGUpOwo+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqaW50ZWxfYXRvbWljX3N0YXRl X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGludGVsX2F0b21pY19zdGF0 ZV9jbGVhcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqKTsKPiArc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsX2NvbmZpZyAqCj4gK2ludGVsX2F0b21pY19nZXRfc2hhcmVkX2RwbGxfc3RhdGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnMpOwo+ICsKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqCj4gIGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK