From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: [PATCH i-g-t v2 7/7] Make igtrc configuration common, with configurable suspend/resume delay Date: Tue, 27 Jun 2017 13:53:11 +0300 Message-ID: <20170627105311.28975-7-paul.kocialkowski@linux.intel.com> References: <20170627105311.28975-1-paul.kocialkowski@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E26906E38B for ; Tue, 27 Jun 2017 10:53:34 +0000 (UTC) In-Reply-To: <20170627105311.28975-1-paul.kocialkowski@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Lyude List-Id: intel-gfx@lists.freedesktop.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIGNvbmZpZ3VyYWJsZSBzdXNwZW5kL3Jlc3VtZSBkZWxheSBh bmQgdGFrZXMgdGhlCm9jY2FzaW9uIHRvIG1vdmUgaWd0cmMgY29uZmlndWF0aW9uIGZyb20gaWd0 X2NoYW1lbGl1bSB0byBpZ3RfY29yZS4KVGhpcyB3YXksIHN1c3BlbmQvcmVzdW1lIGRlbGF5IGNv bmZpZ3VyYXRpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCB0ZXN0cy4KClNpZ25lZC1vZmYtYnk6IFBh dWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Ci0tLQog bGliL01ha2VmaWxlLmFtICAgICB8ICAyICsrCiBsaWIvaWd0X2F1eC5jICAgICAgIHwgMjcgKysr KysrKysrKysrKysrKysrLS0tLQogbGliL2lndF9hdXguaCAgICAgICB8ICAxICsKIGxpYi9pZ3Rf Y2hhbWVsaXVtLmMgfCA0OSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBsaWIvaWd0X2NvcmUuYyAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9pZ3RfY29yZS5oICAgICAgfCAgMiArKwogdGVz dHMvTWFrZWZpbGUuYW0gICB8ICA0ICsrLS0KIHRlc3RzL2NoYW1lbGl1bS5jICAgfCAxMSArKysr Ky0tLS0KIHRvb2xzL01ha2VmaWxlLmFtICAgfCAgNCArKy0tCiA5IGZpbGVzIGNoYW5nZWQsIDEx MiBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvTWFrZWZp bGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KaW5kZXggOTFlNzJjNDQuLmQ0ZjQxMTI4IDEwMDY0NAot LS0gYS9saWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC00MSw2ICs0MSw3 IEBAIEFNX0NGTEFHUyA9IFwKIAkgICAgJChYTUxSUENfQ0ZMQUdTKSBcCiAJICAgICQoTElCVURF Vl9DRkxBR1MpIFwKIAkgICAgJChQSVhNQU5fQ0ZMQUdTKSBcCisJICAgICQoR0xJQl9DRkxBR1Mp IFwKIAkgICAgJChWQUxHUklORF9DRkxBR1MpIFwKIAkgICAgLURJR1RfU1JDRElSPVwiIiQoYWJz X3RvcF9zcmNkaXIpL3Rlc3RzIlwiIFwKIAkgICAgLURJR1RfREFUQURJUj1cIiIkKHBrZ2RhdGFk aXIpIlwiIFwKQEAgLTYxLDUgKzYyLDYgQEAgbGliaW50ZWxfdG9vbHNfbGFfTElCQUREID0gXAog CSQoWE1MUlBDX0xJQlMpIFwKIAkkKExJQlVERVZfTElCUykgXAogCSQoUElYTUFOX0xJQlMpIFwK KwkkKEdMSUJfTElCUykgXAogCS1sbQogCmRpZmYgLS1naXQgYS9saWIvaWd0X2F1eC5jIGIvbGli L2lndF9hdXguYwppbmRleCA4ODJkYmEwNi4uODZhMjEzYzIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf YXV4LmMKKysrIGIvbGliL2lndF9hdXguYwpAQCAtNzQ4LDEwICs3NDgsNyBAQCBzdGF0aWMgdm9p ZCBzdXNwZW5kX3ZpYV9ydGN3YWtlKGVudW0gaWd0X3N1c3BlbmRfc3RhdGUgc3RhdGUpCiAKIAlp Z3RfYXNzZXJ0KHN0YXRlIDwgU1VTUEVORF9TVEFURV9OVU0pOwogCi0JaWYgKGF1dG9yZXN1bWVf ZGVsYXkpCi0JCWRlbGF5ID0gYXV0b3Jlc3VtZV9kZWxheTsKLQllbHNlCi0JCWRlbGF5ID0gc3Rh dGUgPT0gU1VTUEVORF9TVEFURV9ESVNLID8gMzAgOiAxNTsKKwlkZWxheSA9IGlndF9nZXRfYXV0 b3Jlc3VtZV9kZWxheShzdGF0ZSk7CiAKIAkvKgogCSAqIFNraXAgaWYgcnRjd2FrZSB3b3VsZCBm YWlsIGZvciBhIHJlYXNvbiBub3QgcmVsYXRlZCB0byB0aGUga2VybmVsJ3MKQEAgLTg5OSw2ICs4 OTYsMjggQEAgdm9pZCBpZ3Rfc2V0X2F1dG9yZXN1bWVfZGVsYXkoaW50IGRlbGF5X3NlY3MpCiB9 CiAKIC8qKgorICogaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5OgorICogQHN0YXRlOiBhbiAjaWd0 X3N1c3BlbmRfc3RhdGUsIHRoZSB0YXJnZXQgc3VzcGVuZCBzdGF0ZQorICoKKyAqIFJldHJpZXZl cyBob3cgbG9uZyB3ZSB3YWl0IHRvIHJlc3VtZSB0aGUgc3lzdGVtIGFmdGVyIHN1c3BlbmRpbmcg aXQuCisgKiBUaGlzIGNhbiBlaXRoZXIgYmUgc2V0IHRocm91Z2ggaWd0X3NldF9hdXRvcmVzdW1l X2RlbGF5IG9yIGJlIGEgZGVmYXVsdAorICogdmFsdWUgdGhhdCBkZXBlbmRzIG9uIHRoZSBzdXNw ZW5kIHN0YXRlLgorICoKKyAqIFJldHVybnM6IFRoZSBhdXRvcmVzdW1lIGRlbGF5LCBpbiBzZWNv bmRzLgorICovCitpbnQgaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5KGVudW0gaWd0X3N1c3BlbmRf c3RhdGUgc3RhdGUpCit7CisJaW50IGRlbGF5OworCisJaWYgKGF1dG9yZXN1bWVfZGVsYXkpCisJ CWRlbGF5ID0gYXV0b3Jlc3VtZV9kZWxheTsKKwllbHNlCisJCWRlbGF5ID0gc3RhdGUgPT0gU1VT UEVORF9TVEFURV9ESVNLID8gMzAgOiAxNTsKKworCXJldHVybiBkZWxheTsKK30KKworLyoqCiAg KiBpZ3RfZHJvcF9yb290OgogICoKICAqIERyb3Agcm9vdCBwcml2aWxlZ2VzIGFuZCBtYWtlIHN1 cmUgaXQgYWN0dWFsbHkgd29ya2VkLiBVc2VmdWwgZm9yIHRlc3RzCmRpZmYgLS1naXQgYS9saWIv aWd0X2F1eC5oIGIvbGliL2lndF9hdXguaAppbmRleCA1NGI5NzE2NC4uNDk5YTE2NzkgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3RfYXV4LmgKKysrIGIvbGliL2lndF9hdXguaApAQCAtMTkyLDYgKzE5Miw3 IEBAIGVudW0gaWd0X3N1c3BlbmRfdGVzdCB7CiB2b2lkIGlndF9zeXN0ZW1fc3VzcGVuZF9hdXRv cmVzdW1lKGVudW0gaWd0X3N1c3BlbmRfc3RhdGUgc3RhdGUsCiAJCQkJICAgZW51bSBpZ3Rfc3Vz cGVuZF90ZXN0IHRlc3QpOwogdm9pZCBpZ3Rfc2V0X2F1dG9yZXN1bWVfZGVsYXkoaW50IGRlbGF5 X3NlY3MpOworaW50IGlndF9nZXRfYXV0b3Jlc3VtZV9kZWxheShlbnVtIGlndF9zdXNwZW5kX3N0 YXRlIHN0YXRlKTsKIAogLyogZHJvcHBpbmcgcHJpdmlsZWRnZXMgKi8KIHZvaWQgaWd0X2Ryb3Bf cm9vdCh2b2lkKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMgYi9saWIvaWd0X2No YW1lbGl1bS5jCmluZGV4IDIyNWY5OGMzLi4zNDVjNDRkNiAxMDA2NDQKLS0tIGEvbGliL2lndF9j aGFtZWxpdW0uYworKysgYi9saWIvaWd0X2NoYW1lbGl1bS5jCkBAIC01MSw4ICs1MSw4IEBACiAg KiBbb24gdGhlIENocm9tZU9TIHByb2plY3QgcGFnZV0oaHR0cHM6Ly93d3cuY2hyb21pdW0ub3Jn L2Nocm9taXVtLW9zL3Rlc3RpbmcvY2hhbWVsaXVtKS4KICAqCiAgKiBJbiBvcmRlciB0byBydW4g dGVzdHMgdXNpbmcgdGhlIENoYW1lbGl1bSwgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZpbGUgbXVz dCBiZQotICogcHJlc2VudC4gIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgYSBub3JtYWwgR2xp YiBrZXlmaWxlIChzaW1pbGFyIHRvIFdpbmRvd3MKLSAqIElOSSkgc3RydWN0dXJlZCBsaWtlIHNv OgorICogcHJlc2VudC4gSXQgbXVzdCBjb250YWluIENoYW1lbGl1bS1zcGVjaWZpYyBrZXlzIGFz IHNob3duIHdpdGggdGhlIGZvbGxvd2luZworICogZXhhbXBsZToKICAqCiAgKiB8WzwhLS0gbGFu Z3VhZ2U9InBsYWluIiAtLT4KICAqCVtDaGFtZWxpdW1dCkBAIC03Miw4ICs3Miw2IEBACiAgKglD aGFtZWxpdW1Qb3J0SUQ9MwogICogXXwKICAqCi0gKiBCeSBkZWZhdWx0LCB0aGlzIGZpbGUgaXMg ZXhwZWN0ZWQgdG8gZXhpc3QgaW4gfi8uaWd0cmMgLiBUaGUgZGlyZWN0b3J5IGZvcgotICogdGhp cyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICVJ R1RfQ09ORklHX1BBVEguCiAgKi8KIAogc3RydWN0IGNoYW1lbGl1bV9lZGlkIHsKQEAgLTEwMzQs NyArMTAzMiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2hhbWVsaXVtX2dldF9wb3J0X3R5cGUo c3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogfQogCiBzdGF0aWMgYm9vbCBjaGFtZWxpdW1f cmVhZF9wb3J0X21hcHBpbmdzKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKLQkJCQkJIGlu dCBkcm1fZmQsIEdLZXlGaWxlICprZXlfZmlsZSkKKwkJCQkJIGludCBkcm1fZmQpCiB7CiAJZHJt TW9kZVJlcyAqcmVzOwogCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKQEAgLTEwNDUsNyAr MTA0Myw3IEBAIHN0YXRpYyBib29sIGNoYW1lbGl1bV9yZWFkX3BvcnRfbWFwcGluZ3Moc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogCWludCBwb3J0X2ksIGksIGo7CiAJYm9vbCByZXQgPSB0 cnVlOwogCi0JZ3JvdXBfbGlzdCA9IGdfa2V5X2ZpbGVfZ2V0X2dyb3VwcyhrZXlfZmlsZSwgTlVM TCk7CisJZ3JvdXBfbGlzdCA9IGdfa2V5X2ZpbGVfZ2V0X2dyb3VwcyhpZ3Rfa2V5X2ZpbGUsIE5V TEwpOwogCiAJLyogQ291bnQgaG93IG1hbnkgY29ubmVjdG9yIG1hcHBpbmdzIGFyZSBzcGVjaWZp ZWQgaW4gdGhlIGNvbmZpZyAqLwogCWZvciAoaSA9IDA7IGdyb3VwX2xpc3RbaV0gIT0gTlVMTDsg aSsrKSB7CkBAIC0xMDY4LDcgKzEwNjYsNyBAQCBzdGF0aWMgYm9vbCBjaGFtZWxpdW1fcmVhZF9w b3J0X21hcHBpbmdzKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKIAogCQlwb3J0ID0gJmNo YW1lbGl1bS0+cG9ydHNbcG9ydF9pKytdOwogCQlwb3J0LT5uYW1lID0gc3RyZHVwKG1hcF9uYW1l KTsKLQkJcG9ydC0+aWQgPSBnX2tleV9maWxlX2dldF9pbnRlZ2VyKGtleV9maWxlLCBncm91cCwK KwkJcG9ydC0+aWQgPSBnX2tleV9maWxlX2dldF9pbnRlZ2VyKGlndF9rZXlfZmlsZSwgZ3JvdXAs CiAJCQkJCQkgICJDaGFtZWxpdW1Qb3J0SUQiLAogCQkJCQkJICAmZXJyb3IpOwogCQlpZiAoIXBv cnQtPmlkKSB7CkBAIC0xMTI1LDQ3ICsxMTIzLDIyIEBAIG91dDoKIAogc3RhdGljIGJvb2wgY2hh bWVsaXVtX3JlYWRfY29uZmlnKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwgaW50IGRybV9m ZCkKIHsKLQlHS2V5RmlsZSAqa2V5X2ZpbGUgPSBnX2tleV9maWxlX25ldygpOwogCUdFcnJvciAq ZXJyb3IgPSBOVUxMOwotCWNoYXIgKmtleV9maWxlX2xvYywgKmtleV9maWxlX2VudjsKLQlpbnQg cmM7Ci0JYm9vbCByZXQgPSB0cnVlOwogCi0Ja2V5X2ZpbGVfZW52ID0gZ2V0ZW52KCJJR1RfQ09O RklHX1BBVEgiKTsKLQlpZiAoa2V5X2ZpbGVfZW52KSB7Ci0JCWtleV9maWxlX2xvYyA9IGtleV9m aWxlX2VudjsKLQl9IGVsc2UgewotCQlrZXlfZmlsZV9sb2MgPSBtYWxsb2MoMTAwKTsKLQkJc25w cmludGYoa2V5X2ZpbGVfbG9jLCAxMDAsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsK KwlpZiAoIWlndF9rZXlfZmlsZSkgeworCQlpZ3Rfd2FybigiTm8gY29uZmlndXJhdGlvbiBmaWxl IGF2YWlsYWJsZSBmb3IgY2hhbWVsaXVtXG4iKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXJj ID0gZ19rZXlfZmlsZV9sb2FkX2Zyb21fZmlsZShrZXlfZmlsZSwga2V5X2ZpbGVfbG9jLAotCQkJ CSAgICAgICBHX0tFWV9GSUxFX05PTkUsICZlcnJvcik7Ci0JaWYgKCFyYykgewotCQlpZ3Rfd2Fy bigiRmFpbGVkIHRvIHJlYWQgY2hhbWVsaXVtIGNvbmZpZ3VyYXRpb24gZmlsZTogJXNcbiIsCi0J CQkgZXJyb3ItPm1lc3NhZ2UpOwotCQlyZXQgPSBmYWxzZTsKLQkJZ290byBvdXQ7Ci0JfQotCi0J Y2hhbWVsaXVtLT51cmwgPSBnX2tleV9maWxlX2dldF9zdHJpbmcoa2V5X2ZpbGUsICJDaGFtZWxp dW0iLCAiVVJMIiwKKwljaGFtZWxpdW0tPnVybCA9IGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhpZ3Rf a2V5X2ZpbGUsICJDaGFtZWxpdW0iLCAiVVJMIiwKIAkJCQkJICAgICAgICZlcnJvcik7CiAJaWYg KCFjaGFtZWxpdW0tPnVybCkgewogCQlpZ3Rfd2FybigiQ291bGRuJ3QgcmVhZCBjaGFtZWxpdW0g VVJMIGZyb20gY29uZmlnIGZpbGU6ICVzXG4iLAogCQkJIGVycm9yLT5tZXNzYWdlKTsKLQkJcmV0 ID0gZmFsc2U7Ci0JCWdvdG8gb3V0OworCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0ID0gY2hh bWVsaXVtX3JlYWRfcG9ydF9tYXBwaW5ncyhjaGFtZWxpdW0sIGRybV9mZCwga2V5X2ZpbGUpOwot Ci1vdXQ6Ci0JZ19rZXlfZmlsZV9mcmVlKGtleV9maWxlKTsKLQotCWlmICgha2V5X2ZpbGVfZW52 KQotCQlmcmVlKGtleV9maWxlX2xvYyk7Ci0KLQlyZXR1cm4gcmV0OworCXJldHVybiBjaGFtZWxp dW1fcmVhZF9wb3J0X21hcHBpbmdzKGNoYW1lbGl1bSwgZHJtX2ZkKTsKIH0KIAogLyoqCmRpZmYg LS1naXQgYS9saWIvaWd0X2NvcmUuYyBiL2xpYi9pZ3RfY29yZS5jCmluZGV4IDlhNWVkNDBlLi5i M2QxYzYwOCAxMDA2NDQKLS0tIGEvbGliL2lndF9jb3JlLmMKKysrIGIvbGliL2lndF9jb3JlLmMK QEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxsb2NhbGUu aD4KICNpbmNsdWRlIDx1d2lsZG1hdC91d2lsZG1hdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KIAog I2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCkBAIC0yMjUs NiArMjI2LDIzIEBACiAgKiAtICdiYXNpYyosYWR2YW5jZWQqJyBtYXRjaCBhbnkgc3VidGVzdCBz dGFydGluZyBiYXNpYyBvciBhZHZhbmNlZAogICogLSAnKiwhYmFzaWMqJyBtYXRjaCBhbnkgc3Vi dGVzdCBub3Qgc3RhcnRpbmcgYmFzaWMKICAqIC0gJ2Jhc2ljKiwhYmFzaWMtcmVuZGVyKicgbWF0 Y2ggYW55IHN1YnRlc3Qgc3RhcnRpbmcgYmFzaWMgYnV0IG5vdCBzdGFydGluZyBiYXNpYy1yZW5k ZXIKKyAqCisgKiAjIENvbmZpZ3VyYXRpb24KKyAqCisgKiBTb21lIG9mIElHVCdzIGJlaGF2aW9y IGNhbiBiZSBjb25maWd1cmVkIHRocm91Z2ggYSBjb25maWd1cmF0aW9uIGZpbGUuCisgKiBCeSBk ZWZhdWx0LCB0aGlzIGZpbGUgaXMgZXhwZWN0ZWQgdG8gZXhpc3QgaW4gfi8uaWd0cmMgLiBUaGUg ZGlyZWN0b3J5IGZvcgorICogdGhpcyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHNldHRpbmcgdGhlIGVu dmlyb25tZW50IHZhcmlhYmxlICVJR1RfQ09ORklHX1BBVEguCisgKiBBbiBleGFtcGxlIGNvbmZp Z3VyYXRpb24gZm9sbG93czoKKyAqCisgKiB8WzwhLS0gbGFuZ3VhZ2U9InBsYWluIiAtLT4KKyAq CSMgVGhlIGZvbGxvd2luZyBzZWN0aW9uIGlzIHVzZWQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEZXZp Y2UgVW5kZXIgVGVzdC4KKyAqCSMgSXQgaXMgbm90IG1hbmRhdG9yeSBhbmQgYWxsb3dzIG92ZXJy aWRpbmcgZGVmYXVsdCB2YWx1ZXMuCisgKglbRFVUXQorICoJU3VzcGVuZFJlc3VtZURlbGF5PTEw CisgKiBdfAorICoKKyAqIFNvbWUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBi ZSB1c2VkIGJ5IHNwZWNpZmljIHBhcnRzIG9mIElHVCwKKyAqIHN1Y2ggYXMgdGhvc2UgcmVsYXRl ZCB0byBDaGFtZWxpdW0gc3VwcG9ydC4KICAqLwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGV4aXRf aGFuZGxlcl9jb3VudDsKQEAgLTI3MSw2ICsyODksOCBAQCBzdGF0aWMgc3RydWN0IHsKIH0gbG9n X2J1ZmZlcjsKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgbG9nX2J1ZmZlcl9tdXRleCA9IFBUSFJF QURfTVVURVhfSU5JVElBTElaRVI7CiAKK0dLZXlGaWxlICppZ3Rfa2V5X2ZpbGU7CisKIGNvbnN0 IGNoYXIgKmlndF90ZXN0X25hbWUodm9pZCkKIHsKIAlyZXR1cm4gY29tbWFuZF9zdHI7CkBAIC01 OTMsNiArNjEzLDIwIEBAIHN0YXRpYyB2b2lkIG9vbV9hZGp1c3RfZm9yX2Rvb20odm9pZCkKIAog fQogCitzdGF0aWMgdm9pZCBjb25maWdfcGFyc2Uodm9pZCkKK3sKKwlHRXJyb3IgKmVycm9yID0g TlVMTDsKKwlpbnQgcmM7CisKKwlpZiAoIWlndF9rZXlfZmlsZSkKKwkJcmV0dXJuOworCisJcmMg PSBnX2tleV9maWxlX2dldF9pbnRlZ2VyKGlndF9rZXlfZmlsZSwgIkRVVCIsICJTdXNwZW5kUmVz dW1lRGVsYXkiLAorCQkJCSAgICAmZXJyb3IpOworCWlmIChyYyAhPSAwKQorCQlpZ3Rfc2V0X2F1 dG9yZXN1bWVfZGVsYXkocmMpOworfQorCiBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAqYXJn YywgY2hhciAqKmFyZ3YsCiAJCSAgICAgICBjb25zdCBjaGFyICpleHRyYV9zaG9ydF9vcHRzLAog CQkgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqZXh0cmFfbG9uZ19vcHRzLApAQCAtNjE2LDYg KzY1MCw5IEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoqYXJndiwK IAlpbnQgZXh0cmFfb3B0X2NvdW50OwogCWludCBhbGxfb3B0X2NvdW50OwogCWludCByZXQgPSAw OworCWNoYXIgKmtleV9maWxlX2xvYyA9IE5VTEw7CisJY2hhciAqa2V5X2ZpbGVfZW52ID0gTlVM TDsKKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKIAljb25zdCBjaGFyICplbnY7CiAKIAlpZiAoIWlz YXR0eShTVERPVVRfRklMRU5PKSB8fCBnZXRlbnYoIklHVF9QTEFJTl9PVVRQVVQiKSkKQEAgLTcz Nyw3ICs3NzQsMzEgQEAgc3RhdGljIGludCBjb21tb25faW5pdChpbnQgKmFyZ2MsIGNoYXIgKiph cmd2LAogCQl9CiAJfQogCisJa2V5X2ZpbGVfZW52ID0gZ2V0ZW52KCJJR1RfQ09ORklHX1BBVEgi KTsKKwlpZiAoa2V5X2ZpbGVfZW52KSB7CisJCWtleV9maWxlX2xvYyA9IGtleV9maWxlX2VudjsK Kwl9IGVsc2UgeworCQlrZXlfZmlsZV9sb2MgPSBtYWxsb2MoMTAwKTsKKwkJc25wcmludGYoa2V5 X2ZpbGVfbG9jLCAxMDAsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsKKwl9CisKKwlp Z3Rfa2V5X2ZpbGUgPSBnX2tleV9maWxlX25ldygpOworCXJldCA9IGdfa2V5X2ZpbGVfbG9hZF9m cm9tX2ZpbGUoaWd0X2tleV9maWxlLCBrZXlfZmlsZV9sb2MsCisJCQkJCUdfS0VZX0ZJTEVfTk9O RSwgJmVycm9yKTsKKwlpZiAoIXJldCkgeworCQlnX2tleV9maWxlX2ZyZWUoaWd0X2tleV9maWxl KTsKKwkJaWd0X2tleV9maWxlID0gTlVMTDsKKwkJcmV0ID0gLTE7CisKKwkJZ290byBvdXQ7CisJ fQorCisJY29uZmlnX3BhcnNlKCk7CisKIG91dDoKKwlpZiAoIWtleV9maWxlX2VudiAmJiBrZXlf ZmlsZV9sb2MpCisJCWZyZWUoa2V5X2ZpbGVfbG9jKTsKKwogCWZyZWUoc2hvcnRfb3B0cyk7CiAJ ZnJlZShjb21iaW5lZF9vcHRzKTsKIApAQCAtMTM0NSw2ICsxNDA2LDkgQEAgdm9pZCBpZ3RfZXhp dCh2b2lkKQogewogCWlndF9leGl0X2NhbGxlZCA9IHRydWU7CiAKKwlpZiAoaWd0X2tleV9maWxl KQorCQlnX2tleV9maWxlX2ZyZWUoaWd0X2tleV9maWxlKTsKKwogCWlmIChydW5fc2luZ2xlX3N1 YnRlc3QgJiYgIXJ1bl9zaW5nbGVfc3VidGVzdF9mb3VuZCkgewogCQlpZ3Rfd2FybigiVW5rbm93 biBzdWJ0ZXN0OiAlc1xuIiwgcnVuX3NpbmdsZV9zdWJ0ZXN0KTsKIAkJZXhpdChJR1RfRVhJVF9J TlZBTElEKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5oIGIvbGliL2lndF9jb3JlLmgKaW5k ZXggYTJlZDk3MjAuLjA3MzljYTgzIDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuaAorKysgYi9s aWIvaWd0X2NvcmUuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2lu Y2x1ZGUgPGdldG9wdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGdsaWIuaD4K IAogI2lmbmRlZiBJR1RfTE9HX0RPTUFJTgogI2RlZmluZSBJR1RfTE9HX0RPTUFJTiAoTlVMTCkK QEAgLTQ4LDYgKzQ5LDcgQEAKIAogZXh0ZXJuIGNvbnN0IGNoYXIqIF9faWd0X3Rlc3RfZGVzY3Jp cHRpb24gX19hdHRyaWJ1dGVfXygod2VhaykpOwogZXh0ZXJuIGJvb2wgX19pZ3RfcGxhaW5fb3V0 cHV0OworZXh0ZXJuIEdLZXlGaWxlICppZ3Rfa2V5X2ZpbGU7CiAKIAogLyoqCmRpZmYgLS1naXQg YS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IGIwNTEzNjRjLi5m OWQxMWU2YyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvTWFrZWZp bGUuYW0KQEAgLTcyLDkgKzcyLDkgQEAgQU1fQ0ZMQUdTID0gJChEUk1fQ0ZMQUdTKSAkKENXQVJO RkxBR1MpIC1Xbm8tdW51c2VkLXJlc3VsdCAkKERFQlVHX0NGTEFHUylcCiAJJChMSUJVTldJTkRf Q0ZMQUdTKSAkKFdFUlJPUl9DRkxBR1MpIFwKIAkkKE5VTEwpCiAKLUxEQUREID0gLi4vbGliL2xp YmludGVsX3Rvb2xzLmxhICQoR0xJQl9MSUJTKSAkKFhNTFJQQ19MSUJTKQorTERBREQgPSAuLi9s aWIvbGliaW50ZWxfdG9vbHMubGEgJChYTUxSUENfTElCUykKIAotQU1fQ0ZMQUdTICs9ICQoQ0FJ Uk9fQ0ZMQUdTKSAkKExJQlVERVZfQ0ZMQUdTKSAkKEdMSUJfQ0ZMQUdTKQorQU1fQ0ZMQUdTICs9 ICQoQ0FJUk9fQ0ZMQUdTKSAkKExJQlVERVZfQ0ZMQUdTKQogQU1fTERGTEFHUyA9IC1XbCwtLWFz LW5lZWRlZAogCiBkcm1faW1wb3J0X2V4cG9ydF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJF QURfQ0ZMQUdTKQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hhbWVsaXVtLmMgYi90ZXN0cy9jaGFtZWxp dW0uYwppbmRleCA0MWUwZTg5Yi4uODhiMGE5NGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoYW1lbGl1 bS5jCisrKyBiL3Rlc3RzL2NoYW1lbGl1bS5jCkBAIC00Miw3ICs0Miw2IEBAIHR5cGVkZWYgc3Ry dWN0IHsKIH0gZGF0YV90OwogCiAjZGVmaW5lIEhPVFBMVUdfVElNRU9VVCAyMCAvKiBzZWNvbmRz ICovCi0jZGVmaW5lIFNVU1BFTkRfUkVTVU1FX0RFTEFZIDIwIC8qIHNlY29uZHMgKi8KIAogI2Rl ZmluZSBIUERfU1RPUk1fUFVMU0VfSU5URVJWQUxfRFAgMTAwIC8qIG1zICovCiAjZGVmaW5lIEhQ RF9TVE9STV9QVUxTRV9JTlRFUlZBTF9IRE1JIDIwMCAvKiBtcyAqLwpAQCAtMjI1LDIxICsyMjQs MjEgQEAgdHJ5X3N1c3BlbmRfcmVzdW1lX2hwZChkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxp dW1fcG9ydCAqcG9ydCwKIAkJICAgICAgIGVudW0gaWd0X3N1c3BlbmRfc3RhdGUgc3RhdGUsIGVu dW0gaWd0X3N1c3BlbmRfdGVzdCB0ZXN0LAogCQkgICAgICAgc3RydWN0IHVkZXZfbW9uaXRvciAq bW9uLCBib29sIGNvbm5lY3RlZCkKIHsKKwlpbnQgZGVsYXk7CiAJaW50IHA7CiAKLQlpZ3Rfc2V0 X2F1dG9yZXN1bWVfZGVsYXkoU1VTUEVORF9SRVNVTUVfREVMQVkpOwogCWlndF9mbHVzaF9ob3Rw bHVncyhtb24pOwogCisJZGVsYXkgPSBpZ3RfZ2V0X2F1dG9yZXN1bWVfZGVsYXkoc3RhdGUpICog MTAwMCAvIDI7CisKIAlpZiAocG9ydCkgewotCQljaGFtZWxpdW1fc2NoZWR1bGVfaHBkX3RvZ2ds ZShkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCi0JCQkJCSAgICAgIFNVU1BFTkRfUkVTVU1FX0RFTEFZ ICogMTAwMCAvIDIsCisJCWNoYW1lbGl1bV9zY2hlZHVsZV9ocGRfdG9nZ2xlKGRhdGEtPmNoYW1l bGl1bSwgcG9ydCwgZGVsYXksCiAJCQkJCSAgICAgICFjb25uZWN0ZWQpOwogCX0gZWxzZSB7CiAJ CWZvciAocCA9IDA7IHAgPCBkYXRhLT5wb3J0X2NvdW50OyBwKyspIHsKIAkJCXBvcnQgPSBkYXRh LT5wb3J0c1twXTsKIAkJCWNoYW1lbGl1bV9zY2hlZHVsZV9ocGRfdG9nZ2xlKGRhdGEtPmNoYW1l bGl1bSwgcG9ydCwKLQkJCQkJCSAgICAgIFNVU1BFTkRfUkVTVU1FX0RFTEFZICogMTAwMCAvIDIs Ci0JCQkJCQkgICAgICAhY29ubmVjdGVkKTsKKwkJCQkJCSAgICAgIGRlbGF5LCAhY29ubmVjdGVk KTsKIAkJfQogCiAJCXBvcnQgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0g Yi90b29scy9NYWtlZmlsZS5hbQppbmRleCAxOGE2N2VmYi4uYzQwZTc1YzcgMTAwNjQ0Ci0tLSBh L3Rvb2xzL01ha2VmaWxlLmFtCisrKyBiL3Rvb2xzL01ha2VmaWxlLmFtCkBAIC05LDggKzksOCBA QCBlbmRpZgogCiBpZiBIQVZFX1VERVYKIGJpbl9QUk9HUkFNUyArPSBpbnRlbF9kcF9jb21wbGlh bmNlCi1pbnRlbF9kcF9jb21wbGlhbmNlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKEdMSUJfQ0ZM QUdTKQotaW50ZWxfZHBfY29tcGxpYW5jZV9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGli aW50ZWxfdG9vbHMubGEgJChHTElCX0xJQlMpCitpbnRlbF9kcF9jb21wbGlhbmNlX0NGTEFHUyA9 ICQoQU1fQ0ZMQUdTKQoraW50ZWxfZHBfY29tcGxpYW5jZV9MREFERCA9ICQodG9wX2J1aWxkZGly KS9saWIvbGliaW50ZWxfdG9vbHMubGEKIGVuZGlmCiAKIFNVQkRJUlMgPSBudWxsX3N0YXRlX2dl biByZWdpc3RlcnMKLS0gCjIuMTMuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==