From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 17/22] drm/i915: Use atomics to manipulate obj->frontbuffer_bits Date: Thu, 28 Jul 2016 12:05:03 +0200 Message-ID: <20160728100503.GE6232@phenom.ffwll.local> References: <1469618100-15298-1-git-send-email-chris@chris-wilson.co.uk> <1469618100-15298-18-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id B010A6E7BB for ; Thu, 28 Jul 2016 10:05:08 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id x83so10337011wma.3 for ; Thu, 28 Jul 2016 03:05:08 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1469618100-15298-18-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMjcsIDIwMTYgYXQgMTI6MTQ6NTVQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSBpbmRpdmlkdWFsIGJpdHMgaW5zaWRlIG9iai0+ZnJvbnRidWZmZXJfYml0cyBh cmUgcHJvdGVjdGVkIGJ5IGVhY2gKPiBwbGFuZS0+bXV0ZXgsIGJ1dCB0aGUgd2hvbGUgYml0Zmll bGQgbWF5IGJlIGFjY2Vzc2VkIGJ5IG11bHRpcGxlIEtNUwo+IG9wZXJhdGlvbnMgc2ltdWx0YW5l b3VzbHkgYW5kIHNvIHRoZSBSTVcgbmVlZCB0byBiZSB1bmRlciBhdG9taWNzLgo+IEhvd2V2ZXIs IGZvciB1cGRhdGluZyB0aGUgc2luZ2xlIGZpZWxkIHdlIGRvIG5vdCBuZWVkIHRvIG1hbmRhdGUg dGhhdCBpdAo+IGJlIHVuZGVyIHRoZSBzdHJ1Y3RfbXV0ZXgsIG9uZSBtb3JlIHN0ZXAgdG93YXJk cyBpdHMgcmVtb3ZhbCBhcyB0aGUgZGUKPiBmYWN0byBCS0wuCj4gCj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jICAgICAgfCAgNiArKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICB8ICA0ICstLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgIHwgMTggKysrKysrLS0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jIHwgMjMgKysr KysrKysrLS0tLS0tLS0tLS0tLS0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCsp LCA0NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGlu ZGV4IGZjZmE5Y2E2YjUwYS4uMTBhMzQ2MjM3Nzk1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiBAQCAtMTM4LDYgKzEzOCw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ICAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4g Kwl1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0czsKPiAgCWludCBwaW5fY291bnQgPSAwOwo+ ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAo+IEBAIC0yMDQsOCArMjA1LDkgQEAgZGVz Y3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiAgCWlmIChlbmdpbmUpCj4gIAkJc2VxX3ByaW50ZihtLCAiICglcykiLCBlbmdpbmUt Pm5hbWUpOwo+ICAKPiAtCWlmIChvYmotPmZyb250YnVmZmVyX2JpdHMpCj4gLQkJc2VxX3ByaW50 ZihtLCAiIChmcm9udGJ1ZmZlcjogMHglMDN4KSIsIG9iai0+ZnJvbnRidWZmZXJfYml0cyk7Cj4g Kwlmcm9udGJ1ZmZlcl9iaXRzID0gYXRvbWljX3JlYWQoJm9iai0+ZnJvbnRidWZmZXJfYml0cyk7 Cj4gKwlpZiAoZnJvbnRidWZmZXJfYml0cykKPiArCQlzZXFfcHJpbnRmKG0sICIgKGZyb250YnVm ZmVyOiAweCUwM3gpIiwgZnJvbnRidWZmZXJfYml0cyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQg aTkxNV9nZW1fb2JqZWN0X2xpc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYTI0ZDMxZTNlMDE0Li5iNmI5YTFmNzgy MzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjEyNyw4ICsyMTI3LDYgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIHsKPiAgICovCj4gICNkZWZpbmUgSU5URUxf TUFYX1NQUklURV9CSVRTX1BFUl9QSVBFIDUKPiAgI2RlZmluZSBJTlRFTF9GUk9OVEJVRkZFUl9C SVRTX1BFUl9QSVBFIDgKPiAtI2RlZmluZSBJTlRFTF9GUk9OVEJVRkZFUl9CSVRTIFwKPiAtCShJ TlRFTF9GUk9OVEJVRkZFUl9CSVRTX1BFUl9QSVBFICogSTkxNV9NQVhfUElQRVMpCj4gICNkZWZp bmUgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKSBcCj4gIAkoMSA8PCAoSU5URUxfRlJP TlRCVUZGRVJfQklUU19QRVJfUElQRSAqIChwaXBlKSkpCj4gICNkZWZpbmUgSU5URUxfRlJPTlRC VUZGRVJfQ1VSU09SKHBpcGUpIFwKPiBAQCAtMjIxNiw3ICsyMjE0LDcgQEAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3Qgewo+ICAJdW5zaWduZWQgaW50IGNhY2hlX2xldmVsOjM7Cj4gIAl1bnNp Z25lZCBpbnQgY2FjaGVfZGlydHk6MTsKPiAgCj4gLQl1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJf Yml0czpJTlRFTF9GUk9OVEJVRkZFUl9CSVRTOwo+ICsJYXRvbWljX3QgZnJvbnRidWZmZXJfYml0 czsKPiAgCj4gIAl1bnNpZ25lZCBpbnQgaGFzX3djX21tYXA7Cj4gIAkvKiogQ291bnQgb2YgVk1B IGFjdHVhbGx5IGJvdW5kIGJ5IHRoaXMgb2JqZWN0ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggN2RiMDgwOGY2OTYxLi5iYzViYzVjY2RkZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtNDAzMSw3ICs0MDMxLDcgQEAgdm9pZCBpOTE1X2dlbV9mcmVlX29iamVj dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCj4gIAlpZiAob2JqLT5zdG9sZW4pCj4g IAkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gIAo+IC0JV0FSTl9PTihvYmot PmZyb250YnVmZmVyX2JpdHMpOwo+ICsJV0FSTl9PTihhdG9taWNfcmVhZCgmb2JqLT5mcm9udGJ1 ZmZlcl9iaXRzKSk7Cj4gIAo+ICAJaWYgKG9iai0+cGFnZXMgJiYgb2JqLT5tYWR2ID09IEk5MTVf TUFEVl9XSUxMTkVFRCAmJgo+ICAJICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJ WlpMRURfUEFHRVMgJiYKPiBAQCAtNDU0OSwxNiArNDU0OSwyMCBAQCB2b2lkIGk5MTVfZ2VtX3Ry YWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCj4gIAkJICAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpuZXcsCj4gIAkJICAgICAgIHVuc2lnbmVkIGZyb250YnVm ZmVyX2JpdHMpCj4gIHsKPiArCS8qIENvbnRyb2wgb2YgaW5kaXZpZHVhbCBiaXRzIHdpdGhpbiB0 aGUgYml0ZmllbGQgYXJlIGd1YXJkZWQgYnkKPiArCSAqIHRoZSBvd25pbmcgcGxhbmUtPm11dGV4 LCBpLmUuIHdlIGNhbiBuZXZlciBzZWUgY29uY3VycmVudAo+ICsJICogbWFuaXB1bGF0aW9uIG9m IGluZGl2aWR1YWwgYml0cy4gQnV0IHNpbmNlIHRoZSBiaXRmaWVsZCBhcyBhIHdob2xlCj4gKwkg KiBpcyB1cGRhdGVkIHVzaW5nIFJNVywgd2UgbmVlZCB0byB1c2UgYXRvbWljcyBpbiBvcmRlciB0 byB1cGRhdGUKPiArCSAqIHRoZSBiaXRzLgo+ICsJICovCj4gIAlpZiAob2xkKSB7Cj4gLQkJV0FS Tl9PTighbXV0ZXhfaXNfbG9ja2VkKCZvbGQtPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiAt CQlXQVJOX09OKCEob2xkLT5mcm9udGJ1ZmZlcl9iaXRzICYgZnJvbnRidWZmZXJfYml0cykpOwo+ IC0JCW9sZC0+ZnJvbnRidWZmZXJfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0czsKPiArCQlXQVJO X09OKCEoYXRvbWljX3JlYWQoJm9sZC0+ZnJvbnRidWZmZXJfYml0cykgJiBmcm9udGJ1ZmZlcl9i aXRzKSk7Cj4gKwkJYXRvbWljX2FuZG5vdChmcm9udGJ1ZmZlcl9iaXRzLCAmb2xkLT5mcm9udGJ1 ZmZlcl9iaXRzKTsKPiAgCX0KPiAgCj4gIAlpZiAobmV3KSB7Cj4gLQkJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZuZXctPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiAtCQlXQVJOX09OKG5l dy0+ZnJvbnRidWZmZXJfYml0cyAmIGZyb250YnVmZmVyX2JpdHMpOwo+IC0JCW5ldy0+ZnJvbnRi dWZmZXJfYml0cyB8PSBmcm9udGJ1ZmZlcl9iaXRzOwo+ICsJCVdBUk5fT04oYXRvbWljX3JlYWQo Jm5ldy0+ZnJvbnRidWZmZXJfYml0cykgJiBmcm9udGJ1ZmZlcl9iaXRzKTsKPiArCQlhdG9taWNf b3IoZnJvbnRidWZmZXJfYml0cywgJm5ldy0+ZnJvbnRidWZmZXJfYml0cyk7Cj4gIAl9Cj4gIH0K PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGVkMjA2OWM1NjAz Ni4uMWM3MGY2ODMyOGI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC0yNjAwLDcgKzI2MDAsOCBAQCB2YWxpZF9mYjoKPiAgCXByaW1hcnktPmZiID0gcHJpbWFy eS0+c3RhdGUtPmZiID0gZmI7Cj4gIAlwcmltYXJ5LT5jcnRjID0gcHJpbWFyeS0+c3RhdGUtPmNy dGMgPSAmaW50ZWxfY3J0Yy0+YmFzZTsKPiAgCWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPnBsYW5l X21hc2sgfD0gKDEgPDwgZHJtX3BsYW5lX2luZGV4KHByaW1hcnkpKTsKPiAtCW9iai0+ZnJvbnRi dWZmZXJfYml0cyB8PSB0b19pbnRlbF9wbGFuZShwcmltYXJ5KS0+ZnJvbnRidWZmZXJfYml0Owo+ ICsJYXRvbWljX29yKHRvX2ludGVsX3BsYW5lKHByaW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQsCj4g KwkJICAmb2JqLT5mcm9udGJ1ZmZlcl9iaXRzKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+IEBAIC0x MzgwNywxOSArMTM4MDgsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3RyYWNrX2Zicyhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKm9sZF9wbGFuZV9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+IC0J c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9sZF9vYmo7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICAJaW50IGk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmc3Rh dGUtPmRldi0+c3RydWN0X211dGV4KTsKPiAtCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRl LCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBpKSB7Cj4gLQkJb2JqID0gaW50ZWxfZmJfb2JqKHBs YW5lLT5zdGF0ZS0+ZmIpOwo+IC0JCW9sZF9vYmogPSBpbnRlbF9mYl9vYmoob2xkX3BsYW5lX3N0 YXRlLT5mYik7Cj4gLQkJaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gLQo+ IC0JCWk5MTVfZ2VtX3RyYWNrX2ZiKG9sZF9vYmosIG9iaiwgaW50ZWxfcGxhbmUtPmZyb250YnVm ZmVyX2JpdCk7Cj4gLQl9Cj4gLQltdXRleF91bmxvY2soJnN0YXRlLT5kZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9z dGF0ZSwgaSkKPiArCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoob2xkX3BsYW5lX3N0 YXRlLT5mYiksCj4gKwkJCQkgIGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKSwKPiArCQkJ CSAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9iaXQpOwo+ICB9Cj4gIAo+ICAv KioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDAxMDU2Y2U4ZDQ2MS4uNTI5NDAz OWNmMjM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTE0NywyNyArMTE0 NywzNSBAQCB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfYWxpZ25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJCQkgICB1aW50NjRfdCBmYl9mb3JtYXRfbW9kaWZpZXIpOwo+ICAKPiAg dm9pZCBfX2ludGVsX2ZiX29ial9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gLQkJCSAgICAgICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ICsJCQkgICAg ICAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luLAo+ICsJCQkgICAgICAgdW5zaWduZWQgaW50IGZy b250YnVmZmVyX2JpdHMpOwo+ICBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCQkgICBlbnVtIGZi X29wX29yaWdpbiBvcmlnaW4pCj4gIHsKPiAtCWlmICghb2JqLT5mcm9udGJ1ZmZlcl9iaXRzKQo+ ICsJdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHM7Cj4gKwo+ICsJZnJvbnRidWZmZXJfYml0 cyA9IGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+ICsJaWYgKCFmcm9udGJ1 ZmZlcl9iaXRzKQo+ICAJCXJldHVybjsKPiAgCj4gLQlfX2ludGVsX2ZiX29ial9pbnZhbGlkYXRl KG9iaiwgb3JpZ2luKTsKPiArCV9faW50ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLCBvcmlnaW4s IGZyb250YnVmZmVyX2JpdHMpOwo+ICB9Cj4gIAo+ICB2b2lkIF9faW50ZWxfZmJfb2JqX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCSAgYm9vbCByZXRpcmUsCj4g LQkJCSAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsKPiArCQkJICBlbnVtIGZiX29wX29yaWdp biBvcmlnaW4sCj4gKwkJCSAgdW5zaWduZWQgaW50IGZyb250YnVmZmVyX3RpYnN0KTsKPiAgc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2ZiX29ial9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAJCQkJICAgICAgYm9vbCByZXRpcmUsCj4gIAkJCQkgICAgICBlbnVtIGZi X29wX29yaWdpbiBvcmlnaW4pCj4gIHsKPiAtCWlmICghb2JqLT5mcm9udGJ1ZmZlcl9iaXRzKQo+ ICsJdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHM7Cj4gKwo+ICsJZnJvbnRidWZmZXJfYml0 cyA9IGF0b21pY19yZWFkKCZvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+ICsJaWYgKCFmcm9udGJ1 ZmZlcl9iaXRzKQo+ICAJCXJldHVybjsKPiAgCj4gLQlfX2ludGVsX2ZiX29ial9mbHVzaChvYmos IHJldGlyZSwgb3JpZ2luKTsKPiArCV9faW50ZWxfZmJfb2JqX2ZsdXNoKG9iaiwgcmV0aXJlLCBv cmlnaW4sIGZyb250YnVmZmVyX2JpdHMpOwo+ICB9Cj4gIAo+ICB1MzIgaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4gaW5kZXggYTM4Y2NmZTQ4OTRh Li42MzYzMjRkYTIxYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZnJvbnRidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVm ZmVyLmMKPiBAQCAtNzcsMjMgKzc3LDIyIEBACj4gICAqIHNjaGVkdWxlZC4KPiAgICovCj4gIHZv aWQgX19pbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+IC0JCQkgICAgICAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ICsJCQkgICAgICAg ZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luLAo+ICsJCQkgICAgICAgdW5zaWduZWQgaW50IGZyb250 YnVmZmVyX2JpdHMpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2Uu ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Owo+ICAKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsK PiAtCj4gIAlpZiAob3JpZ2luID09IE9SSUdJTl9DUykgewo+ICAJCXNwaW5fbG9jaygmZGV2X3By aXYtPmZiX3RyYWNraW5nLmxvY2spOwo+IC0JCWRldl9wcml2LT5mYl90cmFja2luZy5idXN5X2Jp dHMgfD0gb2JqLT5mcm9udGJ1ZmZlcl9iaXRzOwo+IC0JCWRldl9wcml2LT5mYl90cmFja2luZy5m bGlwX2JpdHMgJj0gfm9iai0+ZnJvbnRidWZmZXJfYml0czsKPiArCQlkZXZfcHJpdi0+ZmJfdHJh Y2tpbmcuYnVzeV9iaXRzIHw9IGZyb250YnVmZmVyX2JpdHM7Cj4gKwkJZGV2X3ByaXYtPmZiX3Ry YWNraW5nLmZsaXBfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0czsKPiAgCQlzcGluX3VubG9jaygm ZGV2X3ByaXYtPmZiX3RyYWNraW5nLmxvY2spOwo+ICAJfQo+ICAKPiAtCWludGVsX3Bzcl9pbnZh bGlkYXRlKGRldiwgb2JqLT5mcm9udGJ1ZmZlcl9iaXRzKTsKPiAtCWludGVsX2VkcF9kcnJzX2lu dmFsaWRhdGUoZGV2LCBvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+IC0JaW50ZWxfZmJjX2ludmFs aWRhdGUoZGV2X3ByaXYsIG9iai0+ZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsKPiArCWludGVs X3Bzcl9pbnZhbGlkYXRlKGRldiwgZnJvbnRidWZmZXJfYml0cyk7Cj4gKwlpbnRlbF9lZHBfZHJy c19pbnZhbGlkYXRlKGRldiwgZnJvbnRidWZmZXJfYml0cyk7Cj4gKwlpbnRlbF9mYmNfaW52YWxp ZGF0ZShkZXZfcHJpdiwgZnJvbnRidWZmZXJfYml0cywgb3JpZ2luKTsKPiAgfQo+ICAKPiAgLyoq Cj4gQEAgLTEzOSwxNSArMTM4LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2Zyb250YnVmZmVyX2Zs dXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAqLwo+ICB2b2lkIF9faW50ZWxfZmJfb2Jq X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCSAgYm9vbCByZXRp cmUsCj4gLQkJCSAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ICsJCQkgIGVudW0gZmJfb3Bf b3JpZ2luIG9yaWdpbiwKPiArCQkJICB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cykKPiAg ewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQl1bnNpZ25lZCBm cm9udGJ1ZmZlcl9iaXRzOwo+IC0KPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5z dHJ1Y3RfbXV0ZXgpKTsKPiAtCj4gLQlmcm9udGJ1ZmZlcl9iaXRzID0gb2JqLT5mcm9udGJ1ZmZl cl9iaXRzOwo+ICAKPiAgCWlmIChyZXRpcmUpIHsKPiAgCQlzcGluX2xvY2soJmRldl9wcml2LT5m Yl90cmFja2luZy5sb2NrKTsKPiAtLSAKPiAyLjguMQo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=