From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 03/16] drm/i915/selftests: Add coverage of mocs registers Date: Mon, 21 Oct 2019 09:02:13 +0100 Message-ID: <20191021080226.537-3-chris@chris-wilson.co.uk> References: <20191021080226.537-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 60E8289B3C for ; Mon, 21 Oct 2019 08:02:48 +0000 (UTC) In-Reply-To: <20191021080226.537-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UHJvYmUgdGhlIG1vY3MgcmVnaXN0ZXJzIGZvciBuZXcgY29udGV4dHMgYW5kIGFjcm9zcyBHUFUg cmVzZXRzLiBTaW1pbGFyCnRvIGludGVsX3dvcmthcm91bmRzLCB3ZSBoYXZlIHRhYmxlcyBvZiB3 aGF0IHJlZ2lzdGVyIHZhbHVlcyB3ZSBleHBlY3QKdG8gc2VlLCBzbyB2ZXJpZnkgdGhhdCB1c2Vy IGNvbnRleHRzIGFyZSBhZmZlY3RlZCBieSB0aGVtLiBJbiB0aGUKZnV0dXJlLCB3ZSBzaG91bGQg YWRkIHRlc3RzIHNpbWlsYXIgdG8gaW50ZWxfc3NldSB0byBjb3ZlciBkeW5hbWljCnJlY29uZmln dXJhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KQ2M6IFByYXRoYXAgS3VtYXIgVmFsc2FuIDxwcmF0aGFwLmt1bWFyLnZhbHNhbkBp bnRlbC5jb20+CkNjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAg IDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jICAgICAgIHwgNDMx ICsrKysrKysrKysrKysrKysrKwogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2Vs ZnRlc3RzLmggIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDM2IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9tb2NzLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKaW5kZXggNWJhYzM5NjY5MDZiLi5mNWEy Mzk2NDA1NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3Mu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMKQEAgLTQ5MCwzICs0 OTAsNyBAQCB2b2lkIGludGVsX21vY3NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWlmIChI QVNfR0xPQkFMX01PQ1NfUkVHSVNURVJTKGd0LT5pOTE1KSkKIAkJaW50ZWxfbW9jc19pbml0X2ds b2JhbChndCk7CiB9CisKKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkK KyNpbmNsdWRlICJzZWxmdGVzdF9tb2NzLmMiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X21vY3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu Ljk0YzFjNjM4NjIxYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X21vY3MuYwpAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlv bgorICovCisKKyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKKyNpbmNsdWRlICJpOTE1 X3NlbGZ0ZXN0LmgiCisKKyNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5oIgor I2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfcmVzZXQuaCIKKyNpbmNsdWRlICJzZWxmdGVzdHMvaWd0 X3NwaW5uZXIuaCIKKworc3RydWN0IGxpdmVfbW9jcyB7CisJc3RydWN0IGRybV9pOTE1X21vY3Nf dGFibGUgdGFibGU7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgaTkx NV92bWEgKnNjcmF0Y2g7CisJdm9pZCAqdmFkZHI7Cit9OworCitzdGF0aWMgaW50IHJlcXVlc3Rf YWRkX3N5bmMoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBlcnIpCit7CisJaTkxNV9yZXF1 ZXN0X2dldChycSk7CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJaWYgKGk5MTVfcmVxdWVzdF93 YWl0KHJxLCAwLCBIWiAvIDUpIDwgMCkKKwkJZXJyID0gLUVUSU1FOworCWk5MTVfcmVxdWVzdF9w dXQocnEpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCByZXF1ZXN0X2FkZF9zcGlu KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4pCit7CisJ aW50IGVyciA9IDA7CisKKwlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKKwlpOTE1X3JlcXVlc3RfYWRk KHJxKTsKKwlpZiAoc3BpbiAmJiAhaWd0X3dhaXRfZm9yX3NwaW5uZXIoc3BpbiwgcnEpKQorCQll cnIgPSAtRVRJTUU7CisJaTkxNV9yZXF1ZXN0X3B1dChycSk7CisKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpjcmVhdGVfc2NyYXRjaChzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVf dm1hICp2bWE7CisJaW50IGVycjsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoZ3QtPmk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4g RVJSX0NBU1Qob2JqKTsKKworCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfY29oZXJlbmN5KG9i aiwgSTkxNV9DQUNISU5HX0NBQ0hFRCk7CisKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmos ICZndC0+Z2d0dC0+dm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkgeworCQlpOTE1X2dlbV9v YmplY3RfcHV0KG9iaik7CisJCXJldHVybiB2bWE7CisJfQorCisJZXJyID0gaTkxNV92bWFfcGlu KHZtYSwgMCwgMCwgUElOX0dMT0JBTCk7CisJaWYgKGVycikgeworCQlpOTE1X2dlbV9vYmplY3Rf cHV0KG9iaik7CisJCXJldHVybiBFUlJfUFRSKGVycik7CisJfQorCisJcmV0dXJuIHZtYTsKK30K Kworc3RhdGljIGludCBsaXZlX21vY3NfaW5pdChzdHJ1Y3QgbGl2ZV9tb2NzICphcmcsIHN0cnVj dCBpbnRlbF9ndCAqZ3QpCit7CisJaW50IGVycjsKKworCWlmICghZ2V0X21vY3Nfc2V0dGluZ3Mo Z3QtPmk5MTUsICZhcmctPnRhYmxlKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlhcmctPmN0eCA9 IGtlcm5lbF9jb250ZXh0KGd0LT5pOTE1KTsKKwlpZiAoIWFyZy0+Y3R4KQorCQlyZXR1cm4gLUVO T01FTTsKKworCWFyZy0+c2NyYXRjaCA9IGNyZWF0ZV9zY3JhdGNoKGd0KTsKKwlpZiAoSVNfRVJS KGFyZy0+c2NyYXRjaCkpIHsKKwkJZXJyID0gUFRSX0VSUihhcmctPnNjcmF0Y2gpOworCQlnb3Rv IGVycl9jdHg7CisJfQorCisJYXJnLT52YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGFy Zy0+c2NyYXRjaC0+b2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihhcmctPnZhZGRyKSkg eworCQllcnIgPSBQVFJfRVJSKGFyZy0+dmFkZHIpOworCQlnb3RvIGVycl9zY3JhdGNoOworCX0K KworCXJldHVybiAwOworCitlcnJfc2NyYXRjaDoKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFz ZSgmYXJnLT5zY3JhdGNoLCAwKTsKK2Vycl9jdHg6CisJa2VybmVsX2NvbnRleHRfY2xvc2UoYXJn LT5jdHgpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGxpdmVfbW9jc19maW5pKHN0 cnVjdCBsaXZlX21vY3MgKmFyZykKK3sKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmYXJn LT5zY3JhdGNoLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7CisJa2VybmVsX2NvbnRleHRfY2xvc2Uo YXJnLT5jdHgpOworfQorCitzdGF0aWMgaW50IHJlYWRfbW9jc190YWJsZShzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJs ZSwKKwkJCSAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBpbnQgKm9mZnNldCkKK3sKKwl1bnNpZ25l ZCBpbnQgaTsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogdGFi bGUtPm5fZW50cmllcyk7CisJaWYgKElTX0VSUihjcykpCisJCXJldHVybiBQVFJfRVJSKGNzKTsK KworCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+bl9lbnRyaWVzOyBpKyspIHsKKwkJKmNzKysgPSBN SV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8IE1JX1VTRV9HR1RUOworCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEhBU19HTE9CQUxfTU9DU19SRUdJU1RFUlMocnEtPmk5MTUpID8KKwkJ CQkJICAgICBHRU4xMl9HTE9CQUxfTU9DUyhpKSA6CisJCQkJCSAgICAgbW9jc19yZWdpc3Rlcihy cS0+ZW5naW5lLCBpKSk7CisJCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaSAqIHNp emVvZih1MzIpICsgKm9mZnNldDsKKwkJKmNzKysgPSAwOworCX0KKworCWludGVsX3JpbmdfYWR2 YW5jZShycSwgY3MpOworCSpvZmZzZXQgKz0gaSAqIHNpemVvZih1MzIpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgcmVhZF9sM2NjX3RhYmxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAorCQkJICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlLAorCQkJICAg c3RydWN0IGk5MTVfdm1hICp2bWEsIGludCAqb2Zmc2V0KQoreworCXVuc2lnbmVkIGludCBpOwor CXUzMiAqY3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDQgKiB0YWJsZS0+bl9lbnRy aWVzIC8gMik7CisJaWYgKElTX0VSUihjcykpCisJCXJldHVybiBQVFJfRVJSKGNzKTsKKworCS8q IFhYWCBjYW4ndCByZWFkIHRoZSBNQ1IgcmFuZ2UgMHhiMDAgZGlyZWN0bHkgKi8KKwlmb3IgKGkg PSAwOyBpIDwgdGFibGUtPm5fZW50cmllcyAvIDI7IGkrKykgeworCQkqY3MrKyA9IE1JX1NUT1JF X1JFR0lTVEVSX01FTV9HRU44IHwgTUlfVVNFX0dHVFQ7CisJCSpjcysrID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VOOV9MTkNGQ01PQ1MoaSkpOworCQkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQo dm1hKSArIGkgKiBzaXplb2YodTMyKSArICpvZmZzZXQ7CisJCSpjcysrID0gMDsKKwl9CisKKwlp bnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKwkqb2Zmc2V0ICs9IGkgKiBzaXplb2YodTMyKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNoZWNrX21vY3NfdGFibGUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2Nz X3RhYmxlICp0YWJsZSwKKwkJCSAgICBjb25zdCB1MzIgKnZhZGRyLCBpbnQgKm9mZnNldCkKK3sK Kwl1bnNpZ25lZCBpbnQgaTsKKwl1MzIgZXhwZWN0OworCisJZm9yIChpID0gMDsgaSA8IHRhYmxl LT5zaXplOyBpKyspIHsKKwkJaWYgKEhBU19HTE9CQUxfTU9DU19SRUdJU1RFUlMoZW5naW5lLT5p OTE1KSkKKwkJCWV4cGVjdCA9IHRhYmxlLT50YWJsZVtpXS5jb250cm9sX3ZhbHVlOworCQllbHNl CisJCQlleHBlY3QgPSBnZXRfZW50cnlfY29udHJvbCh0YWJsZSwgaSk7CisJCWlmICh2YWRkclsq b2Zmc2V0XSAhPSBleHBlY3QpIHsKKwkJCXByX2VycigiJXM6IEludmFsaWQgTU9DU1slZF0gZW50 cnksIGZvdW5kICUwOHgsIGV4cGVjdGVkICUwOHhcbiIsCisJCQkgICAgICAgZW5naW5lLT5uYW1l LCBpLCB2YWRkclsqb2Zmc2V0XSwgZXhwZWN0KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJ CSsrKm9mZnNldDsKKwl9CisKKwkvKiBBbGwgcmVtYWluaW5nIGVudHJpZXMgYXJlIGRlZmF1bHQg Ki8KKwlpZiAoSEFTX0dMT0JBTF9NT0NTX1JFR0lTVEVSUyhlbmdpbmUtPmk5MTUpKQorCQlleHBl Y3QgPSB0YWJsZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZTsKKwllbHNlCisJCWV4cGVjdCA9IHRh YmxlLT50YWJsZVtJOTE1X01PQ1NfUFRFXS5jb250cm9sX3ZhbHVlOworCWZvciAoOyBpIDwgdGFi bGUtPm5fZW50cmllczsgaSsrKSB7CisJCWlmICh2YWRkclsqb2Zmc2V0XSAhPSBleHBlY3QpIHsK KwkJCXByX2VycigiJXM6IEludmFsaWQgTU9DU1slZCpdIGVudHJ5LCBmb3VuZCAlMDh4LCBleHBl Y3RlZCAlMDh4XG4iLAorCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgaSwgdmFkZHJbKm9mZnNldF0s IGV4cGVjdCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQkrKypvZmZzZXQ7CisJfQorCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfbDNjY190YWJsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X21vY3NfdGFi bGUgKnRhYmxlLAorCQkJICAgIGNvbnN0IHUzMiAqdmFkZHIsIGludCAqb2Zmc2V0KQoreworCXUx NiB1bnVzZWRfdmFsdWUgPSB0YWJsZS0+dGFibGVbSTkxNV9NT0NTX1BURV0ubDNjY192YWx1ZTsK Kwl1bnNpZ25lZCBpbnQgaTsKKwl1MzIgZXhwZWN0OworCisJaWYgKDEpIHsgLyogWFhYIHNraXAg TUNSIHJlYWQgYmFjayAqLworCQkqb2Zmc2V0ICs9IHRhYmxlLT5uX2VudHJpZXMgLyAyOworCQly ZXR1cm4gMDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgdGFibGUtPnNpemUgLyAyOyBpKyspIHsK KwkJdTE2IGxvdyA9IGdldF9lbnRyeV9sM2NjKHRhYmxlLCAyICogaSk7CisJCXUxNiBoaWdoID0g Z2V0X2VudHJ5X2wzY2ModGFibGUsIDIgKiBpICsgMSk7CisKKwkJZXhwZWN0ID0gbDNjY19jb21i aW5lKHRhYmxlLCBsb3csIGhpZ2gpOworCQlpZiAodmFkZHJbKm9mZnNldF0gIT0gZXhwZWN0KSB7 CisJCQlwcl9lcnIoIiVzOiBJbnZhbGlkIEwzQ0NbJWRdIGVudHJ5LCBmb3VuZCAlMDh4LCBleHBl Y3RlZCAlMDh4XG4iLAorCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgaSwgdmFkZHJbKm9mZnNldF0s IGV4cGVjdCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQkrKypvZmZzZXQ7CisJfQorCisJ LyogT2RkIHRhYmxlIHNpemUgLSAxIGxlZnQgb3ZlciAqLworCWlmICh0YWJsZS0+c2l6ZSAmIDEp IHsKKwkJdTE2IGxvdyA9IGdldF9lbnRyeV9sM2NjKHRhYmxlLCAyICogaSk7CisKKwkJZXhwZWN0 ID0gbDNjY19jb21iaW5lKHRhYmxlLCBsb3csIHVudXNlZF92YWx1ZSk7CisJCWlmICh2YWRkclsq b2Zmc2V0XSAhPSBleHBlY3QpIHsKKwkJCXByX2VycigiJXM6IEludmFsaWQgTDNDQ1slZF0gZW50 cnksIGZvdW5kICUwOHgsIGV4cGVjdGVkICUwOHhcbiIsCisJCQkgICAgICAgZW5naW5lLT5uYW1l LCBpLCB2YWRkclsqb2Zmc2V0XSwgZXhwZWN0KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJ CSsrKm9mZnNldDsKKwkJaSsrOworCX0KKworCS8qIEFsbCByZW1haW5pbmcgZW50cmllcyBhcmUg YWxzbyB1bnVzZWQgKi8KKwlmb3IgKDsgaSA8IHRhYmxlLT5uX2VudHJpZXMgLyAyOyBpKyspIHsK KwkJZXhwZWN0ID0gbDNjY19jb21iaW5lKHRhYmxlLCB1bnVzZWRfdmFsdWUsIHVudXNlZF92YWx1 ZSk7CisJCWlmICh2YWRkclsqb2Zmc2V0XSAhPSBleHBlY3QpIHsKKwkJCXByX2VycigiJXM6IElu dmFsaWQgTDNDQ1slZF0gZW50cnksIGZvdW5kICUwOHgsIGV4cGVjdGVkICUwOHhcbiIsCisJCQkg ICAgICAgZW5naW5lLT5uYW1lLCBpLCB2YWRkclsqb2Zmc2V0XSwgZXhwZWN0KTsKKwkJCXJldHVy biAtRUlOVkFMOworCQl9CisJCSsrKm9mZnNldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBjaGVja19tb2NzX2VuZ2luZShzdHJ1Y3QgbGl2ZV9tb2NzICphcmcsCisJCQkgICAg IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGFy Zy0+c2NyYXRjaDsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlpbnQgb2Zmc2V0OworCWlu dCBlcnI7CisKKwltZW1zZXQzMihhcmctPnZhZGRyLCBTVEFDS19NQUdJQywgUEFHRV9TSVpFIC8g c2l6ZW9mKHUzMikpOworCisJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsK KwlpZiAoSVNfRVJSKHJxKSkKKwkJcmV0dXJuIFBUUl9FUlIocnEpOworCisJaTkxNV92bWFfbG9j ayh2bWEpOworCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9vYmplY3QocnEsIHZtYS0+b2JqLCB0 cnVlKTsKKwlpZiAoIWVycikKKwkJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBy cSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWk5MTVfdm1hX3VubG9jayh2bWEpOworCisJb2Zmc2V0 ID0gMDsKKwlpZiAoIWVycikKKwkJZXJyID0gcmVhZF9tb2NzX3RhYmxlKHJxLCAmYXJnLT50YWJs ZSwgdm1hLCAmb2Zmc2V0KTsKKwlpZiAoIWVyciAmJiBjZS0+ZW5naW5lLT5jbGFzcyA9PSBSRU5E RVJfQ0xBU1MpCisJCWVyciA9IHJlYWRfbDNjY190YWJsZShycSwgJmFyZy0+dGFibGUsIHZtYSwg Jm9mZnNldCk7CisKKwllcnIgPSByZXF1ZXN0X2FkZF9zeW5jKHJxLCBlcnIpOworCWlmIChlcnIp CisJCXJldHVybiBlcnI7CisKKwlvZmZzZXQgPSAwOworCWlmICghZXJyKQorCQllcnIgPSBjaGVj a19tb2NzX3RhYmxlKGNlLT5lbmdpbmUsICZhcmctPnRhYmxlLAorCQkJCSAgICAgICBhcmctPnZh ZGRyLCAmb2Zmc2V0KTsKKwlpZiAoIWVyciAmJiBjZS0+ZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJf Q0xBU1MpCisJCWVyciA9IGNoZWNrX2wzY2NfdGFibGUoY2UtPmVuZ2luZSwgJmFyZy0+dGFibGUs CisJCQkJICAgICAgIGFyZy0+dmFkZHIsICZvZmZzZXQpOworCWlmIChlcnIpCisJCXJldHVybiBl cnI7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsaXZlX21vY3NfY2xlYW4odm9pZCAq YXJnKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBhcmc7CisJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCXN0cnVjdCBsaXZlX21v Y3MgbW9jczsKKwlpbnQgZXJyOworCisJZXJyID0gbGl2ZV9tb2NzX2luaXQoJm1vY3MsIGd0KTsK KwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3Qs IGlkKSB7CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKworCQljZSA9IGludGVsX2NvbnRl eHRfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQtPmdlbV9jb250ZXh0LAorCQkJCQkgIGVu Z2luZSk7CisJCWlmIChJU19FUlIoY2UpKSB7CisJCQllcnIgPSBQVFJfRVJSKGNlKTsKKwkJCWJy ZWFrOworCQl9CisKKwkJZXJyID0gY2hlY2tfbW9jc19lbmdpbmUoJm1vY3MsIGNlKTsKKwkJaW50 ZWxfY29udGV4dF9wdXQoY2UpOworCQlpZiAoZXJyKQorCQkJYnJlYWs7CisJfQorCisJbGl2ZV9t b2NzX2ZpbmkoJm1vY3MpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBhY3RpdmVf ZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCSAgICAgICBjb25zdCBj aGFyICpyZWFzb24pCit7CisJc3RydWN0IGlndF9zcGlubmVyIHNwaW47CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7CisJaW50IGVycjsKKworCWVyciA9IGlndF9zcGlubmVyX2luaXQoJnNwaW4s IGNlLT5lbmdpbmUtPmd0KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcnEgPSBpZ3Rf c3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgmc3BpbiwgY2UsIE1JX05PT1ApOworCWlmIChJU19FUlIo cnEpKSB7CisJCWlndF9zcGlubmVyX2ZpbmkoJnNwaW4pOworCQlyZXR1cm4gUFRSX0VSUihycSk7 CisJfQorCisJZXJyID0gcmVxdWVzdF9hZGRfc3BpbihycSwgJnNwaW4pOworCWlmIChlcnIgPT0g MCkKKwkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGNlLT5lbmdpbmUsIHJlYXNvbik7CisKKwlp Z3Rfc3Bpbm5lcl9lbmQoJnNwaW4pOworCWlndF9zcGlubmVyX2ZpbmkoJnNwaW4pOworCisJcmV0 dXJuIGVycjsKK30KKworc3RhdGljIGludCBfX2xpdmVfbW9jc19yZXNldChzdHJ1Y3QgbGl2ZV9t b2NzICptb2NzLAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJaW50IGVy cjsKKworCWVyciA9IGludGVsX2VuZ2luZV9yZXNldChjZS0+ZW5naW5lLCAibW9jcyIpOworCWlm IChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBjaGVja19tb2NzX2VuZ2luZShtb2NzLCBj ZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGFjdGl2ZV9lbmdpbmVfcmVz ZXQoY2UsICJtb2NzIik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGNoZWNr X21vY3NfZW5naW5lKG1vY3MsIGNlKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9tb2NzX3Jlc2V0KHZvaWQgKmFyZykKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlzdHJ1Y3QgbGl2ZV9tb2NzIG1vY3M7CisJ aW50IGVyciA9IDA7CisKKwlpZiAoIWludGVsX2hhc19yZXNldF9lbmdpbmUoZ3QpKQorCQlyZXR1 cm4gMDsKKworCWVyciA9IGxpdmVfbW9jc19pbml0KCZtb2NzLCBndCk7CisJaWYgKGVycikKKwkJ cmV0dXJuIGVycjsKKworCWlndF9nbG9iYWxfcmVzZXRfbG9jayhndCk7CisJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKworCQlj ZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQtPmdlbV9jb250 ZXh0LAorCQkJCQkgIGVuZ2luZSk7CisJCWlmIChJU19FUlIoY2UpKSB7CisJCQllcnIgPSBQVFJf RVJSKGNlKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUp OworCQllcnIgPSBfX2xpdmVfbW9jc19yZXNldCgmbW9jcywgY2UpOworCQlpbnRlbF9lbmdpbmVf cG1fcHV0KGVuZ2luZSk7CisKKwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCQlpZiAoZXJyKQor CQkJYnJlYWs7CisJfQorCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGd0KTsKKworCWxpdmVfbW9j c19maW5pKCZtb2NzKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaW50ZWxfbW9jc19saXZlX3Nl bGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0geworCQlTVUJURVNUKGxpdmVfbW9jc19jbGVh biksCisJCVNVQlRFU1QobGl2ZV9tb2NzX3Jlc2V0KSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9t b2NzX3RhYmxlIHRhYmxlOworCisJaWYgKCFnZXRfbW9jc19zZXR0aW5ncyhpOTE1LCAmdGFibGUp KQorCQlyZXR1cm4gMDsKKworCXJldHVybiBpbnRlbF9ndF9saXZlX3N1YnRlc3RzKHRlc3RzLCAm aTkxNS0+Z3QpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2xpdmVfc2VsZnRlc3RzLmgKaW5kZXggNmRhZjY1OTllYzc5Li4xYTZhYmNmZmNlODEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRl c3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxm dGVzdHMuaApAQCAtMTYsNiArMTYsNyBAQCBzZWxmdGVzdChndF9lbmdpbmVzLCBpbnRlbF9lbmdp bmVfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChndF90aW1lbGluZXMsIGludGVsX3RpbWVsaW5l X2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoZ3RfY29udGV4dHMsIGludGVsX2NvbnRleHRfbGl2 ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChndF9scmMsIGludGVsX2xyY19saXZlX3NlbGZ0ZXN0cykK K3NlbGZ0ZXN0KGd0X21vY3MsIGludGVsX21vY3NfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChn dF9wbSwgaW50ZWxfZ3RfcG1fbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChyZXF1ZXN0cywgaTkx NV9yZXF1ZXN0X2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoYWN0aXZlLCBpOTE1X2FjdGl2ZV9s aXZlX3NlbGZ0ZXN0cykKLS0gCjIuMjQuMC5yYzAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==