From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v3 18/23] drm/qxl: remove dead qxl fbdev emulation code Date: Fri, 18 Jan 2019 13:20:15 +0100 Message-ID: <20190118122020.27596-19-kraxel@redhat.com> References: <20190118122020.27596-1-kraxel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190118122020.27596-1-kraxel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: spice-devel-bounces@lists.freedesktop.org Sender: "Spice-devel" To: dri-devel@lists.freedesktop.org Cc: David Airlie , open list , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , Gerd Hoffmann , Daniel Vetter , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , Dave Airlie List-Id: dri-devel@lists.freedesktop.org TG92ZWx5IGRpZmZzdGF0LCB0aGFua3MgdG8gdGhlIG5ldyBnZW5lcmljIGZiZGV2IGVtdWxhdGlv bi4KCiBkcm0vcXhsL01ha2VmaWxlICAgfCAgICAyCiBkcm0vcXhsL3F4bF9kcmF3LmMgfCAgMjMy IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRybS9xeGwvcXhsX2Ry di5oICB8ICAgMjEgLS0tCiBkcm0vcXhsL3F4bF9mYi5jICAgfCAgMzAwIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTaWduZWQtb2ZmLWJ5OiBH ZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcXhs L3F4bF9kcnYuaCAgfCAgMjEgLS0tCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcmF3LmMgfCAy MzIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZmIuYyAgIHwgMzAwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlICAgfCAgIDIgKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDU1NCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9mYi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3F4bC9xeGxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaAppbmRleCA4YzNh ZjFjZGJlLi40YTAzMzFiM2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaApAQCAtMjIwLDggKzIyMCw2 IEBAIHN0cnVjdCBxeGxfZGV2aWNlIHsKIAlzdHJ1Y3QgcXhsX21tYW4JCW1tYW47CiAJc3RydWN0 IHF4bF9nZW0JCWdlbTsKIAotCXN0cnVjdCBkcm1fZmJfaGVscGVyCWZiX2hlbHBlcjsKLQogCXZv aWQgKnJhbV9waHlzaWNhbDsKIAogCXN0cnVjdCBxeGxfcmluZyAqcmVsZWFzZV9yaW5nOwpAQCAt MzIyLDEyICszMjAsNiBAQCBxeGxfYm9fcGh5c2ljYWxfYWRkcmVzcyhzdHJ1Y3QgcXhsX2Rldmlj ZSAqcWRldiwgc3RydWN0IHF4bF9ibyAqYm8sCiAJcmV0dXJuIHNsb3QtPmhpZ2hfYml0cyB8IChi by0+dGJvLm9mZnNldCAtIHNsb3QtPmdwdV9vZmZzZXQgKyBvZmZzZXQpOwogfQogCi0vKiBxeGxf ZmIuYyAqLwotI2RlZmluZSBRWExGQl9DT05OX0xJTUlUIDEKLQotaW50IHF4bF9mYmRldl9pbml0 KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KTsKLXZvaWQgcXhsX2ZiZGV2X2Zpbmkoc3RydWN0IHF4 bF9kZXZpY2UgKnFkZXYpOwotCiAvKiBxeGxfZGlzcGxheS5jICovCiB2b2lkIHF4bF9kaXNwbGF5 X3JlYWRfY2xpZW50X21vbml0b3JzX2NvbmZpZyhzdHJ1Y3QgcXhsX2RldmljZSAqcWRldik7CiBp bnQgcXhsX2NyZWF0ZV9tb25pdG9yc19vYmplY3Qoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpOwpA QCAtNDMyLDkgKzQyNCw2IEBAIGludCBxeGxfYWxsb2NfYm9fcmVzZXJ2ZWQoc3RydWN0IHF4bF9k ZXZpY2UgKnFkZXYsCiAJCQkgIHN0cnVjdCBxeGxfYm8gKipfYm8pOwogLyogcXhsIGRyYXdpbmcg Y29tbWFuZHMgKi8KIAotdm9pZCBxeGxfZHJhd19vcGFxdWVfZmIoY29uc3Qgc3RydWN0IHF4bF9m Yl9pbWFnZSAqcXhsX2ZiX2ltYWdlLAotCQkJaW50IHN0cmlkZSAvKiBmaWxsZWQgaW4gaWYgMCAq Lyk7Ci0KIHZvaWQgcXhsX2RyYXdfZGlydHlfZmIoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCiAJ CSAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJICAgICAgIHN0cnVjdCBxeGxf Ym8gKmJvLApAQCAtNDQzLDEzICs0MzIsNiBAQCB2b2lkIHF4bF9kcmF3X2RpcnR5X2ZiKHN0cnVj dCBxeGxfZGV2aWNlICpxZGV2LAogCQkgICAgICAgdW5zaWduZWQgaW50IG51bV9jbGlwcywgaW50 IGluYywKIAkJICAgICAgIHVpbnQzMl90IGR1bWJfc2hhZG93X29mZnNldCk7CiAKLXZvaWQgcXhs X2RyYXdfZmlsbChzdHJ1Y3QgcXhsX2RyYXdfZmlsbCAqcXhsX2RyYXdfZmlsbF9yZWMpOwotCi12 b2lkIHF4bF9kcmF3X2NvcHlhcmVhKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAotCQkgICAgICAg dTMyIHdpZHRoLCB1MzIgaGVpZ2h0LAotCQkgICAgICAgdTMyIHN4LCB1MzIgc3ksCi0JCSAgICAg ICB1MzIgZHgsIHUzMiBkeSk7Ci0KIHZvaWQgcXhsX3JlbGVhc2VfZnJlZShzdHJ1Y3QgcXhsX2Rl dmljZSAqcWRldiwKIAkJICAgICAgc3RydWN0IHF4bF9yZWxlYXNlICpyZWxlYXNlKTsKIApAQCAt NDgxLDkgKzQ2Myw2IEBAIGludCBxeGxfZ2VtX3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosCiBpbnQgcXhsX2lycV9pbml0KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KTsKIGly cXJldHVybl90IHF4bF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpOwogCi0vKiBxeGxf ZmIuYyAqLwotYm9vbCBxeGxfZmJkZXZfcW9ial9pc19mYihzdHJ1Y3QgcXhsX2RldmljZSAqcWRl diwgc3RydWN0IHF4bF9ibyAqcW9iaik7Ci0KIGludCBxeGxfZGVidWdmc19hZGRfZmlsZXMoc3Ry dWN0IHF4bF9kZXZpY2UgKnFkZXYsCiAJCQkgIHN0cnVjdCBkcm1faW5mb19saXN0ICpmaWxlcywK IAkJCSAgdW5zaWduZWQgaW50IG5maWxlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9kcmF3LmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcmF3LmMKaW5kZXggNTMx M2FkMjFjMS4uOTdjM2YxYTk1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZHJhdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2RyYXcuYwpAQCAtMTA5LDE1MiAr MTA5LDYgQEAgbWFrZV9kcmF3YWJsZShzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwgaW50IHN1cmZh Y2UsIHVpbnQ4X3QgdHlwZSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBhbGxvY19wYWxl dHRlX29iamVjdChzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKLQkJCQlzdHJ1Y3QgcXhsX3JlbGVh c2UgKnJlbGVhc2UsCi0JCQkJc3RydWN0IHF4bF9ibyAqKnBhbGV0dGVfYm8pCi17Ci0JcmV0dXJu IHF4bF9hbGxvY19ib19yZXNlcnZlZChxZGV2LCByZWxlYXNlLAotCQkJCSAgICAgc2l6ZW9mKHN0 cnVjdCBxeGxfcGFsZXR0ZSkgKyBzaXplb2YodWludDMyX3QpICogMiwKLQkJCQkgICAgIHBhbGV0 dGVfYm8pOwotfQotCi1zdGF0aWMgaW50IHF4bF9wYWxldHRlX2NyZWF0ZV8xYml0KHN0cnVjdCBx eGxfYm8gKnBhbGV0dGVfYm8sCi0JCQkJICAgc3RydWN0IHF4bF9yZWxlYXNlICpyZWxlYXNlLAot CQkJCSAgIGNvbnN0IHN0cnVjdCBxeGxfZmJfaW1hZ2UgKnF4bF9mYl9pbWFnZSkKLXsKLQljb25z dCBzdHJ1Y3QgZmJfaW1hZ2UgKmZiX2ltYWdlID0gJnF4bF9mYl9pbWFnZS0+ZmJfaW1hZ2U7Ci0J dWludDMyX3QgdmlzdWFsID0gcXhsX2ZiX2ltYWdlLT52aXN1YWw7Ci0JY29uc3QgdWludDMyX3Qg KnBzZXVkb19wYWxldHRlID0gcXhsX2ZiX2ltYWdlLT5wc2V1ZG9fcGFsZXR0ZTsKLQlzdHJ1Y3Qg cXhsX3BhbGV0dGUgKnBhbDsKLQlpbnQgcmV0OwotCXVpbnQzMl90IGZnY29sb3IsIGJnY29sb3I7 Ci0Jc3RhdGljIHVpbnQ2NF90IHVuaXF1ZTsgLyogd2UgbWFrZSBubyBhdHRlbXB0IHRvIGFjdHVh bGx5IHNldCB0aGlzCi0JCQkJICogY29ycmVjdGx5IGdsb2JhbHksIHNpbmNlIHRoYXQgd291bGQg cmVxdWlyZQotCQkJCSAqIHRyYWNraW5nIGFsbCBvZiBvdXIgcGFsZXR0ZXMuICovCi0JcmV0ID0g cXhsX2JvX2ttYXAocGFsZXR0ZV9ibywgKHZvaWQgKiopJnBhbCk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQlwYWwtPm51bV9lbnRzID0gMjsKLQlwYWwtPnVuaXF1ZSA9IHVuaXF1ZSsrOwot CWlmICh2aXN1YWwgPT0gRkJfVklTVUFMX1RSVUVDT0xPUiB8fCB2aXN1YWwgPT0gRkJfVklTVUFM X0RJUkVDVENPTE9SKSB7Ci0JCS8qIE5COiB0aGlzIGlzIHRoZSBvbmx5IHVzZWQgYnJhbmNoIGN1 cnJlbnRseS4gKi8KLQkJZmdjb2xvciA9IHBzZXVkb19wYWxldHRlW2ZiX2ltYWdlLT5mZ19jb2xv cl07Ci0JCWJnY29sb3IgPSBwc2V1ZG9fcGFsZXR0ZVtmYl9pbWFnZS0+YmdfY29sb3JdOwotCX0g ZWxzZSB7Ci0JCWZnY29sb3IgPSBmYl9pbWFnZS0+ZmdfY29sb3I7Ci0JCWJnY29sb3IgPSBmYl9p bWFnZS0+YmdfY29sb3I7Ci0JfQotCXBhbC0+ZW50c1swXSA9IGJnY29sb3I7Ci0JcGFsLT5lbnRz WzFdID0gZmdjb2xvcjsKLQlxeGxfYm9fa3VubWFwKHBhbGV0dGVfYm8pOwotCXJldHVybiAwOwot fQotCi12b2lkIHF4bF9kcmF3X29wYXF1ZV9mYihjb25zdCBzdHJ1Y3QgcXhsX2ZiX2ltYWdlICpx eGxfZmJfaW1hZ2UsCi0JCQlpbnQgc3RyaWRlIC8qIGZpbGxlZCBpbiBpZiAwICovKQotewotCXN0 cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0gcXhsX2ZiX2ltYWdlLT5xZGV2OwotCXN0cnVjdCBxeGxf ZHJhd2FibGUgKmRyYXdhYmxlOwotCXN0cnVjdCBxeGxfcmVjdCByZWN0OwotCWNvbnN0IHN0cnVj dCBmYl9pbWFnZSAqZmJfaW1hZ2UgPSAmcXhsX2ZiX2ltYWdlLT5mYl9pbWFnZTsKLQlpbnQgeCA9 IGZiX2ltYWdlLT5keDsKLQlpbnQgeSA9IGZiX2ltYWdlLT5keTsKLQlpbnQgd2lkdGggPSBmYl9p bWFnZS0+d2lkdGg7Ci0JaW50IGhlaWdodCA9IGZiX2ltYWdlLT5oZWlnaHQ7Ci0JY29uc3QgY2hh ciAqc3JjID0gZmJfaW1hZ2UtPmRhdGE7Ci0JaW50IGRlcHRoID0gZmJfaW1hZ2UtPmRlcHRoOwot CXN0cnVjdCBxeGxfcmVsZWFzZSAqcmVsZWFzZTsKLQlzdHJ1Y3QgcXhsX2ltYWdlICppbWFnZTsK LQlpbnQgcmV0OwotCXN0cnVjdCBxeGxfZHJtX2ltYWdlICpkaW1hZ2U7Ci0Jc3RydWN0IHF4bF9i byAqcGFsZXR0ZV9ibyA9IE5VTEw7Ci0KLQlpZiAoc3RyaWRlID09IDApCi0JCXN0cmlkZSA9IGRl cHRoICogd2lkdGggLyA4OwotCi0JcmV0ID0gYWxsb2NfZHJhd2FibGUocWRldiwgJnJlbGVhc2Up OwotCWlmIChyZXQpCi0JCXJldHVybjsKLQotCXJldCA9IHF4bF9pbWFnZV9hbGxvY19vYmplY3Rz KHFkZXYsIHJlbGVhc2UsCi0JCQkJICAgICAgJmRpbWFnZSwKLQkJCQkgICAgICBoZWlnaHQsIHN0 cmlkZSk7Ci0JaWYgKHJldCkKLQkJZ290byBvdXRfZnJlZV9kcmF3YWJsZTsKLQotCWlmIChkZXB0 aCA9PSAxKSB7Ci0JCXJldCA9IGFsbG9jX3BhbGV0dGVfb2JqZWN0KHFkZXYsIHJlbGVhc2UsICZw YWxldHRlX2JvKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0X2ZyZWVfaW1hZ2U7Ci0JfQotCi0J LyogZG8gYSByZXNlcnZhdGlvbiBydW4gb3ZlciBhbGwgdGhlIG9iamVjdHMgd2UganVzdCBhbGxv Y2F0ZWQgKi8KLQlyZXQgPSBxeGxfcmVsZWFzZV9yZXNlcnZlX2xpc3QocmVsZWFzZSwgdHJ1ZSk7 Ci0JaWYgKHJldCkKLQkJZ290byBvdXRfZnJlZV9wYWxldHRlOwotCi0JcmVjdC5sZWZ0ID0geDsK LQlyZWN0LnJpZ2h0ID0geCArIHdpZHRoOwotCXJlY3QudG9wID0geTsKLQlyZWN0LmJvdHRvbSA9 IHkgKyBoZWlnaHQ7Ci0KLQlyZXQgPSBtYWtlX2RyYXdhYmxlKHFkZXYsIDAsIFFYTF9EUkFXX0NP UFksICZyZWN0LCByZWxlYXNlKTsKLQlpZiAocmV0KSB7Ci0JCXF4bF9yZWxlYXNlX2JhY2tvZmZf cmVzZXJ2ZV9saXN0KHJlbGVhc2UpOwotCQlnb3RvIG91dF9mcmVlX3BhbGV0dGU7Ci0JfQotCi0J cmV0ID0gcXhsX2ltYWdlX2luaXQocWRldiwgcmVsZWFzZSwgZGltYWdlLAotCQkJICAgICAoY29u c3QgdWludDhfdCAqKXNyYywgMCwgMCwKLQkJCSAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIHN0 cmlkZSk7Ci0JaWYgKHJldCkgewotCQlxeGxfcmVsZWFzZV9iYWNrb2ZmX3Jlc2VydmVfbGlzdChy ZWxlYXNlKTsKLQkJcXhsX3JlbGVhc2VfZnJlZShxZGV2LCByZWxlYXNlKTsKLQkJcmV0dXJuOwot CX0KLQotCWlmIChkZXB0aCA9PSAxKSB7Ci0JCXZvaWQgKnB0cjsKLQotCQlyZXQgPSBxeGxfcGFs ZXR0ZV9jcmVhdGVfMWJpdChwYWxldHRlX2JvLCByZWxlYXNlLCBxeGxfZmJfaW1hZ2UpOwotCi0J CXB0ciA9IHF4bF9ib19rbWFwX2F0b21pY19wYWdlKHFkZXYsIGRpbWFnZS0+Ym8sIDApOwotCQlp bWFnZSA9IHB0cjsKLQkJaW1hZ2UtPnUuYml0bWFwLnBhbGV0dGUgPQotCQkJcXhsX2JvX3BoeXNp Y2FsX2FkZHJlc3MocWRldiwgcGFsZXR0ZV9ibywgMCk7Ci0JCXF4bF9ib19rdW5tYXBfYXRvbWlj X3BhZ2UocWRldiwgZGltYWdlLT5ibywgcHRyKTsKLQl9Ci0KLQlkcmF3YWJsZSA9IChzdHJ1Y3Qg cXhsX2RyYXdhYmxlICopcXhsX3JlbGVhc2VfbWFwKHFkZXYsIHJlbGVhc2UpOwotCi0JZHJhd2Fi bGUtPnUuY29weS5zcmNfYXJlYS50b3AgPSAwOwotCWRyYXdhYmxlLT51LmNvcHkuc3JjX2FyZWEu Ym90dG9tID0gaGVpZ2h0OwotCWRyYXdhYmxlLT51LmNvcHkuc3JjX2FyZWEubGVmdCA9IDA7Ci0J ZHJhd2FibGUtPnUuY29weS5zcmNfYXJlYS5yaWdodCA9IHdpZHRoOwotCi0JZHJhd2FibGUtPnUu Y29weS5yb3BfZGVzY3JpcHRvciA9IFNQSUNFX1JPUERfT1BfUFVUOwotCWRyYXdhYmxlLT51LmNv cHkuc2NhbGVfbW9kZSA9IDA7Ci0JZHJhd2FibGUtPnUuY29weS5tYXNrLmZsYWdzID0gMDsKLQlk cmF3YWJsZS0+dS5jb3B5Lm1hc2sucG9zLnggPSAwOwotCWRyYXdhYmxlLT51LmNvcHkubWFzay5w b3MueSA9IDA7Ci0JZHJhd2FibGUtPnUuY29weS5tYXNrLmJpdG1hcCA9IDA7Ci0KLQlkcmF3YWJs ZS0+dS5jb3B5LnNyY19iaXRtYXAgPQotCQlxeGxfYm9fcGh5c2ljYWxfYWRkcmVzcyhxZGV2LCBk aW1hZ2UtPmJvLCAwKTsKLQlxeGxfcmVsZWFzZV91bm1hcChxZGV2LCByZWxlYXNlLCAmZHJhd2Fi bGUtPnJlbGVhc2VfaW5mbyk7Ci0KLQlxeGxfcHVzaF9jb21tYW5kX3JpbmdfcmVsZWFzZShxZGV2 LCByZWxlYXNlLCBRWExfQ01EX0RSQVcsIGZhbHNlKTsKLQlxeGxfcmVsZWFzZV9mZW5jZV9idWZm ZXJfb2JqZWN0cyhyZWxlYXNlKTsKLQotb3V0X2ZyZWVfcGFsZXR0ZToKLQlxeGxfYm9fdW5yZWYo JnBhbGV0dGVfYm8pOwotb3V0X2ZyZWVfaW1hZ2U6Ci0JcXhsX2ltYWdlX2ZyZWVfb2JqZWN0cyhx ZGV2LCBkaW1hZ2UpOwotb3V0X2ZyZWVfZHJhd2FibGU6Ci0JaWYgKHJldCkKLQkJZnJlZV9kcmF3 YWJsZShxZGV2LCByZWxlYXNlKTsKLX0KLQogLyogcHVzaCBhIGRyYXcgY29tbWFuZCB1c2luZyB0 aGUgZ2l2ZW4gY2xpcHBpbmcgcmVjdGFuZ2xlcyBhcwogICogdGhlIHNvdXJjZXMgZnJvbSB0aGUg c2hhZG93IGZyYW1lYnVmZmVyLgogICoKQEAgLTQwMiw4OSArMjU2LDMgQEAgdm9pZCBxeGxfZHJh d19kaXJ0eV9mYihzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKIAkJZnJlZV9kcmF3YWJsZShxZGV2 LCByZWxlYXNlKTsKIAogfQotCi12b2lkIHF4bF9kcmF3X2NvcHlhcmVhKHN0cnVjdCBxeGxfZGV2 aWNlICpxZGV2LAotCQkgICAgICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LAotCQkgICAgICAgdTMy IHN4LCB1MzIgc3ksCi0JCSAgICAgICB1MzIgZHgsIHUzMiBkeSkKLXsKLQlzdHJ1Y3QgcXhsX2Ry YXdhYmxlICpkcmF3YWJsZTsKLQlzdHJ1Y3QgcXhsX3JlY3QgcmVjdDsKLQlzdHJ1Y3QgcXhsX3Jl bGVhc2UgKnJlbGVhc2U7Ci0JaW50IHJldDsKLQotCXJldCA9IGFsbG9jX2RyYXdhYmxlKHFkZXYs ICZyZWxlYXNlKTsKLQlpZiAocmV0KQotCQlyZXR1cm47Ci0KLQkvKiBkbyBhIHJlc2VydmF0aW9u IHJ1biBvdmVyIGFsbCB0aGUgb2JqZWN0cyB3ZSBqdXN0IGFsbG9jYXRlZCAqLwotCXJldCA9IHF4 bF9yZWxlYXNlX3Jlc2VydmVfbGlzdChyZWxlYXNlLCB0cnVlKTsKLQlpZiAocmV0KQotCQlnb3Rv IG91dF9mcmVlX3JlbGVhc2U7Ci0KLQlyZWN0LmxlZnQgPSBkeDsKLQlyZWN0LnRvcCA9IGR5Owot CXJlY3QucmlnaHQgPSBkeCArIHdpZHRoOwotCXJlY3QuYm90dG9tID0gZHkgKyBoZWlnaHQ7Ci0J cmV0ID0gbWFrZV9kcmF3YWJsZShxZGV2LCAwLCBRWExfQ09QWV9CSVRTLCAmcmVjdCwgcmVsZWFz ZSk7Ci0JaWYgKHJldCkgewotCQlxeGxfcmVsZWFzZV9iYWNrb2ZmX3Jlc2VydmVfbGlzdChyZWxl YXNlKTsKLQkJZ290byBvdXRfZnJlZV9yZWxlYXNlOwotCX0KLQotCWRyYXdhYmxlID0gKHN0cnVj dCBxeGxfZHJhd2FibGUgKilxeGxfcmVsZWFzZV9tYXAocWRldiwgcmVsZWFzZSk7Ci0JZHJhd2Fi bGUtPnUuY29weV9iaXRzLnNyY19wb3MueCA9IHN4OwotCWRyYXdhYmxlLT51LmNvcHlfYml0cy5z cmNfcG9zLnkgPSBzeTsKLQlxeGxfcmVsZWFzZV91bm1hcChxZGV2LCByZWxlYXNlLCAmZHJhd2Fi bGUtPnJlbGVhc2VfaW5mbyk7Ci0KLQlxeGxfcHVzaF9jb21tYW5kX3JpbmdfcmVsZWFzZShxZGV2 LCByZWxlYXNlLCBRWExfQ01EX0RSQVcsIGZhbHNlKTsKLQlxeGxfcmVsZWFzZV9mZW5jZV9idWZm ZXJfb2JqZWN0cyhyZWxlYXNlKTsKLQotb3V0X2ZyZWVfcmVsZWFzZToKLQlpZiAocmV0KQotCQlm cmVlX2RyYXdhYmxlKHFkZXYsIHJlbGVhc2UpOwotfQotCi12b2lkIHF4bF9kcmF3X2ZpbGwoc3Ry dWN0IHF4bF9kcmF3X2ZpbGwgKnF4bF9kcmF3X2ZpbGxfcmVjKQotewotCXN0cnVjdCBxeGxfZGV2 aWNlICpxZGV2ID0gcXhsX2RyYXdfZmlsbF9yZWMtPnFkZXY7Ci0Jc3RydWN0IHF4bF9yZWN0IHJl Y3QgPSBxeGxfZHJhd19maWxsX3JlYy0+cmVjdDsKLQl1aW50MzJfdCBjb2xvciA9IHF4bF9kcmF3 X2ZpbGxfcmVjLT5jb2xvcjsKLQl1aW50MTZfdCByb3AgPSBxeGxfZHJhd19maWxsX3JlYy0+cm9w OwotCXN0cnVjdCBxeGxfZHJhd2FibGUgKmRyYXdhYmxlOwotCXN0cnVjdCBxeGxfcmVsZWFzZSAq cmVsZWFzZTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gYWxsb2NfZHJhd2FibGUocWRldiwgJnJlbGVh c2UpOwotCWlmIChyZXQpCi0JCXJldHVybjsKLQotCS8qIGRvIGEgcmVzZXJ2YXRpb24gcnVuIG92 ZXIgYWxsIHRoZSBvYmplY3RzIHdlIGp1c3QgYWxsb2NhdGVkICovCi0JcmV0ID0gcXhsX3JlbGVh c2VfcmVzZXJ2ZV9saXN0KHJlbGVhc2UsIHRydWUpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0X2Zy ZWVfcmVsZWFzZTsKLQotCXJldCA9IG1ha2VfZHJhd2FibGUocWRldiwgMCwgUVhMX0RSQVdfRklM TCwgJnJlY3QsIHJlbGVhc2UpOwotCWlmIChyZXQpIHsKLQkJcXhsX3JlbGVhc2VfYmFja29mZl9y ZXNlcnZlX2xpc3QocmVsZWFzZSk7Ci0JCWdvdG8gb3V0X2ZyZWVfcmVsZWFzZTsKLQl9Ci0KLQlk cmF3YWJsZSA9IChzdHJ1Y3QgcXhsX2RyYXdhYmxlICopcXhsX3JlbGVhc2VfbWFwKHFkZXYsIHJl bGVhc2UpOwotCWRyYXdhYmxlLT51LmZpbGwuYnJ1c2gudHlwZSA9IFNQSUNFX0JSVVNIX1RZUEVf U09MSUQ7Ci0JZHJhd2FibGUtPnUuZmlsbC5icnVzaC51LmNvbG9yID0gY29sb3I7Ci0JZHJhd2Fi bGUtPnUuZmlsbC5yb3BfZGVzY3JpcHRvciA9IHJvcDsKLQlkcmF3YWJsZS0+dS5maWxsLm1hc2su ZmxhZ3MgPSAwOwotCWRyYXdhYmxlLT51LmZpbGwubWFzay5wb3MueCA9IDA7Ci0JZHJhd2FibGUt PnUuZmlsbC5tYXNrLnBvcy55ID0gMDsKLQlkcmF3YWJsZS0+dS5maWxsLm1hc2suYml0bWFwID0g MDsKLQotCXF4bF9yZWxlYXNlX3VubWFwKHFkZXYsIHJlbGVhc2UsICZkcmF3YWJsZS0+cmVsZWFz ZV9pbmZvKTsKLQotCXF4bF9wdXNoX2NvbW1hbmRfcmluZ19yZWxlYXNlKHFkZXYsIHJlbGVhc2Us IFFYTF9DTURfRFJBVywgZmFsc2UpOwotCXF4bF9yZWxlYXNlX2ZlbmNlX2J1ZmZlcl9vYmplY3Rz KHJlbGVhc2UpOwotCi1vdXRfZnJlZV9yZWxlYXNlOgotCWlmIChyZXQpCi0JCWZyZWVfZHJhd2Fi bGUocWRldiwgcmVsZWFzZSk7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4 bF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZmIuYwpkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYTgxOWQyNDIyNS4uMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9mYi5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAwICswLDAgQEAKLS8qCi0gKiBDb3B5 cmlnaHQgwqkgMjAxMyBSZWQgSGF0Ci0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgotICoKLSAqIEF1dGhvcnM6Ci0gKiAgICAgRGF2aWQgQWlybGllCi0gKi8KLSNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQotI2luY2x1ZGUgPGRybS9kcm1QLmg+Ci0jaW5jbHVk ZSA8ZHJtL2RybS5oPgotI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgotI2luY2x1ZGUgPGRybS9k cm1fY3J0Y19oZWxwZXIuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgotI2luY2x1 ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgotCi0jaW5jbHVkZSAicXhsX2Ry di5oIgotCi0jaW5jbHVkZSAicXhsX29iamVjdC5oIgotCi1zdGF0aWMgdm9pZCBxeGxfZmJfaW1h Z2VfaW5pdChzdHJ1Y3QgcXhsX2ZiX2ltYWdlICpxeGxfZmJfaW1hZ2UsCi0JCQkgICAgICBzdHJ1 Y3QgcXhsX2RldmljZSAqcWRldiwgc3RydWN0IGZiX2luZm8gKmluZm8sCi0JCQkgICAgICBjb25z dCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQotewotCXF4bF9mYl9pbWFnZS0+cWRldiA9IHFkZXY7 Ci0JaWYgKGluZm8pIHsKLQkJcXhsX2ZiX2ltYWdlLT52aXN1YWwgPSBpbmZvLT5maXgudmlzdWFs OwotCQlpZiAocXhsX2ZiX2ltYWdlLT52aXN1YWwgPT0gRkJfVklTVUFMX1RSVUVDT0xPUiB8fAot CQkgICAgcXhsX2ZiX2ltYWdlLT52aXN1YWwgPT0gRkJfVklTVUFMX0RJUkVDVENPTE9SKQotCQkJ bWVtY3B5KCZxeGxfZmJfaW1hZ2UtPnBzZXVkb19wYWxldHRlLAotCQkJICAgICAgIGluZm8tPnBz ZXVkb19wYWxldHRlLAotCQkJICAgICAgIHNpemVvZihxeGxfZmJfaW1hZ2UtPnBzZXVkb19wYWxl dHRlKSk7Ci0JfSBlbHNlIHsKLQkJIC8qIGZhbGxiYWNrICovCi0JCWlmIChpbWFnZS0+ZGVwdGgg PT0gMSkKLQkJCXF4bF9mYl9pbWFnZS0+dmlzdWFsID0gRkJfVklTVUFMX01PTk8xMDsKLQkJZWxz ZQotCQkJcXhsX2ZiX2ltYWdlLT52aXN1YWwgPSBGQl9WSVNVQUxfRElSRUNUQ09MT1I7Ci0JfQot CWlmIChpbWFnZSkgewotCQltZW1jcHkoJnF4bF9mYl9pbWFnZS0+ZmJfaW1hZ2UsIGltYWdlLAot CQkgICAgICAgc2l6ZW9mKHF4bF9mYl9pbWFnZS0+ZmJfaW1hZ2UpKTsKLQl9Ci19Ci0KLXN0YXRp YyBzdHJ1Y3QgZmJfb3BzIHF4bGZiX29wcyA9IHsKLQkub3duZXIgPSBUSElTX01PRFVMRSwKLQlE Uk1fRkJfSEVMUEVSX0RFRkFVTFRfT1BTLAotCS5mYl9maWxscmVjdCA9IGRybV9mYl9oZWxwZXJf c3lzX2ZpbGxyZWN0LAotCS5mYl9jb3B5YXJlYSA9IGRybV9mYl9oZWxwZXJfc3lzX2NvcHlhcmVh LAotCS5mYl9pbWFnZWJsaXQgPSBkcm1fZmJfaGVscGVyX3N5c19pbWFnZWJsaXQsCi19OwotCi1z dGF0aWMgdm9pZCBxeGxmYl9kZXN0cm95X3Bpbm5lZF9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnb2JqKQotewotCXN0cnVjdCBxeGxfYm8gKnFibyA9IGdlbV90b19xeGxfYm8oZ29iaik7 Ci0KLQlxeGxfYm9fa3VubWFwKHFibyk7Ci0JcXhsX2JvX3VucGluKHFibyk7Ci0KLQlkcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQoZ29iaik7Ci19Ci0KLXN0YXRpYyBpbnQgcXhsZmJfY3JlYXRl X3Bpbm5lZF9vYmplY3Qoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCi0JCQkJICAgICAgY29uc3Qg c3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAotCQkJCSAgICAgIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqKmdvYmpfcCkKLXsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmogPSBO VUxMOwotCXN0cnVjdCBxeGxfYm8gKnFibyA9IE5VTEw7Ci0JaW50IHJldDsKLQlpbnQgYWxpZ25l ZF9zaXplLCBzaXplOwotCWludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVpZ2h0OwotCi0Jc2l6ZSA9 IG1vZGVfY21kLT5waXRjaGVzWzBdICogaGVpZ2h0OwotCWFsaWduZWRfc2l6ZSA9IEFMSUdOKHNp emUsIFBBR0VfU0laRSk7Ci0JLyogVE9ETzogdW5hbGxvY2F0ZSBhbmQgcmVhbGxvY2F0ZSBzdXJm YWNlMCBmb3IgcmVhbC4gSGFjayB0byBqdXN0Ci0JICogaGF2ZSBhIGxhcmdlIGVub3VnaCBzdXJm YWNlMCBmb3IgMTAyNHg3NjggWG9yZyAzMmJwcCBtb2RlICovCi0JcmV0ID0gcXhsX2dlbV9vYmpl Y3RfY3JlYXRlKHFkZXYsIGFsaWduZWRfc2l6ZSwgMCwKLQkJCQkgICAgUVhMX0dFTV9ET01BSU5f U1VSRkFDRSwKLQkJCQkgICAgZmFsc2UsIC8qIGlzIGRpc2NhcmRhYmxlICovCi0JCQkJICAgIGZh bHNlLCAvKiBpcyBrZXJuZWwgKGZhbHNlIG1lYW5zIGRldmljZSkgKi8KLQkJCQkgICAgTlVMTCwK LQkJCQkgICAgJmdvYmopOwotCWlmIChyZXQpIHsKLQkJcHJfZXJyKCJmYWlsZWQgdG8gYWxsb2Nh dGUgZnJhbWVidWZmZXIgKCVkKVxuIiwKLQkJICAgICAgIGFsaWduZWRfc2l6ZSk7Ci0JCXJldHVy biAtRU5PTUVNOwotCX0KLQlxYm8gPSBnZW1fdG9fcXhsX2JvKGdvYmopOwotCi0JcWJvLT5zdXJm LndpZHRoID0gbW9kZV9jbWQtPndpZHRoOwotCXFiby0+c3VyZi5oZWlnaHQgPSBtb2RlX2NtZC0+ aGVpZ2h0OwotCXFiby0+c3VyZi5zdHJpZGUgPSBtb2RlX2NtZC0+cGl0Y2hlc1swXTsKLQlxYm8t PnN1cmYuZm9ybWF0ID0gU1BJQ0VfU1VSRkFDRV9GTVRfMzJfeFJHQjsKLQotCXJldCA9IHF4bF9i b19waW4ocWJvKTsKLQlpZiAocmV0KSB7Ci0JCWdvdG8gb3V0X3VucmVmOwotCX0KLQlyZXQgPSBx eGxfYm9fa21hcChxYm8sIE5VTEwpOwotCi0JaWYgKHJldCkKLQkJZ290byBvdXRfdW5yZWY7Ci0K LQkqZ29ial9wID0gZ29iajsKLQlyZXR1cm4gMDsKLW91dF91bnJlZjoKLQlxeGxmYl9kZXN0cm95 X3Bpbm5lZF9vYmplY3QoZ29iaik7Ci0JKmdvYmpfcCA9IE5VTEw7Ci0JcmV0dXJuIHJldDsKLX0K LQotLyoKLSAqIEZJWE1FCi0gKiBJdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBoYXZlIGEg c3BlY2lhbCBkaXJ0eSgpIGNhbGxiYWNrIGZvciBmYmRldi4KLSAqLwotc3RhdGljIGludCBxeGxm Yl9mcmFtZWJ1ZmZlcl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCQkgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKLQkJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVu c2lnbmVkIGludCBjb2xvciwKLQkJCQkgICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHMsCi0J CQkJICAgdW5zaWduZWQgaW50IG51bV9jbGlwcykKLXsKLQlzdHJ1Y3QgcXhsX2RldmljZSAqcWRl diA9IGZiLT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBmYl9pbmZvICppbmZvID0gcWRldi0+ ZmJfaGVscGVyLmZiZGV2OwotCXN0cnVjdCBxeGxfZmJfaW1hZ2UgcXhsX2ZiX2ltYWdlOwotCXN0 cnVjdCBmYl9pbWFnZSAqaW1hZ2UgPSAmcXhsX2ZiX2ltYWdlLmZiX2ltYWdlOwotCi0JLyogVE9E TzogaGFyZCBjb2RpbmcgMzIgYnBwICovCi0JaW50IHN0cmlkZSA9IGZiLT5waXRjaGVzWzBdOwot Ci0JLyoKLQkgKiB3ZSBhcmUgdXNpbmcgYSBzaGFkb3cgZHJhdyBidWZmZXIsIGF0IHFkZXYtPnN1 cmZhY2UwX3NoYWRvdwotCSAqLwotCWltYWdlLT5keCA9IGNsaXBzLT54MTsKLQlpbWFnZS0+ZHkg PSBjbGlwcy0+eTE7Ci0JaW1hZ2UtPndpZHRoID0gY2xpcHMtPngyIC0gY2xpcHMtPngxOwotCWlt YWdlLT5oZWlnaHQgPSBjbGlwcy0+eTIgLSBjbGlwcy0+eTE7Ci0JaW1hZ2UtPmZnX2NvbG9yID0g MHhmZmZmZmZmZjsgLyogdW51c2VkLCBqdXN0IHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQKLQkJCQkJ IHdhcm5pbmdzICovCi0JaW1hZ2UtPmJnX2NvbG9yID0gMDsKLQlpbWFnZS0+ZGVwdGggPSAzMjsJ ICAgICAvKiBUT0RPOiB0YWtlIGZyb20gc29tZXdoZXJlPyAqLwotCWltYWdlLT5jbWFwLnN0YXJ0 ID0gMDsKLQlpbWFnZS0+Y21hcC5sZW4gPSAwOwotCWltYWdlLT5jbWFwLnJlZCA9IE5VTEw7Ci0J aW1hZ2UtPmNtYXAuZ3JlZW4gPSBOVUxMOwotCWltYWdlLT5jbWFwLmJsdWUgPSBOVUxMOwotCWlt YWdlLT5jbWFwLnRyYW5zcCA9IE5VTEw7Ci0JaW1hZ2UtPmRhdGEgPSBpbmZvLT5zY3JlZW5fYmFz ZSArIChjbGlwcy0+eDEgKiA0KSArIChzdHJpZGUgKiBjbGlwcy0+eTEpOwotCi0JcXhsX2ZiX2lt YWdlX2luaXQoJnF4bF9mYl9pbWFnZSwgcWRldiwgaW5mbywgTlVMTCk7Ci0JcXhsX2RyYXdfb3Bh cXVlX2ZiKCZxeGxfZmJfaW1hZ2UsIHN0cmlkZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgcXhsZmJfZmJfZnVuY3MgPSB7Ci0J LmRlc3Ryb3kgPSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCi0JLmNyZWF0ZV9oYW5kbGUgPSBkcm1fZ2Vt X2ZiX2NyZWF0ZV9oYW5kbGUsCi0JLmRpcnR5ID0gcXhsZmJfZnJhbWVidWZmZXJfZGlydHksCi19 OwotCi1zdGF0aWMgaW50IHF4bGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVy LAotCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcykKLXsKLQlzdHJ1 Y3QgcXhsX2RldmljZSAqcWRldiA9Ci0JCWNvbnRhaW5lcl9vZihoZWxwZXIsIHN0cnVjdCBxeGxf ZGV2aWNlLCBmYl9oZWxwZXIpOwotCXN0cnVjdCBmYl9pbmZvICppbmZvOwotCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiBtb2RlX2Nt ZDsKLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmogPSBOVUxMOwotCXN0cnVjdCBxeGxfYm8g KnFibyA9IE5VTEw7Ci0JaW50IHJldDsKLQlpbnQgYnBwID0gc2l6ZXMtPnN1cmZhY2VfYnBwOwot CWludCBkZXB0aCA9IHNpemVzLT5zdXJmYWNlX2RlcHRoOwotCXZvaWQgKnNoYWRvdzsKLQotCW1v ZGVfY21kLndpZHRoID0gc2l6ZXMtPnN1cmZhY2Vfd2lkdGg7Ci0JbW9kZV9jbWQuaGVpZ2h0ID0g c2l6ZXMtPnN1cmZhY2VfaGVpZ2h0OwotCi0JbW9kZV9jbWQucGl0Y2hlc1swXSA9IEFMSUdOKG1v ZGVfY21kLndpZHRoICogKChicHAgKyAxKSAvIDgpLCA2NCk7Ci0JbW9kZV9jbWQucGl4ZWxfZm9y bWF0ID0gZHJtX21vZGVfbGVnYWN5X2ZiX2Zvcm1hdChicHAsIGRlcHRoKTsKLQotCXJldCA9IHF4 bGZiX2NyZWF0ZV9waW5uZWRfb2JqZWN0KHFkZXYsICZtb2RlX2NtZCwgJmdvYmopOwotCWlmIChy ZXQgPCAwKQotCQlyZXR1cm4gcmV0OwotCi0JcWJvID0gZ2VtX3RvX3F4bF9ibyhnb2JqKTsKLQlE Uk1fREVCVUdfRFJJVkVSKCIlZHglZCAlZFxuIiwgbW9kZV9jbWQud2lkdGgsCi0JCQkgbW9kZV9j bWQuaGVpZ2h0LCBtb2RlX2NtZC5waXRjaGVzWzBdKTsKLQotCXNoYWRvdyA9IHZtYWxsb2MoYXJy YXlfc2l6ZShtb2RlX2NtZC5waXRjaGVzWzBdLCBtb2RlX2NtZC5oZWlnaHQpKTsKLQkvKiBUT0RP OiB3aGF0J3MgdGhlIHVzdWFsIHJlc3BvbnNlIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9ycz8g Ki8KLQlCVUdfT04oIXNoYWRvdyk7Ci0JRFJNX0RFQlVHX0RSSVZFUigic3VyZmFjZTAgYXQgZ3B1 IG9mZnNldCAlbGxkLCBtbWFwX29mZnNldCAlbGxkICh2aXJ0ICVwLCBzaGFkb3cgJXApXG4iLAot CQkJIHF4bF9ib19ncHVfb2Zmc2V0KHFibyksIHF4bF9ib19tbWFwX29mZnNldChxYm8pLAotCQkJ IHFiby0+a3B0ciwgc2hhZG93KTsKLQotCWluZm8gPSBkcm1fZmJfaGVscGVyX2FsbG9jX2ZiaSho ZWxwZXIpOwotCWlmIChJU19FUlIoaW5mbykpIHsKLQkJcmV0ID0gUFRSX0VSUihpbmZvKTsKLQkJ Z290byBvdXRfdW5yZWY7Ci0JfQotCi0JaW5mby0+cGFyID0gaGVscGVyOwotCi0JZmIgPSBkcm1f Z2VtX2ZiZGV2X2ZiX2NyZWF0ZSgmcWRldi0+ZGRldiwgc2l6ZXMsIDY0LCBnb2JqLAotCQkJCSAg ICAgJnF4bGZiX2ZiX2Z1bmNzKTsKLQlpZiAoSVNfRVJSKGZiKSkgewotCQlEUk1fRVJST1IoIkZh aWxlZCB0byBjcmVhdGUgZnJhbWVidWZmZXI6ICVsZFxuIiwgUFRSX0VSUihmYikpOwotCQlyZXQg PSBQVFJfRVJSKGZiKTsKLQkJZ290byBvdXRfdW5yZWY7Ci0JfQotCi0JLyogc2V0dXAgaGVscGVy IHdpdGggZmIgZGF0YSAqLwotCXFkZXYtPmZiX2hlbHBlci5mYiA9IGZiOwotCi0Jc3RyY3B5KGlu Zm8tPmZpeC5pZCwgInF4bGRybWZiIik7Ci0KLQlkcm1fZmJfaGVscGVyX2ZpbGxfZml4KGluZm8s IGZiLT5waXRjaGVzWzBdLCBmYi0+Zm9ybWF0LT5kZXB0aCk7Ci0KLQlpbmZvLT5mYm9wcyA9ICZx eGxmYl9vcHM7Ci0KLQkvKgotCSAqIFRPRE86IHVzaW5nIGdvYmotPnNpemUgaW4gdmFyaW91cyBw bGFjZXMgaW4gdGhpcyBmdW5jdGlvbi4gTm90IHN1cmUKLQkgKiB3aGF0IHRoZSBkaWZmZXJlbmNl IGJldHdlZW4gdGhlIGRpZmZlcmVudCBzaXplcyBpcy4KLQkgKi8KLQlpbmZvLT5maXguc21lbV9z dGFydCA9IHFkZXYtPnZyYW1fYmFzZTsgLyogVE9ETyAtIGNvcnJlY3Q/ICovCi0JaW5mby0+Zml4 LnNtZW1fbGVuID0gZ29iai0+c2l6ZTsKLQlpbmZvLT5zY3JlZW5fYmFzZSA9IHNoYWRvdzsKLQlp bmZvLT5zY3JlZW5fc2l6ZSA9IGdvYmotPnNpemU7Ci0KLQlkcm1fZmJfaGVscGVyX2ZpbGxfdmFy KGluZm8sICZxZGV2LT5mYl9oZWxwZXIsIHNpemVzLT5mYl93aWR0aCwKLQkJCSAgICAgICBzaXpl cy0+ZmJfaGVpZ2h0KTsKLQotCS8qIHNldHVwIGFwZXJ0dXJlIGJhc2Uvc2l6ZSBmb3IgdmVzYWZi IHRha2VvdmVyICovCi0JaW5mby0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uYmFzZSA9IHFkZXYtPmRk ZXYubW9kZV9jb25maWcuZmJfYmFzZTsKLQlpbmZvLT5hcGVydHVyZXMtPnJhbmdlc1swXS5zaXpl ID0gcWRldi0+dnJhbV9zaXplOwotCi0JaW5mby0+Zml4Lm1taW9fc3RhcnQgPSAwOwotCWluZm8t PmZpeC5tbWlvX2xlbiA9IDA7Ci0KLQlpZiAoaW5mby0+c2NyZWVuX2Jhc2UgPT0gTlVMTCkgewot CQlyZXQgPSAtRU5PU1BDOwotCQlnb3RvIG91dF91bnJlZjsKLQl9Ci0KLQkvKiBYWFggZXJyb3Ig aGFuZGxpbmcuICovCi0JZHJtX2ZiX2hlbHBlcl9kZWZpb19pbml0KGhlbHBlcik7Ci0KLQlEUk1f SU5GTygiZmIgbWFwcGFibGUgYXQgMHglbFgsIHNpemUgJWx1XG4iLCAgaW5mby0+Zml4LnNtZW1f c3RhcnQsICh1bnNpZ25lZCBsb25nKWluZm8tPnNjcmVlbl9zaXplKTsKLQlEUk1fSU5GTygiZmI6 IGRlcHRoICVkLCBwaXRjaCAlZCwgd2lkdGggJWQsIGhlaWdodCAlZFxuIiwKLQkJIGZiLT5mb3Jt YXQtPmRlcHRoLCBmYi0+cGl0Y2hlc1swXSwgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKLQlyZXR1 cm4gMDsKLQotb3V0X3VucmVmOgotCWlmIChxYm8pIHsKLQkJcXhsX2JvX2t1bm1hcChxYm8pOwot CQlxeGxfYm9fdW5waW4ocWJvKTsKLQl9Ci0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGdv YmopOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBl cl9mdW5jcyBxeGxfZmJfaGVscGVyX2Z1bmNzID0gewotCS5mYl9wcm9iZSA9IHF4bGZiX2NyZWF0 ZSwKLX07Ci0KLWludCBxeGxfZmJkZXZfaW5pdChzdHJ1Y3QgcXhsX2RldmljZSAqcWRldikKLXsK LQlyZXR1cm4gZHJtX2ZiX2hlbHBlcl9mYmRldl9zZXR1cCgmcWRldi0+ZGRldiwgJnFkZXYtPmZi X2hlbHBlciwKLQkJCQkJICZxeGxfZmJfaGVscGVyX2Z1bmNzLCAzMiwKLQkJCQkJIFFYTEZCX0NP Tk5fTElNSVQpOwotfQotCi12b2lkIHF4bF9mYmRldl9maW5pKHN0cnVjdCBxeGxfZGV2aWNlICpx ZGV2KQotewotCXN0cnVjdCBmYl9pbmZvICpmYmkgPSBxZGV2LT5mYl9oZWxwZXIuZmJkZXY7Ci0J dm9pZCAqc2hhZG93ID0gZmJpID8gZmJpLT5zY3JlZW5fYnVmZmVyIDogTlVMTDsKLQotCWRybV9m Yl9oZWxwZXJfZmJkZXZfdGVhcmRvd24oJnFkZXYtPmRkZXYpOwotCXZmcmVlKHNoYWRvdyk7Ci19 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL3F4bC9NYWtlZmlsZQppbmRleCAzM2E3ZDBjNDM0Li5mYzU5ZDQyYjMxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwv TWFrZWZpbGUKQEAgLTIsNiArMiw2IEBACiAjIE1ha2VmaWxlIGZvciB0aGUgZHJtIGRldmljZSBk cml2ZXIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUKICMgRGlyZWN0IFJl bmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIu CiAKLXF4bC15IDo9IHF4bF9kcnYubyBxeGxfa21zLm8gcXhsX2Rpc3BsYXkubyBxeGxfdHRtLm8g cXhsX2ZiLm8gcXhsX29iamVjdC5vIHF4bF9nZW0ubyBxeGxfY21kLm8gcXhsX2ltYWdlLm8gcXhs X2RyYXcubyBxeGxfZGVidWdmcy5vIHF4bF9pcnEubyBxeGxfZHVtYi5vIHF4bF9pb2N0bC5vIHF4 bF9yZWxlYXNlLm8gcXhsX3ByaW1lLm8KK3F4bC15IDo9IHF4bF9kcnYubyBxeGxfa21zLm8gcXhs X2Rpc3BsYXkubyBxeGxfdHRtLm8gcXhsX29iamVjdC5vIHF4bF9nZW0ubyBxeGxfY21kLm8gcXhs X2ltYWdlLm8gcXhsX2RyYXcubyBxeGxfZGVidWdmcy5vIHF4bF9pcnEubyBxeGxfZHVtYi5vIHF4 bF9pb2N0bC5vIHF4bF9yZWxlYXNlLm8gcXhsX3ByaW1lLm8KIAogb2JqLSQoQ09ORklHX0RSTV9R WEwpKz0gcXhsLm8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpTcGljZS1kZXZlbCBtYWlsaW5nIGxpc3QKU3BpY2UtZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vc3BpY2UtZGV2ZWwK