From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 1/3] drm: Add support for panic message output Date: Mon, 11 Mar 2019 18:42:16 +0100 Message-ID: <20190311174218.51899-2-noralf@tronnes.org> References: <20190311174218.51899-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190311174218.51899-1-noralf@tronnes.org> 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: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, darwish.07@gmail.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIG91dHB1dHRpbmcga2VybmVsIG1lc3NhZ2VzIG9uIHBhbmlj KCkuCkEga2VybmVsIG1lc3NhZ2UgZHVtcGVyIGlzIHVzZWQgdG8gZHVtcCB0aGUgbG9nLiBUaGUg ZHVtcGVyIGl0ZXJhdGVzCm92ZXIgZWFjaCBEUk0gZGV2aWNlIGFuZCBpdCdzIGNydGMncyB0byBm aW5kIHN1aXRhYmxlIGZyYW1lYnVmZmVycy4KCkFsbCB0aGUgb3RoZXIgZHVtcGVycyBhcmUgcnVu IGJlZm9yZSB0aGlzIG9uZSBleGNlcHQgbXRkb29wcy4KT25seSBhdG9taWMgZHJpdmVycyBhcmUg c3VwcG9ydGVkLgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5l cy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgIHwgICAzICsKIGRy aXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZyYW1lYnVmZmVyLmMgfCAxMTcgKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9p bnRlcm5hbC5oICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1fcGFuaWMuYyAgICAgICB8 IDM2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9mcmFt ZWJ1ZmZlci5oICAgICB8ICA0MSArKysrCiA2IGZpbGVzIGNoYW5nZWQsIDUzMSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9wYW5pYy5jCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp ZwppbmRleCBiZDk0M2E3MTc1NmMuLjc0YzM3NTQyZjg1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTE0LDYgKzE0 LDkgQEAgbWVudWNvbmZpZyBEUk0KIAlzZWxlY3QgSTJDX0FMR09CSVQKIAlzZWxlY3QgRE1BX1NI QVJFRF9CVUZGRVIKIAlzZWxlY3QgU1lOQ19GSUxFCisJc2VsZWN0IEZPTlRfU1VQUE9SVAorCXNl bGVjdCBGT05UXzh4OAorCXNlbGVjdCBGT05UXzh4MTYKIAloZWxwCiAJICBLZXJuZWwtbGV2ZWwg c3VwcG9ydCBmb3IgdGhlIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkKIAkg IGludHJvZHVjZWQgaW4gWEZyZWU4NiA0LjAuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3UgbmVlZCB0 byBzZWxlY3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jCmluZGV4IDUwZDg0OWQxYmM2ZS4uYjBiODcwYjVkZDU1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZHJ2LmMKQEAgLTExNDcsNiArMTE0Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIGRybV9zdHViX2ZvcHMgPSB7CiAKIHN0YXRpYyB2b2lkIGRybV9jb3JlX2V4aXQo dm9pZCkKIHsKKwlkcm1fcGFuaWNfZXhpdChkcm1fZGVidWdmc19yb290KTsKIAl1bnJlZ2lzdGVy X2NocmRldihEUk1fTUFKT1IsICJkcm0iKTsKIAlkZWJ1Z2ZzX3JlbW92ZShkcm1fZGVidWdmc19y b290KTsKIAlkcm1fc3lzZnNfZGVzdHJveSgpOwpAQCAtMTE3OCw2ICsxMTc5LDggQEAgc3RhdGlj IGludCBfX2luaXQgZHJtX2NvcmVfaW5pdCh2b2lkKQogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVy cm9yOwogCisJZHJtX3BhbmljX2luaXQoZHJtX2RlYnVnZnNfcm9vdCk7CisKIAlkcm1fY29yZV9p bml0X2NvbXBsZXRlID0gdHJ1ZTsKIAogCURSTV9ERUJVRygiSW5pdGlhbGl6ZWRcbiIpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mcmFtZWJ1ZmZlci5jCmluZGV4IGQ4ZDc1ZTI1ZjZmYi4uZGEyMjg1YzVhZTkwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCkBAIC0xMDg3LDMgKzEwODcsMTIwIEBAIGludCBk cm1fZnJhbWVidWZmZXJfZGVidWdmc19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogCQkJ CW1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIG1pbm9yKTsKIH0KICNlbmRpZgorCisvKioKKyAqIGRybV9m cmFtZWJ1ZmZlcl9wYW5pY19kcmF3X3h5IC0gZHJhdyBwaXhlbCBvbiBmYiBkdXJpbmcgcGFuaWMo KQorICogQGZiOiBEUk0gZnJhbWVidWZmZXIKKyAqIEB2bWFwOiBMaW5lYXIgdmlydHVhbCBtYXBw aW5nCisgKiBAeDogWCBjb29yZGluYXRlCisgKiBAeTogWSBjb29yZGluYXRlCisgKiBAZm9yZWdy b3VuZDogRm9yZWdyb3VuZCBwaXhlbAorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQg dG8gZHJhdyBhIHBpeGVsIGR1cmluZyBwYW5pYyBtZXNzYWdlIHJlbmRlcmluZy4KKyAqIEl0IHJl cXVpcmVzIEB2bWFwIHRvIGJlIGEgbGluZWFyIG1hcHBpbmcuIFRoaXMgaXMgdGhlIGRlZmF1bHQg aW1wbGVtZW50YXRpb24KKyAqIHVzZWQgaWYgJmRybV9mcmFtZWJ1ZmZlcl9mdW5jcy0+cGFuaWNf ZHJhd194eSBpcyBub3Qgc2V0LgorICovCit2b2lkIGRybV9mcmFtZWJ1ZmZlcl9wYW5pY19kcmF3 X3h5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB2b2lkICp2bWFwLAorCQkJCSAgIGludCB4 LCBpbnQgeSwgYm9vbCBmb3JlZ3JvdW5kKQoreworCXZvaWQgKnBpeCA9IHZtYXAgKyBmYi0+b2Zm c2V0c1swXSArICh5ICogZmItPnBpdGNoZXNbMF0pOworCXU4ICpwaXg4ID0gcGl4OworCXUxNiAq cGl4MTYgPSBwaXg7CisJdTMyICpwaXgzMiA9IHBpeDsKKworCXN3aXRjaCAoZmItPmZvcm1hdC0+ Zm9ybWF0ICYgfkRSTV9GT1JNQVRfQklHX0VORElBTikgeworCWNhc2UgRFJNX0ZPUk1BVF9DODoK KworCWNhc2UgRFJNX0ZPUk1BVF9SR0IzMzI6CisJY2FzZSBEUk1fRk9STUFUX0JHUjIzMzoKKwor CWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCWNhc2UgRFJNX0ZPUk1BVF9OVjIxOgorCWNhc2UgRFJN X0ZPUk1BVF9OVjE2OgorCWNhc2UgRFJNX0ZPUk1BVF9OVjYxOgorCWNhc2UgRFJNX0ZPUk1BVF9O VjI0OgorCWNhc2UgRFJNX0ZPUk1BVF9OVjQyOgorCisJY2FzZSBEUk1fRk9STUFUX1lVVjQxMDoK KwljYXNlIERSTV9GT1JNQVRfWVZVNDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MTE6CisJY2Fz ZSBEUk1fRk9STUFUX1lWVTQxMToKKwljYXNlIERSTV9GT1JNQVRfWVVWNDIwOgorCWNhc2UgRFJN X0ZPUk1BVF9ZVlU0MjA6CisJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKKwljYXNlIERSTV9GT1JN QVRfWVZVNDIyOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0NDQ6CisJY2FzZSBEUk1fRk9STUFUX1lW VTQ0NDoKKwkJcGl4OFt4XSA9IGZvcmVncm91bmQgPyAweGZmIDogMHgwMDsKKwkJYnJlYWs7CisK KwljYXNlIERSTV9GT1JNQVRfWFJHQjQ0NDQ6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I0NDQ0Ogor CWNhc2UgRFJNX0ZPUk1BVF9YQkdSNDQ0NDoKKwljYXNlIERSTV9GT1JNQVRfQUJHUjQ0NDQ6CisJ CXBpeDE2W3hdID0gZm9yZWdyb3VuZCA/IDB4ZmZmZiA6IDB4ZjAwMDsKKwkJYnJlYWs7CisKKwlj YXNlIERSTV9GT1JNQVRfUkdCWDQ0NDQ6CisJY2FzZSBEUk1fRk9STUFUX1JHQkE0NDQ0OgorCWNh c2UgRFJNX0ZPUk1BVF9CR1JYNDQ0NDoKKwljYXNlIERSTV9GT1JNQVRfQkdSQTQ0NDQ6CisJCXBp eDE2W3hdID0gZm9yZWdyb3VuZCA/IDB4ZmZmZiA6IDB4MDAwZjsKKwkJYnJlYWs7CisKKwljYXNl IERSTV9GT1JNQVRfWFJHQjE1NTU6CisJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1OgorCWNhc2Ug RFJNX0ZPUk1BVF9YQkdSMTU1NToKKwljYXNlIERSTV9GT1JNQVRfQUJHUjE1NTU6CisJCXBpeDE2 W3hdID0gZm9yZWdyb3VuZCA/IDB4ZmZmZiA6IDB4ODAwMDsKKwkJYnJlYWs7CisKKwljYXNlIERS TV9GT1JNQVRfUkdCWDU1NTE6CisJY2FzZSBEUk1fRk9STUFUX1JHQkE1NTUxOgorCWNhc2UgRFJN X0ZPUk1BVF9CR1JYNTU1MToKKwljYXNlIERSTV9GT1JNQVRfQkdSQTU1NTE6CisJCXBpeDE2W3hd ID0gZm9yZWdyb3VuZCA/IDB4ZmZmZiA6IDB4MDAwMTsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9G T1JNQVRfUkdCNTY1OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjU6CisJCXBpeDE2W3hdID0gZm9y ZWdyb3VuZCA/IDB4ZmZmZiA6IDB4MDAwMDsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9GT1JNQVRf UkdCODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1I4ODg6CisJCXBpeDhbeCAqIDNdID0gZm9yZWdy b3VuZCA/IDB4ZmYgOiAweDAwOworCQlwaXg4Wyh4ICogMykgKyAxXSA9IHBpeDhbeF07CisJCXBp eDhbKHggKiAzKSArIDJdID0gcGl4OFt4XTsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9GT1JNQVRf WFJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9Y QkdSODg4ODoKKwljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6CisJCXBpeDMyW3hdID0gZm9yZWdy b3VuZCA/IDB4ZmZmZmZmZmYgOiAweGZmMDAwMDAwOworCQlicmVhazsKKworCWNhc2UgRFJNX0ZP Uk1BVF9SR0JYODg4ODoKKwljYXNlIERSTV9GT1JNQVRfUkdCQTg4ODg6CisJY2FzZSBEUk1fRk9S TUFUX0JHUlg4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1JBODg4ODoKKwkJcGl4MzJbeF0gPSBm b3JlZ3JvdW5kID8gMHhmZmZmZmZmZiA6IDB4MDAwMDAwZmY7CisJCWJyZWFrOworCisJY2FzZSBE Uk1fRk9STUFUX1hSR0IyMTAxMDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMjEwMTAxMDoKKwlj YXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEw OgorCQlwaXgzMlt4XSA9IGZvcmVncm91bmQgPyAweGZmZmZmZmZmIDogMHhjMDAwMDAwMDsKKwkJ YnJlYWs7CisKKwljYXNlIERSTV9GT1JNQVRfUkdCWDEwMTAxMDI6CisJY2FzZSBEUk1fRk9STUFU X1JHQkExMDEwMTAyOgorCWNhc2UgRFJNX0ZPUk1BVF9CR1JYMTAxMDEwMjoKKwljYXNlIERSTV9G T1JNQVRfQkdSQTEwMTAxMDI6CisJCXBpeDMyW3hdID0gZm9yZWdyb3VuZCA/IDB4ZmZmZmZmZmYg OiAweDAwMDAwMDAzOworCQlicmVhazsKKwl9Cit9CitFWFBPUlRfU1lNQk9MKGRybV9mcmFtZWJ1 ZmZlcl9wYW5pY19kcmF3X3h5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50 ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCAyNTFkNjdlMDRj MmQuLjY5NGE1ODAzYWMzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5h bC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaApAQCAtMTkxLDMgKzE5MSw3 IEBAIGludCBkcm1fc3luY29ial9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIHZvaWQgZHJtX2ZyYW1lYnVmZmVyX3ByaW50X2luZm8oc3RydWN0IGRybV9w cmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAogCQkJCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiKTsKIGludCBkcm1fZnJhbWVidWZmZXJfZGVidWdmc19pbml0KHN0cnVjdCBk cm1fbWlub3IgKm1pbm9yKTsKKworLyogZHJtX3BhbmljLmMgKi8KK3ZvaWQgZHJtX3BhbmljX2lu aXQoc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290KTsKK3ZvaWQgZHJtX3BhbmljX2V4aXQoc3Ry dWN0IGRlbnRyeSAqZGVidWdmc19yb290KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fcGFuaWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuaWMuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRiY2E3ZjBiYzM2OQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuaWMuYwpAQCAtMCwwICsxLDM2MyBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8vIENvcHlyaWdodCAyMDE4IE5vcmFsZiBUcsO4 bm5lcworCisjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZvbnQu aD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9rbXNnX2R1bXAu aD4KKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K KyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mcmFtZWJ1ZmZlci5o PgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFu ZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgor CisjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCisKKy8qCisgKiBUaGUgbG9nIGxpbmVzIGluIGFu IEFSTSBzdGFjayBkdW1wIGFyZSA5MiBjaGFyYWN0ZXJzIGxvbmcKKyAqIGFuZCAxMjAgaXMgYSBu aWNlIG11bHRpcGxlIGZvciBIRCBhbmQgNEsuCisgKi8KKyNkZWZpbmUgRFJNX1BBTklDX0NPTFVN Tl9XSURUSAkxMjAKKworc3RydWN0IGRybV9wYW5pY19jdHggeworCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiOworCXVuc2lnbmVkIGludCB3aWR0aDsKKwl1bnNpZ25lZCBpbnQgaGVpZ2h0Owor CXZvaWQgKnZtYXA7CisKKwljb25zdCBzdHJ1Y3QgZm9udF9kZXNjICpmb250OworCXVuc2lnbmVk IGludCBjb2xfd2lkdGg7CisJdW5zaWduZWQgaW50IGJvdHRvbV95OworCXNpemVfdCBtYXhfbGlu ZV9sZW5ndGg7CisKKwl1bnNpZ25lZCBpbnQgeDsKKwl1bnNpZ25lZCBpbnQgeTsKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZm9udF9kZXNjICpkcm1fcGFuaWNfZm9udDh4OCwgKmRybV9wYW5p Y19mb250OHgxNjsKKworc3RhdGljIHZvaWQgZHJtX3BhbmljX2RyYXdfeHkoc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsIHZvaWQgKnZtYXAsCisJCQkgICAgICBpbnQgeCwgaW50IHksIGJvb2wg ZmcpCit7CisJaWYgKGZiLT5mdW5jcy0+cGFuaWNfZHJhd194eSkKKwkJZmItPmZ1bmNzLT5wYW5p Y19kcmF3X3h5KGZiLCB2bWFwLCB4LCB5LCBmZyk7CisJZWxzZQorCQlkcm1fZnJhbWVidWZmZXJf cGFuaWNfZHJhd194eShmYiwgdm1hcCwgeCwgeSwgZmcpOworfQorCitzdGF0aWMgdm9pZCBkcm1f cGFuaWNfcmVuZGVyX2NoYXIoc3RydWN0IGRybV9wYW5pY19jdHggKmN0eCwKKwkJCQkgIHVuc2ln bmVkIGludCBvZmZzZXQsIGNoYXIgYykKK3sKKwl1bnNpZ25lZCBpbnQgaCwgdywgeCwgeTsKKwl1 OCBmb250bGluZTsKKworCWZvciAoaCA9IDA7IGggPCBjdHgtPmZvbnQtPmhlaWdodDsgaCsrKSB7 CisJCWZvbnRsaW5lID0gKih1OCAqKShjdHgtPmZvbnQtPmRhdGEgKyBjICogY3R4LT5mb250LT5o ZWlnaHQgKyBoKTsKKworCQlmb3IgKHcgPSAwOyB3IDwgY3R4LT5mb250LT53aWR0aDsgdysrKSB7 CisJCQl4ID0gY3R4LT54ICsgKG9mZnNldCAqIGN0eC0+Zm9udC0+d2lkdGgpICsgdzsKKwkJCXkg PSBjdHgtPnkgKyBoOworCQkJZHJtX3BhbmljX2RyYXdfeHkoY3R4LT5mYiwgY3R4LT52bWFwLCB4 LCB5LAorCQkJCQkgIGZvbnRsaW5lICYgQklUKDcgLSB3KSk7CisJCX0KKwl9Cit9CisKK3N0YXRp YyB2b2lkIGRybV9wYW5pY19yZW5kZXJfbGluZShzdHJ1Y3QgZHJtX3BhbmljX2N0eCAqY3R4LAor CQkJCSAgY29uc3QgY2hhciAqbGluZSwgc2l6ZV90IGxlbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsK KworCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKwkJZHJtX3BhbmljX3JlbmRlcl9jaGFyKGN0 eCwgaSwgbGluZVtpXSk7CisKKwkvKiBDbGVhciBvdXQgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgKi8K Kwlmb3IgKGkgPSBsZW47IGkgPCBjdHgtPm1heF9saW5lX2xlbmd0aDsgaSsrKQorCQlkcm1fcGFu aWNfcmVuZGVyX2NoYXIoY3R4LCBpLCAnICcpOworfQorCitzdGF0aWMgYm9vbCBkcm1fcGFuaWNf bmV3bGluZShzdHJ1Y3QgZHJtX3BhbmljX2N0eCAqY3R4KQoreworCWlmIChjdHgtPnggPT0gMCAm JiBjdHgtPnkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChjdHgtPnkgPT0gMCkgeworCQlj dHgtPnggLT0gY3R4LT5jb2xfd2lkdGg7CisJCWN0eC0+eSA9IGN0eC0+Ym90dG9tX3k7CisJfSBl bHNlIHsKKwkJY3R4LT55IC09IGN0eC0+Zm9udC0+aGVpZ2h0OworCX0KKworCXJldHVybiB0cnVl OworfQorCisvKiBSZW5kZXIgZnJvbSBib3R0b20gcmlnaHQgbW9zdCBjb2x1bW4gKi8KK3N0YXRp YyBib29sIGRybV9wYW5pY19yZW5kZXJfbGluZXMoc3RydWN0IGRybV9wYW5pY19jdHggKmN0eCwK KwkJCQkgICBjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCit7CisJc2l6ZV90IGwsIGxpbmVf bGVuZ3RoOworCWNvbnN0IGNoYXIgKnBvczsKKwlpbnQgaTsKKworCXdoaWxlIChsZW4pIHsKKwkJ cG9zID0gc3RyICsgbGVuIC0gMTsKKworCQlpZiAoKnBvcyA9PSAnXG4nKSB7CisJCQlsZW4tLTsK KwkJCWlmICghZHJtX3BhbmljX25ld2xpbmUoY3R4KSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlj b250aW51ZTsKKwkJfQorCisJCXdoaWxlIChwb3MgPiBzdHIgJiYgKihwb3MgLSAxKSAhPSAnXG4n KQorCQkJcG9zLS07CisKKwkJbGluZV9sZW5ndGggPSBsZW4gLSAocG9zIC0gc3RyKTsKKworCQlp ZiAoIWxpbmVfbGVuZ3RoIHx8IGxlbiA8IGxpbmVfbGVuZ3RoKSB7CisJCQlwcl9lcnIoIiVzOiBC dWchIGxpbmVfbGVuZ3RoPSV6dSBsZW49JXp1XG4iLAorCQkJICAgICAgIF9fZnVuY19fLCBsaW5l X2xlbmd0aCwgbGVuKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWxlbiAtPSBsaW5lX2xl bmd0aDsKKworCQlmb3IgKGkgPSBESVZfUk9VTkRfVVAobGluZV9sZW5ndGgsIGN0eC0+bWF4X2xp bmVfbGVuZ3RoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisJCQlsID0gbWluKGN0eC0+bWF4X2xpbmVf bGVuZ3RoLCBsaW5lX2xlbmd0aCAtIGkgKiBjdHgtPm1heF9saW5lX2xlbmd0aCk7CisJCQlkcm1f cGFuaWNfcmVuZGVyX2xpbmUoY3R4LCBwb3MgKyAoaSAqIGN0eC0+bWF4X2xpbmVfbGVuZ3RoKSwg bCk7CisJCQlpZiAoaSAmJiAhZHJtX3BhbmljX25ld2xpbmUoY3R4KSkKKwkJCQlyZXR1cm4gZmFs c2U7CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZHJtX3Bhbmlj X2ttc2dfcmVuZGVyX3NjcmVlbihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJIHN0cnVj dCBrbXNnX2R1bXBlciAqZHVtcGVyKQoreworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmUtPnN0YXRlLT5mYjsKKwlib29sIGZpcnN0X2l0ZXJhdGlvbiA9IHRydWU7CisJc3RydWN0 IGRybV9wYW5pY19jdHggY3R4OworCXN0YXRpYyBjaGFyIHRleHRbMTAyNF07CisJc2l6ZV90IGxl bjsKKworCWN0eC52bWFwID0gZmItPmZ1bmNzLT5wYW5pY192bWFwKGZiKTsKKworCS8qIFByaW50 IHNvbWUgaW5mbyB3aGVuIHRlc3RpbmcgKi8KKwlpZiAoZHVtcGVyLT5tYXhfcmVhc29uID09IEtN U0dfRFVNUF9PT1BTKSB7CisJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1l OworCisJCXByX2luZm8oIiVzOiBbRkI6JWRdICV1eCV1IGZvcm1hdD0lcyB2bWFwPSVwXG4iLAor CQkJX19mdW5jX18sIGZiLT5iYXNlLmlkLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCisJCQlkcm1f Z2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwKKwkJCWN0 eC52bWFwKTsKKwl9CisKKwlpZiAoIWN0eC52bWFwKQorCQlyZXR1cm47CisKKwljdHguZmIgPSBm YjsKKwljdHgud2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmUtPnN0YXRlLT5zcmMpID4+IDE2 OworCWN0eC5oZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lLT5zdGF0ZS0+c3JjKSA+PiAx NjsKKworCS8qCisJICogVE9ETzoKKwkgKiBGaW5kIHdoaWNoIHBhcnQgb2YgdGhlIGZiIHRoYXQg aXMgdmlzaWJsZS4KKwkgKiBXaWR0aCBhbmQgaGVpZ2h0IGFyZSB6ZXJvIG9uIHZjNAorCSAqLwor CWlmICghY3R4LndpZHRoIHx8ICFjdHguaGVpZ2h0KSB7CisJCWN0eC53aWR0aCA9IGZiLT53aWR0 aDsKKwkJY3R4LmhlaWdodCA9IGZiLT5oZWlnaHQ7CisJfQorCisJLyogVHJ5IHRvIGZpdCA1MCBs aW5lcyAqLworCWlmIChjdHguaGVpZ2h0IDwgNTAgKiAxNiAmJiBkcm1fcGFuaWNfZm9udDh4OCkK KwkJY3R4LmZvbnQgPSBkcm1fcGFuaWNfZm9udDh4ODsKKwllbHNlCisJCWN0eC5mb250ID0gZHJt X3BhbmljX2ZvbnQ4eDE2OworCisJY3R4LmNvbF93aWR0aCA9IERSTV9QQU5JQ19DT0xVTU5fV0lE VEggKiBjdHguZm9udC0+d2lkdGg7CisJY3R4LmJvdHRvbV95ID0gKChjdHguaGVpZ2h0IC8gY3R4 LmZvbnQtPmhlaWdodCkgLSAxKSAqIGN0eC5mb250LT5oZWlnaHQ7CisKKwlpZiAoY3R4LndpZHRo IDwgMiAqIGN0eC5jb2xfd2lkdGgpCisJCWN0eC5tYXhfbGluZV9sZW5ndGggPSBjdHgud2lkdGgg LyBjdHguZm9udC0+d2lkdGg7CisJZWxzZQorCQljdHgubWF4X2xpbmVfbGVuZ3RoID0gRFJNX1BB TklDX0NPTFVNTl9XSURUSCAtIDI7IC8qIGJvcmRlcj0yICovCisKKwljdHgueCA9IDA7CisJY3R4 LnkgPSBjdHguYm90dG9tX3k7CisJaWYgKGN0eC53aWR0aCA+IGN0eC5jb2xfd2lkdGgpCisJCWN0 eC54ID0gKChjdHgud2lkdGggLyBjdHguY29sX3dpZHRoKSAtIDEpICogY3R4LmNvbF93aWR0aDsK KworCXByX2RlYnVnKCIlczogZm9udD0lcyAldXgldSBtYXhfbGluZV9sZW5ndGg9JXp1ICgldSwl dSlcbiIsCisJCSBfX2Z1bmNfXywgY3R4LmZvbnQtPm5hbWUsIGN0eC53aWR0aCwgY3R4LmhlaWdo dCwKKwkJIGN0eC5tYXhfbGluZV9sZW5ndGgsIGN0eC54LCBjdHgueSk7CisKKwlrbXNnX2R1bXBf cmV3aW5kKGR1bXBlcik7CisKKwkvKiBUaGUgbGF0ZXN0IG1lc3NhZ2VzIGFyZSBmZXRjaGVkIGZp cnN0ICovCisJd2hpbGUgKGttc2dfZHVtcF9nZXRfYnVmZmVyKGR1bXBlciwgZmFsc2UsIHRleHQs IHNpemVvZih0ZXh0KSwgJmxlbikpIHsKKwkJLyogU3RyaXAgb2ZmIHRoZSB2ZXJ5IGxhc3QgbmV3 bGluZSBzbyB3ZSBzdGFydCBhdCB0aGUgYm90dG9tICovCisJCWlmIChmaXJzdF9pdGVyYXRpb24p IHsKKwkJCWxlbi0tOworCQkJZmlyc3RfaXRlcmF0aW9uID0gZmFsc2U7CisJCX0KKworCQlpZiAo IWRybV9wYW5pY19yZW5kZXJfbGluZXMoJmN0eCwgdGV4dCwgbGVuKSkKKwkJCWJyZWFrOworCX0K KworCWlmIChmYi0+ZnVuY3MtPnBhbmljX3Z1bm1hcCkKKwkJZmItPmZ1bmNzLT5wYW5pY192dW5t YXAoZmIsIHZtYXApOworfQorCitzdGF0aWMgdm9pZCBkcm1fcGFuaWNfdHJ5X2RldihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qga21zZ19kdW1wZXIgKmR1bXBlcikKK3sKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKKwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklW RVJfQVRPTUlDKSkKKwkJcmV0dXJuOworCisJaWYgKGR1bXBlci0+bWF4X3JlYXNvbiA9PSBLTVNH X0RVTVBfT09QUykKKwkJcHJfaW5mbygiJXM6ICVzIG9uIG1pbm9yICVkXG4iLCBfX2Z1bmNfXywg ZGV2LT5kcml2ZXItPm5hbWUsCisJCQlkZXYtPnByaW1hcnktPmluZGV4KTsKKworCWRybV9mb3Jf ZWFjaF9jcnRjKGNydGMsIGRldikgeworCQlpZiAoIXd3X211dGV4X3RyeWxvY2soJmNydGMtPm11 dGV4Lm11dGV4KSkKKwkJCWNvbnRpbnVlOworCisJCWlmICghY3J0Yy0+ZW5hYmxlZCB8fCAhY3J0 Yy0+cHJpbWFyeSkKKwkJCWdvdG8gY3J0Y191bmxvY2s7CisKKwkJaWYgKCFjcnRjLT5zdGF0ZSB8 fCAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKKwkJCWdvdG8gY3J0Y191bmxvY2s7CisKKwkJcGxhbmUg PSBjcnRjLT5wcmltYXJ5OworCQlpZiAoIXd3X211dGV4X3RyeWxvY2soJnBsYW5lLT5tdXRleC5t dXRleCkpCisJCQlnb3RvIGNydGNfdW5sb2NrOworCisJCS8qCisJCSAqIFRPRE86IFNob3VsZCB3 ZSBjaGVjayBwbGFuZV9zdGF0ZS0+dmlzaWJsZT8KKwkJICogSXQgaXMgbm90IHNldCBvbiB2YzQK KwkJaWYgKCFwbGFuZS0+c3RhdGUgfHwgIXBsYW5lLT5zdGF0ZS0+dmlzaWJsZSkKKwkJICovCisJ CWlmICghcGxhbmUtPnN0YXRlKQorCQkJZ290byBwbGFuZV91bmxvY2s7CisKKwkJZmIgPSBwbGFu ZS0+c3RhdGUtPmZiOworCQlpZiAoIWZiIHx8ICFmYi0+ZnVuY3MtPnBhbmljX3ZtYXApCisJCQln b3RvIHBsYW5lX3VubG9jazsKKworCQkvKgorCQkgKiBmYmNvbiBwdXRzIG91dCBwYW5pYyBtZXNz YWdlcyBzbyBzdGF5IGF3YXkgdG8gYXZvaWQganVtYmxlZAorCQkgKiBvdXRwdXQuIElmIHZjLT52 Y19tb2RlICE9IEtEX1RFWFQgZmJjb24gd29uJ3QgcHV0IG91dAorCQkgKiBtZXNzYWdlcyAoc2Vl IHZ0X2NvbnNvbGVfcHJpbnQpLgorCQkgKi8KKwkJaWYgKGRldi0+ZmJfaGVscGVyICYmIGRldi0+ ZmJfaGVscGVyLT5mYiA9PSBmYikKKwkJCWdvdG8gcGxhbmVfdW5sb2NrOworCisJCWRybV9wYW5p Y19rbXNnX3JlbmRlcl9zY3JlZW4ocGxhbmUsIGR1bXBlcik7CitwbGFuZV91bmxvY2s6CisJCXd3 X211dGV4X3VubG9jaygmcGxhbmUtPm11dGV4Lm11dGV4KTsKK2NydGNfdW5sb2NrOgorCQl3d19t dXRleF91bmxvY2soJmNydGMtPm11dGV4Lm11dGV4KTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgZHJt X3BhbmljX2Rldl9pdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgZHJtX21pbm9yICptaW5vciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJaWYgKG1pbm9y ICYmIG1pbm9yLT50eXBlID09IERSTV9NSU5PUl9QUklNQVJZKQorCQlkcm1fcGFuaWNfdHJ5X2Rl dihtaW5vci0+ZGV2LCBkYXRhKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkcm1f cGFuaWNfa21zZ19kdW1wKHN0cnVjdCBrbXNnX2R1bXBlciAqZHVtcGVyLAorCQkJCWVudW0ga21z Z19kdW1wX3JlYXNvbiByZWFzb24pCit7CisJY2xhc3NfZm9yX2VhY2hfZGV2aWNlKGRybV9jbGFz cywgTlVMTCwgZHVtcGVyLCBkcm1fcGFuaWNfZGV2X2l0ZXIpOworfQorCitzdGF0aWMgc3RydWN0 IGttc2dfZHVtcGVyIGRybV9wYW5pY19rbXNnX2R1bXBlciA9IHsKKwkuZHVtcCA9IGRybV9wYW5p Y19rbXNnX2R1bXAsCisJLm1heF9yZWFzb24gPSBLTVNHX0RVTVBfUEFOSUMsCit9OworCitzdGF0 aWMgc3NpemVfdCBkcm1fcGFuaWNfZmlsZV9wYW5pY193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwK KwkJCQkJICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsCisJCQkJCSAgc2l6ZV90IGNvdW50 LCBsb2ZmX3QgKnBwb3MpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKwljaGFyIGJ1Zlsy NF07CisJc2l6ZV90IHNpemU7CisJc3NpemVfdCByZXQ7CisKKwlzaXplID0gbWluKHNpemVvZihi dWYpIC0gMSwgY291bnQpOworCWlmIChjb3B5X2Zyb21fdXNlcihidWYsIHVzZXJfYnVmLCBzaXpl KSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlidWZbc2l6ZV0gPSAnXDAnOworCXJldCA9IGtzdHJ0 b3VsbChidWYsIDAsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkcm1fcGFu aWNfa21zZ19kdW1wZXIubWF4X3JlYXNvbiA9IEtNU0dfRFVNUF9PT1BTOworCXdtYigpOworCisJ LyogRG8gYSByZWFsIHRlc3Qgd2l0aDogZWNobyBjID4gL3Byb2Mvc3lzcnEtdHJpZ2dlciAqLwor CisJaWYgKHZhbCA9PSAwKSB7CisJCXByX2luZm8oIlRlc3QgcGFuaWMgc2NyZWVuIHVzaW5nIGtt c2dfZHVtcChPT1BTKVxuIik7CisJCWttc2dfZHVtcChLTVNHX0RVTVBfT09QUyk7CisJfSBlbHNl IGlmICh2YWwgPT0gMSkgeworCQljaGFyICpudWxsX3BvaW50ZXIgPSBOVUxMOworCisJCXByX2lu Zm8oIlRlc3QgcGFuaWMgc2NyZWVuIHVzaW5nIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZVxuIik7 CisJCSpudWxsX3BvaW50ZXIgPSAxOworCX0gZWxzZSB7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgZHJtX3BhbmljX3BhbmljX29wcyA9IHsKKwkud3JpdGUgPSAgICAgICAgZHJtX3BhbmljX2Zp bGVfcGFuaWNfd3JpdGUsCisJLm9wZW4gPSAgICAgICAgIHNpbXBsZV9vcGVuLAorCS5sbHNlZWsg PSAgICAgICBkZWZhdWx0X2xsc2VlaywKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkcm1f cGFuaWNfZF9wYW5pYzsKKwordm9pZCBfX2luaXQgZHJtX3BhbmljX2luaXQoc3RydWN0IGRlbnRy eSAqZGVidWdmc19yb290KQoreworCWRybV9wYW5pY19mb250OHg4ID0gZmluZF9mb250KCJWR0E4 eDgiKTsKKwlkcm1fcGFuaWNfZm9udDh4MTYgPSBmaW5kX2ZvbnQoIlZHQTh4MTYiKTsKKwlpZiAo IWRybV9wYW5pY19mb250OHgxNikgeworCQlEUk1fV0FSTigiQ291bGRuJ3QgZmluZCBmb250LCBw YW5pYyBzY3JlZW4gZGlzYWJsZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJZHJtX3BhbmljX2Rf cGFuaWMgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJwYW5pYy10ZXN0IiwgMDIwMCwKKwkJCQkJCWRl YnVnZnNfcm9vdCwgTlVMTCwKKwkJCQkJCSZkcm1fcGFuaWNfcGFuaWNfb3BzKTsKKwlrbXNnX2R1 bXBfcmVnaXN0ZXIoJmRybV9wYW5pY19rbXNnX2R1bXBlcik7Cit9CisKK3ZvaWQgZHJtX3Bhbmlj X2V4aXQoc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290KQoreworCWttc2dfZHVtcF91bnJlZ2lz dGVyKCZkcm1fcGFuaWNfa21zZ19kdW1wZXIpOworCWRlYnVnZnNfcmVtb3ZlKGRybV9wYW5pY19k X3BhbmljKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mcmFtZWJ1ZmZlci5oIGIv aW5jbHVkZS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmgKaW5kZXggZjBiMzRjOTc3ZWM1Li5mMzI3NDc5 OGVjZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mcmFtZWJ1ZmZlci5oCisrKyBiL2lu Y2x1ZGUvZHJtL2RybV9mcmFtZWJ1ZmZlci5oCkBAIC05NCw2ICs5NCw0NCBAQCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyX2Z1bmNzIHsKIAkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwg dW5zaWduZWQgZmxhZ3MsCiAJCSAgICAgdW5zaWduZWQgY29sb3IsIHN0cnVjdCBkcm1fY2xpcF9y ZWN0ICpjbGlwcywKIAkJICAgICB1bnNpZ25lZCBudW1fY2xpcHMpOworCisJLyoqCisJICogQHBh bmljX3ZtYXA6CisJICoKKwkgKiBPcHRpb25hbCBjYWxsYmFjayBmb3IgcGFuaWMgaGFuZGxpbmcu CisJICoKKwkgKiBGb3Igdm1hcHBpbmcgdGhlIHNlbGVjdGVkIGZyYW1lYnVmZmVyIGluIGEgcGFu aWMgY29udGV4dC4gTXVzdAorCSAqIGJlIHN1cGVyIGNhcmVmdWwgYWJvdXQgbG9ja2luZyAob25s eSB0cnlsb2NraW5nIGFsbG93ZWQpLgorCSAqCisJICogUkVUVVJOUzoKKwkgKgorCSAqIE5VTEwg aWYgaXQgZGlkbid0IHdvcmsgb3V0LCBvdGhlcndpc2UgYW4gb3BhcXVlIGNvb2tpZSB3aGljaCBp cworCSAqIHBhc3NlZCB0byBAcGFuaWNfZHJhd194eS4gSXQgY2FuIGJlIGFueXRoaW5nOiB2bWFw IGFyZWEsIHN0cnVjdHVyZQorCSAqIHdpdGggbW9yZSBkZXRhaWxzLCBqdXN0IGEgZmV3IGZsYWdz LCAuLi4KKwkgKi8KKwl2b2lkICooKnBhbmljX3ZtYXApKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiKTsKKworCS8qKgorCSAqIEBwYW5pY192dW5tYXA6CisJICoKKwkgKiBPcHRpb25hbCBjYWxs YmFjayBmb3IgY2xlYW5pbmcgdXAgYWZ0ZXIgcGFuaWMgdGVzdGluZy4KKwkgKgorCSAqIENydGMg YW5kIHBsYW5lIGxvY2tzIGFyZSByZWxlYXNlZCBhZnRlciB0aGlzIGNhbGxiYWNrIGhhcyBydW4u CisJICogdm1hcCBpcyB0aGUgY29va2llIHJldHVybmVkIGJ5IEBwYW5pY192bWFwLgorCSAqLwor CXZvaWQgKCpwYW5pY192dW5tYXApKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB2b2lkICp2 bWFwKTsKKworCS8qKgorCSAqIEBwYW5pY19kcmF3X3h5OgorCSAqCisJICogT3B0aW9uYWwgY2Fs bGJhY2sgZm9yIGRyYXdpbmcgcGl4ZWxzIGR1cmluZyBwYW5pYy4KKwkgKgorCSAqIEZvciBkcmF3 aW5nIHBpeGVscyBvbnRvIGEgZnJhbWVidWZmZXIgcHJlcGFyZWQgd2l0aCBAcGFuaWNfdm1hcC4K KwkgKiB2bWFwIGlzIHRoZSBjb29raWUgcmV0dXJuZWQgYnkgQHBhbmljX3ZtYXAuCisJICogSWYg aXQncyBub3Qgc2V0LCBkcm1fZnJhbWVidWZmZXJfcGFuaWNfZHJhd194eSgpIGlzIHVzZWQuCisJ ICovCisJdm9pZCAoKnBhbmljX2RyYXdfeHkpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCB2 b2lkICp2bWFwLAorCQkJICAgICAgaW50IHgsIGludCB5LCBib29sIGZvcmVncm91bmQpOwogfTsK IAogLyoqCkBAIC0yOTMsNCArMzMxLDcgQEAgaW50IGRybV9mcmFtZWJ1ZmZlcl9wbGFuZV93aWR0 aChpbnQgd2lkdGgsCiBpbnQgZHJtX2ZyYW1lYnVmZmVyX3BsYW5lX2hlaWdodChpbnQgaGVpZ2h0 LAogCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHBsYW5lKTsKIAor dm9pZCBkcm1fZnJhbWVidWZmZXJfcGFuaWNfZHJhd194eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwgdm9pZCAqdm1hcCwKKwkJCQkgICBpbnQgeCwgaW50IHksIGJvb2wgZm9yZWdyb3VuZCk7 CisKICNlbmRpZgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=