From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kumar Valsan, Prathap" Subject: Re: [PATCH 02/13] drm/i915/selftests: Add coverage of mocs registers Date: Fri, 18 Oct 2019 19:24:13 -0400 Message-ID: <20191018232412.GG3257@intel.com> References: <20191018221450.26247-1-chris@chris-wilson.co.uk> <20191018221450.26247-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6C856E048 for ; Fri, 18 Oct 2019 23:07:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191018221450.26247-2-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMTgsIDIwMTkgYXQgMTE6MTQ6MzlQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFByb2JlIHRoZSBtb2NzIHJlZ2lzdGVycyBmb3IgbmV3IGNvbnRleHRzIGFuZCBhY3Jv c3MgR1BVIHJlc2V0cy4gU2ltaWxhcgo+IHRvIGludGVsX3dvcmthcm91bmRzLCB3ZSBoYXZlIHRh YmxlcyBvZiB3aGF0IHJlZ2lzdGVyIHZhbHVlcyB3ZSBleHBlY3QKPiB0byBzZWUsIHNvIHZlcmlm eSB0aGF0IHVzZXIgY29udGV4dHMgYXJlIGFmZmVjdGVkIGJ5IHRoZW0uIEluIHRoZQo+IGZ1dHVy ZSwgd2Ugc2hvdWxkIGFkZCB0ZXN0cyBzaW1pbGFyIHRvIGludGVsX3NzZXUgdG8gY292ZXIgZHlu YW1pYwo+IHJlY29uZmlndXJhdGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFByYXRoYXAgS3VtYXIgVmFsc2FuIDxw cmF0aGFwLmt1bWFyLnZhbHNhbkBpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eu a3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAgIDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9tb2NzLmMgICAgICAgfCA0MzEgKysrKysrKysrKysrKysrKysrCj4gIC4uLi9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICAgMSArCj4gIDMgZmls ZXMgY2hhbmdlZCwgNDM2IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9tb2NzLmMKPiBpbmRleCA1YmFjMzk2NjkwNmIuLmY1YTIzOTY0MDU1MyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKPiBAQCAtNDkwLDMgKzQ5MCw3IEBAIHZv aWQgaW50ZWxfbW9jc19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAlpZiAoSEFTX0dMT0JB TF9NT0NTX1JFR0lTVEVSUyhndC0+aTkxNSkpCj4gIAkJaW50ZWxfbW9jc19pbml0X2dsb2JhbChn dCk7Cj4gIH0KPiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkK PiArI2luY2x1ZGUgInNlbGZ0ZXN0X21vY3MuYyIKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMDAwMDAwLi45NGMxYzYzODYyMWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jCj4gQEAgLTAsMCArMSw0MzEgQEAKPiArLyoK PiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQg wqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJndC9pbnRl bF9lbmdpbmVfcG0uaCIKPiArI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiArCj4gKyNpbmNs dWRlICJnZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5oIgo+ICsjaW5jbHVkZSAic2VsZnRlc3Rz L2lndF9yZXNldC5oIgo+ICsjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9zcGlubmVyLmgiCj4gKwo+ ICtzdHJ1Y3QgbGl2ZV9tb2NzIHsKPiArCXN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlIHRhYmxl Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCXN0cnVjdCBpOTE1X3ZtYSAq c2NyYXRjaDsKPiArCXZvaWQgKnZhZGRyOwo+ICt9Owo+ICsKPiArc3RhdGljIGludCByZXF1ZXN0 X2FkZF9zeW5jKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgZXJyKQo+ICt7Cj4gKwlpOTE1 X3JlcXVlc3RfZ2V0KHJxKTsKPiArCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJaWYgKGk5MTVf cmVxdWVzdF93YWl0KHJxLCAwLCBIWiAvIDUpIDwgMCkKPiArCQllcnIgPSAtRVRJTUU7Cj4gKwlp OTE1X3JlcXVlc3RfcHV0KHJxKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHJlcXVlc3RfYWRkX3NwaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBp Z3Rfc3Bpbm5lciAqc3BpbikKPiArewo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaTkxNV9yZXF1 ZXN0X2dldChycSk7Cj4gKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiArCWlmIChzcGluICYmICFp Z3Rfd2FpdF9mb3Jfc3Bpbm5lcihzcGluLCBycSkpCj4gKwkJZXJyID0gLUVUSU1FOwo+ICsJaTkx NV9yZXF1ZXN0X3B1dChycSk7Cj4gKwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBpOTE1X3ZtYSAqY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVsX2d0ICpndCkKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+ICsJaW50IGVycjsKPiArCj4gKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X2ludGVybmFsKGd0LT5pOTE1LCBQQUdFX1NJWkUpOwo+ICsJaWYgKElTX0VSUihvYmopKQo+ICsJ CXJldHVybiBFUlJfQ0FTVChvYmopOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVf Y29oZXJlbmN5KG9iaiwgSTkxNV9DQUNISU5HX0NBQ0hFRCk7Cj4gKwo+ICsJdm1hID0gaTkxNV92 bWFfaW5zdGFuY2Uob2JqLCAmZ3QtPmdndHQtPnZtLCBOVUxMKTsKPiArCWlmIChJU19FUlIodm1h KSkgewo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCQlyZXR1cm4gdm1hOwo+ICsJ fQo+ICsKPiArCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwpOwo+ICsJ aWYgKGVycikgewo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCQlyZXR1cm4gRVJS X1BUUihlcnIpOwo+ICsJfQo+ICsKPiArCXJldHVybiB2bWE7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgbGl2ZV9tb2NzX2luaXQoc3RydWN0IGxpdmVfbW9jcyAqYXJnLCBzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmICghZ2V0X21vY3Nfc2V0dGluZ3MoZ3Qt Pmk5MTUsICZhcmctPnRhYmxlKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlhcmctPmN0 eCA9IGtlcm5lbF9jb250ZXh0KGd0LT5pOTE1KTsKPiArCWlmICghYXJnLT5jdHgpCj4gKwkJcmV0 dXJuIC1FTk9NRU07Cj4gKwo+ICsJYXJnLT5zY3JhdGNoID0gY3JlYXRlX3NjcmF0Y2goZ3QpOwo+ ICsJaWYgKElTX0VSUihhcmctPnNjcmF0Y2gpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihhcmctPnNj cmF0Y2gpOwo+ICsJCWdvdG8gZXJyX2N0eDsKPiArCX0KPiArCj4gKwlhcmctPnZhZGRyID0gaTkx NV9nZW1fb2JqZWN0X3Bpbl9tYXAoYXJnLT5zY3JhdGNoLT5vYmosIEk5MTVfTUFQX1dCKTsKPiAr CWlmIChJU19FUlIoYXJnLT52YWRkcikpIHsKPiArCQllcnIgPSBQVFJfRVJSKGFyZy0+dmFkZHIp Owo+ICsJCWdvdG8gZXJyX3NjcmF0Y2g7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtl cnJfc2NyYXRjaDoKPiArCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZhcmctPnNjcmF0Y2gs IDApOwo+ICtlcnJfY3R4Ogo+ICsJa2VybmVsX2NvbnRleHRfY2xvc2UoYXJnLT5jdHgpOwo+ICsJ cmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbGl2ZV9tb2NzX2Zpbmkoc3RydWN0 IGxpdmVfbW9jcyAqYXJnKQo+ICt7Cj4gKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmYXJn LT5zY3JhdGNoLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Cj4gKwlrZXJuZWxfY29udGV4dF9jbG9z ZShhcmctPmN0eCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcmVhZF9tb2NzX3RhYmxlKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190 YWJsZSAqdGFibGUsCj4gKwkJCSAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBpbnQgKm9mZnNldCkK PiArewo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwl1MzIgKmNzOwo+ICsKPiArCWNzID0gaW50ZWxf cmluZ19iZWdpbihycSwgNCAqIHRhYmxlLT5uX2VudHJpZXMpOwo+ICsJaWYgKElTX0VSUihjcykp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+ bl9lbnRyaWVzOyBpKyspIHsKPiArCQkqY3MrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44 IHwgTUlfVVNFX0dHVFQ7Cj4gKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChIQVNfR0xP QkFMX01PQ1NfUkVHSVNURVJTKHJxLT5pOTE1KSA/Cj4gKwkJCQkJICAgICBHRU4xMl9HTE9CQUxf TU9DUyhpKSA6Cj4gKwkJCQkJICAgICBtb2NzX3JlZ2lzdGVyKHJxLT5lbmdpbmUsIGkpKTsKPiAr CQkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIGkgKiBzaXplb2YodTMyKSArICpvZmZz ZXQ7Cj4gKwkJKmNzKysgPSAwOwo+ICsJfQo+ICsKPiArCWludGVsX3JpbmdfYWR2YW5jZShycSwg Y3MpOwo+ICsJKm9mZnNldCArPSBpICogc2l6ZW9mKHUzMik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgcmVhZF9sM2NjX3RhYmxlKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLAo+ICsJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUsCj4g KwkJCSAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBpbnQgKm9mZnNldCkKPiArewo+ICsJdW5zaWdu ZWQgaW50IGk7Cj4gKwl1MzIgKmNzOwo+ICsKPiArCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwg NCAqIHRhYmxlLT5uX2VudHJpZXMgLyAyKTsKPiArCWlmIChJU19FUlIoY3MpKQo+ICsJCXJldHVy biBQVFJfRVJSKGNzKTsKPiArCj4gKwkvKiBYWFggY2FuJ3QgcmVhZCB0aGUgTUNSIHJhbmdlIDB4 YjAwIGRpcmVjdGx5ICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgdGFibGUtPm5fZW50cmllcyAvIDI7 IGkrKykgewo+ICsJCSpjcysrID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfCBNSV9VU0Vf R0dUVDsKPiArCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjlfTE5DRkNNT0NTKGkp KTsKPiArCQkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIGkgKiBzaXplb2YodTMyKSAr ICpvZmZzZXQ7Cj4gKwkJKmNzKysgPSAwOwo+ICsJfQo+ICsKPiArCWludGVsX3JpbmdfYWR2YW5j ZShycSwgY3MpOwo+ICsJKm9mZnNldCArPSBpICogc2l6ZW9mKHUzMik7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2hlY2tfbW9jc190YWJsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190 YWJsZSAqdGFibGUsCj4gKwkJCSAgICBjb25zdCB1MzIgKnZhZGRyLCBpbnQgKm9mZnNldCkKPiAr ewo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwl1MzIgZXhwZWN0Owo+ICsKPiArCWZvciAoaSA9IDA7 IGkgPCB0YWJsZS0+c2l6ZTsgaSsrKSB7Cj4gKwkJaWYgKEhBU19HTE9CQUxfTU9DU19SRUdJU1RF UlMoZW5naW5lLT5pOTE1KSkKPiArCQkJZXhwZWN0ID0gdGFibGUtPnRhYmxlW2ldLmNvbnRyb2xf dmFsdWU7Cj4gKwkJZWxzZQo+ICsJCQlleHBlY3QgPSBnZXRfZW50cnlfY29udHJvbCh0YWJsZSwg aSk7Cj4gKwkJaWYgKHZhZGRyWypvZmZzZXRdICE9IGV4cGVjdCkgewo+ICsJCQlwcl9lcnIoIiVz OiBJbnZhbGlkIE1PQ1NbJWRdIGVudHJ5LCBmb3VuZCAlMDh4LCBleHBlY3RlZCAlMDh4XG4iLAo+ ICsJCQkgICAgICAgZW5naW5lLT5uYW1lLCBpLCB2YWRkclsqb2Zmc2V0XSwgZXhwZWN0KTsKPiAr CQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJCSsrKm9mZnNldDsKPiArCX0KPiArCj4gKwkv KiBBbGwgcmVtYWluaW5nIGVudHJpZXMgYXJlIGRlZmF1bHQgKi8KPiArCWlmIChIQVNfR0xPQkFM X01PQ1NfUkVHSVNURVJTKGVuZ2luZS0+aTkxNSkpCj4gKwkJZXhwZWN0ID0gdGFibGUtPnRhYmxl WzBdLmNvbnRyb2xfdmFsdWU7Cj4gKwllbHNlCj4gKwkJZXhwZWN0ID0gdGFibGUtPnRhYmxlW0k5 MTVfTU9DU19QVEVdLmNvbnRyb2xfdmFsdWU7Cj4gKwlmb3IgKDsgaSA8IHRhYmxlLT5uX2VudHJp ZXM7IGkrKykgewo+ICsJCWlmICh2YWRkclsqb2Zmc2V0XSAhPSBleHBlY3QpIHsKPiArCQkJcHJf ZXJyKCIlczogSW52YWxpZCBNT0NTWyVkKl0gZW50cnksIGZvdW5kICUwOHgsIGV4cGVjdGVkICUw OHhcbiIsCj4gKwkJCSAgICAgICBlbmdpbmUtPm5hbWUsIGksIHZhZGRyWypvZmZzZXRdLCBleHBl Y3QpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJKysqb2Zmc2V0Owo+ICsJfQo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNoZWNrX2wzY2NfdGFibGUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGRy bV9pOTE1X21vY3NfdGFibGUgKnRhYmxlLAo+ICsJCQkgICAgY29uc3QgdTMyICp2YWRkciwgaW50 ICpvZmZzZXQpCj4gK3sKPiArCXUxNiB1bnVzZWRfdmFsdWUgPSB0YWJsZS0+dGFibGVbSTkxNV9N T0NTX1BURV0ubDNjY192YWx1ZTsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJdTMyIGV4cGVjdDsK PiArCj4gKwlpZiAoMSkgeyAvKiBYWFggc2tpcCBNQ1IgcmVhZCBiYWNrICovCj4gKwkJKm9mZnNl dCArPSB0YWJsZS0+bl9lbnRyaWVzIC8gMjsKPiArCQlyZXR1cm4gMDsKPiArCX0KCkkgdGhpbmsg bDNjYyByZXNldCB0ZXN0IGlzIHZhbGlkIG9ubHkgZnJvbSBHZW4xMisuIEJlZm9yZSB0aGF0IHNp bmNlIGl0cwpsb2FkZWQgZnJvbSB0aGUgZ29sZGVuIGNvbnRleHQsIHRhYmxlIHN0YXlzIHRoZSBz YW1lIGJldHdlZW4gcmVzZXQuCgpUaGFua3MsClByYXRoYXAKPiArCj4gKwlmb3IgKGkgPSAwOyBp IDwgdGFibGUtPnNpemUgLyAyOyBpKyspIHsKPiArCQl1MTYgbG93ID0gZ2V0X2VudHJ5X2wzY2Mo dGFibGUsIDIgKiBpKTsKPiArCQl1MTYgaGlnaCA9IGdldF9lbnRyeV9sM2NjKHRhYmxlLCAyICog aSArIDEpOwo+ICsKPiArCQlleHBlY3QgPSBsM2NjX2NvbWJpbmUodGFibGUsIGxvdywgaGlnaCk7 Cj4gKwkJaWYgKHZhZGRyWypvZmZzZXRdICE9IGV4cGVjdCkgewo+ICsJCQlwcl9lcnIoIiVzOiBJ bnZhbGlkIEwzQ0NbJWRdIGVudHJ5LCBmb3VuZCAlMDh4LCBleHBlY3RlZCAlMDh4XG4iLAo+ICsJ CQkgICAgICAgZW5naW5lLT5uYW1lLCBpLCB2YWRkclsqb2Zmc2V0XSwgZXhwZWN0KTsKPiArCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJCSsrKm9mZnNldDsKPiArCX0KPiArCj4gKwkvKiBP ZGQgdGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICovCj4gKwlpZiAodGFibGUtPnNpemUgJiAxKSB7 Cj4gKwkJdTE2IGxvdyA9IGdldF9lbnRyeV9sM2NjKHRhYmxlLCAyICogaSk7Cj4gKwo+ICsJCWV4 cGVjdCA9IGwzY2NfY29tYmluZSh0YWJsZSwgbG93LCB1bnVzZWRfdmFsdWUpOwo+ICsJCWlmICh2 YWRkclsqb2Zmc2V0XSAhPSBleHBlY3QpIHsKPiArCQkJcHJfZXJyKCIlczogSW52YWxpZCBMM0ND WyVkXSBlbnRyeSwgZm91bmQgJTA4eCwgZXhwZWN0ZWQgJTA4eFxuIiwKPiArCQkJICAgICAgIGVu Z2luZS0+bmFtZSwgaSwgdmFkZHJbKm9mZnNldF0sIGV4cGVjdCk7Cj4gKwkJCXJldHVybiAtRUlO VkFMOwo+ICsJCX0KPiArCQkrKypvZmZzZXQ7Cj4gKwkJaSsrOwo+ICsJfQo+ICsKPiArCS8qIEFs bCByZW1haW5pbmcgZW50cmllcyBhcmUgYWxzbyB1bnVzZWQgKi8KPiArCWZvciAoOyBpIDwgdGFi bGUtPm5fZW50cmllcyAvIDI7IGkrKykgewo+ICsJCWV4cGVjdCA9IGwzY2NfY29tYmluZSh0YWJs ZSwgdW51c2VkX3ZhbHVlLCB1bnVzZWRfdmFsdWUpOwo+ICsJCWlmICh2YWRkclsqb2Zmc2V0XSAh PSBleHBlY3QpIHsKPiArCQkJcHJfZXJyKCIlczogSW52YWxpZCBMM0NDWyVkXSBlbnRyeSwgZm91 bmQgJTA4eCwgZXhwZWN0ZWQgJTA4eFxuIiwKPiArCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgaSwg dmFkZHJbKm9mZnNldF0sIGV4cGVjdCk7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiAr CQkrKypvZmZzZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgY2hlY2tfbW9jc19lbmdpbmUoc3RydWN0IGxpdmVfbW9jcyAqYXJnLAo+ICsJCQkgICAgIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiArewo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBh cmctPnNjcmF0Y2g7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCWludCBvZmZzZXQ7 Cj4gKwlpbnQgZXJyOwo+ICsKPiArCW1lbXNldDMyKGFyZy0+dmFkZHIsIFNUQUNLX01BR0lDLCBQ QUdFX1NJWkUgLyBzaXplb2YodTMyKSk7Cj4gKwo+ICsJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0 ZV9yZXF1ZXN0KGNlKTsKPiArCWlmIChJU19FUlIocnEpKQo+ICsJCXJldHVybiBQVFJfRVJSKHJx KTsKPiArCj4gKwlpOTE1X3ZtYV9sb2NrKHZtYSk7Cj4gKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdh aXRfb2JqZWN0KHJxLCB2bWEtPm9iaiwgdHJ1ZSk7Cj4gKwlpZiAoIWVycikKPiArCQllcnIgPSBp OTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7Cj4gKwlp OTE1X3ZtYV91bmxvY2sodm1hKTsKPiArCj4gKwlvZmZzZXQgPSAwOwo+ICsJaWYgKCFlcnIpCj4g KwkJZXJyID0gcmVhZF9tb2NzX3RhYmxlKHJxLCAmYXJnLT50YWJsZSwgdm1hLCAmb2Zmc2V0KTsK PiArCWlmICghZXJyICYmIGNlLT5lbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKPiArCQll cnIgPSByZWFkX2wzY2NfdGFibGUocnEsICZhcmctPnRhYmxlLCB2bWEsICZvZmZzZXQpOwo+ICsK PiArCWVyciA9IHJlcXVlc3RfYWRkX3N5bmMocnEsIGVycik7Cj4gKwlpZiAoZXJyKQo+ICsJCXJl dHVybiBlcnI7Cj4gKwo+ICsJb2Zmc2V0ID0gMDsKPiArCWlmICghZXJyKQo+ICsJCWVyciA9IGNo ZWNrX21vY3NfdGFibGUoY2UtPmVuZ2luZSwgJmFyZy0+dGFibGUsCj4gKwkJCQkgICAgICAgYXJn LT52YWRkciwgJm9mZnNldCk7Cj4gKwlpZiAoIWVyciAmJiBjZS0+ZW5naW5lLT5jbGFzcyA9PSBS RU5ERVJfQ0xBU1MpCj4gKwkJZXJyID0gY2hlY2tfbDNjY190YWJsZShjZS0+ZW5naW5lLCAmYXJn LT50YWJsZSwKPiArCQkJCSAgICAgICBhcmctPnZhZGRyLCAmb2Zmc2V0KTsKPiArCWlmIChlcnIp Cj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBsaXZlX21vY3NfY2xlYW4odm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0 ID0gYXJnOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQ7Cj4gKwlzdHJ1Y3QgbGl2ZV9tb2NzIG1vY3M7Cj4gKwlpbnQgZXJyOwo+ ICsKPiArCWVyciA9IGxpdmVfbW9jc19pbml0KCZtb2NzLCBndCk7Cj4gKwlpZiAoZXJyKQo+ICsJ CXJldHVybiBlcnI7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7Cj4g KwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICsKPiArCQljZSA9IGludGVsX2NvbnRleHRf Y3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQtPmdlbV9jb250ZXh0LAo+ICsJCQkJCSAgZW5n aW5lKTsKPiArCQlpZiAoSVNfRVJSKGNlKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKGNlKTsKPiAr CQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQllcnIgPSBjaGVja19tb2NzX2VuZ2luZSgmbW9jcywg Y2UpOwo+ICsJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlicmVh azsKPiArCX0KPiArCj4gKwlsaXZlX21vY3NfZmluaSgmbW9jcyk7Cj4gKwo+ICsJcmV0dXJuIGVy cjsKPiArfQo+ICsKPiArc3RhdGljIGludCBhY3RpdmVfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwKPiArCQkJICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKPiArewo+ICsJ c3RydWN0IGlndF9zcGlubmVyIHNwaW47Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAr CWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaWd0X3NwaW5uZXJfaW5pdCgmc3BpbiwgY2UtPmVuZ2lu ZS0+Z3QpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCXJxID0gaWd0X3Nw aW5uZXJfY3JlYXRlX3JlcXVlc3QoJnNwaW4sIGNlLCBNSV9OT09QKTsKPiArCWlmIChJU19FUlIo cnEpKSB7Cj4gKwkJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIo cnEpOwo+ICsJfQo+ICsKPiArCWVyciA9IHJlcXVlc3RfYWRkX3NwaW4ocnEsICZzcGluKTsKPiAr CWlmIChlcnIgPT0gMCkKPiArCQllcnIgPSBpbnRlbF9lbmdpbmVfcmVzZXQoY2UtPmVuZ2luZSwg cmVhc29uKTsKPiArCj4gKwlpZ3Rfc3Bpbm5lcl9lbmQoJnNwaW4pOwo+ICsJaWd0X3NwaW5uZXJf ZmluaSgmc3Bpbik7Cj4gKwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIGludCBf X2xpdmVfbW9jc19yZXNldChzdHJ1Y3QgbGl2ZV9tb2NzICptb2NzLAo+ICsJCQkgICAgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKPiArewo+ICsJaW50IGVycjsKPiArCj4gKwllcnIgPSBpbnRl bF9lbmdpbmVfcmVzZXQoY2UtPmVuZ2luZSwgIm1vY3MiKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0 dXJuIGVycjsKPiArCj4gKwllcnIgPSBjaGVja19tb2NzX2VuZ2luZShtb2NzLCBjZSk7Cj4gKwlp ZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJZXJyID0gYWN0aXZlX2VuZ2luZV9yZXNl dChjZSwgIm1vY3MiKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwllcnIg PSBjaGVja19tb2NzX2VuZ2luZShtb2NzLCBjZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBl cnI7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGl2ZV9tb2NzX3Jl c2V0KHZvaWQgKmFyZykKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGFyZzsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk Owo+ICsJc3RydWN0IGxpdmVfbW9jcyBtb2NzOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYg KCFpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGd0KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwllcnIg PSBsaXZlX21vY3NfaW5pdCgmbW9jcywgZ3QpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJy Owo+ICsKPiArCWlndF9nbG9iYWxfcmVzZXRfbG9jayhndCk7Cj4gKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBndCwgaWQpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwo+ICsJ CWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dC0+Z2VtX2Nv bnRleHQsCj4gKwkJCQkJICBlbmdpbmUpOwo+ICsJCWlmIChJU19FUlIoY2UpKSB7Cj4gKwkJCWVy ciA9IFBUUl9FUlIoY2UpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWludGVsX2VuZ2lu ZV9wbV9nZXQoZW5naW5lKTsKPiArCQllcnIgPSBfX2xpdmVfbW9jc19yZXNldCgmbW9jcywgY2Up Owo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCj4gKwkJaW50ZWxfY29udGV4 dF9wdXQoY2UpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsJaWd0X2dsb2Jh bF9yZXNldF91bmxvY2soZ3QpOwo+ICsKPiArCWxpdmVfbW9jc19maW5pKCZtb2NzKTsKPiArCXJl dHVybiBlcnI7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9tb2NzX2xpdmVfc2VsZnRlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+ICsJCVNVQlRFU1QobGl2ZV9tb2NzX2NsZWFuKSwKPiAr CQlTVUJURVNUKGxpdmVfbW9jc19yZXNldCksCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X21v Y3NfdGFibGUgdGFibGU7Cj4gKwo+ICsJaWYgKCFnZXRfbW9jc19zZXR0aW5ncyhpOTE1LCAmdGFi bGUpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXJldHVybiBpbnRlbF9ndF9saXZlX3N1YnRlc3Rz KHRlc3RzLCAmaTkxNS0+Z3QpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCj4gaW5kZXggNmRhZjY1OTllYzc5Li4x YTZhYmNmZmNlODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKPiBAQCAtMTYsNiArMTYsNyBAQCBzZWxmdGVzdChn dF9lbmdpbmVzLCBpbnRlbF9lbmdpbmVfbGl2ZV9zZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KGd0X3Rp bWVsaW5lcywgaW50ZWxfdGltZWxpbmVfbGl2ZV9zZWxmdGVzdHMpCj4gIHNlbGZ0ZXN0KGd0X2Nv bnRleHRzLCBpbnRlbF9jb250ZXh0X2xpdmVfc2VsZnRlc3RzKQo+ICBzZWxmdGVzdChndF9scmMs IGludGVsX2xyY19saXZlX3NlbGZ0ZXN0cykKPiArc2VsZnRlc3QoZ3RfbW9jcywgaW50ZWxfbW9j c19saXZlX3NlbGZ0ZXN0cykKPiAgc2VsZnRlc3QoZ3RfcG0sIGludGVsX2d0X3BtX2xpdmVfc2Vs ZnRlc3RzKQo+ICBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1ZXN0X2xpdmVfc2VsZnRlc3Rz KQo+ICBzZWxmdGVzdChhY3RpdmUsIGk5MTVfYWN0aXZlX2xpdmVfc2VsZnRlc3RzKQo+IC0tIAo+ IDIuMjMuMAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=