From: Rob Clark Subject: [RFCv0 4/8] mesa/st: add support for NIR as possible driver IR Date: Mon, 19 Oct 2015 15:47:57 -0400 Message-ID: <1445284081-29532-5-git-send-email-robdclark@gmail.com> References: <1445284081-29532-1-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f44.google.com (mail-qg0-f44.google.com [209.85.192.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id B84E36EABE for ; Mon, 19 Oct 2015 12:48:14 -0700 (PDT) Received: by qgad10 with SMTP id d10so74517092qga.3 for ; Mon, 19 Oct 2015 12:48:14 -0700 (PDT) In-Reply-To: <1445284081-29532-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: Jason Ekstrand List-Id: dri-devel@lists.freedesktop.org LS0tCiBzcmMvbWVzYS9zdGF0ZV90cmFja2VyL3N0X2dsc2xfdG9fdGdzaS5jcHAgfCAyMjMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9tZXNhL3N0YXRlX3RyYWNrZXIvc3RfcHJv Z3JhbS5jICAgICAgICB8ICA0MyArKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjYwIGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL21lc2Evc3RhdGVfdHJhY2tl ci9zdF9nbHNsX3RvX3Rnc2kuY3BwIGIvc3JjL21lc2Evc3RhdGVfdHJhY2tlci9zdF9nbHNsX3Rv X3Rnc2kuY3BwCmluZGV4IDA2ZjUxMGQuLjQ5ZjQ5NmYgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNhL3N0 YXRlX3RyYWNrZXIvc3RfZ2xzbF90b190Z3NpLmNwcAorKysgYi9zcmMvbWVzYS9zdGF0ZV90cmFj a2VyL3N0X2dsc2xfdG9fdGdzaS5jcHAKQEAgLTM1LDYgKzM1LDkgQEAKICNpbmNsdWRlICJnbHNs X3BhcnNlcl9leHRyYXMuaCIKICNpbmNsdWRlICJpcl9vcHRpbWl6YXRpb24uaCIKIAorI2luY2x1 ZGUgIm5pci5oIgorI2luY2x1ZGUgImdsc2xfdG9fbmlyLmgiCisKICNpbmNsdWRlICJtYWluL2Vy cm9ycy5oIgogI2luY2x1ZGUgIm1haW4vc2hhZGVyb2JqLmgiCiAjaW5jbHVkZSAibWFpbi91bmlm b3Jtcy5oIgpAQCAtNTQ4Niw5ICs1NDg5LDkgQEAgb3V0OgogICogZ2VuZXJhdGluZyBNZXNhIElS LgogICovCiBzdGF0aWMgc3RydWN0IGdsX3Byb2dyYW0gKgotZ2V0X21lc2FfcHJvZ3JhbShzdHJ1 Y3QgZ2xfY29udGV4dCAqY3R4LAotICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfc2hhZGVyX3By b2dyYW0gKnNoYWRlcl9wcm9ncmFtLAotICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfc2hhZGVy ICpzaGFkZXIpCitnZXRfbWVzYV9wcm9ncmFtX3Rnc2koc3RydWN0IGdsX2NvbnRleHQgKmN0eCwK KyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfc2hhZGVyX3Byb2dyYW0gKnNoYWRlcl9w cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF9zaGFkZXIgKnNoYWRlcikK IHsKICAgIGdsc2xfdG9fdGdzaV92aXNpdG9yKiB2OwogICAgc3RydWN0IGdsX3Byb2dyYW0gKnBy b2c7CkBAIC01NjgwLDYgKzU2ODMsMjIwIEBAIGdldF9tZXNhX3Byb2dyYW0oc3RydWN0IGdsX2Nv bnRleHQgKmN0eCwKICAgIHJldHVybiBwcm9nOwogfQogCisvKiBUT0RPIGR1cCdkIGZyb20gYnJ3 X3ZlYzRfdmlzdG9yLmNwcC4uICB3aGF0IHNob3VsZCB3ZSBkbz8gKi8KK3N0YXRpYyBpbnQKK3R5 cGVfc2l6ZV92ZWM0KGNvbnN0IHN0cnVjdCBnbHNsX3R5cGUgKnR5cGUpCit7CisgICB1bnNpZ25l ZCBpbnQgaTsKKyAgIGludCBzaXplOworCisgICBzd2l0Y2ggKHR5cGUtPmJhc2VfdHlwZSkgewor ICAgY2FzZSBHTFNMX1RZUEVfVUlOVDoKKyAgIGNhc2UgR0xTTF9UWVBFX0lOVDoKKyAgIGNhc2Ug R0xTTF9UWVBFX0ZMT0FUOgorICAgY2FzZSBHTFNMX1RZUEVfQk9PTDoKKyAgICAgIGlmICh0eXBl LT5pc19tYXRyaXgoKSkgeworCSByZXR1cm4gdHlwZS0+bWF0cml4X2NvbHVtbnM7CisgICAgICB9 IGVsc2UgeworCSAvKiBSZWdhcmRsZXNzIG9mIHNpemUgb2YgdmVjdG9yLCBpdCBnZXRzIGEgdmVj NC4gVGhpcyBpcyBiYWQKKwkgICogcGFja2luZyBmb3IgdGhpbmdzIGxpa2UgZmxvYXRzLCBidXQg b3RoZXJ3aXNlIGFycmF5cyBiZWNvbWUgYQorCSAgKiBtZXNzLiAgSG9wZWZ1bGx5IGEgbGF0ZXIg cGFzcyBvdmVyIHRoZSBjb2RlIGNhbiBwYWNrIHNjYWxhcnMKKwkgICogZG93biBpZiBhcHByb3By aWF0ZS4KKwkgICovCisJIHJldHVybiAxOworICAgICAgfQorICAgY2FzZSBHTFNMX1RZUEVfQVJS QVk6CisgICAgICBhc3NlcnQodHlwZS0+bGVuZ3RoID4gMCk7CisgICAgICByZXR1cm4gdHlwZV9z aXplX3ZlYzQodHlwZS0+ZmllbGRzLmFycmF5KSAqIHR5cGUtPmxlbmd0aDsKKyAgIGNhc2UgR0xT TF9UWVBFX1NUUlVDVDoKKyAgICAgIHNpemUgPSAwOworICAgICAgZm9yIChpID0gMDsgaSA8IHR5 cGUtPmxlbmd0aDsgaSsrKSB7CisJIHNpemUgKz0gdHlwZV9zaXplX3ZlYzQodHlwZS0+ZmllbGRz LnN0cnVjdHVyZVtpXS50eXBlKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBzaXplOworICAgY2Fz ZSBHTFNMX1RZUEVfU1VCUk9VVElORToKKyAgICAgIHJldHVybiAxOworCisgICBjYXNlIEdMU0xf VFlQRV9TQU1QTEVSOgorICAgICAgLyogU2FtcGxlcnMgdGFrZSB1cCBubyByZWdpc3RlciBzcGFj ZSwgc2luY2UgdGhleSdyZSBiYWtlZCBpbiBhdAorICAgICAgICogbGluayB0aW1lLgorICAgICAg ICovCisgICAgICByZXR1cm4gMDsKKyAgIGNhc2UgR0xTTF9UWVBFX0FUT01JQ19VSU5UOgorICAg ICAgcmV0dXJuIDA7CisgICBjYXNlIEdMU0xfVFlQRV9JTUFHRToKKy8vICAgICAgcmV0dXJuIERJ Vl9ST1VORF9VUChCUldfSU1BR0VfUEFSQU1fU0laRSwgNCk7CisgICBjYXNlIEdMU0xfVFlQRV9W T0lEOgorICAgY2FzZSBHTFNMX1RZUEVfRE9VQkxFOgorICAgY2FzZSBHTFNMX1RZUEVfRVJST1I6 CisgICBjYXNlIEdMU0xfVFlQRV9JTlRFUkZBQ0U6CisgICAgICB1bnJlYWNoYWJsZSgibm90IHJl YWNoZWQiKTsKKyAgIH0KKworICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ2xfcHJv Z3JhbSAqCitnZXRfbWVzYV9wcm9ncmFtX25pcihzdHJ1Y3QgZ2xfY29udGV4dCAqY3R4LAorICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3NoYWRlcl9wcm9ncmFtICpzaGFkZXJfcHJvZ3Jh bSwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF9zaGFkZXIgKnNoYWRlcikKK3sKKyAg IHN0cnVjdCBnbF9wcm9ncmFtICpwcm9nOworICAgR0xlbnVtIHRhcmdldCA9IF9tZXNhX3NoYWRl cl9zdGFnZV90b19wcm9ncmFtKHNoYWRlci0+U3RhZ2UpOworICAgc3RydWN0IGdsX3NoYWRlcl9j b21waWxlcl9vcHRpb25zICpvcHRpb25zID0KKyAgICAgICAgICZjdHgtPkNvbnN0LlNoYWRlckNv bXBpbGVyT3B0aW9uc1tfbWVzYV9zaGFkZXJfZW51bV90b19zaGFkZXJfc3RhZ2Uoc2hhZGVyLT5U eXBlKV07CisgICBzdHJ1Y3QgcGlwZV9zY3JlZW4gKnBzY3JlZW4gPSBjdHgtPnN0LT5waXBlLT5z Y3JlZW47CisgICB1bnNpZ25lZCBwdGFyZ2V0ID0gc3Rfc2hhZGVyX3N0YWdlX3RvX3B0YXJnZXQo c2hhZGVyLT5TdGFnZSk7CisgICBuaXJfc2hhZGVyX2NvbXBpbGVyX29wdGlvbnMgbmlyX29wdGlv bnMgPSB7MH07CisgICBuaXJfc2hhZGVyICpuaXI7CisKKyAgIC8qIFRPRE8gbWF5YmUgb3B0aW9u cyBtYXJrZWQgd2l0aCAnWFhYJyBzaG91bGQgYmUgUElQRV9TSEFERVJfQ0FQX3gncyAqLworICAg bmlyX29wdGlvbnMubG93ZXJfZmZtYSA9CisgICAgICAhcHNjcmVlbi0+Z2V0X3NoYWRlcl9wYXJh bShwc2NyZWVuLCBwdGFyZ2V0LCBQSVBFX1NIQURFUl9DQVBfVEdTSV9GTUFfU1VQUE9SVEVEKTsK KyAgIG5pcl9vcHRpb25zLmxvd2VyX2ZscnAgPSB0cnVlOyAgICAgIC8vIFhYWAorICAgbmlyX29w dGlvbnMubG93ZXJfZnBvdyA9IG9wdGlvbnMtPkVtaXROb1BvdzsKKyAgIG5pcl9vcHRpb25zLmxv d2VyX2ZzYXQgPSBvcHRpb25zLT5FbWl0Tm9TYXQ7CisgICBuaXJfb3B0aW9ucy5sb3dlcl9mc3Fy dCA9CisgICAgICAhcHNjcmVlbi0+Z2V0X3NoYWRlcl9wYXJhbShwc2NyZWVuLCBwdGFyZ2V0LCBQ SVBFX1NIQURFUl9DQVBfVEdTSV9TUVJUX1NVUFBPUlRFRCk7CisgICBuaXJfb3B0aW9ucy5sb3dl cl9uZWdhdGUgPSBmYWxzZTsgICAvLyBYWFgKKyAgIG5pcl9vcHRpb25zLmxvd2VyX3N1YiA9IGZh bHNlOyAgICAgIC8vIFhYWAorICAgbmlyX29wdGlvbnMubG93ZXJfc2NtcCA9IHRydWU7ICAgICAg Ly8gWFhYCisgICBuaXJfb3B0aW9ucy5mZG90X3JlcGxpY2F0ZXMgPSBmYWxzZTsvLyBYWFgKKyAg IG5pcl9vcHRpb25zLmxvd2VyX2ZmcmFjdCA9IHRydWU7ICAgIC8vIFhYWAorICAgbmlyX29wdGlv bnMubmF0aXZlX2ludGVnZXJzID0gY3R4LT5Db25zdC5OYXRpdmVJbnRlZ2VyczsKKworICAgdmFs aWRhdGVfaXJfdHJlZShzaGFkZXItPmlyKTsKKworICAgcHJvZyA9IGN0eC0+RHJpdmVyLk5ld1By b2dyYW0oY3R4LCB0YXJnZXQsIHNoYWRlcl9wcm9ncmFtLT5OYW1lKTsKKyAgIGlmICghcHJvZykK KyAgICAgIHJldHVybiBOVUxMOworICAgcHJvZy0+UGFyYW1ldGVycyA9IF9tZXNhX25ld19wYXJh bWV0ZXJfbGlzdCgpOworCisgICBfbWVzYV9jb3B5X2xpbmtlZF9wcm9ncmFtX2RhdGEoc2hhZGVy LT5TdGFnZSwgc2hhZGVyX3Byb2dyYW0sIHByb2cpOworICAgX21lc2FfZ2VuZXJhdGVfcGFyYW1l dGVyc19saXN0X2Zvcl91bmlmb3JtcyhzaGFkZXJfcHJvZ3JhbSwgc2hhZGVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9nLT5QYXJhbWV0ZXJzKTsK KworLy8gICAvKiBSZW1vdmUgcmVhZHMgZnJvbSBvdXRwdXQgcmVnaXN0ZXJzLiAqLworLy8gICBs b3dlcl9vdXRwdXRfcmVhZHMoc2hhZGVyLT5TdGFnZSwgc2hhZGVyLT5pcik7CisKKyAgIC8qIE1h a2UgYSBwYXNzIG92ZXIgdGhlIElSIHRvIGFkZCBzdGF0ZSByZWZlcmVuY2VzIGZvciBhbnkgYnVp bHQtaW4KKyAgICAqIHVuaWZvcm1zIHRoYXQgYXJlIHVzZWQuICBUaGlzIGhhcyB0byBiZSBkb25l IG5vdyAoZHVyaW5nIGxpbmtpbmcpLgorICAgICogQ29kZSBnZW5lcmF0aW9uIGRvZXNuJ3QgaGFw cGVuIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoaXMgc2hhZGVyIGlzCisgICAgKiB1c2VkIGZvciBy ZW5kZXJpbmcuICBXYWl0aW5nIHVudGlsIHRoZW4gdG8gZ2VuZXJhdGUgdGhlIHBhcmFtZXRlcnMg aXMKKyAgICAqIHRvbyBsYXRlLiAgQXQgdGhhdCBwb2ludCwgdGhlIHZhbHVlcyBmb3IgdGhlIGJ1 aWx0LWluIHVuaWZvcm1zIHdvbid0CisgICAgKiBnZXQgc2VudCB0byB0aGUgc2hhZGVyLgorICAg ICovCisgICBmb3JlYWNoX2luX2xpc3QoaXJfaW5zdHJ1Y3Rpb24sIG5vZGUsIHNoYWRlci0+aXIp IHsKKyAgICAgIGlyX3ZhcmlhYmxlICp2YXIgPSBub2RlLT5hc192YXJpYWJsZSgpOworCisgICAg ICBpZiAoKHZhciA9PSBOVUxMKSB8fCAodmFyLT5kYXRhLm1vZGUgIT0gaXJfdmFyX3VuaWZvcm0p IHx8CisgICAgICAgICAgKHN0cm5jbXAodmFyLT5uYW1lLCAiZ2xfIiwgMykgIT0gMCkpCisgICAg ICAgICBjb250aW51ZTsKKworICAgICAgY29uc3QgaXJfc3RhdGVfc2xvdCAqY29uc3Qgc2xvdHMg PSB2YXItPmdldF9zdGF0ZV9zbG90cygpOworICAgICAgYXNzZXJ0KHNsb3RzICE9IE5VTEwpOwor CisgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhci0+Z2V0X251bV9zdGF0ZV9z bG90cygpOyBpKyspIHsKKyAgICAgICAgIF9tZXNhX2FkZF9zdGF0ZV9yZWZlcmVuY2UocHJvZy0+ UGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsX3N0YXRl X2luZGV4ICopIHNsb3RzW2ldLnRva2Vucyk7CisgICAgICB9CisgICB9CisKKyAgIGlmIChjdHgt Pl9TaGFkZXItPkZsYWdzICYgR0xTTF9EVU1QKSB7CisgICAgICBfbWVzYV9sb2coIlxuIik7Cisg ICAgICBfbWVzYV9sb2coIkdMU0wgSVIgZm9yIGxpbmtlZCAlcyBwcm9ncmFtICVkOlxuIiwKKyAg ICAgICAgICAgICBfbWVzYV9zaGFkZXJfc3RhZ2VfdG9fc3RyaW5nKHNoYWRlci0+U3RhZ2UpLAor ICAgICAgICAgICAgIHNoYWRlcl9wcm9ncmFtLT5OYW1lKTsKKyAgICAgIF9tZXNhX3ByaW50X2ly KF9tZXNhX2dldF9sb2dfZmlsZSgpLCBzaGFkZXItPmlyLCBOVUxMKTsKKyAgICAgIF9tZXNhX2xv ZygiXG5cbiIpOworICAgfQorCisgICBwcm9nLT5JbnN0cnVjdGlvbnMgPSBOVUxMOworICAgcHJv Zy0+TnVtSW5zdHJ1Y3Rpb25zID0gMDsKKworICAgZG9fc2V0X3Byb2dyYW1faW5vdXRzKHNoYWRl ci0+aXIsIHByb2csIHNoYWRlci0+U3RhZ2UpOworCisgICBwcm9nLT5TYW1wbGVyc1VzZWQgPSBz aGFkZXItPmFjdGl2ZV9zYW1wbGVyczsKKyAgIHByb2ctPlNoYWRvd1NhbXBsZXJzID0gc2hhZGVy LT5zaGFkb3dfc2FtcGxlcnM7CisgICBfbWVzYV91cGRhdGVfc2hhZGVyX3RleHR1cmVzX3VzZWQo c2hhZGVyX3Byb2dyYW0sIHByb2cpOworCisgICBfbWVzYV9yZWZlcmVuY2VfcHJvZ3JhbShjdHgs ICZzaGFkZXItPlByb2dyYW0sIHByb2cpOworCisgICBuaXIgPSBnbHNsX3RvX25pcihzaGFkZXJf cHJvZ3JhbSwgc2hhZGVyLT5TdGFnZSwgJm5pcl9vcHRpb25zKTsKKyAgIHByb2ctPm5pciA9IG5p cjsKKworICAgbmlyX3ZhbGlkYXRlX3NoYWRlcihuaXIpOworCisgICBpZiAoc2hhZGVyLT5TdGFn ZSA9PSBNRVNBX1NIQURFUl9HRU9NRVRSWSkgeworICAgICAgbmlyX2xvd2VyX2dzX2ludHJpbnNp Y3MobmlyKTsKKyAgICAgIG5pcl92YWxpZGF0ZV9zaGFkZXIobmlyKTsKKyAgIH0KKworICAgbmly X3ByaW50X3NoYWRlcihuaXIsIF9tZXNhX2dldF9sb2dfZmlsZSgpKTsKKworICAgbmlyX2xvd2Vy X2dsb2JhbF92YXJzX3RvX2xvY2FsKG5pcik7CisgICBuaXJfdmFsaWRhdGVfc2hhZGVyKG5pcik7 CisKKyAgIG5pcl9sb3dlcl92YXJfY29waWVzKG5pcik7CisgICBuaXJfdmFsaWRhdGVfc2hhZGVy KG5pcik7CisKKyAgIG5pcl9hc3NpZ25fdmFyX2xvY2F0aW9ucygmbmlyLT5pbnB1dHMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm5pci0+bnVtX2lucHV0cywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlX3NpemVfdmVjNCk7CisgICBuaXJfYXNzaWduX3Zhcl9sb2NhdGlv bnMoJm5pci0+b3V0cHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmlyLT5udW1f b3V0cHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX3NpemVfdmVjNCk7Cisg ICBuaXJfYXNzaWduX3Zhcl9sb2NhdGlvbnMoJm5pci0+dW5pZm9ybXMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm5pci0+bnVtX3VuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGVfc2l6ZV92ZWM0KTsKKworICAgbmlyX2xvd2VyX2lvKG5pciwgbmlyX3Zhcl9h bGwsIHR5cGVfc2l6ZV92ZWM0KTsKKyAgIG5pcl92YWxpZGF0ZV9zaGFkZXIobmlyKTsKKworCisg ICAvLyBYWFggZG8gd2UgbmVlZCBhbnl0aGluZyBlbHNlIGZyb20gYnJ3X2NyZWF0ZV9uaXIoKS4u IGFuZCB3aGF0CisgICAvLyBpcyBiZXN0IHdheSB0byBzcGxpdCB1cCB3aGljaCB0aGluZ3Mgc2hv dWxkIGJlIGhlcmUgdnMgZHJpdmVyPworICAgLy8gY3VycmVudGx5IGp1c3QgdHJ5aW5nIHRvIG1h a2UgdGhlIHJlc3VsdCBoZXJlIHNpbWlsYXIgdG8gd2hhdAorICAgLy8gd2UgZ2V0IGZyb20gdGdz aV90b19uaXIoKS4uIHNvIGxvd2VyX2lvLCBldGMuLgorCisgICAvLyBYWFggbmV3IGZsYWcsIHBy b2JhYmx5PworICAgaWYgKGN0eC0+X1NoYWRlci0+RmxhZ3MgJiBHTFNMX0RVTVApIHsKKyAgICAg IF9tZXNhX2xvZygiXG4iKTsKKyAgICAgIF9tZXNhX2xvZygiTklSIElSIGZvciBsaW5rZWQgJXMg cHJvZ3JhbSAlZDpcbiIsCisgICAgICAgICAgICAgX21lc2Ffc2hhZGVyX3N0YWdlX3RvX3N0cmlu ZyhzaGFkZXItPlN0YWdlKSwKKyAgICAgICAgICAgICBzaGFkZXJfcHJvZ3JhbS0+TmFtZSk7Cisg ICAgICBuaXJfcHJpbnRfc2hhZGVyKG5pciwgX21lc2FfZ2V0X2xvZ19maWxlKCkpOworICAgICAg X21lc2FfbG9nKCJcblxuIik7CisgICB9CisKKyAgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUgbGFz dC4gIEFueSBvcGVyYXRpb24gdGhlIGNhbiBjYXVzZQorICAgICogcHJvZy0+UGFyYW1ldGVyVmFs dWVzIHRvIGdldCByZWFsbG9jYXRlZCAoZS5nLiwgYW55dGhpbmcgdGhhdCBhZGRzIGEKKyAgICAq IHByb2dyYW0gY29uc3RhbnQpIGhhcyB0byBoYXBwZW4gYmVmb3JlIGNyZWF0aW5nIHRoaXMgbGlu a2FnZS4KKyAgICAqLworICAgX21lc2FfYXNzb2NpYXRlX3VuaWZvcm1fc3RvcmFnZShjdHgsIHNo YWRlcl9wcm9ncmFtLCBwcm9nLT5QYXJhbWV0ZXJzKTsKKworICAgcmV0dXJuIHByb2c7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgZ2xfcHJvZ3JhbSAqCitnZXRfbWVzYV9wcm9ncmFtKHN0cnVjdCBnbF9j b250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF9zaGFkZXJfcHJvZ3JhbSAq c2hhZGVyX3Byb2dyYW0sCisgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF9zaGFkZXIgKnNoYWRl cikKK3sKKyAgIHN0cnVjdCBwaXBlX3NjcmVlbiAqcHNjcmVlbiA9IGN0eC0+c3QtPnBpcGUtPnNj cmVlbjsKKyAgIHVuc2lnbmVkIHB0YXJnZXQgPSBzdF9zaGFkZXJfc3RhZ2VfdG9fcHRhcmdldChz aGFkZXItPlN0YWdlKTsKKyAgIGVudW0gcGlwZV9zaGFkZXJfaXIgcHJlZmVycmVkX2lyID0gKGVu dW0gcGlwZV9zaGFkZXJfaXIpCisgICAgICBwc2NyZWVuLT5nZXRfc2hhZGVyX3BhcmFtKHBzY3Jl ZW4sIHB0YXJnZXQsIFBJUEVfU0hBREVSX0NBUF9QUkVGRVJSRURfSVIpOworICAgLyogVE9ETzog b25seSBkbyB0aGlzIGZvciBWRVJURVggc3RhZ2UgZm9yIG5vdzogKi8KKyAgIGlmICgocHJlZmVy cmVkX2lyID09IFBJUEVfU0hBREVSX0lSX05JUikgJiYKKyAgICAgICAoc2hhZGVyLT5UeXBlID09 IEdMX1ZFUlRFWF9TSEFERVIpKSB7CisgICAgICByZXR1cm4gZ2V0X21lc2FfcHJvZ3JhbV9uaXIo Y3R4LCBzaGFkZXJfcHJvZ3JhbSwgc2hhZGVyKTsKKyAgIH0gZWxzZSB7CisgICAgICByZXR1cm4g Z2V0X21lc2FfcHJvZ3JhbV90Z3NpKGN0eCwgc2hhZGVyX3Byb2dyYW0sIHNoYWRlcik7CisgICB9 Cit9CisKKwogZXh0ZXJuICJDIiB7CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvbWVz YS9zdGF0ZV90cmFja2VyL3N0X3Byb2dyYW0uYyBiL3NyYy9tZXNhL3N0YXRlX3RyYWNrZXIvc3Rf cHJvZ3JhbS5jCmluZGV4IDZhNjliYTcuLjM2MTcxNjAgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNhL3N0 YXRlX3RyYWNrZXIvc3RfcHJvZ3JhbS5jCisrKyBiL3NyYy9tZXNhL3N0YXRlX3RyYWNrZXIvc3Rf cHJvZ3JhbS5jCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAicHJvZ3JhbS9wcm9nX3ByaW50 LmgiCiAjaW5jbHVkZSAicHJvZ3JhbS9wcm9ncmFtb3B0LmgiCiAKKyNpbmNsdWRlICJuaXIuaCIK KwogI2luY2x1ZGUgInBpcGUvcF9jb250ZXh0LmgiCiAjaW5jbHVkZSAicGlwZS9wX2RlZmluZXMu aCIKICNpbmNsdWRlICJwaXBlL3Bfc2hhZGVyX3Rva2Vucy5oIgpAQCAtNzAsOCArNzIsMTMgQEAg ZGVsZXRlX3ZwX3ZhcmlhbnQoc3RydWN0IHN0X2NvbnRleHQgKnN0LCBzdHJ1Y3Qgc3RfdnBfdmFy aWFudCAqdnB2KQogICAgaWYgKHZwdi0+ZHJhd19zaGFkZXIpCiAgICAgICBkcmF3X2RlbGV0ZV92 ZXJ0ZXhfc2hhZGVyKCBzdC0+ZHJhdywgdnB2LT5kcmF3X3NoYWRlciApOwogICAgICAgCi0gICBp ZiAodnB2LT50Z3NpLnRva2VucykKLSAgICAgIHVyZWdfZnJlZV90b2tlbnModnB2LT50Z3NpLnRv a2Vucyk7CisgICBpZiAodnB2LT50Z3NpLmlyID09IFBJUEVfU0hBREVSX0lSX05JUikgeworICAg ICAgaWYgKHZwdi0+dGdzaS5uaXIpCisgICAgICAgICByYWxsb2NfZnJlZSh2cHYtPnRnc2kubmly KTsKKyAgIH0gZWxzZSB7CisgICAgICBpZiAodnB2LT50Z3NpLnRva2VucykKKyAgICAgICAgIHVy ZWdfZnJlZV90b2tlbnModnB2LT50Z3NpLnRva2Vucyk7CisgICB9CiAgICAgICAKICAgIGZyZWUo IHZwdiApOwogfQpAQCAtMjcwLDYgKzI3NywyMCBAQCBzdF90cmFuc2xhdGVfdmVydGV4X3Byb2dy YW0oc3RydWN0IHN0X2NvbnRleHQgKnN0LAogCiAgICBzdHZwLT5udW1faW5wdXRzID0gMDsKIAor ICAgaWYgKHN0dnAtPkJhc2UuQmFzZS5uaXIpIHsKKyAgICAgIC8qIFRPRE8gc2hvdWxkIHdlIGJl IGRvaW5nIGdsc2xfdG9fbmlyKCkgaGVyZSBpbnN0ZWFkIG9mIGluCisgICAgICAgKiBnZXRfbWVz YV9wcm9ncmFtX25pcigpPworICAgICAgICoKKyAgICAgICAqIE5PVEUgZ2xzbF90b19uaXIoKSBw YXRoIGRvZXNuJ3QgYXBwbHkgZm9yIEdMXypfUFJPR1JBTV9BUkIKKyAgICAgICAqIHNvIEkgKnRo aW5rKiB0aGF0IHNpbXBsaWZpZXMgc29tZSB0aGluZ3MuLgorICAgICAgICovCisgICAgICBuaXJf c2hhZGVyICpuaXIgPSBzdHZwLT5CYXNlLkJhc2UubmlyOworICAgICAgc3R2cC0+dGdzaS5pciA9 IFBJUEVfU0hBREVSX0lSX05JUjsKKyAgICAgIHN0dnAtPnRnc2kubmlyID0gbmlyOworICAgICAg c3R2cC0+bnVtX2lucHV0cyA9IG5pci0+bnVtX2lucHV0czsKKyAgICAgIHJldHVybiB0cnVlOwor ICAgfQorCiAgICBpZiAoc3R2cC0+QmFzZS5Jc1Bvc2l0aW9uSW52YXJpYW50KQogICAgICAgX21l c2FfaW5zZXJ0X212cF9jb2RlKHN0LT5jdHgsICZzdHZwLT5CYXNlKTsKIApAQCAtNDY2LDEwICs0 ODcsMjYgQEAgc3RfY3JlYXRlX3ZwX3ZhcmlhbnQoc3RydWN0IHN0X2NvbnRleHQgKnN0LAogICAg c3RydWN0IHBpcGVfY29udGV4dCAqcGlwZSA9IHN0LT5waXBlOwogCiAgICB2cHYtPmtleSA9ICpr ZXk7Ci0gICB2cHYtPnRnc2kudG9rZW5zID0gdGdzaV9kdXBfdG9rZW5zKHN0dnAtPnRnc2kudG9r ZW5zKTsKICAgIHZwdi0+dGdzaS5zdHJlYW1fb3V0cHV0ID0gc3R2cC0+dGdzaS5zdHJlYW1fb3V0 cHV0OwogICAgdnB2LT5udW1faW5wdXRzID0gc3R2cC0+bnVtX2lucHV0czsKIAorICAgaWYgKHN0 dnAtPnRnc2kuaXIgPT0gUElQRV9TSEFERVJfSVJfTklSKSB7CisgICAgICB2cHYtPnRnc2kuaXIg PSBQSVBFX1NIQURFUl9JUl9OSVI7CisgICAgICAvKiBUT0RPLCB3ZSBuZWVkIG5pcl9jbG9uZSgp IGhlcmUgZm9yIGRlYWxpbmcgdy8gdmFyaWFudHMKKyAgICAgICAqIHRoYXQgYXJlIG1haW50YWlu ZWQgYXQgdGhlIG1lc2Etc3QgbGF5ZXIuICAoT3RvaCwgdGhlCisgICAgICAgKiBwaXBlLWRyaXZl cnMgYWxyZWFkeSBtYWludGFpbiB0aGVpciBvd24gdmFyaWFudHMsIGl0CisgICAgICAgKiBtaWdo dCBiZSBuaWNlciB0byBqdXN0IGV4cG9zZSB0aGUgdmFyaWFudC1rZXkgdG8gdGhlCisgICAgICAg KiBkcml2ZXIgYW5kIGxldCBpdCBkZWNpZGUgd2hhdCB0byBsb3dlciwgc2luY2UgaXQgaXMKKyAg ICAgICAqIGRvaW5nIHRoYXQgYWxyZWFkeSBmb3Igb3RoZXIgdGhpbmdzLi4pCisgICAgICAgKi8K KyAgICAgIHZwdi0+dGdzaS5uaXIgPSBzdHZwLT50Z3NpLm5pcjsKKworICAgICAgdnB2LT5kcml2 ZXJfc2hhZGVyID0gcGlwZS0+Y3JlYXRlX3ZzX3N0YXRlKHBpcGUsICZ2cHYtPnRnc2kpOworICAg ICAgcmV0dXJuIHZwdjsKKyAgIH0KKworICAgdnB2LT50Z3NpLnRva2VucyA9IHRnc2lfZHVwX3Rv a2VucyhzdHZwLT50Z3NpLnRva2Vucyk7CisKICAgIC8qIEVtdWxhdGUgZmVhdHVyZXMuICovCiAg ICBpZiAoa2V5LT5jbGFtcF9jb2xvciB8fCBrZXktPnBhc3N0aHJvdWdoX2VkZ2VmbGFncykgewog ICAgICAgY29uc3Qgc3RydWN0IHRnc2lfdG9rZW4gKnRva2VuczsKLS0gCjIuNS4wCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=