From mboxrd@z Thu Jan 1 00:00:00 1970 From: bradley.d.volkin@intel.com Subject: [PATCH 02/13] drm/i915: Implement command buffer parsing logic Date: Tue, 18 Feb 2014 10:15:46 -0800 Message-ID: <1392747357-25703-3-git-send-email-bradley.d.volkin@intel.com> References: <1392747357-25703-1-git-send-email-bradley.d.volkin@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 24D0CFABBF for ; Tue, 18 Feb 2014 10:17:28 -0800 (PST) In-Reply-To: <1392747357-25703-1-git-send-email-bradley.d.volkin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgoKVGhlIGNvbW1h bmQgcGFyc2VyIHNjYW5zIGJhdGNoIGJ1ZmZlcnMgc3VibWl0dGVkIHZpYSBleGVjYnVmZmVyIGlv Y3RscyBiZWZvcmUKdGhlIGRyaXZlciBzdWJtaXRzIHRoZW0gdG8gaGFyZHdhcmUuIEF0IGEgaGln aCBsZXZlbCwgaXQgbG9va3MgZm9yIHNldmVyYWwKdGhpbmdzOgoKMSkgQ29tbWFuZHMgd2hpY2gg YXJlIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBwcml2aWxlZ2VkIG9yIHdoaWNoIHNob3VsZCBvbmx5 IGJlCiAgIHVzZWQgYnkgdGhlIGtlcm5lbCBkcml2ZXIuIFRoZSBwYXJzZXIgZ2VuZXJhbGx5IHJl amVjdHMgc3VjaCBjb21tYW5kcywgd2l0aAogICB0aGUgcHJvdmlzaW9uIHRoYXQgaXQgbWF5IGFs bG93IHNvbWUgZnJvbSB0aGUgZHJtIG1hc3RlciBwcm9jZXNzLgoyKSBDb21tYW5kcyB3aGljaCBh Y2Nlc3MgcmVnaXN0ZXJzLiBUbyBzdXBwb3J0IGNvcnJlY3QvZW5oYW5jZWQgdXNlcnNwYWNlCiAg IGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBjZXJ0YWluIE9wZW5HTCBleHRlbnNpb25zLCB0 aGUgcGFyc2VyIHByb3ZpZGVzIGEKICAgd2hpdGVsaXN0IG9mIHJlZ2lzdGVycyB3aGljaCB1c2Vy c3BhY2UgbWF5IHNhZmVseSBhY2Nlc3MgKGZvciBib3RoIG5vcm1hbCBhbmQKICAgZHJtIG1hc3Rl ciBwcm9jZXNzZXMpLgozKSBDb21tYW5kcyB3aGljaCBhY2Nlc3MgcHJpdmlsZWdlZCBtZW1vcnkg KGkuZS4gR0dUVCwgSFdTIHBhZ2UsIGV0YykuIFRoZQogICBwYXJzZXIgYWx3YXlzIHJlamVjdHMg c3VjaCBjb21tYW5kcy4KClNlZSB0aGUgb3ZlcnZpZXcgY29tbWVudCBpbiB0aGUgc291cmNlIGZv ciBtb3JlIGRldGFpbHMuCgpUaGlzIHBhdGNoIG9ubHkgaW1wbGVtZW50cyB0aGUgbG9naWMuIFN1 YnNlcXVlbnQgcGF0Y2hlcyB3aWxsIGJ1aWxkIHRoZSB0YWJsZXMKdGhhdCBkcml2ZSB0aGUgcGFy c2VyLgoKdjI6IERvbid0IHNldCB0aGUgc2VjdXJlIGJpdCBpZiB0aGUgcGFyc2VyIHN1Y2NlZWRz CkZhaWwgaGFyZGVyIGR1cmluZyBpbml0Ck1ha2VmaWxlIGNsZWFudXAKS2VybmVsZG9jIGNsZWFu dXAKQ2xhcmlmeSBtb2R1bGUgcGFyYW0gZGVzY3JpcHRpb24KQ29udmVydCBpbnRzIHRvIGJvb2xz IGluIGEgZmV3IHBsYWNlcwpNb3ZlIGNsaWVudC9zdWJjbGllbnQgZGVmcyB0byBpOTE1X3JlZy5o ClJlbW92ZSB0aGUgYml0c19jb3VudCBmaWVsZAoKT1RDLVRyYWNrZXI6IEFYSUEtNDYzMQpDaGFu Z2UtSWQ6IEk1MGI5OGM3MWM2NjU1ODkzMjkxYzc4YTJkMWI4OTU0NTc3YjM3YTMwClNpZ25lZC1v ZmYtYnk6IEJyYWQgVm9sa2luIDxicmFkbGV5LmQudm9sa2luQGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgICAgIHwgNDg1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAg fCAgOTMgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg fCAgMTggKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMgICAgICAgICB8ICAg NSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICAgfCAgMTIgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgICAyICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAzMiArKwogOCBmaWxlcyBj aGFuZ2VkLCA2NDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA0ODUw NDk0Li4zNTY5MTIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTQsNiArMTQsNyBAQCBpOTE1 LXkgOj0gaTkxNV9kcnYubyBpOTE1X2RtYS5vIGk5MTVfaXJxLm8gXAogCSAgaTkxNV9nZW1fZ3R0 Lm8gXAogCSAgaTkxNV9nZW1fc3RvbGVuLm8gXAogCSAgaTkxNV9nZW1fdGlsaW5nLm8gXAorCSAg aTkxNV9jbWRfcGFyc2VyLm8gXAogCSAgaTkxNV9wYXJhbXMubyBcCiAJICBpOTE1X3N5c2ZzLm8g XAogCSAgaTkxNV90cmFjZV9wb2ludHMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3Bh cnNlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTc1NmUKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwpAQCAt MCwwICsxLDQ4NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9u CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1 dGhvcnM6CisgKiAgICBCcmFkIFZvbGtpbiA8YnJhZGxleS5kLnZvbGtpbkBpbnRlbC5jb20+Cisg KgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCisvKioKKyAqIERPQzogaTkxNSBiYXRj aCBidWZmZXIgY29tbWFuZCBwYXJzZXIKKyAqCisgKiBNb3RpdmF0aW9uOgorICogQ2VydGFpbiBP cGVuR0wgZmVhdHVyZXMgKGUuZy4gdHJhbnNmb3JtIGZlZWRiYWNrLCBwZXJmb3JtYW5jZSBtb25p dG9yaW5nKQorICogcmVxdWlyZSB1c2Vyc3BhY2UgY29kZSB0byBzdWJtaXQgYmF0Y2hlcyBjb250 YWluaW5nIGNvbW1hbmRzIHN1Y2ggYXMKKyAqIE1JX0xPQURfUkVHSVNURVJfSU1NIHRvIGFjY2Vz cyB2YXJpb3VzIHJlZ2lzdGVycy4gVW5mb3J0dW5hdGVseSwgc29tZQorICogZ2VuZXJhdGlvbnMg b2YgdGhlIGhhcmR3YXJlIHdpbGwgbm9vcCB0aGVzZSBjb21tYW5kcyBpbiAidW5zZWN1cmUiIGJh dGNoZXMKKyAqICh3aGljaCBpbmNsdWRlcyBhbGwgdXNlcnNwYWNlIGJhdGNoZXMgc3VibWl0dGVk IHZpYSBpOTE1KSBldmVuIHRob3VnaCB0aGUKKyAqIGNvbW1hbmRzIG1heSBiZSBzYWZlIGFuZCBy ZXByZXNlbnQgdGhlIGludGVuZGVkIHByb2dyYW1taW5nIG1vZGVsIG9mIHRoZQorICogZGV2aWNl LgorICoKKyAqIFRoZSBzb2Z0d2FyZSBjb21tYW5kIHBhcnNlciBpcyBzaW1pbGFyIGluIG9wZXJh dGlvbiB0byB0aGUgY29tbWFuZCBwYXJzaW5nCisgKiBkb25lIGluIGhhcmR3YXJlIGZvciB1bnNl Y3VyZSBiYXRjaGVzLiBIb3dldmVyLCB0aGUgc29mdHdhcmUgcGFyc2VyIGFsbG93cworICogc29t ZSBvcGVyYXRpb25zIHRoYXQgd291bGQgYmUgbm9vcCdkIGJ5IGhhcmR3YXJlLCBpZiB0aGUgcGFy c2VyIGRldGVybWluZXMKKyAqIHRoZSBvcGVyYXRpb24gaXMgc2FmZSwgYW5kIHN1Ym1pdHMgdGhl IGJhdGNoIGFzICJzZWN1cmUiIHRvIHByZXZlbnQgaGFyZHdhcmUKKyAqIHBhcnNpbmcuCisgKgor ICogVGhyZWF0czoKKyAqIEF0IGEgaGlnaCBsZXZlbCwgdGhlIGhhcmR3YXJlIChhbmQgc29mdHdh cmUpIGNoZWNrcyBhdHRlbXB0IHRvIHByZXZlbnQKKyAqIGdyYW50aW5nIHVzZXJzcGFjZSB1bmR1 ZSBwcml2aWxlZ2VzLiBUaGVyZSBhcmUgdGhyZWUgY2F0ZWdvcmllcyBvZiBwcml2aWxlZ2UuCisg KgorICogRmlyc3QsIGNvbW1hbmRzIHdoaWNoIGFyZSBleHBsaWNpdGx5IGRlZmluZWQgYXMgcHJp dmlsZWdlZCBvciB3aGljaCBzaG91bGQKKyAqIG9ubHkgYmUgdXNlZCBieSB0aGUga2VybmVsIGRy aXZlci4gVGhlIHBhcnNlciBnZW5lcmFsbHkgcmVqZWN0cyBzdWNoCisgKiBjb21tYW5kcywgdGhv dWdoIGl0IG1heSBhbGxvdyBzb21lIGZyb20gdGhlIGRybSBtYXN0ZXIgcHJvY2Vzcy4KKyAqCisg KiBTZWNvbmQsIGNvbW1hbmRzIHdoaWNoIGFjY2VzcyByZWdpc3RlcnMuIFRvIHN1cHBvcnQgY29y cmVjdC9lbmhhbmNlZAorICogdXNlcnNwYWNlIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBj ZXJ0YWluIE9wZW5HTCBleHRlbnNpb25zLCB0aGUgcGFyc2VyCisgKiBwcm92aWRlcyBhIHdoaXRl bGlzdCBvZiByZWdpc3RlcnMgd2hpY2ggdXNlcnNwYWNlIG1heSBzYWZlbHkgYWNjZXNzIChmb3Ig Ym90aAorICogbm9ybWFsIGFuZCBkcm0gbWFzdGVyIHByb2Nlc3NlcykuCisgKgorICogVGhpcmQs IGNvbW1hbmRzIHdoaWNoIGFjY2VzcyBwcml2aWxlZ2VkIG1lbW9yeSAoaS5lLiBHR1RULCBIV1Mg cGFnZSwgZXRjKS4KKyAqIFRoZSBwYXJzZXIgYWx3YXlzIHJlamVjdHMgc3VjaCBjb21tYW5kcy4K KyAqCisgKiBUaGUgbWFqb3JpdHkgb2YgdGhlIHByb2JsZW1hdGljIGNvbW1hbmRzIGZhbGwgaW4g dGhlIE1JXyogcmFuZ2UsIHdpdGggb25seSBhCisgKiBmZXcgc3BlY2lmaWMgY29tbWFuZHMgb24g ZWFjaCByaW5nIChlLmcuIFBJUEVfQ09OVFJPTCBhbmQgTUlfRkxVU0hfRFcpLgorICoKKyAqIElt cGxlbWVudGF0aW9uOgorICogRWFjaCByaW5nIG1haW50YWlucyB0YWJsZXMgb2YgY29tbWFuZHMg YW5kIHJlZ2lzdGVycyB3aGljaCB0aGUgcGFyc2VyIHVzZXMgaW4KKyAqIHNjYW5uaW5nIGJhdGNo IGJ1ZmZlcnMgc3VibWl0dGVkIHRvIHRoYXQgcmluZy4KKyAqCisgKiBTaW5jZSB0aGUgc2V0IG9m IGNvbW1hbmRzIHRoYXQgdGhlIHBhcnNlciBtdXN0IGNoZWNrIGZvciBpcyBzaWduaWZpY2FudGx5 CisgKiBzbWFsbGVyIHRoYW4gdGhlIG51bWJlciBvZiBjb21tYW5kcyBzdXBwb3J0ZWQsIHRoZSBw YXJzZXIgdGFibGVzIGNvbnRhaW4gb25seQorICogdGhvc2UgY29tbWFuZHMgcmVxdWlyZWQgYnkg dGhlIHBhcnNlci4gVGhpcyBnZW5lcmFsbHkgd29ya3MgYmVjYXVzZSBjb21tYW5kCisgKiBvcGNv ZGUgcmFuZ2VzIGhhdmUgc3RhbmRhcmQgY29tbWFuZCBsZW5ndGggZW5jb2RpbmdzLiBTbyBmb3Ig Y29tbWFuZHMgdGhhdAorICogdGhlIHBhcnNlciBkb2VzIG5vdCBuZWVkIHRvIGNoZWNrLCBpdCBj YW4gZWFzaWx5IHNraXAgdGhlbS4gVGhpcyBpcworICogaW1wbGVtZW50YXRlZCB2aWEgYSBwZXIt cmluZyBsZW5ndGggZGVjb2RpbmcgdmZ1bmMuCisgKgorICogVW5mb3J0dW5hdGVseSwgdGhlcmUg YXJlIGEgbnVtYmVyIG9mIGNvbW1hbmRzIHRoYXQgZG8gbm90IGZvbGxvdyB0aGUgc3RhbmRhcmQK KyAqIGxlbmd0aCBlbmNvZGluZyBmb3IgdGhlaXIgb3Bjb2RlIHJhbmdlLCBwcmltYXJpbHkgYW1v bmdzdCB0aGUgTUlfKiBjb21tYW5kcy4KKyAqIFRvIGhhbmRsZSB0aGlzLCB0aGUgcGFyc2VyIHBy b3ZpZGVzIGEgd2F5IHRvIGRlZmluZSBleHBsaWNpdCAic2tpcCIgZW50cmllcworICogaW4gdGhl IHBlci1yaW5nIGNvbW1hbmQgdGFibGVzLgorICoKKyAqIE90aGVyIGNvbW1hbmQgdGFibGUgZW50 cmllcyBtYXAgZmFpcmx5IGRpcmVjdGx5IHRvIGhpZ2ggbGV2ZWwgY2F0ZWdvcmllcworICogbWVu dGlvbmVkIGFib3ZlOiByZWplY3RlZCwgbWFzdGVyLW9ubHksIHJlZ2lzdGVyIHdoaXRlbGlzdC4g VGhlIHBhcnNlcgorICogaW1wbGVtZW50cyBhIG51bWJlciBvZiBjaGVja3MsIGluY2x1ZGluZyB0 aGUgcHJpdmlsZWdlZCBtZW1vcnkgY2hlY2tzLCB2aWEgYQorICogZ2VuZXJhbCBiaXRtYXNraW5n IG1lY2hhbmlzbS4KKyAqLworCitzdGF0aWMgdTMyIGdlbjdfcmVuZGVyX2dldF9jbWRfbGVuZ3Ro X21hc2sodTMyIGNtZF9oZWFkZXIpCit7CisJdTMyIGNsaWVudCA9IChjbWRfaGVhZGVyICYgSU5T VFJfQ0xJRU5UX01BU0spID4+IElOU1RSX0NMSUVOVF9TSElGVDsKKwl1MzIgc3ViY2xpZW50ID0K KwkJKGNtZF9oZWFkZXIgJiBJTlNUUl9TVUJDTElFTlRfTUFTSykgPj4gSU5TVFJfU1VCQ0xJRU5U X1NISUZUOworCisJaWYgKGNsaWVudCA9PSBJTlNUUl9NSV9DTElFTlQpCisJCXJldHVybiAweDNG OworCWVsc2UgaWYgKGNsaWVudCA9PSBJTlNUUl9SQ19DTElFTlQpIHsKKwkJaWYgKHN1YmNsaWVu dCA9PSBJTlNUUl9NRURJQV9TVUJDTElFTlQpCisJCQlyZXR1cm4gMHhGRkZGOworCQllbHNlCisJ CQlyZXR1cm4gMHhGRjsKKwl9CisKKwlEUk1fREVCVUdfRFJJVkVSKCJDTUQ6IEFibm9ybWFsIHJj cyBjbWQgbGVuZ3RoISAweCUwOFhcbiIsIGNtZF9oZWFkZXIpOworCXJldHVybiAwOworfQorCitz dGF0aWMgdTMyIGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2sodTMyIGNtZF9oZWFkZXIpCit7 CisJdTMyIGNsaWVudCA9IChjbWRfaGVhZGVyICYgSU5TVFJfQ0xJRU5UX01BU0spID4+IElOU1RS X0NMSUVOVF9TSElGVDsKKwl1MzIgc3ViY2xpZW50ID0KKwkJKGNtZF9oZWFkZXIgJiBJTlNUUl9T VUJDTElFTlRfTUFTSykgPj4gSU5TVFJfU1VCQ0xJRU5UX1NISUZUOworCisJaWYgKGNsaWVudCA9 PSBJTlNUUl9NSV9DTElFTlQpCisJCXJldHVybiAweDNGOworCWVsc2UgaWYgKGNsaWVudCA9PSBJ TlNUUl9SQ19DTElFTlQpIHsKKwkJaWYgKHN1YmNsaWVudCA9PSBJTlNUUl9NRURJQV9TVUJDTElF TlQpCisJCQlyZXR1cm4gMHhGRkY7CisJCWVsc2UKKwkJCXJldHVybiAweEZGOworCX0KKworCURS TV9ERUJVR19EUklWRVIoIkNNRDogQWJub3JtYWwgYnNkIGNtZCBsZW5ndGghIDB4JTA4WFxuIiwg Y21kX2hlYWRlcik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1MzIgZ2VuN19ibHRfZ2V0X2Nt ZF9sZW5ndGhfbWFzayh1MzIgY21kX2hlYWRlcikKK3sKKwl1MzIgY2xpZW50ID0gKGNtZF9oZWFk ZXIgJiBJTlNUUl9DTElFTlRfTUFTSykgPj4gSU5TVFJfQ0xJRU5UX1NISUZUOworCisJaWYgKGNs aWVudCA9PSBJTlNUUl9NSV9DTElFTlQpCisJCXJldHVybiAweDNGOworCWVsc2UgaWYgKGNsaWVu dCA9PSBJTlNUUl9CQ19DTElFTlQpCisJCXJldHVybiAweEZGOworCisJRFJNX0RFQlVHX0RSSVZF UigiQ01EOiBBYm5vcm1hbCBibHQgY21kIGxlbmd0aCEgMHglMDhYXG4iLCBjbWRfaGVhZGVyKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdmFsaWRhdGVfY21kc19zb3J0ZWQoc3RydWN0 IGludGVsX3JpbmdfYnVmZmVyICpyaW5nKQoreworCWludCBpOworCisJaWYgKCFyaW5nLT5jbWRf dGFibGVzIHx8IHJpbmctPmNtZF90YWJsZV9jb3VudCA9PSAwKQorCQlyZXR1cm47CisKKwlmb3Ig KGkgPSAwOyBpIDwgcmluZy0+Y21kX3RhYmxlX2NvdW50OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0 IGRybV9pOTE1X2NtZF90YWJsZSAqdGFibGUgPSAmcmluZy0+Y21kX3RhYmxlc1tpXTsKKwkJdTMy IHByZXZpb3VzID0gMDsKKwkJaW50IGo7CisKKwkJZm9yIChqID0gMDsgaiA8IHRhYmxlLT5jb3Vu dDsgaisrKSB7CisJCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2Mg PQorCQkJCSZ0YWJsZS0+dGFibGVbaV07CisJCQl1MzIgY3VyciA9IGRlc2MtPmNtZC52YWx1ZSAm IGRlc2MtPmNtZC5tYXNrOworCisJCQlpZiAoY3VyciA8IHByZXZpb3VzKQorCQkJCURSTV9FUlJP UigiQ01EOiB0YWJsZSBub3Qgc29ydGVkIHJpbmc9JWQgdGFibGU9JWQgZW50cnk9JWQgY21kPTB4 JTA4WCBwcmV2PTB4JTA4WFxuIiwKKwkJCQkJICByaW5nLT5pZCwgaSwgaiwgY3VyciwgcHJldmlv dXMpOworCisJCQlwcmV2aW91cyA9IGN1cnI7CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNo ZWNrX3NvcnRlZChpbnQgcmluZ19pZCwgY29uc3QgdTMyICpyZWdfdGFibGUsIGludCByZWdfY291 bnQpCit7CisJaW50IGk7CisJdTMyIHByZXZpb3VzID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBy ZWdfY291bnQ7IGkrKykgeworCQl1MzIgY3VyciA9IHJlZ190YWJsZVtpXTsKKworCQlpZiAoY3Vy ciA8IHByZXZpb3VzKQorCQkJRFJNX0VSUk9SKCJDTUQ6IHRhYmxlIG5vdCBzb3J0ZWQgcmluZz0l ZCBlbnRyeT0lZCByZWc9MHglMDhYIHByZXY9MHglMDhYXG4iLAorCQkJCSAgcmluZ19pZCwgaSwg Y3VyciwgcHJldmlvdXMpOworCisJCXByZXZpb3VzID0gY3VycjsKKwl9Cit9CisKK3N0YXRpYyB2 b2lkIHZhbGlkYXRlX3JlZ3Nfc29ydGVkKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZykK K3sKKwljaGVja19zb3J0ZWQocmluZy0+aWQsIHJpbmctPnJlZ190YWJsZSwgcmluZy0+cmVnX2Nv dW50KTsKKwljaGVja19zb3J0ZWQocmluZy0+aWQsIHJpbmctPm1hc3Rlcl9yZWdfdGFibGUsIHJp bmctPm1hc3Rlcl9yZWdfY291bnQpOworfQorCisvKioKKyAqIGk5MTVfY21kX3BhcnNlcl9pbml0 X3JpbmcoKSAtIHNldCBjbWQgcGFyc2VyIHJlbGF0ZWQgZmllbGRzIGZvciBhIHJpbmdidWZmZXIK KyAqIEByaW5nOiB0aGUgcmluZ2J1ZmZlciB0byBpbml0aWFsaXplCisgKgorICogT3B0aW9uYWxs eSBpbml0aWFsaXplcyBmaWVsZHMgcmVsYXRlZCB0byBiYXRjaCBidWZmZXIgY29tbWFuZCBwYXJz aW5nIGluIHRoZQorICogc3RydWN0IGludGVsX3JpbmdfYnVmZmVyIGJhc2VkIG9uIHdoZXRoZXIg dGhlIHBsYXRmb3JtIHJlcXVpcmVzIHNvZnR3YXJlCisgKiBjb21tYW5kIHBhcnNpbmcuCisgKi8K K3ZvaWQgaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIg KnJpbmcpCit7CisJaWYgKCFJU19HRU43KHJpbmctPmRldikpCisJCXJldHVybjsKKworCXN3aXRj aCAocmluZy0+aWQpIHsKKwljYXNlIFJDUzoKKwkJcmluZy0+Z2V0X2NtZF9sZW5ndGhfbWFzayA9 IGdlbjdfcmVuZGVyX2dldF9jbWRfbGVuZ3RoX21hc2s7CisJCWJyZWFrOworCWNhc2UgVkNTOgor CQlyaW5nLT5nZXRfY21kX2xlbmd0aF9tYXNrID0gZ2VuN19ic2RfZ2V0X2NtZF9sZW5ndGhfbWFz azsKKwkJYnJlYWs7CisJY2FzZSBCQ1M6CisJCXJpbmctPmdldF9jbWRfbGVuZ3RoX21hc2sgPSBn ZW43X2JsdF9nZXRfY21kX2xlbmd0aF9tYXNrOworCQlicmVhazsKKwljYXNlIFZFQ1M6CisJCS8q IFZFQ1MgY2FuIHVzZSB0aGUgc2FtZSBsZW5ndGhfbWFzayBmdW5jdGlvbiBhcyBWQ1MgKi8KKwkJ cmluZy0+Z2V0X2NtZF9sZW5ndGhfbWFzayA9IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2s7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigiQ01EOiBjbWRfcGFyc2VyX2luaXQg d2l0aCB1bmtub3duIHJpbmc6ICVkXG4iLAorCQkJICByaW5nLT5pZCk7CisJCUJVRygpOworCX0K KworCXZhbGlkYXRlX2NtZHNfc29ydGVkKHJpbmcpOworCXZhbGlkYXRlX3JlZ3Nfc29ydGVkKHJp bmcpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yKgor ZmluZF9jbWRfaW5fdGFibGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSAqdGFibGUs CisJCSAgdTMyIGNtZF9oZWFkZXIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgdGFi bGUtPmNvdW50OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9y ICpkZXNjID0gJnRhYmxlLT50YWJsZVtpXTsKKwkJdTMyIG1hc2tlZF9jbWQgPSBkZXNjLT5jbWQu bWFzayAmIGNtZF9oZWFkZXI7CisJCXUzMiBtYXNrZWRfdmFsdWUgPSBkZXNjLT5jbWQudmFsdWUg JiBkZXNjLT5jbWQubWFzazsKKworCQlpZiAobWFza2VkX2NtZCA9PSBtYXNrZWRfdmFsdWUpCisJ CQlyZXR1cm4gZGVzYzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFJldHVybnMg YSBwb2ludGVyIHRvIGEgZGVzY3JpcHRvciBmb3IgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IGNt ZF9oZWFkZXIuCisgKgorICogVGhlIGNhbGxlciBtdXN0IHN1cHBseSBzcGFjZSBmb3IgYSBkZWZh dWx0IGRlc2NyaXB0b3IgdmlhIHRoZSBkZWZhdWx0X2Rlc2MKKyAqIHBhcmFtZXRlci4gSWYgbm8g ZGVzY3JpcHRvciBmb3IgdGhlIHNwZWNpZmllZCBjb21tYW5kIGV4aXN0cyBpbiB0aGUgcmluZydz CisgKiBjb21tYW5kIHBhcnNlciB0YWJsZXMsIHRoaXMgZnVuY3Rpb24gZmlsbHMgaW4gZGVmYXVs dF9kZXNjIGJhc2VkIG9uIHRoZQorICogcmluZydzIGRlZmF1bHQgbGVuZ3RoIGVuY29kaW5nIGFu ZCByZXR1cm5zIGRlZmF1bHRfZGVzYy4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkx NV9jbWRfZGVzY3JpcHRvcioKK2ZpbmRfY21kKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmlu ZywKKwkgdTMyIGNtZF9oZWFkZXIsCisJIHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAq ZGVmYXVsdF9kZXNjKQoreworCXUzMiBtYXNrOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8 IHJpbmctPmNtZF90YWJsZV9jb3VudDsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9j bWRfZGVzY3JpcHRvciAqZGVzYzsKKworCQlkZXNjID0gZmluZF9jbWRfaW5fdGFibGUoJnJpbmct PmNtZF90YWJsZXNbaV0sIGNtZF9oZWFkZXIpOworCQlpZiAoZGVzYykKKwkJCXJldHVybiBkZXNj OworCX0KKworCW1hc2sgPSByaW5nLT5nZXRfY21kX2xlbmd0aF9tYXNrKGNtZF9oZWFkZXIpOwor CWlmICghbWFzaykKKwkJcmV0dXJuIE5VTEw7CisKKwlCVUdfT04oIWRlZmF1bHRfZGVzYyk7CisJ ZGVmYXVsdF9kZXNjLT5mbGFncyA9IENNRF9ERVNDX1NLSVA7CisJZGVmYXVsdF9kZXNjLT5sZW5n dGgubWFzayA9IG1hc2s7CisKKwlyZXR1cm4gZGVmYXVsdF9kZXNjOworfQorCitzdGF0aWMgYm9v bCB2YWxpZF9yZWcoY29uc3QgdTMyICp0YWJsZSwgaW50IGNvdW50LCB1MzIgYWRkcikKK3sKKwlp ZiAodGFibGUgJiYgY291bnQgIT0gMCkgeworCQlpbnQgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwg Y291bnQ7IGkrKykgeworCQkJaWYgKHRhYmxlW2ldID09IGFkZHIpCisJCQkJcmV0dXJuIHRydWU7 CisJCX0KKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB1MzIgKnZtYXBfYmF0Y2go c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpbnQgaTsKKwl2b2lkICphZGRy ID0gTlVMTDsKKwlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7CisJc3RydWN0IHBhZ2UgKipw YWdlczsKKworCXBhZ2VzID0gZHJtX21hbGxvY19hYihvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NI SUZULCBzaXplb2YoKnBhZ2VzKSk7CisJaWYgKHBhZ2VzID09IE5VTEwpIHsKKwkJRFJNX0RFQlVH X0RSSVZFUigiRmFpbGVkIHRvIGdldCBzcGFjZSBmb3IgcGFnZXNcbiIpOworCQlnb3RvIGZpbmlz aDsKKwl9CisKKwlpID0gMDsKKwlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNnbCwgJnNn X2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKSB7CisJCXBhZ2VzW2ldID0gc2dfcGFnZV9pdGVy X3BhZ2UoJnNnX2l0ZXIpOworCQlpKys7CisJfQorCisJYWRkciA9IHZtYXAocGFnZXMsIGksIDAs IFBBR0VfS0VSTkVMKTsKKwlpZiAoYWRkciA9PSBOVUxMKSB7CisJCURSTV9ERUJVR19EUklWRVIo IkZhaWxlZCB0byB2bWFwIHBhZ2VzXG4iKTsKKwkJZ290byBmaW5pc2g7CisJfQorCitmaW5pc2g6 CisJaWYgKHBhZ2VzKQorCQlkcm1fZnJlZV9sYXJnZShwYWdlcyk7CisJcmV0dXJuICh1MzIqKWFk ZHI7Cit9CisKKy8qKgorICogaTkxNV9uZWVkc19jbWRfcGFyc2VyKCkgLSBzaG91bGQgYSBnaXZl biByaW5nIHVzZSBzb2Z0d2FyZSBjb21tYW5kIHBhcnNpbmc/CisgKiBAcmluZzogdGhlIHJpbmcg aW4gcXVlc3Rpb24KKyAqCisgKiBPbmx5IGNlcnRhaW4gcGxhdGZvcm1zIHJlcXVpcmUgc29mdHdh cmUgYmF0Y2ggYnVmZmVyIGNvbW1hbmQgcGFyc2luZywgYW5kCisgKiBvbmx5IHdoZW4gZW5hYmxl ZCB2aWEgbW9kdWxlIHBhcmFtdGVyLgorICoKKyAqIFJldHVybjogdHJ1ZSBpZiB0aGUgcmluZyBy ZXF1aXJlcyBzb2Z0d2FyZSBjb21tYW5kIHBhcnNpbmcKKyAqLworYm9vbCBpOTE1X25lZWRzX2Nt ZF9wYXJzZXIoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nKQoreworCS8qIE5vIGNvbW1h bmQgdGFibGVzIGluZGljYXRlcyBhIHBsYXRmb3JtIHdpdGhvdXQgcGFyc2luZyAqLworCWlmICgh cmluZy0+Y21kX3RhYmxlcykKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIChpOTE1LmVuYWJs ZV9jbWRfcGFyc2VyID09IDEpOworfQorCisjZGVmaW5lIExFTkdUSF9CSUFTIDIKKworLyoqCisg KiBpOTE1X3BhcnNlX2NtZHMoKSAtIHBhcnNlIGEgc3VibWl0dGVkIGJhdGNoIGJ1ZmZlciBmb3Ig cHJpdmlsZWdlIHZpb2xhdGlvbnMKKyAqIEByaW5nOiB0aGUgcmluZyBvbiB3aGljaCB0aGUgYmF0 Y2ggaXMgdG8gZXhlY3V0ZQorICogQGJhdGNoX29iajogdGhlIGJhdGNoIGJ1ZmZlciBpbiBxdWVz dGlvbgorICogQGJhdGNoX3N0YXJ0X29mZnNldDogYnl0ZSBvZmZzZXQgaW4gdGhlIGJhdGNoIGF0 IHdoaWNoIGV4ZWN1dGlvbiBzdGFydHMKKyAqIEBpc19tYXN0ZXI6IGlzIHRoZSBzdWJtaXR0aW5n IHByb2Nlc3MgdGhlIGRybSBtYXN0ZXI/CisgKgorICogUGFyc2VzIHRoZSBzcGVjaWZpZWQgYmF0 Y2ggYnVmZmVyIGxvb2tpbmcgZm9yIHByaXZpbGVnZSB2aW9sYXRpb25zIGFzCisgKiBkZXNjcmli ZWQgaW4gdGhlIG92ZXJ2aWV3LgorICoKKyAqIFJldHVybjogbm9uLXplcm8gaWYgdGhlIHBhcnNl ciBmaW5kcyB2aW9sYXRpb25zIG9yIG90aGVyd2lzZSBmYWlscworICovCitpbnQgaTkxNV9wYXJz ZV9jbWRzKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZywKKwkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmosCisJCSAgICB1MzIgYmF0Y2hfc3RhcnRfb2Zmc2V0 LAorCQkgICAgYm9vbCBpc19tYXN0ZXIpCit7CisJaW50IHJldCA9IDA7CisJdTMyICpjbWQsICpi YXRjaF9iYXNlLCAqYmF0Y2hfZW5kOworCXN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciBk ZWZhdWx0X2Rlc2MgPSB7IDAgfTsKKwlpbnQgbmVlZHNfY2xmbHVzaCA9IDA7CisKKwlyZXQgPSBp OTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV9yZWFkKGJhdGNoX29iaiwgJm5lZWRzX2NsZmx1c2gp OworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigiQ01EOiBmYWlsZWQgdG8gcHJlcCBy ZWFkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwliYXRjaF9iYXNlID0gdm1hcF9iYXRjaChi YXRjaF9vYmopOworCWlmICghYmF0Y2hfYmFzZSkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJDTUQ6 IEZhaWxlZCB0byB2bWFwIGJhdGNoXG4iKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2Vz KGJhdGNoX29iaik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWlmIChuZWVkc19jbGZsdXNo KQorCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKChjaGFyICopYmF0Y2hfYmFzZSwgYmF0Y2hfb2Jq LT5iYXNlLnNpemUpOworCisJY21kID0gYmF0Y2hfYmFzZSArIChiYXRjaF9zdGFydF9vZmZzZXQg LyBzaXplb2YoKmNtZCkpOworCWJhdGNoX2VuZCA9IGNtZCArIChiYXRjaF9vYmotPmJhc2Uuc2l6 ZSAvIHNpemVvZigqYmF0Y2hfZW5kKSk7CisKKwl3aGlsZSAoY21kIDwgYmF0Y2hfZW5kKSB7CisJ CWNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYzsKKwkJdTMyIGxlbmd0 aDsKKworCQlpZiAoKmNtZCA9PSBNSV9CQVRDSF9CVUZGRVJfRU5EKQorCQkJYnJlYWs7CisKKwkJ ZGVzYyA9IGZpbmRfY21kKHJpbmcsICpjbWQsICZkZWZhdWx0X2Rlc2MpOworCQlpZiAoIWRlc2Mp IHsKKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogVW5yZWNvZ25pemVkIGNvbW1hbmQ6IDB4JTA4 WFxuIiwKKwkJCQkJICpjbWQpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWJyZWFrOworCQl9CisK KwkJaWYgKGRlc2MtPmZsYWdzICYgQ01EX0RFU0NfRklYRUQpCisJCQlsZW5ndGggPSBkZXNjLT5s ZW5ndGguZml4ZWQ7CisJCWVsc2UKKwkJCWxlbmd0aCA9ICgoKmNtZCAmIGRlc2MtPmxlbmd0aC5t YXNrKSArIExFTkdUSF9CSUFTKTsKKworCQlpZiAoKGJhdGNoX2VuZCAtIGNtZCkgPCBsZW5ndGgp IHsKKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogQ29tbWFuZCBsZW5ndGggZXhjZWVkcyBiYXRj aCBsZW5ndGg6IDB4JTA4WCBsZW5ndGg9JWQgYmF0Y2hsZW49JWxkXG4iLAorCQkJCQkgKmNtZCwK KwkJCQkJIGxlbmd0aCwKKwkJCQkJIGJhdGNoX2VuZCAtIGNtZCk7CisJCQlyZXQgPSAtRUlOVkFM OworCQkJYnJlYWs7CisJCX0KKworCQlpZiAoZGVzYy0+ZmxhZ3MgJiBDTURfREVTQ19SRUpFQ1Qp IHsKKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQgY29tbWFuZDogMHglMDhYXG4i LCAqY21kKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlicmVhazsKKwkJfQorCisJCWlmICgoZGVz Yy0+ZmxhZ3MgJiBDTURfREVTQ19NQVNURVIpICYmICFpc19tYXN0ZXIpIHsKKwkJCURSTV9ERUJV R19EUklWRVIoIkNNRDogUmVqZWN0ZWQgbWFzdGVyLW9ubHkgY29tbWFuZDogMHglMDhYXG4iLAor CQkJCQkgKmNtZCk7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKworCQlpZiAo ZGVzYy0+ZmxhZ3MgJiBDTURfREVTQ19SRUdJU1RFUikgeworCQkJdTMyIHJlZ19hZGRyID0gY21k W2Rlc2MtPnJlZy5vZmZzZXRdICYgZGVzYy0+cmVnLm1hc2s7CisKKwkJCWlmICghdmFsaWRfcmVn KHJpbmctPnJlZ190YWJsZSwKKwkJCQkgICAgICAgcmluZy0+cmVnX2NvdW50LCByZWdfYWRkcikp IHsKKwkJCQlpZiAoIWlzX21hc3RlciB8fAorCQkJCSAgICAhdmFsaWRfcmVnKHJpbmctPm1hc3Rl cl9yZWdfdGFibGUsCisJCQkJCSAgICAgICByaW5nLT5tYXN0ZXJfcmVnX2NvdW50LAorCQkJCQkg ICAgICAgcmVnX2FkZHIpKSB7CisJCQkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQg cmVnaXN0ZXIgMHglMDhYIGluIGNvbW1hbmQ6IDB4JTA4WCAocmluZz0lZClcbiIsCisJCQkJCQkJ IHJlZ19hZGRyLAorCQkJCQkJCSAqY21kLAorCQkJCQkJCSByaW5nLT5pZCk7CisJCQkJCXJldCA9 IC1FSU5WQUw7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWlmIChkZXNjLT5m bGFncyAmIENNRF9ERVNDX0JJVE1BU0spIHsKKwkJCWludCBpOworCisJCQlmb3IgKGkgPSAwOyBp IDwgTUFYX0NNRF9ERVNDX0JJVE1BU0tTOyBpKyspIHsKKwkJCQl1MzIgZHdvcmQ7CisKKwkJCQlp ZiAoZGVzYy0+Yml0c1tpXS5tYXNrID09IDApCisJCQkJCWJyZWFrOworCisJCQkJZHdvcmQgPSBj bWRbZGVzYy0+Yml0c1tpXS5vZmZzZXRdICYKKwkJCQkJZGVzYy0+Yml0c1tpXS5tYXNrOworCisJ CQkJaWYgKGR3b3JkICE9IGRlc2MtPmJpdHNbaV0uZXhwZWN0ZWQpIHsKKwkJCQkJRFJNX0RFQlVH X0RSSVZFUigiQ01EOiBSZWplY3RlZCBjb21tYW5kIDB4JTA4WCBmb3IgYml0bWFzayAweCUwOFgg KGV4cD0weCUwOFggYWN0PTB4JTA4WCkgKHJpbmc9JWQpXG4iLAorCQkJCQkJCSAqY21kLAorCQkJ CQkJCSBkZXNjLT5iaXRzW2ldLm1hc2ssCisJCQkJCQkJIGRlc2MtPmJpdHNbaV0uZXhwZWN0ZWQs CisJCQkJCQkJIGR3b3JkLCByaW5nLT5pZCk7CisJCQkJCXJldCA9IC1FSU5WQUw7CisJCQkJCWJy ZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKHJldCkKKwkJCQlicmVhazsKKwkJfQorCisJCWNt ZCArPSBsZW5ndGg7CisJfQorCisJaWYgKGNtZCA+PSBiYXRjaF9lbmQpIHsKKwkJRFJNX0RFQlVH X0RSSVZFUigiQ01EOiBHb3QgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHcvbyBhIEJCRSBjbWQh XG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwl2dW5tYXAoYmF0Y2hfYmFzZSk7CisKKwlp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoYmF0Y2hfb2JqKTsKKworCXJldHVybiByZXQ7Cit9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA1ODIwMzViLi4zNzY0NzJmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTE4MDMsNiArMTgwMyw5MCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlIHsKIAlhdG9taWNfdCBycHNfd2FpdF9ib29zdDsKIH07CiAKKy8qCisgKiBBIGNv bW1hbmQgdGhhdCByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJ5IHRoZSBjb21tYW5kIHBhcnNl ci4KKyAqLworc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yIHsKKwkvKgorCSAqIEZsYWdz IGRlc2NyaWJpbmcgaG93IHRoZSBjb21tYW5kIHBhcnNlciBwcm9jZXNzZXMgdGhlIGNvbW1hbmQu CisJICoKKwkgKiBDTURfREVTQ19GSVhFRDogVGhlIGNvbW1hbmQgaGFzIGEgZml4ZWQgbGVuZ3Ro IGlmIHRoaXMgaXMgc2V0LAorCSAqICAgICAgICAgICAgICAgICBhIGxlbmd0aCBtYXNrIGlmIG5v dCBzZXQKKwkgKiBDTURfREVTQ19TS0lQOiBUaGUgY29tbWFuZCBpcyBhbGxvd2VkIGJ1dCBkb2Vz IG5vdCBmb2xsb3cgdGhlCisJICogICAgICAgICAgICAgICAgc3RhbmRhcmQgbGVuZ3RoIGVuY29k aW5nIGZvciB0aGUgb3Bjb2RlIHJhbmdlIGluCisJICogICAgICAgICAgICAgICAgd2hpY2ggaXQg ZmFsbHMKKwkgKiBDTURfREVTQ19SRUpFQ1Q6IFRoZSBjb21tYW5kIGlzIG5ldmVyIGFsbG93ZWQK KwkgKiBDTURfREVTQ19SRUdJU1RFUjogVGhlIGNvbW1hbmQgc2hvdWxkIGJlIGNoZWNrZWQgYWdh aW5zdCB0aGUKKwkgKiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgd2hpdGVsaXN0IGZvciB0 aGUgYXBwcm9wcmlhdGUgcmluZworCSAqIENNRF9ERVNDX01BU1RFUjogVGhlIGNvbW1hbmQgaXMg YWxsb3dlZCBpZiB0aGUgc3VibWl0dGluZyBwcm9jZXNzCisJICogICAgICAgICAgICAgICAgICBp cyB0aGUgRFJNIG1hc3RlcgorCSAqLworCXUzMiBmbGFnczsKKyNkZWZpbmUgQ01EX0RFU0NfRklY RUQgICAgKDE8PDApCisjZGVmaW5lIENNRF9ERVNDX1NLSVAgICAgICgxPDwxKQorI2RlZmluZSBD TURfREVTQ19SRUpFQ1QgICAoMTw8MikKKyNkZWZpbmUgQ01EX0RFU0NfUkVHSVNURVIgKDE8PDMp CisjZGVmaW5lIENNRF9ERVNDX0JJVE1BU0sgICgxPDw0KQorI2RlZmluZSBDTURfREVTQ19NQVNU RVIgICAoMTw8NSkKKworCS8qCisJICogVGhlIGNvbW1hbmQncyB1bmlxdWUgaWRlbnRpZmljYXRp b24gYml0cyBhbmQgdGhlIGJpdG1hc2sgdG8gZ2V0IHRoZW0uCisJICogVGhpcyBpc24ndCBzdHJp Y3RseSB0aGUgb3Bjb2RlIGZpZWxkIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMgYW5kIG1heQorCSAq IGFsc28gaW5jbHVkZSB0eXBlLCBzdWJ0eXBlLCBhbmQvb3Igc3Vib3AgZmllbGRzLgorCSAqLwor CXN0cnVjdCB7CisJCXUzMiB2YWx1ZTsKKwkJdTMyIG1hc2s7CisJfSBjbWQ7CisKKwkvKgorCSAq IFRoZSBjb21tYW5kJ3MgbGVuZ3RoLiBUaGUgY29tbWFuZCBpcyBlaXRoZXIgZml4ZWQgbGVuZ3Ro IChpLmUuIGRvZXMKKwkgKiBub3QgaW5jbHVkZSBhIGxlbmd0aCBmaWVsZCkgb3IgaGFzIGEgbGVu Z3RoIGZpZWxkIG1hc2suIFRoZSBmbGFnCisJICogQ01EX0RFU0NfRklYRUQgaW5kaWNhdGVzIGEg Zml4ZWQgbGVuZ3RoLiBPdGhlcndpc2UsIHRoZSBjb21tYW5kIGhhcworCSAqIGEgbGVuZ3RoIG1h c2suIEFsbCBjb21tYW5kIGVudHJpZXMgaW4gYSBjb21tYW5kIHRhYmxlIG11c3QgaW5jbHVkZQor CSAqIGxlbmd0aCBpbmZvcm1hdGlvbi4KKwkgKi8KKwl1bmlvbiB7CisJCXUzMiBmaXhlZDsKKwkJ dTMyIG1hc2s7CisJfSBsZW5ndGg7CisKKwkvKgorCSAqIERlc2NyaWJlcyB3aGVyZSB0byBmaW5k IGEgcmVnaXN0ZXIgYWRkcmVzcyBpbiB0aGUgY29tbWFuZCB0byBjaGVjaworCSAqIGFnYWluc3Qg dGhlIHJpbmcncyByZWdpc3RlciB3aGl0ZWxpc3QuIE9ubHkgdmFsaWQgaWYgZmxhZ3MgaGFzIHRo ZQorCSAqIENNRF9ERVNDX1JFR0lTVEVSIGJpdCBzZXQuCisJICovCisJc3RydWN0IHsKKwkJdTMy IG9mZnNldDsKKwkJdTMyIG1hc2s7CisJfSByZWc7CisKKyNkZWZpbmUgTUFYX0NNRF9ERVNDX0JJ VE1BU0tTIDMKKwkvKgorCSAqIERlc2NyaWJlcyBjb21tYW5kIGNoZWNrcyB3aGVyZSBhIHBhcnRp Y3VsYXIgZHdvcmQgaXMgbWFza2VkIGFuZAorCSAqIGNvbXBhcmVkIGFnYWluc3QgYW4gZXhwZWN0 ZWQgdmFsdWUuIElmIHRoZSBjb21tYW5kIGRvZXMgbm90IG1hdGNoCisJICogdGhlIGV4cGVjdGVk IHZhbHVlLCB0aGUgcGFyc2VyIHJlamVjdHMgaXQuIE9ubHkgdmFsaWQgaWYgZmxhZ3MgaGFzCisJ ICogdGhlIENNRF9ERVNDX0JJVE1BU0sgYml0IHNldC4gT25seSBlbnRyaWVzIHdoZXJlIG1hc2sg aXMgbm9uLXplcm8KKwkgKiBhcmUgdmFsaWQuCisJICovCisJc3RydWN0IHsKKwkJdTMyIG9mZnNl dDsKKwkJdTMyIG1hc2s7CisJCXUzMiBleHBlY3RlZDsKKwl9IGJpdHNbTUFYX0NNRF9ERVNDX0JJ VE1BU0tTXTsKK307CisKKy8qCisgKiBBIHRhYmxlIG9mIGNvbW1hbmRzIHJlcXVpcmluZyBzcGVj aWFsIGhhbmRsaW5nIGJ5IHRoZSBjb21tYW5kIHBhcnNlci4KKyAqCisgKiBFYWNoIHJpbmcgaGFz IGFuIGFycmF5IG9mIHRhYmxlcy4gRWFjaCB0YWJsZSBjb25zaXN0cyBvZiBhbiBhcnJheSBvZiBj b21tYW5kCisgKiBkZXNjcmlwdG9ycywgd2hpY2ggbXVzdCBiZSBzb3J0ZWQgd2l0aCBjb21tYW5k IG9wY29kZXMgaW4gYXNjZW5kaW5nIG9yZGVyLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfY21kX3Rh YmxlIHsKKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKnRhYmxlOworCWlu dCBjb3VudDsKK307CisKICNkZWZpbmUgSU5URUxfSU5GTyhkZXYpCSgmdG9faTkxNShkZXYpLT5p bmZvKQogCiAjZGVmaW5lIElTX0k4MzAoZGV2KQkJKChkZXYpLT5wZGV2LT5kZXZpY2UgPT0gMHgz NTc3KQpAQCAtMTk2NSw2ICsyMDQ5LDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIHsKIAlpbnQgZW5h YmxlX3BjODsKIAlpbnQgcGM4X3RpbWVvdXQ7CiAJaW50IGludmVydF9icmlnaHRuZXNzOworCWlu dCBlbmFibGVfY21kX3BhcnNlcjsKIAkvKiBsZWF2ZSBib29scyBhdCB0aGUgZW5kIHRvIG5vdCBj cmVhdGUgaG9sZXMgKi8KIAlib29sIGVuYWJsZV9oYW5nY2hlY2s7CiAJYm9vbCBmYXN0Ym9vdDsK QEAgLTI0OTAsNiArMjU3NSwxNCBAQCB2b2lkIGk5MTVfZGVzdHJveV9lcnJvcl9zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgKmluc3Rkb25lKTsKIGNvbnN0IGNoYXIgKmk5MTVf Y2FjaGVfbGV2ZWxfc3RyKGludCB0eXBlKTsKIAorLyogaTkxNV9jbWRfcGFyc2VyLmMgKi8KK3Zv aWQgaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJp bmcpOworYm9vbCBpOTE1X25lZWRzX2NtZF9wYXJzZXIoc3RydWN0IGludGVsX3JpbmdfYnVmZmVy ICpyaW5nKTsKK2ludCBpOTE1X3BhcnNlX2NtZHMoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpy aW5nLAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKKwkJICAg IHUzMiBiYXRjaF9zdGFydF9vZmZzZXQsCisJCSAgICBib29sIGlzX21hc3Rlcik7CisKIC8qIGk5 MTVfc3VzcGVuZC5jICovCiBleHRlcm4gaW50IGk5MTVfc2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmlu ZGV4IGQ3MjI5YWQuLjM4NTFhMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKQEAgLTExODIsNiArMTE4MiwyNCBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJfQogCWJhdGNoX29iai0+YmFz ZS5wZW5kaW5nX3JlYWRfZG9tYWlucyB8PSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKIAorCWlm IChpOTE1X25lZWRzX2NtZF9wYXJzZXIocmluZykpIHsKKwkJcmV0ID0gaTkxNV9wYXJzZV9jbWRz KHJpbmcsCisJCQkJICAgICAgYmF0Y2hfb2JqLAorCQkJCSAgICAgIGFyZ3MtPmJhdGNoX3N0YXJ0 X29mZnNldCwKKwkJCQkgICAgICBmaWxlLT5pc19tYXN0ZXIpOworCQlpZiAocmV0KQorCQkJZ290 byBlcnI7CisKKwkJLyoKKwkJICogWFhYOiBBY3R1YWxseSBkbyB0aGlzIHdoZW4gZW5hYmxpbmcg YmF0Y2ggY29weS4uLgorCQkgKgorCQkgKiBTZXQgdGhlIERJU1BBVENIX1NFQ1VSRSBiaXQgdG8g cmVtb3ZlIHRoZSBOT05fU0VDVVJFIGJpdAorCQkgKiBmcm9tIE1JX0JBVENIX0JVRkZFUl9TVEFS VCBjb21tYW5kcyBpc3N1ZWQgaW4gdGhlCisJCSAqIGRpc3BhdGNoX2V4ZWNidWZmZXIgaW1wbGVt ZW50YXRpb25zLiBXZSBzcGVjaWZpY2FsbHkgZG9uJ3QKKwkJICogd2FudCB0aGF0IHNldCB3aGVu IHRoZSBjb21tYW5kIHBhcnNlciBpcyBlbmFibGVkLgorCQkgKi8KKwl9CisKIAkvKiBzbmIvaXZi L3ZsdiBjb25mbGF0ZSB0aGUgImJhdGNoIGluIHBwZ3R0IiBiaXQgd2l0aCB0aGUgIm5vbi1zZWN1 cmUKIAkgKiBiYXRjaCIgYml0LiBIZW5jZSB3ZSBuZWVkIHRvIHBpbiBzZWN1cmUgYmF0Y2hlcyBp bnRvIHRoZSBnbG9iYWwgZ3R0LgogCSAqIGhzdyBzaG91bGQgaGF2ZSB0aGlzIGZpeGVkLCBidXQg YmR3IG11Y2tzIGl0IHVwIGFnYWluLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKaW5k ZXggM2I0ODI1OC4uYWJhMGI5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wYXJhbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCkBAIC00 OCw2ICs0OCw3IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkgPSB7CiAJ LnJlc2V0ID0gdHJ1ZSwKIAkuaW52ZXJ0X2JyaWdodG5lc3MgPSAwLAogCS5kaXNhYmxlX2Rpc3Bs YXkgPSAwLAorCS5lbmFibGVfY21kX3BhcnNlciA9IDAsCiB9OwogCiBtb2R1bGVfcGFyYW1fbmFt ZWQobW9kZXNldCwgaTkxNS5tb2Rlc2V0LCBpbnQsIDA0MDApOwpAQCAtMTU3LDMgKzE1OCw3IEBA IE1PRFVMRV9QQVJNX0RFU0MoaW52ZXJ0X2JyaWdodG5lc3MsCiAKIG1vZHVsZV9wYXJhbV9uYW1l ZChkaXNhYmxlX2Rpc3BsYXksIGk5MTUuZGlzYWJsZV9kaXNwbGF5LCBib29sLCAwNjAwKTsKIE1P RFVMRV9QQVJNX0RFU0MoZGlzYWJsZV9kaXNwbGF5LCAiRGlzYWJsZSBkaXNwbGF5IChkZWZhdWx0 OiBmYWxzZSkiKTsKKworbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9jbWRfcGFyc2VyLCBpOTE1 LmVuYWJsZV9jbWRfcGFyc2VyLCBpbnQsIDA2MDApOworTU9EVUxFX1BBUk1fREVTQyhlbmFibGVf Y21kX3BhcnNlciwKKwkJIkVuYWJsZSBjb21tYW5kIHBhcnNpbmcgKDE9ZW5hYmxlZCwgMD1kaXNh YmxlZCBbZGVmYXVsdF0pIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCAyZjU2NGNlLi5l MTRkZmRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTE3NSw2ICsxNzUsMTggQEAKICNk ZWZpbmUgVkdBX0NSX0RBVEFfQ0dBIDB4M2Q1CiAKIC8qCisgKiBJbnN0cnVjdGlvbiBmaWVsZCBk ZWZpbml0aW9ucyB1c2VkIGJ5IHRoZSBjb21tYW5kIHBhcnNlcgorICovCisjZGVmaW5lIElOU1RS X0NMSUVOVF9TSElGVCAgICAgIDI5CisjZGVmaW5lIElOU1RSX0NMSUVOVF9NQVNLICAgICAgIDB4 RTAwMDAwMDAKKyNkZWZpbmUgICBJTlNUUl9NSV9DTElFTlQgICAgICAgMHgwCisjZGVmaW5lICAg SU5TVFJfQkNfQ0xJRU5UICAgICAgIDB4MgorI2RlZmluZSAgIElOU1RSX1JDX0NMSUVOVCAgICAg ICAweDMKKyNkZWZpbmUgSU5TVFJfU1VCQ0xJRU5UX1NISUZUICAgMjcKKyNkZWZpbmUgSU5TVFJf U1VCQ0xJRU5UX01BU0sgICAgMHgxODAwMDAwMAorI2RlZmluZSAgIElOU1RSX01FRElBX1NVQkNM SUVOVCAweDIKKworLyoKICAqIE1lbW9yeSBpbnRlcmZhY2UgaW5zdHJ1Y3Rpb25zIHVzZWQgYnkg dGhlIGtlcm5lbAogICovCiAjZGVmaW5lIE1JX0lOU1RSKG9wY29kZSwgZmxhZ3MpICgoKG9wY29k ZSkgPDwgMjMpIHwgKGZsYWdzKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YwppbmRleCBiMzQwYzc1Li43YmZmNWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCkBAIC0xMzg4LDYgKzEzODgsOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmlu Z19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoSVNfSTgzMChyaW5nLT5kZXYp IHx8IElTXzg0NUcocmluZy0+ZGV2KSkKIAkJcmluZy0+ZWZmZWN0aXZlX3NpemUgLT0gMTI4Owog CisJaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhyaW5nKTsKKwogCXJldHVybiAwOwogCiBlcnJf dW5tYXA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMDhiOTFj Ni4uMDlhZjkyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAt MTY0LDYgKzE2NCwzOCBAQCBzdHJ1Y3QgIGludGVsX3JpbmdfYnVmZmVyIHsKIAkJdTMyIGd0dF9v ZmZzZXQ7CiAJCXZvbGF0aWxlIHUzMiAqY3B1X3BhZ2U7CiAJfSBzY3JhdGNoOworCisJLyoKKwkg KiBUYWJsZXMgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgcGFyc2VyIG5lZWRzIHRvIGtub3cgYWJv dXQKKwkgKiBmb3IgdGhpcyByaW5nLgorCSAqLworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRf dGFibGUgKmNtZF90YWJsZXM7CisJaW50IGNtZF90YWJsZV9jb3VudDsKKworCS8qCisJICogVGFi bGUgb2YgcmVnaXN0ZXJzIGFsbG93ZWQgaW4gY29tbWFuZHMgdGhhdCByZWFkL3dyaXRlIHJlZ2lz dGVycy4KKwkgKi8KKwljb25zdCB1MzIgKnJlZ190YWJsZTsKKwlpbnQgcmVnX2NvdW50OworCisJ LyoKKwkgKiBUYWJsZSBvZiByZWdpc3RlcnMgYWxsb3dlZCBpbiBjb21tYW5kcyB0aGF0IHJlYWQv d3JpdGUgcmVnaXN0ZXJzLCBidXQKKwkgKiBvbmx5IGZyb20gdGhlIERSTSBtYXN0ZXIuCisJICov CisJY29uc3QgdTMyICptYXN0ZXJfcmVnX3RhYmxlOworCWludCBtYXN0ZXJfcmVnX2NvdW50Owor CisJLyoKKwkgKiBSZXR1cm5zIHRoZSBiaXRtYXNrIGZvciB0aGUgbGVuZ3RoIGZpZWxkIG9mIHRo ZSBzcGVjaWZpZWQgY29tbWFuZC4KKwkgKiBSZXR1cm4gMCBmb3IgYW4gdW5yZWNvZ25pemVkL2lu dmFsaWQgY29tbWFuZC4KKwkgKgorCSAqIElmIHRoZSBjb21tYW5kIHBhcnNlciBmaW5kcyBhbiBl bnRyeSBmb3IgYSBjb21tYW5kIGluIHRoZSByaW5nJ3MKKwkgKiBjbWRfdGFibGVzLCBpdCBnZXRz IHRoZSBjb21tYW5kJ3MgbGVuZ3RoIGJhc2VkIG9uIHRoZSB0YWJsZSBlbnRyeS4KKwkgKiBJZiBu b3QsIGl0IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBwZXItcmluZyBsZW5n dGggZmllbGQKKwkgKiBlbmNvZGluZyBmb3IgdGhlIGNvbW1hbmQgKGkuZS4gY2VydGFpbiBvcGNv ZGUgcmFuZ2VzIHVzZSBjZXJ0YWluIGJpdHMKKwkgKiB0byBlbmNvZGUgdGhlIGNvbW1hbmQgbGVu Z3RoIGluIHRoZSBoZWFkZXIpLgorCSAqLworCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21hc2spKHUz MiBjbWRfaGVhZGVyKTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAotLSAKMS44LjMuMgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK