From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v4 08/19] drm/ast: Convert AST driver to |struct drm_gem_vram_object| Date: Mon, 6 May 2019 10:26:38 +0200 Message-ID: <20190506082649.942-9-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 C0567895EE for ; Mon, 6 May 2019 08:26:58 +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 VGhlIGRhdGEgc3RydWN0dXJlIHxzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdHwgYW5kIGl0cyBo ZWxwZXJzIHJlcGxhY2UKfHN0cnVjdCBhc3RfYm98LiBJdCdzIHRoZSBzYW1lIGltcGxlbWVudGF0 aW9uOyBleGNlcHQgZm9yIHRoZSB0eXBlIG5hbWVzLgoKdjQ6CgkqIGNsZWFudXBzIGZyb20gY2hl Y2twYXRjaC5wbAoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5u QHN1c2UuZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnICAgIHwgICAyICstCiBk cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYyAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2Rydi5oICB8ICA1MiArLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9m Yi5jICAgfCAgMjMgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYyB8ICA3NCAr Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jIHwgIDc4ICsrKysr KysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdHRtLmMgIHwgMTcyICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25z KCspLCAzMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnCmluZGV4IDk2NDdlMWYwNzA4OC4u ZjM3Mzc0ODg2MzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWcKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnCkBAIC0zLDcgKzMsNyBAQCBjb25maWcgRFJN X0FTVAogCWRlcGVuZHMgb24gRFJNICYmIFBDSSAmJiBNTVUKIAlzZWxlY3QgRFJNX1RUTQogCXNl bGVjdCBEUk1fS01TX0hFTFBFUgotCXNlbGVjdCBEUk1fVFRNCisJc2VsZWN0IERSTV9WUkFNX0hF TFBFUgogCWhlbHAKIAkgU2F5IHllcyBmb3IgZXhwZXJpbWVudGFsIEFTVCBHUFUgZHJpdmVyLiBE byBub3QgZW5hYmxlCiAJIHRoaXMgZHJpdmVyIHdpdGhvdXQgaGF2aW5nIGEgd29ya2luZyAtbW9k ZXNldHRpbmcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5jCmluZGV4IDM4NzFiMzlkNGRlYS4uNzAxMmIxN2I5 ODRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYwpAQCAtMjI4LDkgKzIyOCwxMCBAQCBzdGF0aWMgc3Ry dWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewogCS5taW5vciA9IERSSVZFUl9NSU5PUiwKIAkucGF0 Y2hsZXZlbCA9IERSSVZFUl9QQVRDSExFVkVMLAogCi0JLmdlbV9mcmVlX29iamVjdF91bmxvY2tl ZCA9IGFzdF9nZW1fZnJlZV9vYmplY3QsCisJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9CisJ CWRybV9nZW1fdnJhbV9kcml2ZXJfZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkLAogCS5kdW1iX2Ny ZWF0ZSA9IGFzdF9kdW1iX2NyZWF0ZSwKLQkuZHVtYl9tYXBfb2Zmc2V0ID0gYXN0X2R1bWJfbW1h cF9vZmZzZXQsCisJLmR1bWJfbWFwX29mZnNldCA9IGRybV9nZW1fdnJhbV9kcml2ZXJfZHVtYl9t bWFwX29mZnNldCwKIAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3Rf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAppbmRleCAxY2YwYzc1ZTQxMWQu LjcxMjgzOGY3MjVkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNp bmNsdWRlIDxkcm0vdHRtL3R0bV9tb2R1bGUuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaD4KIAogI2luY2x1ZGUgPGxpbnV4 L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWJpdC5oPgpAQCAtMzIxLDI1ICszMjIs NiBAQCB2b2lkIGFzdF9mYmRldl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBh c3RfZmJkZXZfc2V0X3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHN0YXRlKTsK IHZvaWQgYXN0X2ZiZGV2X3NldF9iYXNlKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1bnNpZ25l ZCBsb25nIGdwdV9hZGRyKTsKIAotc3RydWN0IGFzdF9ibyB7Ci0Jc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0IGJvOwotCXN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsKLQlzdHJ1Y3QgdHRt X2JvX2ttYXBfb2JqIGttYXA7Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0IGdlbTsKLQlzdHJ1Y3Qg dHRtX3BsYWNlIHBsYWNlbWVudHNbM107Ci0JaW50IHBpbl9jb3VudDsKLX07Ci0jZGVmaW5lIGdl bV90b19hc3RfYm8oZ29iaikgY29udGFpbmVyX29mKChnb2JqKSwgc3RydWN0IGFzdF9ibywgZ2Vt KQotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBhc3RfYm8gKgotYXN0X2JvKHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8pCi17Ci0JcmV0dXJuIGNvbnRhaW5lcl9vZihibywgc3RydWN0IGFzdF9i bywgYm8pOwotfQotCi0KLSNkZWZpbmUgdG9fYXN0X29iaih4KSBjb250YWluZXJfb2YoeCwgc3Ry dWN0IGFzdF9nZW1fb2JqZWN0LCBiYXNlKQotCiAjZGVmaW5lIEFTVF9NTV9BTElHTl9TSElGVCA0 CiAjZGVmaW5lIEFTVF9NTV9BTElHTl9NQVNLICgoMSA8PCBBU1RfTU1fQUxJR05fU0hJRlQpIC0g MSkKIApAQCAtMzQ3LDQ1ICszMjksMTMgQEAgZXh0ZXJuIGludCBhc3RfZHVtYl9jcmVhdGUoc3Ry dWN0IGRybV9maWxlICpmaWxlLAogCQkJICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg IHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7CiAKLWV4dGVybiB2b2lkIGFzdF9n ZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotZXh0ZXJuIGludCBh c3RfZHVtYl9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCi0JCQkJc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKLQkJCQl1aW50MzJfdCBoYW5kbGUsCi0JCQkJdWludDY0X3QgKm9mZnNl dCk7Ci0KIGludCBhc3RfbW1faW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCk7CiB2b2lkIGFz dF9tbV9maW5pKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KTsKIAotaW50IGFzdF9ib19jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHNpemUsIGludCBhbGlnbiwKLQkJICB1aW50MzJf dCBmbGFncywgc3RydWN0IGFzdF9ibyAqKnBhc3Ribyk7Ci0KIGludCBhc3RfZ2VtX2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICB1MzIgc2l6ZSwgYm9vbCBpc2tlcm5lbCwKIAkJ ICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqb2JqKTsKIAotaW50IGFzdF9ib19waW4oc3RydWN0 IGFzdF9ibyAqYm8sIHUzMiBwbF9mbGFnLCB1NjQgKmdwdV9hZGRyKTsKLWludCBhc3RfYm9fdW5w aW4oc3RydWN0IGFzdF9ibyAqYm8pOwotCi1zdGF0aWMgaW5saW5lIGludCBhc3RfYm9fcmVzZXJ2 ZShzdHJ1Y3QgYXN0X2JvICpibywgYm9vbCBub193YWl0KQotewotCWludCByZXQ7Ci0KLQlyZXQg PSB0dG1fYm9fcmVzZXJ2ZSgmYm8tPmJvLCB0cnVlLCBub193YWl0LCBOVUxMKTsKLQlpZiAocmV0 KSB7Ci0JCWlmIChyZXQgIT0gLUVSRVNUQVJUU1lTICYmIHJldCAhPSAtRUJVU1kpCi0JCQlEUk1f RVJST1IoInJlc2VydmUgZmFpbGVkICVwXG4iLCBibyk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJl dHVybiAwOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXN0X2JvX3VucmVzZXJ2ZShzdHJ1Y3Qg YXN0X2JvICpibykKLXsKLQl0dG1fYm9fdW5yZXNlcnZlKCZiby0+Ym8pOwotfQotCi12b2lkIGFz dF90dG1fcGxhY2VtZW50KHN0cnVjdCBhc3RfYm8gKmJvLCBpbnQgZG9tYWluKTsKLWludCBhc3Rf Ym9fcHVzaF9zeXNyYW0oc3RydWN0IGFzdF9ibyAqYm8pOwogaW50IGFzdF9tbWFwKHN0cnVjdCBm aWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAKIC8qIGFzdCBwb3N0ICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jIGIvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZmIuYwppbmRleCBlNzE4ZDBmNjBkNmIuLjc3ODQyM2ZjZjM1MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9mYi5jCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGFzdF9kaXJ0eV91cGRh dGUoc3RydWN0IGFzdF9mYmRldiAqYWZiZGV2LAogewogCWludCBpOwogCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqOwotCXN0cnVjdCBhc3RfYm8gKmJvOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1f b2JqZWN0ICpnYm87CiAJaW50IHNyY19vZmZzZXQsIGRzdF9vZmZzZXQ7CiAJaW50IGJwcCA9IGFm YmRldi0+YWZiLmJhc2UuZm9ybWF0LT5jcHBbMF07CiAJaW50IHJldCA9IC1FQlVTWTsKQEAgLTU5 LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgYXN0X2RpcnR5X3VwZGF0ZShzdHJ1Y3QgYXN0X2ZiZGV2 ICphZmJkZXYsCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCW9iaiA9IGFmYmRldi0+YWZiLm9i ajsKLQlibyA9IGdlbV90b19hc3RfYm8ob2JqKTsKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2Vt KG9iaik7CiAKIAkvKgogCSAqIHRyeSBhbmQgcmVzZXJ2ZSB0aGUgQk8sIGlmIHdlIGZhaWwgd2l0 aCBidXN5CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIGFzdF9kaXJ0eV91cGRhdGUoc3Ry dWN0IGFzdF9mYmRldiAqYWZiZGV2LAogCSAqIHN0b3JlIHVwIHRoZSBkYW1hZ2UgdW50aWwgbGF0 ZXIuCiAJICovCiAJaWYgKGRybV9jYW5fc2xlZXAoKSkKLQkJcmV0ID0gYXN0X2JvX3Jlc2VydmUo Ym8sIHRydWUpOworCQlyZXQgPSBkcm1fZ2VtX3ZyYW1fcmVzZXJ2ZShnYm8sIHRydWUpOwogCWlm IChyZXQpIHsKIAkJaWYgKHJldCAhPSAtRUJVU1kpCiAJCQlyZXR1cm47CkBAIC0xMDEsMjUgKzEw MSwyOCBAQCBzdGF0aWMgdm9pZCBhc3RfZGlydHlfdXBkYXRlKHN0cnVjdCBhc3RfZmJkZXYgKmFm YmRldiwKIAlhZmJkZXYtPngyID0gYWZiZGV2LT55MiA9IDA7CiAJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmYWZiZGV2LT5kaXJ0eV9sb2NrLCBmbGFncyk7CiAKLQlpZiAoIWJvLT5rbWFwLnZpcnR1 YWwpIHsKLQkJcmV0ID0gdHRtX2JvX2ttYXAoJmJvLT5ibywgMCwgYm8tPmJvLm51bV9wYWdlcywg JmJvLT5rbWFwKTsKKwlpZiAoIWdiby0+a21hcC52aXJ0dWFsKSB7CisJCXJldCA9IHR0bV9ib19r bWFwKCZnYm8tPmJvLCAwLCBnYm8tPmJvLm51bV9wYWdlcywgJmdiby0+a21hcCk7CiAJCWlmIChy ZXQpIHsKIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGttYXAgZmIgdXBkYXRlc1xuIik7Ci0JCQlh c3RfYm9fdW5yZXNlcnZlKGJvKTsKKwkJCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAkJ CXJldHVybjsKIAkJfQogCQl1bm1hcCA9IHRydWU7CiAJfQogCWZvciAoaSA9IHk7IGkgPD0geTI7 IGkrKykgewogCQkvKiBhc3N1bWUgZXF1YWwgc3RyaWRlIGZvciBub3cgKi8KLQkJc3JjX29mZnNl dCA9IGRzdF9vZmZzZXQgPSBpICogYWZiZGV2LT5hZmIuYmFzZS5waXRjaGVzWzBdICsgKHggKiBi cHApOwotCQltZW1jcHlfdG9pbyhiby0+a21hcC52aXJ0dWFsICsgc3JjX29mZnNldCwgYWZiZGV2 LT5zeXNyYW0gKyBzcmNfb2Zmc2V0LCAoeDIgLSB4ICsgMSkgKiBicHApOworCQlzcmNfb2Zmc2V0 ID0gZHN0X29mZnNldCA9CisJCQlpICogYWZiZGV2LT5hZmIuYmFzZS5waXRjaGVzWzBdICsgKHgg KiBicHApOworCQltZW1jcHlfdG9pbyhnYm8tPmttYXAudmlydHVhbCArIHNyY19vZmZzZXQsCisJ CQkgICAgYWZiZGV2LT5zeXNyYW0gKyBkc3Rfb2Zmc2V0LAorCQkJICAgICh4MiAtIHggKyAxKSAq IGJwcCk7CiAKIAl9CiAJaWYgKHVubWFwKQotCQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7CisJ CXR0bV9ib19rdW5tYXAoJmdiby0+a21hcCk7CiAKLQlhc3RfYm9fdW5yZXNlcnZlKGJvKTsKKwlk cm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKGdibyk7CiB9CiAKIHN0YXRpYyB2b2lkIGFzdF9maWxscmVj dChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwppbmRleCAyODU0Mzk5 ODU2YmEuLjYxZmM3YjhlYTQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3Rf bWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwpAQCAtNTkzLDcgKzU5 Myw4IEBAIGludCBhc3RfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICB1 MzIgc2l6ZSwgYm9vbCBpc2tlcm5lbCwKIAkJICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqb2Jq KQogewotCXN0cnVjdCBhc3RfYm8gKmFzdGJvOworCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOwogCWlu dCByZXQ7CiAKIAkqb2JqID0gTlVMTDsKQEAgLTYwMiwxMyArNjAzLDE0IEBAIGludCBhc3RfZ2Vt X2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChzaXplID09IDApCiAJCXJldHVy biAtRUlOVkFMOwogCi0JcmV0ID0gYXN0X2JvX2NyZWF0ZShkZXYsIHNpemUsIDAsIDAsICZhc3Ri byk7Ci0JaWYgKHJldCkgeworCWdibyA9IGRybV9nZW1fdnJhbV9jcmVhdGUoZGV2LCAmYXN0LT50 dG0uYmRldiwgc2l6ZSwgMCwgZmFsc2UpOworCWlmIChJU19FUlIoZ2JvKSkgeworCQlyZXQgPSBQ VFJfRVJSKGdibyk7CiAJCWlmIChyZXQgIT0gLUVSRVNUQVJUU1lTKQogCQkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gYWxsb2NhdGUgR0VNIG9iamVjdFxuIik7CiAJCXJldHVybiByZXQ7CiAJfQotCSpv YmogPSAmYXN0Ym8tPmdlbTsKKwkqb2JqID0gJmdiby0+Z2VtOwogCXJldHVybiAwOwogfQogCkBA IC02MTYsNjYgKzYxOCw4IEBAIGludCBhc3RfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpm aWxlLAogCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJICAgIHN0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfZHVtYiAqYXJncykKIHsKLQlpbnQgcmV0OwotCXN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ29iajsKLQl1MzIgaGFuZGxlOwotCi0JYXJncy0+cGl0Y2ggPSBhcmdzLT53aWR0aCAqICgo YXJncy0+YnBwICsgNykgLyA4KTsKLQlhcmdzLT5zaXplID0gYXJncy0+cGl0Y2ggKiBhcmdzLT5o ZWlnaHQ7Ci0KLQlyZXQgPSBhc3RfZ2VtX2NyZWF0ZShkZXYsIGFyZ3MtPnNpemUsIGZhbHNlLAot CQkJICAgICAmZ29iaik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IGRybV9n ZW1faGFuZGxlX2NyZWF0ZShmaWxlLCBnb2JqLCAmaGFuZGxlKTsKLQlkcm1fZ2VtX29iamVjdF9w dXRfdW5sb2NrZWQoZ29iaik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWFyZ3MtPmhh bmRsZSA9IGhhbmRsZTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgYXN0X2JvX3VucmVm KHN0cnVjdCBhc3RfYm8gKipibykKLXsKLQlpZiAoKCpibykgPT0gTlVMTCkKLQkJcmV0dXJuOwot CXR0bV9ib19wdXQoJigoKmJvKS0+Ym8pKTsKLQkqYm8gPSBOVUxMOwotfQotCi12b2lkIGFzdF9n ZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IGFz dF9ibyAqYXN0X2JvID0gZ2VtX3RvX2FzdF9ibyhvYmopOwotCi0JYXN0X2JvX3VucmVmKCZhc3Rf Ym8pOwotfQotCi0KLXN0YXRpYyBpbmxpbmUgdTY0IGFzdF9ib19tbWFwX29mZnNldChzdHJ1Y3Qg YXN0X2JvICpibykKLXsKLQlyZXR1cm4gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKCZiby0+Ym8u dm1hX25vZGUpOwotfQotaW50Ci1hc3RfZHVtYl9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUsCi0JCSAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJICAgICB1aW50MzJfdCBo YW5kbGUsCi0JCSAgICAgdWludDY0X3QgKm9mZnNldCkKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iajsKLQlzdHJ1Y3QgYXN0X2JvICpibzsKLQotCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xv b2t1cChmaWxlLCBoYW5kbGUpOwotCWlmIChvYmogPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9FTlQ7 Ci0KLQlibyA9IGdlbV90b19hc3RfYm8ob2JqKTsKLQkqb2Zmc2V0ID0gYXN0X2JvX21tYXBfb2Zm c2V0KGJvKTsKLQotCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwotCi0JcmV0dXJu IDA7CisJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOwogCisJcmV0 dXJuIGRybV9nZW1fdnJhbV9maWxsX2NyZWF0ZV9kdW1iKGZpbGUsIGRldiwgJmFzdC0+dHRtLmJk ZXYsIDAsCisJCQkJCSAgICAgZmFsc2UsIGFyZ3MpOwogfQotCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMK aW5kZXggOTdmZWQwNjI3ZDFjLi5iNzVlZDM4MTY2NDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X21vZGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMK QEAgLTUyOSw1MCArNTI5LDU5IEBAIHN0YXRpYyBpbnQgYXN0X2NydGNfZG9fc2V0X2Jhc2Uoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gY3J0Yy0+ZGV2 LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgYXN0 X2ZyYW1lYnVmZmVyICphc3RfZmI7Ci0Jc3RydWN0IGFzdF9ibyAqYm87CisJc3RydWN0IGRybV9n ZW1fdnJhbV9vYmplY3QgKmdibzsKIAlpbnQgcmV0OwotCXU2NCBncHVfYWRkcjsKKwlzNjQgZ3B1 X2FkZHI7CiAKIAkvKiBwdXNoIHRoZSBwcmV2aW91cyBmYiB0byBzeXN0ZW0gcmFtICovCiAJaWYg KCFhdG9taWMgJiYgZmIpIHsKIAkJYXN0X2ZiID0gdG9fYXN0X2ZyYW1lYnVmZmVyKGZiKTsKIAkJ b2JqID0gYXN0X2ZiLT5vYmo7Ci0JCWJvID0gZ2VtX3RvX2FzdF9ibyhvYmopOwotCQlyZXQgPSBh c3RfYm9fcmVzZXJ2ZShibywgZmFsc2UpOworCQlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9i aik7CisJCXJldCA9IGRybV9nZW1fdnJhbV9yZXNlcnZlKGdibywgZmFsc2UpOwogCQlpZiAocmV0 KQogCQkJcmV0dXJuIHJldDsKLQkJYXN0X2JvX3B1c2hfc3lzcmFtKGJvKTsKLQkJYXN0X2JvX3Vu cmVzZXJ2ZShibyk7CisJCWRybV9nZW1fdnJhbV9wdXNoX3RvX3N5c3RlbShnYm8pOworCQlkcm1f Z2VtX3ZyYW1fdW5yZXNlcnZlKGdibyk7CiAJfQogCiAJYXN0X2ZiID0gdG9fYXN0X2ZyYW1lYnVm ZmVyKGNydGMtPnByaW1hcnktPmZiKTsKIAlvYmogPSBhc3RfZmItPm9iajsKLQlibyA9IGdlbV90 b19hc3RfYm8ob2JqKTsKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9iaik7CiAKLQlyZXQg PSBhc3RfYm9fcmVzZXJ2ZShibywgZmFsc2UpOworCXJldCA9IGRybV9nZW1fdnJhbV9yZXNlcnZl KGdibywgZmFsc2UpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBhc3RfYm9f cGluKGJvLCBUVE1fUExfRkxBR19WUkFNLCAmZ3B1X2FkZHIpOwotCWlmIChyZXQpIHsKLQkJYXN0 X2JvX3VucmVzZXJ2ZShibyk7Ci0JCXJldHVybiByZXQ7CisJcmV0ID0gZHJtX2dlbV92cmFtX3Bp bihnYm8sIERSTV9HRU1fVlJBTV9QTF9GTEFHX1ZSQU0pOworCWlmIChyZXQpCisJCWdvdG8gZXJy X2RybV9nZW1fdnJhbV91bnJlc2VydmU7CisJZ3B1X2FkZHIgPSBkcm1fZ2VtX3ZyYW1fb2Zmc2V0 KGdibyk7CisJaWYgKGdwdV9hZGRyIDwgMCkgeworCQlyZXQgPSAoaW50KWdwdV9hZGRyOworCQln b3RvIGVycl9kcm1fZ2VtX3ZyYW1fdW5waW47CiAJfQogCiAJaWYgKCZhc3QtPmZiZGV2LT5hZmIg PT0gYXN0X2ZiKSB7CiAJCS8qIGlmIHB1c2hpbmcgY29uc29sZSBpbiBrbWFwIGl0ICovCi0JCXJl dCA9IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5udW1fcGFnZXMsICZiby0+a21hcCk7 CisJCXJldCA9IHR0bV9ib19rbWFwKCZnYm8tPmJvLCAwLCBnYm8tPmJvLm51bV9wYWdlcywgJmdi by0+a21hcCk7CiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byBrbWFwIGZiY29u XG4iKTsKIAkJZWxzZQogCQkJYXN0X2ZiZGV2X3NldF9iYXNlKGFzdCwgZ3B1X2FkZHIpOwogCX0K LQlhc3RfYm9fdW5yZXNlcnZlKGJvKTsKKwlkcm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKGdibyk7CiAK IAlhc3Rfc2V0X29mZnNldF9yZWcoY3J0Yyk7CiAJYXN0X3NldF9zdGFydF9hZGRyZXNzX2NydDEo Y3J0YywgKHUzMilncHVfYWRkcik7CiAKIAlyZXR1cm4gMDsKKworZXJyX2RybV9nZW1fdnJhbV91 bnBpbjoKKwlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKK2Vycl9kcm1fZ2VtX3ZyYW1fdW5yZXNl cnZlOgorCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgaW50IGFzdF9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBp bnQgeCwgaW50IHksCkBAIC02MjUsMTQgKzYzNCwxMyBAQCBzdGF0aWMgdm9pZCBhc3RfY3J0Y19k aXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIpIHsK IAkJc3RydWN0IGFzdF9mcmFtZWJ1ZmZlciAqYXN0X2ZiID0gdG9fYXN0X2ZyYW1lYnVmZmVyKGNy dGMtPnByaW1hcnktPmZiKTsKIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBhc3RfZmIt Pm9iajsKLQkJc3RydWN0IGFzdF9ibyAqYm8gPSBnZW1fdG9fYXN0X2JvKG9iaik7CisJCXN0cnVj dCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9iaik7CiAK LQkJcmV0ID0gYXN0X2JvX3Jlc2VydmUoYm8sIGZhbHNlKTsKKwkJcmV0ID0gZHJtX2dlbV92cmFt X3Jlc2VydmUoZ2JvLCBmYWxzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm47Ci0KLQkJYXN0X2Jv X3B1c2hfc3lzcmFtKGJvKTsKLQkJYXN0X2JvX3VucmVzZXJ2ZShibyk7CisJCWRybV9nZW1fdnJh bV9wdXNoX3RvX3N5c3RlbShnYm8pOworCQlkcm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKGdibyk7CiAJ fQogCWNydGMtPnByaW1hcnktPmZiID0gTlVMTDsKIH0KQEAgLTkxOCwyNiArOTI2LDMyIEBAIHN0 YXRpYyBpbnQgYXN0X2N1cnNvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50IHNp emU7CiAJaW50IHJldDsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgYXN0 X2JvICpibzsKLQl1aW50NjRfdCBncHVfYWRkcjsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvOworCXM2NCBncHVfYWRkcjsKIAogCXNpemUgPSAoQVNUX0hXQ19TSVpFICsgQVNUX0hX Q19TSUdOQVRVUkVfU0laRSkgKiBBU1RfREVGQVVMVF9IV0NfTlVNOwogCiAJcmV0ID0gYXN0X2dl bV9jcmVhdGUoZGV2LCBzaXplLCB0cnVlLCAmb2JqKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwotCWJvID0gZ2VtX3RvX2FzdF9ibyhvYmopOwotCXJldCA9IGFzdF9ib19yZXNlcnZlKGJvLCBm YWxzZSk7CisJZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbShvYmopOworCXJldCA9IGRybV9nZW1f dnJhbV9yZXNlcnZlKGdibywgZmFsc2UpOwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCiAJCWdv dG8gZmFpbDsKIAotCXJldCA9IGFzdF9ib19waW4oYm8sIFRUTV9QTF9GTEFHX1ZSQU0sICZncHVf YWRkcik7Ci0JYXN0X2JvX3VucmVzZXJ2ZShibyk7CisJcmV0ID0gZHJtX2dlbV92cmFtX3Bpbihn Ym8sIERSTV9HRU1fVlJBTV9QTF9GTEFHX1ZSQU0pOworCWRybV9nZW1fdnJhbV91bnJlc2VydmUo Z2JvKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CisJZ3B1X2FkZHIgPSBkcm1fZ2VtX3ZyYW1f b2Zmc2V0KGdibyk7CisJaWYgKGdwdV9hZGRyIDwgMCkgeworCQlkcm1fZ2VtX3ZyYW1fdW5waW4o Z2JvKTsKKwkJcmV0ID0gKGludClncHVfYWRkcjsKKwkJZ290byBmYWlsOworCX0KIAogCS8qIGtt YXAgdGhlIG9iamVjdCAqLwotCXJldCA9IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5u dW1fcGFnZXMsICZhc3QtPmNhY2hlX2ttYXApOworCXJldCA9IHR0bV9ib19rbWFwKCZnYm8tPmJv LCAwLCBnYm8tPmJvLm51bV9wYWdlcywgJmFzdC0+Y2FjaGVfa21hcCk7CiAJaWYgKHJldCkKIAkJ Z290byBmYWlsOwogCkBAIC0xMTczLDggKzExODcsOCBAQCBzdGF0aWMgaW50IGFzdF9jdXJzb3Jf c2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGNy dGMtPmRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGFzdF9jcnRjICphc3RfY3J0YyA9IHRvX2Fz dF9jcnRjKGNydGMpOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBhc3Rf Ym8gKmJvOwotCXVpbnQ2NF90IGdwdV9hZGRyOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0 ICpnYm87CisJczY0IGdwdV9hZGRyOwogCXUzMiBjc3VtOwogCWludCByZXQ7CiAJc3RydWN0IHR0 bV9ib19rbWFwX29iaiB1b2JqX21hcDsKQEAgLTExOTMsMTMgKzEyMDcsMTMgQEAgc3RhdGljIGlu dCBhc3RfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCURSTV9FUlJPUigiQ2Fu bm90IGZpbmQgY3Vyc29yIG9iamVjdCAleCBmb3IgY3J0Y1xuIiwgaGFuZGxlKTsKIAkJcmV0dXJu IC1FTk9FTlQ7CiAJfQotCWJvID0gZ2VtX3RvX2FzdF9ibyhvYmopOworCWdibyA9IGRybV9nZW1f dnJhbV9vZl9nZW0ob2JqKTsKIAotCXJldCA9IGFzdF9ib19yZXNlcnZlKGJvLCBmYWxzZSk7CisJ cmV0ID0gZHJtX2dlbV92cmFtX3Jlc2VydmUoZ2JvLCBmYWxzZSk7CiAJaWYgKHJldCkKIAkJZ290 byBmYWlsOwogCi0JcmV0ID0gdHRtX2JvX2ttYXAoJmJvLT5ibywgMCwgYm8tPmJvLm51bV9wYWdl cywgJnVvYmpfbWFwKTsKKwlyZXQgPSB0dG1fYm9fa21hcCgmZ2JvLT5ibywgMCwgZ2JvLT5iby5u dW1fcGFnZXMsICZ1b2JqX21hcCk7CiAKIAlzcmMgPSB0dG1fa21hcF9vYmpfdmlydHVhbCgmdW9i al9tYXAsICZzcmNfaXNpb21lbSk7CiAJZHN0ID0gdHRtX2ttYXBfb2JqX3ZpcnR1YWwoJmFzdC0+ Y2FjaGVfa21hcCwgJmRzdF9pc2lvbWVtKTsKQEAgLTEyMTYsNyArMTIzMCw3IEBAIHN0YXRpYyBp bnQgYXN0X2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJLyogd3JpdGUgY2hl Y2tzdW0gKyBzaWduYXR1cmUgKi8KIAl0dG1fYm9fa3VubWFwKCZ1b2JqX21hcCk7Ci0JYXN0X2Jv X3VucmVzZXJ2ZShibyk7CisJZHJtX2dlbV92cmFtX3VucmVzZXJ2ZShnYm8pOwogCXsKIAkJdTgg KmRzdCA9ICh1OCAqKWFzdC0+Y2FjaGVfa21hcC52aXJ0dWFsICsgKEFTVF9IV0NfU0laRSArIEFT VF9IV0NfU0lHTkFUVVJFX1NJWkUpKmFzdC0+bmV4dF9jdXJzb3IgKyBBU1RfSFdDX1NJWkU7CiAJ CXdyaXRlbChjc3VtLCBkc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3Rf dHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0uYwppbmRleCA3NWQ0NzdiMzc4NTQu Ljc5NGViYjc1NWE1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdHRtLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdHRtLmMKQEAgLTM2LDIzICszNiw2IEBAIGFz dF9iZGV2KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZCkKIAlyZXR1cm4gY29udGFpbmVyX29mKGJk LCBzdHJ1Y3QgYXN0X3ByaXZhdGUsIHR0bS5iZGV2KTsKIH0KIAotc3RhdGljIHZvaWQgYXN0X2Jv X3R0bV9kZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKQotewotCXN0cnVjdCBh c3RfYm8gKmJvOwotCi0JYm8gPSBjb250YWluZXJfb2YodGJvLCBzdHJ1Y3QgYXN0X2JvLCBibyk7 Ci0KLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZiby0+Z2VtKTsKLQlrZnJlZShibyk7Ci19Ci0K LXN0YXRpYyBib29sIGFzdF90dG1fYm9faXNfYXN0X2JvKHN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8pCi17Ci0JaWYgKGJvLT5kZXN0cm95ID09ICZhc3RfYm9fdHRtX2Rlc3Ryb3kpCi0JCXJl dHVybiB0cnVlOwotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGludAogYXN0X2JvX2luaXRf bWVtX3R5cGUoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsIHVpbnQzMl90IHR5cGUsCiAJCSAg ICAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4pCkBAIC03OCwyNiArNjEsNiBAQCBh c3RfYm9faW5pdF9tZW1fdHlwZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgdWludDMyX3Qg dHlwZSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLWFzdF9ib19ldmljdF9mbGFncyhz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX3BsYWNlbWVudCAqcGwpCi17 Ci0Jc3RydWN0IGFzdF9ibyAqYXN0Ym8gPSBhc3RfYm8oYm8pOwotCi0JaWYgKCFhc3RfdHRtX2Jv X2lzX2FzdF9ibyhibykpCi0JCXJldHVybjsKLQotCWFzdF90dG1fcGxhY2VtZW50KGFzdGJvLCBU VE1fUExfRkxBR19TWVNURU0pOwotCSpwbCA9IGFzdGJvLT5wbGFjZW1lbnQ7Ci19Ci0KLXN0YXRp YyBpbnQgYXN0X2JvX3ZlcmlmeV9hY2Nlc3Moc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywg c3RydWN0IGZpbGUgKmZpbHApCi17Ci0Jc3RydWN0IGFzdF9ibyAqYXN0Ym8gPSBhc3RfYm8oYm8p OwotCi0JcmV0dXJuIGRybV92bWFfbm9kZV92ZXJpZnlfYWNjZXNzKCZhc3Riby0+Z2VtLnZtYV9u b2RlLAotCQkJCQkgIGZpbHAtPnByaXZhdGVfZGF0YSk7Ci19Ci0KIHN0YXRpYyBpbnQgYXN0X3R0 bV9pb19tZW1fcmVzZXJ2ZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKIAkJCQkgIHN0cnVj dCB0dG1fbWVtX3JlZyAqbWVtKQogewpAQCAtMTYyLDkgKzEyNSw5IEBAIHN0cnVjdCB0dG1fYm9f ZHJpdmVyIGFzdF9ib19kcml2ZXIgPSB7CiAJLnR0bV90dF9jcmVhdGUgPSBhc3RfdHRtX3R0X2Ny ZWF0ZSwKIAkuaW5pdF9tZW1fdHlwZSA9IGFzdF9ib19pbml0X21lbV90eXBlLAogCS5ldmljdGlv bl92YWx1YWJsZSA9IHR0bV9ib19ldmljdGlvbl92YWx1YWJsZSwKLQkuZXZpY3RfZmxhZ3MgPSBh c3RfYm9fZXZpY3RfZmxhZ3MsCisJLmV2aWN0X2ZsYWdzID0gZHJtX2dlbV92cmFtX2JvX2RyaXZl cl9ldmljdF9mbGFncywKIAkubW92ZSA9IE5VTEwsCi0JLnZlcmlmeV9hY2Nlc3MgPSBhc3RfYm9f dmVyaWZ5X2FjY2VzcywKKwkudmVyaWZ5X2FjY2VzcyA9IGRybV9nZW1fdnJhbV9ib19kcml2ZXJf dmVyaWZ5X2FjY2VzcywKIAkuaW9fbWVtX3Jlc2VydmUgPSAmYXN0X3R0bV9pb19tZW1fcmVzZXJ2 ZSwKIAkuaW9fbWVtX2ZyZWUgPSAmYXN0X3R0bV9pb19tZW1fZnJlZSwKIH07CkBAIC0yMTAsMTM3 ICsxNzMsNiBAQCB2b2lkIGFzdF9tbV9maW5pKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQogCQkJ CXBjaV9yZXNvdXJjZV9sZW4oZGV2LT5wZGV2LCAwKSk7CiB9CiAKLXZvaWQgYXN0X3R0bV9wbGFj ZW1lbnQoc3RydWN0IGFzdF9ibyAqYm8sIGludCBkb21haW4pCi17Ci0JdTMyIGMgPSAwOwotCXVu c2lnbmVkIGk7Ci0KLQliby0+cGxhY2VtZW50LnBsYWNlbWVudCA9IGJvLT5wbGFjZW1lbnRzOwot CWJvLT5wbGFjZW1lbnQuYnVzeV9wbGFjZW1lbnQgPSBiby0+cGxhY2VtZW50czsKLQlpZiAoZG9t YWluICYgVFRNX1BMX0ZMQUdfVlJBTSkKLQkJYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9IFRU TV9QTF9GTEFHX1dDIHwgVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfCBUVE1fUExfRkxBR19WUkFNOwot CWlmIChkb21haW4gJiBUVE1fUExfRkxBR19TWVNURU0pCi0JCWJvLT5wbGFjZW1lbnRzW2MrK10u ZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQgfCBUVE1fUExfRkxBR19TWVNURU07Ci0JaWYgKCFj KQotCQliby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRNX1BMX0ZMQUdfQ0FDSEVEIHwgVFRN X1BMX0ZMQUdfU1lTVEVNOwotCWJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA9IGM7Ci0JYm8t PnBsYWNlbWVudC5udW1fYnVzeV9wbGFjZW1lbnQgPSBjOwotCWZvciAoaSA9IDA7IGkgPCBjOyAr K2kpIHsKLQkJYm8tPnBsYWNlbWVudHNbaV0uZnBmbiA9IDA7Ci0JCWJvLT5wbGFjZW1lbnRzW2ld LmxwZm4gPSAwOwotCX0KLX0KLQotaW50IGFzdF9ib19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IHNpemUsIGludCBhbGlnbiwKLQkJICB1aW50MzJfdCBmbGFncywgc3RydWN0IGFz dF9ibyAqKnBhc3RibykKLXsKLQlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRldi0+ZGV2X3By aXZhdGU7Ci0Jc3RydWN0IGFzdF9ibyAqYXN0Ym87Ci0Jc2l6ZV90IGFjY19zaXplOwotCWludCBy ZXQ7Ci0KLQlhc3RibyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhc3RfYm8pLCBHRlBfS0VSTkVM KTsKLQlpZiAoIWFzdGJvKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCXJldCA9IGRybV9nZW1fb2Jq ZWN0X2luaXQoZGV2LCAmYXN0Ym8tPmdlbSwgc2l6ZSk7Ci0JaWYgKHJldCkKLQkJZ290byBlcnJv cjsKLQotCWFzdGJvLT5iby5iZGV2ID0gJmFzdC0+dHRtLmJkZXY7Ci0KLQlhc3RfdHRtX3BsYWNl bWVudChhc3RibywgVFRNX1BMX0ZMQUdfVlJBTSB8IFRUTV9QTF9GTEFHX1NZU1RFTSk7Ci0KLQlh Y2Nfc2l6ZSA9IHR0bV9ib19kbWFfYWNjX3NpemUoJmFzdC0+dHRtLmJkZXYsIHNpemUsCi0JCQkJ ICAgICAgIHNpemVvZihzdHJ1Y3QgYXN0X2JvKSk7Ci0KLQlyZXQgPSB0dG1fYm9faW5pdCgmYXN0 LT50dG0uYmRldiwgJmFzdGJvLT5ibywgc2l6ZSwKLQkJCSAgdHRtX2JvX3R5cGVfZGV2aWNlLCAm YXN0Ym8tPnBsYWNlbWVudCwKLQkJCSAgYWxpZ24gPj4gUEFHRV9TSElGVCwgZmFsc2UsIGFjY19z aXplLAotCQkJICBOVUxMLCBOVUxMLCBhc3RfYm9fdHRtX2Rlc3Ryb3kpOwotCWlmIChyZXQpCi0J CWdvdG8gZXJyb3I7Ci0KLQkqcGFzdGJvID0gYXN0Ym87Ci0JcmV0dXJuIDA7Ci1lcnJvcjoKLQlr ZnJlZShhc3Ribyk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGlubGluZSB1NjQgYXN0X2Jv X2dwdV9vZmZzZXQoc3RydWN0IGFzdF9ibyAqYm8pCi17Ci0JcmV0dXJuIGJvLT5iby5vZmZzZXQ7 Ci19Ci0KLWludCBhc3RfYm9fcGluKHN0cnVjdCBhc3RfYm8gKmJvLCB1MzIgcGxfZmxhZywgdTY0 ICpncHVfYWRkcikKLXsKLQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwg ZmFsc2UgfTsKLQlpbnQgaSwgcmV0OwotCi0JaWYgKGJvLT5waW5fY291bnQpIHsKLQkJYm8tPnBp bl9jb3VudCsrOwotCQlpZiAoZ3B1X2FkZHIpCi0JCQkqZ3B1X2FkZHIgPSBhc3RfYm9fZ3B1X29m ZnNldChibyk7Ci0JfQotCi0JYXN0X3R0bV9wbGFjZW1lbnQoYm8sIHBsX2ZsYWcpOwotCWZvciAo aSA9IDA7IGkgPCBiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQ7IGkrKykKLQkJYm8tPnBsYWNl bWVudHNbaV0uZmxhZ3MgfD0gVFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0JcmV0ID0gdHRtX2JvX3Zh bGlkYXRlKCZiby0+Ym8sICZiby0+cGxhY2VtZW50LCAmY3R4KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OwotCi0JYm8tPnBpbl9jb3VudCA9IDE7Ci0JaWYgKGdwdV9hZGRyKQotCQkqZ3B1X2Fk ZHIgPSBhc3RfYm9fZ3B1X29mZnNldChibyk7Ci0JcmV0dXJuIDA7Ci19Ci0KLWludCBhc3RfYm9f dW5waW4oc3RydWN0IGFzdF9ibyAqYm8pCi17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0 eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0JaW50IGk7Ci0JaWYgKCFiby0+cGluX2NvdW50KSB7Ci0J CURSTV9FUlJPUigidW5waW4gYmFkICVwXG4iLCBibyk7Ci0JCXJldHVybiAwOwotCX0KLQliby0+ cGluX2NvdW50LS07Ci0JaWYgKGJvLT5waW5fY291bnQpCi0JCXJldHVybiAwOwotCi0JZm9yIChp ID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA7IGkrKykKLQkJYm8tPnBsYWNl bWVudHNbaV0uZmxhZ3MgJj0gflRUTV9QTF9GTEFHX05PX0VWSUNUOwotCXJldHVybiB0dG1fYm9f dmFsaWRhdGUoJmJvLT5ibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotfQotCi1pbnQgYXN0X2Jv X3B1c2hfc3lzcmFtKHN0cnVjdCBhc3RfYm8gKmJvKQotewotCXN0cnVjdCB0dG1fb3BlcmF0aW9u X2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9OwotCWludCBpLCByZXQ7Ci0JaWYgKCFiby0+cGlu X2NvdW50KSB7Ci0JCURSTV9FUlJPUigidW5waW4gYmFkICVwXG4iLCBibyk7Ci0JCXJldHVybiAw OwotCX0KLQliby0+cGluX2NvdW50LS07Ci0JaWYgKGJvLT5waW5fY291bnQpCi0JCXJldHVybiAw OwotCi0JaWYgKGJvLT5rbWFwLnZpcnR1YWwpCi0JCXR0bV9ib19rdW5tYXAoJmJvLT5rbWFwKTsK LQotCWFzdF90dG1fcGxhY2VtZW50KGJvLCBUVE1fUExfRkxBR19TWVNURU0pOwotCWZvciAoaSA9 IDA7IGkgPCBiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgOyBpKyspCi0JCWJvLT5wbGFjZW1l bnRzW2ldLmZsYWdzIHw9IFRUTV9QTF9GTEFHX05PX0VWSUNUOwotCi0JcmV0ID0gdHRtX2JvX3Zh bGlkYXRlKCZiby0+Ym8sICZiby0+cGxhY2VtZW50LCAmY3R4KTsKLQlpZiAocmV0KSB7Ci0JCURS TV9FUlJPUigicHVzaGluZyB0byBWUkFNIGZhaWxlZFxuIik7Ci0JCXJldHVybiByZXQ7Ci0JfQot CXJldHVybiAwOwotfQotCiBpbnQgYXN0X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQogewogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2ID0gZmls cC0+cHJpdmF0ZV9kYXRhOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=