From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 10/10] drm/radeon: add DisplayPort MST support Date: Tue, 24 Feb 2015 09:24:04 +1000 Message-ID: <1424733844-20185-11-git-send-email-airlied@gmail.com> References: <1424733844-20185-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id AD7406E51F for ; Mon, 23 Feb 2015 15:24:21 -0800 (PST) Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t1NNOLnW030516 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Mon, 23 Feb 2015 18:24:21 -0500 Received: from prime.bne.redhat.com (dhcp-40-231.bne.redhat.com [10.64.40.231]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t1NNO7Ld023517 for ; Mon, 23 Feb 2015 18:24:19 -0500 In-Reply-To: <1424733844-20185-1-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyBpbml0aWFs IERQIDEuMiBNU1Qgc3VwcG9ydCB0byByYWRlb24sIG9uIENBWU1BTgphbmQgdXAgaW4gdGhlb3J5 LgoKVGhpcyBpcyBvZmYgYnkgZGVmYXVsdC4KClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxh aXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZSAg ICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMu YyAgICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfZW5jb2RlcnMu YyB8ICAxMyArCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oICAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRvbWJpb3MuYyAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYyB8ICA2NCArKy0KIGRy aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jICAgICB8ICAgNSArCiBkcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcF9tc3QuYyAgICAgfCA4MTQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5jICAgICAg ICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9lbmNvZGVycy5jICAgfCAg MTQgKy0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2lycV9rbXMuYyAgICB8ICAxMSAr CiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2RlLmggICAgICAgfCAgNDIgKysKIDEy IGZpbGVzIGNoYW5nZWQsIDk3NiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RwX21zdC5jCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vTWFrZWZpbGUKaW5kZXggZmE2MzVmMC4uZGVhNTNlMyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L01ha2VmaWxlCkBAIC04MSw3ICs4MSw3IEBAIHJhZGVvbi15ICs9IHJhZGVvbl9kZXZpY2UubyBy YWRlb25fYXNpYy5vIHJhZGVvbl9rbXMubyBcCiAJcnY3NzBfc21jLm8gY3lwcmVzc19kcG0ubyBi dGNfZHBtLm8gc3Vtb19kcG0ubyBzdW1vX3NtYy5vIHRyaW5pdHlfZHBtLm8gXAogCXRyaW5pdHlf c21jLm8gbmlfZHBtLm8gc2lfc21jLm8gc2lfZHBtLm8ga3Zfc21jLm8ga3ZfZHBtLm8gY2lfc21j Lm8gXAogCWNpX2RwbS5vIGRjZTZfYWZtdC5vIHJhZGVvbl92bS5vIHJhZGVvbl91Y29kZS5vIHJh ZGVvbl9pYi5vIFwKLQlyYWRlb25fc3luYy5vIHJhZGVvbl9hdWRpby5vIHJhZGVvbl9kcF9hdXhj aC5vCisJcmFkZW9uX3N5bmMubyByYWRlb25fYXVkaW8ubyByYWRlb25fZHBfYXV4Y2gubyByYWRl b25fZHBfbXN0Lm8KIAogcmFkZW9uLSQoQ09ORklHX01NVV9OT1RJRklFUikgKz0gcmFkZW9uX21u Lm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwppbmRleCBlZDY0NGE0Li5m NjBkODlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwpAQCAtNjA2LDYg KzYwNiwxMyBAQCBzdGF0aWMgdTMyIGF0b21iaW9zX2FkanVzdF9wbGwoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQl9CiAJfQogCisJaWYgKHJhZGVvbl9lbmNvZGVyLT5pc19tc3RfZW5jb2Rlcikg eworCQlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfbXN0ICptc3RfZW5jID0gcmFkZW9uX2VuY29kZXIt PmVuY19wcml2OworCQlzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3Rvcl9hdG9tX2RpZyAqZGlnX2Nvbm5l Y3RvciA9IG1zdF9lbmMtPmNvbm5lY3Rvci0+Y29uX3ByaXY7CisKKwkJZHBfY2xvY2sgPSBkaWdf Y29ubmVjdG9yLT5kcF9jbG9jazsKKwl9CisKIAkvKiB1c2UgcmVjb21tZW5kZWQgcmVmX2RpdiBm b3Igc3MgKi8KIAlpZiAocmFkZW9uX2VuY29kZXItPmRldmljZXMgJiAoQVRPTV9ERVZJQ0VfTENE X1NVUFBPUlQpKSB7CiAJCWlmIChyYWRlb25fY3J0Yy0+c3NfZW5hYmxlZCkgewpAQCAtOTUyLDcg Kzk1OSw5IEBAIHN0YXRpYyBib29sIGF0b21iaW9zX2NydGNfcHJlcGFyZV9wbGwoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfCiAJcmFkZW9uX2NydGMtPmJwYyA9IDg7 CiAJcmFkZW9uX2NydGMtPnNzX2VuYWJsZWQgPSBmYWxzZTsKIAotCWlmICgocmFkZW9uX2VuY29k ZXItPmFjdGl2ZV9kZXZpY2UgJiAoQVRPTV9ERVZJQ0VfTENEX1NVUFBPUlQgfCBBVE9NX0RFVklD RV9ERlBfU1VQUE9SVCkpIHx8CisJaWYgKHJhZGVvbl9lbmNvZGVyLT5pc19tc3RfZW5jb2Rlcikg eworCQlyYWRlb25fZHBfbXN0X3ByZXBhcmVfcGxsKGNydGMsIG1vZGUpOworCX0gZWxzZSBpZiAo KHJhZGVvbl9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFUT01fREVWSUNFX0xDRF9TVVBQT1JU IHwgQVRPTV9ERVZJQ0VfREZQX1NVUFBPUlQpKSB8fAogCSAgICAocmFkZW9uX2VuY29kZXJfZ2V0 X2RwX2JyaWRnZV9lbmNvZGVyX2lkKHJhZGVvbl9jcnRjLT5lbmNvZGVyKSAhPSBFTkNPREVSX09C SkVDVF9JRF9OT05FKSkgewogCQlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfYXRvbV9kaWcgKmRpZyA9 IHJhZGVvbl9lbmNvZGVyLT5lbmNfcHJpdjsKIAkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29k ZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29kZXJzLmMKaW5kZXgg ZTBhOTEzNmMuLjQ3MmMwN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRv bWJpb3NfZW5jb2RlcnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2Vu Y29kZXJzLmMKQEAgLTY3MSw3ICs2NzEsMTUgQEAgYXRvbWJpb3NfZ2V0X2VuY29kZXJfbW9kZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKIAlzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciAqcmFkZW9uX2Nvbm5lY3RvcjsKIAlzdHJ1 Y3QgcmFkZW9uX2Nvbm5lY3Rvcl9hdG9tX2RpZyAqZGlnX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgcmFk ZW9uX2VuY29kZXJfYXRvbV9kaWcgKmRpZ19lbmM7CiAKKwlpZiAocmFkZW9uX2VuY29kZXJfaXNf ZGlnaXRhbChlbmNvZGVyKSkgeworCQlkaWdfZW5jID0gcmFkZW9uX2VuY29kZXItPmVuY19wcml2 OworCQlpZiAoZGlnX2VuYy0+YWN0aXZlX21zdF9saW5rcykKKwkJCXJldHVybiBBVE9NX0VOQ09E RVJfTU9ERV9EUF9NU1Q7CisJfQorCWlmIChyYWRlb25fZW5jb2Rlci0+aXNfbXN0X2VuY29kZXIg fHwgcmFkZW9uX2VuY29kZXItPm9mZnNldCkKKwkJcmV0dXJuIEFUT01fRU5DT0RFUl9NT0RFX0RQ X01TVDsKIAkvKiBkcCBicmlkZ2VzIGFyZSBhbHdheXMgRFAgKi8KIAlpZiAocmFkZW9uX2VuY29k ZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKGVuY29kZXIpICE9IEVOQ09ERVJfT0JKRUNUX0lE X05PTkUpCiAJCXJldHVybiBBVE9NX0VOQ09ERVJfTU9ERV9EUDsKQEAgLTE3MDMsNiArMTcxMSwx MSBAQCByYWRlb25fYXRvbV9lbmNvZGVyX2RwbXNfZGlnKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlciwgaW50IG1vZGUpCiAJY2FzZSBEUk1fTU9ERV9EUE1TX1NUQU5EQlk6CiAJY2FzZSBEUk1f TU9ERV9EUE1TX1NVU1BFTkQ6CiAJY2FzZSBEUk1fTU9ERV9EUE1TX09GRjoKKworCQkvKiBkb24n dCBwb3dlciBvZmYgZW5jb2RlcnMgd2l0aCBhY3RpdmUgTVNUIGxpbmtzICovCisJCWlmIChkaWct PmFjdGl2ZV9tc3RfbGlua3MpCisJCQlyZXR1cm47CisKIAkJaWYgKEFTSUNfSVNfRENFNChyZGV2 KSkgewogCQkJaWYgKEVOQ09ERVJfTU9ERV9JU19EUChhdG9tYmlvc19nZXRfZW5jb2Rlcl9tb2Rl KGVuY29kZXIpKSAmJiBjb25uZWN0b3IpCiAJCQkJYXRvbWJpb3NfZGlnX2VuY29kZXJfc2V0dXAo ZW5jb2RlciwgQVRPTV9FTkNPREVSX0NNRF9EUF9WSURFT19PRkYsIDApOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uLmgKaW5kZXggNjlkNWUwYS4uYTdlY2JlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o CkBAIC0xMTIsNiArMTEyLDcgQEAgZXh0ZXJuIGludCByYWRlb25fdXNlX3BmbGlwaXJxOwogZXh0 ZXJuIGludCByYWRlb25fYmFwbTsKIGV4dGVybiBpbnQgcmFkZW9uX2JhY2tsaWdodDsKIGV4dGVy biBpbnQgcmFkZW9uX2F1eGNoOworZXh0ZXJuIGludCByYWRlb25fbXN0OwogCiAvKgogICogQ29w eSBmcm9tIHJhZGVvbl9kcnYuaCBzbyB3ZSBkb24ndCBoYXZlIHRvIGluY2x1ZGUgYm90aCBhbmQg aGF2ZSBjb25mbGljdGluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fYXRvbWJpb3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21iaW9zLmMK aW5kZXggZGJjOTRmMy4uYjM1ZDk0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fYXRvbWJpb3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9h dG9tYmlvcy5jCkBAIC04NDUsNiArODQ1LDcgQEAgYm9vbCByYWRlb25fZ2V0X2F0b21fY29ubmVj dG9yX2luZm9fZnJvbV9vYmplY3RfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCXJh ZGVvbl9saW5rX2VuY29kZXJfY29ubmVjdG9yKGRldik7CiAKKwlyYWRlb25fc2V0dXBfbXN0X2Nv bm5lY3RvcihkZXYpOwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9jb25uZWN0b3JzLmMKaW5kZXggMjdkZWY2Ny4uODNiMzNiNiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYwpAQCAtMjcsNiArMjcsNyBAQAogI2lu Y2x1ZGUgPGRybS9kcm1fZWRpZC5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHBfbXN0 X2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9yYWRlb25fZHJtLmg+CiAjaW5jbHVkZSAicmFkZW9u LmgiCiAjaW5jbHVkZSAicmFkZW9uX2F1ZGlvLmgiCkBAIC0zNCwxMiArMzUsMzMgQEAKIAogI2lu Y2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KIAorc3RhdGljIGludCByYWRlb25fZHBfaGFuZGxl X2hwZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCByYWRlb25f Y29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0 b3IpOworCWludCByZXQ7CisKKwlyZXQgPSByYWRlb25fZHBfbXN0X2NoZWNrX3N0YXR1cyhyYWRl b25fY29ubmVjdG9yKTsKKwlpZiAocmV0ID09IC1FSU5WQUwpCisJCXJldHVybiAxOworCXJldHVy biAwOworfQogdm9pZCByYWRlb25fY29ubmVjdG9yX2hvdHBsdWcoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5k ZXY7CiAJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0 cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5l Y3Rvcihjb25uZWN0b3IpOwogCisJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJN X01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSB7CisJCXN0cnVjdCByYWRlb25fY29ubmVjdG9y X2F0b21fZGlnICpkaWdfY29ubmVjdG9yID0KKwkJCXJhZGVvbl9jb25uZWN0b3ItPmNvbl9wcml2 OworCisJCWlmIChyYWRlb25fY29ubmVjdG9yLT5pc19tc3RfY29ubmVjdG9yKQorCQkJcmV0dXJu OworCQlpZiAoZGlnX2Nvbm5lY3Rvci0+aXNfbXN0KSB7CisJCQlyYWRlb25fZHBfaGFuZGxlX2hw ZChjb25uZWN0b3IpOworCQkJcmV0dXJuOworCQl9CisJfQogCS8qIGJhaWwgaWYgdGhlIGNvbm5l Y3RvciBkb2VzIG5vdCBoYXZlIGhwZCBwaW4sIGUuZy4sCiAJICogVkdBLCBUViwgZXRjLgogCSAq LwpAQCAtMTU4NSw2ICsxNjA3LDkgQEAgcmFkZW9uX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciA9IHJhZGVvbl9iZXN0X3NpbmdsZV9lbmNvZGVyKGNvbm5lY3Rvcik7CiAJaW50IHI7CiAKKwlp ZiAocmFkZW9uX2RpZ19jb25uZWN0b3ItPmlzX21zdCkKKwkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0 dXNfZGlzY29ubmVjdGVkOworCiAJciA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoY29ubmVjdG9yLT5k ZXYtPmRldik7CiAJaWYgKHIgPCAwKQogCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25u ZWN0ZWQ7CkBAIC0xNjQzLDEyICsxNjY4LDIxIEBAIHJhZGVvbl9kcF9kZXRlY3Qoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAkJcmFkZW9uX2RpZ19jb25uZWN0 b3ItPmRwX3NpbmtfdHlwZSA9IHJhZGVvbl9kcF9nZXRzaW5rdHlwZShyYWRlb25fY29ubmVjdG9y KTsKIAkJaWYgKHJhZGVvbl9ocGRfc2Vuc2UocmRldiwgcmFkZW9uX2Nvbm5lY3Rvci0+aHBkLmhw ZCkpIHsKIAkJCXJldCA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwotCQkJaWYgKHJhZGVv bl9kaWdfY29ubmVjdG9yLT5kcF9zaW5rX3R5cGUgPT0gQ09OTkVDVE9SX09CSkVDVF9JRF9ESVNQ TEFZUE9SVCkKKwkJCWlmIChyYWRlb25fZGlnX2Nvbm5lY3Rvci0+ZHBfc2lua190eXBlID09IENP Tk5FQ1RPUl9PQkpFQ1RfSURfRElTUExBWVBPUlQpIHsKIAkJCQlyYWRlb25fZHBfZ2V0ZHBjZChy YWRlb25fY29ubmVjdG9yKTsKKwkJCQlyID0gcmFkZW9uX2RwX21zdF9wcm9iZShyYWRlb25fY29u bmVjdG9yKTsKKwkJCQlpZiAociA9PSAxKQorCQkJCQlyZXQgPSBjb25uZWN0b3Jfc3RhdHVzX2Rp c2Nvbm5lY3RlZDsKKwkJCX0KIAkJfSBlbHNlIHsKIAkJCWlmIChyYWRlb25fZGlnX2Nvbm5lY3Rv ci0+ZHBfc2lua190eXBlID09IENPTk5FQ1RPUl9PQkpFQ1RfSURfRElTUExBWVBPUlQpIHsKLQkJ CQlpZiAocmFkZW9uX2RwX2dldGRwY2QocmFkZW9uX2Nvbm5lY3RvcikpCi0JCQkJCXJldCA9IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOworCQkJCWlmIChyYWRlb25fZHBfZ2V0ZHBjZChyYWRl b25fY29ubmVjdG9yKSkgeworCQkJCQlyID0gcmFkZW9uX2RwX21zdF9wcm9iZShyYWRlb25fY29u bmVjdG9yKTsKKwkJCQkJaWYgKHIgPT0gMSkKKwkJCQkJCXJldCA9IGNvbm5lY3Rvcl9zdGF0dXNf ZGlzY29ubmVjdGVkOworCQkJCQllbHNlCisJCQkJCQlyZXQgPSBjb25uZWN0b3Jfc3RhdHVzX2Nv bm5lY3RlZDsKKwkJCQl9CiAJCQl9IGVsc2UgewogCQkJCS8qIHRyeSBub24tYXV4IGRkYyAoRFAg dG8gRFZJL0hETUkvZXRjLiBhZGFwdGVyKSAqLwogCQkJCWlmIChyYWRlb25fZGRjX3Byb2JlKHJh ZGVvbl9jb25uZWN0b3IsIGZhbHNlKSkKQEAgLTIzNTIsMyArMjM4NiwyNyBAQCByYWRlb25fYWRk X2xlZ2FjeV9jb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAljb25uZWN0b3ItPmRp c3BsYXlfaW5mby5zdWJwaXhlbF9vcmRlciA9IHN1YnBpeGVsX29yZGVyOwogCWRybV9jb25uZWN0 b3JfcmVnaXN0ZXIoY29ubmVjdG9yKTsKIH0KKwordm9pZCByYWRlb25fc2V0dXBfbXN0X2Nvbm5l Y3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yOworCisJaWYgKCFB U0lDX0lTX0RDRTUocmRldikpCisJCXJldHVybjsKKworCWlmIChyYWRlb25fbXN0ID09IDApCisJ CXJldHVybjsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2Nv bmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgeworCQlpbnQgcmV0OworCisJCXJhZGVvbl9jb25u ZWN0b3IgPSB0b19yYWRlb25fY29ubmVjdG9yKGNvbm5lY3Rvcik7CisKKwkJaWYgKGNvbm5lY3Rv ci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KQorCQkJ Y29udGludWU7CisKKwkJcmV0ID0gcmFkZW9uX2RwX21zdF9pbml0KHJhZGVvbl9jb25uZWN0b3Ip OworCX0KK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rldmlj ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKaW5kZXggYmQ3NTE5 Zi4uYjdjYTRjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2 aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKQEAgLTE0 NDIsNiArMTQ0MiwxMSBAQCBpbnQgcmFkZW9uX2RldmljZV9pbml0KHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LAogCQlEUk1fRVJST1IoInJlZ2lzdGVyaW5nIGdlbSBkZWJ1Z2ZzIGZhaWxlZCAo JWQpLlxuIiwgcik7CiAJfQogCisJciA9IHJhZGVvbl9tc3RfZGVidWdmc19pbml0KHJkZXYpOwor CWlmIChyKSB7CisJCURSTV9FUlJPUigicmVnaXN0ZXJpbmcgbXN0IGRlYnVnZnMgZmFpbGVkICgl ZCkuXG4iLCByKTsKKwl9CisKIAlpZiAocmRldi0+ZmxhZ3MgJiBSQURFT05fSVNfQUdQICYmICFy ZGV2LT5hY2NlbF93b3JraW5nKSB7CiAJCS8qIEFjY2VsZXJhdGlvbiBub3Qgd29ya2luZyBvbiBB R1AgY2FyZCB0cnkgYWdhaW4KIAkJICogd2l0aCBmYWxsYmFjayB0byBQQ0kgb3IgUENJRSBHQVJU CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcF9tc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RwX21zdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjE3NDE5NzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fZHBfbXN0LmMKQEAgLTAsMCArMSw4MTQgQEAKKworI2luY2x1ZGUg PGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9kcF9tc3RfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKworI2luY2x1ZGUgInJhZGVvbi5oIgorI2luY2x1ZGUg ImF0b20uaCIKKyNpbmNsdWRlICJuaV9yZWcuaCIKKworc3RhdGljIHN0cnVjdCByYWRlb25fZW5j b2RlciAqcmFkZW9uX2RwX2NyZWF0ZV9mYWtlX21zdF9lbmNvZGVyKHN0cnVjdCByYWRlb25fY29u bmVjdG9yICpjb25uZWN0b3IpOworCitzdGF0aWMgaW50IHJhZGVvbl9hdG9tX3NldF9lbmNfb2Zm c2V0KGludCBpZCkKK3sKKwlpbnQgb2Zmc2V0c1s2XSA9IHtFVkVSR1JFRU5fQ1JUQzBfUkVHSVNU RVJfT0ZGU0VULAorCQkJICBFVkVSR1JFRU5fQ1JUQzFfUkVHSVNURVJfT0ZGU0VULAorCQkJICBF VkVSR1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULAorCQkJICBFVkVSR1JFRU5fQ1JUQzNfUkVH SVNURVJfT0ZGU0VULAorCQkJICBFVkVSR1JFRU5fQ1JUQzRfUkVHSVNURVJfT0ZGU0VULAorCQkJ ICBFVkVSR1JFRU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VUfTsKKworCXJldHVybiBvZmZzZXRzW2lk XTsKK30KKwordW5pb24gY3J0Y19zb3VyY2VfcGFyYW0geworCVNFTEVDVF9DUlRDX1NPVVJDRV9Q U19BTExPQ0FUSU9OIHYxOworCVNFTEVDVF9DUlRDX1NPVVJDRV9QQVJBTUVURVJTX1YyIHYyOwor fTsKKworc3RhdGljIHZvaWQKK2F0b21iaW9zX3NldF9tc3RfZW5jb2Rlcl9jcnRjX3NvdXJjZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGludCBmZSkKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFk ZW9uX2NydGMoZW5jb2Rlci0+Y3J0Yyk7CisJaW50IGluZGV4ID0gR2V0SW5kZXhJbnRvTWFzdGVy VGFibGUoQ09NTUFORCwgU2VsZWN0Q1JUQ19Tb3VyY2UpOworCXVpbnQ4X3QgZnJldiwgY3JldjsK Kwl1bmlvbiBjcnRjX3NvdXJjZV9wYXJhbSBhcmdzOworCisJbWVtc2V0KCZhcmdzLCAwLCBzaXpl b2YoYXJncykpOworCisJaWYgKCFhdG9tX3BhcnNlX2NtZF9oZWFkZXIocmRldi0+bW9kZV9pbmZv LmF0b21fY29udGV4dCwgaW5kZXgsICZmcmV2LCAmY3JldikpCisJCXJldHVybjsKKworCWlmIChm cmV2ICE9IDEgJiYgY3JldiAhPSAyKQorCQlEUk1fRVJST1IoIlVua25vd24gdGFibGUgZm9yIE1T VCAlZCwgJWRcbiIsIGZyZXYsIGNyZXYpOworCisJYXJncy52Mi51Y0NSVEMgPSByYWRlb25fY3J0 Yy0+Y3J0Y19pZDsKKwlhcmdzLnYyLnVjRW5jb2RlTW9kZSA9IEFUT01fRU5DT0RFUl9NT0RFX0RQ X01TVDsKKworCXN3aXRjaCAoZmUpIHsKKwljYXNlIDA6CisJCWFyZ3MudjIudWNFbmNvZGVySUQg PSBBU0lDX0lOVF9ESUcxX0VOQ09ERVJfSUQ7CisJCWJyZWFrOworCWNhc2UgMToKKwkJYXJncy52 Mi51Y0VuY29kZXJJRCA9IEFTSUNfSU5UX0RJRzJfRU5DT0RFUl9JRDsKKwkJYnJlYWs7CisJY2Fz ZSAyOgorCQlhcmdzLnYyLnVjRW5jb2RlcklEID0gQVNJQ19JTlRfRElHM19FTkNPREVSX0lEOwor CQlicmVhazsKKwljYXNlIDM6CisJCWFyZ3MudjIudWNFbmNvZGVySUQgPSBBU0lDX0lOVF9ESUc0 X0VOQ09ERVJfSUQ7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJYXJncy52Mi51Y0VuY29kZXJJRCA9 IEFTSUNfSU5UX0RJRzVfRU5DT0RFUl9JRDsKKwkJYnJlYWs7CisJY2FzZSA1OgorCQlhcmdzLnYy LnVjRW5jb2RlcklEID0gQVNJQ19JTlRfRElHNl9FTkNPREVSX0lEOworCQlicmVhazsKKwljYXNl IDY6CisJCWFyZ3MudjIudWNFbmNvZGVySUQgPSBBU0lDX0lOVF9ESUc3X0VOQ09ERVJfSUQ7CisJ CWJyZWFrOworCX0KKwlhdG9tX2V4ZWN1dGVfdGFibGUocmRldi0+bW9kZV9pbmZvLmF0b21fY29u dGV4dCwgaW5kZXgsICh1aW50MzJfdCAqKSZhcmdzKTsKK30KKworc3RhdGljIGludCByYWRlb25f ZHBfbXN0X3NldF9iZV9jbnRsKHN0cnVjdCByYWRlb25fZW5jb2RlciAqcHJpbWFyeSwKKwkJCQkg ICAgIHN0cnVjdCByYWRlb25fZW5jb2Rlcl9tc3QgKm1zdF9lbmMsCisJCQkJICAgICBlbnVtIHJh ZGVvbl9ocGRfaWQgaHBkLCBib29sIGVuYWJsZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcHJpbWFyeS0+YmFzZS5kZXY7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYt PmRldl9wcml2YXRlOworCXVpbnQzMl90IHJlZzsKKwlpbnQgcmV0cmllcyA9IDA7CisJdWludDMy X3QgdGVtcDsKKworCXJlZyA9IFJSRUczMihOSV9ESUdfQkVfQ05UTCArIHByaW1hcnktPm9mZnNl dCk7CisKKwkvKiBzZXQgTVNUIG1vZGUgKi8KKwlyZWcgJj0gfig3IDw8IDE2KTsKKwlyZWcgfD0g KDUgPDwgMTYpOworCisJaWYgKGVuYWJsZSkKKwkJcmVnIHw9ICgoMSA8PCBtc3RfZW5jLT5mZSkg PDwgOCk7CisJZWxzZQorCQlyZWcgJj0gfigoMSAgPDwgbXN0X2VuYy0+ZmUpIDw8IDgpOworCisJ cmVnIHw9IChocGQgPDwgMjgpOworCURSTV9ERUJVR19LTVMoIndyaXRpbmcgMHglMDh4IDB4JTA4 eFxuIiwgTklfRElHX0JFX0NOVEwgKyBwcmltYXJ5LT5vZmZzZXQsIHJlZyk7CisJV1JFRzMyKE5J X0RJR19CRV9DTlRMICsgcHJpbWFyeS0+b2Zmc2V0LCByZWcpOworCisJaWYgKGVuYWJsZSkgewor CQl1aW50MzJfdCBvZmZzZXQgPSByYWRlb25fYXRvbV9zZXRfZW5jX29mZnNldChtc3RfZW5jLT5m ZSk7CisKKwkJZG8geworCQkJdGVtcCA9IFJSRUczMihOSV9ESUdfRkVfQ05UTCArIG9mZnNldCk7 CisJCX0gd2hpbGUgKCh0ZW1wICYgTklfRElHX1NZTUNMS19GRV9PTikgJiYgcmV0cmllcysrIDwg MTAwMDApOworCQlpZiAocmV0cmllcyA9PSAxMDAwMCkKKwkJCURSTV9FUlJPUigidGltZWQgb3V0 IHdhaXRpbmcgZm9yIEZFICVkICVkXG4iLCBwcmltYXJ5LT5vZmZzZXQsIG1zdF9lbmMtPmZlKTsK Kwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmFkZW9uX2RwX21zdF9zZXRfc3RyZWFt X2F0dHJpYihzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnByaW1hcnksCisJCQkJCSAgIGludCBzdHJl YW1fbnVtYmVyLAorCQkJCQkgICBpbnQgZmUsCisJCQkJCSAgIGludCBzbG90cykKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcHJpbWFyeS0+YmFzZS5kZXY7CisJc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXUzMiB0ZW1wLCB2YWw7CisJaW50IHJl dHJpZXMgID0gMDsKKwlpbnQgc2F0cmVnLCBzYXRpZHg7CisKKwlzYXRyZWcgPSBzdHJlYW1fbnVt YmVyID4+IDE7CisJc2F0aWR4ID0gc3RyZWFtX251bWJlciAmIDE7CisKKwl0ZW1wID0gUlJFRzMy KE5JX0RQX01TRV9TQVQwICsgc2F0cmVnICsgcHJpbWFyeS0+b2Zmc2V0KTsKKworCXZhbCA9IE5J X0RQX01TRV9TQVRfU0xPVF9DT1VOVDAoc2xvdHMpIHwgTklfRFBfTVNFX1NBVF9TUkMwKGZlKTsK KworCXZhbCA8PD0gKDE2ICogc2F0aWR4KTsKKworCXRlbXAgJj0gfigweGZmZmYgPDwgKDE2ICog c2F0aWR4KSk7CisKKwl0ZW1wIHw9IHZhbDsKKworCURSTV9ERUJVR19LTVMoIndyaXRpbmcgMHgl MDh4IDB4JTA4eFxuIiwgTklfRFBfTVNFX1NBVDAgKyBzYXRyZWcgKyBwcmltYXJ5LT5vZmZzZXQs IHRlbXApOworCVdSRUczMihOSV9EUF9NU0VfU0FUMCArIHNhdHJlZyArIHByaW1hcnktPm9mZnNl dCwgdGVtcCk7CisKKwlXUkVHMzIoTklfRFBfTVNFX1NBVF9VUERBVEUgKyBwcmltYXJ5LT5vZmZz ZXQsIDEpOworCisJZG8geworCQl0ZW1wID0gUlJFRzMyKE5JX0RQX01TRV9TQVRfVVBEQVRFICsg cHJpbWFyeS0+b2Zmc2V0KTsKKwl9IHdoaWxlICgodGVtcCAmIDB4MSkgJiYgcmV0cmllcysrIDwg MTAwMDApOworCisJaWYgKHJldHJpZXMgPT0gMTAwMDApCisJCURSTV9FUlJPUigidGltZWQgb3V0 IHdhaXRpbiBmb3IgU0FUIHVwZGF0ZSAlZFxuIiwgcHJpbWFyeS0+b2Zmc2V0KTsKKworCS8qIE1U UCAxNiA/ICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmFkZW9uX2RwX21zdF91cGRh dGVfc3RyZWFtX2F0dHJpYnMoc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKm1zdF9jb25uLCBzdHJ1 Y3QgcmFkZW9uX2VuY29kZXIgKnByaW1hcnkpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG1zdF9jb25uLT5iYXNlLmRldjsKKwlzdHJ1Y3Qgc3RyZWFtX2F0dHJpYnMgbmV3X2F0dHJpYnNb Nl07CisJaW50IGk7CisJaW50IGlkeCA9IDA7CisJc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJh ZGVvbl9jb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKworCW1l bXNldChuZXdfYXR0cmlicywgMCwgc2l6ZW9mKG5ld19hdHRyaWJzKSk7CisJbGlzdF9mb3JfZWFj aF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFk KSB7CisJCXN0cnVjdCByYWRlb25fZW5jb2RlciAqc3ViZW5jOworCQlzdHJ1Y3QgcmFkZW9uX2Vu Y29kZXJfbXN0ICptc3RfZW5jOworCisJCXJhZGVvbl9jb25uZWN0b3IgPSB0b19yYWRlb25fY29u bmVjdG9yKGNvbm5lY3Rvcik7CisJCWlmICghcmFkZW9uX2Nvbm5lY3Rvci0+aXNfbXN0X2Nvbm5l Y3RvcikKKwkJCWNvbnRpbnVlOworCisJCWlmIChyYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydCAh PSBtc3RfY29ubikKKwkJCWNvbnRpbnVlOworCisJCXN1YmVuYyA9IHJhZGVvbl9jb25uZWN0b3It Pm1zdF9lbmNvZGVyOworCQltc3RfZW5jID0gc3ViZW5jLT5lbmNfcHJpdjsKKworCQlpZiAoIW1z dF9lbmMtPmVuY19hY3RpdmUpCisJCQljb250aW51ZTsKKworCQluZXdfYXR0cmlic1tpZHhdLmZl ID0gbXN0X2VuYy0+ZmU7CisJCW5ld19hdHRyaWJzW2lkeF0uc2xvdHMgPSBkcm1fZHBfbXN0X2dl dF92Y3BpX3Nsb3RzKCZtc3RfY29ubi0+bXN0X21nciwgbXN0X2VuYy0+cG9ydCk7CisJCWlkeCsr OworCX0KKworCWZvciAoaSA9IDA7IGkgPCBpZHg7IGkrKykgeworCQlpZiAobmV3X2F0dHJpYnNb aV0uZmUgIT0gbXN0X2Nvbm4tPmN1cl9zdHJlYW1fYXR0cmlic1tpXS5mZSB8fAorCQkgICAgbmV3 X2F0dHJpYnNbaV0uc2xvdHMgIT0gbXN0X2Nvbm4tPmN1cl9zdHJlYW1fYXR0cmlic1tpXS5zbG90 cykgeworCQkJcmFkZW9uX2RwX21zdF9zZXRfc3RyZWFtX2F0dHJpYihwcmltYXJ5LCBpLCBuZXdf YXR0cmlic1tpXS5mZSwgbmV3X2F0dHJpYnNbaV0uc2xvdHMpOworCQkJbXN0X2Nvbm4tPmN1cl9z dHJlYW1fYXR0cmlic1tpXS5mZSA9IG5ld19hdHRyaWJzW2ldLmZlOworCQkJbXN0X2Nvbm4tPmN1 cl9zdHJlYW1fYXR0cmlic1tpXS5zbG90cyA9IG5ld19hdHRyaWJzW2ldLnNsb3RzOworCQl9CisJ fQorCisJZm9yIChpID0gaWR4OyBpIDwgbXN0X2Nvbm4tPmVuYWJsZWRfYXR0cmliczsgaSsrKSB7 CisJCXJhZGVvbl9kcF9tc3Rfc2V0X3N0cmVhbV9hdHRyaWIocHJpbWFyeSwgaSwgMCwgMCk7CisJ CW1zdF9jb25uLT5jdXJfc3RyZWFtX2F0dHJpYnNbaV0uZmUgPSAwOworCQltc3RfY29ubi0+Y3Vy X3N0cmVhbV9hdHRyaWJzW2ldLnNsb3RzID0gMDsKKwl9CisJbXN0X2Nvbm4tPmVuYWJsZWRfYXR0 cmlicyA9IGlkeDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByYWRlb25fZHBfbXN0X3Nl dF92Y3Bfc2l6ZShzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKm1zdCwgdWludDMyX3QgeCwgdWludDMy X3QgeSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbXN0LT5iYXNlLmRldjsKKwlzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHJhZGVv bl9lbmNvZGVyX21zdCAqbXN0X2VuYyA9IG1zdC0+ZW5jX3ByaXY7CisJdWludDMyX3QgdmFsLCB0 ZW1wOworCXVpbnQzMl90IG9mZnNldCA9IHJhZGVvbl9hdG9tX3NldF9lbmNfb2Zmc2V0KG1zdF9l bmMtPmZlKTsKKwlpbnQgcmV0cmllcyA9IDA7CisKKwl2YWwgPSAoeCA8PCAyNikgfCAoeSAmICgo MTw8MjUpLTEpKTsKKworCVdSRUczMihOSV9EUF9NU0VfUkFURV9DTlRMICsgb2Zmc2V0LCB2YWwp OworCisJZG8geworCQl0ZW1wID0gUlJFRzMyKE5JX0RQX01TRV9SQVRFX1VQREFURSArIG9mZnNl dCk7CisJfSB3aGlsZSAoKHRlbXAgJiAweDEpICYmIChyZXRyaWVzKysgPCAxMDAwMCkpOworCisJ aWYgKHJldHJpZXMgPj0gMTAwMDApCisJCURSTV9FUlJPUigidGltZWQgb3V0IHdhaXQgZm9yIHJh dGUgY250bCAlZFxuIiwgbXN0X2VuYy0+ZmUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHJhZGVvbl9kcF9tc3RfZ2V0X2RkY19tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yID0gdG9f cmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpt YXN0ZXIgPSByYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydDsKKwlzdHJ1Y3QgZWRpZCAqZWRpZDsK KwlpbnQgcmV0ID0gMDsKKworCWVkaWQgPSBkcm1fZHBfbXN0X2dldF9lZGlkKGNvbm5lY3Rvciwg Jm1hc3Rlci0+bXN0X21nciwgcmFkZW9uX2Nvbm5lY3Rvci0+cG9ydCk7CisJcmFkZW9uX2Nvbm5l Y3Rvci0+ZWRpZCA9IGVkaWQ7CisJRFJNX0RFQlVHX0tNUygiZWRpZCByZXRyaWV2ZWQgJXBcbiIs IGVkaWQpOworCWlmIChyYWRlb25fY29ubmVjdG9yLT5lZGlkKSB7CisJCWRybV9tb2RlX2Nvbm5l Y3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eSgmcmFkZW9uX2Nvbm5lY3Rvci0+YmFzZSwgcmFkZW9u X2Nvbm5lY3Rvci0+ZWRpZCk7CisJCXJldCA9IGRybV9hZGRfZWRpZF9tb2RlcygmcmFkZW9uX2Nv bm5lY3Rvci0+YmFzZSwgcmFkZW9uX2Nvbm5lY3Rvci0+ZWRpZCk7CisJCWRybV9lZGlkX3RvX2Vs ZCgmcmFkZW9uX2Nvbm5lY3Rvci0+YmFzZSwgcmFkZW9uX2Nvbm5lY3Rvci0+ZWRpZCk7CisJCXJl dHVybiByZXQ7CisJfQorCWRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eSgm cmFkZW9uX2Nvbm5lY3Rvci0+YmFzZSwgTlVMTCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IHJhZGVvbl9kcF9tc3RfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCit7CisJcmV0dXJuIHJhZGVvbl9kcF9tc3RfZ2V0X2RkY19tb2Rlcyhjb25uZWN0b3Ip OworfQorCitzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKK3JhZGVvbl9kcF9tc3RfbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpCit7CisJLyogVE9ETyAtIHZhbGlkYXRlIG1vZGUgYWdhaW5zdCBhdmFp bGFibGUgUEJOIGZvciBsaW5rICovCisJaWYgKG1vZGUtPmNsb2NrIDwgMTAwMDApCisJCXJldHVy biBNT0RFX0NMT0NLX0xPVzsKKworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJM Q0xLKQorCQlyZXR1cm4gTU9ERV9IX0lMTEVHQUw7CisKKwlyZXR1cm4gTU9ERV9PSzsKK30KKwor c3RydWN0IGRybV9lbmNvZGVyICpyYWRlb25fbXN0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25f Y29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCisJcmV0dXJuICZy YWRlb25fY29ubmVjdG9yLT5tc3RfZW5jb2Rlci0+YmFzZTsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyByYWRlb25fZHBfbXN0X2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IHJhZGVvbl9kcF9tc3RfZ2V0X21vZGVzLAor CS5tb2RlX3ZhbGlkID0gcmFkZW9uX2RwX21zdF9tb2RlX3ZhbGlkLAorCS5iZXN0X2VuY29kZXIg PSByYWRlb25fbXN0X2Jlc3RfZW5jb2RlciwKK307CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzCityYWRlb25fZHBfbXN0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBib29sIGZvcmNlKQoreworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25f Y29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCXN0cnVjdCByYWRl b25fY29ubmVjdG9yICptYXN0ZXIgPSByYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydDsKKworCXJl dHVybiBkcm1fZHBfbXN0X2RldGVjdF9wb3J0KGNvbm5lY3RvciwgJm1hc3Rlci0+bXN0X21nciwg cmFkZW9uX2Nvbm5lY3Rvci0+cG9ydCk7Cit9CisKK3N0YXRpYyB2b2lkCityYWRlb25fZHBfbXN0 X2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJ c3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IgPSB0b19yYWRlb25fY29u bmVjdG9yKGNvbm5lY3Rvcik7CisJc3RydWN0IHJhZGVvbl9lbmNvZGVyICpyYWRlb25fZW5jb2Rl ciA9IHJhZGVvbl9jb25uZWN0b3ItPm1zdF9lbmNvZGVyOworCisJZHJtX2VuY29kZXJfY2xlYW51 cCgmcmFkZW9uX2VuY29kZXItPmJhc2UpOworCWtmcmVlKHJhZGVvbl9lbmNvZGVyKTsKKwlkcm1f Y29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKKwlrZnJlZShyYWRlb25fY29ubmVjdG9yKTsK K30KKworc3RhdGljIHZvaWQgcmFkZW9uX2Nvbm5lY3Rvcl9kcG1zKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsIGludCBtb2RlKQoreworCURSTV9ERUJVR19LTVMoIlxuIik7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyByYWRlb25fZHBfbXN0X2Nv bm5lY3Rvcl9mdW5jcyA9IHsKKwkuZHBtcyA9IHJhZGVvbl9jb25uZWN0b3JfZHBtcywKKwkuZGV0 ZWN0ID0gcmFkZW9uX2RwX21zdF9kZXRlY3QsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3By b2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmRlc3Ryb3kgPSByYWRlb25fZHBfbXN0X2Nv bm5lY3Rvcl9kZXN0cm95LAorfTsKKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yICpyYWRl b25fZHBfYWRkX21zdF9jb25uZWN0b3Ioc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGNvbnN0IGNoYXIgKnBhdGhwcm9wKQor eworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICptYXN0ZXIgPSBjb250YWluZXJfb2YobWdyLCBz dHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciwgbXN0X21ncik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG1hc3Rlci0+YmFzZS5kZXY7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9y OworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisKKwlyYWRlb25fY29ubmVjdG9y ID0ga3phbGxvYyhzaXplb2YoKnJhZGVvbl9jb25uZWN0b3IpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXJhZGVvbl9jb25uZWN0b3IpCisJCXJldHVybiBOVUxMOworCisJcmFkZW9uX2Nvbm5lY3Rvci0+ aXNfbXN0X2Nvbm5lY3RvciA9IHRydWU7CisJY29ubmVjdG9yID0gJnJhZGVvbl9jb25uZWN0b3It PmJhc2U7CisJcmFkZW9uX2Nvbm5lY3Rvci0+cG9ydCA9IHBvcnQ7CisJcmFkZW9uX2Nvbm5lY3Rv ci0+bXN0X3BvcnQgPSBtYXN0ZXI7CisJRFJNX0RFQlVHX0tNUygiXG4iKTsKKworCWRybV9jb25u ZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwgJnJhZGVvbl9kcF9tc3RfY29ubmVjdG9yX2Z1bmNz LCBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOworCWRybV9jb25uZWN0b3JfaGVscGVy X2FkZChjb25uZWN0b3IsICZyYWRlb25fZHBfbXN0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwor CXJhZGVvbl9jb25uZWN0b3ItPm1zdF9lbmNvZGVyID0gcmFkZW9uX2RwX2NyZWF0ZV9mYWtlX21z dF9lbmNvZGVyKG1hc3Rlcik7CisKKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVj dG9yLT5iYXNlLCBkZXYtPm1vZGVfY29uZmlnLnBhdGhfcHJvcGVydHksIDApOworCWRybV9tb2Rl X2Nvbm5lY3Rvcl9zZXRfcGF0aF9wcm9wZXJ0eShjb25uZWN0b3IsIHBhdGhwcm9wKTsKKwlkcm1f cmVpbml0X3ByaW1hcnlfbW9kZV9ncm91cChkZXYpOworCisJbXV0ZXhfbG9jaygmZGV2LT5tb2Rl X2NvbmZpZy5tdXRleCk7CisJcmFkZW9uX2ZiX2FkZF9jb25uZWN0b3IocmRldiwgY29ubmVjdG9y KTsKKwltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCisJZHJtX2Nvbm5l Y3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOworCXJldHVybiBjb25uZWN0b3I7Cit9CisKK3N0YXRp YyB2b2lkIHJhZGVvbl9kcF9kZXN0cm95X21zdF9jb25uZWN0b3Ioc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICptYXN0ZXIgPSBjb250YWluZXJfb2Yo bWdyLCBzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciwgbXN0X21ncik7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG1hc3Rlci0+YmFzZS5kZXY7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYg PSBkZXYtPmRldl9wcml2YXRlOworCisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rv cik7CisJLyogbmVlZCB0byBudWtlIHRoZSBjb25uZWN0b3IgKi8KKwltdXRleF9sb2NrKCZkZXYt Pm1vZGVfY29uZmlnLm11dGV4KTsKKwkvKiBkcG1zIG9mZiAqLworCXJhZGVvbl9mYl9yZW1vdmVf Y29ubmVjdG9yKHJkZXYsIGNvbm5lY3Rvcik7CisKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29u bmVjdG9yKTsKKwltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCWRybV9y ZWluaXRfcHJpbWFyeV9tb2RlX2dyb3VwKGRldik7CisKKworCWtmcmVlKGNvbm5lY3Rvcik7CisJ RFJNX0RFQlVHX0tNUygiXG4iKTsKK30KKworc3RhdGljIHZvaWQgcmFkZW9uX2RwX21zdF9ob3Rw bHVnKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKQoreworCXN0cnVjdCByYWRl b25fY29ubmVjdG9yICptYXN0ZXIgPSBjb250YWluZXJfb2YobWdyLCBzdHJ1Y3QgcmFkZW9uX2Nv bm5lY3RvciwgbXN0X21ncik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1hc3Rlci0+YmFz ZS5kZXY7CisKKwlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGRldik7Cit9CisKK3N0cnVj dCBkcm1fZHBfbXN0X3RvcG9sb2d5X2NicyBtc3RfY2JzID0geworCS5hZGRfY29ubmVjdG9yID0g cmFkZW9uX2RwX2FkZF9tc3RfY29ubmVjdG9yLAorCS5kZXN0cm95X2Nvbm5lY3RvciA9IHJhZGVv bl9kcF9kZXN0cm95X21zdF9jb25uZWN0b3IsCisJLmhvdHBsdWcgPSByYWRlb25fZHBfbXN0X2hv dHBsdWcsCit9OworCitzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciAqcmFkZW9uX21zdF9maW5kX2Nv bm5lY3RvcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGVuY29kZXItPmRldjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rvcl9saXN0LCBoZWFkKSB7CisJCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25f Y29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3IpOworCQlpZiAoIWNvbm5l Y3Rvci0+ZW5jb2RlcikKKwkJCWNvbnRpbnVlOworCQlpZiAoIXJhZGVvbl9jb25uZWN0b3ItPmlz X21zdF9jb25uZWN0b3IpCisJCQljb250aW51ZTsKKworCQlEUk1fREVCVUdfS01TKCJjaGVja2lu ZyAlcCB2cyAlcFxuIiwgY29ubmVjdG9yLT5lbmNvZGVyLCBlbmNvZGVyKTsKKwkJaWYgKGNvbm5l Y3Rvci0+ZW5jb2RlciA9PSBlbmNvZGVyKQorCQkJcmV0dXJuIHJhZGVvbl9jb25uZWN0b3I7CisJ fQorCXJldHVybiBOVUxMOworfQorCit2b2lkIHJhZGVvbl9kcF9tc3RfcHJlcGFyZV9wbGwoc3Ry dWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlz dHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFkZW9uX2NydGMoY3J0Yyk7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHJhZGVvbl9lbmNvZGVyICpyYWRl b25fZW5jb2RlciA9IHRvX3JhZGVvbl9lbmNvZGVyKHJhZGVvbl9jcnRjLT5lbmNvZGVyKTsKKwlz dHJ1Y3QgcmFkZW9uX2VuY29kZXJfbXN0ICptc3RfZW5jID0gcmFkZW9uX2VuY29kZXItPmVuY19w cml2OworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yID0gcmFkZW9u X21zdF9maW5kX2Nvbm5lY3RvcigmcmFkZW9uX2VuY29kZXItPmJhc2UpOworCWludCBkcF9jbG9j azsKKwlzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3Rvcl9hdG9tX2RpZyAqZGlnX2Nvbm5lY3RvciA9IG1z dF9lbmMtPmNvbm5lY3Rvci0+Y29uX3ByaXY7CisKKwlpZiAocmFkZW9uX2Nvbm5lY3Rvcikgewor CQlyYWRlb25fY29ubmVjdG9yLT5waXhlbGNsb2NrX2Zvcl9tb2Rlc2V0ID0gbW9kZS0+Y2xvY2s7 CisJCWlmIChyYWRlb25fY29ubmVjdG9yLT5iYXNlLmRpc3BsYXlfaW5mby5icGMpCisJCQlyYWRl b25fY3J0Yy0+YnBjID0gcmFkZW9uX2Nvbm5lY3Rvci0+YmFzZS5kaXNwbGF5X2luZm8uYnBjOwor CQllbHNlCisJCQlyYWRlb25fY3J0Yy0+YnBjID0gODsKKwl9CisKKwlEUk1fREVCVUdfS01TKCJk cF9jbG9jayAlcCAlZFxuIiwgZGlnX2Nvbm5lY3RvciwgZGlnX2Nvbm5lY3Rvci0+ZHBfY2xvY2sp OworCWRwX2Nsb2NrID0gZGlnX2Nvbm5lY3Rvci0+ZHBfY2xvY2s7CisJcmFkZW9uX2NydGMtPnNz X2VuYWJsZWQgPQorCQlyYWRlb25fYXRvbWJpb3NfZ2V0X2FzaWNfc3NfaW5mbyhyZGV2LCAmcmFk ZW9uX2NydGMtPnNzLAorCQkJCQkJIEFTSUNfSU5URVJOQUxfU1NfT05fRFAsCisJCQkJCQkgZHBf Y2xvY2spOworfQorCitzdGF0aWMgdm9pZAorcmFkZW9uX21zdF9lbmNvZGVyX2RwbXMoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLCBpbnQgbW9kZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyLCAqcHJp bWFyeTsKKwlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfbXN0ICptc3RfZW5jOworCXN0cnVjdCByYWRl b25fZW5jb2Rlcl9hdG9tX2RpZyAqZGlnX2VuYzsKKwlzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciAq cmFkZW9uX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJc3RydWN0IHJhZGVv bl9jcnRjICpyYWRlb25fY3J0YzsKKwlpbnQgcmV0LCBzbG90czsKKworCWlmICghQVNJQ19JU19E Q0U1KHJkZXYpKSB7CisJCURSTV9FUlJPUigiZ290IG1zdCBkcG1zIG9uIG5vbi1EQ0U1XG4iKTsK KwkJcmV0dXJuOworCX0KKworCXJhZGVvbl9jb25uZWN0b3IgPSByYWRlb25fbXN0X2ZpbmRfY29u bmVjdG9yKGVuY29kZXIpOworCWlmICghcmFkZW9uX2Nvbm5lY3RvcikKKwkJcmV0dXJuOworCisJ cmFkZW9uX2VuY29kZXIgPSB0b19yYWRlb25fZW5jb2RlcihlbmNvZGVyKTsKKworCW1zdF9lbmMg PSByYWRlb25fZW5jb2Rlci0+ZW5jX3ByaXY7CisKKwlwcmltYXJ5ID0gbXN0X2VuYy0+cHJpbWFy eTsKKworCWRpZ19lbmMgPSBwcmltYXJ5LT5lbmNfcHJpdjsKKworCWNydGMgPSBlbmNvZGVyLT5j cnRjOworCURSTV9ERUJVR19LTVMoImdvdCBjb25uZWN0b3IgJWRcbiIsIGRpZ19lbmMtPmFjdGl2 ZV9tc3RfbGlua3MpOworCisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBEUk1fTU9ERV9EUE1TX09O OgorCQlkaWdfZW5jLT5hY3RpdmVfbXN0X2xpbmtzKys7CisKKwkJcmFkZW9uX2NydGMgPSB0b19y YWRlb25fY3J0YyhjcnRjKTsKKworCQlpZiAoZGlnX2VuYy0+YWN0aXZlX21zdF9saW5rcyA9PSAx KSB7CisJCQltc3RfZW5jLT5mZSA9IGRpZ19lbmMtPmRpZ19lbmNvZGVyOworCQkJbXN0X2VuYy0+ ZmVfZnJvbV9iZSA9IHRydWU7CisJCQlhdG9tYmlvc19zZXRfbXN0X2VuY29kZXJfY3J0Y19zb3Vy Y2UoZW5jb2RlciwgbXN0X2VuYy0+ZmUpOworCisJCQlhdG9tYmlvc19kaWdfZW5jb2Rlcl9zZXR1 cCgmcHJpbWFyeS0+YmFzZSwgQVRPTV9FTkNPREVSX0NNRF9TRVRVUCwgMCk7CisJCQlhdG9tYmlv c19kaWdfdHJhbnNtaXR0ZXJfc2V0dXAyKCZwcmltYXJ5LT5iYXNlLCBBVE9NX1RSQU5TTUlUVEVS X0FDVElPTl9FTkFCTEUsIDAsIDAsIGRpZ19lbmMtPmRpZ19lbmNvZGVyKTsKKworCQkJaWYgKHJh ZGVvbl9kcF9uZWVkc19saW5rX3RyYWluKG1zdF9lbmMtPmNvbm5lY3RvcikgfHwgZGlnX2VuYy0+ YWN0aXZlX21zdF9saW5rcyA9PSAxKSB7CisJCQkJcmFkZW9uX2RwX2xpbmtfdHJhaW4oJnByaW1h cnktPmJhc2UsICZtc3RfZW5jLT5jb25uZWN0b3ItPmJhc2UpOworCQkJfQorCisJCX0gZWxzZSB7 CisJCQltc3RfZW5jLT5mZSA9IHJhZGVvbl9hdG9tX3BpY2tfZGlnX2VuY29kZXIoZW5jb2Rlciwg cmFkZW9uX2NydGMtPmNydGNfaWQpOworCQkJaWYgKG1zdF9lbmMtPmZlID09IC0xKQorCQkJCURS TV9FUlJPUigiZmFpbGVkIHRvIGdldCBmcm9udGVuZCBmb3IgZGlnIGVuY29kZXJcbiIpOworCQkJ bXN0X2VuYy0+ZmVfZnJvbV9iZSA9IGZhbHNlOworCQkJYXRvbWJpb3Nfc2V0X21zdF9lbmNvZGVy X2NydGNfc291cmNlKGVuY29kZXIsIG1zdF9lbmMtPmZlKTsKKwkJfQorCisJCURSTV9ERUJVR19L TVMoImRpZyBlbmNvZGVyIGlzICVkICVkICVkXG4iLCBkaWdfZW5jLT5kaWdfZW5jb2RlciwgZGln X2VuYy0+bGlua2IsIHJhZGVvbl9jcnRjLT5jcnRjX2lkKTsKKworCQlyZXQgPSBkcm1fZHBfbXN0 X2FsbG9jYXRlX3ZjcGkoJnJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdyLAorCQkJ CQkgICAgICAgcmFkZW9uX2Nvbm5lY3Rvci0+cG9ydCwKKwkJCQkJICAgICAgIG1zdF9lbmMtPnBi biwgJnNsb3RzKTsKKwkJcmV0ID0gZHJtX2RwX3VwZGF0ZV9wYXlsb2FkX3BhcnQxKCZyYWRlb25f Y29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21ncik7CisKKwkJcmFkZW9uX2RwX21zdF9zZXRfYmVf Y250bChwcmltYXJ5LCBtc3RfZW5jLCByYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydC0+aHBkLmhw ZCwgdHJ1ZSk7CisKKwkJbXN0X2VuYy0+ZW5jX2FjdGl2ZSA9IHRydWU7CisJCXJhZGVvbl9kcF9t c3RfdXBkYXRlX3N0cmVhbV9hdHRyaWJzKHJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0LCBwcmlt YXJ5KTsKKwkJcmFkZW9uX2RwX21zdF9zZXRfdmNwX3NpemUocmFkZW9uX2VuY29kZXIsIHNsb3Rz LCAwKTsKKworCQlhdG9tYmlvc19kaWdfZW5jb2Rlcl9zZXR1cDIoJnByaW1hcnktPmJhc2UsIEFU T01fRU5DT0RFUl9DTURfRFBfVklERU9fT04sIDAsIG1zdF9lbmMtPmZlKTsKKwkJcmV0ID0gZHJt X2RwX2NoZWNrX2FjdF9zdGF0dXMoJnJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdy KTsKKworCQlyZXQgPSBkcm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDIoJnJhZGVvbl9jb25uZWN0 b3ItPm1zdF9wb3J0LT5tc3RfbWdyKTsKKworCQlicmVhazsKKwljYXNlIERSTV9NT0RFX0RQTVNf U1RBTkRCWToKKwljYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoKKwljYXNlIERSTV9NT0RFX0RQ TVNfT0ZGOgorCQlEUk1fRVJST1IoIkRQTVMgT0ZGICVkXG4iLCBkaWdfZW5jLT5hY3RpdmVfbXN0 X2xpbmtzKTsKKworCQlpZiAoIW1zdF9lbmMtPmVuY19hY3RpdmUpCisJCQlyZXR1cm47CisKKwkJ ZHJtX2RwX21zdF9yZXNldF92Y3BpX3Nsb3RzKCZyYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydC0+ bXN0X21nciwgbXN0X2VuYy0+cG9ydCk7CisJCXJldCA9IGRybV9kcF91cGRhdGVfcGF5bG9hZF9w YXJ0MSgmcmFkZW9uX2Nvbm5lY3Rvci0+bXN0X3BvcnQtPm1zdF9tZ3IpOworCisJCWRybV9kcF9j aGVja19hY3Rfc3RhdHVzKCZyYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21ncik7CisJ CS8qIGFuZCB0aGlzIGNhbiBhbHNvIGZhaWwgKi8KKwkJZHJtX2RwX3VwZGF0ZV9wYXlsb2FkX3Bh cnQyKCZyYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21ncik7CisKKwkJZHJtX2RwX21z dF9kZWFsbG9jYXRlX3ZjcGkoJnJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdyLCBt c3RfZW5jLT5wb3J0KTsKKworCQltc3RfZW5jLT5lbmNfYWN0aXZlID0gZmFsc2U7CisJCXJhZGVv bl9kcF9tc3RfdXBkYXRlX3N0cmVhbV9hdHRyaWJzKHJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0 LCBwcmltYXJ5KTsKKworCQlyYWRlb25fZHBfbXN0X3NldF9iZV9jbnRsKHByaW1hcnksIG1zdF9l bmMsIHJhZGVvbl9jb25uZWN0b3ItPm1zdF9wb3J0LT5ocGQuaHBkLCBmYWxzZSk7CisJCWF0b21i aW9zX2RpZ19lbmNvZGVyX3NldHVwMigmcHJpbWFyeS0+YmFzZSwgQVRPTV9FTkNPREVSX0NNRF9E UF9WSURFT19PRkYsIDAsIG1zdF9lbmMtPmZlKTsKKworCQlpZiAoIW1zdF9lbmMtPmZlX2Zyb21f YmUpCisJCQlyYWRlb25fYXRvbV9yZWxlYXNlX2RpZ19lbmNvZGVyKHJkZXYsIG1zdF9lbmMtPmZl KTsKKworCQltc3RfZW5jLT5mZV9mcm9tX2JlID0gZmFsc2U7CisJCWRpZ19lbmMtPmFjdGl2ZV9t c3RfbGlua3MtLTsKKwkJaWYgKGRpZ19lbmMtPmFjdGl2ZV9tc3RfbGlua3MgPT0gMCkgeworCQkJ LyogZHJvcCBsaW5rICovCisJCX0KKworCQlicmVhazsKKwl9CisKK30KKworc3RhdGljIGJvb2wg cmFkZW9uX21zdF9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkg ICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3sKKwlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJf bXN0ICptc3RfZW5jOworCXN0cnVjdCByYWRlb25fZW5jb2RlciAqcmFkZW9uX2VuY29kZXIgPSB0 b19yYWRlb25fZW5jb2RlcihlbmNvZGVyKTsKKwlpbnQgYnBwID0gMjQ7CisKKwltc3RfZW5jID0g cmFkZW9uX2VuY29kZXItPmVuY19wcml2OworCisJbXN0X2VuYy0+cGJuID0gZHJtX2RwX2NhbGNf cGJuX21vZGUoYWRqdXN0ZWRfbW9kZS0+Y2xvY2ssIGJwcCk7CisKKwltc3RfZW5jLT5wcmltYXJ5 LT5hY3RpdmVfZGV2aWNlID0gbXN0X2VuYy0+cHJpbWFyeS0+ZGV2aWNlcyAmIG1zdF9lbmMtPmNv bm5lY3Rvci0+ZGV2aWNlczsKKwlEUk1fREVCVUdfS01TKCJzZXR0aW5nIGFjdGl2ZSBkZXZpY2Ug dG8gJTA4eCBmcm9tICUwOHggJTA4eCBmb3IgZW5jb2RlciAlZFxuIiwJCSAgbXN0X2VuYy0+cHJp bWFyeS0+YWN0aXZlX2RldmljZSwgbXN0X2VuYy0+cHJpbWFyeS0+ZGV2aWNlcywKKwkJICAgICAg bXN0X2VuYy0+Y29ubmVjdG9yLT5kZXZpY2VzLCBtc3RfZW5jLT5wcmltYXJ5LT5iYXNlLmVuY29k ZXJfdHlwZSk7CisKKworCWRybV9tb2RlX3NldF9jcnRjaW5mbyhhZGp1c3RlZF9tb2RlLCAwKTsK Kwl7CisJICBzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3Rvcl9hdG9tX2RpZyAqZGlnX2Nvbm5lY3RvcjsK KworCSAgZGlnX2Nvbm5lY3RvciA9IG1zdF9lbmMtPmNvbm5lY3Rvci0+Y29uX3ByaXY7CisJICBk aWdfY29ubmVjdG9yLT5kcF9sYW5lX2NvdW50ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGRpZ19j b25uZWN0b3ItPmRwY2QpOworCSAgZGlnX2Nvbm5lY3Rvci0+ZHBfY2xvY2sgPSByYWRlb25fZHBf Z2V0X21heF9saW5rX3JhdGUoJm1zdF9lbmMtPmNvbm5lY3Rvci0+YmFzZSwgZGlnX2Nvbm5lY3Rv ci0+ZHBjZCk7CisJICBEUk1fREVCVUdfS01TKCJkaWcgY2xvY2sgJXAgJWQgJWRcbiIsIGRpZ19j b25uZWN0b3IsIGRpZ19jb25uZWN0b3ItPmRwX2xhbmVfY291bnQsIGRpZ19jb25uZWN0b3ItPmRw X2Nsb2NrKTsKKwl9CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHJhZGVvbl9tc3Rf ZW5jb2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3Qg cmFkZW9uX2Nvbm5lY3RvciAqcmFkZW9uX2Nvbm5lY3RvcjsKKwlzdHJ1Y3QgcmFkZW9uX2VuY29k ZXIgKnJhZGVvbl9lbmNvZGVyLCAqcHJpbWFyeTsKKwlzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfbXN0 ICptc3RfZW5jOworCXN0cnVjdCByYWRlb25fZW5jb2Rlcl9hdG9tX2RpZyAqZGlnX2VuYzsKKwor CXJhZGVvbl9jb25uZWN0b3IgPSByYWRlb25fbXN0X2ZpbmRfY29ubmVjdG9yKGVuY29kZXIpOwor CWlmICghcmFkZW9uX2Nvbm5lY3RvcikgeworCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gZmlu ZCBjb25uZWN0b3IgJXBcbiIsIGVuY29kZXIpOworCQlyZXR1cm47CisJfQorCXJhZGVvbl9lbmNv ZGVyID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7CisKKwlyYWRlb25fbXN0X2VuY29kZXJf ZHBtcyhlbmNvZGVyLCBEUk1fTU9ERV9EUE1TX09GRik7CisKKwltc3RfZW5jID0gcmFkZW9uX2Vu Y29kZXItPmVuY19wcml2OworCisJcHJpbWFyeSA9IG1zdF9lbmMtPnByaW1hcnk7CisKKwlkaWdf ZW5jID0gcHJpbWFyeS0+ZW5jX3ByaXY7CisKKwltc3RfZW5jLT5wb3J0ID0gcmFkZW9uX2Nvbm5l Y3Rvci0+cG9ydDsKKworCWlmIChkaWdfZW5jLT5kaWdfZW5jb2RlciA9PSAtMSkgeworCQlkaWdf ZW5jLT5kaWdfZW5jb2RlciA9IHJhZGVvbl9hdG9tX3BpY2tfZGlnX2VuY29kZXIoJnByaW1hcnkt PmJhc2UsIC0xKTsKKwkJcHJpbWFyeS0+b2Zmc2V0ID0gcmFkZW9uX2F0b21fc2V0X2VuY19vZmZz ZXQoZGlnX2VuYy0+ZGlnX2VuY29kZXIpOworCQlhdG9tYmlvc19zZXRfbXN0X2VuY29kZXJfY3J0 Y19zb3VyY2UoZW5jb2RlciwgZGlnX2VuYy0+ZGlnX2VuY29kZXIpOworCisKKwl9CisJRFJNX0RF QlVHX0tNUygiJWQgJWRcbiIsIGRpZ19lbmMtPmRpZ19lbmNvZGVyLCBwcmltYXJ5LT5vZmZzZXQp OworfQorCitzdGF0aWMgdm9pZAorcmFkZW9uX21zdF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsCisJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQorewor CURSTV9ERUJVR19LTVMoIlxuIik7Cit9CisKK3N0YXRpYyB2b2lkIHJhZGVvbl9tc3RfZW5jb2Rl cl9jb21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworCXJhZGVvbl9tc3RfZW5j b2Rlcl9kcG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT04pOworCURSTV9ERUJVR19LTVMoIlxu Iik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHJh ZGVvbl9tc3RfaGVscGVyX2Z1bmNzID0geworCS5kcG1zID0gcmFkZW9uX21zdF9lbmNvZGVyX2Rw bXMsCisJLm1vZGVfZml4dXAgPSByYWRlb25fbXN0X21vZGVfZml4dXAsCisJLnByZXBhcmUgPSBy YWRlb25fbXN0X2VuY29kZXJfcHJlcGFyZSwKKwkubW9kZV9zZXQgPSByYWRlb25fbXN0X2VuY29k ZXJfbW9kZV9zZXQsCisJLmNvbW1pdCA9IHJhZGVvbl9tc3RfZW5jb2Rlcl9jb21taXQsCit9Owor Cit2b2lkIHJhZGVvbl9kcF9tc3RfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKK3sKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworCWtmcmVlKGVuY29k ZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIHJhZGVvbl9k cF9tc3RfZW5jX2Z1bmNzID0geworCS5kZXN0cm95ID0gcmFkZW9uX2RwX21zdF9lbmNvZGVyX2Rl c3Ryb3ksCit9OworCitzdGF0aWMgc3RydWN0IHJhZGVvbl9lbmNvZGVyICoKK3JhZGVvbl9kcF9j cmVhdGVfZmFrZV9tc3RfZW5jb2RlcihzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3RvciAqY29ubmVjdG9y KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2OworCXN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgcmFk ZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyOworCXN0cnVjdCByYWRlb25fZW5jb2Rlcl9tc3Qg Km1zdF9lbmM7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fY29u bmVjdG9yX2hlbHBlcl9mdW5jcyAqY29ubmVjdG9yX2Z1bmNzID0gY29ubmVjdG9yLT5iYXNlLmhl bHBlcl9wcml2YXRlOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jX21hc3RlciA9IGNvbm5lY3Rv cl9mdW5jcy0+YmVzdF9lbmNvZGVyKCZjb25uZWN0b3ItPmJhc2UpOworCisJRFJNX0RFQlVHX0tN UygiZW5jIG1hc3RlciBpcyAlcFxuIiwgZW5jX21hc3Rlcik7CisJcmFkZW9uX2VuY29kZXIgPSBr emFsbG9jKHNpemVvZigqcmFkZW9uX2VuY29kZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXJhZGVv bl9lbmNvZGVyKQorCQlyZXR1cm4gTlVMTDsKKworCXJhZGVvbl9lbmNvZGVyLT5lbmNfcHJpdiA9 IGt6YWxsb2Moc2l6ZW9mKCptc3RfZW5jKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFyYWRlb25fZW5j b2Rlci0+ZW5jX3ByaXYpIHsKKwkJa2ZyZWUocmFkZW9uX2VuY29kZXIpOworCQlyZXR1cm4gTlVM TDsKKwl9CisJZW5jb2RlciA9ICZyYWRlb25fZW5jb2Rlci0+YmFzZTsKKwlzd2l0Y2ggKHJkZXYt Pm51bV9jcnRjKSB7CisJY2FzZSAxOgorCQllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDB4MTsK KwkJYnJlYWs7CisJY2FzZSAyOgorCWRlZmF1bHQ6CisJCWVuY29kZXItPnBvc3NpYmxlX2NydGNz ID0gMHgzOworCQlicmVhazsKKwljYXNlIDQ6CisJCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0g MHhmOworCQlicmVhazsKKwljYXNlIDY6CisJCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMHgz ZjsKKwkJYnJlYWs7CisJfQorCisJZHJtX2VuY29kZXJfaW5pdChkZXYsICZyYWRlb25fZW5jb2Rl ci0+YmFzZSwgJnJhZGVvbl9kcF9tc3RfZW5jX2Z1bmNzLAorCQkJIERSTV9NT0RFX0VOQ09ERVJf RFBNU1QpOworCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJnJhZGVvbl9tc3RfaGVs cGVyX2Z1bmNzKTsKKworCW1zdF9lbmMgPSByYWRlb25fZW5jb2Rlci0+ZW5jX3ByaXY7CisJbXN0 X2VuYy0+Y29ubmVjdG9yID0gY29ubmVjdG9yOworCW1zdF9lbmMtPnByaW1hcnkgPSB0b19yYWRl b25fZW5jb2RlcihlbmNfbWFzdGVyKTsKKwlyYWRlb25fZW5jb2Rlci0+aXNfbXN0X2VuY29kZXIg PSB0cnVlOworCXJldHVybiByYWRlb25fZW5jb2RlcjsKK30KKworaW50CityYWRlb25fZHBfbXN0 X2luaXQoc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IpCit7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHJhZGVvbl9jb25uZWN0b3ItPmJhc2UuZGV2OworCisJaWYg KCFyYWRlb25fY29ubmVjdG9yLT5kZGNfYnVzLT5oYXNfYXV4KQorCQlyZXR1cm4gMDsKKworCXJh ZGVvbl9jb25uZWN0b3ItPm1zdF9tZ3IuY2JzID0gJm1zdF9jYnM7CisJcmV0dXJuIGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyX2luaXQoJnJhZGVvbl9jb25uZWN0b3ItPm1zdF9tZ3IsIGRldi0+ZGV2 LCAmcmFkZW9uX2Nvbm5lY3Rvci0+ZGRjX2J1cy0+YXV4LCAxNiwgNiwgcmFkZW9uX2Nvbm5lY3Rv ci0+YmFzZS5iYXNlLmlkKTsKK30KKworaW50CityYWRlb25fZHBfbXN0X3Byb2JlKHN0cnVjdCBy YWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yKQoreworCXN0cnVjdCByYWRlb25fY29u bmVjdG9yX2F0b21fZGlnICpkaWdfY29ubmVjdG9yID0gcmFkZW9uX2Nvbm5lY3Rvci0+Y29uX3By aXY7CisJaW50IHJldDsKKwl1OCBtc2dbMV07CisKKwlpZiAoZGlnX2Nvbm5lY3Rvci0+ZHBjZFtE UF9EUENEX1JFVl0gPCAweDEyKQorCQlyZXR1cm4gMDsKKworCXJldCA9IGRybV9kcF9kcGNkX3Jl YWQoJnJhZGVvbl9jb25uZWN0b3ItPmRkY19idXMtPmF1eCwgRFBfTVNUTV9DQVAsIG1zZywKKwkJ CSAgICAgICAxKTsKKwlpZiAocmV0KSB7CisJCWlmIChtc2dbMF0gJiBEUF9NU1RfQ0FQKSB7CisJ CQlEUk1fREVCVUdfS01TKCJTaW5rIGlzIE1TVCBjYXBhYmxlXG4iKTsKKwkJCWRpZ19jb25uZWN0 b3ItPmlzX21zdCA9IHRydWU7CisJCX0gZWxzZSB7CisJCQlEUk1fREVCVUdfS01TKCJTaW5rIGlz IG5vdCBNU1QgY2FwYWJsZVxuIik7CisJCQlkaWdfY29ubmVjdG9yLT5pc19tc3QgPSBmYWxzZTsK KwkJfQorCisJfQorCWRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3QoJnJhZGVvbl9jb25u ZWN0b3ItPm1zdF9tZ3IsIGRpZ19jb25uZWN0b3ItPmlzX21zdCk7CisJcmV0dXJuIGRpZ19jb25u ZWN0b3ItPmlzX21zdDsKK30KKworaW50CityYWRlb25fZHBfbXN0X2NoZWNrX3N0YXR1cyhzdHJ1 Y3QgcmFkZW9uX2Nvbm5lY3RvciAqcmFkZW9uX2Nvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgcmFkZW9u X2Nvbm5lY3Rvcl9hdG9tX2RpZyAqZGlnX2Nvbm5lY3RvciA9IHJhZGVvbl9jb25uZWN0b3ItPmNv bl9wcml2OworCWludCByZXRyeTsKKworCWlmIChkaWdfY29ubmVjdG9yLT5pc19tc3QpIHsKKwkJ dTggZXNpWzE2XSA9IHsgMCB9OworCQlpbnQgZHJldDsKKwkJaW50IHJldCA9IDA7CisJCWJvb2wg aGFuZGxlZDsKKworCQlkcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmcmFkZW9uX2Nvbm5lY3Rvci0+ ZGRjX2J1cy0+YXV4LAorCQkJCSAgICAgICBEUF9TSU5LX0NPVU5UX0VTSSwgZXNpLCA4KTsKK2dv X2FnYWluOgorCQlpZiAoZHJldCA9PSA4KSB7CisJCQlEUk1fREVCVUdfS01TKCJnb3QgZXNpICUw MnggJTAyeCAlMDJ4XG4iLCBlc2lbMF0sIGVzaVsxXSwgZXNpWzJdKTsKKwkJCXJldCA9IGRybV9k cF9tc3RfaHBkX2lycSgmcmFkZW9uX2Nvbm5lY3Rvci0+bXN0X21nciwgZXNpLCAmaGFuZGxlZCk7 CisKKwkJCWlmIChoYW5kbGVkKSB7CisJCQkJZm9yIChyZXRyeSA9IDA7IHJldHJ5IDwgMzsgcmV0 cnkrKykgeworCQkJCQlpbnQgd3JldDsKKwkJCQkJd3JldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZy YWRlb25fY29ubmVjdG9yLT5kZGNfYnVzLT5hdXgsIERQX1NJTktfQ09VTlRfRVNJICsgMSwgJmVz aVsxXSwgMyk7CisJCQkJCWlmICh3cmV0ID09IDMpCisJCQkJCQlicmVhazsKKwkJCQl9CisKKwkJ CQlkcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmcmFkZW9uX2Nvbm5lY3Rvci0+ZGRjX2J1cy0+YXV4 LAorCQkJCQkJCURQX1NJTktfQ09VTlRfRVNJLCBlc2ksIDgpOworCQkJCWlmIChkcmV0ID09IDgp IHsKKwkJCQkJRFJNX0RFQlVHX0tNUygiZ290IGVzaTIgJTAyeCAlMDJ4ICUwMnhcbiIsIGVzaVsw XSwgZXNpWzFdLCBlc2lbMl0pOworCQkJCQlnb3RvIGdvX2FnYWluOworCQkJCX0KKwkJCX0gZWxz ZQorCQkJCXJldCA9IDA7CisKKwkJCXJldHVybiByZXQ7CisJCX0gZWxzZSB7CisJCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gZ2V0IEVTSSAtIGRldmljZSBtYXkgaGF2ZSBmYWlsZWQgJWRcbiIs IHJldCk7CisJCQlkaWdfY29ubmVjdG9yLT5pc19tc3QgPSBmYWxzZTsKKwkJCWRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyX3NldF9tc3QoJnJhZGVvbl9jb25uZWN0b3ItPm1zdF9tZ3IsCisJCQkJCQkJ ZGlnX2Nvbm5lY3Rvci0+aXNfbXN0KTsKKwkJCS8qIHNlbmQgYSBob3RwbHVnIGV2ZW50ICovCisJ CX0KKwl9CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19G UykKKworc3RhdGljIGludCByYWRlb25fZGVidWdmc19tc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0 IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBu b2RlLT5taW5vci0+ZGV2OworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3Ry dWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3I7CisJc3RydWN0IHJhZGVvbl9j b25uZWN0b3JfYXRvbV9kaWcgKmRpZ19jb25uZWN0b3I7CisJaW50IGk7CisKKwlkcm1fbW9kZXNl dF9sb2NrX2FsbChkZXYpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5t b2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgeworCQlpZiAoY29ubmVjdG9yLT5jb25u ZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpCisJCQljb250aW51 ZTsKKworCQlyYWRlb25fY29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3Ip OworCQlkaWdfY29ubmVjdG9yID0gcmFkZW9uX2Nvbm5lY3Rvci0+Y29uX3ByaXY7CisJCWlmIChy YWRlb25fY29ubmVjdG9yLT5pc19tc3RfY29ubmVjdG9yKQorCQkJY29udGludWU7CisJCWlmICgh ZGlnX2Nvbm5lY3Rvci0+aXNfbXN0KQorCQkJY29udGludWU7CisJCWRybV9kcF9tc3RfZHVtcF90 b3BvbG9neShtLCAmcmFkZW9uX2Nvbm5lY3Rvci0+bXN0X21ncik7CisKKwkJZm9yIChpID0gMDsg aSA8IHJhZGVvbl9jb25uZWN0b3ItPmVuYWJsZWRfYXR0cmliczsgaSsrKQorCQkJc2VxX3ByaW50 ZihtLCAiYXR0cmliICVkOiAlZCAlZFxuIiwgaSwgcmFkZW9uX2Nvbm5lY3Rvci0+Y3VyX3N0cmVh bV9hdHRyaWJzW2ldLmZlLCByYWRlb25fY29ubmVjdG9yLT5jdXJfc3RyZWFtX2F0dHJpYnNbaV0u c2xvdHMpOworCX0KKwlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2luZm9fbGlzdCByYWRlb25fZGVidWdmc19tc3RfbGlzdFtd ID0geworCXsicmFkZW9uX21zdF9pbmZvIiwgJnJhZGVvbl9kZWJ1Z2ZzX21zdF9pbmZvLCAwLCBO VUxMfSwKK307CisjZW5kaWYKKworaW50IHJhZGVvbl9tc3RfZGVidWdmc19pbml0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2KQoreworI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQorCXJl dHVybiByYWRlb25fZGVidWdmc19hZGRfZmlsZXMocmRldiwgcmFkZW9uX2RlYnVnZnNfbXN0X2xp c3QsIDEpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Ry di5jCmluZGV4IDU3YWEwMzcuLmY4MTEyZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Ry di5jCkBAIC0xOTEsNiArMTkxLDcgQEAgaW50IHJhZGVvbl91c2VfcGZsaXBpcnEgPSAyOwogaW50 IHJhZGVvbl9iYXBtID0gLTE7CiBpbnQgcmFkZW9uX2JhY2tsaWdodCA9IC0xOwogaW50IHJhZGVv bl9hdXhjaCA9IC0xOworaW50IHJhZGVvbl9tc3QgPSAwOwogCiBNT0RVTEVfUEFSTV9ERVNDKG5v X3diLCAiRGlzYWJsZSBBR1Agd3JpdGViYWNrIGZvciBzY3JhdGNoIHJlZ2lzdGVycyIpOwogbW9k dWxlX3BhcmFtX25hbWVkKG5vX3diLCByYWRlb25fbm9fd2IsIGludCwgMDQ0NCk7CkBAIC0yNzks NiArMjgwLDkgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGJhY2tsaWdodCwgcmFkZW9uX2JhY2tsaWdo dCwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoYXV4Y2gsICJVc2UgbmF0aXZlIGF1eGNo IGV4cGVyaW1lbnRhbCBzdXBwb3J0ICgxID0gZW5hYmxlLCAwID0gZGlzYWJsZSwgLTEgPSBhdXRv KSIpOwogbW9kdWxlX3BhcmFtX25hbWVkKGF1eGNoLCByYWRlb25fYXV4Y2gsIGludCwgMDQ0NCk7 CiAKK01PRFVMRV9QQVJNX0RFU0MobXN0LCAiRGlzcGxheVBvcnQgTVNUIGV4cGVyaW1lbnRhbCBz dXBwb3J0ICgxID0gZW5hYmxlLCAwID0gZGlzYWJsZSkiKTsKK21vZHVsZV9wYXJhbV9uYW1lZCht c3QsIHJhZGVvbl9tc3QsIGludCwgMDQ0NCk7CisKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9p ZCBwY2lpZGxpc3RbXSA9IHsKIAlyYWRlb25fUENJX0lEUwogfTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2VuY29kZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9lbmNvZGVycy5jCmluZGV4IDZiNjcwYjAuLjc1NmFkMTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2VuY29kZXJzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb25fZW5jb2RlcnMuYwpAQCAtMjQ0LDcgKzI0NCwxNiBAQCByYWRl b25fZ2V0X2Nvbm5lY3Rvcl9mb3JfZW5jb2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIp CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29u bmVjdG9yX2xpc3QsIGhlYWQpIHsKIAkJcmFkZW9uX2Nvbm5lY3RvciA9IHRvX3JhZGVvbl9jb25u ZWN0b3IoY29ubmVjdG9yKTsKLQkJaWYgKHJhZGVvbl9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYg cmFkZW9uX2Nvbm5lY3Rvci0+ZGV2aWNlcykKKwkJaWYgKHJhZGVvbl9lbmNvZGVyLT5pc19tc3Rf ZW5jb2RlcikgeworCQkJc3RydWN0IHJhZGVvbl9lbmNvZGVyX21zdCAqbXN0X2VuYzsKKworCQkJ aWYgKCFyYWRlb25fY29ubmVjdG9yLT5pc19tc3RfY29ubmVjdG9yKQorCQkJCWNvbnRpbnVlOwor CisJCQltc3RfZW5jID0gcmFkZW9uX2VuY29kZXItPmVuY19wcml2OworCQkJaWYgKG1zdF9lbmMt PmNvbm5lY3RvciA9PSByYWRlb25fY29ubmVjdG9yLT5tc3RfcG9ydCkKKwkJCQlyZXR1cm4gY29u bmVjdG9yOworCQl9IGVsc2UgaWYgKHJhZGVvbl9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgcmFk ZW9uX2Nvbm5lY3Rvci0+ZGV2aWNlcykKIAkJCXJldHVybiBjb25uZWN0b3I7CiAJfQogCXJldHVy biBOVUxMOwpAQCAtMzkwLDYgKzM5OSw5IEBAIGJvb2wgcmFkZW9uX2RpZ19tb25pdG9yX2lzX2R1 YWxsaW5rKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAljYXNlIERSTV9NT0RFX0NPTk5F Q1RPUl9EVklEOgogCWNhc2UgRFJNX01PREVfQ09OTkVDVE9SX0hETUlBOgogCWNhc2UgRFJNX01P REVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0OgorCQlpZiAocmFkZW9uX2Nvbm5lY3Rvci0+aXNfbXN0 X2Nvbm5lY3RvcikKKwkJCXJldHVybiBmYWxzZTsKKwogCQlkaWdfY29ubmVjdG9yID0gcmFkZW9u X2Nvbm5lY3Rvci0+Y29uX3ByaXY7CiAJCWlmICgoZGlnX2Nvbm5lY3Rvci0+ZHBfc2lua190eXBl ID09IENPTk5FQ1RPUl9PQkpFQ1RfSURfRElTUExBWVBPUlQpIHx8CiAJCSAgICAoZGlnX2Nvbm5l Y3Rvci0+ZHBfc2lua190eXBlID09IENPTk5FQ1RPUl9PQkpFQ1RfSURfZURQKSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2lycV9rbXMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uX2lycV9rbXMuYwppbmRleCBlODJhZTgxLi43MTYyYzkzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9pcnFfa21zLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25faXJxX2ttcy5jCkBAIC04OSw2ICs4OSwxNyBAQCBz dGF0aWMgdm9pZCByYWRlb25faG90cGx1Z193b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQogCiBzdGF0aWMgdm9pZCByYWRlb25fZHBfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIHsKKwlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IGNvbnRhaW5lcl9vZih3 b3JrLCBzdHJ1Y3QgcmFkZW9uX2RldmljZSwKKwkJCQkJCSAgZHBfd29yayk7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHJkZXYtPmRkZXY7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqbW9k ZV9jb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOworCisJLyogdGhpcyBzaG91bGQgdGFrZSBhIG11dGV4ICovCisJaWYgKG1vZGVfY29u ZmlnLT5udW1fY29ubmVjdG9yKSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAm bW9kZV9jb25maWctPmNvbm5lY3Rvcl9saXN0LCBoZWFkKQorCQkJcmFkZW9uX2Nvbm5lY3Rvcl9o b3RwbHVnKGNvbm5lY3Rvcik7CisJfQogfQogLyoqCiAgKiByYWRlb25fZHJpdmVyX2lycV9wcmVp bnN0YWxsX2ttcyAtIGRybSBpcnEgcHJlaW5zdGFsbCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fbW9kZS5oCmluZGV4IDJjYWRlZTJhLi4wM2M5NGE2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2RlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fbW9kZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9o ZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RwX21zdF9oZWxwZXIuaD4KICNpbmNsdWRlIDxk cm0vZHJtX2ZpeGVkLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPgpAQCAtNDI5LDEyICs0MzAsMjQgQEAgc3RydWN0IHJhZGVvbl9lbmNv ZGVyX2F0b21fZGlnIHsKIAl1aW50OF90IGJhY2tsaWdodF9sZXZlbDsKIAlpbnQgcGFuZWxfbW9k ZTsKIAlzdHJ1Y3QgcmFkZW9uX2FmbXQgKmFmbXQ7CisJaW50IGFjdGl2ZV9tc3RfbGlua3M7CiB9 OwogCiBzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfYXRvbV9kYWMgewogCWVudW0gcmFkZW9uX3R2X3N0 ZCB0dl9zdGQ7CiB9OwogCitzdHJ1Y3QgcmFkZW9uX2VuY29kZXJfbXN0IHsKKwlpbnQgY3J0YzsK KwlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnByaW1hcnk7CisJc3RydWN0IHJhZGVvbl9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OworCWludCBwYm47 CisJaW50IGZlOworCWJvb2wgZmVfZnJvbV9iZTsKKwlib29sIGVuY19hY3RpdmU7Cit9OworCiBz dHJ1Y3QgcmFkZW9uX2VuY29kZXIgewogCXN0cnVjdCBkcm1fZW5jb2RlciBiYXNlOwogCXVpbnQz Ml90IGVuY29kZXJfZW51bTsKQEAgLTQ1Miw3ICs0NjUsMTMgQEAgc3RydWN0IHJhZGVvbl9lbmNv ZGVyIHsKIAlpbnQgYXVkaW9fcG9sbGluZ19hY3RpdmU7CiAJYm9vbCBpc19leHRfZW5jb2RlcjsK IAl1MTYgY2FwczsKKwogCXN0cnVjdCByYWRlb25fYXVkaW9fZnVuY3MgKmF1ZGlvOworCisJYm9v bCBjYW5fbXN0OworCXVpbnQzMl90IG9mZnNldDsKKwlib29sIGlzX21zdF9lbmNvZGVyOworCS8q IGZyb250IGVuZCBmb3IgdGhpcyBtc3QgZW5jb2RlciAqLwogfTsKIAogc3RydWN0IHJhZGVvbl9j b25uZWN0b3JfYXRvbV9kaWcgewpAQCAtNDYzLDYgKzQ4Miw3IEBAIHN0cnVjdCByYWRlb25fY29u bmVjdG9yX2F0b21fZGlnIHsKIAlpbnQgZHBfY2xvY2s7CiAJaW50IGRwX2xhbmVfY291bnQ7CiAJ Ym9vbCBlZHBfb247CisJYm9vbCBpc19tc3Q7CiB9OwogCiBzdHJ1Y3QgcmFkZW9uX2dwaW9fcmVj IHsKQEAgLTUwNiw2ICs1MjYsMTEgQEAgZW51bSByYWRlb25fY29ubmVjdG9yX2RpdGhlciB7CiAJ UkFERU9OX0ZNVF9ESVRIRVJfRU5BQkxFID0gMSwKIH07CiAKK3N0cnVjdCBzdHJlYW1fYXR0cmli cyB7CisJdWludDE2X3QgZmU7CisJdWludDE2X3Qgc2xvdHM7Cit9OworCiBzdHJ1Y3QgcmFkZW9u X2Nvbm5lY3RvciB7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgYmFzZTsKIAl1aW50MzJfdCBjb25u ZWN0b3JfaWQ7CkBAIC01MjcsNiArNTUyLDE0IEBAIHN0cnVjdCByYWRlb25fY29ubmVjdG9yIHsK IAllbnVtIHJhZGVvbl9jb25uZWN0b3JfYXVkaW8gYXVkaW87CiAJZW51bSByYWRlb25fY29ubmVj dG9yX2RpdGhlciBkaXRoZXI7CiAJaW50IHBpeGVsY2xvY2tfZm9yX21vZGVzZXQ7CisJYm9vbCBp c19tc3RfY29ubmVjdG9yOworCXN0cnVjdCByYWRlb25fY29ubmVjdG9yICptc3RfcG9ydDsKKwlz dHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X21nciBtc3RfbWdyOworCisJc3RydWN0IHJhZGVvbl9lbmNvZGVyICptc3RfZW5jb2RlcjsKKwlz dHJ1Y3Qgc3RyZWFtX2F0dHJpYnMgY3VyX3N0cmVhbV9hdHRyaWJzWzZdOworCWludCBlbmFibGVk X2F0dHJpYnM7CiB9OwogCiBzdHJ1Y3QgcmFkZW9uX2ZyYW1lYnVmZmVyIHsKQEAgLTk0OSw2ICs5 ODIsMTUgQEAgdm9pZCByYWRlb25fY3J0Y19oYW5kbGVfZmxpcChzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiwgaW50IGNydGNfaWQpOwogCiBpbnQgcmFkZW9uX2FsaWduX3BpdGNoKHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2LCBpbnQgd2lkdGgsIGludCBicHAsIGJvb2wgdGlsZWQpOwogCisv KiBtc3QgKi8KK2ludCByYWRlb25fZHBfbXN0X2luaXQoc3RydWN0IHJhZGVvbl9jb25uZWN0b3Ig KnJhZGVvbl9jb25uZWN0b3IpOworaW50IHJhZGVvbl9kcF9tc3RfcHJvYmUoc3RydWN0IHJhZGVv bl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IpOworaW50IHJhZGVvbl9kcF9tc3RfY2hlY2tf c3RhdHVzKHN0cnVjdCByYWRlb25fY29ubmVjdG9yICpyYWRlb25fY29ubmVjdG9yKTsKK2ludCBy YWRlb25fbXN0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldik7Cit2b2lk IHJhZGVvbl9kcF9tc3RfcHJlcGFyZV9wbGwoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7CisKK3ZvaWQgcmFkZW9uX3NldHVwX21zdF9jb25uZWN0 b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKIGludCByYWRlb25fYXRvbV9waWNrX2RpZ19l bmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IGZlX2lkeCk7CiB2b2lkIHJh ZGVvbl9hdG9tX3JlbGVhc2VfZGlnX2VuY29kZXIoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYs IGludCBlbmNfaWR4KTsKICNlbmRpZgotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==