From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH v1] drm/i915: Add GuC css header parser Date: Fri, 4 Sep 2015 13:45:11 -0700 Message-ID: <1441399511-21413-1-git-send-email-yu.dai@intel.com> References: <1441234355-7524-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 9A6606E200 for ; Fri, 4 Sep 2015 13:46:57 -0700 (PDT) In-Reply-To: <1441234355-7524-1-git-send-email-yu.dai@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpCeSB1c2luZyBpbmZvcm1hdGlvbiBm cm9tIEd1QyBjc3MgaGVhZGVyLCB3ZSBjYW4gZWxpbWluYXRlIHNvbWUKaGFyZCBjb2RlIHcuci50 IHNpemUgb2Ygc29tZSBjb21wb25lbnRzIG9mIGZpcm13YXJlLgoKdjE6IDEpIGd1Y19jc3NfaGVh ZGVyIGlzIGRlZmluZWQgYXMgX19wYWNrZWQgbm93CiAgICAyKSBBZGQgYW5kIGNvcnJlY3QgR3VD IHJlbGF0ZWQgdG9waWNzIGluIGtlcm5lbC9Eb2MKClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5 dS5kYWlAaW50ZWwuY29tPgotLS0KIERvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCAgICAg ICAgICB8ICAyNCArKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAg ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oICAgfCAg MzYgKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8 IDEwNSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAx MzAgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9Eb2NCb29rL2RybS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCmlu ZGV4IDY2YmM2NDYuLmY0MzBkYTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9k cm0udG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKQEAgLTQxNTUsMTQg KzQxNTUsMzQgQEAgaW50IG51bV9pb2N0bHM7PC9zeW5vcHNpcz4KICAgICAgIDx0aXRsZT5HdUMt YmFzZWQgQ29tbWFuZCBTdWJtaXNzaW9uPC90aXRsZT4KICAgICAgIDxzZWN0Mj4KICAgICAgICAg PHRpdGxlPkd1QzwvdGl0bGU+Ci0hUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYyBHdUMtc3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyCishUGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYyBHdUMKICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCiAgICAgICA8L3NlY3QyPgogICAgICAgPHNlY3QyPgogICAgICAgICA8dGl0bGU+ R3VDIENsaWVudDwvdGl0bGU+Ci0hUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYyBHdUMtYmFzZWQgY29tbWFuZCBzdWJtaXNzaXNvbgorIVBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgR3VDIENsaWVudAogIUlkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKICAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+ CisgICAgICAgIDx0aXRsZT5HdUMgRmlybXdhcmUgTGF5b3V0PC90aXRsZT4KKyAgICAgICAgPHBh cmE+VGhlIEd1QyBmaXJtd2FyZSBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOjwvcGFyYT4KKzxwcm9n cmFtbGlzdGluZz48IVtDREFUQVsKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK KyB8ICAgICAgICBndWNfY3NzX2hlYWRlciAgICAgICAgIHwKKyB8IGNvbnRhaW5zIG1ham9yL21p bm9yIHZlcnNpb24gIHwKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8ICAg ICAgICAgICAgIHVDb2RlICAgICAgICAgICAgIHwKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKKyB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwKKyArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8ICAgICAgICAgIG1vZHVsdXMga2V5ICAgICAgICAg IHwKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8ICAgICAgICAgIGV4cG9u ZW50IHZhbCAgICAgICAgIHwKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK11d PjwvcHJvZ3JhbWxpc3Rpbmc+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYyBHdUMgRmlybXdhcmUgTGF5b3V0CishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYworICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgogCiAgICAgPHNlY3QxPgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCA0ZWMyZDI3Li5lMTM4OWZjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaApAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCWd1Y19md19vYmo7CiAJZW51bSBpbnRlbF9n dWNfZndfc3RhdHVzCWd1Y19md19mZXRjaF9zdGF0dXM7CiAJZW51bSBpbnRlbF9ndWNfZndfc3Rh dHVzCWd1Y19md19sb2FkX3N0YXR1czsKKwlzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIJCWd1Y19md19o ZWFkZXI7CiAKIAl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7CiAJdWludDE2X3QJCQln dWNfZndfbWlub3Jfd2FudGVkOwpAQCAtODAsNyArODEsNiBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3 IHsKIAogc3RydWN0IGludGVsX2d1YyB7CiAJc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7Ci0K IAl1aW50MzJfdCBsb2dfZmxhZ3M7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvZ19v Ymo7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCmluZGV4IGUxZjQ3YmEuLjAw NmRjMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaApAQCAtMTIyLDYgKzEy Miw0MiBAQAogCiAjZGVmaW5lIEdVQ19DVExfTUFYX0RXT1JEUwkJKEdVQ19DVExfUlNSVkQgKyAx KQogCitzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgeworCXVpbnQzMl90IG1vZHVsZV90eXBlOworCXVp bnQzMl90IGhlYWRlcl9sZW47IC8qIGhlYWRlciBsZW5ndGggcGx1cyBzaXplIG9mIGFsbCBvdGhl ciBrZXlzICovCisJdWludDMyX3QgaGVhZGVyX3ZlcnNpb247CisJdWludDMyX3QgbW9kdWxlX2lk OworCXVpbnQzMl90IG1vZHVsZV92ZW5kb3I7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdWlu dDhfdCBkYXk7CisJCQl1aW50OF90IG1vbnRoOworCQkJdWludDE2X3QgeWVhcjsKKwkJfTsKKwkJ dWludDMyX3QgZGF0ZTsKKwl9OworCXVpbnQzMl90IHNpemU7IC8qIHVDb2RlIHNpemUgcGx1cyBo ZWFkZXJfbGVuICovCisJdWludDMyX3Qga2V5X3NpemU7CisJdWludDMyX3QgbW9kdWx1c19zaXpl OworCXVpbnQzMl90IGV4cG9uZW50X3NpemU7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdWlu dDhfdCBob3VyOworCQkJdWludDhfdCBtaW47CisJCQl1aW50MTZfdCBzZWM7CisJCX07CisJCXVp bnQzMl90IHRpbWU7CisJfTsKKworCWNoYXIgdXNlcm5hbWVbOF07CisJY2hhciBidWlsZG51bWJl clsxMl07CisJdWludDMyX3QgZGV2aWNlX2lkOworCXVpbnQzMl90IGd1Y19zd192ZXJzaW9uOwor CXVpbnQzMl90IHByb2RfcHJlcHJvZF9mdzsKKwl1aW50MzJfdCByZXNlcnZlZFsxMl07CisJdWlu dDMyX3QgaGVhZGVyX2luZm87Cit9IF9fcGFja2VkOworCiBzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2lu Zm8gewogCXUzMiBkYl9zdGF0dXM7CiAJdTMyIGNvb2tpZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwppbmRleCA1ODIzNjE1Li4wYzNjNGM5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0yMTUsMTggKzIxNSwyNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJKCh2YWwgJiBHU19NSUFfQ09SRV9TVEFURSkgJiYgdWtfdmFsID09IEdTX1VLRVJO RUxfTEFQSUNfRE9ORSkpOwogfQogCi0vKgotICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdl IHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCisvKioKKyAqIERP QzogR3VDIEZpcm13YXJlIExheW91dAogICoKLSAqIEd1QyBGaXJtd2FyZSBsYXlvdXQ6Ci0gKiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KLSAqIHwgICAgICAgICAgQ1NT IGhlYWRlciAgICAgICAgICAgfCAgMTI4QgotICogfCBjb250YWlucyBtYWpvci9taW5vciB2ZXJz aW9uICB8Ci0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KLSAqIHwg ICAgICAgICAgICAgdUNvZGUgICAgICAgICAgICAgfAotICogKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rICAtLS0tCi0gKiB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwg IDI1NkIKLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQorICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgICAgICAgIGd1Y19jc3NfaGVhZGVyICAg ICAgICAgfAorIHwgY29udGFpbnMgbWFqb3IvbWlub3IgdmVyc2lvbiAgfAorICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgICAgICAgICAgICAgdUNvZGUgICAgICAgICAgICAg fAorICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgICAgICAgICBSU0Egc2ln bmF0dXJlICAgICAgICAgfAorICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwg ICAgICAgICAgbW9kdWx1cyBrZXkgICAgICAgICAgfAorICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKworIHwgICAgICAgICAgZXhwb25lbnQgdmFsICAgICAgICAgfAorICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIFRoZSBmaXJtd2FyZSBtYXkgb3IgbWF5 IG5vdCBoYXZlIG1vZHVsdXMga2V5IGFuZCBleHBvbmVudCBkYXRhLiBUaGUgaGVhZGVyLAorICog dUNvZGUgYW5kIFJTQSBzaWduYXR1cmUgYXJlIG11c3QtaGF2ZSBjb21wb25lbnRzIHRoYXQgd2ls bCBiZSB1c2VkIGJ5IGRyaXZlci4KKyAqIFNpemUgb2YgZWFjaCBjb21wb25lbnRzIChpbiBkd29y ZHMpIGNhbiBiZSBmb3VuZCBpbiBoZWFkZXIuIEluIHRoZSBjYXNlIHRoYXQKKyAqIG1vZHVsdXMg YW5kIGV4cG9uZW50IGFyZSBub3QgcHJlc2VudCBpbiBmdywgdGhlIHNpemUgdmFsdWUgc3RpbGwg YXBwZWFycyBpbgorICogaGVhZGVyLgogICoKICAqIEFyY2hpdGVjdHVyYWxseSwgdGhlIERNQSBl bmdpbmUgaXMgYmlkaXJlY3Rpb25hbCwgYW5kIGNhbiBwb3RlbnRpYWxseSBldmVuCiAgKiB0cmFu c2ZlciBiZXR3ZWVuIEdUVCBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBsZWZ0IG91 dCBvZiB0aGUgQVBJCkBAIC0yMzYsMzAgKzI0NSw0MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3Vj X3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICAqIERN QSBlbmdpbmUgaW4gb25lIG9wZXJhdGlvbiwgd2hlcmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcyBs b2FkZWQgdmlhIE1NSU8uCiAgKi8KIAotI2RlZmluZSBVT1NfQ1NTX0hFQURFUl9PRkZTRVQJCTAK LSNkZWZpbmUgVU9TX1ZFUl9NSU5PUl9PRkZTRVQJCTB4NDQKLSNkZWZpbmUgVU9TX1ZFUl9NQUpP Ul9PRkZTRVQJCTB4NDYKLSNkZWZpbmUgVU9TX0NTU19IRUFERVJfU0laRQkJMHg4MAotI2RlZmlu ZSBVT1NfUlNBX1NJR19TSVpFCQkweDEwMAotCisvKgorICogVHJhbnNmZXIgdGhlIGZpcm13YXJl IGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCisgKi8K IHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1 Yy5ndWNfZnc7CisJc3RydWN0IGd1Y19jc3NfaGVhZGVyICpoZWFkZXIgPSAmZ3VjX2Z3LT5ndWNf ZndfaGVhZGVyOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpmd19vYmogPSBndWNfZnct Pmd1Y19md19vYmo7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJc3RydWN0IHNnX3RhYmxlICpz ZyA9IGZ3X29iai0+cGFnZXM7Ci0JdTMyIHN0YXR1cywgdWNvZGVfc2l6ZSwgcnNhW1VPU19SU0Ff U0lHX1NJWkUgLyBzaXplb2YodTMyKV07CisJdTMyIHN0YXR1cywgaGVhZGVyX3NpemUsIHJzYV9z aXplLCB1Y29kZV9zaXplLCAqcnNhOwogCWludCBpLCByZXQgPSAwOwogCi0JLyogdUNvZGUgc2l6 ZSwgYWxzbyBpcyB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwotCW9mZnNldCA9IHVjb2Rl X3NpemUgPSBndWNfZnctPmd1Y19md19zaXplIC0gVU9TX1JTQV9TSUdfU0laRTsKLQlJOTE1X1dS SVRFKERNQV9DT1BZX1NJWkUsIHVjb2RlX3NpemUpOworCS8qIFRoZSBoZWFkZXIgcGx1cyB1Q29k ZSB3aWxsIGJlIGNvcGllZCB0byBXT1BDTSB2aWEgRE1BLCBleGNsdWRpbmcgYW55CisJICogb3Ro ZXIgY29tcG9uZW50cyAqLworCWhlYWRlcl9zaXplID0gKGhlYWRlci0+aGVhZGVyX2xlbiAtIGhl YWRlci0+a2V5X3NpemUgLQorCQloZWFkZXItPm1vZHVsdXNfc2l6ZSAtIGhlYWRlci0+ZXhwb25l bnRfc2l6ZSkgKiBzaXplb2YodTMyKTsKKwl1Y29kZV9zaXplID0gKGhlYWRlci0+c2l6ZSAtIGhl YWRlci0+aGVhZGVyX2xlbikgKiBzaXplb2YodTMyKTsKKworCUk5MTVfV1JJVEUoRE1BX0NPUFlf U0laRSwgaGVhZGVyX3NpemUgKyB1Y29kZV9zaXplKTsKKworCS8qIHdoZXJlIFJTQSBzaWduYXR1 cmUgc3RhcnRzICovCisJb2Zmc2V0ID0gaGVhZGVyX3NpemUgKyB1Y29kZV9zaXplOworCisJcnNh X3NpemUgPSBoZWFkZXItPmtleV9zaXplICogc2l6ZW9mKHUzMik7CisJcnNhID0ga21hbGxvYyhy c2Ffc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFyc2EpCisJCXJldHVybiAtRU5PTUVNOwogCiAJ LyogQ29weSBSU0Egc2lnbmF0dXJlIGZyb20gdGhlIGZ3IGltYWdlIHRvIEhXIGZvciB2ZXJpZmlj YXRpb24gKi8KLQlzZ19wY29weV90b19idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCByc2EsIFVP U19SU0FfU0lHX1NJWkUsIG9mZnNldCk7Ci0JZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0lHX1NJ WkUgLyBzaXplb2YodTMyKTsgaSsrKQorCXNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBzZy0+ bmVudHMsIHJzYSwgcnNhX3NpemUsIG9mZnNldCk7CisJZm9yIChpID0gMDsgaSA8IHJzYV9zaXpl IC8gc2l6ZW9mKHUzMik7IGkrKykKIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0hfMCArIGkg KiBzaXplb2YodTMyKSwgcnNhW2ldKTsKIAorCWtmcmVlKHJzYSk7CisKIAkvKiBTZXQgdGhlIHNv dXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2IgKi8KIAlvZmZzZXQgPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQoZndfb2JqKTsKIAlJOTE1X1dSSVRFKERNQV9BRERSXzBfTE9XLCBsb3dlcl8z Ml9iaXRzKG9mZnNldCkpOwpAQCAtNDU4LDEwICs0NzksOCBAQCBzdGF0aWMgdm9pZCBndWNfZndf ZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJY29uc3Qgc3RydWN0IGZp cm13YXJlICpmdzsKLQljb25zdCB1OCAqY3NzX2hlYWRlcjsKLQljb25zdCBzaXplX3QgbWluc2l6 ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1NfUlNBX1NJR19TSVpFOwotCWNvbnN0IHNpemVf dCBtYXhzaXplID0gR1VDX1dPUENNX1NJWkVfVkFMVUUgKyBVT1NfUlNBX1NJR19TSVpFCi0JCQkt IDB4ODAwMDsgLyogMzJrIHJlc2VydmVkICg4SyBzdGFjayArIDI0ayBjb250ZXh0KSAqLworCXN0 cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzX2hlYWRlciA9ICZndWNfZnctPmd1Y19md19oZWFkZXI7 CisJc2l6ZV90IHNpemU7CiAJaW50IGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSBy ZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLApAQCAtNDc1LDEy ICs0OTQsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAogCURSTV9ERUJVR19EUklWRVIoImZl dGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCiAJCWd1Y19mdy0+Z3VjX2Z3 X3BhdGgsIGZ3KTsKLQlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSBmaWxlIHNpemUgJXp1ICht aW5pbXVtICV6dSwgbWF4aW11bSAlenUpXG4iLAotCQlmdy0+c2l6ZSwgbWluc2l6ZSwgbWF4c2l6 ZSk7CiAKLQkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvZSBleGFtaW5pbmcgYnVm ZmVyIGNvbnRlbnRzICovCi0JaWYgKGZ3LT5zaXplIDwgbWluc2l6ZSB8fCBmdy0+c2l6ZSA+IG1h eHNpemUpCisJLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4YW1pbmluZyBi dWZmZXIgY29udGVudHMgKi8KKwlpZiAoZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1Y19jc3Nf aGVhZGVyKSkgeworCQlEUk1fRVJST1IoIkZpcm13YXJlIGhlYWRlciBpcyBtaXNzaW5nXG4iKTsK KwkJZ290byBmYWlsOworCX0KKworCW1lbWNweShjc3NfaGVhZGVyLCBmdy0+ZGF0YSwgc2l6ZW9m KHN0cnVjdCBndWNfY3NzX2hlYWRlcikpOworCisJLyogQXQgbGVhc3QsIGl0IHNob3VsZCBoYXZl IGhlYWRlciwgdUNvZGUgYW5kIFJTQS4gU2l6ZSBvZiBhbGwgdGhyZWUuICovCisJc2l6ZSA9IChj c3NfaGVhZGVyLT5zaXplIC0gY3NzX2hlYWRlci0+bW9kdWx1c19zaXplIC0KKwkJCWNzc19oZWFk ZXItPmV4cG9uZW50X3NpemUpICogc2l6ZW9mKHUzMik7CisJaWYgKGZ3LT5zaXplIDwgc2l6ZSkg eworCQlEUk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdvdG8g ZmFpbDsKKwl9CisKKwkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENN LiBTaXplIG9mIHRoZSB0d28uICovCisJc2l6ZSAtPSBjc3NfaGVhZGVyLT5rZXlfc2l6ZSAqIHNp emVvZih1MzIpOworCisJLyogVG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sg KyAyNGsgUkM2IGNvbnRleHQpLiAqLworCWlmIChzaXplID4gR1VDX1dPUENNX1NJWkVfVkFMVUUg LSAweDgwMDApIHsKKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGlu IFdPUENNXG4iKTsKKwkJZ290byBmYWlsOworCX0KIAogCS8qCiAJICogVGhlIEd1QyBmaXJtd2Fy ZSBpbWFnZSBoYXMgdGhlIHZlcnNpb24gbnVtYmVyIGVtYmVkZGVkIGF0IGEgd2VsbC1rbm93bgpA QCAtNDg4LDkgKzUyNiw4IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAJICogVFdPIGJ5dGVzIGVh Y2ggKGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZp bmVkCiAJICogaW4gdGVybXMgb2YgYnl0ZXMgKHU4KS4KIAkgKi8KLQljc3NfaGVhZGVyID0gZnct PmRhdGEgKyBVT1NfQ1NTX0hFQURFUl9PRkZTRVQ7Ci0JZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91 bmQgPSAqKHUxNiAqKShjc3NfaGVhZGVyICsgVU9TX1ZFUl9NQUpPUl9PRkZTRVQpOwotCWd1Y19m dy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gKih1MTYgKikoY3NzX2hlYWRlciArIFVPU19WRVJfTUlO T1JfT0ZGU0VUKTsKKwlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9IGNzc19oZWFkZXItPmd1 Y19zd192ZXJzaW9uID4+IDE2OworCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzX2hl YWRlci0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CiAKIAlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFq b3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8CiAJICAgIGd1Y19mdy0+ Z3VjX2Z3X21pbm9yX2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Ci0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK