From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v4 19/27] drm/i915: Read hw state into an atomic state struct, v2. Date: Tue, 09 Jun 2015 15:25:16 +0200 Message-ID: <5576E93C.3080308@linux.intel.com> References: <1433155811-9671-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433155811-9671-20-git-send-email-maarten.lankhorst@linux.intel.com> <5576D28B.4090109@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id D5D796E199 for ; Tue, 9 Jun 2015 06:25:20 -0700 (PDT) In-Reply-To: <5576D28B.4090109@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: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org SGV5LAoKT3AgMDktMDYtMTUgb20gMTM6NDggc2NocmVlZiBUdnJ0a28gVXJzdWxpbjoKPgo+IE9u IDA2LzAxLzIwMTUgMTE6NTAgQU0sIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBGcm9tOiBB bmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBp bnRlbC5jb20+Cj4+Cj4+IFRvIG1ha2UgdGhpcyB3b3JrIHdlIGxvYWQgdGhlIG5ldyBoYXJkd2Fy ZSBzdGF0ZSBpbnRvIHRoZQo+PiBhdG9taWNfc3RhdGUsIHRoZW4gc3dhcCBpdCB3aXRoIHRoZSBz dyBzdGF0ZS4KPj4KPj4gVGhpcyBsZXRzIHVzIGNoYW5nZSB0aGUgZm9yY2UgcmVzdG9yZSBwYXRo IGluIHNldHVwX2h3X3N0YXRlKCkKPj4gdG8gdXNlIGEgc2luZ2xlIGNhbGwgdG8gaW50ZWxfbW9k ZV9zZXQoKSB0byByZXN0b3JlIGFsbCB0aGUKPj4gcHJldmlvdXMgc3RhdGUuCj4+Cj4+IEFzIGEg bmljZSBib251cyB0aGlzIGtpbGxzIG9mZiBlbmNvZGVyLT5uZXdfZW5jb2RlciwKPj4gY29ubmVj dG9yLT5uZXdfZW5hYmxlZCBhbmQgY3J0Yy0+bmV3X2VuYWJsZWQuIFRoZXkgd2VyZSB1c2VkIG9u bHkKPj4gdG8gcmVzdG9yZSB0aGUgc3RhdGUgYWZ0ZXIgYSBtb2Rlc2V0Lgo+Pgo+PiBDaGFuZ2Vz IHNpbmNlIHYxOgo+PiAtIE1ha2Ugc3VyZSBhbGwgcG9zc2libGUgcGxhbmVzIGFyZSBhZGRlZCB3 aXRoIHRoZWlyIGNydGMgc2V0LAo+PiAgICBzbyB0aGV5IHdpbGwgYmUgdHVybmVkIG9mZiBvbiBm aXJzdCBtb2Rlc2V0Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xp dmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+Cj4KPiBUaGlzIGJyZWFrcyBkaXNwbGF5IGZvciBtZSwgd2hpY2ggaXMgZURQIG9uIFNLTC4g QXQgbGVhc3QgYmlzZWN0IHBvaW50cyB0byBpdC4gQSBsb3Qgb2YgdGhlc2UgaW4gdGhlIGxvZ3M6 Cj4KPiAqRVJST1IqIG1pc21hdGNoIGluIGRwX21fbi5saW5rX20gKGV4cGVjdGVkIDcwMTU5NCBv ciAwLCBmb3VuZCAzNTA3OTcpCj4KPiBBbmQgdGhlIGRpc3BsYXkgZG9lcyBub3QgbGlnaHQgdXAu CgpZZWFoLCBpdCBwcm9iYWJseSByZWxpZXMgb24gYmV0dGVyIGh3IHJlYWRvdXQuIFRoaXMgaXMg cGFydGlhbGx5IG1pdGlnYXRlZCBieSBjb252ZXJ0IHRvIGF0b21pYywgcGFydCAzLgpCdXQgaXQg cmVxdWlyZXMgMiBhZGRpdGlvbmFsIHBhdGNoZXMuCgpjb21taXQgNWE5NzUyOWJlY2IyNWZhYmYx OGEzNTA3YTk0Zjg5MmMzNjVhNGExZApBdXRob3I6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+CkRhdGU6ICAgTW9uIEp1biA4IDExOjMxOjI4IDIw MTUgKzAyMDAKCiAgICBkcm0vaTkxNTogdXBkYXRlIG1vcmUgc3cgc3RhdGUgd2l0aCBodyBzdGF0 ZSBkdXJpbmcgYXRvbWljIHJlYWRvdXQKICAgIAogICAgSSd2ZSBub3RpY2VkIHRoZSBmb2xsb3dp bmcgZHVyaW5nIGluaXRpYWwgcmVhZG91dDoKICAgIHN0YXRlLT5hZGp1c3RlZF9tb2RlJ3Mgbm9u IGNydGNfKiBtZW1iZXJzIHdlcmUgbm90IHNldCwKICAgIGJ1dCBzb21lIGNvZGUgcmVsaWVzIGhk aXNwbGF5IGFuZCB2ZGlzcGxheSwgc28gbWFrZSBzdXJlIGl0J3MKICAgIHNldCBjb3JyZWN0bHku CiAgICAKICAgIEFsc28gdmJsYW5rIHdhcyBub3QgZW5hYmxlZCBiZWNhdXNlIGNvbnN0YW50cyB3 ZXJlIG5vdCBjYWxjdWxhdGVkLAogICAgdGhpcyBzaG93cyB1cCBpbiBkbWVzZyBhczoKICAgIFtk cm06ZHJtX3ZibGFua19lbmFibGVdIGVuYWJsaW5nIHZibGFuayBvbiBjcnRjIDAsIHJldDogMAog ICAgW2RybTpkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zXSBjcnRjIDA6IE5v b3AgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgbW9kZS4KICAgIAogICAgVGhpcyBjb21taXQgZml4ZXMg dGhlIHJlZ3Jlc3Npb24gZnJvbSB0aGUgZm9sbG93aW5nIGNvbW1pdDoKICAgIAogICAgY29tbWl0 IDNiYWUyNmViMjk5MWMwMDY3MGRmMzc3Y2Y2YzNiYzJiMDU3N2U4MmEKICAgIEF1dGhvcjogQW5k ZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50 ZWwuY29tPgogICAgRGF0ZTogICBNb24gSnVuIDEgMTI6NTA6MDMgMjAxNSArMDIwMAogICAgCiAg ICAgICAgZHJtL2k5MTU6IFJlYWQgaHcgc3RhdGUgaW50byBhbiBhdG9taWMgc3RhdGUgc3RydWN0 LCB2Mi4KICAgIAogICAgQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hv d19idWcuY2dpP2lkPTkwODYxCiAgICBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwppbmRleCBmYjlmMDdiMWU1Y2EuLmRjMjliYWI1MjdkNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTQ4NTksOCArMTQ4NTksOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCiAJLyogcmVz dG9yZSB2YmxhbmsgaW50ZXJydXB0cyB0byBjb3JyZWN0IHN0YXRlICovCiAJZHJtX2NydGNfdmJs YW5rX3Jlc2V0KCZjcnRjLT5iYXNlKTsKLQlpZiAoY3J0Yy0+YWN0aXZlKSB7CisJaWYgKGNydGMt PmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewogCQl1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KGNydGMpOwor CQlkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzKCZjcnRjLT5iYXNlLCAmY3J0Yy0+YmFz ZS5od21vZGUpOwogCQlkcm1fY3J0Y192Ymxhbmtfb24oJmNydGMtPmJhc2UpOwogCX0KIApAQCAt MTUzMDcsNiArMTUzMDgsOCBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKGNydGMtPmVuYWJsZWQpIHsKIAkJCWludGVsX21v ZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+c3RhdGUtPm1vZGUsCiAJCQkJdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOworCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZj cnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSwKKwkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKSk7CiAKIAkJCWRybV9tb2RlX2NvcHkoJmNydGMtPm1vZGUsICZjcnRjLT5zdGF0ZS0+ bW9kZSk7CiAJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5od21vZGUsCgpjb21taXQgZDBmN2U3YWU4 YTE1MWU5ZDAxOGUyZGJmMzZhNWFmYmE4MTJiYWI0ZgpBdXRob3I6IE1hYXJ0ZW4gTGFua2hvcnN0 IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+CkRhdGU6ICAgVHVlIEp1biA5IDA5 OjAxOjE3IDIwMTUgKzAyMDAKCiAgICBkcm0vaTkxNTogb25seSBwZXJmb3JtIGEgc2luZ2xlIG1v ZGVzZXQgaW4gaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwppbmRleCAyOWFlOTJlNWM4YTkuLjc3YTU1M2UyMWE3YSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTE5OTQsMjQgKzExOTk0LDM1IEBAIHN0YXRp YyBib29sIGludGVsX2Z1enp5X2Nsb2NrX2NoZWNrKGludCBjbG9jazEsIGludCBjbG9jazIpCiBz dGF0aWMgYm9vbAogaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCi0JCQkg IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKKwkJCSAgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJICBib29sIGNoZWNrX29ubHkpCiB7CisJYm9v bCByZXQgPSB0cnVlOworCisjZGVmaW5lIElOVEVMX0VSUl9PUl9EQkdfS01TKGZtdCwgLi4uKSBc CisJZG8geyBcCisJCWlmIChjaGVja19vbmx5KSBcCisJCQlEUk1fRVJST1IoZm10LCAjI19fVkFf QVJHU19fKTsgXAorCQllbHNlIFwKKwkJCURSTV9ERUJVR19LTVMoZm10LCAjI19fVkFfQVJHU19f KTsgXAorCX0gd2hpbGUgKDApCisKICNkZWZpbmUgUElQRV9DT05GX0NIRUNLX1gobmFtZSkJXAog CWlmIChjdXJyZW50X2NvbmZpZy0+bmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkgeyBcCi0JCURS TV9FUlJPUigibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAorCQlJTlRFTF9FUlJfT1JfREJHX0tN UygibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAogCQkJICAiKGV4cGVjdGVkIDB4JTA4eCwgZm91 bmQgMHglMDh4KVxuIiwgXAogCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwgXAogCQkJICBwaXBl X2NvbmZpZy0+bmFtZSk7IFwKLQkJcmV0dXJuIGZhbHNlOyBcCisJCXJldCA9IGZhbHNlOyBcCiAJ fQogCiAjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19JKG5hbWUpCVwKIAlpZiAoY3VycmVudF9jb25m aWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUpIHsgXAotCQlEUk1fRVJST1IoIm1pc21hdGNo IGluICIgI25hbWUgIiAiIFwKKwkJSU5URUxfRVJSX09SX0RCR19LTVMoIm1pc21hdGNoIGluICIg I25hbWUgIiAiIFwKIAkJCSAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBcCiAJCQkgIGN1 cnJlbnRfY29uZmlnLT5uYW1lLCBcCiAJCQkgIHBpcGVfY29uZmlnLT5uYW1lKTsgXAotCQlyZXR1 cm4gZmFsc2U7IFwKKwkJcmV0ID0gZmFsc2U7IFwKIAl9CiAKIC8qIFRoaXMgaXMgcmVxdWlyZWQg Zm9yIEJEVysgd2hlcmUgdGhlcmUgaXMgb25seSBvbmUgc2V0IG9mIHJlZ2lzdGVycyBmb3IKQEAg LTEyMDIyLDMwICsxMjAzMywzMCBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAjZGVmaW5lIFBJUEVfQ09ORl9DSEVDS19JX0FMVChuYW1lLCBhbHRf bmFtZSkgXAogCWlmICgoY3VycmVudF9jb25maWctPm5hbWUgIT0gcGlwZV9jb25maWctPm5hbWUp ICYmIFwKIAkJKGN1cnJlbnRfY29uZmlnLT5hbHRfbmFtZSAhPSBwaXBlX2NvbmZpZy0+bmFtZSkp IHsgXAotCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIgIiBcCisJCQlJTlRFTF9F UlJfT1JfREJHX0tNUygibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAogCQkJCSAgIihleHBlY3Rl ZCAlaSBvciAlaSwgZm91bmQgJWkpXG4iLCBcCiAJCQkJICBjdXJyZW50X2NvbmZpZy0+bmFtZSwg XAogCQkJCSAgY3VycmVudF9jb25maWctPmFsdF9uYW1lLCBcCiAJCQkJICBwaXBlX2NvbmZpZy0+ bmFtZSk7IFwKLQkJCXJldHVybiBmYWxzZTsgXAorCQkJcmV0ID0gZmFsc2U7IFwKIAl9CiAKICNk ZWZpbmUgUElQRV9DT05GX0NIRUNLX0ZMQUdTKG5hbWUsIG1hc2spCVwKIAlpZiAoKGN1cnJlbnRf Y29uZmlnLT5uYW1lIF4gcGlwZV9jb25maWctPm5hbWUpICYgKG1hc2spKSB7IFwKLQkJRFJNX0VS Uk9SKCJtaXNtYXRjaCBpbiAiICNuYW1lICIoIiAjbWFzayAiKSAiCSAgIFwKKwkJSU5URUxfRVJS X09SX0RCR19LTVMoIm1pc21hdGNoIGluICIgI25hbWUgIigiICNtYXNrICIpICIJICAgXAogCQkJ ICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIFwKIAkJCSAgY3VycmVudF9jb25maWctPm5h bWUgJiAobWFzayksIFwKIAkJCSAgcGlwZV9jb25maWctPm5hbWUgJiAobWFzaykpOyBcCi0JCXJl dHVybiBmYWxzZTsgXAorCQlyZXQgPSBmYWxzZTsgXAogCX0KIAogI2RlZmluZSBQSVBFX0NPTkZf Q0hFQ0tfQ0xPQ0tfRlVaWlkobmFtZSkgXAogCWlmICghaW50ZWxfZnV6enlfY2xvY2tfY2hlY2so Y3VycmVudF9jb25maWctPm5hbWUsIHBpcGVfY29uZmlnLT5uYW1lKSkgeyBcCi0JCURSTV9FUlJP UigibWlzbWF0Y2ggaW4gIiAjbmFtZSAiICIgXAorCQlJTlRFTF9FUlJfT1JfREJHX0tNUygibWlz bWF0Y2ggaW4gIiAjbmFtZSAiICIgXAogCQkJICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIs IFwKIAkJCSAgY3VycmVudF9jb25maWctPm5hbWUsIFwKIAkJCSAgcGlwZV9jb25maWctPm5hbWUp OyBcCi0JCXJldHVybiBmYWxzZTsgXAorCQlyZXQgPSBmYWxzZTsgXAogCX0KIAogI2RlZmluZSBQ SVBFX0NPTkZfUVVJUksocXVpcmspCVwKQEAgLTEyMTc5LDggKzEyMTkwLDkgQEAgaW50ZWxfcGlw ZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogI3VuZGVmIFBJUEVfQ09O Rl9DSEVDS19GTEFHUwogI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWQogI3VuZGVm IFBJUEVfQ09ORl9RVUlSSworI3VuZGVmIElOVEVMX0VSUl9PUl9EQkdfS01TCiAKLQlyZXR1cm4g dHJ1ZTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMTIzNzcsNyArMTIzODksNyBAQCBjaGVja19jcnRjX3N0 YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQg JWkpXG4iLCBjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7CiAKIAkJaWYg KGFjdGl2ZSAmJgotCQkgICAgIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBjcnRjLT5j b25maWcsICZwaXBlX2NvbmZpZykpIHsKKwkJICAgICFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJl KGRldiwgY3J0Yy0+Y29uZmlnLCAmcGlwZV9jb25maWcsIGZhbHNlKSkgewogCQkJSTkxNV9TVEFU RV9XQVJOKDEsICJwaXBlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ghXG4iKTsKIAkJCWludGVsX2R1bXBf cGlwZV9jb25maWcoY3J0YywgJnBpcGVfY29uZmlnLAogCQkJCQkgICAgICAgIltodyBzdGF0ZV0i KTsKQEAgLTEyNzM0LDYgKzEyNzQ2LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJaW50ZWxfY3J0Yy0+YWN0aXZlID0gZmFsc2U7 CiAJCQlpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKGludGVsX2NydGMpOwogCQl9CisKKwkJLyog RklYTUU6IE1vdmUgdGhpcyB0byBpOXh4X2NydGNfZGlzYWJsZSB3aGVuIGl0IGdldHMgYSBwb2lu dGVyCisJCSAqIHRvIHRoZSBvbGQgY3J0Y19zdGF0ZS4gKi8KKwkJaWYgKHRvX2ludGVsX2NydGNf c3RhdGUoY3J0Y19zdGF0ZSktPnF1aXJrcyAmCisJCSAgICBQSVBFX0NPTkZJR19RVUlSS19XUk9O R19QTEFORSkKKwkJCWludGVsX2NydGMtPnBsYW5lID0gIWludGVsX2NydGMtPnBsYW5lOwogCX0K IAogCS8qIE9ubHkgYWZ0ZXIgZGlzYWJsaW5nIGFsbCBvdXRwdXQgcGlwZWxpbmVzIHRoYXQgd2ls bCBiZSBjaGFuZ2VkIGNhbiB3ZQpAQCAtMTQ0NjQsMTMgKzE0NDgyLDE2IEBAIGludGVsX2NoZWNr X3BsYW5lX21hcHBpbmcoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB9CiAKIHN0YXRpYyB2b2lk IGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCi0JCQkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQorCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZywKKwkJCQlib29sIGZvcmNlX3Jlc3RvcmUpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXI7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gcGlwZV9jb25m aWctPmJhc2Uuc3RhdGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmh3X3N0YXRlID0KKwkJ dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKIAl1MzIgcmVnOwotCWJvb2wg ZW5hYmxlOwogCiAJLyogQ2xlYXIgYW55IGZyYW1lIHN0YXJ0IGRlbGF5cyB1c2VkIGZvciBkZWJ1 Z2dpbmcgbGVmdCBieSB0aGUgQklPUyAqLwogCXJlZyA9IFBJUEVDT05GKGNydGMtPmNvbmZpZy0+ Y3B1X3RyYW5zY29kZXIpOwpAQCAtMTQ0ODQsMjggKzE0NTA1LDY0IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCWRybV9jcnRjX3Zi bGFua19vbigmY3J0Yy0+YmFzZSk7CiAJfQogCisJLyogc2V0IHVwIGN1cnJlbnQgc3RhdGUgKi8K KwlpZiAoIWZvcmNlX3Jlc3RvcmUgJiYgaHdfc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJCWJvb2wg ZW5hYmxlOworCisJCW1lbWNweShwaXBlX2NvbmZpZywgaHdfc3RhdGUsIHNpemVvZigqcGlwZV9j b25maWcpKTsKKwkJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSgmY3J0 Yy0+YmFzZSwgJnBpcGVfY29uZmlnLT5iYXNlKTsKKwkJcGlwZV9jb25maWctPmJhc2Uuc3RhdGUg PSBzdGF0ZTsKKworCQllbmFibGUgPSBmYWxzZTsKKwkJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRj KGRldiwgJmNydGMtPmJhc2UsIGludGVsX2VuY29kZXIpCisJCQllbmFibGUgfD0gaW50ZWxfZW5j b2Rlci0+Y29ubmVjdG9yc19hY3RpdmU7CisKKwkJcGlwZV9jb25maWctPmJhc2UuYWN0aXZlID0g ISFlbmFibGU7CisJfQorCiAJLyogV2UgbmVlZCB0byBzYW5pdGl6ZSB0aGUgcGxhbmUgLT4gcGlw ZSBtYXBwaW5nIGZpcnN0IGJlY2F1c2UgdGhpcyB3aWxsCiAJICogZGlzYWJsZSB0aGUgY3J0YyAo YW5kIGhlbmNlIGNoYW5nZSB0aGUgc3RhdGUpIGlmIGl0IGlzIHdyb25nLiBOb3RlCiAJICogdGhh dCBnZW40KyBoYXMgYSBmaXhlZCBwbGFuZSAtPiBwaXBlIG1hcHBpbmcuICAqLwogCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA8IDQgJiYgIWludGVsX2NoZWNrX3BsYW5lX21hcHBpbmcoY3J0Yykp IHsKLQkJYm9vbCBwbGFuZTsKLQogCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gd3JvbmcgcGxh bmUgY29ubmVjdGlvbiBkZXRlY3RlZCFcbiIsCiAJCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQp OwogCiAJCS8qIFBpcGUgaGFzIHRoZSB3cm9uZyBwbGFuZSBhdHRhY2hlZCBhbmQgdGhlIHBsYW5l IGlzIGFjdGl2ZS4KIAkJICogVGVtcG9yYXJpbHkgY2hhbmdlIHRoZSBwbGFuZSBtYXBwaW5nIGFu ZCBkaXNhYmxlIGV2ZXJ5dGhpbmcKIAkJICogLi4uICAqLwotCQlwbGFuZSA9IGNydGMtPnBsYW5l OwotCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlKS0+dmlz aWJsZSA9IHRydWU7Ci0JCWNydGMtPmJhc2UucHJpbWFyeS0+Y3J0YyA9ICZjcnRjLT5iYXNlOwot CQljcnRjLT5wbGFuZSA9ICFwbGFuZTsKLQkJaW50ZWxfY3J0Y19jb250cm9sKCZjcnRjLT5iYXNl LCBmYWxzZSwgdHJ1ZSk7Ci0JCWNydGMtPnBsYW5lID0gcGxhbmU7CisJCWh3X3N0YXRlLT5xdWly a3MgfD0KKwkJCVBJUEVfQ09ORklHX1FVSVJLX1dST05HX1BMQU5FOworCisJCWNydGMtPnBsYW5l ID0gIWNydGMtPnBsYW5lOworCisJCWlmIChmb3JjZV9yZXN0b3JlKQorCQkJcGlwZV9jb25maWct PmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKKwkJZWxzZQorCQkJcGlwZV9jb25maWctPmJhc2Uu YWN0aXZlID0gZmFsc2U7CiAJfQogCi0JaWYgKGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBF QV9GT1JDRSAmJgotCSAgICBjcnRjLT5waXBlID09IFBJUEVfQSAmJiAoIXBpcGVfY29uZmlnIHx8 ICFwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpKSB7CisJLyogWFhYOiBUaGlzIGlzIG5vdCBhY3Rp dmUgcmlnaHQgbm93ICovCisJaWYgKGh3X3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiBwaXBlX2NvbmZp Zy0+YmFzZS5hY3RpdmUgJiYKKwkgICAgIWk5MTUuZmFzdGJvb3QpIHsKKwkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgc3dfc3RhdGU7CisKKwkJbWVtc2V0KCZzd19zdGF0ZSwgMCwgc2l6ZW9mKHN3 X3N0YXRlKSk7CisJCXN3X3N0YXRlLmJhc2UgPSBwaXBlX2NvbmZpZy0+YmFzZTsKKwkJc3dfc3Rh dGUuc2NhbGVyX3N0YXRlID0gcGlwZV9jb25maWctPnNjYWxlcl9zdGF0ZTsKKwkJc3dfc3RhdGUu c2hhcmVkX2RwbGwgPSBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGw7CisJCXN3X3N0YXRlLmRwbGxf aHdfc3RhdGUgPSBwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZTsKKwkJc3dfc3RhdGUuZGRpX3Bs bF9zZWwgPSBwaXBlX2NvbmZpZy0+ZGRpX3BsbF9zZWw7CisKKwkJaW50ZWxfbW9kZXNldF9waXBl X2NvbmZpZygmY3J0Yy0+YmFzZSwgJnN3X3N0YXRlKTsKKworCQkvKiBDaGVjayBpZiB3ZSBuZWVk IHRvIGZvcmNlIGEgbW9kZXNldCAqLworCQlpZiAoIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUo ZGV2LCAmc3dfc3RhdGUsIGh3X3N0YXRlLCB0cnVlKSkKKwkJCXBpcGVfY29uZmlnLT5iYXNlLm1v ZGVfY2hhbmdlZCA9IHRydWU7CisJfQorCisKKwlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJL X1BJUEVBX0ZPUkNFICYmICFod19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKKwkgICAgY3J0Yy0+cGlw ZSA9PSBQSVBFX0EgJiYgIXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSkgewogCQkvKiBCSU9TIGZv cmdvdCB0byBlbmFibGUgcGlwZSBBLCB0aGlzIG1vc3RseSBoYXBwZW5zIGFmdGVyCiAJCSAqIHJl c3VtZS4gRm9yY2UtZW5hYmxlIHRoZSBwaXBlIHRvIGZpeCB0aGlzLCB0aGUgdXBkYXRlX2RwbXMK IAkJICogY2FsbCBiZWxvdyB3ZSByZXN0b3JlIHRoZSBwaXBlIHRvIHRoZSByaWdodCBzdGF0ZSwg YnV0IGxlYXZlCkBAIC0xNDUxMywxOSArMTQ1NzAsMjQgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2Fu aXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJaW50ZWxfZW5hYmxlX3BpcGVf YShkZXYpOwogCX0KIAotCS8qIEFkanVzdCB0aGUgc3RhdGUgb2YgdGhlIG91dHB1dCBwaXBlIGFj Y29yZGluZyB0byB3aGV0aGVyIHdlCi0JICogaGF2ZSBhY3RpdmUgY29ubmVjdG9ycy9lbmNvZGVy cyAqLwotCWVuYWJsZSA9IGZhbHNlOwotCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZj cnRjLT5iYXNlLCBpbnRlbF9lbmNvZGVyKQotCQllbmFibGUgfD0gaW50ZWxfZW5jb2Rlci0+Y29u bmVjdG9yc19hY3RpdmU7CisJLyogbm90IHJlc3RvcmluZyBzdGF0ZSwga2lsbCBvZmYgYWxsIGNv bm5lY3RvcnMgYW5kIGRpc2FibGUgdGhpcyB0aGluZyAqLworCWlmICghZm9yY2VfcmVzdG9yZSAm JiAhcGlwZV9jb25maWctPmJhc2UuYWN0aXZlKSB7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlOworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCQlp bnQgaSwgcmV0OwogCi0JLyogb25seSB0dXJuIG9mZiBzZXBhcmF0ZWx5IGlmIGNvbmZpZ3VyYXRp b24ncyBub3QgcmVzdG9yZWQsCi0JICogaWYgaXQncyByZXN0b3JlZCBpdCB3aWxsIGNoYW5nZSBt b2RlIG9yIHR1cm4gb2ZmIGFueXdheS4KLQkgKi8KLQlpZiAoIWVuYWJsZSAmJiBjcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUgJiYgIXBpcGVfY29uZmlnKQotCQlpbnRlbF9jcnRjX2NvbnRyb2woJmNy dGMtPmJhc2UsIGZhbHNlLCB0cnVlKTsKKwkJcmV0ID0gZHJtX2F0b21pY19zZXRfbW9kZV9mb3Jf Y3J0YygmcGlwZV9jb25maWctPmJhc2UsIE5VTEwpOworCisJCWZvcl9lYWNoX2Nvbm5lY3Rvcl9p bl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7CisJCQlpZiAoY29ubl9z dGF0ZS0+Y3J0YyAhPSAmY3J0Yy0+YmFzZSkKKwkJCQljb250aW51ZTsKIAotCWlmIChjcnRjLT5h Y3RpdmUgfHwgSEFTX0dNQ0hfRElTUExBWShkZXYpKSB7CisJCQlyZXQgPSBkcm1fYXRvbWljX3Nl dF9jcnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwgTlVMTCk7CisJCQlXQVJOX09OKHJldCk7 CisJCX0KKwl9CisKKwlpZiAoaHdfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IEhBU19HTUNIX0RJU1BM QVkoZGV2KSkgewogCQkvKgogCQkgKiBXZSBzdGFydCBvdXQgd2l0aCB1bmRlcnJ1biByZXBvcnRp bmcgZGlzYWJsZWQgdG8gYXZvaWQgcmFjZXMuCiAJCSAqIEZvciBjb3JyZWN0IGJvb2trZWVwaW5n IG1hcmsgdGhpcyBvbiBhY3RpdmUgY3J0Y3MuCkBAIC0xNDU4MSw2ICsxNDY0Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCiAJCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3RvcikgewogCQkJaWYg KGNvbm5lY3Rvci0+ZW5jb2RlciAhPSBlbmNvZGVyKQogCQkJCWNvbnRpbnVlOworCiAJCQljb25u ZWN0b3ItPmJhc2UuZHBtcyA9IERSTV9NT0RFX0RQTVNfT0ZGOwogCQkJY29ubmVjdG9yLT5iYXNl LmVuY29kZXIgPSBOVUxMOwogCQl9CkBAIC0xNDg4Nyw3ICsxNDk1MCw3IEBAIHZvaWQgaW50ZWxf bW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsK IAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHNoYXJlZF9kcGxsc1tJOTE1X05VTV9Q TExTXTsKLQlpbnQgaTsKKwlpbnQgaSwgcmV0OwogCiAJc3RhdGUgPSBpbnRlbF9tb2Rlc2V0X3Jl YWRvdXRfaHdfc3RhdGUoZGV2KTsKIAlpZiAoSVNfRVJSKHN0YXRlKSkgewpAQCAtMTQ4OTcsNiAr MTQ5NjAsNyBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAogCS8qIHN3YXAgc3cvaHcgc3RhdGUgKi8KIAlkcm1fYXRvbWljX2hlbHBl cl9zd2FwX3N0YXRlKGRldiwgc3RhdGUpOworCiAJaW50ZWxfYXRvbWljX2R1cGxpY2F0ZV9kcGxs X3N0YXRlKGRldl9wcml2LCBzaGFyZWRfZHBsbHMpOwogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1p dChzdGF0ZSk7CiAJbWVtY3B5KHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPnNoYXJlZF9k cGxsLApAQCAtMTQ5MTksMzEgKzE0OTgzLDE5IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQljcnRjX3N0YXRlLT5wbGFuZXNfY2hh bmdlZCA9IGZhbHNlOwogCiAJCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKSB7Ci0JCQlpbnRlbF9t b2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGMtPnN0YXRlLT5tb2RlLAorCQkJaW50ZWxfbW9kZV9m cm9tX3BpcGVfY29uZmlnKCZjcnRjLT5tb2RlLAogCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpKTsKIAkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+c3RhdGUt PmFkanVzdGVkX21vZGUsCiAJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOwog Ci0JCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5tb2RlLCAmY3J0Yy0+c3RhdGUtPm1vZGUpOworCQkJ aWYgKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoY3J0Yy0+c3RhdGUsICZjcnRjLT5tb2Rl KSkKKwkJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5zdGF0ZS0+bW9kZSwgJmNydGMtPm1vZGUpOwor CiAJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5od21vZGUsCiAJCQkJICAgICAgJmNydGMtPnN0YXRl LT5hZGp1c3RlZF9tb2RlKTsKLQotCQkJLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3JjZSBhIG1v ZGVzZXQgKi8KLQkJCWlmICh0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5oYXNfYXVk aW8gIT0KLQkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+aGFzX2F1ZGlv KQotCQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0KLQkJCWlmICh0b19pbnRl bF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5oYXNfaW5mb2ZyYW1lICE9Ci0JCQkgICAgdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPmhhc19pbmZvZnJhbWUpCi0JCQkJY3J0Y19zdGF0 ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJfQogCi0JCWludGVsX3Nhbml0aXplX2NydGMoaW50 ZWxfY3J0YywgIWZvcmNlX3Jlc3RvcmUgPyBOVUxMIDoKLQkJCQkgICAgdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjX3N0YXRlKSk7Ci0KLQkJLyogdHVybiBDUlRDIG9mZiBpZiBhIG1vZGVzZXQgaXMg cmVxdWVzdGVkLiAqLwotCQlpZiAoY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmICFmb3JjZV9y ZXN0b3JlKQotCQkJaW50ZWxfY3J0Y19jb250cm9sKGNydGMsIGZhbHNlLCB0cnVlKTsKKwkJaW50 ZWxfc2FuaXRpemVfY3J0YyhpbnRlbF9jcnRjLCB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3Rh dGUpLCBmb3JjZV9yZXN0b3JlKTsKIAogCQkvKgogCQkgKiBzYW5pdGl6ZV9jcnRjIG1heSBoYXZl IGZvcmNlZCBhbiB1cGRhdGUgb2YgY3J0Yy0+c3RhdGUsCkBAIC0xNDk3MywxNyArMTUwMjUsMTAg QEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpKQogCQlpbGtfd21fZ2V0X2h3X3N0YXRl KGRldik7CiAKLQlpZiAoZm9yY2VfcmVzdG9yZSkgewotCQlpbnQgcmV0OwotCi0JCWk5MTVfcmVk aXNhYmxlX3ZnYShkZXYpOwotCi0JCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQkJ aWYgKHJldCkgewotCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVzdG9yZSBwcmV2aW91cyBtb2Rl XG4iKTsKLQkJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Ci0JCX0KLQl9IGVsc2Ugewor CWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRl KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlc3RvcmUgcHJldmlvdXMg bW9kZVxuIik7CiAJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CiAJfQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IDJiZjY4NzNhNWI4OS4uMmQxOWI1ZDY3ZDlkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMzMwLDYgKzMzMCw3IEBAIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlIHsKICNkZWZpbmUgUElQRV9DT05GSUdfUVVJUktfTU9ERV9TWU5DX0ZMQUdTCSgxPDww KSAvKiB1bnJlbGlhYmxlIHN5bmMgbW9kZS5mbGFncyAqLwogI2RlZmluZSBQSVBFX0NPTkZJR19R VUlSS19JTkhFUklURURfTU9ERQkoMTw8MSkgLyogbW9kZSBpbmhlcml0ZWQgZnJvbSBmaXJtd2Fy ZSAqLwogI2RlZmluZSBQSVBFX0NPTkZJR19RVUlSS19JTklUSUFMX1BMQU5FUwkoMTw8MikgLyog cGxhbmVzIGFyZSBpbiB1bmtub3duIHN0YXRlICovCisjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJL X1dST05HX1BMQU5FCQkoMTw8MykgLyogaW50ZWxfY3J0Yy0+cGxhbmUgaXMgd3JvbmcgKi8KIAl1 bnNpZ25lZCBsb25nIHF1aXJrczsKIAogCS8qIFBpcGUgc291cmNlIHNpemUgKGllLiBwYW5lbCBm aXR0ZXIgaW5wdXQgc2l6ZSkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==