From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v4 19/19] drm/hisilicon: Convert hibmc-drm driver to VRAM MM Date: Mon, 6 May 2019 10:26:49 +0200 Message-ID: <20190506082649.942-20-tzimmermann@suse.de> References: <20190506082649.942-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id B7404896EC for ; Mon, 6 May 2019 08:27:03 +0000 (UTC) In-Reply-To: <20190506082649.942-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: daniel@ffwll.ch, airlied@linux.ie, kraxel@redhat.com, christian.koenig@amd.com, ray.huang@amd.com, hdegoede@redhat.com, noralf@tronnes.org, sam@ravnborg.org, z.liuxinliang@hisilicon.com, zourongrong@gmail.com, kong.kongxinwei@hisilicon.com, puck.chen@hisilicon.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org List-Id: dri-devel@lists.freedesktop.org VGhlIGRhdGEgc3RydWN0dXJlIHxzdHJ1Y3QgZHJtX3ZyYW1fbW18IGFuZCBpdHMgaGVscGVycyBy ZXBsYWNlIGhpYm1jJ3MKVFRNLWJhc2VkIG1lbW9yeSBtYW5hZ2VyLiBJdCdzIHRoZSBzYW1lIGlt cGxlbWVudGF0aW9uOyBleGNlcHQgZm9yIHRoZQp0eXBlIG5hbWVzLgoKdjQ6CgkqIGRvbid0IHNl bGVjdCBEUk1fVFRNIG9yIERSTV9WUkFNX01NX0hFTFBFUgp2MzoKCSogdXNlIGRybV9nZW1fdnJh bV9tbV9mdW5jcwoJKiBjb252ZXJ0IGRyaXZlciB0byBkcm1fZGV2aWNlLWJhc2VkIGluc3RhbmNl CnYyOgoJKiBpbXBsZW1lbnQgaGlibWNfbW1hcCgpIHdpdGggZHJtX3ZyYW1fbW1fbW1hcCgpCgpT aWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL0tjb25maWcgICAgICAgfCAgIDEgLQog Li4uL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuYyAgIHwgICA4ICstCiAu Li4vZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oICAgfCAgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfdHRtLmMgICB8IDEzOSArKy0tLS0t LS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTQ0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZwppbmRleCAwNGQw YmM2ODU1NjAuLmMzNmVjMDNmM2Q5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9oaWJtYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMv S2NvbmZpZwpAQCAtMiw3ICsyLDYgQEAgY29uZmlnIERSTV9ISVNJX0hJQk1DCiAJdHJpc3RhdGUg IkRSTSBTdXBwb3J0IGZvciBIaXNpbGljb24gSGlibWMiCiAJZGVwZW5kcyBvbiBEUk0gJiYgUENJ ICYmIE1NVQogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgotCXNlbGVjdCBEUk1fVFRNCiAJc2VsZWN0 IERSTV9WUkFNX0hFTFBFUgogCiAJaGVscApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hp c2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29u L2hpYm1jL2hpYm1jX2RybV9kcnYuYwppbmRleCA3MDI3YTFhMDU3NjguLjcyNDM2MDNkZTI2MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMK QEAgLTI3LDE0ICsyNyw4IEBACiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGhpYm1jX2ZvcHMgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAotCS5vcGVuCQk9IGRybV9v cGVuLAotCS5yZWxlYXNlCT0gZHJtX3JlbGVhc2UsCi0JLnVubG9ja2VkX2lvY3RsCT0gZHJtX2lv Y3RsLAotCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAotCS5tbWFwCQk9IGhpYm1j X21tYXAsCi0JLnBvbGwJCT0gZHJtX3BvbGwsCi0JLnJlYWQJCT0gZHJtX3JlYWQsCiAJLmxsc2Vl awkJPSBub19sbHNlZWssCisJRFJNX1ZSQU1fTU1fRklMRV9PUEVSQVRJT05TCiB9OwogCiBzdGF0 aWMgaXJxcmV0dXJuX3QgaGlibWNfZHJtX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICphcmcpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oCmluZGV4 IDZiMzQzMGZjNTE0OC4uMzk2NzY5M2VjYmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuaApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUg PGRybS9kcm1fZmJfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KICNpbmNsdWRl IDxkcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oPgotI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2Ry aXZlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fdnJhbV9tbV9oZWxwZXIuaD4KIAogc3RydWN0IGhp Ym1jX2ZyYW1lYnVmZmVyIHsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiOwpAQCAtNDksMTMg KzQ5LDggQEAgc3RydWN0IGhpYm1jX2RybV9wcml2YXRlIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAg KmRldjsKIAlib29sIG1vZGVfY29uZmlnX2luaXRpYWxpemVkOwogCi0JLyogdHRtICovCi0Jc3Ry dWN0IHR0bV9ib19kZXZpY2UgYmRldjsKLQlib29sIGluaXRpYWxpemVkOwotCiAJLyogZmJkZXYg Ki8KIAlzdHJ1Y3QgaGlibWNfZmJkZXYgKmZiZGV2OwotCWJvb2wgbW1faW5pdGVkOwogfTsKIAog I2RlZmluZSB0b19oaWJtY19mcmFtZWJ1ZmZlcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGhp Ym1jX2ZyYW1lYnVmZmVyLCBmYikKQEAgLTgxLDcgKzc2LDYgQEAgaW50IGhpYm1jX21tX2luaXQo c3RydWN0IGhpYm1jX2RybV9wcml2YXRlICpoaWJtYyk7CiB2b2lkIGhpYm1jX21tX2Zpbmkoc3Ry dWN0IGhpYm1jX2RybV9wcml2YXRlICpoaWJtYyk7CiBpbnQgaGlibWNfZHVtYl9jcmVhdGUoc3Ry dWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1 Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOwotaW50IGhpYm1jX21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIAogZXh0ZXJuIGNvbnN0IHN0 cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgaGlibWNfbW9kZV9mdW5jczsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY190dG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfdHRtLmMKaW5kZXggZmJmOGViMDQ4ZWJjLi41 MmZiYThjYjhkZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMv aGlibWNfdHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY190 dG0uYwpAQCAtMTcsMTU3ICsxNywzOCBAQAogICovCiAKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19oZWxwZXIuaD4KLSNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmg+CiAKICNpbmNs dWRlICJoaWJtY19kcm1fZHJ2LmgiCiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGhpYm1jX2RybV9w cml2YXRlICoKLWhpYm1jX2JkZXYoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkKQotewotCXJldHVy biBjb250YWluZXJfb2YoYmQsIHN0cnVjdCBoaWJtY19kcm1fcHJpdmF0ZSwgYmRldik7Ci19Ci0K LXN0YXRpYyBpbnQKLWhpYm1jX2JvX2luaXRfbWVtX3R5cGUoc3RydWN0IHR0bV9ib19kZXZpY2Ug KmJkZXYsIHUzMiB0eXBlLAotCQkgICAgICAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICpt YW4pCi17Ci0Jc3dpdGNoICh0eXBlKSB7Ci0JY2FzZSBUVE1fUExfU1lTVEVNOgotCQltYW4tPmZs YWdzID0gVFRNX01FTVRZUEVfRkxBR19NQVBQQUJMRTsKLQkJbWFuLT5hdmFpbGFibGVfY2FjaGlu ZyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Ci0JCW1hbi0+ZGVmYXVsdF9jYWNoaW5nID0gVFRNX1BM X0ZMQUdfQ0FDSEVEOwotCQlicmVhazsKLQljYXNlIFRUTV9QTF9WUkFNOgotCQltYW4tPmZ1bmMg PSAmdHRtX2JvX21hbmFnZXJfZnVuYzsKLQkJbWFuLT5mbGFncyA9IFRUTV9NRU1UWVBFX0ZMQUdf RklYRUQgfAotCQkJVFRNX01FTVRZUEVfRkxBR19NQVBQQUJMRTsKLQkJbWFuLT5hdmFpbGFibGVf Y2FjaGluZyA9IFRUTV9QTF9GTEFHX1VOQ0FDSEVEIHwKLQkJCVRUTV9QTF9GTEFHX1dDOwotCQlt YW4tPmRlZmF1bHRfY2FjaGluZyA9IFRUTV9QTF9GTEFHX1dDOwotCQlicmVhazsKLQlkZWZhdWx0 OgotCQlEUk1fRVJST1IoInVuc3VwcG9ydGVkIG1lbW9yeSB0eXBlICV1XG4iLCB0eXBlKTsKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0JfQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGhpYm1jX3R0 bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKLQkJCQkgICAgc3Ry dWN0IHR0bV9tZW1fcmVnICptZW0pCi17Ci0Jc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICpt YW4gPSAmYmRldi0+bWFuW21lbS0+bWVtX3R5cGVdOwotCXN0cnVjdCBoaWJtY19kcm1fcHJpdmF0 ZSAqaGlibWMgPSBoaWJtY19iZGV2KGJkZXYpOwotCi0JbWVtLT5idXMuYWRkciA9IE5VTEw7Ci0J bWVtLT5idXMub2Zmc2V0ID0gMDsKLQltZW0tPmJ1cy5zaXplID0gbWVtLT5udW1fcGFnZXMgPDwg UEFHRV9TSElGVDsKLQltZW0tPmJ1cy5iYXNlID0gMDsKLQltZW0tPmJ1cy5pc19pb21lbSA9IGZh bHNlOwotCWlmICghKG1hbi0+ZmxhZ3MgJiBUVE1fTUVNVFlQRV9GTEFHX01BUFBBQkxFKSkKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0Jc3dpdGNoIChtZW0tPm1lbV90eXBlKSB7Ci0JY2FzZSBUVE1fUExf U1lTVEVNOgotCQkvKiBzeXN0ZW0gbWVtb3J5ICovCi0JCXJldHVybiAwOwotCWNhc2UgVFRNX1BM X1ZSQU06Ci0JCW1lbS0+YnVzLm9mZnNldCA9IG1lbS0+c3RhcnQgPDwgUEFHRV9TSElGVDsKLQkJ bWVtLT5idXMuYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChoaWJtYy0+ZGV2LT5wZGV2LCAwKTsK LQkJbWVtLT5idXMuaXNfaW9tZW0gPSB0cnVlOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1 cm4gLUVJTlZBTDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIGhpYm1jX3R0bV9i YWNrZW5kX2Rlc3Ryb3koc3RydWN0IHR0bV90dCAqdHQpCi17Ci0JdHRtX3R0X2ZpbmkodHQpOwot CWtmcmVlKHR0KTsKLX0KLQotc3RhdGljIHN0cnVjdCB0dG1fYmFja2VuZF9mdW5jIGhpYm1jX3R0 X2JhY2tlbmRfZnVuYyA9IHsKLQkuZGVzdHJveSA9ICZoaWJtY190dG1fYmFja2VuZF9kZXN0cm95 LAotfTsKLQotc3RhdGljIHN0cnVjdCB0dG1fdHQgKmhpYm1jX3R0bV90dF9jcmVhdGUoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywKLQkJCQkJICB1MzIgcGFnZV9mbGFncykKLXsKLQlzdHJ1 Y3QgdHRtX3R0ICp0dDsKLQlpbnQgcmV0OwotCi0JdHQgPSBremFsbG9jKHNpemVvZigqdHQpLCBH RlBfS0VSTkVMKTsKLQlpZiAoIXR0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRl IHR0bV90dFxuIik7Ci0JCXJldHVybiBOVUxMOwotCX0KLQl0dC0+ZnVuYyA9ICZoaWJtY190dF9i YWNrZW5kX2Z1bmM7Ci0JcmV0ID0gdHRtX3R0X2luaXQodHQsIGJvLCBwYWdlX2ZsYWdzKTsKLQlp ZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGluaXRpYWxpemUgdHRtX3R0OiAlZFxu IiwgcmV0KTsKLQkJa2ZyZWUodHQpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JcmV0dXJuIHR0Owot fQotCi1zdHJ1Y3QgdHRtX2JvX2RyaXZlciBoaWJtY19ib19kcml2ZXIgPSB7Ci0JLnR0bV90dF9j cmVhdGUJCT0gaGlibWNfdHRtX3R0X2NyZWF0ZSwKLQkuaW5pdF9tZW1fdHlwZQkJPSBoaWJtY19i b19pbml0X21lbV90eXBlLAotCS5ldmljdF9mbGFncwkJPSBkcm1fZ2VtX3ZyYW1fYm9fZHJpdmVy X2V2aWN0X2ZsYWdzLAotCS5tb3ZlCQkJPSBOVUxMLAotCS52ZXJpZnlfYWNjZXNzCQk9IGRybV9n ZW1fdnJhbV9ib19kcml2ZXJfdmVyaWZ5X2FjY2VzcywKLQkuaW9fbWVtX3Jlc2VydmUJCT0gJmhp Ym1jX3R0bV9pb19tZW1fcmVzZXJ2ZSwKLQkuaW9fbWVtX2ZyZWUJCT0gTlVMTCwKLX07Ci0KIGlu dCBoaWJtY19tbV9pbml0KHN0cnVjdCBoaWJtY19kcm1fcHJpdmF0ZSAqaGlibWMpCiB7CisJc3Ry dWN0IGRybV92cmFtX21tICp2bW07CiAJaW50IHJldDsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gaGlibWMtPmRldjsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9ICZoaWJtYy0+YmRl djsKLQotCXJldCA9IHR0bV9ib19kZXZpY2VfaW5pdCgmaGlibWMtPmJkZXYsCi0JCQkJICZoaWJt Y19ib19kcml2ZXIsCi0JCQkJIGRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nLAotCQkJCSB0cnVl KTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiZXJyb3IgaW5pdGlhbGl6aW5nIGJvIGRyaXZl cjogJWRcbiIsIHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQogCi0JcmV0ID0gdHRtX2JvX2luaXRf bW0oYmRldiwgVFRNX1BMX1ZSQU0sCi0JCQkgICAgIGhpYm1jLT5mYl9zaXplID4+IFBBR0VfU0hJ RlQpOwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9SKCJmYWlsZWQgdHRtIFZSQU0gaW5pdDogJWRc biIsIHJldCk7CisJdm1tID0gZHJtX3ZyYW1faGVscGVyX2FsbG9jX21tKGRldiwKKwkJCQkgICAg ICAgcGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCksCisJCQkJICAgICAgIGhpYm1jLT5m Yl9zaXplLCAmZHJtX2dlbV92cmFtX21tX2Z1bmNzKTsKKwlpZiAoSVNfRVJSKHZtbSkpIHsKKwkJ cmV0ID0gUFRSX0VSUih2bW0pOworCQlEUk1fRVJST1IoIkVycm9yIGluaXRpYWxpemluZyBWUkFN IE1NOyAlZFxuIiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQloaWJtYy0+bW1faW5pdGVk ID0gdHJ1ZTsKIAlyZXR1cm4gMDsKIH0KIAogdm9pZCBoaWJtY19tbV9maW5pKHN0cnVjdCBoaWJt Y19kcm1fcHJpdmF0ZSAqaGlibWMpCiB7Ci0JaWYgKCFoaWJtYy0+bW1faW5pdGVkKQorCWlmICgh aGlibWMtPmRldi0+dnJhbV9tbSkKIAkJcmV0dXJuOwogCi0JdHRtX2JvX2RldmljZV9yZWxlYXNl KCZoaWJtYy0+YmRldik7Ci0JaGlibWMtPm1tX2luaXRlZCA9IGZhbHNlOwotfQotCi1pbnQgaGli bWNfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCi17 Ci0Jc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7Ci0Jc3Ry dWN0IGhpYm1jX2RybV9wcml2YXRlICpoaWJtYyA9IGZpbGVfcHJpdi0+bWlub3ItPmRldi0+ZGV2 X3ByaXZhdGU7Ci0KLQlyZXR1cm4gdHRtX2JvX21tYXAoZmlscCwgdm1hLCAmaGlibWMtPmJkZXYp OworCWRybV92cmFtX2hlbHBlcl9yZWxlYXNlX21tKGhpYm1jLT5kZXYpOwogfQogCiBpbnQgaGli bWNfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSwgYm9vbCBpc2tl cm5lbCwKIAkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopCiB7Ci0Jc3RydWN0IGhp Ym1jX2RybV9wcml2YXRlICpoaWJtYyA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9n ZW1fdnJhbV9vYmplY3QgKmdibzsKIAlpbnQgcmV0OwogCkBAIC0xNzcsNyArNTgsNyBAQCBpbnQg aGlibWNfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSwgYm9vbCBp c2tlcm5lbCwKIAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWdibyA9IGRy bV9nZW1fdnJhbV9jcmVhdGUoZGV2LCAmaGlibWMtPmJkZXYsIHNpemUsIDAsIGZhbHNlKTsKKwln Ym8gPSBkcm1fZ2VtX3ZyYW1fY3JlYXRlKGRldiwgJmRldi0+dnJhbV9tbS0+YmRldiwgc2l6ZSwg MCwgZmFsc2UpOwogCWlmIChJU19FUlIoZ2JvKSkgewogCQlyZXQgPSBQVFJfRVJSKGdibyk7CiAJ CWlmIChyZXQgIT0gLUVSRVNUQVJUU1lTKQotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=