From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 4/5] drm/msm/mdp5: dynamically assign hw pipes to planes Date: Sat, 5 Nov 2016 12:26:00 -0400 Message-ID: <1478363161-29293-5-git-send-email-robdclark@gmail.com> References: <1478363161-29293-1-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1478363161-29293-1-git-send-email-robdclark@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 Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org KHJlKWFzc2lnbiB0aGUgaHcgcGlwZXMgdG8gcGxhbmVzIGJhc2VkIG9uIHJlcXVpcmVkIGNhcHMs IGFuZCB0byBoYW5kbGUKc2l0dWF0aW9ucyB3aGVyZSB3ZSBjb3VsZCBub3QgbW9kaWZ5IGFuIGlu LXVzZSBwbGFuZSAoaWUuIFNNUCBibG9jawpyZWFsbG9jYXRpb24pLgoKVGhpcyBtZWFucyBhbGwg cGxhbmVzIGFkdmVydGlzZSB0aGUgc3VwZXJzZXQgb2YgZm9ybWF0cyBhbmQgcHJvcGVydGllcy4K VXNlcnNwYWNlIG11c3QgKGFzIGFsd2F5cykgdXNlIGF0b21pYyBURVNUX09OTFkgc3RlcCBmb3Ig YXRvbWljIHVwZGF0ZXMsCmFzIG5vdCBhbGwgcGxhbmVzIG1heSBiZSBhdmFpbGFibGUgZm9yIHVz ZSBvbiBldmVyeSBmcmFtZS4KClRoZSBtYXBwaW5nIG9mIGh3cGlwZSB0byBwbGFuZSBpcyBzdG9y ZWQgaW4gbWRwNV9zdGF0ZSwgc28gdGhhdCBzdGF0ZQp1cGRhdGVzIGFyZSBhdG9taWNhbGx5IGNv bW1pdHRlZCBpbiB0aGUgc2FtZSB3YXkgdGhhdCBwbGFuZS9ldGMgc3RhdGUKdXBkYXRlcyBhcmUg bWFuYWdlZC4gIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIG1kcDVfcGxhbmVfc3RhdGUga2Vl cHMKYSBwb2ludGVyIHRvIHRoZSBod3BpcGUsIGFuZCB3ZSBkb24ndCB3YW50IGdsb2JhbCBzdGF0 ZSB0byBiZWNvbWUgb3V0Cm9mIHN5bmMgd2l0aCB0aGUgcGxhbmUgc3RhdGUgaWYgYW4gYXRvbWlj IHVwZGF0ZSBmYWlscywgd2UgaGl0IGRlYWRsb2NrLwpiYWNrb2ZmIHNjZW5hcmlvLCBldGMuICBU aGUgdXNlIG9mIHN0YXRlX2xvY2sga2VlcHMgbXVsdGlwbGUgcGFyYWxsZWwKdXBkYXRlcyB3aGlj aCBib3RoIHJlLWFzc2lnbiBod3BpcGVzIHByb3Blcmx5IHNlcmlhbGl6ZWQuCgpTaWduZWQtb2Zm LWJ5OiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20v bWRwL21kcDUvbWRwNV9rbXMuYyAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9t ZHA1L21kcDVfa21zLmggICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X3BpcGUuYyAgfCAgNzAgKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X3BpcGUuaCAgfCAgMTAgKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9wbGFuZS5jIHwgMTU4ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogNiBmaWxl cyBjaGFuZ2VkLCAxNzEgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbWRwL21kcDUvbWRwNV9jcnRjLmMKaW5kZXggNjIxM2Y1MS4uOTk5NThmNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jCkBAIC00MDcsNyArNDA3LDcg QEAgc3RhdGljIGludCBtZHA1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKIAkJcHN0YXRlc1tpXS5zdGF0ZS0+c3Rh Z2UgPSBTVEFHRV9CQVNFICsgaSArIGJhc2U7CiAJCURCRygiJXM6IGFzc2lnbiBwaXBlICVzIG9u IHN0YWdlPSVkIiwgY3J0Yy0+bmFtZSwKLQkJCQlwaXBlMm5hbWUobWRwNV9wbGFuZV9waXBlKHBz dGF0ZXNbaV0ucGxhbmUpKSwKKwkJCQlwc3RhdGVzW2ldLnBsYW5lLT5uYW1lLAogCQkJCXBzdGF0 ZXNbaV0uc3RhdGUtPnN0YWdlKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRw NV9rbXMuYwppbmRleCBjYTZkZmViLi4zNTQyYWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2ttcy5jCkBAIC05Miw3ICs5Miw3IEBAIHN0cnVjdCBtZHA1X3N0YXRlICptZHA1 X2dldF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcykKIAkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CiAKIAkvKiBDb3B5IHN0YXRlOiAqLwotCS8qIFRPRE8gKi8KKwluZXdfc3RhdGUt Pmh3cGlwZSA9IG1kcDVfa21zLT5zdGF0ZS0+aHdwaXBlOwogCiAJc3RhdGUtPnN0YXRlID0gbmV3 X3N0YXRlOwogCkBAIC0zNzcsNyArMzc3LDcgQEAgc3RhdGljIGludCBtb2Rlc2V0X2luaXQoc3Ry dWN0IG1kcDVfa21zICptZHA1X2ttcykKIAkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAJCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAotCQlwbGFuZSA9IG1kcDVfcGxhbmVfaW5pdChkZXYsIG1k cDVfa21zLT5od3BpcGVzW2ldLCBwcmltYXJ5KTsKKwkJcGxhbmUgPSBtZHA1X3BsYW5lX2luaXQo ZGV2LCBwcmltYXJ5KTsKIAkJaWYgKElTX0VSUihwbGFuZSkpIHsKIAkJCXJldCA9IFBUUl9FUlIo cGxhbmUpOwogCQkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBjb25zdHJ1Y3QgcGxhbmUg JWQgKCVkKVxuIiwgaSwgcmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRw L21kcDUvbWRwNV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMu aAppbmRleCA1MjkxNGVjLi40NDc1MDkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21kcC9tZHA1L21kcDVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X2ttcy5oCkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBtZHA1X2ttcyB7CiAgKiBGb3IgYXRv bWljIHVwZGF0ZXMgd2hpY2ggcmVxdWlyZSBtb2RpZnlpbmcgZ2xvYmFsIHN0YXRlLAogICovCiBz dHJ1Y3QgbWRwNV9zdGF0ZSB7Ci0JdWludDMyX3QgZHVtbXk7CisJc3RydWN0IG1kcDVfaHdfcGlw ZV9zdGF0ZSBod3BpcGU7CiB9OwogCiBzdHJ1Y3QgbWRwNV9zdGF0ZSAqX19tdXN0X2NoZWNrCkBA IC05NCw2ICs5NCw4IEBAIG1kcDVfZ2V0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz KTsKIHN0cnVjdCBtZHA1X3BsYW5lX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJh c2U7CiAKKwlzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGU7CisKIAkvKiBhbGlnbmVkIHdpdGgg cHJvcGVydHkgKi8KIAl1aW50OF90IHByZW11bHRpcGxpZWQ7CiAJdWludDhfdCB6cG9zOwpAQCAt MjMyLDggKzIzNCw3IEBAIHVpbnQzMl90IG1kcDVfcGxhbmVfZ2V0X2ZsdXNoKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lKTsKIHZvaWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9jb21taXQoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOwogZW51bSBt ZHA1X3BpcGUgbWRwNV9wbGFuZV9waXBlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKLXN0cnVj dCBkcm1fcGxhbmUgKm1kcDVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQlz dHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUsIGJvb2wgcHJpbWFyeSk7CitzdHJ1Y3QgZHJtX3Bs YW5lICptZHA1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBwcmltYXJ5 KTsKIAogdWludDMyX3QgbWRwNV9jcnRjX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuYwppbmRleCA3ZjNlOGU1MC4u MTE1ZGU3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3Bp cGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5jCkBAIC0x Nyw2ICsxNyw3NiBAQAogCiAjaW5jbHVkZSAibWRwNV9rbXMuaCIKIAorc3RydWN0IG1kcDVfaHdf cGlwZSAqbWRwNV9waXBlX2Fzc2lnbihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcywKKwkJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHVpbnQzMl90IGNhcHMpCit7CisJc3RydWN0IG1zbV9kcm1f cHJpdmF0ZSAqcHJpdiA9IHMtPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IG1kcDVfa21zICpt ZHA1X2ttcyA9IHRvX21kcDVfa21zKHRvX21kcF9rbXMocHJpdi0+a21zKSk7CisJc3RydWN0IG1k cDVfc3RhdGUgKnN0YXRlID0gbWRwNV9nZXRfc3RhdGUocyk7CisJc3RydWN0IG1kcDVfaHdfcGlw ZV9zdGF0ZSAqb2xkX3N0YXRlLCAqbmV3X3N0YXRlOworCXN0cnVjdCBtZHA1X2h3X3BpcGUgKmh3 cGlwZSA9IE5VTEw7CisJaW50IGk7CisKKwlpZiAoSVNfRVJSKHN0YXRlKSkKKwkJcmV0dXJuIEVS Ul9DQVNUKHN0YXRlKTsKKworCS8qIGdyYWIgb2xkX3N0YXRlIGFmdGVyIG1kcDVfZ2V0X3N0YXRl KCksIHNpbmNlIG5vdyB3ZSBob2xkIGxvY2s6ICovCisJb2xkX3N0YXRlID0gJm1kcDVfa21zLT5z dGF0ZS0+aHdwaXBlOworCW5ld19zdGF0ZSA9ICZzdGF0ZS0+aHdwaXBlOworCisJZm9yIChpID0g MDsgaSA8IG1kcDVfa21zLT5udW1faHdwaXBlczsgaSsrKSB7CisJCXN0cnVjdCBtZHA1X2h3X3Bp cGUgKmN1ciA9IG1kcDVfa21zLT5od3BpcGVzW2ldOworCisJCS8qIHNraXAgaWYgYWxyZWFkeSBp bi11c2UuLiBjaGVjayBib3RoIG5ldyBhbmQgb2xkIHN0YXRlLAorCQkgKiBzaW5jZSB3ZSBjYW5u b3QgaW1tZWRpYXRlbHkgcmUtdXNlIGEgcGlwZSB0aGF0IGlzCisJCSAqIHJlbGVhc2VkIGluIHRo ZSBjdXJyZW50IHVwZGF0ZSBpbiBzb21lIGNhc2VzOgorCQkgKiAgKDEpIG1kcDUgaGFzIFNNUCAo bm9uLWRvdWJsZS1idWZmZXJlZCkKKwkJICogICgyKSBodyBwaXBlIHByZXZpb3VzbHkgYXNzaWdu ZWQgdG8gZGlmZmVyZW50IENSVEMKKwkJICogICAgICAodmJsYW5rcyBtaWdodCBub3QgYmUgYWxp Z25lZCkKKwkJICovCisJCWlmIChuZXdfc3RhdGUtPmh3cGlwZV90b19wbGFuZVtjdXItPmlkeF0g fHwKKwkJCQlvbGRfc3RhdGUtPmh3cGlwZV90b19wbGFuZVtjdXItPmlkeF0pCisJCQljb250aW51 ZTsKKworCQkvKiBza2lwIGlmIGRvZXNuJ3Qgc3VwcG9ydCBzb21lIHJlcXVpcmVkIGNhcHM6ICov CisJCWlmIChjYXBzICYgfmN1ci0+Y2FwcykKKwkJCWNvbnRpbnVlOworCisJCS8qIHBvc3NpYmxl IGNhbmRpZGF0ZSwgdGFrZSB0aGUgb25lIHdpdGggdGhlCisJCSAqIGZld2VzdCB1bm5lZWRlZCBj YXBzIGJpdHMgc2V0OgorCQkgKi8KKwkJaWYgKCFod3BpcGUgfHwgKGh3ZWlnaHRfbG9uZyhjdXIt PmNhcHMgJiB+Y2FwcykgPAorCQkJCWh3ZWlnaHRfbG9uZyhod3BpcGUtPmNhcHMgJiB+Y2Fwcykp KQorCQkJaHdwaXBlID0gY3VyOworCX0KKworCWlmICghaHdwaXBlKQorCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKKworCURCRygiJXM6IGFzc2lnbiB0byBwbGFuZSAlcyBmb3IgY2FwcyAleCIs CisJCQlod3BpcGUtPm5hbWUsIHBsYW5lLT5uYW1lLCBjYXBzKTsKKwluZXdfc3RhdGUtPmh3cGlw ZV90b19wbGFuZVtod3BpcGUtPmlkeF0gPSBwbGFuZTsKKworCXJldHVybiBod3BpcGU7Cit9CisK K3ZvaWQgbWRwNV9waXBlX3JlbGVhc2Uoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVj dCBtZHA1X2h3X3BpcGUgKmh3cGlwZSkKK3sKKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGUgPSBt ZHA1X2dldF9zdGF0ZShzKTsKKwlzdHJ1Y3QgbWRwNV9od19waXBlX3N0YXRlICpuZXdfc3RhdGUg PSAmc3RhdGUtPmh3cGlwZTsKKworCWlmICghaHdwaXBlKQorCQlyZXR1cm47CisKKwlpZiAoV0FS Tl9PTighbmV3X3N0YXRlLT5od3BpcGVfdG9fcGxhbmVbaHdwaXBlLT5pZHhdKSkKKwkJcmV0dXJu OworCisJREJHKCIlczogcmVsZWFzZSBmcm9tIHBsYW5lICVzIiwgaHdwaXBlLT5uYW1lLAorCQlu ZXdfc3RhdGUtPmh3cGlwZV90b19wbGFuZVtod3BpcGUtPmlkeF0tPm5hbWUpOworCisJbmV3X3N0 YXRlLT5od3BpcGVfdG9fcGxhbmVbaHdwaXBlLT5pZHhdID0gTlVMTDsKK30KKwogdm9pZCBtZHA1 X3BpcGVfZGVzdHJveShzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpCiB7CiAJa2ZyZWUoaHdw aXBlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9waXBl LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5oCmluZGV4IGRjZmEw ZTAuLmJhYzU5MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRw NV9waXBlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuaApA QCAtMzIsNiArMzIsMTYgQEAgc3RydWN0IG1kcDVfaHdfcGlwZSB7CiAJdWludDMyX3QgZmx1c2hf bWFzazsgICAgICAvKiB1c2VkIHRvIGNvbW1pdCBwaXBlIHJlZ2lzdGVycyAqLwogfTsKIAorLyog Z2xvYmFsIGF0b21pYyBzdGF0ZSBvZiBhc3NpZ25tZW50IGJldHdlZW4gcGlwZXMgYW5kIHBsYW5l czogKi8KK3N0cnVjdCBtZHA1X2h3X3BpcGVfc3RhdGUgeworCXN0cnVjdCBkcm1fcGxhbmUgKmh3 cGlwZV90b19wbGFuZVsxNl07Cit9OworCitzdHJ1Y3QgbWRwNV9od19waXBlICpfX211c3RfY2hl Y2sKK21kcDVfcGlwZV9hc3NpZ24oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAorCQl1aW50MzJfdCBjYXBzKTsKK3ZvaWQgbWRwNV9waXBlX3JlbGVh c2Uoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBtZHA1X2h3X3BpcGUgKmh3cGlw ZSk7CisKIHN0cnVjdCBtZHA1X2h3X3BpcGUgKm1kcDVfcGlwZV9pbml0KGVudW0gbWRwNV9waXBl IHBpcGUsCiAJCXVpbnQzMl90IHJlZ19vZmZzZXQsIHVpbnQzMl90IGNhcHMpOwogdm9pZCBtZHA1 X3BpcGVfZGVzdHJveShzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwppbmRleCBlNGVjZmViLi42NGU5N2VmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwpAQCAtMjIsOCArMjIsNiBA QAogc3RydWN0IG1kcDVfcGxhbmUgewogCXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKIAotCXN0cnVj dCBtZHA1X2h3X3BpcGUgKmh3cGlwZTsKLQogCXVpbnQzMl90IG5mb3JtYXRzOwogCXVpbnQzMl90 IGZvcm1hdHNbMzJdOwogfTsKQEAgLTYzLDEyICs2MSw2IEBAIHN0YXRpYyB2b2lkIG1kcDVfcGxh bmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHN0YXRpYyB2b2lkIG1kcDVfcGxh bmVfaW5zdGFsbF9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHsKLQlzdHJ1Y3QgbWRwNV9wbGFuZSAqbWRwNV9wbGFu ZSA9IHRvX21kcDVfcGxhbmUocGxhbmUpOwotCi0JaWYgKCEobWRwNV9wbGFuZS0+aHdwaXBlLT5j YXBzICYgTURQX1BJUEVfQ0FQX0hGTElQKSAmJgotCQkhKG1kcDVfcGxhbmUtPmh3cGlwZS0+Y2Fw cyAmIE1EUF9QSVBFX0NBUF9WRkxJUCkpCi0JCXJldHVybjsKLQogCWRybV9wbGFuZV9jcmVhdGVf cm90YXRpb25fcHJvcGVydHkocGxhbmUsCiAJCQkJCSAgIERSTV9ST1RBVEVfMCwKIAkJCQkJICAg RFJNX1JPVEFURV8wIHwKQEAgLTE4NCw2ICsxNzYsOCBAQCBtZHA1X3BsYW5lX2F0b21pY19wcmlu dF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCiB7CiAJc3RydWN0IG1kcDVfcGxhbmVfc3Rh dGUgKnBzdGF0ZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUoc3RhdGUpOwogCisJZHJtX3ByaW50Zihw LCAiXHRod3BpcGU9JXNcbiIsIHBzdGF0ZS0+aHdwaXBlID8KKwkJCXBzdGF0ZS0+aHdwaXBlLT5u YW1lIDogIihudWxsKSIpOwogCWRybV9wcmludGYocCwgIlx0cHJlbXVsdGlwbGllZD0ldVxuIiwg cHN0YXRlLT5wcmVtdWx0aXBsaWVkKTsKIAlkcm1fcHJpbnRmKHAsICJcdHpwb3M9JXVcbiIsIHBz dGF0ZS0+enBvcyk7CiAJZHJtX3ByaW50ZihwLCAiXHRhbHBoYT0ldVxuIiwgcHN0YXRlLT5hbHBo YSk7CkBAIC0yMzcsMTAgKzIzMSwxMiBAQCBtZHA1X3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHN0YXRpYyB2b2lkIG1kcDVfcGxhbmVfZGVzdHJveV9zdGF0 ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpCiB7CisJc3RydWN0IG1kcDVfcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IHRvX21kcDVfcGxhbmVf c3RhdGUoc3RhdGUpOworCiAJaWYgKHN0YXRlLT5mYikKIAkJZHJtX2ZyYW1lYnVmZmVyX3VucmVm ZXJlbmNlKHN0YXRlLT5mYik7CiAKLQlrZnJlZSh0b19tZHA1X3BsYW5lX3N0YXRlKHN0YXRlKSk7 CisJa2ZyZWUocHN0YXRlKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVu Y3MgbWRwNV9wbGFuZV9mdW5jcyA9IHsKQEAgLTI4NSw3MCArMjgxLDgxIEBAIHN0YXRpYyB2b2lk IG1kcDVfcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHN0YXRpYyBp bnQgbWRwNV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBtZHA1X3BsYW5lICptZHA1 X3BsYW5lID0gdG9fbWRwNV9wbGFuZShwbGFuZSk7CisJc3RydWN0IG1kcDVfcGxhbmVfc3RhdGUg Km1kcDVfc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0YXRlKHN0YXRlKTsKIAlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpvbGRfc3RhdGUgPSBwbGFuZS0+c3RhdGU7Ci0JY29uc3Qgc3RydWN0IG1kcF9m b3JtYXQgKmZvcm1hdDsKLQlib29sIHZmbGlwLCBoZmxpcDsKKwlib29sIG5ld19od3BpcGUgPSBm YWxzZTsKKwl1aW50MzJfdCBjYXBzID0gMDsKIAogCURCRygiJXM6IGNoZWNrICglZCAtPiAlZCki LCBwbGFuZS0+bmFtZSwKIAkJCXBsYW5lX2VuYWJsZWQob2xkX3N0YXRlKSwgcGxhbmVfZW5hYmxl ZChzdGF0ZSkpOwogCisJLyogV2UgZG9uJ3QgYWxsb3cgZmFzdGVyLXRoYW4tdmJsYW5rIHVwZGF0 ZXMuLiBpZiB3ZSBkaWQgYWRkIHRoaXMKKwkgKiBzb21lIGRheSwgd2Ugd291bGQgbmVlZCB0byBk aXNhbGxvdyBpbiBjYXNlcyB3aGVyZSBod3BpcGUKKwkgKiBjaGFuZ2VzCisJICovCisJaWYgKFdB Uk5fT04odG9fbWRwNV9wbGFuZV9zdGF0ZShvbGRfc3RhdGUpLT5wZW5kaW5nKSkKKwkJcmV0dXJu IC1FQlVTWTsKKwogCWlmIChwbGFuZV9lbmFibGVkKHN0YXRlKSkgewogCQl1bnNpZ25lZCBpbnQg cm90YXRpb247CisJCWNvbnN0IHN0cnVjdCBtZHBfZm9ybWF0ICpmb3JtYXQ7CiAKIAkJZm9ybWF0 ID0gdG9fbWRwX2Zvcm1hdChtc21fZnJhbWVidWZmZXJfZm9ybWF0KHN0YXRlLT5mYikpOwotCQlp ZiAoTURQX0ZPUk1BVF9JU19ZVVYoZm9ybWF0KSAmJgotCQkJIXBpcGVfc3VwcG9ydHNfeXV2KG1k cDVfcGxhbmUtPmh3cGlwZS0+Y2FwcykpIHsKLQkJCURCRygiUGlwZSBkb2Vzbid0IHN1cHBvcnQg WVVWXG4iKTsKLQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoIShtZHA1X3BsYW5l LT5od3BpcGUtPmNhcHMgJiBNRFBfUElQRV9DQVBfU0NBTEUpICYmCi0JCQkoKChzdGF0ZS0+c3Jj X3cgPj4gMTYpICE9IHN0YXRlLT5jcnRjX3cpIHx8Ci0JCQkoKHN0YXRlLT5zcmNfaCA+PiAxNikg IT0gc3RhdGUtPmNydGNfaCkpKSB7Ci0JCQlEQkcoIlBpcGUgZG9lc24ndCBzdXBwb3J0IHNjYWxp bmcgKCVkeCVkIC0+ICVkeCVkKVxuIiwKLQkJCQlzdGF0ZS0+c3JjX3cgPj4gMTYsIHN0YXRlLT5z cmNfaCA+PiAxNiwKLQkJCQlzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0Y19oKTsKKwkJaWYgKE1E UF9GT1JNQVRfSVNfWVVWKGZvcm1hdCkpCisJCQljYXBzIHw9IE1EUF9QSVBFX0NBUF9TQ0FMRSB8 IE1EUF9QSVBFX0NBUF9DU0M7CiAKLQkJCXJldHVybiAtRUlOVkFMOwotCQl9CisJCWlmICgoKHN0 YXRlLT5zcmNfdyA+PiAxNikgIT0gc3RhdGUtPmNydGNfdykgfHwKKwkJCQkoKHN0YXRlLT5zcmNf aCA+PiAxNikgIT0gc3RhdGUtPmNydGNfaCkpCisJCQljYXBzIHw9IE1EUF9QSVBFX0NBUF9TQ0FM RTsKIAogCQlyb3RhdGlvbiA9IGRybV9yb3RhdGlvbl9zaW1wbGlmeShzdGF0ZS0+cm90YXRpb24s CiAJCQkJCQkgRFJNX1JPVEFURV8wIHwKIAkJCQkJCSBEUk1fUkVGTEVDVF9YIHwKIAkJCQkJCSBE Uk1fUkVGTEVDVF9ZKTsKIAotCQloZmxpcCA9ICEhKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWCk7 Ci0JCXZmbGlwID0gISEocm90YXRpb24gJiBEUk1fUkVGTEVDVF9ZKTsKLQotCQlpZiAoKHZmbGlw ICYmICEobWRwNV9wbGFuZS0+aHdwaXBlLT5jYXBzICYgTURQX1BJUEVfQ0FQX1ZGTElQKSkgfHwK LQkJCShoZmxpcCAmJiAhKG1kcDVfcGxhbmUtPmh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9I RkxJUCkpKSB7Ci0JCQlEQkcoIlBpcGUgZG9lc24ndCBzdXBwb3J0IGZsaXBcbiIpOwotCi0JCQly ZXR1cm4gLUVJTlZBTDsKKwkJaWYgKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWCkKKwkJCWNhcHMg fD0gTURQX1BJUEVfQ0FQX0hGTElQOworCisJCWlmIChyb3RhdGlvbiAmIERSTV9SRUZMRUNUX1kp CisJCQljYXBzIHw9IE1EUF9QSVBFX0NBUF9WRkxJUDsKKworCQkvKiAocmUpYWxsb2NhdGUgaHcg cGlwZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSBvciBjYXBzLW1pc21hdGNoOiAqLworCQlpZiAoIW1k cDVfc3RhdGUtPmh3cGlwZSB8fCAoY2FwcyAmIH5tZHA1X3N0YXRlLT5od3BpcGUtPmNhcHMpKQor CQkJbmV3X2h3cGlwZSA9IHRydWU7CisKKwkJaWYgKHBsYW5lX2VuYWJsZWQob2xkX3N0YXRlKSkg eworCQkJYm9vbCBmdWxsX21vZGVzZXQgPSBmYWxzZTsKKwkJCWlmIChzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCAhPSBvbGRfc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpIHsKKwkJCQlEQkcoIiVzOiBw aXhlbF9mb3JtYXQgY2hhbmdlISIsIHBsYW5lLT5uYW1lKTsKKwkJCQlmdWxsX21vZGVzZXQgPSB0 cnVlOworCQkJfQorCQkJaWYgKHN0YXRlLT5zcmNfdyAhPSBvbGRfc3RhdGUtPnNyY193KSB7CisJ CQkJREJHKCIlczogc3JjX3cgY2hhbmdlISIsIHBsYW5lLT5uYW1lKTsKKwkJCQlmdWxsX21vZGVz ZXQgPSB0cnVlOworCQkJfQorCQkJaWYgKGZ1bGxfbW9kZXNldCkgeworCQkJCS8qIGNhbm5vdCBj aGFuZ2UgU01QIGJsb2NrIGFsbG9jYXRpb24gZHVyaW5nCisJCQkJICogc2Nhbm91dDoKKwkJCQkg Ki8KKwkJCQlpZiAoZ2V0X2ttcyhwbGFuZSktPnNtcCkKKwkJCQkJbmV3X2h3cGlwZSA9IHRydWU7 CisJCQl9CiAJCX0KLQl9CiAKLQlpZiAocGxhbmVfZW5hYmxlZChzdGF0ZSkgJiYgcGxhbmVfZW5h YmxlZChvbGRfc3RhdGUpKSB7Ci0JCS8qIHdlIGNhbm5vdCBjaGFuZ2UgU01QIGJsb2NrIGNvbmZp Z3VyYXRpb24gZHVyaW5nIHNjYW5vdXQ6ICovCi0JCWJvb2wgZnVsbF9tb2Rlc2V0ID0gZmFsc2U7 Ci0JCWlmIChzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCAhPSBvbGRfc3RhdGUtPmZiLT5waXhlbF9m b3JtYXQpIHsKLQkJCURCRygiJXM6IHBpeGVsX2Zvcm1hdCBjaGFuZ2UhIiwgcGxhbmUtPm5hbWUp OwotCQkJZnVsbF9tb2Rlc2V0ID0gdHJ1ZTsKLQkJfQotCQlpZiAoc3RhdGUtPnNyY193ICE9IG9s ZF9zdGF0ZS0+c3JjX3cpIHsKLQkJCURCRygiJXM6IHNyY193IGNoYW5nZSEiLCBwbGFuZS0+bmFt ZSk7Ci0JCQlmdWxsX21vZGVzZXQgPSB0cnVlOwotCQl9Ci0JCWlmICh0b19tZHA1X3BsYW5lX3N0 YXRlKG9sZF9zdGF0ZSktPnBlbmRpbmcpIHsKLQkJCURCRygiJXM6IHN0aWxsIHBlbmRpbmchIiwg cGxhbmUtPm5hbWUpOwotCQkJZnVsbF9tb2Rlc2V0ID0gdHJ1ZTsKLQkJfQotCQlpZiAoZnVsbF9t b2Rlc2V0KSB7Ci0JCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQotCQkJCQlk cm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLT5zdGF0ZSwgc3RhdGUtPmNydGMpOwotCQkJ Y3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKKwkJLyogKHJlKWFzc2lnbiBod3BpcGUg aWYgbmVlZGVkLCBvdGhlcndpc2Uga2VlcCBvbGQgb25lOiAqLworCQlpZiAobmV3X2h3cGlwZSkg eworCQkJLyogVE9ETyBtYXliZSB3ZSB3YW50IHRvIHJlLWFzc2lnbiBod3BpcGUgc29tZXRpbWVz CisJCQkgKiBpbiBjYXNlcyB3aGVuIHdlIG5vLWxvbmdlciBuZWVkIHNvbWUgY2FwcyB0byBtYWtl CisJCQkgKiBpdCBhdmFpbGFibGUgZm9yIG90aGVyIHBsYW5lcz8KKwkJCSAqLworCQkJc3RydWN0 IG1kcDVfaHdfcGlwZSAqaHdwaXBlID0gbWRwNV9zdGF0ZS0+aHdwaXBlOworCQkJbWRwNV9zdGF0 ZS0+aHdwaXBlID0KKwkJCQltZHA1X3BpcGVfYXNzaWduKHN0YXRlLT5zdGF0ZSwgcGxhbmUsIGNh cHMpOworCQkJaWYgKElTX0VSUihtZHA1X3N0YXRlLT5od3BpcGUpKSB7CisJCQkJREJHKCIlczog ZmFpbGVkIHRvIGFzc2lnbiBod3BpcGUhIiwgcGxhbmUtPm5hbWUpOworCQkJCXJldHVybiBQVFJf RVJSKG1kcDVfc3RhdGUtPmh3cGlwZSk7CisJCQl9CisJCQltZHA1X3BpcGVfcmVsZWFzZShzdGF0 ZS0+c3RhdGUsIGh3cGlwZSk7CiAJCX0KIAl9CiAKQEAgLTM4OSw5ICszOTYsOSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgbWRwNV9wbGFuZV9oZWxwZXJfZnVu Y3MgPSB7CiBzdGF0aWMgdm9pZCBzZXRfc2Nhbm91dF9sb2NrZWQoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQogewotCXN0cnVjdCBtZHA1X3Bs YW5lICptZHA1X3BsYW5lID0gdG9fbWRwNV9wbGFuZShwbGFuZSk7CiAJc3RydWN0IG1kcDVfa21z ICptZHA1X2ttcyA9IGdldF9rbXMocGxhbmUpOwotCWVudW0gbWRwNV9waXBlIHBpcGUgPSBtZHA1 X3BsYW5lLT5od3BpcGUtPnBpcGU7CisJc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBlID0gdG9f bWRwNV9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT5od3BpcGU7CisJZW51bSBtZHA1X3BpcGUg cGlwZSA9IGh3cGlwZS0+cGlwZTsKIAogCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJ UEVfU1JDX1NUUklERV9BKHBpcGUpLAogCQkJTURQNV9QSVBFX1NSQ19TVFJJREVfQV9QMChmYi0+ cGl0Y2hlc1swXSkgfApAQCAtNjcxLDkgKzY3OCw4IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9t b2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJdWludDMyX3Qgc3JjX3gsIHVpbnQz Ml90IHNyY195LAogCQl1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCiB7Ci0Jc3RydWN0 IG1kcDVfcGxhbmUgKm1kcDVfcGxhbmUgPSB0b19tZHA1X3BsYW5lKHBsYW5lKTsKIAlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSBwbGFuZS0+c3RhdGU7Ci0Jc3RydWN0IG1kcDVfaHdf cGlwZSAqaHdwaXBlID0gbWRwNV9wbGFuZS0+aHdwaXBlOworCXN0cnVjdCBtZHA1X2h3X3BpcGUg Kmh3cGlwZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUocHN0YXRlKS0+aHdwaXBlOwogCXN0cnVjdCBt ZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHBsYW5lKTsKIAllbnVtIG1kcDVfcGlwZSBwaXBl ID0gaHdwaXBlLT5waXBlOwogCWNvbnN0IHN0cnVjdCBtZHBfZm9ybWF0ICpmb3JtYXQ7CkBAIC04 NDAsMTUgKzg0NiwyMiBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAKIGVudW0gbWRwNV9waXBlIG1kcDVfcGxhbmVfcGlwZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKIHsKLQlzdHJ1Y3QgbWRwNV9wbGFuZSAqbWRwNV9wbGFuZSA9IHRv X21kcDVfcGxhbmUocGxhbmUpOwotCXJldHVybiBtZHA1X3BsYW5lLT5od3BpcGUtPnBpcGU7CisJ c3RydWN0IG1kcDVfcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUocGxh bmUtPnN0YXRlKTsKKworCWlmIChXQVJOX09OKCFwc3RhdGUtPmh3cGlwZSkpCisJCXJldHVybiAw OworCisJcmV0dXJuIHBzdGF0ZS0+aHdwaXBlLT5waXBlOwogfQogCiB1aW50MzJfdCBtZHA1X3Bs YW5lX2dldF9mbHVzaChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHsKLQlzdHJ1Y3QgbWRwNV9w bGFuZSAqbWRwNV9wbGFuZSA9IHRvX21kcDVfcGxhbmUocGxhbmUpOworCXN0cnVjdCBtZHA1X3Bs YW5lX3N0YXRlICpwc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CisK KwlpZiAoV0FSTl9PTighcHN0YXRlLT5od3BpcGUpKQorCQlyZXR1cm4gMDsKIAotCXJldHVybiBt ZHA1X3BsYW5lLT5od3BpcGUtPmZsdXNoX21hc2s7CisJcmV0dXJuIHBzdGF0ZS0+aHdwaXBlLT5m bHVzaF9tYXNrOwogfQogCiAvKiBjYWxsZWQgYWZ0ZXIgdnN5bmMgaW4gdGhyZWFkIGNvbnRleHQg Ki8KQEAgLTg1NiwxMCArODY5LDExIEBAIHZvaWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9jb21taXQo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUp CiB7CiAJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMocGxhbmUpOwotCXN0cnVj dCBtZHA1X3BsYW5lICptZHA1X3BsYW5lID0gdG9fbWRwNV9wbGFuZShwbGFuZSk7Ci0JZW51bSBt ZHA1X3BpcGUgcGlwZSA9IG1kcDVfcGxhbmUtPmh3cGlwZS0+cGlwZTsKKwlzdHJ1Y3QgbWRwNV9w bGFuZV9zdGF0ZSAqcHN0YXRlID0gdG9fbWRwNV9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwor CisJaWYgKG1kcDVfa21zLT5zbXAgJiYgcHN0YXRlLT5od3BpcGUpIHsKKwkJZW51bSBtZHA1X3Bp cGUgcGlwZSA9IHBzdGF0ZS0+aHdwaXBlLT5waXBlOwogCi0JaWYgKG1kcDVfa21zLT5zbXApIHsK IAkJaWYgKHBsYW5lX2VuYWJsZWQocGxhbmUtPnN0YXRlKSkgewogCQkJREJHKCIlczogY29tcGxl dGUgZmxpcCIsIHBsYW5lLT5uYW1lKTsKIAkJCW1kcDVfc21wX2NvbW1pdChtZHA1X2ttcy0+c21w LCBwaXBlKTsKQEAgLTg2OSwxMiArODgzLDExIEBAIHZvaWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9j b21taXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9CiAKLQl0b19tZHA1X3BsYW5l X3N0YXRlKHBsYW5lLT5zdGF0ZSktPnBlbmRpbmcgPSBmYWxzZTsKKwlwc3RhdGUtPnBlbmRpbmcg PSBmYWxzZTsKIH0KIAogLyogaW5pdGlhbGl6ZSBwbGFuZSAqLwotc3RydWN0IGRybV9wbGFuZSAq bWRwNV9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBtZHA1X2h3 X3BpcGUgKmh3cGlwZSwgYm9vbCBwcmltYXJ5KQorc3RydWN0IGRybV9wbGFuZSAqbWRwNV9wbGFu ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcHJpbWFyeSkKIHsKIAlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSA9IE5VTEw7CiAJc3RydWN0IG1kcDVfcGxhbmUgKm1kcDVfcGxhbmU7 CkBAIC04ODksMTYgKzkwMiwxMyBAQCBzdHJ1Y3QgZHJtX3BsYW5lICptZHA1X3BsYW5lX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCXBsYW5lID0gJm1kcDVfcGxhbmUtPmJhc2U7CiAK LQltZHA1X3BsYW5lLT5od3BpcGUgPSBod3BpcGU7Ci0KIAltZHA1X3BsYW5lLT5uZm9ybWF0cyA9 IG1kcF9nZXRfZm9ybWF0cyhtZHA1X3BsYW5lLT5mb3JtYXRzLAotCQlBUlJBWV9TSVpFKG1kcDVf cGxhbmUtPmZvcm1hdHMpLAotCQkhcGlwZV9zdXBwb3J0c195dXYoaHdwaXBlLT5jYXBzKSk7CisJ CUFSUkFZX1NJWkUobWRwNV9wbGFuZS0+Zm9ybWF0cyksIGZhbHNlKTsKIAogCXR5cGUgPSBwcmlt YXJ5ID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6IERSTV9QTEFORV9UWVBFX09WRVJMQVk7CiAJ cmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcGxhbmUsIDB4ZmYsICZtZHA1X3Bs YW5lX2Z1bmNzLAogCQkJCSBtZHA1X3BsYW5lLT5mb3JtYXRzLCBtZHA1X3BsYW5lLT5uZm9ybWF0 cywKLQkJCQkgdHlwZSwgIiVzIiwgaHdwaXBlLT5uYW1lKTsKKwkJCQkgdHlwZSwgTlVMTCk7CiAJ aWYgKHJldCkKIAkJZ290byBmYWlsOwogCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==