From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v3 09/19] drm/ast: Convert AST driver to VRAM MM Date: Mon, 29 Apr 2019 16:43:31 +0200 Message-ID: <20190429144341.12615-10-tzimmermann@suse.de> References: <20190429144341.12615-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 57A468926B for ; Mon, 29 Apr 2019 14:43:51 +0000 (UTC) In-Reply-To: <20190429144341.12615-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, Jerry.Zhang@amd.com, hdegoede@redhat.com, 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 ZXBsYWNlIGFzdCdzClRUTS1iYXNlZCBtZW1vcnkgbWFuYWdlci4gSXQncyB0aGUgc2FtZSBpbXBs ZW1lbnRhdGlvbjsgZXhjZXB0IGZvciB0aGUKdHlwZSBuYW1lcy4KCnYzOgoJKiB1c2UgZHJtX2dl bV92cmFtX21tX2Z1bmNzCgkqIGNvbnZlcnQgZHJpdmVyIHRvIGRybV9kZXZpY2UtYmFzZWQgaW5z dGFuY2UKdjI6CgkqIGltcGxlbWVudCBhc3RfbW1hcCgpIHdpdGggZHJtX3ZyYW1fbW1fbW1hcCgp CgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWcgICAgfCAgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZHJ2LmMgIHwgIDEzICstLS0KIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5oICB8ICAxOCArLS0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIHwgIDEzICst LS0KIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3R0bS5jICB8IDEzNCArKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTY1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZyBi L2RyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZwppbmRleCBkMWQ5MGY4YzdhOGYuLmVjYzljOTA1 YjgxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvS2NvbmZpZwpAQCAtNCw2ICs0LDcgQEAgY29uZmlnIERSTV9BU1QKIAlz ZWxlY3QgRFJNX1RUTQogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgogCXNlbGVjdCBEUk1fR0VNX1ZS QU1fSEVMUEVSCisJc2VsZWN0IERSTV9WUkFNX01NX0hFTFBFUgogCWhlbHAKIAkgU2F5IHllcyBm b3IgZXhwZXJpbWVudGFsIEFTVCBHUFUgZHJpdmVyLiBEbyBub3QgZW5hYmxlCiAJIHRoaXMgZHJp dmVyIHdpdGhvdXQgaGF2aW5nIGEgd29ya2luZyAtbW9kZXNldHRpbmcsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5jCmluZGV4IDY5ZjA1NjI1ZmMyZC4uMzgxMTk5N2U3OGM0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYu YwpAQCAtMjA1LDEzICsyMDUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXN0X3BjaV9k cml2ZXIgPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGFzdF9mb3Bz ID0gewogCS5vd25lciA9IFRISVNfTU9EVUxFLAotCS5vcGVuID0gZHJtX29wZW4sCi0JLnJlbGVh c2UgPSBkcm1fcmVsZWFzZSwKLQkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCi0JLm1tYXAg PSBhc3RfbW1hcCwKLQkucG9sbCA9IGRybV9wb2xsLAotCS5jb21wYXRfaW9jdGwgPSBkcm1fY29t cGF0X2lvY3RsLAotCS5yZWFkID0gZHJtX3JlYWQsCisJRFJNX1ZSQU1fTU1fRklMRV9PUEVSQVRJ T05TCiB9OwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewpAQCAtMjI4LDEw ICsyMjIsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCS5taW5vciA9 IERSSVZFUl9NSU5PUiwKIAkucGF0Y2hsZXZlbCA9IERSSVZFUl9QQVRDSExFVkVMLAogCi0JLmdl bV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGRybV9nZW1fdnJhbV9kcml2ZXJfZ2VtX2ZyZWVfb2Jq ZWN0X3VubG9ja2VkLAotCS5kdW1iX2NyZWF0ZSA9IGFzdF9kdW1iX2NyZWF0ZSwKLQkuZHVtYl9t YXBfb2Zmc2V0ID0gZHJtX2dlbV92cmFtX2RyaXZlcl9kdW1iX21tYXBfb2Zmc2V0LAotCisJRFJN X0dFTV9WUkFNX0RSSVZFUgogfTsKIAogc3RhdGljIGludCBfX2luaXQgYXN0X2luaXQodm9pZCkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZHJ2LmgKaW5kZXggNzEyODM4ZjcyNWRjLi4zMjA5NmExOTFhYWYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X2Rydi5oCkBAIC0zMSwxNSArMzEsMTEgQEAKICNpbmNsdWRlIDxkcm0vZHJtX2Vu Y29kZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgogCi0jaW5jbHVkZSA8ZHJt L3R0bS90dG1fYm9fYXBpLmg+Ci0jaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+Ci0j aW5jbHVkZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+Ci0jaW5jbHVkZSA8ZHJtL3R0bS90dG1f bWVtb3J5Lmg+Ci0jaW5jbHVkZSA8ZHJtL3R0bS90dG1fbW9kdWxlLmg+Ci0KICNpbmNsdWRlIDxk cm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmg+CiAKKyNp bmNsdWRlIDxkcm0vZHJtX3ZyYW1fbW1faGVscGVyLmg+CisKICNpbmNsdWRlIDxsaW51eC9pMmMu aD4KICNpbmNsdWRlIDxsaW51eC9pMmMtYWxnby1iaXQuaD4KIApAQCAtMTA0LDEwICsxMDAsNiBA QCBzdHJ1Y3QgYXN0X3ByaXZhdGUgewogCiAJaW50IGZiX210cnI7CiAKLQlzdHJ1Y3QgewotCQlz dHJ1Y3QgdHRtX2JvX2RldmljZSBiZGV2OwotCX0gdHRtOwotCiAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpjdXJzb3JfY2FjaGU7CiAJdWludDY0X3QgY3Vyc29yX2NhY2hlX2dwdV9hZGRyOwogCS8q IEFjY2VzIHRvIHRoaXMgY2FjaGUgaXMgcHJvdGVjdGVkIGJ5IHRoZSBjcnRjLT5tdXRleCBvZiB0 aGUgb25seSBjcnRjCkBAIC0zMjUsMTAgKzMxNyw2IEBAIHZvaWQgYXN0X2ZiZGV2X3NldF9iYXNl KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1bnNpZ25lZCBsb25nIGdwdV9hZGRyKTsKICNkZWZp bmUgQVNUX01NX0FMSUdOX1NISUZUIDQKICNkZWZpbmUgQVNUX01NX0FMSUdOX01BU0sgKCgxIDw8 IEFTVF9NTV9BTElHTl9TSElGVCkgLSAxKQogCi1leHRlcm4gaW50IGFzdF9kdW1iX2NyZWF0ZShz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCi0JCQkgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJ ICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKLQogaW50IGFzdF9tbV9pbml0 KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KTsKIHZvaWQgYXN0X21tX2Zpbmkoc3RydWN0IGFzdF9w cml2YXRlICphc3QpOwogCkBAIC0zMzYsOCArMzI0LDYgQEAgaW50IGFzdF9nZW1fY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgIHUzMiBzaXplLCBib29sIGlza2VybmVsLAogCQkg ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopOwogCi1pbnQgYXN0X21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKLQogLyogYXN0IHBvc3QgKi8K IHZvaWQgYXN0X2VuYWJsZV92Z2Eoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGFzdF9l bmFibGVfbW1pbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwpp bmRleCA2MWZjN2I4ZWE0NzAuLjRjN2UzMWNiNDVmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwpA QCAtNTkzLDcgKzU5Myw2IEBAIGludCBhc3RfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkgICB1MzIgc2l6ZSwgYm9vbCBpc2tlcm5lbCwKIAkJICAgc3RydWN0IGRybV9nZW1f b2JqZWN0ICoqb2JqKQogewotCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOwogCWludCByZXQ7CiAKQEAg LTYwMyw3ICs2MDIsNyBAQCBpbnQgYXN0X2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWdibyA9IGRybV9nZW1f dnJhbV9jcmVhdGUoZGV2LCAmYXN0LT50dG0uYmRldiwgc2l6ZSwgMCwgZmFsc2UpOworCWdibyA9 IGRybV9nZW1fdnJhbV9jcmVhdGUoZGV2LCAmZGV2LT52cmFtX21tLT5iZGV2LCBzaXplLCAwLCBm YWxzZSk7CiAJaWYgKElTX0VSUihnYm8pKSB7CiAJCXJldCA9IFBUUl9FUlIoZ2JvKTsKIAkJaWYg KHJldCAhPSAtRVJFU1RBUlRTWVMpCkBAIC02MTMsMTMgKzYxMiwzIEBAIGludCBhc3RfZ2VtX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSpvYmogPSAmZ2JvLT5nZW07CiAJcmV0dXJu IDA7CiB9Ci0KLWludCBhc3RfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkg ICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVf ZHVtYiAqYXJncykKLXsKLQlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRldi0+ZGV2X3ByaXZh dGU7Ci0KLQlyZXR1cm4gZHJtX2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1bWIoZmlsZSwgZGV2LCAm YXN0LT50dG0uYmRldiwgMCwKLQkJCQkJICAgICBmYWxzZSwgYXJncyk7Ci19CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X3R0bS5jCmluZGV4IDc5NGViYjc1NWE1ZC4uNzc5YzUzZWZlZThlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90 dG0uYwpAQCAtMjYsMTMxICsyNiwyMSBAQAogICogQXV0aG9yczogRGF2ZSBBaXJsaWUgPGFpcmxp ZWRAcmVkaGF0LmNvbT4KICAqLwogI2luY2x1ZGUgPGRybS9kcm1QLmg+Ci0jaW5jbHVkZSA8ZHJt L3R0bS90dG1fcGFnZV9hbGxvYy5oPgogCiAjaW5jbHVkZSAiYXN0X2Rydi5oIgogCi1zdGF0aWMg aW5saW5lIHN0cnVjdCBhc3RfcHJpdmF0ZSAqCi1hc3RfYmRldihzdHJ1Y3QgdHRtX2JvX2Rldmlj ZSAqYmQpCi17Ci0JcmV0dXJuIGNvbnRhaW5lcl9vZihiZCwgc3RydWN0IGFzdF9wcml2YXRlLCB0 dG0uYmRldik7Ci19Ci0KLXN0YXRpYyBpbnQKLWFzdF9ib19pbml0X21lbV90eXBlKHN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0eXBlLAotCQkgICAgIHN0cnVjdCB0dG1fbWVt X3R5cGVfbWFuYWdlciAqbWFuKQotewotCXN3aXRjaCAodHlwZSkgewotCWNhc2UgVFRNX1BMX1NZ U1RFTToKLQkJbWFuLT5mbGFncyA9IFRUTV9NRU1UWVBFX0ZMQUdfTUFQUEFCTEU7Ci0JCW1hbi0+ YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfTUFTS19DQUNISU5HOwotCQltYW4tPmRlZmF1bHRf Y2FjaGluZyA9IFRUTV9QTF9GTEFHX0NBQ0hFRDsKLQkJYnJlYWs7Ci0JY2FzZSBUVE1fUExfVlJB TToKLQkJbWFuLT5mdW5jID0gJnR0bV9ib19tYW5hZ2VyX2Z1bmM7Ci0JCW1hbi0+ZmxhZ3MgPSBU VE1fTUVNVFlQRV9GTEFHX0ZJWEVEIHwKLQkJCVRUTV9NRU1UWVBFX0ZMQUdfTUFQUEFCTEU7Ci0J CW1hbi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNBQ0hFRCB8Ci0JCQlUVE1f UExfRkxBR19XQzsKLQkJbWFuLT5kZWZhdWx0X2NhY2hpbmcgPSBUVE1fUExfRkxBR19XQzsKLQkJ YnJlYWs7Ci0JZGVmYXVsdDoKLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBtZW1vcnkgdHlwZSAl dVxuIiwgKHVuc2lnbmVkKXR5cGUpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JcmV0dXJuIDA7 Ci19Ci0KLXN0YXRpYyBpbnQgYXN0X3R0bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2Rl dmljZSAqYmRldiwKLQkJCQkgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtKQotewotCXN0cnVjdCB0 dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuID0gJmJkZXYtPm1hblttZW0tPm1lbV90eXBlXTsKLQlz dHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGFzdF9iZGV2KGJkZXYpOwotCi0JbWVtLT5idXMuYWRk ciA9IE5VTEw7Ci0JbWVtLT5idXMub2Zmc2V0ID0gMDsKLQltZW0tPmJ1cy5zaXplID0gbWVtLT5u dW1fcGFnZXMgPDwgUEFHRV9TSElGVDsKLQltZW0tPmJ1cy5iYXNlID0gMDsKLQltZW0tPmJ1cy5p c19pb21lbSA9IGZhbHNlOwotCWlmICghKG1hbi0+ZmxhZ3MgJiBUVE1fTUVNVFlQRV9GTEFHX01B UFBBQkxFKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0Jc3dpdGNoIChtZW0tPm1lbV90eXBlKSB7Ci0J Y2FzZSBUVE1fUExfU1lTVEVNOgotCQkvKiBzeXN0ZW0gbWVtb3J5ICovCi0JCXJldHVybiAwOwot CWNhc2UgVFRNX1BMX1ZSQU06Ci0JCW1lbS0+YnVzLm9mZnNldCA9IG1lbS0+c3RhcnQgPDwgUEFH RV9TSElGVDsKLQkJbWVtLT5idXMuYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChhc3QtPmRldi0+ cGRldiwgMCk7Ci0JCW1lbS0+YnVzLmlzX2lvbWVtID0gdHJ1ZTsKLQkJYnJlYWs7Ci0JZGVmYXVs dDoKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JCWJyZWFrOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotc3Rh dGljIHZvaWQgYXN0X3R0bV9pb19tZW1fZnJlZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwg c3RydWN0IHR0bV9tZW1fcmVnICptZW0pCi17Ci19Ci0KLXN0YXRpYyB2b2lkIGFzdF90dG1fYmFj a2VuZF9kZXN0cm95KHN0cnVjdCB0dG1fdHQgKnR0KQotewotCXR0bV90dF9maW5pKHR0KTsKLQlr ZnJlZSh0dCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgdHRtX2JhY2tlbmRfZnVuYyBhc3RfdHRfYmFj a2VuZF9mdW5jID0gewotCS5kZXN0cm95ID0gJmFzdF90dG1fYmFja2VuZF9kZXN0cm95LAotfTsK LQotCi1zdGF0aWMgc3RydWN0IHR0bV90dCAqYXN0X3R0bV90dF9jcmVhdGUoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKLQkJCQkJdWludDMyX3QgcGFnZV9mbGFncykKLXsKLQlzdHJ1Y3Qg dHRtX3R0ICp0dDsKLQotCXR0ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHR0bV90dCksIEdGUF9L RVJORUwpOwotCWlmICh0dCA9PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsKLQl0dC0+ZnVuYyA9ICZh c3RfdHRfYmFja2VuZF9mdW5jOwotCWlmICh0dG1fdHRfaW5pdCh0dCwgYm8sIHBhZ2VfZmxhZ3Mp KSB7Ci0JCWtmcmVlKHR0KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiB0dDsKLX0KLQot c3RydWN0IHR0bV9ib19kcml2ZXIgYXN0X2JvX2RyaXZlciA9IHsKLQkudHRtX3R0X2NyZWF0ZSA9 IGFzdF90dG1fdHRfY3JlYXRlLAotCS5pbml0X21lbV90eXBlID0gYXN0X2JvX2luaXRfbWVtX3R5 cGUsCi0JLmV2aWN0aW9uX3ZhbHVhYmxlID0gdHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlLAotCS5l dmljdF9mbGFncyA9IGRybV9nZW1fdnJhbV9ib19kcml2ZXJfZXZpY3RfZmxhZ3MsCi0JLm1vdmUg PSBOVUxMLAotCS52ZXJpZnlfYWNjZXNzID0gZHJtX2dlbV92cmFtX2JvX2RyaXZlcl92ZXJpZnlf YWNjZXNzLAotCS5pb19tZW1fcmVzZXJ2ZSA9ICZhc3RfdHRtX2lvX21lbV9yZXNlcnZlLAotCS5p b19tZW1fZnJlZSA9ICZhc3RfdHRtX2lvX21lbV9mcmVlLAotfTsKLQogaW50IGFzdF9tbV9pbml0 KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQogeworCXN0cnVjdCBkcm1fdnJhbV9tbSAqdm1tOwog CWludCByZXQ7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFzdC0+ZGV2OwotCXN0cnVjdCB0 dG1fYm9fZGV2aWNlICpiZGV2ID0gJmFzdC0+dHRtLmJkZXY7Ci0KLQlyZXQgPSB0dG1fYm9fZGV2 aWNlX2luaXQoJmFzdC0+dHRtLmJkZXYsCi0JCQkJICZhc3RfYm9fZHJpdmVyLAotCQkJCSBkZXYt PmFub25faW5vZGUtPmlfbWFwcGluZywKLQkJCQkgdHJ1ZSk7Ci0JaWYgKHJldCkgewotCQlEUk1f RVJST1IoIkVycm9yIGluaXRpYWxpc2luZyBibyBkcml2ZXI7ICVkXG4iLCByZXQpOwotCQlyZXR1 cm4gcmV0OwotCX0KIAotCXJldCA9IHR0bV9ib19pbml0X21tKGJkZXYsIFRUTV9QTF9WUkFNLAot CQkJICAgICBhc3QtPnZyYW1fc2l6ZSA+PiBQQUdFX1NISUZUKTsKLQlpZiAocmV0KSB7Ci0JCURS TV9FUlJPUigiRmFpbGVkIHR0bSBWUkFNIGluaXQ6ICVkXG4iLCByZXQpOworCXZtbSA9IGRybV92 cmFtX2hlbHBlcl9hbGxvY19tbSgKKwkJZGV2LCBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2 LCAwKSwKKwkJYXN0LT52cmFtX3NpemUsICZkcm1fZ2VtX3ZyYW1fbW1fZnVuY3MpOworCWlmIChJ U19FUlIodm1tKSkgeworCQlyZXQgPSBQVFJfRVJSKHZtbSk7CisJCURSTV9FUlJPUigiRXJyb3Ig aW5pdGlhbGl6aW5nIFZSQU0gTU07ICVkXG4iLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIApA QCAtMTY2LDE3ICs1Niw5IEBAIHZvaWQgYXN0X21tX2Zpbmkoc3RydWN0IGFzdF9wcml2YXRlICph c3QpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFzdC0+ZGV2OwogCi0JdHRtX2JvX2Rl dmljZV9yZWxlYXNlKCZhc3QtPnR0bS5iZGV2KTsKKwlkcm1fdnJhbV9oZWxwZXJfcmVsZWFzZV9t bShkZXYpOwogCiAJYXJjaF9waHlzX3djX2RlbChhc3QtPmZiX210cnIpOwogCWFyY2hfaW9fZnJl ZV9tZW10eXBlX3djKHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApLAogCQkJCXBjaV9y ZXNvdXJjZV9sZW4oZGV2LT5wZGV2LCAwKSk7CiB9Ci0KLWludCBhc3RfbW1hcChzdHJ1Y3QgZmls ZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCi17Ci0Jc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYgPSBmaWxwLT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IGFzdF9wcml2YXRlICph c3QgPSBmaWxlX3ByaXYtPm1pbm9yLT5kZXYtPmRldl9wcml2YXRlOwotCi0JcmV0dXJuIHR0bV9i b19tbWFwKGZpbHAsIHZtYSwgJmFzdC0+dHRtLmJkZXYpOwotfQotLSAKMi4yMS4wCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=