From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v9 11/18] drm/virtio: rework virtio_gpu_transfer_to_host_ioctl fencing Date: Thu, 29 Aug 2019 12:32:54 +0200 Message-ID: <20190829103301.3539-12-kraxel@redhat.com> References: <20190829103301.3539-1-kraxel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 849FF6E09C for ; Thu, 29 Aug 2019 10:33:08 +0000 (UTC) In-Reply-To: <20190829103301.3539-1-kraxel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: David Airlie , open list , "open list:VIRTIO GPU DRIVER" , Gerd Hoffmann , gurchetansingh@chromium.org List-Id: dri-devel@lists.freedesktop.org U3dpdGNoIHRvIHRoZSB2aXJ0aW9fZ3B1X2FycmF5XyogaGVscGVyIHdvcmtmbG93LgoKU2lnbmVk LW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5oICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1L2RybS92 aXJ0aW8vdmlydGdwdV9pb2N0bC5jIHwgNTAgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9wbGFuZS5jIHwgMjEgKysrKysrKystLS0KIGRy aXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV92cS5jICAgIHwgIDkgKysrLS0KIDQgZmlsZXMg Y2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3Zp cnRpby92aXJ0Z3B1X2Rydi5oCmluZGV4IGZhNTY4Y2JmZGRkYy4uNGY1NGJmN2MwMmFmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Rydi5oCkBAIC0yNzksMTAgKzI3OSwxMCBAQCB2b2lk IHZpcnRpb19ncHVfY21kX2NyZWF0ZV9yZXNvdXJjZShzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2Ug KnZnZGV2LAogdm9pZCB2aXJ0aW9fZ3B1X2NtZF91bnJlZl9yZXNvdXJjZShzdHJ1Y3QgdmlydGlv X2dwdV9kZXZpY2UgKnZnZGV2LAogCQkJCSAgIHVpbnQzMl90IHJlc291cmNlX2lkKTsKIHZvaWQg dmlydGlvX2dwdV9jbWRfdHJhbnNmZXJfdG9faG9zdF8yZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZp Y2UgKnZnZGV2LAotCQkJCQlzdHJ1Y3QgdmlydGlvX2dwdV9vYmplY3QgKmJvLAogCQkJCQl1aW50 NjRfdCBvZmZzZXQsCiAJCQkJCV9fbGUzMiB3aWR0aCwgX19sZTMyIGhlaWdodCwKIAkJCQkJX19s ZTMyIHgsIF9fbGUzMiB5LAorCQkJCQlzdHJ1Y3QgdmlydGlvX2dwdV9vYmplY3RfYXJyYXkgKm9i anMsCiAJCQkJCXN0cnVjdCB2aXJ0aW9fZ3B1X2ZlbmNlICpmZW5jZSk7CiB2b2lkIHZpcnRpb19n cHVfY21kX3Jlc291cmNlX2ZsdXNoKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsCiAJ CQkJICAgdWludDMyX3QgcmVzb3VyY2VfaWQsCkBAIC0zMjksMTAgKzMyOSwxMCBAQCB2b2lkIHZp cnRpb19ncHVfY21kX3RyYW5zZmVyX2Zyb21faG9zdF8zZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZp Y2UgKnZnZGV2LAogCQkJCQkgIHN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdF9hcnJheSAqb2JqcywK IAkJCQkJICBzdHJ1Y3QgdmlydGlvX2dwdV9mZW5jZSAqZmVuY2UpOwogdm9pZCB2aXJ0aW9fZ3B1 X2NtZF90cmFuc2Zlcl90b19ob3N0XzNkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYs Ci0JCQkJCXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdCAqYm8sCiAJCQkJCXVpbnQzMl90IGN0eF9p ZCwKIAkJCQkJdWludDY0X3Qgb2Zmc2V0LCB1aW50MzJfdCBsZXZlbCwKIAkJCQkJc3RydWN0IHZp cnRpb19ncHVfYm94ICpib3gsCisJCQkJCXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdF9hcnJheSAq b2JqcywKIAkJCQkJc3RydWN0IHZpcnRpb19ncHVfZmVuY2UgKmZlbmNlKTsKIHZvaWQKIHZpcnRp b19ncHVfY21kX3Jlc291cmNlX2NyZWF0ZV8zZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZn ZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYwppbmRleCBmMjEzM2QzNzFh YWEuLjY3N2Q4NDRkODhiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0 Z3B1X2lvY3RsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMK QEAgLTM4Myw1MiArMzgzLDQ0IEBAIHN0YXRpYyBpbnQgdmlydGlvX2dwdV90cmFuc2Zlcl90b19o b3N0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJc3RydWN0IHZp cnRpb19ncHVfZGV2aWNlICp2Z2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IHZpcnRp b19ncHVfZnByaXYgKnZmcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBkcm1fdmly dGdwdV8zZF90cmFuc2Zlcl90b19ob3N0ICphcmdzID0gZGF0YTsKLQlzdHJ1Y3QgdHRtX29wZXJh dGlvbl9jdHggY3R4ID0geyB0cnVlLCBmYWxzZSB9OwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAq Z29iaiA9IE5VTEw7Ci0Jc3RydWN0IHZpcnRpb19ncHVfb2JqZWN0ICpxb2JqID0gTlVMTDsKKwlz dHJ1Y3QgdmlydGlvX2dwdV9vYmplY3RfYXJyYXkgKm9ianM7CiAJc3RydWN0IHZpcnRpb19ncHVf ZmVuY2UgKmZlbmNlOwogCXN0cnVjdCB2aXJ0aW9fZ3B1X2JveCBib3g7CiAJaW50IHJldDsKIAl1 MzIgb2Zmc2V0ID0gYXJncy0+b2Zmc2V0OwogCi0JZ29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1 cChmaWxlLCBhcmdzLT5ib19oYW5kbGUpOwotCWlmIChnb2JqID09IE5VTEwpCisJb2JqcyA9IHZp cnRpb19ncHVfYXJyYXlfZnJvbV9oYW5kbGVzKGZpbGUsICZhcmdzLT5ib19oYW5kbGUsIDEpOwor CWlmIChvYmpzID09IE5VTEwpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JcW9iaiA9IGdlbV90b192 aXJ0aW9fZ3B1X29iaihnb2JqKTsKLQotCXJldCA9IHZpcnRpb19ncHVfb2JqZWN0X3Jlc2VydmUo cW9iaik7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0KLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUo JnFvYmotPnRibywgJnFvYmotPnBsYWNlbWVudCwgJmN0eCk7Ci0JaWYgKHVubGlrZWx5KHJldCkp Ci0JCWdvdG8gb3V0X3VucmVzOwotCiAJY29udmVydF90b19od19ib3goJmJveCwgJmFyZ3MtPmJv eCk7CiAJaWYgKCF2Z2Rldi0+aGFzX3ZpcmdsXzNkKSB7CiAJCXZpcnRpb19ncHVfY21kX3RyYW5z ZmVyX3RvX2hvc3RfMmQKLQkJCSh2Z2RldiwgcW9iaiwgb2Zmc2V0LAotCQkJIGJveC53LCBib3gu aCwgYm94LngsIGJveC55LCBOVUxMKTsKKwkJCSh2Z2Rldiwgb2Zmc2V0LAorCQkJIGJveC53LCBi b3guaCwgYm94LngsIGJveC55LAorCQkJIG9ianMsIE5VTEwpOwogCX0gZWxzZSB7CisJCXJldCA9 IHZpcnRpb19ncHVfYXJyYXlfbG9ja19yZXN2KG9ianMpOworCQlpZiAocmV0ICE9IDApCisJCQln b3RvIGVycl9wdXRfZnJlZTsKKworCQlyZXQgPSAtRU5PTUVNOwogCQlmZW5jZSA9IHZpcnRpb19n cHVfZmVuY2VfYWxsb2ModmdkZXYpOwotCQlpZiAoIWZlbmNlKSB7Ci0JCQlyZXQgPSAtRU5PTUVN OwotCQkJZ290byBvdXRfdW5yZXM7Ci0JCX0KKwkJaWYgKCFmZW5jZSkKKwkJCWdvdG8gZXJyX3Vu bG9jazsKKwogCQl2aXJ0aW9fZ3B1X2NtZF90cmFuc2Zlcl90b19ob3N0XzNkCi0JCQkodmdkZXYs IHFvYmosCisJCQkodmdkZXYsCiAJCQkgdmZwcml2ID8gdmZwcml2LT5jdHhfaWQgOiAwLCBvZmZz ZXQsCi0JCQkgYXJncy0+bGV2ZWwsICZib3gsIGZlbmNlKTsKLQkJZG1hX3Jlc3ZfYWRkX2V4Y2xf ZmVuY2UocW9iai0+dGJvLmJhc2UucmVzdiwKLQkJCQkJCSAgJmZlbmNlLT5mKTsKKwkJCSBhcmdz LT5sZXZlbCwgJmJveCwgb2JqcywgZmVuY2UpOwogCQlkbWFfZmVuY2VfcHV0KCZmZW5jZS0+Zik7 CiAJfQorCXJldHVybiAwOwogCi1vdXRfdW5yZXM6Ci0JdmlydGlvX2dwdV9vYmplY3RfdW5yZXNl cnZlKHFvYmopOwotb3V0OgotCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChnb2JqKTsKK2Vy cl91bmxvY2s6CisJdmlydGlvX2dwdV9hcnJheV91bmxvY2tfcmVzdihvYmpzKTsKK2Vycl9wdXRf ZnJlZToKKwl2aXJ0aW9fZ3B1X2FycmF5X3B1dF9mcmVlKG9ianMpOwogCXJldHVybiByZXQ7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9wbGFuZS5jIGIv ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X3BsYW5lLmMKaW5kZXggZjIzNjIyYjEyNjI5 Li5mNGI3MzYwMjgyY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdw dV9wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9wbGFuZS5jCkBA IC0xMjQsMTIgKzEyNCwxOSBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fZ3B1X3ByaW1hcnlfcGxhbmVf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlibyA9IGdlbV90b192aXJ0aW9fZ3B1 X29iaih2Z2ZiLT5iYXNlLm9ialswXSk7CiAJCWhhbmRsZSA9IGJvLT5od19yZXNfaGFuZGxlOwog CQlpZiAoYm8tPmR1bWIpIHsKKwkJCXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdF9hcnJheSAqb2Jq czsKKworCQkJb2JqcyA9IHZpcnRpb19ncHVfYXJyYXlfYWxsb2MoMSk7CisJCQlpZiAoIW9ianMp CisJCQkJcmV0dXJuOworCQkJdmlydGlvX2dwdV9hcnJheV9hZGRfb2JqKG9ianMsIHZnZmItPmJh c2Uub2JqWzBdKTsKIAkJCXZpcnRpb19ncHVfY21kX3RyYW5zZmVyX3RvX2hvc3RfMmQKLQkJCQko dmdkZXYsIGJvLCAwLAorCQkJCSh2Z2RldiwgMCwKIAkJCQkgY3B1X3RvX2xlMzIocGxhbmUtPnN0 YXRlLT5zcmNfdyA+PiAxNiksCiAJCQkJIGNwdV90b19sZTMyKHBsYW5lLT5zdGF0ZS0+c3JjX2gg Pj4gMTYpLAogCQkJCSBjcHVfdG9fbGUzMihwbGFuZS0+c3RhdGUtPnNyY194ID4+IDE2KSwKLQkJ CQkgY3B1X3RvX2xlMzIocGxhbmUtPnN0YXRlLT5zcmNfeSA+PiAxNiksIE5VTEwpOworCQkJCSBj cHVfdG9fbGUzMihwbGFuZS0+c3RhdGUtPnNyY195ID4+IDE2KSwKKwkJCQkgb2JqcywgTlVMTCk7 CiAJCX0KIAl9IGVsc2UgewogCQloYW5kbGUgPSAwOwpAQCAtMjE5LDExICsyMjYsMTcgQEAgc3Rh dGljIHZvaWQgdmlydGlvX2dwdV9jdXJzb3JfcGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCiAJaWYgKGJvICYmIGJvLT5kdW1iICYmIChwbGFuZS0+c3RhdGUtPmZiICE9IG9s ZF9zdGF0ZS0+ZmIpKSB7CiAJCS8qIG5ldyBjdXJzb3IgLS0gdXBkYXRlICYgd2FpdCAqLworCQlz dHJ1Y3QgdmlydGlvX2dwdV9vYmplY3RfYXJyYXkgKm9ianM7CisKKwkJb2JqcyA9IHZpcnRpb19n cHVfYXJyYXlfYWxsb2MoMSk7CisJCWlmICghb2JqcykKKwkJCXJldHVybjsKKwkJdmlydGlvX2dw dV9hcnJheV9hZGRfb2JqKG9ianMsIHZnZmItPmJhc2Uub2JqWzBdKTsKIAkJdmlydGlvX2dwdV9j bWRfdHJhbnNmZXJfdG9faG9zdF8yZAotCQkJKHZnZGV2LCBibywgMCwKKwkJCSh2Z2RldiwgMCwK IAkJCSBjcHVfdG9fbGUzMihwbGFuZS0+c3RhdGUtPmNydGNfdyksCiAJCQkgY3B1X3RvX2xlMzIo cGxhbmUtPnN0YXRlLT5jcnRjX2gpLAotCQkJIDAsIDAsIHZnZmItPmZlbmNlKTsKKwkJCSAwLCAw LCBvYmpzLCB2Z2ZiLT5mZW5jZSk7CiAJCWRtYV9mZW5jZV93YWl0KCZ2Z2ZiLT5mZW5jZS0+Ziwg dHJ1ZSk7CiAJCWRtYV9mZW5jZV9wdXQoJnZnZmItPmZlbmNlLT5mKTsKIAkJdmdmYi0+ZmVuY2Ug PSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X3ZxLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfdnEuYwppbmRleCBhOGYxZGJmMTAyMDYu LjIwNzE0MDk0ZGRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1 X3ZxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X3ZxLmMKQEAgLTQ5MSwx MiArNDkxLDEzIEBAIHZvaWQgdmlydGlvX2dwdV9jbWRfcmVzb3VyY2VfZmx1c2goc3RydWN0IHZp cnRpb19ncHVfZGV2aWNlICp2Z2RldiwKIH0KIAogdm9pZCB2aXJ0aW9fZ3B1X2NtZF90cmFuc2Zl cl90b19ob3N0XzJkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsCi0JCQkJCXN0cnVj dCB2aXJ0aW9fZ3B1X29iamVjdCAqYm8sCiAJCQkJCXVpbnQ2NF90IG9mZnNldCwKIAkJCQkJX19s ZTMyIHdpZHRoLCBfX2xlMzIgaGVpZ2h0LAogCQkJCQlfX2xlMzIgeCwgX19sZTMyIHksCisJCQkJ CXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdF9hcnJheSAqb2JqcywKIAkJCQkJc3RydWN0IHZpcnRp b19ncHVfZmVuY2UgKmZlbmNlKQogeworCXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdCAqYm8gPSBn ZW1fdG9fdmlydGlvX2dwdV9vYmoob2Jqcy0+b2Jqc1swXSk7CiAJc3RydWN0IHZpcnRpb19ncHVf dHJhbnNmZXJfdG9faG9zdF8yZCAqY21kX3A7CiAJc3RydWN0IHZpcnRpb19ncHVfdmJ1ZmZlciAq dmJ1ZjsKIAlib29sIHVzZV9kbWFfYXBpID0gIXZpcnRpb19oYXNfaW9tbXVfcXVpcmsodmdkZXYt PnZkZXYpOwpAQCAtNTA4LDYgKzUwOSw3IEBAIHZvaWQgdmlydGlvX2dwdV9jbWRfdHJhbnNmZXJf dG9faG9zdF8yZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LAogCiAJY21kX3AgPSB2 aXJ0aW9fZ3B1X2FsbG9jX2NtZCh2Z2RldiwgJnZidWYsIHNpemVvZigqY21kX3ApKTsKIAltZW1z ZXQoY21kX3AsIDAsIHNpemVvZigqY21kX3ApKTsKKwl2YnVmLT5vYmpzID0gb2JqczsKIAogCWNt ZF9wLT5oZHIudHlwZSA9IGNwdV90b19sZTMyKFZJUlRJT19HUFVfQ01EX1RSQU5TRkVSX1RPX0hP U1RfMkQpOwogCWNtZF9wLT5yZXNvdXJjZV9pZCA9IGNwdV90b19sZTMyKGJvLT5od19yZXNfaGFu ZGxlKTsKQEAgLTkwMCwxMiArOTAyLDEzIEBAIHZpcnRpb19ncHVfY21kX3Jlc291cmNlX2NyZWF0 ZV8zZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LAogfQogCiB2b2lkIHZpcnRpb19n cHVfY21kX3RyYW5zZmVyX3RvX2hvc3RfM2Qoc3RydWN0IHZpcnRpb19ncHVfZGV2aWNlICp2Z2Rl diwKLQkJCQkJc3RydWN0IHZpcnRpb19ncHVfb2JqZWN0ICpibywKIAkJCQkJdWludDMyX3QgY3R4 X2lkLAogCQkJCQl1aW50NjRfdCBvZmZzZXQsIHVpbnQzMl90IGxldmVsLAogCQkJCQlzdHJ1Y3Qg dmlydGlvX2dwdV9ib3ggKmJveCwKKwkJCQkJc3RydWN0IHZpcnRpb19ncHVfb2JqZWN0X2FycmF5 ICpvYmpzLAogCQkJCQlzdHJ1Y3QgdmlydGlvX2dwdV9mZW5jZSAqZmVuY2UpCiB7CisJc3RydWN0 IHZpcnRpb19ncHVfb2JqZWN0ICpibyA9IGdlbV90b192aXJ0aW9fZ3B1X29iaihvYmpzLT5vYmpz WzBdKTsKIAlzdHJ1Y3QgdmlydGlvX2dwdV90cmFuc2Zlcl9ob3N0XzNkICpjbWRfcDsKIAlzdHJ1 Y3QgdmlydGlvX2dwdV92YnVmZmVyICp2YnVmOwogCWJvb2wgdXNlX2RtYV9hcGkgPSAhdmlydGlv X2hhc19pb21tdV9xdWlyayh2Z2Rldi0+dmRldik7CkBAIC05MTgsNiArOTIxLDggQEAgdm9pZCB2 aXJ0aW9fZ3B1X2NtZF90cmFuc2Zlcl90b19ob3N0XzNkKHN0cnVjdCB2aXJ0aW9fZ3B1X2Rldmlj ZSAqdmdkZXYsCiAJY21kX3AgPSB2aXJ0aW9fZ3B1X2FsbG9jX2NtZCh2Z2RldiwgJnZidWYsIHNp emVvZigqY21kX3ApKTsKIAltZW1zZXQoY21kX3AsIDAsIHNpemVvZigqY21kX3ApKTsKIAorCXZi dWYtPm9ianMgPSBvYmpzOworCiAJY21kX3AtPmhkci50eXBlID0gY3B1X3RvX2xlMzIoVklSVElP X0dQVV9DTURfVFJBTlNGRVJfVE9fSE9TVF8zRCk7CiAJY21kX3AtPmhkci5jdHhfaWQgPSBjcHVf dG9fbGUzMihjdHhfaWQpOwogCWNtZF9wLT5yZXNvdXJjZV9pZCA9IGNwdV90b19sZTMyKGJvLT5o d19yZXNfaGFuZGxlKTsKLS0gCjIuMTguMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVs