From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v3 08/19] drm/ast: Convert AST driver to |struct drm_gem_vram_object| Date: Mon, 29 Apr 2019 16:43:30 +0200 Message-ID: <20190429144341.12615-9-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 3262889261 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 VGhlIGRhdGEgc3RydWN0dXJlIHxzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdHwgYW5kIGl0cyBo ZWxwZXJzIHJlcGxhY2UKfHN0cnVjdCBhc3RfYm98LiBJdCdzIHRoZSBzYW1lIGltcGxlbWVudGF0 aW9uOyBleGNlcHQgZm9yIHRoZSB0eXBlIG5hbWVzLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFpp bW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FzdC9L Y29uZmlnICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYyAgfCAgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oICB8ICA1MiArLS0tLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jICAgfCAgMTggKystLQogZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfbWFpbi5jIHwgIDc0ICsrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9tb2RlLmMgfCAgNzggKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90 dG0uYyAgfCAxNzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA3IGZpbGVzIGNo YW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDMzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWcK aW5kZXggOTY0N2UxZjA3MDg4Li5kMWQ5MGY4YzdhOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hc3QvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWcKQEAgLTMs NyArMyw3IEBAIGNvbmZpZyBEUk1fQVNUCiAJZGVwZW5kcyBvbiBEUk0gJiYgUENJICYmIE1NVQog CXNlbGVjdCBEUk1fVFRNCiAJc2VsZWN0IERSTV9LTVNfSEVMUEVSCi0Jc2VsZWN0IERSTV9UVE0K KwlzZWxlY3QgRFJNX0dFTV9WUkFNX0hFTFBFUgogCWhlbHAKIAkgU2F5IHllcyBmb3IgZXhwZXJp bWVudGFsIEFTVCBHUFUgZHJpdmVyLiBEbyBub3QgZW5hYmxlCiAJIHRoaXMgZHJpdmVyIHdpdGhv dXQgaGF2aW5nIGEgd29ya2luZyAtbW9kZXNldHRpbmcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5jCmluZGV4 IDM4NzFiMzlkNGRlYS4uNjlmMDU2MjVmYzJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuYwpAQCAtMjI4 LDkgKzIyOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7CiAJLm1pbm9y ID0gRFJJVkVSX01JTk9SLAogCS5wYXRjaGxldmVsID0gRFJJVkVSX1BBVENITEVWRUwsCiAKLQku Z2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gYXN0X2dlbV9mcmVlX29iamVjdCwKKwkuZ2VtX2Zy ZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV92cmFtX2RyaXZlcl9nZW1fZnJlZV9vYmplY3Rf dW5sb2NrZWQsCiAJLmR1bWJfY3JlYXRlID0gYXN0X2R1bWJfY3JlYXRlLAotCS5kdW1iX21hcF9v ZmZzZXQgPSBhc3RfZHVtYl9tbWFwX29mZnNldCwKKwkuZHVtYl9tYXBfb2Zmc2V0ID0gZHJtX2dl bV92cmFtX2RyaXZlcl9kdW1iX21tYXBfb2Zmc2V0LAogCiB9OwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5o CmluZGV4IDFjZjBjNzVlNDExZC4uNzEyODM4ZjcyNWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaApA QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGRybS90dG0vdHRtX21vZHVsZS5oPgogCiAjaW5j bHVkZSA8ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV92cmFtX2hlbHBlci5o PgogCiAjaW5jbHVkZSA8bGludXgvaTJjLmg+CiAjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0 Lmg+CkBAIC0zMjEsMjUgKzMyMiw2IEBAIHZvaWQgYXN0X2ZiZGV2X2Zpbmkoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiB2b2lkIGFzdF9mYmRldl9zZXRfc3VzcGVuZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgc3RhdGUpOwogdm9pZCBhc3RfZmJkZXZfc2V0X2Jhc2Uoc3RydWN0IGFzdF9w cml2YXRlICphc3QsIHVuc2lnbmVkIGxvbmcgZ3B1X2FkZHIpOwogCi1zdHJ1Y3QgYXN0X2JvIHsK LQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgYm87Ci0Jc3RydWN0IHR0bV9wbGFjZW1lbnQgcGxh Y2VtZW50OwotCXN0cnVjdCB0dG1fYm9fa21hcF9vYmoga21hcDsKLQlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgZ2VtOwotCXN0cnVjdCB0dG1fcGxhY2UgcGxhY2VtZW50c1szXTsKLQlpbnQgcGluX2Nv dW50OwotfTsKLSNkZWZpbmUgZ2VtX3RvX2FzdF9ibyhnb2JqKSBjb250YWluZXJfb2YoKGdvYmop LCBzdHJ1Y3QgYXN0X2JvLCBnZW0pCi0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGFzdF9ibyAqCi1h c3RfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKLXsKLQlyZXR1cm4gY29udGFpbmVy X29mKGJvLCBzdHJ1Y3QgYXN0X2JvLCBibyk7Ci19Ci0KLQotI2RlZmluZSB0b19hc3Rfb2JqKHgp IGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgYXN0X2dlbV9vYmplY3QsIGJhc2UpCi0KICNkZWZpbmUg QVNUX01NX0FMSUdOX1NISUZUIDQKICNkZWZpbmUgQVNUX01NX0FMSUdOX01BU0sgKCgxIDw8IEFT VF9NTV9BTElHTl9TSElGVCkgLSAxKQogCkBAIC0zNDcsNDUgKzMyOSwxMyBAQCBleHRlcm4gaW50 IGFzdF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCQkgICBzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsK IAotZXh0ZXJuIHZvaWQgYXN0X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7Ci1leHRlcm4gaW50IGFzdF9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSwKLQkJCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCXVpbnQzMl90IGhhbmRsZSwK LQkJCQl1aW50NjRfdCAqb2Zmc2V0KTsKLQogaW50IGFzdF9tbV9pbml0KHN0cnVjdCBhc3RfcHJp dmF0ZSAqYXN0KTsKIHZvaWQgYXN0X21tX2Zpbmkoc3RydWN0IGFzdF9wcml2YXRlICphc3QpOwog Ci1pbnQgYXN0X2JvX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc2l6ZSwgaW50 IGFsaWduLAotCQkgIHVpbnQzMl90IGZsYWdzLCBzdHJ1Y3QgYXN0X2JvICoqcGFzdGJvKTsKLQog aW50IGFzdF9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgIHUzMiBzaXpl LCBib29sIGlza2VybmVsLAogCQkgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopOwogCi1p bnQgYXN0X2JvX3BpbihzdHJ1Y3QgYXN0X2JvICpibywgdTMyIHBsX2ZsYWcsIHU2NCAqZ3B1X2Fk ZHIpOwotaW50IGFzdF9ib191bnBpbihzdHJ1Y3QgYXN0X2JvICpibyk7Ci0KLXN0YXRpYyBpbmxp bmUgaW50IGFzdF9ib19yZXNlcnZlKHN0cnVjdCBhc3RfYm8gKmJvLCBib29sIG5vX3dhaXQpCi17 Ci0JaW50IHJldDsKLQotCXJldCA9IHR0bV9ib19yZXNlcnZlKCZiby0+Ym8sIHRydWUsIG5vX3dh aXQsIE5VTEwpOwotCWlmIChyZXQpIHsKLQkJaWYgKHJldCAhPSAtRVJFU1RBUlRTWVMgJiYgcmV0 ICE9IC1FQlVTWSkKLQkJCURSTV9FUlJPUigicmVzZXJ2ZSBmYWlsZWQgJXBcbiIsIGJvKTsKLQkJ cmV0dXJuIHJldDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhc3Rf Ym9fdW5yZXNlcnZlKHN0cnVjdCBhc3RfYm8gKmJvKQotewotCXR0bV9ib191bnJlc2VydmUoJmJv LT5ibyk7Ci19Ci0KLXZvaWQgYXN0X3R0bV9wbGFjZW1lbnQoc3RydWN0IGFzdF9ibyAqYm8sIGlu dCBkb21haW4pOwotaW50IGFzdF9ib19wdXNoX3N5c3JhbShzdHJ1Y3QgYXN0X2JvICpibyk7CiBp bnQgYXN0X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KTsKIAogLyogYXN0IHBvc3QgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jCmluZGV4IGU3MThkMGY2MGQ2Yi4u NGZkODBlMzFhZDU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2ZiLmMKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGlj IHZvaWQgYXN0X2RpcnR5X3VwZGF0ZShzdHJ1Y3QgYXN0X2ZiZGV2ICphZmJkZXYsCiB7CiAJaW50 IGk7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGFzdF9ibyAqYm87CisJ c3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibzsKIAlpbnQgc3JjX29mZnNldCwgZHN0X29m ZnNldDsKIAlpbnQgYnBwID0gYWZiZGV2LT5hZmIuYmFzZS5mb3JtYXQtPmNwcFswXTsKIAlpbnQg cmV0ID0gLUVCVVNZOwpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgdm9pZCBhc3RfZGlydHlfdXBk YXRlKHN0cnVjdCBhc3RfZmJkZXYgKmFmYmRldiwKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJ b2JqID0gYWZiZGV2LT5hZmIub2JqOwotCWJvID0gZ2VtX3RvX2FzdF9ibyhvYmopOworCWdibyA9 IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKIAogCS8qCiAJICogdHJ5IGFuZCByZXNlcnZlIHRo ZSBCTywgaWYgd2UgZmFpbCB3aXRoIGJ1c3kKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIHZvaWQg YXN0X2RpcnR5X3VwZGF0ZShzdHJ1Y3QgYXN0X2ZiZGV2ICphZmJkZXYsCiAJICogc3RvcmUgdXAg dGhlIGRhbWFnZSB1bnRpbCBsYXRlci4KIAkgKi8KIAlpZiAoZHJtX2Nhbl9zbGVlcCgpKQotCQly ZXQgPSBhc3RfYm9fcmVzZXJ2ZShibywgdHJ1ZSk7CisJCXJldCA9IGRybV9nZW1fdnJhbV9yZXNl cnZlKGdibywgdHJ1ZSk7CiAJaWYgKHJldCkgewogCQlpZiAocmV0ICE9IC1FQlVTWSkKIAkJCXJl dHVybjsKQEAgLTEwMSwxMSArMTAxLDExIEBAIHN0YXRpYyB2b2lkIGFzdF9kaXJ0eV91cGRhdGUo c3RydWN0IGFzdF9mYmRldiAqYWZiZGV2LAogCWFmYmRldi0+eDIgPSBhZmJkZXYtPnkyID0gMDsK IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZmJkZXYtPmRpcnR5X2xvY2ssIGZsYWdzKTsKIAot CWlmICghYm8tPmttYXAudmlydHVhbCkgewotCQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAw LCBiby0+Ym8ubnVtX3BhZ2VzLCAmYm8tPmttYXApOworCWlmICghZ2JvLT5rbWFwLnZpcnR1YWwp IHsKKwkJcmV0ID0gdHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCAm Z2JvLT5rbWFwKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8ga21hcCBm YiB1cGRhdGVzXG4iKTsKLQkJCWFzdF9ib191bnJlc2VydmUoYm8pOworCQkJZHJtX2dlbV92cmFt X3VucmVzZXJ2ZShnYm8pOwogCQkJcmV0dXJuOwogCQl9CiAJCXVubWFwID0gdHJ1ZTsKQEAgLTEx MywxMyArMTEzLDEzIEBAIHN0YXRpYyB2b2lkIGFzdF9kaXJ0eV91cGRhdGUoc3RydWN0IGFzdF9m YmRldiAqYWZiZGV2LAogCWZvciAoaSA9IHk7IGkgPD0geTI7IGkrKykgewogCQkvKiBhc3N1bWUg ZXF1YWwgc3RyaWRlIGZvciBub3cgKi8KIAkJc3JjX29mZnNldCA9IGRzdF9vZmZzZXQgPSBpICog YWZiZGV2LT5hZmIuYmFzZS5waXRjaGVzWzBdICsgKHggKiBicHApOwotCQltZW1jcHlfdG9pbyhi by0+a21hcC52aXJ0dWFsICsgc3JjX29mZnNldCwgYWZiZGV2LT5zeXNyYW0gKyBzcmNfb2Zmc2V0 LCAoeDIgLSB4ICsgMSkgKiBicHApOworCQltZW1jcHlfdG9pbyhnYm8tPmttYXAudmlydHVhbCAr IHNyY19vZmZzZXQsIGFmYmRldi0+c3lzcmFtICsgc3JjX29mZnNldCwgKHgyIC0geCArIDEpICog YnBwKTsKIAogCX0KIAlpZiAodW5tYXApCi0JCXR0bV9ib19rdW5tYXAoJmJvLT5rbWFwKTsKKwkJ dHRtX2JvX2t1bm1hcCgmZ2JvLT5rbWFwKTsKIAotCWFzdF9ib191bnJlc2VydmUoYm8pOworCWRy bV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIH0KIAogc3RhdGljIHZvaWQgYXN0X2ZpbGxyZWN0 KHN0cnVjdCBmYl9pbmZvICppbmZvLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCmluZGV4IDI4NTQzOTk4 NTZiYS4uNjFmYzdiOGVhNDcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9t YWluLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCkBAIC01OTMsNyArNTkz LDggQEAgaW50IGFzdF9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgIHUz MiBzaXplLCBib29sIGlza2VybmVsLAogCQkgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmop CiB7Ci0Jc3RydWN0IGFzdF9ibyAqYXN0Ym87CisJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBk ZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CiAJaW50 IHJldDsKIAogCSpvYmogPSBOVUxMOwpAQCAtNjAyLDEzICs2MDMsMTQgQEAgaW50IGFzdF9nZW1f Y3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQlyZXQgPSBhc3RfYm9fY3JlYXRlKGRldiwgc2l6ZSwgMCwgMCwgJmFzdGJv KTsKLQlpZiAocmV0KSB7CisJZ2JvID0gZHJtX2dlbV92cmFtX2NyZWF0ZShkZXYsICZhc3QtPnR0 bS5iZGV2LCBzaXplLCAwLCBmYWxzZSk7CisJaWYgKElTX0VSUihnYm8pKSB7CisJCXJldCA9IFBU Ul9FUlIoZ2JvKTsKIAkJaWYgKHJldCAhPSAtRVJFU1RBUlRTWVMpCiAJCQlEUk1fRVJST1IoImZh aWxlZCB0byBhbGxvY2F0ZSBHRU0gb2JqZWN0XG4iKTsKIAkJcmV0dXJuIHJldDsKIAl9Ci0JKm9i aiA9ICZhc3Riby0+Z2VtOworCSpvYmogPSAmZ2JvLT5nZW07CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTYxNiw2NiArNjE4LDggQEAgaW50IGFzdF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUsCiAJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICAgc3RydWN0IGRybV9tb2Rl X2NyZWF0ZV9kdW1iICphcmdzKQogewotCWludCByZXQ7Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnb2JqOwotCXUzMiBoYW5kbGU7Ci0KLQlhcmdzLT5waXRjaCA9IGFyZ3MtPndpZHRoICogKChh cmdzLT5icHAgKyA3KSAvIDgpOwotCWFyZ3MtPnNpemUgPSBhcmdzLT5waXRjaCAqIGFyZ3MtPmhl aWdodDsKLQotCXJldCA9IGFzdF9nZW1fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwgZmFsc2UsCi0J CQkgICAgICZnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gZHJtX2dl bV9oYW5kbGVfY3JlYXRlKGZpbGUsIGdvYmosICZoYW5kbGUpOwotCWRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZChnb2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JYXJncy0+aGFu ZGxlID0gaGFuZGxlOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBhc3RfYm9fdW5yZWYo c3RydWN0IGFzdF9ibyAqKmJvKQotewotCWlmICgoKmJvKSA9PSBOVUxMKQotCQlyZXR1cm47Ci0J dHRtX2JvX3B1dCgmKCgqYm8pLT5ibykpOwotCSpibyA9IE5VTEw7Ci19Ci0KLXZvaWQgYXN0X2dl bV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKLXsKLQlzdHJ1Y3QgYXN0 X2JvICphc3RfYm8gPSBnZW1fdG9fYXN0X2JvKG9iaik7Ci0KLQlhc3RfYm9fdW5yZWYoJmFzdF9i byk7Ci19Ci0KLQotc3RhdGljIGlubGluZSB1NjQgYXN0X2JvX21tYXBfb2Zmc2V0KHN0cnVjdCBh c3RfYm8gKmJvKQotewotCXJldHVybiBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJmJvLT5iby52 bWFfbm9kZSk7Ci19Ci1pbnQKLWFzdF9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSwKLQkJICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkgICAgIHVpbnQzMl90IGhh bmRsZSwKLQkJICAgICB1aW50NjRfdCAqb2Zmc2V0KQotewotCXN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqOwotCXN0cnVjdCBhc3RfYm8gKmJvOwotCi0Jb2JqID0gZHJtX2dlbV9vYmplY3RfbG9v a3VwKGZpbGUsIGhhbmRsZSk7Ci0JaWYgKG9iaiA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT0VOVDsK LQotCWJvID0gZ2VtX3RvX2FzdF9ibyhvYmopOwotCSpvZmZzZXQgPSBhc3RfYm9fbW1hcF9vZmZz ZXQoYm8pOwotCi0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Ci0KLQlyZXR1cm4g MDsKKwlzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKKwlyZXR1 cm4gZHJtX2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1bWIoZmlsZSwgZGV2LCAmYXN0LT50dG0uYmRl diwgMCwKKwkJCQkJICAgICBmYWxzZSwgYXJncyk7CiB9Ci0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYwpp bmRleCA5N2ZlZDA2MjdkMWMuLmI3NWVkMzgxNjY0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfbW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYwpA QCAtNTI5LDUwICs1MjksNTkgQEAgc3RhdGljIGludCBhc3RfY3J0Y19kb19zZXRfYmFzZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBjcnRjLT5kZXYt PmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBhc3Rf ZnJhbWVidWZmZXIgKmFzdF9mYjsKLQlzdHJ1Y3QgYXN0X2JvICpibzsKKwlzdHJ1Y3QgZHJtX2dl bV92cmFtX29iamVjdCAqZ2JvOwogCWludCByZXQ7Ci0JdTY0IGdwdV9hZGRyOworCXM2NCBncHVf YWRkcjsKIAogCS8qIHB1c2ggdGhlIHByZXZpb3VzIGZiIHRvIHN5c3RlbSByYW0gKi8KIAlpZiAo IWF0b21pYyAmJiBmYikgewogCQlhc3RfZmIgPSB0b19hc3RfZnJhbWVidWZmZXIoZmIpOwogCQlv YmogPSBhc3RfZmItPm9iajsKLQkJYm8gPSBnZW1fdG9fYXN0X2JvKG9iaik7Ci0JCXJldCA9IGFz dF9ib19yZXNlcnZlKGJvLCBmYWxzZSk7CisJCWdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0ob2Jq KTsKKwkJcmV0ID0gZHJtX2dlbV92cmFtX3Jlc2VydmUoZ2JvLCBmYWxzZSk7CiAJCWlmIChyZXQp CiAJCQlyZXR1cm4gcmV0OwotCQlhc3RfYm9fcHVzaF9zeXNyYW0oYm8pOwotCQlhc3RfYm9fdW5y ZXNlcnZlKGJvKTsKKwkJZHJtX2dlbV92cmFtX3B1c2hfdG9fc3lzdGVtKGdibyk7CisJCWRybV9n ZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAl9CiAKIAlhc3RfZmIgPSB0b19hc3RfZnJhbWVidWZm ZXIoY3J0Yy0+cHJpbWFyeS0+ZmIpOwogCW9iaiA9IGFzdF9mYi0+b2JqOwotCWJvID0gZ2VtX3Rv X2FzdF9ibyhvYmopOworCWdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKIAotCXJldCA9 IGFzdF9ib19yZXNlcnZlKGJvLCBmYWxzZSk7CisJcmV0ID0gZHJtX2dlbV92cmFtX3Jlc2VydmUo Z2JvLCBmYWxzZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGFzdF9ib19w aW4oYm8sIFRUTV9QTF9GTEFHX1ZSQU0sICZncHVfYWRkcik7Ci0JaWYgKHJldCkgewotCQlhc3Rf Ym9fdW5yZXNlcnZlKGJvKTsKLQkJcmV0dXJuIHJldDsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGlu KGdibywgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfVlJBTSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJf ZHJtX2dlbV92cmFtX3VucmVzZXJ2ZTsKKwlncHVfYWRkciA9IGRybV9nZW1fdnJhbV9vZmZzZXQo Z2JvKTsKKwlpZiAoZ3B1X2FkZHIgPCAwKSB7CisJCXJldCA9IChpbnQpZ3B1X2FkZHI7CisJCWdv dG8gZXJyX2RybV9nZW1fdnJhbV91bnBpbjsKIAl9CiAKIAlpZiAoJmFzdC0+ZmJkZXYtPmFmYiA9 PSBhc3RfZmIpIHsKIAkJLyogaWYgcHVzaGluZyBjb25zb2xlIGluIGttYXAgaXQgKi8KLQkJcmV0 ID0gdHRtX2JvX2ttYXAoJmJvLT5ibywgMCwgYm8tPmJvLm51bV9wYWdlcywgJmJvLT5rbWFwKTsK KwkJcmV0ID0gdHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCAmZ2Jv LT5rbWFwKTsKIAkJaWYgKHJldCkKIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGttYXAgZmJjb25c biIpOwogCQllbHNlCiAJCQlhc3RfZmJkZXZfc2V0X2Jhc2UoYXN0LCBncHVfYWRkcik7CiAJfQot CWFzdF9ib191bnJlc2VydmUoYm8pOworCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAog CWFzdF9zZXRfb2Zmc2V0X3JlZyhjcnRjKTsKIAlhc3Rfc2V0X3N0YXJ0X2FkZHJlc3NfY3J0MShj cnRjLCAodTMyKWdwdV9hZGRyKTsKIAogCXJldHVybiAwOworCitlcnJfZHJtX2dlbV92cmFtX3Vu cGluOgorCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOworZXJyX2RybV9nZW1fdnJhbV91bnJlc2Vy dmU6CisJZHJtX2dlbV92cmFtX3VucmVzZXJ2ZShnYm8pOworCXJldHVybiByZXQ7CiB9CiAKIHN0 YXRpYyBpbnQgYXN0X2NydGNfbW9kZV9zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGlu dCB4LCBpbnQgeSwKQEAgLTYyNSwxNCArNjM0LDEzIEBAIHN0YXRpYyB2b2lkIGFzdF9jcnRjX2Rp c2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWlmIChjcnRjLT5wcmltYXJ5LT5mYikgewog CQlzdHJ1Y3QgYXN0X2ZyYW1lYnVmZmVyICphc3RfZmIgPSB0b19hc3RfZnJhbWVidWZmZXIoY3J0 Yy0+cHJpbWFyeS0+ZmIpOwogCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGFzdF9mYi0+ b2JqOwotCQlzdHJ1Y3QgYXN0X2JvICpibyA9IGdlbV90b19hc3RfYm8ob2JqKTsKKwkJc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKIAot CQlyZXQgPSBhc3RfYm9fcmVzZXJ2ZShibywgZmFsc2UpOworCQlyZXQgPSBkcm1fZ2VtX3ZyYW1f cmVzZXJ2ZShnYm8sIGZhbHNlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybjsKLQotCQlhc3RfYm9f cHVzaF9zeXNyYW0oYm8pOwotCQlhc3RfYm9fdW5yZXNlcnZlKGJvKTsKKwkJZHJtX2dlbV92cmFt X3B1c2hfdG9fc3lzdGVtKGdibyk7CisJCWRybV9nZW1fdnJhbV91bnJlc2VydmUoZ2JvKTsKIAl9 CiAJY3J0Yy0+cHJpbWFyeS0+ZmIgPSBOVUxMOwogfQpAQCAtOTE4LDI2ICs5MjYsMzIgQEAgc3Rh dGljIGludCBhc3RfY3Vyc29yX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnQgc2l6 ZTsKIAlpbnQgcmV0OwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBhc3Rf Ym8gKmJvOwotCXVpbnQ2NF90IGdwdV9hZGRyOworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0 ICpnYm87CisJczY0IGdwdV9hZGRyOwogCiAJc2l6ZSA9IChBU1RfSFdDX1NJWkUgKyBBU1RfSFdD X1NJR05BVFVSRV9TSVpFKSAqIEFTVF9ERUZBVUxUX0hXQ19OVU07CiAKIAlyZXQgPSBhc3RfZ2Vt X2NyZWF0ZShkZXYsIHNpemUsIHRydWUsICZvYmopOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 Ci0JYm8gPSBnZW1fdG9fYXN0X2JvKG9iaik7Ci0JcmV0ID0gYXN0X2JvX3Jlc2VydmUoYm8sIGZh bHNlKTsKKwlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9iaik7CisJcmV0ID0gZHJtX2dlbV92 cmFtX3Jlc2VydmUoZ2JvLCBmYWxzZSk7CiAJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKIAkJZ290 byBmYWlsOwogCi0JcmV0ID0gYXN0X2JvX3BpbihibywgVFRNX1BMX0ZMQUdfVlJBTSwgJmdwdV9h ZGRyKTsKLQlhc3RfYm9fdW5yZXNlcnZlKGJvKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdi bywgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfVlJBTSk7CisJZHJtX2dlbV92cmFtX3VucmVzZXJ2ZShn Ym8pOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKKwlncHVfYWRkciA9IGRybV9nZW1fdnJhbV9v ZmZzZXQoZ2JvKTsKKwlpZiAoZ3B1X2FkZHIgPCAwKSB7CisJCWRybV9nZW1fdnJhbV91bnBpbihn Ym8pOworCQlyZXQgPSAoaW50KWdwdV9hZGRyOworCQlnb3RvIGZhaWw7CisJfQogCiAJLyoga21h cCB0aGUgb2JqZWN0ICovCi0JcmV0ID0gdHRtX2JvX2ttYXAoJmJvLT5ibywgMCwgYm8tPmJvLm51 bV9wYWdlcywgJmFzdC0+Y2FjaGVfa21hcCk7CisJcmV0ID0gdHRtX2JvX2ttYXAoJmdiby0+Ym8s IDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCAmYXN0LT5jYWNoZV9rbWFwKTsKIAlpZiAocmV0KQogCQln b3RvIGZhaWw7CiAKQEAgLTExNzMsOCArMTE4Nyw4IEBAIHN0YXRpYyBpbnQgYXN0X2N1cnNvcl9z ZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gY3J0 Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgYXN0X2NydGMgKmFzdF9jcnRjID0gdG9fYXN0 X2NydGMoY3J0Yyk7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGFzdF9i byAqYm87Ci0JdWludDY0X3QgZ3B1X2FkZHI7CisJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3Qg KmdibzsKKwlzNjQgZ3B1X2FkZHI7CiAJdTMyIGNzdW07CiAJaW50IHJldDsKIAlzdHJ1Y3QgdHRt X2JvX2ttYXBfb2JqIHVvYmpfbWFwOwpAQCAtMTE5MywxMyArMTIwNywxMyBAQCBzdGF0aWMgaW50 IGFzdF9jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJRFJNX0VSUk9SKCJDYW5u b3QgZmluZCBjdXJzb3Igb2JqZWN0ICV4IGZvciBjcnRjXG4iLCBoYW5kbGUpOwogCQlyZXR1cm4g LUVOT0VOVDsKIAl9Ci0JYm8gPSBnZW1fdG9fYXN0X2JvKG9iaik7CisJZ2JvID0gZHJtX2dlbV92 cmFtX29mX2dlbShvYmopOwogCi0JcmV0ID0gYXN0X2JvX3Jlc2VydmUoYm8sIGZhbHNlKTsKKwly ZXQgPSBkcm1fZ2VtX3ZyYW1fcmVzZXJ2ZShnYm8sIGZhbHNlKTsKIAlpZiAocmV0KQogCQlnb3Rv IGZhaWw7CiAKLQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPmJvLCAwLCBiby0+Ym8ubnVtX3BhZ2Vz LCAmdW9ial9tYXApOworCXJldCA9IHR0bV9ib19rbWFwKCZnYm8tPmJvLCAwLCBnYm8tPmJvLm51 bV9wYWdlcywgJnVvYmpfbWFwKTsKIAogCXNyYyA9IHR0bV9rbWFwX29ial92aXJ0dWFsKCZ1b2Jq X21hcCwgJnNyY19pc2lvbWVtKTsKIAlkc3QgPSB0dG1fa21hcF9vYmpfdmlydHVhbCgmYXN0LT5j YWNoZV9rbWFwLCAmZHN0X2lzaW9tZW0pOwpAQCAtMTIxNiw3ICsxMjMwLDcgQEAgc3RhdGljIGlu dCBhc3RfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAkvKiB3cml0ZSBjaGVj a3N1bSArIHNpZ25hdHVyZSAqLwogCXR0bV9ib19rdW5tYXAoJnVvYmpfbWFwKTsKLQlhc3RfYm9f dW5yZXNlcnZlKGJvKTsKKwlkcm1fZ2VtX3ZyYW1fdW5yZXNlcnZlKGdibyk7CiAJewogCQl1OCAq ZHN0ID0gKHU4ICopYXN0LT5jYWNoZV9rbWFwLnZpcnR1YWwgKyAoQVNUX0hXQ19TSVpFICsgQVNU X0hXQ19TSUdOQVRVUkVfU0laRSkqYXN0LT5uZXh0X2N1cnNvciArIEFTVF9IV0NfU0laRTsKIAkJ d3JpdGVsKGNzdW0sIGRzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90 dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3R0bS5jCmluZGV4IDc1ZDQ3N2IzNzg1NC4u Nzk0ZWJiNzU1YTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90dG0uYwpAQCAtMzYsMjMgKzM2LDYgQEAgYXN0 X2JkZXYoc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkKQogCXJldHVybiBjb250YWluZXJfb2YoYmQs IHN0cnVjdCBhc3RfcHJpdmF0ZSwgdHRtLmJkZXYpOwogfQogCi1zdGF0aWMgdm9pZCBhc3RfYm9f dHRtX2Rlc3Ryb3koc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pCi17Ci0Jc3RydWN0IGFz dF9ibyAqYm87Ci0KLQlibyA9IGNvbnRhaW5lcl9vZih0Ym8sIHN0cnVjdCBhc3RfYm8sIGJvKTsK LQotCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJmJvLT5nZW0pOwotCWtmcmVlKGJvKTsKLX0KLQot c3RhdGljIGJvb2wgYXN0X3R0bV9ib19pc19hc3RfYm8oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 ICpibykKLXsKLQlpZiAoYm8tPmRlc3Ryb3kgPT0gJmFzdF9ib190dG1fZGVzdHJveSkKLQkJcmV0 dXJuIHRydWU7Ci0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50CiBhc3RfYm9faW5pdF9t ZW1fdHlwZShzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgdWludDMyX3QgdHlwZSwKIAkJICAg ICBzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbikKQEAgLTc4LDI2ICs2MSw2IEBAIGFz dF9ib19pbml0X21lbV90eXBlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0 eXBlLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZAotYXN0X2JvX2V2aWN0X2ZsYWdzKHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdCB0dG1fcGxhY2VtZW50ICpwbCkKLXsK LQlzdHJ1Y3QgYXN0X2JvICphc3RibyA9IGFzdF9ibyhibyk7Ci0KLQlpZiAoIWFzdF90dG1fYm9f aXNfYXN0X2JvKGJvKSkKLQkJcmV0dXJuOwotCi0JYXN0X3R0bV9wbGFjZW1lbnQoYXN0Ym8sIFRU TV9QTF9GTEFHX1NZU1RFTSk7Ci0JKnBsID0gYXN0Ym8tPnBsYWNlbWVudDsKLX0KLQotc3RhdGlj IGludCBhc3RfYm9fdmVyaWZ5X2FjY2VzcyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBz dHJ1Y3QgZmlsZSAqZmlscCkKLXsKLQlzdHJ1Y3QgYXN0X2JvICphc3RibyA9IGFzdF9ibyhibyk7 Ci0KLQlyZXR1cm4gZHJtX3ZtYV9ub2RlX3ZlcmlmeV9hY2Nlc3MoJmFzdGJvLT5nZW0udm1hX25v ZGUsCi0JCQkJCSAgZmlscC0+cHJpdmF0ZV9kYXRhKTsKLX0KLQogc3RhdGljIGludCBhc3RfdHRt X2lvX21lbV9yZXNlcnZlKHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAogCQkJCSAgc3RydWN0 IHR0bV9tZW1fcmVnICptZW0pCiB7CkBAIC0xNjIsOSArMTI1LDkgQEAgc3RydWN0IHR0bV9ib19k cml2ZXIgYXN0X2JvX2RyaXZlciA9IHsKIAkudHRtX3R0X2NyZWF0ZSA9IGFzdF90dG1fdHRfY3Jl YXRlLAogCS5pbml0X21lbV90eXBlID0gYXN0X2JvX2luaXRfbWVtX3R5cGUsCiAJLmV2aWN0aW9u X3ZhbHVhYmxlID0gdHRtX2JvX2V2aWN0aW9uX3ZhbHVhYmxlLAotCS5ldmljdF9mbGFncyA9IGFz dF9ib19ldmljdF9mbGFncywKKwkuZXZpY3RfZmxhZ3MgPSBkcm1fZ2VtX3ZyYW1fYm9fZHJpdmVy X2V2aWN0X2ZsYWdzLAogCS5tb3ZlID0gTlVMTCwKLQkudmVyaWZ5X2FjY2VzcyA9IGFzdF9ib192 ZXJpZnlfYWNjZXNzLAorCS52ZXJpZnlfYWNjZXNzID0gZHJtX2dlbV92cmFtX2JvX2RyaXZlcl92 ZXJpZnlfYWNjZXNzLAogCS5pb19tZW1fcmVzZXJ2ZSA9ICZhc3RfdHRtX2lvX21lbV9yZXNlcnZl LAogCS5pb19tZW1fZnJlZSA9ICZhc3RfdHRtX2lvX21lbV9mcmVlLAogfTsKQEAgLTIxMCwxMzcg KzE3Myw2IEBAIHZvaWQgYXN0X21tX2Zpbmkoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCiAJCQkJ cGNpX3Jlc291cmNlX2xlbihkZXYtPnBkZXYsIDApKTsKIH0KIAotdm9pZCBhc3RfdHRtX3BsYWNl bWVudChzdHJ1Y3QgYXN0X2JvICpibywgaW50IGRvbWFpbikKLXsKLQl1MzIgYyA9IDA7Ci0JdW5z aWduZWQgaTsKLQotCWJvLT5wbGFjZW1lbnQucGxhY2VtZW50ID0gYm8tPnBsYWNlbWVudHM7Ci0J Ym8tPnBsYWNlbWVudC5idXN5X3BsYWNlbWVudCA9IGJvLT5wbGFjZW1lbnRzOwotCWlmIChkb21h aW4gJiBUVE1fUExfRkxBR19WUkFNKQotCQliby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRN X1BMX0ZMQUdfV0MgfCBUVE1fUExfRkxBR19VTkNBQ0hFRCB8IFRUTV9QTF9GTEFHX1ZSQU07Ci0J aWYgKGRvbWFpbiAmIFRUTV9QTF9GTEFHX1NZU1RFTSkKLQkJYm8tPnBsYWNlbWVudHNbYysrXS5m bGFncyA9IFRUTV9QTF9GTEFHX0NBQ0hFRCB8IFRUTV9QTF9GTEFHX1NZU1RFTTsKLQlpZiAoIWMp Ci0JCWJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQgfCBUVE1f UExfRkxBR19TWVNURU07Ci0JYm8tPnBsYWNlbWVudC5udW1fcGxhY2VtZW50ID0gYzsKLQliby0+ cGxhY2VtZW50Lm51bV9idXN5X3BsYWNlbWVudCA9IGM7Ci0JZm9yIChpID0gMDsgaSA8IGM7ICsr aSkgewotCQliby0+cGxhY2VtZW50c1tpXS5mcGZuID0gMDsKLQkJYm8tPnBsYWNlbWVudHNbaV0u bHBmbiA9IDA7Ci0JfQotfQotCi1pbnQgYXN0X2JvX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgc2l6ZSwgaW50IGFsaWduLAotCQkgIHVpbnQzMl90IGZsYWdzLCBzdHJ1Y3QgYXN0 X2JvICoqcGFzdGJvKQotewotCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJp dmF0ZTsKLQlzdHJ1Y3QgYXN0X2JvICphc3RibzsKLQlzaXplX3QgYWNjX3NpemU7Ci0JaW50IHJl dDsKLQotCWFzdGJvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGFzdF9ibyksIEdGUF9LRVJORUwp OwotCWlmICghYXN0Ym8pCi0JCXJldHVybiAtRU5PTUVNOwotCi0JcmV0ID0gZHJtX2dlbV9vYmpl Y3RfaW5pdChkZXYsICZhc3Riby0+Z2VtLCBzaXplKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycm9y OwotCi0JYXN0Ym8tPmJvLmJkZXYgPSAmYXN0LT50dG0uYmRldjsKLQotCWFzdF90dG1fcGxhY2Vt ZW50KGFzdGJvLCBUVE1fUExfRkxBR19WUkFNIHwgVFRNX1BMX0ZMQUdfU1lTVEVNKTsKLQotCWFj Y19zaXplID0gdHRtX2JvX2RtYV9hY2Nfc2l6ZSgmYXN0LT50dG0uYmRldiwgc2l6ZSwKLQkJCQkg ICAgICAgc2l6ZW9mKHN0cnVjdCBhc3RfYm8pKTsKLQotCXJldCA9IHR0bV9ib19pbml0KCZhc3Qt PnR0bS5iZGV2LCAmYXN0Ym8tPmJvLCBzaXplLAotCQkJICB0dG1fYm9fdHlwZV9kZXZpY2UsICZh c3Riby0+cGxhY2VtZW50LAotCQkJICBhbGlnbiA+PiBQQUdFX1NISUZULCBmYWxzZSwgYWNjX3Np emUsCi0JCQkgIE5VTEwsIE5VTEwsIGFzdF9ib190dG1fZGVzdHJveSk7Ci0JaWYgKHJldCkKLQkJ Z290byBlcnJvcjsKLQotCSpwYXN0Ym8gPSBhc3RibzsKLQlyZXR1cm4gMDsKLWVycm9yOgotCWtm cmVlKGFzdGJvKTsKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW5saW5lIHU2NCBhc3RfYm9f Z3B1X29mZnNldChzdHJ1Y3QgYXN0X2JvICpibykKLXsKLQlyZXR1cm4gYm8tPmJvLm9mZnNldDsK LX0KLQotaW50IGFzdF9ib19waW4oc3RydWN0IGFzdF9ibyAqYm8sIHUzMiBwbF9mbGFnLCB1NjQg KmdwdV9hZGRyKQotewotCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBm YWxzZSB9OwotCWludCBpLCByZXQ7Ci0KLQlpZiAoYm8tPnBpbl9jb3VudCkgewotCQliby0+cGlu X2NvdW50Kys7Ci0JCWlmIChncHVfYWRkcikKLQkJCSpncHVfYWRkciA9IGFzdF9ib19ncHVfb2Zm c2V0KGJvKTsKLQl9Ci0KLQlhc3RfdHRtX3BsYWNlbWVudChibywgcGxfZmxhZyk7Ci0JZm9yIChp ID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudDsgaSsrKQotCQliby0+cGxhY2Vt ZW50c1tpXS5mbGFncyB8PSBUVE1fUExfRkxBR19OT19FVklDVDsKLQlyZXQgPSB0dG1fYm9fdmFs aWRhdGUoJmJvLT5ibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCWlmIChyZXQpCi0JCXJldHVy biByZXQ7Ci0KLQliby0+cGluX2NvdW50ID0gMTsKLQlpZiAoZ3B1X2FkZHIpCi0JCSpncHVfYWRk ciA9IGFzdF9ib19ncHVfb2Zmc2V0KGJvKTsKLQlyZXR1cm4gMDsKLX0KLQotaW50IGFzdF9ib191 bnBpbihzdHJ1Y3QgYXN0X2JvICpibykKLXsKLQlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4 ID0geyBmYWxzZSwgZmFsc2UgfTsKLQlpbnQgaTsKLQlpZiAoIWJvLT5waW5fY291bnQpIHsKLQkJ RFJNX0VSUk9SKCJ1bnBpbiBiYWQgJXBcbiIsIGJvKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWJvLT5w aW5fY291bnQtLTsKLQlpZiAoYm8tPnBpbl9jb3VudCkKLQkJcmV0dXJuIDA7Ci0KLQlmb3IgKGkg PSAwOyBpIDwgYm8tPnBsYWNlbWVudC5udW1fcGxhY2VtZW50IDsgaSsrKQotCQliby0+cGxhY2Vt ZW50c1tpXS5mbGFncyAmPSB+VFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0JcmV0dXJuIHR0bV9ib192 YWxpZGF0ZSgmYm8tPmJvLCAmYm8tPnBsYWNlbWVudCwgJmN0eCk7Ci19Ci0KLWludCBhc3RfYm9f cHVzaF9zeXNyYW0oc3RydWN0IGFzdF9ibyAqYm8pCi17Ci0Jc3RydWN0IHR0bV9vcGVyYXRpb25f Y3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0JaW50IGksIHJldDsKLQlpZiAoIWJvLT5waW5f Y291bnQpIHsKLQkJRFJNX0VSUk9SKCJ1bnBpbiBiYWQgJXBcbiIsIGJvKTsKLQkJcmV0dXJuIDA7 Ci0JfQotCWJvLT5waW5fY291bnQtLTsKLQlpZiAoYm8tPnBpbl9jb3VudCkKLQkJcmV0dXJuIDA7 Ci0KLQlpZiAoYm8tPmttYXAudmlydHVhbCkKLQkJdHRtX2JvX2t1bm1hcCgmYm8tPmttYXApOwot Ci0JYXN0X3R0bV9wbGFjZW1lbnQoYm8sIFRUTV9QTF9GTEFHX1NZU1RFTSk7Ci0JZm9yIChpID0g MDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA7IGkrKykKLQkJYm8tPnBsYWNlbWVu dHNbaV0uZmxhZ3MgfD0gVFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7Ci0KLQlyZXQgPSB0dG1fYm9fdmFs aWRhdGUoJmJvLT5ibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCWlmIChyZXQpIHsKLQkJRFJN X0VSUk9SKCJwdXNoaW5nIHRvIFZSQU0gZmFpbGVkXG4iKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0J cmV0dXJuIDA7Ci19Ci0KIGludCBhc3RfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpCiB7CiAJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYgPSBmaWxw LT5wcml2YXRlX2RhdGE7Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA==