From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Mika Kuoppala In-Reply-To: <20180627194434.28541-1-chris@chris-wilson.co.uk> References: <20180627194434.28541-1-chris@chris-wilson.co.uk> Date: Thu, 28 Jun 2018 17:25:49 +0300 Message-ID: <87vaa3t2c2.fsf@gaia.fi.intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t] igt/gem_userptr: Check read-only mappings List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gU2V0dXAg YSB1c2VycHRyIG9iamVjdCB0aGF0IG9ubHkgaGFzIGEgcmVhZC1vbmx5IG1hcHBpbmcgYmFjayB0 byBhIGZpbGUKPiBzdG9yZSAobWVtZmQpLiBUaGVuIGF0dGVtcHQgdG8gd3JpdGUgaW50byB0aGF0 IG1hcHBpbmcgdXNpbmcgdGhlIEdQVSBhbmQKPiBhc3NlcnQgdGhhdCB0aG9zZSB3cml0ZXMgZG8g bm90IGxhbmQgKHdoaWxlIGFsc28gd3JpdGluZyB2aWEgYSB3cml0YWJsZQo+IHVzZXJwdHIgbWFw cGluZyBpbnRvIHRoZSBzYW1lIG1lbWZkIHRvIHZlcmlmeSB0aGF0IHRoZSBHUFUgaXMgd29ya2lu ZyEpCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBD YzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IC0t LQo+ICBjb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgICAxICsKPiAgbGliL2lvY3RsX3dyYXBw ZXJzLmMgICAgICB8ICAgNCArLQo+ICBsaWIvaW9jdGxfd3JhcHBlcnMuaCAgICAgIHwgICA0ICst Cj4gIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDEgKwo+ICBtZXNvbi5idWlsZCAgICAg ICAgICAgICAgIHwgICAxICsKPiAgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICB8ICAgNCArLQo+ ICB0ZXN0cy9nZW1fdXNlcnB0cl9ibGl0cy5jIHwgMzM3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4gIDcgZmlsZXMgY2hhbmdlZCwgMzQyIGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5h Ywo+IGluZGV4IDFlZTRlOTBlOS4uMTk1OTYzZDRmIDEwMDY0NAo+IC0tLSBhL2NvbmZpZ3VyZS5h Ywo+ICsrKyBiL2NvbmZpZ3VyZS5hYwo+IEBAIC0xMjUsNiArMTI1LDcgQEAgUEtHX0NIRUNLX01P RFVMRVMoUENJQUNDRVNTLCBbcGNpYWNjZXNzID49IDAuMTBdKQo+ICBQS0dfQ0hFQ0tfTU9EVUxF UyhLTU9ELCBbbGlia21vZF0pCj4gIFBLR19DSEVDS19NT0RVTEVTKFBST0NQUywgW2xpYnByb2Nw c10pCj4gIFBLR19DSEVDS19NT0RVTEVTKExJQlVOV0lORCwgW2xpYnVud2luZF0pCj4gK1BLR19D SEVDS19NT0RVTEVTKFNTTCwgW29wZW5zc2xdKQo+ICBQS0dfQ0hFQ0tfTU9EVUxFUyhWQUxHUklO RCwgW3ZhbGdyaW5kXSwgW2hhdmVfdmFsZ3JpbmQ9eWVzXSwgW2hhdmVfdmFsZ3JpbmQ9bm9dKQo+ ICAKPiAgaWYgdGVzdCB4JGhhdmVfdmFsZ3JpbmQgPSB4eWVzOyB0aGVuCj4gZGlmZiAtLWdpdCBh L2xpYi9pb2N0bF93cmFwcGVycy5jIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKPiBpbmRleCA3OWRi NDRhOGMuLmQ1ZDJhNGU0YyAxMDA2NDQKPiAtLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuYwo+ICsr KyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCj4gQEAgLTg2OSw3ICs4NjksNyBAQCBpbnQgZ2VtX21h ZHZpc2UoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludCBzdGF0ZSkKPiAgCXJldHVybiBtYWR2 LnJldGFpbmVkOwo+ICB9Cj4gIAo+IC1pbnQgX19nZW1fdXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0 ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFu ZGxlKQo+ICtpbnQgX19nZW1fdXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0ciwgdWludDY0X3Qgc2l6 ZSwgaW50IHJlYWRfb25seSwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpoYW5kbGUpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB1c2VycHRyOwo+ICAKPiBAQCAtODk4LDcg Kzg5OCw3IEBAIGludCBfX2dlbV91c2VycHRyKGludCBmZCwgdm9pZCAqcHRyLCBpbnQgc2l6ZSwg aW50IHJlYWRfb25seSwgdWludDMyX3QgZmxhZ3MsIHVpCj4gICAqCj4gICAqIFJldHVybnMgdXNl cnB0ciBoYW5kbGUgZm9yIHRoZSBHRU0gb2JqZWN0Lgo+ICAgKi8KPiAtdm9pZCBnZW1fdXNlcnB0 cihpbnQgZmQsIHZvaWQgKnB0ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZs YWdzLCB1aW50MzJfdCAqaGFuZGxlKQo+ICt2b2lkIGdlbV91c2VycHRyKGludCBmZCwgdm9pZCAq cHRyLCB1aW50NjRfdCBzaXplLCBpbnQgcmVhZF9vbmx5LCB1aW50MzJfdCBmbGFncywgdWludDMy X3QgKmhhbmRsZSkKPiAgewo+ICAJaWd0X2Fzc2VydF9lcShfX2dlbV91c2VycHRyKGZkLCBwdHIs IHNpemUsIHJlYWRfb25seSwgZmxhZ3MsIGhhbmRsZSksIDApOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKPiBpbmRleCBiOTY2 ZjcyYzkuLjhlMmNkMzgwYiAxMDA2NDQKPiAtLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuaAo+ICsr KyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCj4gQEAgLTEzMyw4ICsxMzMsOCBAQCBzdHJ1Y3QgbG9j YWxfaTkxNV9nZW1fdXNlcnB0ciB7Cj4gICNkZWZpbmUgTE9DQUxfSTkxNV9VU0VSUFRSX1VOU1lO Q0hST05JWkVEICgxPDwzMSkKPiAgCXVpbnQzMl90IGhhbmRsZTsKPiAgfTsKPiAtdm9pZCBnZW1f dXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQz Ml90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKPiAtaW50IF9fZ2VtX3VzZXJwdHIoaW50IGZk LCB2b2lkICpwdHIsIGludCBzaXplLCBpbnQgcmVhZF9vbmx5LCB1aW50MzJfdCBmbGFncywgdWlu dDMyX3QgKmhhbmRsZSk7Cj4gK3ZvaWQgZ2VtX3VzZXJwdHIoaW50IGZkLCB2b2lkICpwdHIsIHVp bnQ2NF90IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFu ZGxlKTsKPiAraW50IF9fZ2VtX3VzZXJwdHIoaW50IGZkLCB2b2lkICpwdHIsIHVpbnQ2NF90IHNp emUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKPiAg Cj4gIHZvaWQgZ2VtX3N3X2ZpbmlzaChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7Cj4gIAo+IGRp ZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCAxYTM1 NTQxNGUuLjkzOTE2N2Y5MSAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9s aWIvbWVzb24uYnVpbGQKPiBAQCAtNjIsNiArNjIsNyBAQCBsaWJfZGVwcyA9IFsKPiAgCXB0aHJl YWRzLAo+ICAJbWF0aCwKPiAgCXJlYWx0aW1lLAo+ICsJc3NsLAo+ICBdCj4gIAo+ICBpZiBsaWJk cm1faW50ZWwuZm91bmQoKQo+IGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxk Cj4gaW5kZXggNGQxNWQ2MjM4Li42MzhjMDEwNjYgMTAwNjQ0Cj4gLS0tIGEvbWVzb24uYnVpbGQK PiArKysgYi9tZXNvbi5idWlsZAo+IEBAIC05OCw2ICs5OCw3IEBAIHBjaWFjY2VzcyA9IGRlcGVu ZGVuY3koJ3BjaWFjY2VzcycsIHZlcnNpb24gOiAnPj0wLjEwJykKPiAgbGlia21vZCA9IGRlcGVu ZGVuY3koJ2xpYmttb2QnKQo+ICBsaWJwcm9jcHMgPSBkZXBlbmRlbmN5KCdsaWJwcm9jcHMnLCBy ZXF1aXJlZCA6IHRydWUpCj4gIGxpYnVud2luZCA9IGRlcGVuZGVuY3koJ2xpYnVud2luZCcsIHJl cXVpcmVkIDogdHJ1ZSkKPiArc3NsID0gZGVwZW5kZW5jeSgnb3BlbnNzbCcsIHJlcXVpcmVkIDog dHJ1ZSkKPiAgCj4gIHZhbGdyaW5kID0gbnVsbF9kZXAKPiAgdmFsZ3JpbmRpbmZvID0gJ05vJwo+ IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCj4gaW5k ZXggZjQxYWQ1MDk2Li5iYTMwN2IyMjAgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0K PiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQo+IEBAIC0xMjYsOCArMTI2LDggQEAgZ2VtX3RpbGVk X3N3YXBwaW5nX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCj4gIGdlbV90 aWxlZF9zd2FwcGluZ19MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+ICBwcmltZV9zZWxmX2lt cG9ydF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQo+ICBwcmltZV9zZWxm X2ltcG9ydF9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+IC1nZW1fdXNlcnB0cl9ibGl0c19D RkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQo+IC1nZW1fdXNlcnB0cl9ibGl0 c19MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+ICtnZW1fdXNlcnB0cl9ibGl0c19DRkxBR1Mg PSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKSAkKFNTTF9DRkxBR1MpCj4gK2dlbV91c2Vy cHRyX2JsaXRzX0xEQUREID0gJChMREFERCkgJChTU0xfTElCUykgLWxwdGhyZWFkCj4gIHBlcmZf cG11X0xEQUREID0gJChMREFERCkgJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpZ3RfcGVyZi5sYQo+ ICAKPiAgZ2VtX2Vpb19MREFERCA9ICQoTERBREQpIC1scnQKPiBkaWZmIC0tZ2l0IGEvdGVzdHMv Z2VtX3VzZXJwdHJfYmxpdHMuYyBiL3Rlc3RzL2dlbV91c2VycHRyX2JsaXRzLmMKPiBpbmRleCA3 ZTNiNmVmMzguLjMwYzZiYzQ4YyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9nZW1fdXNlcnB0cl9ibGl0 cy5jCj4gKysrIGIvdGVzdHMvZ2VtX3VzZXJwdHJfYmxpdHMuYwo+IEBAIC00MywxMyArNDMsMTcg QEAKPiAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gICNpbmNsdWRlIDxpbnR0eXBlcy5oPgo+ICAjaW5j bHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHNldGptcC5oPgo+ICAjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KPiAgI2luY2x1ZGUgPHN5cy90aW1lLmg+Cj4gICNpbmNsdWRlIDxzeXMvbW1hbi5oPgo+ ICsjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KPiAgI2luY2x1ZGUgPHNpZ25hbC5oPgo+ICAjaW5j bHVkZSA8cHRocmVhZC5oPgo+ICAjaW5jbHVkZSA8dGltZS5oPgo+ICAKPiArI2luY2x1ZGUgPGxp bnV4L21lbWZkLmg+Cj4gKwo+ICAjaW5jbHVkZSAiZHJtLmgiCj4gICNpbmNsdWRlICJpOTE1X2Ry bS5oIgo+ICAKPiBAQCAtMjM4LDYgKzI0Miw1NyBAQCBibGl0KGludCBmZCwgdWludDMyX3QgZHN0 LCB1aW50MzJfdCBzcmMsIHVpbnQzMl90ICphbGxfYm8sIGludCBuX2JvKQo+ICAJcmV0dXJuIHJl dDsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgc3RvcmVfZHdvcmQoaW50IGZkLCB1aW50MzJfdCB0 YXJnZXQsCj4gKwkJCXVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgdmFsdWUpCj4gK3sKPiArCWNv bnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBleGVjYnVmOwo+ICsJdWludDMyX3QgYmF0Y2hbMTZdOwo+ICsJaW50IGk7Cj4gKwo+ ICsJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwo+ICsJZXhlY2J1Zi5idWZm ZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwo+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQg PSBBUlJBWV9TSVpFKG9iaik7Cj4gKwlleGVjYnVmLmZsYWdzID0gMDsKPiArCWlmIChnZW4gPCA2 KQo+ICsJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiArCj4gKwltZW1zZXQo b2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4gKwlvYmpbMF0uaGFuZGxlID0gdGFyZ2V0Owo+ICsJb2Jq WzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsKPiArCW1lbXNldCgmcmVsb2Ms IDAsIHNpemVvZihyZWxvYykpOwo+ICsJcmVsb2MudGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5k bGU7Cj4gKwlyZWxvYy5wcmVzdW1lZF9vZmZzZXQgPSAwOwo+ICsJcmVsb2Mub2Zmc2V0ID0gc2l6 ZW9mKHVpbnQzMl90KTsKPiArCXJlbG9jLmRlbHRhID0gb2Zmc2V0Owo+ICsJcmVsb2MucmVhZF9k b21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCXJlbG9jLndyaXRlX2RvbWFpbiA9 IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwlvYmpbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcigmcmVsb2MpOwo+ICsJb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOwo+ICsKPiAr CWkgPSAwOwo+ICsJYmF0Y2hbaV0gPSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEg PDwgMjIgOiAwKTsKPiArCWlmIChnZW4gPj0gOCkgewo+ICsJCWJhdGNoWysraV0gPSBvZmZzZXQ7 Cj4gKwkJYmF0Y2hbKytpXSA9IDA7Cj4gKwl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7Cj4gKwkJYmF0 Y2hbKytpXSA9IDA7Cj4gKwkJYmF0Y2hbKytpXSA9IG9mZnNldDsKPiArCQlyZWxvYy5vZmZzZXQg Kz0gc2l6ZW9mKHVpbnQzMl90KTsKPiArCX0gZWxzZSB7Cj4gKwkJYmF0Y2hbaV0tLTsKPiArCQli YXRjaFsrK2ldID0gb2Zmc2V0Owo+ICsJfQo+ICsJYmF0Y2hbKytpXSA9IHZhbHVlOwo+ICsJYmF0 Y2hbKytpXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gKwlnZW1fd3JpdGUoZmQsIG9ialsxXS5o YW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKPiArCWdlbV9leGVjYnVmKGZkLCAmZXhl Y2J1Zik7Cj4gKwlnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgdWludDMyX3QKPiAgY3JlYXRlX3VzZXJwdHIoaW50IGZkLCB1aW50MzJfdCB2YWwsIHVpbnQz Ml90ICpwdHIpCj4gIHsKPiBAQCAtOTQxLDYgKzk5NiwyNzUgQEAgc3RhdGljIGludCB0ZXN0X2Rt YWJ1Zih2b2lkKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHRlc3RfcmVh ZG9ubHkoaW50IGk5MTUpCj4gK3sKPiArCXVuc2lnbmVkIGNoYXIgb3JpZ1tTSEFfRElHRVNUX0xF TkdUSF07Cj4gKwl1aW50NjRfdCBhcGVydHVyZV9zaXplOwo+ICsJdWludDMyX3Qgd2hhbmRsZSwg cmhhbmRsZTsKPiArCXNpemVfdCBzeiwgdG90YWw7Cj4gKwl2b2lkICpwYWdlcywgKnNwYWNlOwo+ ICsJaW50IG1lbWZkOwo+ICsKPiArCS8qCj4gKwkgKiBBIHNtYWxsIGJhdGNoIG9mIHBhZ2VzOyBz bWFsbCBlbm91Z2ggdG8gY2hlYXBseSBjaGVjayBmb3Igc3RyYXkKPiArCSAqIHdyaXRlcyBidXQg bGFyZ2UgZW5vdWdoIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55IFZNQSBwb2ludGluZwo+ ICsJICogYmFjayB0byB0aGlzIHNldCBmcm9tIHRoZSBsYXJnZSBhcmVuYS4gVGhlIGxpbWl0IG9u IHRvdGFsIG51bWJlcgo+ICsJICogb2YgVk1BIGZvciBhIHByb2Nlc3MgaXMgNjUsNTM2IChhdCBs ZWFzdCBvbiB0aGlzIGtlcm5lbCkuCj4gKwkgKi8KPiArCXN6ID0gMTYgPDwgMTI7Cj4gKwltZW1m ZCA9IG1lbWZkX2NyZWF0ZSgicGFnZXMiLCAwKTsKPiArCWlndF9yZXF1aXJlKG1lbWZkICE9IC0x KTsKPiArCWlndF9yZXF1aXJlKGZ0cnVuY2F0ZShtZW1mZCwgc3opID09IDApOwo+ICsKPiArCXBh Z2VzID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgbWVtZmQsIDApOwo+ ICsJaWd0X2Fzc2VydChwYWdlcyAhPSBNQVBfRkFJTEVEKTsKPiArCj4gKwlpZ3RfcmVxdWlyZShf X2dlbV91c2VycHRyKGk5MTUsIHBhZ2VzLCBzeiwgdHJ1ZSwgdXNlcnB0cl9mbGFncywgJnJoYW5k bGUpID09IDApOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIHJoYW5kbGUpOwo+ICsKPiArCWdlbV91c2Vy cHRyKGk5MTUsIHBhZ2VzLCBzeiwgZmFsc2UsIHVzZXJwdHJfZmxhZ3MsICZ3aGFuZGxlKTsKPiAr Cj4gKwl0b3RhbCA9IDIwNDh1bGwgPDwgMjA7Cj4gKwlhcGVydHVyZV9zaXplID0gZ2VtX2FwZXJ0 dXJlX3NpemUoaTkxNSkgLyAyOwo+ICsJaWYgKGFwZXJ0dXJlX3NpemUgPCB0b3RhbCkKPiArCQl0 b3RhbCA9IGFwZXJ0dXJlX3NpemU7Cj4gKwl0b3RhbCA9IHRvdGFsIC8gc3ogKiBzejsKPiArCWln dF9pbmZvKCJVc2luZyBhICUnenVCICglJ3p1IHBhZ2VzKSBhcmVuYSBvbnRvICV6dSBwYWdlc1xu IiwKPiArCQkgdG90YWwsIHRvdGFsID4+IDEyLCBzeiA+PiAxMik7Cj4gKwo+ICsJLyogQ3JlYXRl IGFuIGFyZW5hIGFsbCBwb2ludGluZyB0byB0aGUgc2FtZSBzZXQgb2YgcGFnZXMgKi8KPiArCXNw YWNlID0gbW1hcChOVUxMLCB0b3RhbCwgUFJPVF9SRUFELCBNQVBfQU5PTiB8IE1BUF9TSEFSRUQs IC0xLCAwKTsKPiArCWlndF9yZXF1aXJlKHNwYWNlICE9IE1BUF9GQUlMRUQpOwo+ICsJZm9yIChz aXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgdG90YWw7IG9mZnNldCArPSBzeikgewo+ICsJCWln dF9hc3NlcnQobW1hcChzcGFjZSArIG9mZnNldCwgc3osCj4gKwkJCQlQUk9UX1dSSVRFLCBNQVBf U0hBUkVEIHwgTUFQX0ZJWEVELAo+ICsJCQkJbWVtZmQsIDApICE9IE1BUF9GQUlMRUQpOwo+ICsJ CSoodWludDMyX3QgKikoc3BhY2UgKyBvZmZzZXQpID0gb2Zmc2V0Owo+ICsJfQo+ICsJaWd0X2Fz c2VydF9lcV91MzIoKih1aW50MzJfdCAqKXBhZ2VzLCAodWludDMyX3QpKHRvdGFsIC0gc3opKTsK PiArCWlndF9hc3NlcnQobWxvY2soc3BhY2UsIHRvdGFsKSA9PSAwKTsKPiArCWNsb3NlKG1lbWZk KTsKPiArCj4gKwkvKiBDaGVjayB3ZSBjYW4gY3JlYXRlIGEgbm9ybWFsIHVzZXJwdHIgYm8gd3Jh cHBpbmcgdGhlIHdyYXBwZXIgKi8KPiArCWdlbV91c2VycHRyKGk5MTUsIHNwYWNlLCB0b3RhbCwg ZmFsc2UsIHVzZXJwdHJfZmxhZ3MsICZyaGFuZGxlKTsKPiArCWdlbV9zZXRfZG9tYWluKGk5MTUs IHJoYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOwo+ICsJZm9yIChzaXplX3Qgb2Zmc2V0 ID0gMDsgb2Zmc2V0IDwgdG90YWw7IG9mZnNldCArPSBzeikKPiArCQlzdG9yZV9kd29yZChpOTE1 LCByaGFuZGxlLCBvZmZzZXQgKyA0LCBvZmZzZXQgLyBzeik7Cj4gKwlnZW1fc3luYyhpOTE1LCBy aGFuZGxlKTsKPiArCWlndF9hc3NlcnRfZXFfdTMyKCoodWludDMyX3QgKikocGFnZXMgKyAwKSwg KHVpbnQzMl90KSh0b3RhbCAtIHN6KSk7Cj4gKwlpZ3RfYXNzZXJ0X2VxX3UzMigqKHVpbnQzMl90 ICopKHBhZ2VzICsgNCksICh1aW50MzJfdCkodG90YWwgLyBzeiAtIDEpKTsKPiArCWdlbV9jbG9z ZShpOTE1LCByaGFuZGxlKTsKPiArCj4gKwkvKiBOb3cgZW5mb3JjZSByZWFkLW9ubHkgaGVuY2Vm b3J0aCAqLwo+ICsJaWd0X2Fzc2VydChtcHJvdGVjdChzcGFjZSwgdG90YWwsIFBST1RfUkVBRCkg PT0gMCk7Cj4gKwo+ICsJU0hBMShwYWdlcywgc3osIG9yaWcpOwo+ICsJaWd0X2ZvcmsoY2hpbGQs IDEpIHsKPiArCQljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQo aTkxNSkpOwo+ICsJCWNvbnN0IGludCBucmVsb2MgPSAxMDI0Owo+ICsJCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2M7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgb2JqWzJdOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg ZXhlYzsKPiArCQl1bnNpZ25lZCBjaGFyIHJlZltTSEFfRElHRVNUX0xFTkdUSF0sIHJlc3VsdFtT SEFfRElHRVNUX0xFTkdUSF07Cj4gKwkJdWludDMyX3QgKmJhdGNoOwo+ICsJCWludCBpOwo+ICsK PiArCQlyZWxvYyA9IGNhbGxvYyhzaXplb2YoKnJlbG9jKSwgbnJlbG9jKTsKPiArCQlnZW1fdXNl cnB0cihpOTE1LCBzcGFjZSwgdG90YWwsIHRydWUsIHVzZXJwdHJfZmxhZ3MsICZyaGFuZGxlKTsK PiArCj4gKwo+ICsJCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCQlvYmpbMF0uZmxh Z3MgPSBMT0NBTF9FWEVDX09CSkVDVF9TVVBQT1JUU180OEI7Cj4gKwkJb2JqWzFdLmhhbmRsZSA9 IGdlbV9jcmVhdGUoaTkxNSwgNDA5NioxNik7Cj4gKwkJb2JqWzFdLnJlbG9jYXRpb25fY291bnQg PSBucmVsb2M7Cj4gKwkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2Mp Owo+ICsKPiArCQliYXRjaCA9IGdlbV9tbWFwX193YyhpOTE1LCBvYmpbMV0uaGFuZGxlLCAwLCA0 MDk2KjE2LCBQUk9UX1dSSVRFKTsKPiArCj4gKwkJbWVtc2V0KCZleGVjLCAwLCBzaXplb2YoZXhl YykpOwo+ICsJCWV4ZWMuYnVmZmVyX2NvdW50ID0yOwo+ICsJCWV4ZWMuYnVmZmVyc19wdHIgPSB0 b191c2VyX3BvaW50ZXIob2JqKTsKPiArCj4gKwkJZm9yX2VhY2hfZW5naW5lKGk5MTUsIGV4ZWMu ZmxhZ3MpIHsKPiArCQkJLyogRmlyc3QgdHdlYWsgdGhlIGJhY2tpbmcgc3RvcmUgdGhyb3VnaCB0 aGUgd3JpdGUgKi8KPiArCQkJaSA9IDA7Cj4gKwkJCW9ialswXS5oYW5kbGUgPSB3aGFuZGxlOwo+ ICsJCQlmb3IgKGludCBuID0gMDsgbiA8IG5yZWxvYzsgbisrKSB7Cj4gKwkJCQl1aW50NjRfdCBv ZmZzZXQ7Cj4gKwo+ICsJCQkJcmVsb2Nbbl0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7 Cj4gKwkJCQlyZWxvY1tuXS5kZWx0YSA9IDQqKHJhbmQoKSAlIChzei80KSk7Cj4gKwkJCQlyZWxv Y1tuXS5vZmZzZXQgPSAoaSsxKSAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwkJCQlyZWxvY1tuXS5w cmVzdW1lZF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0Owo+ICsJCQkJcmVsb2Nbbl0ucmVhZF9kb21h aW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCQkJCXJlbG9jW25dLndyaXRlX2RvbWFp biA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwo+ICsJCQkJb2Zmc2V0ID0gcmVsb2Nbbl0u cHJlc3VtZWRfb2Zmc2V0ICsgcmVsb2Nbbl0uZGVsdGE7Cj4gKwo+ICsJCQkJYmF0Y2hbaV0gPSBN SV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKPiArCQkJCWlmIChn ZW4gPj0gOCkgewo+ICsJCQkJCWJhdGNoWysraV0gPSBvZmZzZXQ7Cj4gKwkJCQkJYmF0Y2hbKytp XSA9IG9mZnNldCA+PiAzMjsKPiArCQkJCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKPiArCQkJCQli YXRjaFsrK2ldID0gMDsKPiArCQkJCQliYXRjaFsrK2ldID0gb2Zmc2V0Owo+ICsJCQkJCXJlbG9j W25dLm9mZnNldCArPSBzaXplb2YodWludDMyX3QpOwo+ICsJCQkJfSBlbHNlIHsKPiArCQkJCQli YXRjaFtpXS0tOwo+ICsJCQkJCWJhdGNoWysraV0gPSBvZmZzZXQ7Cj4gKwkJCQl9Cj4gKwkJCQli YXRjaFsrK2ldID0gcmFuZCgpOwo+ICsJCQkJaSsrOwo+ICsJCQl9Cj4gKwkJCWJhdGNoW2ldID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCj4gKwkJCWdlbV9leGVjYnVmKGk5MTUsICZleGVjKTsK PiArCQkJZ2VtX3N5bmMoaTkxNSwgb2JqWzBdLmhhbmRsZSk7Cj4gKwkJCVNIQTEocGFnZXMsIHN6 LCByZWYpOwo+ICsKPiArCQkJaWd0X2Fzc2VydChtZW1jbXAocmVmLCBvcmlnLCBzaXplb2YocmVm KSkpOwo+ICsJCQltZW1jcHkob3JpZywgcmVmLCBzaXplb2Yob3JpZykpOwoKVGhpcyBtZW1jcHkg c2VlbXMgb2Jzb2xldGUuCi1NaWthCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldgo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH i-g-t] igt/gem_userptr: Check read-only mappings Date: Thu, 28 Jun 2018 17:25:49 +0300 Message-ID: <87vaa3t2c2.fsf@gaia.fi.intel.com> References: <20180627194434.28541-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180627194434.28541-1-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 , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gU2V0dXAg YSB1c2VycHRyIG9iamVjdCB0aGF0IG9ubHkgaGFzIGEgcmVhZC1vbmx5IG1hcHBpbmcgYmFjayB0 byBhIGZpbGUKPiBzdG9yZSAobWVtZmQpLiBUaGVuIGF0dGVtcHQgdG8gd3JpdGUgaW50byB0aGF0 IG1hcHBpbmcgdXNpbmcgdGhlIEdQVSBhbmQKPiBhc3NlcnQgdGhhdCB0aG9zZSB3cml0ZXMgZG8g bm90IGxhbmQgKHdoaWxlIGFsc28gd3JpdGluZyB2aWEgYSB3cml0YWJsZQo+IHVzZXJwdHIgbWFw cGluZyBpbnRvIHRoZSBzYW1lIG1lbWZkIHRvIHZlcmlmeSB0aGF0IHRoZSBHUFUgaXMgd29ya2lu ZyEpCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBD YzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IC0t LQo+ICBjb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgICAxICsKPiAgbGliL2lvY3RsX3dyYXBw ZXJzLmMgICAgICB8ICAgNCArLQo+ICBsaWIvaW9jdGxfd3JhcHBlcnMuaCAgICAgIHwgICA0ICst Cj4gIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDEgKwo+ICBtZXNvbi5idWlsZCAgICAg ICAgICAgICAgIHwgICAxICsKPiAgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICB8ICAgNCArLQo+ ICB0ZXN0cy9nZW1fdXNlcnB0cl9ibGl0cy5jIHwgMzM3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCj4gIDcgZmlsZXMgY2hhbmdlZCwgMzQyIGluc2VydGlvbnMoKyksIDEw IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5h Ywo+IGluZGV4IDFlZTRlOTBlOS4uMTk1OTYzZDRmIDEwMDY0NAo+IC0tLSBhL2NvbmZpZ3VyZS5h Ywo+ICsrKyBiL2NvbmZpZ3VyZS5hYwo+IEBAIC0xMjUsNiArMTI1LDcgQEAgUEtHX0NIRUNLX01P RFVMRVMoUENJQUNDRVNTLCBbcGNpYWNjZXNzID49IDAuMTBdKQo+ICBQS0dfQ0hFQ0tfTU9EVUxF UyhLTU9ELCBbbGlia21vZF0pCj4gIFBLR19DSEVDS19NT0RVTEVTKFBST0NQUywgW2xpYnByb2Nw c10pCj4gIFBLR19DSEVDS19NT0RVTEVTKExJQlVOV0lORCwgW2xpYnVud2luZF0pCj4gK1BLR19D SEVDS19NT0RVTEVTKFNTTCwgW29wZW5zc2xdKQo+ICBQS0dfQ0hFQ0tfTU9EVUxFUyhWQUxHUklO RCwgW3ZhbGdyaW5kXSwgW2hhdmVfdmFsZ3JpbmQ9eWVzXSwgW2hhdmVfdmFsZ3JpbmQ9bm9dKQo+ ICAKPiAgaWYgdGVzdCB4JGhhdmVfdmFsZ3JpbmQgPSB4eWVzOyB0aGVuCj4gZGlmZiAtLWdpdCBh L2xpYi9pb2N0bF93cmFwcGVycy5jIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKPiBpbmRleCA3OWRi NDRhOGMuLmQ1ZDJhNGU0YyAxMDA2NDQKPiAtLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuYwo+ICsr KyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCj4gQEAgLTg2OSw3ICs4NjksNyBAQCBpbnQgZ2VtX21h ZHZpc2UoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIGludCBzdGF0ZSkKPiAgCXJldHVybiBtYWR2 LnJldGFpbmVkOwo+ICB9Cj4gIAo+IC1pbnQgX19nZW1fdXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0 ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFu ZGxlKQo+ICtpbnQgX19nZW1fdXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0ciwgdWludDY0X3Qgc2l6 ZSwgaW50IHJlYWRfb25seSwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpoYW5kbGUpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB1c2VycHRyOwo+ICAKPiBAQCAtODk4LDcg Kzg5OCw3IEBAIGludCBfX2dlbV91c2VycHRyKGludCBmZCwgdm9pZCAqcHRyLCBpbnQgc2l6ZSwg aW50IHJlYWRfb25seSwgdWludDMyX3QgZmxhZ3MsIHVpCj4gICAqCj4gICAqIFJldHVybnMgdXNl cnB0ciBoYW5kbGUgZm9yIHRoZSBHRU0gb2JqZWN0Lgo+ICAgKi8KPiAtdm9pZCBnZW1fdXNlcnB0 cihpbnQgZmQsIHZvaWQgKnB0ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZs YWdzLCB1aW50MzJfdCAqaGFuZGxlKQo+ICt2b2lkIGdlbV91c2VycHRyKGludCBmZCwgdm9pZCAq cHRyLCB1aW50NjRfdCBzaXplLCBpbnQgcmVhZF9vbmx5LCB1aW50MzJfdCBmbGFncywgdWludDMy X3QgKmhhbmRsZSkKPiAgewo+ICAJaWd0X2Fzc2VydF9lcShfX2dlbV91c2VycHRyKGZkLCBwdHIs IHNpemUsIHJlYWRfb25seSwgZmxhZ3MsIGhhbmRsZSksIDApOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKPiBpbmRleCBiOTY2 ZjcyYzkuLjhlMmNkMzgwYiAxMDA2NDQKPiAtLS0gYS9saWIvaW9jdGxfd3JhcHBlcnMuaAo+ICsr KyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCj4gQEAgLTEzMyw4ICsxMzMsOCBAQCBzdHJ1Y3QgbG9j YWxfaTkxNV9nZW1fdXNlcnB0ciB7Cj4gICNkZWZpbmUgTE9DQUxfSTkxNV9VU0VSUFRSX1VOU1lO Q0hST05JWkVEICgxPDwzMSkKPiAgCXVpbnQzMl90IGhhbmRsZTsKPiAgfTsKPiAtdm9pZCBnZW1f dXNlcnB0cihpbnQgZmQsIHZvaWQgKnB0ciwgaW50IHNpemUsIGludCByZWFkX29ubHksIHVpbnQz Ml90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKPiAtaW50IF9fZ2VtX3VzZXJwdHIoaW50IGZk LCB2b2lkICpwdHIsIGludCBzaXplLCBpbnQgcmVhZF9vbmx5LCB1aW50MzJfdCBmbGFncywgdWlu dDMyX3QgKmhhbmRsZSk7Cj4gK3ZvaWQgZ2VtX3VzZXJwdHIoaW50IGZkLCB2b2lkICpwdHIsIHVp bnQ2NF90IHNpemUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFu ZGxlKTsKPiAraW50IF9fZ2VtX3VzZXJwdHIoaW50IGZkLCB2b2lkICpwdHIsIHVpbnQ2NF90IHNp emUsIGludCByZWFkX29ubHksIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKPiAg Cj4gIHZvaWQgZ2VtX3N3X2ZpbmlzaChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7Cj4gIAo+IGRp ZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCAxYTM1 NTQxNGUuLjkzOTE2N2Y5MSAxMDA2NDQKPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiArKysgYi9s aWIvbWVzb24uYnVpbGQKPiBAQCAtNjIsNiArNjIsNyBAQCBsaWJfZGVwcyA9IFsKPiAgCXB0aHJl YWRzLAo+ICAJbWF0aCwKPiAgCXJlYWx0aW1lLAo+ICsJc3NsLAo+ICBdCj4gIAo+ICBpZiBsaWJk cm1faW50ZWwuZm91bmQoKQo+IGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxk Cj4gaW5kZXggNGQxNWQ2MjM4Li42MzhjMDEwNjYgMTAwNjQ0Cj4gLS0tIGEvbWVzb24uYnVpbGQK PiArKysgYi9tZXNvbi5idWlsZAo+IEBAIC05OCw2ICs5OCw3IEBAIHBjaWFjY2VzcyA9IGRlcGVu ZGVuY3koJ3BjaWFjY2VzcycsIHZlcnNpb24gOiAnPj0wLjEwJykKPiAgbGlia21vZCA9IGRlcGVu ZGVuY3koJ2xpYmttb2QnKQo+ICBsaWJwcm9jcHMgPSBkZXBlbmRlbmN5KCdsaWJwcm9jcHMnLCBy ZXF1aXJlZCA6IHRydWUpCj4gIGxpYnVud2luZCA9IGRlcGVuZGVuY3koJ2xpYnVud2luZCcsIHJl cXVpcmVkIDogdHJ1ZSkKPiArc3NsID0gZGVwZW5kZW5jeSgnb3BlbnNzbCcsIHJlcXVpcmVkIDog dHJ1ZSkKPiAgCj4gIHZhbGdyaW5kID0gbnVsbF9kZXAKPiAgdmFsZ3JpbmRpbmZvID0gJ05vJwo+ IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCj4gaW5k ZXggZjQxYWQ1MDk2Li5iYTMwN2IyMjAgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0K PiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQo+IEBAIC0xMjYsOCArMTI2LDggQEAgZ2VtX3RpbGVk X3N3YXBwaW5nX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCj4gIGdlbV90 aWxlZF9zd2FwcGluZ19MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+ICBwcmltZV9zZWxmX2lt cG9ydF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQo+ICBwcmltZV9zZWxm X2ltcG9ydF9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+IC1nZW1fdXNlcnB0cl9ibGl0c19D RkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQo+IC1nZW1fdXNlcnB0cl9ibGl0 c19MREFERCA9ICQoTERBREQpIC1scHRocmVhZAo+ICtnZW1fdXNlcnB0cl9ibGl0c19DRkxBR1Mg PSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKSAkKFNTTF9DRkxBR1MpCj4gK2dlbV91c2Vy cHRyX2JsaXRzX0xEQUREID0gJChMREFERCkgJChTU0xfTElCUykgLWxwdGhyZWFkCj4gIHBlcmZf cG11X0xEQUREID0gJChMREFERCkgJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpZ3RfcGVyZi5sYQo+ ICAKPiAgZ2VtX2Vpb19MREFERCA9ICQoTERBREQpIC1scnQKPiBkaWZmIC0tZ2l0IGEvdGVzdHMv Z2VtX3VzZXJwdHJfYmxpdHMuYyBiL3Rlc3RzL2dlbV91c2VycHRyX2JsaXRzLmMKPiBpbmRleCA3 ZTNiNmVmMzguLjMwYzZiYzQ4YyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9nZW1fdXNlcnB0cl9ibGl0 cy5jCj4gKysrIGIvdGVzdHMvZ2VtX3VzZXJwdHJfYmxpdHMuYwo+IEBAIC00MywxMyArNDMsMTcg QEAKPiAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gICNpbmNsdWRlIDxpbnR0eXBlcy5oPgo+ICAjaW5j bHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHNldGptcC5oPgo+ICAjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KPiAgI2luY2x1ZGUgPHN5cy90aW1lLmg+Cj4gICNpbmNsdWRlIDxzeXMvbW1hbi5oPgo+ ICsjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KPiAgI2luY2x1ZGUgPHNpZ25hbC5oPgo+ICAjaW5j bHVkZSA8cHRocmVhZC5oPgo+ICAjaW5jbHVkZSA8dGltZS5oPgo+ICAKPiArI2luY2x1ZGUgPGxp bnV4L21lbWZkLmg+Cj4gKwo+ICAjaW5jbHVkZSAiZHJtLmgiCj4gICNpbmNsdWRlICJpOTE1X2Ry bS5oIgo+ICAKPiBAQCAtMjM4LDYgKzI0Miw1NyBAQCBibGl0KGludCBmZCwgdWludDMyX3QgZHN0 LCB1aW50MzJfdCBzcmMsIHVpbnQzMl90ICphbGxfYm8sIGludCBuX2JvKQo+ICAJcmV0dXJuIHJl dDsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgc3RvcmVfZHdvcmQoaW50IGZkLCB1aW50MzJfdCB0 YXJnZXQsCj4gKwkJCXVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgdmFsdWUpCj4gK3sKPiArCWNv bnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBleGVjYnVmOwo+ICsJdWludDMyX3QgYmF0Y2hbMTZdOwo+ICsJaW50IGk7Cj4gKwo+ ICsJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwo+ICsJZXhlY2J1Zi5idWZm ZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwo+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQg PSBBUlJBWV9TSVpFKG9iaik7Cj4gKwlleGVjYnVmLmZsYWdzID0gMDsKPiArCWlmIChnZW4gPCA2 KQo+ICsJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiArCj4gKwltZW1zZXQo b2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4gKwlvYmpbMF0uaGFuZGxlID0gdGFyZ2V0Owo+ICsJb2Jq WzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsKPiArCW1lbXNldCgmcmVsb2Ms IDAsIHNpemVvZihyZWxvYykpOwo+ICsJcmVsb2MudGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5k bGU7Cj4gKwlyZWxvYy5wcmVzdW1lZF9vZmZzZXQgPSAwOwo+ICsJcmVsb2Mub2Zmc2V0ID0gc2l6 ZW9mKHVpbnQzMl90KTsKPiArCXJlbG9jLmRlbHRhID0gb2Zmc2V0Owo+ICsJcmVsb2MucmVhZF9k b21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCXJlbG9jLndyaXRlX2RvbWFpbiA9 IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwlvYmpbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcigmcmVsb2MpOwo+ICsJb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOwo+ICsKPiAr CWkgPSAwOwo+ICsJYmF0Y2hbaV0gPSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEg PDwgMjIgOiAwKTsKPiArCWlmIChnZW4gPj0gOCkgewo+ICsJCWJhdGNoWysraV0gPSBvZmZzZXQ7 Cj4gKwkJYmF0Y2hbKytpXSA9IDA7Cj4gKwl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7Cj4gKwkJYmF0 Y2hbKytpXSA9IDA7Cj4gKwkJYmF0Y2hbKytpXSA9IG9mZnNldDsKPiArCQlyZWxvYy5vZmZzZXQg Kz0gc2l6ZW9mKHVpbnQzMl90KTsKPiArCX0gZWxzZSB7Cj4gKwkJYmF0Y2hbaV0tLTsKPiArCQli YXRjaFsrK2ldID0gb2Zmc2V0Owo+ICsJfQo+ICsJYmF0Y2hbKytpXSA9IHZhbHVlOwo+ICsJYmF0 Y2hbKytpXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gKwlnZW1fd3JpdGUoZmQsIG9ialsxXS5o YW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKPiArCWdlbV9leGVjYnVmKGZkLCAmZXhl Y2J1Zik7Cj4gKwlnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgdWludDMyX3QKPiAgY3JlYXRlX3VzZXJwdHIoaW50IGZkLCB1aW50MzJfdCB2YWwsIHVpbnQz Ml90ICpwdHIpCj4gIHsKPiBAQCAtOTQxLDYgKzk5NiwyNzUgQEAgc3RhdGljIGludCB0ZXN0X2Rt YWJ1Zih2b2lkKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHRlc3RfcmVh ZG9ubHkoaW50IGk5MTUpCj4gK3sKPiArCXVuc2lnbmVkIGNoYXIgb3JpZ1tTSEFfRElHRVNUX0xF TkdUSF07Cj4gKwl1aW50NjRfdCBhcGVydHVyZV9zaXplOwo+ICsJdWludDMyX3Qgd2hhbmRsZSwg cmhhbmRsZTsKPiArCXNpemVfdCBzeiwgdG90YWw7Cj4gKwl2b2lkICpwYWdlcywgKnNwYWNlOwo+ ICsJaW50IG1lbWZkOwo+ICsKPiArCS8qCj4gKwkgKiBBIHNtYWxsIGJhdGNoIG9mIHBhZ2VzOyBz bWFsbCBlbm91Z2ggdG8gY2hlYXBseSBjaGVjayBmb3Igc3RyYXkKPiArCSAqIHdyaXRlcyBidXQg bGFyZ2UgZW5vdWdoIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55IFZNQSBwb2ludGluZwo+ ICsJICogYmFjayB0byB0aGlzIHNldCBmcm9tIHRoZSBsYXJnZSBhcmVuYS4gVGhlIGxpbWl0IG9u IHRvdGFsIG51bWJlcgo+ICsJICogb2YgVk1BIGZvciBhIHByb2Nlc3MgaXMgNjUsNTM2IChhdCBs ZWFzdCBvbiB0aGlzIGtlcm5lbCkuCj4gKwkgKi8KPiArCXN6ID0gMTYgPDwgMTI7Cj4gKwltZW1m ZCA9IG1lbWZkX2NyZWF0ZSgicGFnZXMiLCAwKTsKPiArCWlndF9yZXF1aXJlKG1lbWZkICE9IC0x KTsKPiArCWlndF9yZXF1aXJlKGZ0cnVuY2F0ZShtZW1mZCwgc3opID09IDApOwo+ICsKPiArCXBh Z2VzID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgbWVtZmQsIDApOwo+ ICsJaWd0X2Fzc2VydChwYWdlcyAhPSBNQVBfRkFJTEVEKTsKPiArCj4gKwlpZ3RfcmVxdWlyZShf X2dlbV91c2VycHRyKGk5MTUsIHBhZ2VzLCBzeiwgdHJ1ZSwgdXNlcnB0cl9mbGFncywgJnJoYW5k bGUpID09IDApOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIHJoYW5kbGUpOwo+ICsKPiArCWdlbV91c2Vy cHRyKGk5MTUsIHBhZ2VzLCBzeiwgZmFsc2UsIHVzZXJwdHJfZmxhZ3MsICZ3aGFuZGxlKTsKPiAr Cj4gKwl0b3RhbCA9IDIwNDh1bGwgPDwgMjA7Cj4gKwlhcGVydHVyZV9zaXplID0gZ2VtX2FwZXJ0 dXJlX3NpemUoaTkxNSkgLyAyOwo+ICsJaWYgKGFwZXJ0dXJlX3NpemUgPCB0b3RhbCkKPiArCQl0 b3RhbCA9IGFwZXJ0dXJlX3NpemU7Cj4gKwl0b3RhbCA9IHRvdGFsIC8gc3ogKiBzejsKPiArCWln dF9pbmZvKCJVc2luZyBhICUnenVCICglJ3p1IHBhZ2VzKSBhcmVuYSBvbnRvICV6dSBwYWdlc1xu IiwKPiArCQkgdG90YWwsIHRvdGFsID4+IDEyLCBzeiA+PiAxMik7Cj4gKwo+ICsJLyogQ3JlYXRl IGFuIGFyZW5hIGFsbCBwb2ludGluZyB0byB0aGUgc2FtZSBzZXQgb2YgcGFnZXMgKi8KPiArCXNw YWNlID0gbW1hcChOVUxMLCB0b3RhbCwgUFJPVF9SRUFELCBNQVBfQU5PTiB8IE1BUF9TSEFSRUQs IC0xLCAwKTsKPiArCWlndF9yZXF1aXJlKHNwYWNlICE9IE1BUF9GQUlMRUQpOwo+ICsJZm9yIChz aXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgdG90YWw7IG9mZnNldCArPSBzeikgewo+ICsJCWln dF9hc3NlcnQobW1hcChzcGFjZSArIG9mZnNldCwgc3osCj4gKwkJCQlQUk9UX1dSSVRFLCBNQVBf U0hBUkVEIHwgTUFQX0ZJWEVELAo+ICsJCQkJbWVtZmQsIDApICE9IE1BUF9GQUlMRUQpOwo+ICsJ CSoodWludDMyX3QgKikoc3BhY2UgKyBvZmZzZXQpID0gb2Zmc2V0Owo+ICsJfQo+ICsJaWd0X2Fz c2VydF9lcV91MzIoKih1aW50MzJfdCAqKXBhZ2VzLCAodWludDMyX3QpKHRvdGFsIC0gc3opKTsK PiArCWlndF9hc3NlcnQobWxvY2soc3BhY2UsIHRvdGFsKSA9PSAwKTsKPiArCWNsb3NlKG1lbWZk KTsKPiArCj4gKwkvKiBDaGVjayB3ZSBjYW4gY3JlYXRlIGEgbm9ybWFsIHVzZXJwdHIgYm8gd3Jh cHBpbmcgdGhlIHdyYXBwZXIgKi8KPiArCWdlbV91c2VycHRyKGk5MTUsIHNwYWNlLCB0b3RhbCwg ZmFsc2UsIHVzZXJwdHJfZmxhZ3MsICZyaGFuZGxlKTsKPiArCWdlbV9zZXRfZG9tYWluKGk5MTUs IHJoYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOwo+ICsJZm9yIChzaXplX3Qgb2Zmc2V0 ID0gMDsgb2Zmc2V0IDwgdG90YWw7IG9mZnNldCArPSBzeikKPiArCQlzdG9yZV9kd29yZChpOTE1 LCByaGFuZGxlLCBvZmZzZXQgKyA0LCBvZmZzZXQgLyBzeik7Cj4gKwlnZW1fc3luYyhpOTE1LCBy aGFuZGxlKTsKPiArCWlndF9hc3NlcnRfZXFfdTMyKCoodWludDMyX3QgKikocGFnZXMgKyAwKSwg KHVpbnQzMl90KSh0b3RhbCAtIHN6KSk7Cj4gKwlpZ3RfYXNzZXJ0X2VxX3UzMigqKHVpbnQzMl90 ICopKHBhZ2VzICsgNCksICh1aW50MzJfdCkodG90YWwgLyBzeiAtIDEpKTsKPiArCWdlbV9jbG9z ZShpOTE1LCByaGFuZGxlKTsKPiArCj4gKwkvKiBOb3cgZW5mb3JjZSByZWFkLW9ubHkgaGVuY2Vm b3J0aCAqLwo+ICsJaWd0X2Fzc2VydChtcHJvdGVjdChzcGFjZSwgdG90YWwsIFBST1RfUkVBRCkg PT0gMCk7Cj4gKwo+ICsJU0hBMShwYWdlcywgc3osIG9yaWcpOwo+ICsJaWd0X2ZvcmsoY2hpbGQs IDEpIHsKPiArCQljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQo aTkxNSkpOwo+ICsJCWNvbnN0IGludCBucmVsb2MgPSAxMDI0Owo+ICsJCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2M7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgb2JqWzJdOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg ZXhlYzsKPiArCQl1bnNpZ25lZCBjaGFyIHJlZltTSEFfRElHRVNUX0xFTkdUSF0sIHJlc3VsdFtT SEFfRElHRVNUX0xFTkdUSF07Cj4gKwkJdWludDMyX3QgKmJhdGNoOwo+ICsJCWludCBpOwo+ICsK PiArCQlyZWxvYyA9IGNhbGxvYyhzaXplb2YoKnJlbG9jKSwgbnJlbG9jKTsKPiArCQlnZW1fdXNl cnB0cihpOTE1LCBzcGFjZSwgdG90YWwsIHRydWUsIHVzZXJwdHJfZmxhZ3MsICZyaGFuZGxlKTsK PiArCj4gKwo+ICsJCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCQlvYmpbMF0uZmxh Z3MgPSBMT0NBTF9FWEVDX09CSkVDVF9TVVBQT1JUU180OEI7Cj4gKwkJb2JqWzFdLmhhbmRsZSA9 IGdlbV9jcmVhdGUoaTkxNSwgNDA5NioxNik7Cj4gKwkJb2JqWzFdLnJlbG9jYXRpb25fY291bnQg PSBucmVsb2M7Cj4gKwkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2Mp Owo+ICsKPiArCQliYXRjaCA9IGdlbV9tbWFwX193YyhpOTE1LCBvYmpbMV0uaGFuZGxlLCAwLCA0 MDk2KjE2LCBQUk9UX1dSSVRFKTsKPiArCj4gKwkJbWVtc2V0KCZleGVjLCAwLCBzaXplb2YoZXhl YykpOwo+ICsJCWV4ZWMuYnVmZmVyX2NvdW50ID0yOwo+ICsJCWV4ZWMuYnVmZmVyc19wdHIgPSB0 b191c2VyX3BvaW50ZXIob2JqKTsKPiArCj4gKwkJZm9yX2VhY2hfZW5naW5lKGk5MTUsIGV4ZWMu ZmxhZ3MpIHsKPiArCQkJLyogRmlyc3QgdHdlYWsgdGhlIGJhY2tpbmcgc3RvcmUgdGhyb3VnaCB0 aGUgd3JpdGUgKi8KPiArCQkJaSA9IDA7Cj4gKwkJCW9ialswXS5oYW5kbGUgPSB3aGFuZGxlOwo+ ICsJCQlmb3IgKGludCBuID0gMDsgbiA8IG5yZWxvYzsgbisrKSB7Cj4gKwkJCQl1aW50NjRfdCBv ZmZzZXQ7Cj4gKwo+ICsJCQkJcmVsb2Nbbl0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7 Cj4gKwkJCQlyZWxvY1tuXS5kZWx0YSA9IDQqKHJhbmQoKSAlIChzei80KSk7Cj4gKwkJCQlyZWxv Y1tuXS5vZmZzZXQgPSAoaSsxKSAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwkJCQlyZWxvY1tuXS5w cmVzdW1lZF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0Owo+ICsJCQkJcmVsb2Nbbl0ucmVhZF9kb21h aW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiArCQkJCXJlbG9jW25dLndyaXRlX2RvbWFp biA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4gKwo+ICsJCQkJb2Zmc2V0ID0gcmVsb2Nbbl0u cHJlc3VtZWRfb2Zmc2V0ICsgcmVsb2Nbbl0uZGVsdGE7Cj4gKwo+ICsJCQkJYmF0Y2hbaV0gPSBN SV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKPiArCQkJCWlmIChn ZW4gPj0gOCkgewo+ICsJCQkJCWJhdGNoWysraV0gPSBvZmZzZXQ7Cj4gKwkJCQkJYmF0Y2hbKytp XSA9IG9mZnNldCA+PiAzMjsKPiArCQkJCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKPiArCQkJCQli YXRjaFsrK2ldID0gMDsKPiArCQkJCQliYXRjaFsrK2ldID0gb2Zmc2V0Owo+ICsJCQkJCXJlbG9j W25dLm9mZnNldCArPSBzaXplb2YodWludDMyX3QpOwo+ICsJCQkJfSBlbHNlIHsKPiArCQkJCQli YXRjaFtpXS0tOwo+ICsJCQkJCWJhdGNoWysraV0gPSBvZmZzZXQ7Cj4gKwkJCQl9Cj4gKwkJCQli YXRjaFsrK2ldID0gcmFuZCgpOwo+ICsJCQkJaSsrOwo+ICsJCQl9Cj4gKwkJCWJhdGNoW2ldID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCj4gKwkJCWdlbV9leGVjYnVmKGk5MTUsICZleGVjKTsK PiArCQkJZ2VtX3N5bmMoaTkxNSwgb2JqWzBdLmhhbmRsZSk7Cj4gKwkJCVNIQTEocGFnZXMsIHN6 LCByZWYpOwo+ICsKPiArCQkJaWd0X2Fzc2VydChtZW1jbXAocmVmLCBvcmlnLCBzaXplb2YocmVm KSkpOwo+ICsJCQltZW1jcHkob3JpZywgcmVmLCBzaXplb2Yob3JpZykpOwoKVGhpcyBtZW1jcHkg c2VlbXMgb2Jzb2xldGUuCi1NaWthCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=