From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH] drm/i915/guc: Add GuC css header parser Date: Mon, 28 Sep 2015 14:30:44 -0700 Message-ID: <1443475844-11162-1-git-send-email-yu.dai@intel.com> References: <1443206749-7900-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 07B976E64B for ; Mon, 28 Sep 2015 14:33:14 -0700 (PDT) In-Reply-To: <1443206749-7900-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+CgpUaGUgc2l6ZSAvIG9mZnNldCBpbmZv cm1hdGlvbiBvZiBhbGwgZmlybXdhcmUgaW5ncmVkaWVudHMgYXJlCm5vdyBjYWN1bGF0ZWQgZnJv bSBoZWFkZXIuIERyaXZlciB3aWxsIHZhbGlkYXRlIHRoZSBoZWFkZXIgYW5kCnJzYSBrZXkgc2l6 ZS4gSWYgYW55IGNvbXBvbmVudCBpcyBvdXQgb2YgYm91bmRhcnksIGRyaXZlciB3aWxsCnJlamVj dCB0aGUgbG9hZGluZyB0b28uCgp2NDogTm93IHVzaW5nICdzaXplX2R3JyBmb3IgdGhvc2UgZGVm aW5lZCBpbiBjc3NfaGVhZGVyCgp2MzogMSkgTW92ZSBET0MgdG8gaW50ZWxfZ3VjX2Z3aWYuaCBy aWdodCBiZWZvcmUgY3NzX2hlYWRlcgpkZWZpbml0aW9uLiBBZGQgbW9yZSBjb21tZW50cy4KICAg IDIpIENoYW5nZSAnc2l6ZScgdG8gJ2xlbicgb3IgJ2xlbmd0aCcgdG8gYXZvaWQgY29uZnVzaW9u LgogICAgMykgQWRkIFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQgYWNjb3JkaW5nIHRvIEJTcGVj LiBBbmQKZHJpdmVyIHZhbGlkYXRlIHNpemUgb2YgUlNBIGtleSBub3cuCiAgICA0KSBBZGQgZncg Y29tcG9uZW50IHNpemUvb2Zmc2V0IGluZm8gdG8gaW50ZWxfZ3VjX2Z3LgoKdjI6IEFkZCBpbmRl bnQgaW50byBET0MgdG8gbWFrZSBmaXhlZC13aWR0aCBmb3JtYXQgcmF0aGVyIHRoYW4KY2hhbmdl IHRoZSB0bXBsLgoKdjE6IDEpIGd1Y19jc3NfaGVhZGVyIGlzIGRlZmluZWQgYXMgX19wYWNrZWQg bm93CiAgICAyKSBBZGQgYW5kIGNvcnJlY3QgR3VDIHJlbGF0ZWQgdG9waWNzIGluIGtlcm5lbC9E b2MKClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgotLS0KIERvY3Vt ZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCAgICAgICAgICB8ICA5ICsrKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICA2ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmggICAgICAgIHwgIDggKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndp Zi5oICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9hZGVyLmMgfCA5MyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIDYgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCBiL0RvY3VtZW50YXRp b24vRG9jQm9vay9kcm0udG1wbAppbmRleCAzMDhiMTQxLi5iN2Q3ZTEzIDEwMDY0NAotLS0gYS9E b2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29r L2RybS50bXBsCkBAIC00MTU1LDE0ICs0MTU1LDE5IEBAIGludCBudW1faW9jdGxzOzwvc3lub3Bz aXM+CiAgICAgICA8dGl0bGU+R3VDLWJhc2VkIENvbW1hbmQgU3VibWlzc2lvbjwvdGl0bGU+CiAg ICAgICA8c2VjdDI+CiAgICAgICAgIDx0aXRsZT5HdUM8L3RpdGxlPgotIVBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgR3VDLXNwZWNpZmljIGZpcm13YXJlIGxvYWRlcgor IVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgR3VDCiAhSWRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwogICAgICAgPC9zZWN0Mj4KICAgICAgIDxz ZWN0Mj4KICAgICAgICAgPHRpdGxlPkd1QyBDbGllbnQ8L3RpdGxlPgotIVBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgR3VDLWJhc2VkIGNvbW1hbmQgc3VibWlzc2lz b24KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIEd1QyBDbGll bnQKICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCiAgICAgICA8 L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+R3VDIEZpcm13YXJlIExheW91 dDwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmggR3VDIEZp cm13YXJlIExheW91dAorIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCisg ICAgICA8L3NlY3QyPgogICAgIDwvc2VjdDE+CiAKICAgICA8c2VjdDE+CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCmluZGV4IGFmYTc5ODIuLjAyNjkzZDYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCkBAIC0yMzk2LDYgKzIzOTYsMTIgQEAgc3RhdGljIGludCBpOTE1X2d1 Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJZ3Vj X2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOwog CXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiBmb3VuZDogJWQuJWRcbiIsCiAJCWd1Y19mdy0+Z3Vj X2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCk7CisJc2VxX3ByaW50 ZihtLCAiXHRoZWFkZXI6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAorCQlndWNfZnctPmhl YWRlcl9vZmZzZXQsIGd1Y19mdy0+aGVhZGVyX3NpemUpOworCXNlcV9wcmludGYobSwgIlx0dUNv ZGU6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAorCQlndWNfZnctPnVjb2RlX29mZnNldCwg Z3VjX2Z3LT51Y29kZV9zaXplKTsKKwlzZXFfcHJpbnRmKG0sICJcdFJTQTogb2Zmc2V0IGlzICVk OyBzaXplID0gJWRcbiIsCisJCWd1Y19mdy0+cnNhX29mZnNldCwgZ3VjX2Z3LT5yc2Ffc2l6ZSk7 CiAKIAl0bXAgPSBJOTE1X1JFQUQoR1VDX1NUQVRVUyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfcmVnLmgKaW5kZXggYzRjYjFjMC4uYjUxYjgyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfcmVnLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgU09GVF9TQ1JBVENIKG4pCQkJKDB4 YzE4MCArICgobikgKiA0KSkKIAogI2RlZmluZSBVT1NfUlNBX1NDUkFUQ0goaSkJCSgweGMyMDAg KyAoaSkgKiA0KQorI2RlZmluZSAgIFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQJICA2NAogI2Rl ZmluZSBETUFfQUREUl8wX0xPVwkJCTB4YzMwMAogI2RlZmluZSBETUFfQUREUl8wX0hJR0gJCQkw eGMzMDQKICNkZWZpbmUgRE1BX0FERFJfMV9MT1cJCQkweGMzMDgKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKaW5kZXggNGVjMmQyNy4uNjNlNzNmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK QEAgLTc2LDExICs3NiwxNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKIAl1aW50MTZfdAkJCWd1 Y19md19taW5vcl93YW50ZWQ7CiAJdWludDE2X3QJCQlndWNfZndfbWFqb3JfZm91bmQ7CiAJdWlu dDE2X3QJCQlndWNfZndfbWlub3JfZm91bmQ7CisKKwl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKKwl1 aW50MzJfdCBoZWFkZXJfb2Zmc2V0OworCXVpbnQzMl90IHJzYV9zaXplOworCXVpbnQzMl90IHJz YV9vZmZzZXQ7CisJdWludDMyX3QgdWNvZGVfc2l6ZTsKKwl1aW50MzJfdCB1Y29kZV9vZmZzZXQ7 CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsK LQogCXVpbnQzMl90IGxvZ19mbGFnczsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbG9n X29iajsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKaW5kZXggZTFmNDdiYS4u NWI0NjMzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCkBAIC0xMjIsNiAr MTIyLDc4IEBACiAKICNkZWZpbmUgR1VDX0NUTF9NQVhfRFdPUkRTCQkoR1VDX0NUTF9SU1JWRCAr IDEpCiAKKy8qKgorICogRE9DOiBHdUMgRmlybXdhcmUgTGF5b3V0CisgKgorICogVGhlIEd1QyBm aXJtd2FyZSBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOgorICoKKyAqICAgICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICB8ICAgICAgICBndWNfY3NzX2hlYWRlciAgICAg ICAgIHwKKyAqICAgICB8IGNvbnRhaW5zIG1ham9yL21pbm9yIHZlcnNpb24gIHwKKyAqICAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICB8ICAgICAgICAgICAgIHVD b2RlICAgICAgICAgICAgIHwKKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKKyAqICAgICB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwKKyAqICAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICB8ICAgICAgICAgIG1vZHVsdXMg a2V5ICAgICAgICAgIHwKKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK KyAqICAgICB8ICAgICAgICAgIGV4cG9uZW50IHZhbCAgICAgICAgIHwKKyAqICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBUaGUgZmlybXdhcmUgbWF5IG9yIG1h eSBub3QgaGF2ZSBtb2R1bHVzIGtleSBhbmQgZXhwb25lbnQgZGF0YS4gVGhlIGhlYWRlciwKKyAq IHVDb2RlIGFuZCBSU0Egc2lnbmF0dXJlIGFyZSBtdXN0LWhhdmUgY29tcG9uZW50cyB0aGF0IHdp bGwgYmUgdXNlZCBieSBkcml2ZXIuCisgKiBMZW5ndGggb2YgZWFjaCBjb21wb25lbnRzLCB3aGlj aCBpcyBhbGwgaW4gZHdvcmRzLCBjYW4gYmUgZm91bmQgaW4gaGVhZGVyLgorICogSW4gdGhlIGNh c2UgdGhhdCBtb2R1bHVzIGFuZCBleHBvbmVudCBhcmUgbm90IHByZXNlbnQgaW4gZncsIGEuay5h IHRydW5jYXRlZAorICogaW1hZ2UsIHRoZSBsZW5ndGggdmFsdWUgc3RpbGwgYXBwZWFycyBpbiBo ZWFkZXIuCisgKgorICogRHJpdmVyIHdpbGwgZG8gc29tZSBiYXNpYyBmdyBzaXplIHZhbGlkYXRp b24gYmFzZWQgb24gdGhlIGZvbGxvd2luZyBydWxlczoKKyAqCisgKiAxLiBIZWFkZXIsIHVDb2Rl IGFuZCBSU0EgYXJlIG11c3QtaGF2ZSBjb21wb25lbnRzLgorICogMi4gQWxsIGZpcm13YXJlIGNv bXBvbmVudHMsIGlmIHRoZXkgcHJlc2VudCwgYXJlIGluIHRoZSBzZXF1ZW5jZSBpbGx1c3RyYXRl ZAorICogaW4gdGhlIGxheW91dCB0YWJsZSBhYm92ZS4KKyAqIDMuIExlbmd0aCBpbmZvIG9mIGVh Y2ggY29tcG9uZW50IGNhbiBiZSBmb3VuZCBpbiBoZWFkZXIsIGluIGR3b3Jkcy4KKyAqIDQuIE1v ZHVsdXMgYW5kIGV4cG9uZW50IGtleSBhcmUgbm90IHJlcXVpcmVkIGJ5IGRyaXZlci4gVGhleSBt YXkgbm90IGFwcGVhcgorICogaW4gZncuIFNvIGRyaXZlciB3aWxsIGxvYWQgYSB0cnVuY2F0ZWQg ZmlybXdhcmUgaW4gdGhpcyBjYXNlLgorKi8KKworc3RydWN0IGd1Y19jc3NfaGVhZGVyIHsKKwl1 aW50MzJfdCBtb2R1bGVfdHlwZTsKKwkvKiBoZWFkZXJfc2l6ZSBpbmNsdWRlcyBhbGwgbm9uLXVD b2RlIGJpdHMsIGluY2x1ZGluZyBjc3NfaGVhZGVyLCByc2EKKwkgKiBrZXksIG1vZHVsdXMga2V5 IGFuZCBleHBvbmVudCBkYXRhLiAqLworCXVpbnQzMl90IGhlYWRlcl9zaXplX2R3OworCXVpbnQz Ml90IGhlYWRlcl92ZXJzaW9uOworCXVpbnQzMl90IG1vZHVsZV9pZDsKKwl1aW50MzJfdCBtb2R1 bGVfdmVuZG9yOworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXVpbnQ4X3QgZGF5OworCQkJdWlu dDhfdCBtb250aDsKKwkJCXVpbnQxNl90IHllYXI7CisJCX07CisJCXVpbnQzMl90IGRhdGU7CisJ fTsKKwl1aW50MzJfdCBzaXplX2R3OyAvKiB1Q29kZSBwbHVzIGhlYWRlcl9zaXplX2R3ICovCisJ dWludDMyX3Qga2V5X3NpemVfZHc7CisJdWludDMyX3QgbW9kdWx1c19zaXplX2R3OworCXVpbnQz Ml90IGV4cG9uZW50X3NpemVfZHc7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdWludDhfdCBo b3VyOworCQkJdWludDhfdCBtaW47CisJCQl1aW50MTZfdCBzZWM7CisJCX07CisJCXVpbnQzMl90 IHRpbWU7CisJfTsKKworCWNoYXIgdXNlcm5hbWVbOF07CisJY2hhciBidWlsZG51bWJlclsxMl07 CisJdWludDMyX3QgZGV2aWNlX2lkOworCXVpbnQzMl90IGd1Y19zd192ZXJzaW9uOworCXVpbnQz Ml90IHByb2RfcHJlcHJvZF9mdzsKKwl1aW50MzJfdCByZXNlcnZlZFsxMl07CisJdWludDMyX3Qg aGVhZGVyX2luZm87Cit9IF9fcGFja2VkOworCiBzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gewog CXUzMiBkYl9zdGF0dXM7CiAJdTMyIGNvb2tpZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYwppbmRleCA1ZDE3YjYzLi4zYTdmMDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvYWRlci5jCkBAIC0yMTgsMTYgKzIxOCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBndWNfdWNvZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog LyoKICAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBi eSB0aGUgbWljcm9jb250cm9sbGVyLgogICoKLSAqIEd1QyBGaXJtd2FyZSBsYXlvdXQ6Ci0gKiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KLSAqIHwgICAgICAgICAgQ1NT IGhlYWRlciAgICAgICAgICAgfCAgMTI4QgotICogfCBjb250YWlucyBtYWpvci9taW5vciB2ZXJz aW9uICB8Ci0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KLSAqIHwg ICAgICAgICAgICAgdUNvZGUgICAgICAgICAgICAgfAotICogKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rICAtLS0tCi0gKiB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwg IDI1NkIKLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQotICoKICAq IEFyY2hpdGVjdHVyYWxseSwgdGhlIERNQSBlbmdpbmUgaXMgYmlkaXJlY3Rpb25hbCwgYW5kIGNh biBwb3RlbnRpYWxseSBldmVuCiAgKiB0cmFuc2ZlciBiZXR3ZWVuIEdUVCBsb2NhdGlvbnMuIFRo aXMgZnVuY3Rpb25hbGl0eSBpcyBsZWZ0IG91dCBvZiB0aGUgQVBJCiAgKiBmb3Igbm93IGFzIHRo ZXJlIGlzIG5vIG5lZWQgZm9yIGl0LgpAQCAtMjM1LDMzICsyMjUsMjkgQEAgc3RhdGljIGlubGlu ZSBib29sIGd1Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAgKiBOb3RlIHRoYXQgR3VDIG5lZWRzIHRoZSBDU1MgaGVhZGVyIHBsdXMgdUtlcm5lbCBj b2RlIHRvIGJlIGNvcGllZCBieSB0aGUKICAqIERNQSBlbmdpbmUgaW4gb25lIG9wZXJhdGlvbiwg d2hlcmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcyBsb2FkZWQgdmlhIE1NSU8uCiAgKi8KLQotI2Rl ZmluZSBVT1NfQ1NTX0hFQURFUl9PRkZTRVQJCTAKLSNkZWZpbmUgVU9TX1ZFUl9NSU5PUl9PRkZT RVQJCTB4NDQKLSNkZWZpbmUgVU9TX1ZFUl9NQUpPUl9PRkZTRVQJCTB4NDYKLSNkZWZpbmUgVU9T X0NTU19IRUFERVJfU0laRQkJMHg4MAotI2RlZmluZSBVT1NfUlNBX1NJR19TSVpFCQkweDEwMAot CiBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5n dWMuZ3VjX2Z3OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpmd19vYmogPSBndWNfZnct Pmd1Y19md19vYmo7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJc3RydWN0IHNnX3RhYmxlICpz ZyA9IGZ3X29iai0+cGFnZXM7Ci0JdTMyIHN0YXR1cywgdWNvZGVfc2l6ZSwgcnNhW1VPU19SU0Ff U0lHX1NJWkUgLyBzaXplb2YodTMyKV07CisJdTMyIHN0YXR1cywgcnNhW1VPU19SU0FfU0NSQVRD SF9NQVhfQ09VTlRdOwogCWludCBpLCByZXQgPSAwOwogCi0JLyogdUNvZGUgc2l6ZSwgYWxzbyBp cyB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwotCW9mZnNldCA9IHVjb2RlX3NpemUgPSBn dWNfZnctPmd1Y19md19zaXplIC0gVU9TX1JTQV9TSUdfU0laRTsKLQlJOTE1X1dSSVRFKERNQV9D T1BZX1NJWkUsIHVjb2RlX3NpemUpOworCS8qIHdoZXJlIFJTQSBzaWduYXR1cmUgc3RhcnRzICov CisJb2Zmc2V0ID0gZ3VjX2Z3LT5yc2Ffb2Zmc2V0OwogCiAJLyogQ29weSBSU0Egc2lnbmF0dXJl IGZyb20gdGhlIGZ3IGltYWdlIHRvIEhXIGZvciB2ZXJpZmljYXRpb24gKi8KLQlzZ19wY29weV90 b19idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCByc2EsIFVPU19SU0FfU0lHX1NJWkUsIG9mZnNl dCk7Ci0JZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0lHX1NJWkUgLyBzaXplb2YodTMyKTsgaSsr KQorCXNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsIHJzYSwgc2l6ZW9mKHJz YSksIG9mZnNldCk7CisJZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQ7 IGkrKykKIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0goaSksIHJzYVtpXSk7CiAKKwkvKiBU aGUgaGVhZGVyIHBsdXMgdUNvZGUgd2lsbCBiZSBjb3BpZWQgdG8gV09QQ00gdmlhIERNQSwgZXhj bHVkaW5nIGFueQorCSAqIG90aGVyIGNvbXBvbmVudHMgKi8KKwlJOTE1X1dSSVRFKERNQV9DT1BZ X1NJWkUsIGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemUpOworCiAJLyog U2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIG5ldyBibG9iICovCi0Jb2Zmc2V0ID0gaTkx NV9nZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaik7CisJb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dn dHRfb2Zmc2V0KGZ3X29iaikgKyBndWNfZnctPmhlYWRlcl9vZmZzZXQ7CiAJSTkxNV9XUklURShE TUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKIAlJOTE1X1dSSVRFKERNQV9B RERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsKIApAQCAtNDY1LDEw ICs0NTEsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7CiAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKLQljb25zdCB1OCAqY3Nz X2hlYWRlcjsKLQljb25zdCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBV T1NfUlNBX1NJR19TSVpFOwotCWNvbnN0IHNpemVfdCBtYXhzaXplID0gR1VDX1dPUENNX1NJWkVf VkFMVUUgKyBVT1NfUlNBX1NJR19TSVpFCi0JCQktIDB4ODAwMDsgLyogMzJrIHJlc2VydmVkICg4 SyBzdGFjayArIDI0ayBjb250ZXh0KSAqLworCXN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzOwor CXNpemVfdCBzaXplOwogCWludCBlcnI7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVx dWVzdGluZyBmaXJtd2FyZTogR3VDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKQEAgLTQ4MiwxMiAr NDY2LDUyIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAKIAlEUk1fREVCVUdfRFJJVkVSKCJmZXRj aCBHdUMgZncgZnJvbSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAogCQlndWNfZnctPmd1Y19md19w YXRoLCBmdyk7Ci0JRFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUgZmlsZSBzaXplICV6dSAobWlu aW11bSAlenUsIG1heGltdW0gJXp1KVxuIiwKLQkJZnctPnNpemUsIG1pbnNpemUsIG1heHNpemUp OwogCi0JLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVmb2UgZXhhbWluaW5nIGJ1ZmZl ciBjb250ZW50cyAqLwotCWlmIChmdy0+c2l6ZSA8IG1pbnNpemUgfHwgZnctPnNpemUgPiBtYXhz aXplKQorCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFtaW5pbmcgYnVm ZmVyIGNvbnRlbnRzICovCisJaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hl YWRlcikpIHsKKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoZWFkZXIgaXMgbWlzc2luZ1xuIik7CiAJ CWdvdG8gZmFpbDsKKwl9CisKKwljc3MgPSAoc3RydWN0IGd1Y19jc3NfaGVhZGVyICopZnctPmRh dGE7CisKKwkvKiBGaXJtd2FyZSBiaXRzIGFsd2F5cyBzdGFydCBmcm9tIGhlYWRlciAqLworCWd1 Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7CisJZ3VjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhl YWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQorCQljc3MtPmtleV9zaXplX2R3 IC0gY3NzLT5leHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1MzIpOworCisJaWYgKGd1Y19mdy0+ aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKKwkJRFJNX0VS Uk9SKCJDU1MgaGVhZGVyIGRlZmluaXRpb24gbWlzbWF0Y2hcbiIpOworCQlnb3RvIGZhaWw7CisJ fQorCisJLyogdGhlbiwgdUNvZGUgKi8KKwlndWNfZnctPnVjb2RlX29mZnNldCA9IGd1Y19mdy0+ aGVhZGVyX29mZnNldCArIGd1Y19mdy0+aGVhZGVyX3NpemU7CisJZ3VjX2Z3LT51Y29kZV9zaXpl ID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CisK KwkvKiBub3cgUlNBICovCisJaWYgKGNzcy0+a2V5X3NpemVfZHcgIT0gVU9TX1JTQV9TQ1JBVENI X01BWF9DT1VOVCkgeworCQlEUk1fRVJST1IoIlJTQSBrZXkgc2l6ZSBpcyBiYWRcbiIpOworCQln b3RvIGZhaWw7CisJfQorCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19mdy0+dWNvZGVfb2Zmc2V0 ICsgZ3VjX2Z3LT51Y29kZV9zaXplOworCWd1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9zaXpl X2R3ICogc2l6ZW9mKHUzMik7CisKKwkvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVhZGVy LCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0aHJlZS4gKi8KKwlzaXplID0gZ3VjX2Z3LT5o ZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7CisJaWYg KGZ3LT5zaXplIDwgc2l6ZSkgeworCQlEUk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9u ZW50c1xuIik7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwg YmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCisJc2l6ZSA9IGd1Y19mdy0+ aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemU7CisKKwkvKiBUb3AgMzJrIG9mIFdPUENN IGlzIHJlc2VydmVkICg4SyBzdGFjayArIDI0ayBSQzYgY29udGV4dCkuICovCisJaWYgKHNpemUg PiBHVUNfV09QQ01fU0laRV9WQUxVRSAtIDB4ODAwMCkgeworCQlEUk1fRVJST1IoIkZpcm13YXJl IGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOworCQlnb3RvIGZhaWw7CisJfQogCiAJ LyoKIAkgKiBUaGUgR3VDIGZpcm13YXJlIGltYWdlIGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1i ZWRkZWQgYXQgYSB3ZWxsLWtub3duCkBAIC00OTUsOSArNTE5LDggQEAgc3RhdGljIHZvaWQgZ3Vj X2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdykKIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9pbnRl cnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgpLgog CSAqLwotCWNzc19oZWFkZXIgPSBmdy0+ZGF0YSArIFVPU19DU1NfSEVBREVSX09GRlNFVDsKLQln dWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKyBVT1NfVkVS X01BSk9SX09GRlNFVCk7Ci0JZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSAqKHUxNiAqKShj c3NfaGVhZGVyICsgVU9TX1ZFUl9NSU5PUl9PRkZTRVQpOworCWd1Y19mdy0+Z3VjX2Z3X21ham9y X2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKKwlndWNfZnctPmd1Y19md19taW5v cl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CiAKIAlpZiAoZ3VjX2Z3LT5n dWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8CiAJICAg IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVk KSB7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK