From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 23/33] drm/i915: Use VMA as the primary tracker for semaphore page Date: Sun, 7 Aug 2016 15:45:31 +0100 Message-ID: <1470581141-14432-24-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-1-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 2529A6E2FF for ; Sun, 7 Aug 2016 14:46:15 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id i5so11073373wmg.2 for ; Sun, 07 Aug 2016 07:46:15 -0700 (PDT) In-Reply-To: <1470581141-14432-1-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICA0ICstLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgIHwgMTQgKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDU4ICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDQgKy0t CiA1IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMDliMWQwNWQwMDNhLi5jZjhhOGRmMDdi ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0zMTQyLDcgKzMxNDIsNyBA QCBzdGF0aWMgaW50IGk5MTVfc2VtYXBob3JlX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKIAkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJCXVpbnQ2NF90ICpzZXFubzsKIAot CQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGRldl9wcml2LT5zZW1hcGhvcmVfb2Jq LCAwKTsKKwkJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShkZXZfcHJpdi0+c2VtYXBo b3JlLT5vYmosIDApOwogCiAJCXNlcW5vID0gKHVpbnQ2NF90ICopa21hcF9hdG9taWMocGFnZSk7 CiAJCWZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKaW5kZXggMTQzYjQyYjY1NDVlLi40ZmFlMDY1OTk0MWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtNTEwLDcgKzUxMCw3IEBAIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZSB7CiAJdTY0IGZlbmNlW0k5MTVfTUFYX05VTV9GRU5DRVNdOwogCXN0cnVjdCBpbnRlbF9v dmVybGF5X2Vycm9yX3N0YXRlICpvdmVybGF5OwogCXN0cnVjdCBpbnRlbF9kaXNwbGF5X2Vycm9y X3N0YXRlICpkaXNwbGF5OwotCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKnNlbWFwaG9y ZV9vYmo7CisJc3RydWN0IGRybV9pOTE1X2Vycm9yX29iamVjdCAqc2VtYXBob3JlOwogCiAJc3Ry dWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSB7CiAJCWludCBlbmdpbmVfaWQ7CkBAIC0xNzU0LDcg KzE3NTQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IHBjaV9kZXYgKmJy aWRnZV9kZXY7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtlcm5lbF9jb250ZXh0OwogCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOwotCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpzZW1hcGhvcmVfb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqc2Vt YXBob3JlOwogCXUzMiBuZXh0X3NlcW5vOwogCiAJc3RydWN0IGRybV9kbWFfaGFuZGxlICpzdGF0 dXNfcGFnZV9kbWFoOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggMmQ5 M2FmMGJiNzkzLi41ZTllMWNmYTExMGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwpAQCAtNTMwLDcgKzUzMCw3IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQl9CiAJfQogCi0JaWYgKChvYmogPSBl cnJvci0+c2VtYXBob3JlX29iaikpIHsKKwlpZiAoKG9iaiA9IGVycm9yLT5zZW1hcGhvcmUpKSB7 CiAJCWVycl9wcmludGYobSwgIlNlbWFwaG9yZSBwYWdlID0gMHglMDh4XG4iLAogCQkJICAgbG93 ZXJfMzJfYml0cyhvYmotPmd0dF9vZmZzZXQpKTsKIAkJZm9yIChlbHQgPSAwOyBlbHQgPCBQQUdF X1NJWkUvMTY7IGVsdCArPSA0KSB7CkBAIC02MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgaTkx NV9lcnJvcl9zdGF0ZV9mcmVlKHN0cnVjdCBrcmVmICplcnJvcl9yZWYpCiAJCWtmcmVlKGVlLT53 YWl0ZXJzKTsKIAl9CiAKLQlpOTE1X2Vycm9yX29iamVjdF9mcmVlKGVycm9yLT5zZW1hcGhvcmVf b2JqKTsKKwlpOTE1X2Vycm9yX29iamVjdF9mcmVlKGVycm9yLT5zZW1hcGhvcmUpOwogCiAJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmFjdGl2ZV9ibyk7IGkrKykKIAkJa2ZyZWUo ZXJyb3ItPmFjdGl2ZV9ib1tpXSk7CkBAIC04NTAsNyArODUwLDcgQEAgc3RhdGljIHZvaWQgZ2Vu OF9yZWNvcmRfc2VtYXBob3JlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJy b3IsCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqdG87CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7CiAKLQlpZiAoIWVycm9yLT5zZW1hcGhvcmVfb2JqKQorCWlmICghZXJyb3ItPnNlbWFwaG9y ZSkKIAkJcmV0dXJuOwogCiAJZm9yX2VhY2hfZW5naW5lX2lkKHRvLCBkZXZfcHJpdiwgaWQpIHsK QEAgLTg2Myw3ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3JlY29yZF9zZW1hcGhvcmVfc3Rh dGUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKIAogCQlzaWduYWxfb2Zmc2V0 ID0KIAkJCShHRU44X1NJR05BTF9PRkZTRVQoZW5naW5lLCBpZCkgJiAoUEFHRV9TSVpFIC0gMSkp IC8gNDsKLQkJdG1wID0gZXJyb3ItPnNlbWFwaG9yZV9vYmotPnBhZ2VzWzBdOworCQl0bXAgPSBl cnJvci0+c2VtYXBob3JlLT5wYWdlc1swXTsKIAkJaWR4ID0gaW50ZWxfZW5naW5lX3N5bmNfaW5k ZXgoZW5naW5lLCB0byk7CiAKIAkJZWUtPnNlbWFwaG9yZV9tYm94ZXNbaWR4XSA9IHRtcFtzaWdu YWxfb2Zmc2V0XTsKQEAgLTEwMzUsMTAgKzEwMzUsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1f cmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CiAJaW50IGksIGNvdW50OwogCi0JaWYgKGRl dl9wcml2LT5zZW1hcGhvcmVfb2JqKSB7Ci0JCWVycm9yLT5zZW1hcGhvcmVfb2JqID0KKwlpZiAo ZGV2X3ByaXYtPnNlbWFwaG9yZSkgeworCQllcnJvci0+c2VtYXBob3JlID0KIAkJCWk5MTVfZXJy b3JfZ2d0dF9vYmplY3RfY3JlYXRlKGRldl9wcml2LAotCQkJCQkJICAgICAgZGV2X3ByaXYtPnNl bWFwaG9yZV9vYmopOworCQkJCQkJICAgICAgZGV2X3ByaXYtPnNlbWFwaG9yZS0+b2JqKTsKIAl9 CiAKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggYWYyZDgxYWUzZTdkLi5hZjQ4M2ExZGNh MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTEyNTcsMTIg KzEyNTcsMTQgQEAgc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIHN0YXRpYyB2b2lkIHJlbmRlcl9yaW5nX2NsZWFudXAoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAotCWlmIChkZXZf cHJpdi0+c2VtYXBob3JlX29iaikgewotCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihkZXZf cHJpdi0+c2VtYXBob3JlX29iaik7Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQoZGV2X3ByaXYtPnNl bWFwaG9yZV9vYmopOwotCQlkZXZfcHJpdi0+c2VtYXBob3JlX29iaiA9IE5VTEw7Ci0JfQorCXZt YSA9IG51bGxpZnkoJmRldl9wcml2LT5zZW1hcGhvcmUpOworCWlmICghdm1hKQorCQlyZXR1cm47 CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCWk5MTVfZ2VtX29iamVjdF9wdXQodm1hLT5vYmop OwogfQogCiBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKQEAgLTIzMjksMTIgKzIzMzEsMTQgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5p dF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubykKIAkJaWYg KEhBU19WRUJPWChkZXZfcHJpdikpCiAJCQlJOTE1X1dSSVRFKFJJTkdfU1lOQ18yKGVuZ2luZS0+ bW1pb19iYXNlKSwgMCk7CiAJfQotCWlmIChkZXZfcHJpdi0+c2VtYXBob3JlX29iaikgewotCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gZGV2X3ByaXYtPnNlbWFwaG9yZV9vYmo7 CisJaWYgKGRldl9wcml2LT5zZW1hcGhvcmUpIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiA9IGRldl9wcml2LT5zZW1hcGhvcmUtPm9iajsKIAkJc3RydWN0IHBhZ2UgKnBhZ2Ug PSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RpcnR5X3BhZ2Uob2JqLCAwKTsKIAkJdm9pZCAqc2VtYXBo b3JlcyA9IGttYXAocGFnZSk7CiAJCW1lbXNldChzZW1hcGhvcmVzICsgR0VOOF9TRU1BUEhPUkVf T0ZGU0VUKGVuZ2luZS0+aWQsIDApLAogCQkgICAgICAgMCwgSTkxNV9OVU1fRU5HSU5FUyAqIGdl bjhfc2VtYXBob3JlX3NlcW5vX3NpemUpOworCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHNlbWFw aG9yZXMgKyBHRU44X1NFTUFQSE9SRV9PRkZTRVQoZW5naW5lLT5pZCwgMCksCisJCQkJICAgICAg IEk5MTVfTlVNX0VOR0lORVMgKiBnZW44X3NlbWFwaG9yZV9zZXFub19zaXplKTsKIAkJa3VubWFw KHBhZ2UpOwogCX0KIAltZW1zZXQoZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFubywgMCwKQEAg LTI1NTYsMzYgKzI1NjAsNDAgQEAgc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogc3RhdGljIHZvaWQgaW50ZWxfcmlu Z19pbml0X3NlbWFwaG9yZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKIAlpbnQgcmV0LCBpOwogCiAJaWYgKCFpOTE1LnNlbWFwaG9y ZXMpCiAJCXJldHVybjsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYgIWRldl9w cml2LT5zZW1hcGhvcmVfb2JqKSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiAh ZGV2X3ByaXYtPnNlbWFwaG9yZSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwogCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlKCZkZXZfcHJpdi0+ZHJtLCA0MDk2KTsKIAkJaWYgKElTX0VSUihvYmopKSB7Ci0JCQlEUk1f RVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzZW1hcGhvcmUgYm8uIERpc2FibGluZyBzZW1hcGhv cmVzXG4iKTsKIAkJCWk5MTUuc2VtYXBob3JlcyA9IDA7Ci0JCX0gZWxzZSB7Ci0JCQlpOTE1X2dl bV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9DQUNIRV9MTEMpOwotCQkJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwKLQkJCQkJCSAgICAgICAwLCAwLCBQ SU5fSElHSCk7Ci0JCQlpZiAocmV0ICE9IDApIHsKLQkJCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9i aik7Ci0JCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcGluIHNlbWFwaG9yZSBiby4gRGlzYWJsaW5n IHNlbWFwaG9yZXNcbiIpOwotCQkJCWk5MTUuc2VtYXBob3JlcyA9IDA7Ci0JCQl9IGVsc2Ugewot CQkJCWRldl9wcml2LT5zZW1hcGhvcmVfb2JqID0gb2JqOwotCQkJfQorCQkJcmV0dXJuOwogCQl9 Ci0JfQogCi0JaWYgKCFpOTE1LnNlbWFwaG9yZXMpCi0JCXJldHVybjsKKwkJdm1hID0gaTkxNV92 bWFfY3JlYXRlKG9iaiwgJmRldl9wcml2LT5nZ3R0LmJhc2UsIE5VTEwpOworCQlpZiAoSVNfRVJS KHZtYSkpIHsKKwkJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwkJCWk5MTUuc2VtYXBob3Jl cyA9IDA7CisJCQlyZXR1cm47CisJCX0KKworCQlyZXQgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAw LCBQSU5fR0xPQkFMIHwgUElOX0hJR0gpOworCQlpZiAocmV0KSB7CisJCQlpOTE1X2dlbV9vYmpl Y3RfcHV0KG9iaik7CisJCQlpOTE1LnNlbWFwaG9yZXMgPSAwOworCQkJcmV0dXJuOworCQl9CisK KwkJZGV2X3ByaXYtPnNlbWFwaG9yZSA9IHZtYTsKKwl9CiAKIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA4KSB7Ci0JCXU2NCBvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZGV2 X3ByaXYtPnNlbWFwaG9yZV9vYmopOworCQl1NjQgb2Zmc2V0ID0gZGV2X3ByaXYtPnNlbWFwaG9y ZS0+bm9kZS5zdGFydDsKIAogCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5n X3N5bmNfdG87CiAJCWVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCA9IGdlbjhfeGNzX3NpZ25hbDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCA5ZTNhYjgxMjk3MzQu LmJhYjMzNjdmODY0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApA QCAtNTcsMTAgKzU3LDEwIEBAIHN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSB7CiAjZGVmaW5l IEdFTjhfU0VNQVBIT1JFX09GRlNFVChfX2Zyb20sIF9fdG8pCQkJICAgICBcCiAJKCgoX19mcm9t KSAqIEk5MTVfTlVNX0VOR0lORVMgICsgKF9fdG8pKSAqIGdlbjhfc2VtYXBob3JlX3NlcW5vX3Np emUpCiAjZGVmaW5lIEdFTjhfU0lHTkFMX09GRlNFVChfX3JpbmcsIHRvKQkJCSAgICAgXAotCShp OTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZGV2X3ByaXYtPnNlbWFwaG9yZV9vYmopICsgXAorCShk ZXZfcHJpdi0+c2VtYXBob3JlLT5ub2RlLnN0YXJ0ICsgXAogCSBHRU44X1NFTUFQSE9SRV9PRkZT RVQoKF9fcmluZyktPmlkLCAodG8pKSkKICNkZWZpbmUgR0VOOF9XQUlUX09GRlNFVChfX3Jpbmcs IGZyb20pCQkJICAgICBcCi0JKGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChkZXZfcHJpdi0+c2Vt YXBob3JlX29iaikgKyBcCisJKGRldl9wcml2LT5zZW1hcGhvcmUtPm5vZGUuc3RhcnQgKyBcCiAJ IEdFTjhfU0VNQVBIT1JFX09GRlNFVChmcm9tLCAoX19yaW5nKS0+aWQpKQogCiBlbnVtIGludGVs X2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIHsKLS0gCjIuOC4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK