From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Siluvery Subject: [PATCH 11/20] drm/i915: Fake lost context event interrupts through forced CSB checking. Date: Wed, 13 Jan 2016 17:28:23 +0000 Message-ID: <1452706112-8617-12-git-send-email-arun.siluvery@linux.intel.com> References: <1452706112-8617-1-git-send-email-arun.siluvery@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 3BB3C7A065 for ; Wed, 13 Jan 2016 09:28:55 -0800 (PST) In-Reply-To: <1452706112-8617-1-git-send-email-arun.siluvery@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: intel-gfx@lists.freedesktop.org Cc: Tomas Elf List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVG9tYXMgRWxmIDx0b21hcy5lbGZAaW50ZWwuY29tPgoKKioqIEdlbmVyYWwgKioqCkEg cmVjdXJyaW5nIGlzc3VlIGR1cmluZyBsb25nLWR1cmF0aW9uIG9wZXJhdGlvbnMgdGVzdGluZyBv ZiBjb25jdXJyZW50CnJlbmRlcmluZyB0YXNrcyB3aXRoIGludGVybWl0dGVudCBoYW5ncyBpcyB0 aGF0IGNvbnRleHQgY29tcGxldGlvbiBpbnRlcnJ1cHRzCmZvbGxvd2luZyBlbmdpbmUgcmVzZXRz IGFyZSBzb21ldGltZXMgbG9zdC4gVGhpcyBiZWNvbWVzIGEgcmVhbCBwcm9ibGVtIHNpbmNlCnRo ZSBoYXJkd2FyZSBtaWdodCBoYXZlIGNvbXBsZXRlZCBhIHByZXZpb3VzbHkgaHVuZyBjb250ZXh0 IGZvbGxvd2luZyBhCnBlci1lbmdpbmUgaGFuZyByZWNvdmVyeSBhbmQgdGhlbiBnb25lIGlkbGUg c29tZWhvdyB3aXRob3V0IHNlbmRpbmcgYW4KaW50ZXJydXB0IHRlbGxpbmcgdGhlIGRyaXZlciBh Ym91dCB0aGlzLiBBdCB0aGlzIHBvaW50IHRoZSBkcml2ZXIgd291bGQgYmUKc3R1Y2sgd2FpdGlu ZyBmb3IgY29udGV4dCBjb21wbGV0aW9uLCB0aGlua2luZyB0aGF0IHRoZSBjb250ZXh0IGlzIHN0 aWxsCmFjdGl2ZSwgZXZlbiB0aG91Z2ggdGhlIGhhcmR3YXJlIHdvdWxkIGJlIGlkbGUgYW5kIHdh aXRpbmcgZm9yIG1vcmUgd29yay4gVGhlCnBlcmlvZGljIGhhbmcgY2hlY2tlciB3b3VsZCBkZXRl Y3QgaGFuZ3MgY2F1c2VkIGJ5IHN0dWNrIHdvcmtsb2FkcyBpbiB0aGUgR1BVCmFzIHdlbGwgYXMg dGhlc2UgaW5jb25zaXN0ZW5jaWVzIGNhdXNpbmcgc29mdHdhcmUgaGFuZ3MuIFRoZSBkaWZmZXJl bmNlIGxpZXMgaW4KaG93IHdlIGhhbmRsZSB0aGVzZSB0d28gdHlwZXMgb2YgaGFuZ3MuCgoqKiog UmVjdGlmaWNhdGlvbiAqKioKVGhlIHdheSBoYW5ncyBjYXVzZWQgYnkgaW5jb25zaXN0ZW50IGNv bnRleHQgc3VibWlzc2lvbiBzdGF0ZXMgYXJlIHJlc29sdmVkIGlzCmJ5IGNoZWNraW5nIHRoZSBj b250ZXh0IHN1Ym1pc3Npb24gc3RhdGUgY29uc2lzdGVuY3kgYXMgYSBwcmUtc3RhZ2UgdG8gdGhl CmVuZ2luZSByZWNvdmVyeSBwYXRoLiBJZiB0aGUgc3RhdGUgaXMgbm90IGNvbnNpc3RlbnQgYXQg dGhhdCBwb2ludCB0aGVuIHRoZQpub3JtYWwgZm9ybSBvZiBlbmdpbmUgcmVjb3ZlcnkgaXMgbm90 IGF0dGVtcHRlZC4gSW5zdGVhZCwgYW4gYXR0ZW1wdCB0byByZWN0aWZ5CnRoZSBpbmNvbnNpc3Rl bmN5IGlzIG1hZGUgYnkgZmFraW5nIHRoZSBwcmVzdW1lZCBsb3N0IGNvbnRleHQgZXZlbnQgaW50 ZXJydXB0IC0Kb3IgbW9yZSBzcGVjaWZpY2FsbHkgYnkgY2FsbGluZyB0aGUgY29udGV4dCBldmVu dCBpbnRlcnJ1cHQgaGFuZGxlciBtYW51YWxseQpmcm9tIHRoZSBoYW5nIHJlY292ZXJ5IHBhdGgg b3V0c2lkZSBvZiB0aGUgbm9ybWFsIGludGVycnVwdCBleGVjdXRpb24gY29udGV4dC4KVGhlIHJl YXNvbiB0aGlzIHdvcmtzIGlzIGJlY2F1c2UgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBh biBJUlEgZ29lcwptaXNzaW5nIHRoZSBoYXJkd2FyZSBhbHdheXMgdXBkYXRlcyB0aGUgQ1NCIGJ1 ZmZlciBkdXJpbmcgY29udGV4dCBzdGF0ZQp0cmFuc2l0aW9ucywgd2hpY2ggbWVhbnMgdGhhdCBp biB0aGUgY2FzZSBvZiBhIG1pc3NpbmcgSVJRIHRoZXJlIHdvdWxkIGJlCm91dHN0YW5kaW5nIENT QiBldmVudHMgd2FpdGluZyB0byBiZSBwcm9jZXNzZWQsIG91dCBvZiB3aGljaCBvbmUgbWlnaHQg YmUgdGhlCmNvbnRleHQgY29tcGxldGlvbiBldmVudCBiZWxvbmdpbmcgdG8gdGhlIGNvbnRleHQg Y3VycmVudGx5IGJsb2NraW5nIHRoZSB3b3JrCnN1Ym1pc3Npb24gZmxvdyBpbiBvbmUgb2YgdGhl IGV4ZWNsaXN0IHF1ZXVlcy4gVGhlIGZha2VkIGNvbnRleHQgZXZlbnQKaW50ZXJydXB0IHdvdWxk IHRoZW4gZW5kIHVwIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgd2hpY2ggd291bGQgcHJvY2Vz cyB0aGUKb3V0c3RhbmRpbmcgZXZlbnRzIGFuZCBwdXJnZSB0aGUgc3R1Y2sgY29udGV4dC4KCklm IHRoaXMgcmVjdGlmaWNhdGlvbiBhdHRlbXB0IGZhaWxzIChiZWNhdXNlIHRoZXJlIGFyZSBubyBv dXRzdGFuZGluZyBDU0IKZXZlbnRzLCBhdCBsZWFzdCBub25lIHRoYXQgY291bGQgYWNjb3VudCBm b3IgdGhlIGluY29uc2lzdGVuY3kpIHRoZW4gdGhlIGVuZ2luZQpyZWNvdmVyeSBpcyBmYWlsZWQg YW5kIHRoZSBlcnJvciBoYW5kbGVyIGZhbGxzIGJhY2sgdG8gbGVnYWN5IGZ1bGwgR1BVIHJlc2V0 Cm1vZGUuIEFzc3VtaW5nIHRoZSBmdWxsIEdQVSByZXNldCBpcyBzdWNjZXNzZnVsIHRoaXMgZm9y bSBvZiByZWNvdmVyeSB3aWxsCmFsd2F5cyBjYXVzZSB0aGUgc3lzdGVtIHRvIGJlY29tZSBjb25z aXN0ZW50IHNpbmNlIHRoZSBHUFUgaXMgcmVzZXQgYW5kIGZvcmNlZAppbnRvIGFuIGlkbGUgc3Rh dGUgYW5kIGFsbCBwZW5kaW5nIGRyaXZlciB3b3JrIGlzIGRpc2NhcmRlZCwgd2hpY2ggd291bGQK Y29uc2lzdGVudGx5IHJlZmxlY3QgdGhlIGlkbGUgR1BVIGhhcmR3YXJlIHN0YXRlLgoKSWYgdGhl IHJlY3RpZmljYXRpb24gYXR0ZW1wdCBzdWNjZWVkcywgbWVhbmluZyB0aGF0IHVucHJvY2Vzc2Vk IENTQiBldmVudHMgd2VyZQpmb3VuZCBhbmQgYWN0ZWQgdXBvbiB3aGljaCBsZWFkIHRvIG9sZCBj b250ZXh0cyBiZWluZyBwdXJnZWQgZnJvbSB0aGUgZXhlY2xpc3QKcXVldWUgYW5kIG5ldyB3b3Jr IGJlaW5nIHN1Ym1pdHRlZCB0byBoYXJkd2FyZSwgdGhlbiB0aGUgaW5jb25zaXN0ZW5jeQpyZWN0 aWZpY2F0aW9uIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQgdGhl IGRldGVjdGVkIGhhbmcKdGhhdCBicm91Z2h0IG9uIHRoZSBoYW5nIHJlY292ZXJ5LiBUaGVyZWZv cmUgdGhlIGVuZ2luZSByZWNvdmVyeSBpcyBlbmRlZCBlYXJseQphdCB0aGF0IHBvaW50IGFuZCBu byBmdXJ0aGVyIGF0dGVtcHRzIGF0IHJlc29sdmluZyB0aGUgaGFuZyBhcmUgbWFkZSBhbmQgdGhl CmhhbmcgZGV0ZWN0aW9uIGlzIGNsZWFyZWQsIGFsbG93aW5nIHRoZSBkcml2ZXIgdG8gcmVzdW1l IGV4ZWN1dGluZy4KCioqKiBEZXRlY3Rpb24gKioqCkluIHByaW5jaXBsZSBhIGNvbnRleHQgc3Vi bWlzc2lvbiBzdGF0dXMgaW5jb25zaXN0ZW5jeSBpcyBkZXRlY3RlZCBieSBjb21wYXJpbmcKdGhl IElEIG9mIHRoZSBjb250ZXh0IGluIHRoZSBoZWFkIHJlcXVlc3Qgb2YgYW4gZXhlY2xpc3QgcXVl dWUgd2l0aCB0aGUgY29udGV4dApJRCBjdXJyZW50bHkgaW4gdGhlIEVYRUNMSVNUX1NUQVRVUyBy ZWdpc3RlciBvZiB0aGUgc2FtZSBlbmdpbmUgKHRoZSBsYXR0ZXIKZGVub3RpbmcgdGhlIElEIG9m IHRoZSBjb250ZXh0IGN1cnJlbnRseSBydW5uaW5nIG9uIHRoZSBoYXJkd2FyZSkuIElmIHRoZSB0 d28KZG8gbm90IG1hdGNoIGl0IGlzIGFzc3VtZWQgdGhhdCBhbiBpbnRlcnJ1cHQgd2FzIG1pc3Nl ZCBhbmQgdGhhdCB0aGUgZHJpdmVyIGlzCm5vdyBzdHVjayBpbiBhbiBpbmNvbnNpc3RlbnQgc3Rh dGUuIE9mIGNvdXJzZSwgdGhlIGRyaXZlciBhbmQgaGFyZHdhcmUgY2FuCmdvIGluIGFuZCBvdXQg b2YgY29uc2lzdGVuY3kgbW9tZW50YXJpbHkgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGFzIGNvbnRl eHRzCnN0YXJ0IGFuZCBjb21wbGV0ZSBpbiB0aGUgZHJpdmVyIGluZGVwZW5kZW50bHkgZnJvbSB0 aGUgYWN0dWFsIEdQVQpoYXJkd2FyZS4gVGhlIG9ubHkgd2F5IGFuIGluY29uc2lzdGVuY3kgZGV0 ZWN0aW9uIGNhbiBiZSB0cnVzdGVkIGlzIGJ5CmZpcnN0IG1ha2luZyBzdXJlIHRoYXQgdGhlIGRl dGVjdGVkIHN0YXRlIGlzIHN0YWJsZSwgZWl0aGVyIGJ5IG9ic2VydmluZwpzdXN0YWluZWQsIGlu aXRpYWwgc2lnbnMgb2YgYSBoYW5nIGluIHRoZSBwZXJpb2RpYyBoYW5nIGNoZWNrZXIgb3IgYXQg dGhlCm9uc2V0IG9mIHRoZSBoYW5nIHJlY292ZXJ5IHBhdGgsIGF0IHdoaWNoIHBvaW50IGl0IGhh cyBiZWVuIGRlY2lkZWQgdGhhdAp0aGUgZXhlY3V0aW9uIGlzIGh1bmcgYW5kIHRoYXQgdGhlIGRy aXZlciBpcyBzdGFibGUgaW4gdGhhdCBzdGF0ZS4KCioqKiBXQVJOSU5HICoqKgpJbiB0aW1lLWNv bnN0cmFpbmVkIHNjZW5hcmlvcyB3YWl0aW5nIHVudGlsIHRoZSBvbnNldCBvZiBoYW5nIHJlY292 ZXJ5IGJlZm9yZQpkZXRlY3RpbmcgYW5kIHBvdGVudGlhbGx5IHJlY3RpZnlpbmcgY29udGV4dCBz dWJtaXNzaW9uIHN0YXRlIGluY29uc2lzdGVuY2llcwptaWdodCBjYXVzZSBwcm9ibGVtYXRpYyBz aWRlLWVmZmVjdHMuIEZvciBleGFtcGxlLCBpbiBBbmRyb2lkIHRoZQpTdXJmYWNlRmxpbmdlci9I V0MgY29tcG9zaXRvciBoYXMgYSBoYXJkIHRpbWUgbGltaXQgb2YgMyBzZWNvbmRzIGFmdGVyIHdo aWNoCmFueSB1bnJlc29sdmVkIGhhbmdzIG1pZ2h0IGNhdXNlIGRpc3BsYXkgZnJlZXplcyAoZHVl IHRvIGRyb3BwZWQgZGlzcGxheSBmbGlwCnJlcXVlc3RzKSwgd2hpY2ggY2FuIG9ubHkgYmUgcmVz b2x2ZWQgYnkgYSByZWJvb3QuIElmIGhhbmcgZGV0ZWN0aW9uIGFuZCBoYW5nCnJlY292ZXJ5IHRh a2VzIHVwd2FyZHMgb2YgMyBzZWNvbmRzIHRoZW4gdGhlcmUgaXMgYSBkaXN0aW5jdCByaXNrIHRo YXQgaGFuZGxpbmcKaW5jb25zaXN0ZW5jaWVzIHRoaXMgbGF0ZSBtaWdodCBjYXVzZSBpc3N1ZXMu IFdoZXRoZXIgb3Igbm90IHRoaXMgd2lsbCBiZWNvbWUgYQpwcm9ibGVtIHJlbWFpbnMgdG8gYmUg c2hvd24gaW4gcHJhY3RpY2UuIFNvIGZhciBubyBpc3N1ZXMgaGF2ZSBiZWVuIHNwb3R0ZWQgaW4K b3RoZXIgZW52aXJvbm1lbnRzIHN1Y2ggYXMgWCBidXQgaXQgaXMgd29ydGggYmVpbmcgYXdhcmUg b2YuCgpTaWduZWQtb2ZmLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IE1pa2EgS3VvcHBhbGEg PG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMgICAgICB8IDE4MiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgIHwgIDI0ICstLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgfCAgODMgKysrKysrKysrKysrKysrLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgIHwgICAyICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmNfdGRyLmggfCAgIDMgKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjgg aW5zZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5k ZXggYzBhZDAwMy4uNmZhZjkwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC05NjEsNiAr OTYxLDEyMCBAQCBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogfQogCiAv KioKKyAqIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9DU1NDX3ByZWNoZWNrIC0gY2hlY2svcmVjdGlm eSBjb250ZXh0IGluY29uc2lzdGVuY3kKKyAqIEBkZXZfcHJpdjoJLi4uCisgKiBAZW5naW5lOiAJ VGhlIGVuZ2luZSB3aG9zZSBzdGF0ZSBpcyB0byBiZSBjaGVja2VkLgorICogQHJlcTogCU91dHB1 dCBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgcmVxdWVzdCBtb3N0IHJlY2VudGx5IHN1Ym1pdHRl ZAorICogCQl0byBoYXJkd2FyZSwgaWYgYW55LiAgTWF5IGJlIE5VTEwuCisgKiBAcmV0OiAJT3V0 cHV0IHBhcmFtZXRlciBjb250YWluaW5nIHRoZSBlcnJvciBjb2RlIHRvIGJlIHJldHVybmVkIHRv CisgKiAJCWk5MTVfaGFuZGxlX2Vycm9yKCkuCisgKgorICogQmVmb3JlIGFuIGVuZ2luZSByZXNl dCBjYW4gYmUgYXR0ZW1wdGVkIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBzdWJtaXNzaW9uCisg KiBzdGF0ZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgKGkuZS4gaHVuZykgY29udGV4dCBpcyB2 ZXJpZmllZCBhcworICogY29uc2lzdGVudC4gSWYgdGhlIGNvbnRleHQgc3VibWlzc2lvbiBzdGF0 ZSBpcyBpbmNvbnNpc3RlbnQgdGhhdCBtZWFucyB0aGF0CisgKiB0aGUgY29udGV4dCB0aGF0IHRo ZSBkcml2ZXIgdGhpbmtzIGlzIHJ1bm5pbmcgb24gaGFyZHdhcmUgaXMgaW4gZmFjdCBub3QKKyAq IHJ1bm5pbmcgYXQgYWxsLiBJdCBtaWdodCBiZSB0aGF0IHRoZSBoYXJkd2FyZSBpcyBpZGxlIG9y IGlzIHJ1bm5pbmcgYW5vdGhlcgorICogY29udGV4dCBhbHRvZ2V0aGVyLiBUaGUgcmVhc29uIHdo eSB0aGlzIGlzIGltcG9ydGFudCBpbiB0aGUgY2FzZSBvZiBlbmdpbmUKKyAqIHJlc2V0IGluIHBh cnRpY3VsYXIgaXMgYmVjYXVzZSBhdCB0aGUgZW5kIG9mIHRoZSBlbmdpbmUgcmVjb3ZlcnkgcGF0 aCB0aGUKKyAqIGZpeGVkLXVwIGNvbnRleHQgbmVlZHMgdG8gYmUgcmVzdWJtaXR0ZWQgdG8gaGFy ZHdhcmUgaW4gb3JkZXIgZm9yIHRoZQorICogY29udGV4dCBjaGFuZ2VzIChIRUFEIHJlZ2lzdGVy IG51ZGdlZCBwYXN0IHRoZSBodW5nIGJhdGNoIGJ1ZmZlcikgdG8gdGFrZQorICogZWZmZWN0LiBD b250ZXh0IHJlc3VibWlzc2lvbiByZXF1aXJlcyB0aGUgc2FtZSBjb250ZXh0IGFzIGlzIHJlc3Vi bWl0dGVkIHRvCisgKiBiZSBydW5uaW5nIG9uIGhhcmR3YXJlIC0gb3RoZXJ3aXNlIHdlIG1pZ2h0 IGNhdXNlIHVuZXhwZWN0ZWQgcHJlZW1wdGlvbnMgb3IKKyAqIHN1Ym1pdCBhIGNvbnRleHQgdG8g YSBHUFUgZW5naW5lIHRoYXQgaXMgaWRsZSwgd2hpY2ggd291bGQgbm90IG1ha2UgbXVjaAorICog c2Vuc2UuIChpZiB0aGUgZW5naW5lIGlzIGlkbGUgd2h5IGRvZXMgdGhlIGRyaXZlciB0aGluayB0 aGF0IHRoZSBjb250ZXh0IGluCisgKiBxdWVzdGlvbiBpcyBodW5nIGV0Yy4pCisgKiBJZiBhbiBp bmNvbnNpc3RlbnQgc3RhdGUgbGlrZSB0aGlzIGlzIGRldGVjdGVkIHRoZW4gYSByZWN0aWZpY2F0 aW9uIGF0dGVtcHQKKyAqIGlzIG1hZGUgYnkgZmFraW5nIHRoZSBwcmVzdW1lZCBsb3N0IGNvbnRl eHQgZXZlbnQgaW50ZXJydXB0LiBUaGUgb3V0Y29tZSBvZgorICogdGhpcyBhdHRlbXB0IGlzIHJl dHVybmVkIGJhY2sgdG8gdGhlIHBlci1lbmdpbmUgcmVjb3ZlcnkgcGF0aDogSWYgaXQgd2FzCisg KiBzdWNjZXNmdWwgdGhlIGhhbmcgcmVjb3ZlcnkgY2FuIGJlIGFib3J0ZWQgZWFybHkgc2luY2Ug d2Ugbm93IGhhdmUgcmVzb2x2ZWQKKyAqIHRoZSBoYW5nIHRoaXMgd2F5LiBJZiBpdCB3YXMgbm90 IHN1Y2Nlc3NmdWwgdGhlbiBmYWlsIHRoZSBoYW5nIHJlY292ZXJ5IGFuZAorICogbGV0IHRoZSBl cnJvciBoYW5kbGVyIHByb21vdGUgdG8gdGhlIG5leHQgbGV2ZWwgb2YgaGFuZyByZWNvdmVyeS4K KyAqCisgKiBSZXR1cm5zOgorICoJVHJ1ZTogCVdvcmsgY3VycmVudGx5IGluIHByb2dyZXNzLCBj b25zaXN0ZW50IHN0YXRlLgorICoJCVByb2NlZWQgd2l0aCBlbmdpbmUgcmVzZXQuCisgKglGYWxz ZTogCU5vIHdvcmsgaW4gcHJvZ3Jlc3Mgb3Igd29yayBpbiBwcm9ncmVzcyBidXQgc3RhdGUgaXJy ZWNvdmVyYWJseQorICoJCWluY29uc2lzdGVudCAoY29udGV4dCBldmVudCBJUlEgZmFraW5nIGF0 dGVtcHRlZCBidXQgZmFpbGVkKS4KKyAqCQlEbyBub3QgcHJvY2VlZCB3aXRoIGVuZ2luZSByZXNl dC4KKyAqLworc3RhdGljIGJvb2wgaTkxNV9nZW1fcmVzZXRfZW5naW5lX0NTU0NfcHJlY2hlY2so CisJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXEsCisJ CWludCAqcmV0KQoreworCWJvb2wgcHJlY2hlY2tfb2sgPSB0cnVlOworCWVudW0gY29udGV4dF9z dWJtaXNzaW9uX3N0YXR1cyBzdGF0dXM7CisKKwlXQVJOX09OKCFyZXQpOworCisJKnJldCA9IDA7 CisKKwlzdGF0dXMgPSBpbnRlbF9leGVjbGlzdHNfVERSX2dldF9jdXJyZW50X3JlcXVlc3QoZW5n aW5lLCByZXEpOworCisJaWYgKHN0YXR1cyA9PSBDT05URVhUX1NVQk1JU1NJT05fU1RBVFVTX05P TkVfU1VCTUlUVEVEKSB7CisJCS8qCisJCSAqIE5vIHdvcmsgaW4gZmxpZ2h0LCBubyB3YXkgdG8g Y2Fycnkgb3V0IGEgcGVyLWVuZ2luZSBoYW5nCisJCSAqIHJlY292ZXJ5IGluIHRoaXMgc3RhdGUu IEp1c3QgZG8gZWFybHkgZXhpdCBhbmQgZm9yZ2V0IGl0CisJCSAqIGhhcHBlbmVkLiBJZiB0aGlz IHN0YXRlIHBlcnNpc3RzIHRoZW4gdGhlIGVycm9yIGhhbmRsZXIgd2lsbAorCQkgKiBiZSBjYWxs ZWQgYnkgdGhlIHBlcmlvZGljIGhhbmcgY2hlY2tlciBzb29uIGFmdGVyIHRoaXMgYW5kCisJCSAq IGF0IHRoYXQgcG9pbnQgdGhlIGhhbmcgd2lsbCBob3BlZnVsbHkgYmUgcHJvbW90ZWQgdG8gZnVs bAorCQkgKiBHUFUgcmVzZXQsIHdoaWNoIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorCQkgKi8KKwkJ V0FSTigxLCAiTm8gd29yayBpbiBmbGlnaHQhIEFib3J0aW5nIHJlY292ZXJ5IG9uICVzXG4iLAor CQkJZW5naW5lLT5uYW1lKTsKKworCQkgcHJlY2hlY2tfb2sgPSBmYWxzZTsKKwkJICpyZXQgPSAw OworCisJfSBlbHNlIGlmIChzdGF0dXMgPT0gQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19JTkNP TlNJU1RFTlQpIHsKKwkJaWYgKCFpbnRlbF9leGVjbGlzdHNfVERSX2ZvcmNlX0NTQl9jaGVjayhk ZXZfcHJpdiwgZW5naW5lKSkgeworCQkJRFJNX0VSUk9SKCJJbmNvbnNpc3RlbmN5IHJlY3RpZmlj YXRpb24gb24gJXMgdW5zdWNjZXNzZnVsIVxuIiwKKwkJCQllbmdpbmUtPm5hbWUpOworCisJCQkv KgorCQkJICogQ29udGV4dCBzdWJtaXNzaW9uIHN0YXRlIGlzIGluY29uc2lzdGVudCBhbmQKKwkJ CSAqIGZha2luZyBhIGNvbnRleHQgZXZlbnQgSVJRIGRpZCBub3QgaGVscC4KKwkJCSAqIEZhaWwg YW5kIHByb21vdGUgdG8gaGlnaGVyIGxldmVsIG9mCisJCQkgKiByZWNvdmVyeSEKKwkJCSAqLwor CQkJcHJlY2hlY2tfb2sgPSBmYWxzZTsKKwkJCSpyZXQgPSAtRUlOVkFMOworCQl9IGVsc2Ugewor CQkJRFJNX0lORk8oIkluY29uc2lzdGVuY3kgcmVjdGlmaWNhdGlvbiBvbiAlcyBzdWNjZXNzZnVs IVxuIiwKKwkJCQllbmdpbmUtPm5hbWUpOworCisJCQkvKgorCQkJICogUmVjdGlmeWluZyB0aGUg aW5jb25zaXN0ZW50IGNvbnRleHQKKwkJCSAqIHN1Ym1pc3Npb24gc3RhdHVzIGhlbHBlZCEgTm8g cmVzZXQgcmVxdWlyZWQsCisJCQkgKiBqdXN0IGV4aXQgYW5kIG1vdmUgb24hCisJCQkgKi8KKwkJ CSBwcmVjaGVja19vayA9IGZhbHNlOworCQkJICpyZXQgPSAwOworCisJCQkvKgorCQkJICogUmVz ZXQgdGhlIGhhbmdjaGVjayBzdGF0ZSBvdGhlcndpc2UgdGhlIGhhbmcgY2hlY2tlcgorCQkJICog d2lsbCBkZXRlY3QgYW5vdGhlciBoYW5nIGltbWVkaWF0ZWx5LiBTaW5jZSB0aGUKKwkJCSAqIGZv cmNlZCBDU0IgY2hlY2tlciByZXN1bHRlZCBpbiBtb3JlIHdvcmsgYmVpbmcKKwkJCSAqIHN1Ym1p dHRlZCB0byBoYXJkd2FyZSB3ZSBrbm93IHRoYXQgd2UgYXJlIG5vdCBodW5nCisJCQkgKiBhbnlt b3JlIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsZWFyIGFueSBoYW5nCisJCQkgKiBkZXRlY3Rp b25zIGZvciB0aGlzIGVuZ2luZSBwcmlvciB0byB0aGlzIHBvaW50LgorCQkJICovCisJCQlpOTE1 X2hhbmdjaGVja19yZWluaXQoZW5naW5lKTsKKwkJfQorCisJfSBlbHNlIGlmIChzdGF0dXMgIT0g Q09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19PSykgeworCQlXQVJOKDEsICJVbmV4cGVjdGVkIGNv bnRleHQgc3VibWlzc2lvbiBzdGF0dXMgKCV1KSBvbiAlc1xuIiwKKwkJCXN0YXR1cywgZW5naW5l LT5uYW1lKTsKKworCQlwcmVjaGVja19vayA9IGZhbHNlOworCQkqcmV0ID0gLUVJTlZBTDsKKwl9 CisKKwlyZXR1cm4gcHJlY2hlY2tfb2s7Cit9CisKKy8qKgogICogaTkxNV9yZXNldF9lbmdpbmUg LSByZXNldCBHUFUgZW5naW5lIGFmdGVyIGEgaGFuZwogICogQGVuZ2luZTogZW5naW5lIHRvIHJl c2V0CiAgKgpAQCAtMTAwMSwyOCArMTExNSwyMiBAQCBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWk5MTVfZ2VtX3Jlc2V0X3Jpbmdfc3RhdHVz KGRldl9wcml2LCBlbmdpbmUpOwogCiAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewotCQll bnVtIGNvbnRleHRfc3VibWlzc2lvbl9zdGF0dXMgc3RhdHVzID0KLQkJCWludGVsX2V4ZWNsaXN0 c19URFJfZ2V0X2N1cnJlbnRfcmVxdWVzdChlbmdpbmUsIE5VTEwpOwotCiAJCS8qCi0JCSAqIElm IHRoZSBjb250ZXh0IHN1Ym1pc3Npb24gc3RhdGUgaW4gaGFyZHdhcmUgaXMgbm90Ci0JCSAqIGNv bnNpc3RlbnQgd2l0aCB0aGUgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGUgaW4gdGhlIGRyaXZlciBv cgotCQkgKiBpZiB0aGVyZSBmb3Igc29tZSByZWFzb24gaXMgbm8gY3VycmVudCBjb250ZXh0IGlu IHRoZQotCQkgKiBwcm9jZXNzIG9mIGJlaW5nIHN1Ym1pdHRlZCB0aGVuIGJhaWwgb3V0IGFuZCB0 cnkgYWdhaW4uIERvCi0JCSAqIG5vdCBwcm9jZWVkIHVubGVzcyB3ZSBoYXZlIHJlbGlhYmxlIGN1 cnJlbnQgY29udGV4dCBzdGF0ZQotCQkgKiBpbmZvcm1hdGlvbi4gVGhlIHJlYXNvbiB3aHkgdGhp cyBpcyBpbXBvcnRhbnQgaXMgYmVjYXVzZQotCQkgKiBwZXItZW5naW5lIGhhbmcgcmVjb3Zlcnkg cmVsaWVzIG9uIGNvbnRleHQgcmVzdWJtaXNzaW9uIGluCi0JCSAqIG9yZGVyIHRvIGZvcmNlIHRo ZSBleGVjdXRpb24gdG8gcmVzdW1lIGZvbGxvd2luZyB0aGUgaHVuZwotCQkgKiBiYXRjaCBidWZm ZXIuIElmIHRoZSBoYXJkd2FyZSBpcyBub3QgY3VycmVudGx5IHJ1bm5pbmcgdGhlCi0JCSAqIHNh bWUgY29udGV4dCBhcyB0aGUgZHJpdmVyIHRoaW5rcyBpcyBodW5nIHRoZW4gYW55dGhpbmcgY2Fu Ci0JCSAqIGhhcHBlbiBhdCB0aGUgcG9pbnQgb2YgY29udGV4dCByZXN1Ym1pc3Npb24sIGUuZy4g dW5leHBlY3RlZAotCQkgKiBwcmVlbXB0aW9ucyBvciB0aGUgcHJldmlvdXNseSBodW5nIGNvbnRl eHQgY291bGQgYmUKLQkJICogc3VibWl0dGVkIHdoZW4gdGhlIGhhcmR3YXJlIGlzIGlkbGUgd2hp Y2ggbWFrZXMgbm8gc2Vuc2UuCisJCSAqIENoZWNrIGNvbnRleHQgc3VibWlzc2lvbiBzdGF0dXMg Y29uc2lzdGVuY3kgKENTU0MpIGJlZm9yZQorCQkgKiBtb3Zpbmcgb24uIElmIHRoZSBkcml2ZXIg YW5kIGhhcmR3YXJlIGhhdmUgZGlmZmVyZW50CisJCSAqIG9waW5pb25zIGFib3V0IHdoYXQgaXMg Z29pbmcgb24gYW5kIHRoaXMgaW5jb25zaXN0ZW5jeQorCQkgKiBjYW5ub3QgYmUgcmVjdGlmaWVk IHRoZW4ganVzdCBmYWlsIGFuZCBsZXQgVERSIGVzY2FsYXRlIHRvIGEKKwkJICogaGlnaGVyIGZv cm0gb2YgaGFuZyByZWNvdmVyeS4KIAkJICovCi0JCWlmIChzdGF0dXMgIT0gQ09OVEVYVF9TVUJN SVNTSU9OX1NUQVRVU19PSykgewotCQkJcmV0ID0gLUVBR0FJTjsKKwkJIGlmICghaTkxNV9nZW1f cmVzZXRfZW5naW5lX0NTU0NfcHJlY2hlY2soZGV2X3ByaXYsCisJCQkJCQkJICBlbmdpbmUsCisJ CQkJCQkJICBOVUxMLAorCQkJCQkJCSAgJnJldCkpIHsKKwkJCURSTV9JTkZPKCJBYm9ydGluZyBo YW5nIHJlY292ZXJ5IG9uICVzICglZClcbiIsCisJCQkJZW5naW5lLT5uYW1lLCByZXQpOworCiAJ CQlnb3RvIHJlc2V0X2VuZ2luZV9lcnJvcjsKLQkJfQorCQkgfQogCX0KIAogCXJldCA9IGludGVs X3JpbmdfZGlzYWJsZShlbmdpbmUpOwpAQCAtMTAzMiwyNyArMTE0MCwyNSBAQCBpbnQgaTkxNV9y ZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIAogCWlmIChp OTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKLQkJZW51bSBjb250ZXh0X3N1Ym1pc3Npb25fc3RhdHVz IHN0YXR1czsKLQkJYm9vbCBpbmNvbnNpc3RlbnQ7Ci0KLQkJc3RhdHVzID0gaW50ZWxfZXhlY2xp c3RzX1REUl9nZXRfY3VycmVudF9yZXF1ZXN0KGVuZ2luZSwKLQkJCQkmY3VycmVudF9yZXF1ZXN0 KTsKLQotCQlpbmNvbnNpc3RlbnQgPSAoc3RhdHVzICE9IENPTlRFWFRfU1VCTUlTU0lPTl9TVEFU VVNfT0spOwotCQlpZiAoaW5jb25zaXN0ZW50KSB7Ci0JCQkvKgotCQkJICogSWYgd2Ugc29tZWhv dyBoYXZlIHJlYWNoZWQgdGhpcyBwb2ludCB3aXRoCi0JCQkgKiBhbiBpbmNvbnNpc3RlbnQgY29u dGV4dCBzdWJtaXNzaW9uIHN0YXR1cyB0aGVuCi0JCQkgKiBiYWNrIG91dCBvZiB0aGUgcHJldmlv dXNseSByZXF1ZXN0ZWQgcmVzZXQgYW5kCi0JCQkgKiByZXRyeSBsYXRlci4KLQkJCSAqLwotCQkJ V0FSTihpbmNvbnNpc3RlbnQsCi0JCQkgICAgICJJbmNvbnNpc3RlbnQgY29udGV4dCBzdGF0dXMg b24gJXM6ICV1XG4iLAotCQkJICAgICBlbmdpbmUtPm5hbWUsIHN0YXR1cyk7CisJCS8qCisJCSAq IEdldCBhIGhvbGQgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgY29udGV4dC4KKwkJICoKKwkJ ICogQ29udGV4dCBzdWJtaXNzaW9uIHN0YXR1cyBjb25zaXN0ZW5jeSBpcyBkb25lIGltcGxpY2l0 bHkgc28KKwkJICogd2UgbWlnaHQgYXMgd2VsbCBjaGVjayBpdCBwb3N0LWVuZ2luZSBkaXNhYmxl bWVudCBzaW5jZSB3ZQorCQkgKiBnZXQgdGhhdCBvcHRpb24gZm9yIGZyZWUuIEFsc28sIGl0J3Mg Y29uY2VpdmFibGUgdGhhdCB0aGUKKwkJICogY29udGV4dCBzdWJtaXNzaW9uIHN0YXRlIG1pZ2h0 IGhhdmUgY2hhbmdlZCBhcyBwYXJ0IG9mIHRoZQorCQkgKiByZXNldCByZXF1ZXN0IG9uIGdlbjgr IHNvIGl0J3Mgbm90IGNvbXBsZXRlbHkgZGV2b2lkIG9mCisJCSAqIHZhbHVlIHRvIGRvIHRoaXMu CisJCSAqLworCQkgaWYgKCFpOTE1X2dlbV9yZXNldF9lbmdpbmVfQ1NTQ19wcmVjaGVjayhkZXZf cHJpdiwKKwkJCQkJCQkgIGVuZ2luZSwKKwkJCQkJCQkgICZjdXJyZW50X3JlcXVlc3QsCisJCQkJ CQkJICAmcmV0KSkgeworCQkJRFJNX0lORk8oIkFib3J0aW5nIGhhbmcgcmVjb3Zlcnkgb24gJXMg KCVkKVxuIiwKKwkJCQllbmdpbmUtPm5hbWUsIHJldCk7CiAKLQkJCXJldCA9IC1FQUdBSU47CiAJ CQlnb3RvIHJlZW5hYmxlX3Jlc2V0X2VuZ2luZV9lcnJvcjsKLQkJfQorCQkgfQogCX0KIAogCS8q IFNhbXBsZSB0aGUgY3VycmVudCByaW5nIGhlYWQgcG9zaXRpb24gKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCmluZGV4IGM0Zjg4OGIuLmY4ZmVkYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpA QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV90 cmFjZS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgorI2luY2x1ZGUgImludGVsX2xyY190ZHIu aCIKIAogLyoqCiAgKiBET0M6IGludGVycnVwdCBoYW5kbGluZwpAQCAtMTMyNCw3ICsxMzI1LDcg QEAgZ2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIg aWlyLCBpbnQgdGVzdF9zaGlmdCkKIAlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQ VCA8PCB0ZXN0X3NoaWZ0KSkKIAkJbm90aWZ5X3JpbmcocmluZyk7CiAJaWYgKGlpciAmIChHVF9D T05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgdGVzdF9zaGlmdCkpCi0JCWludGVsX2xyY19pcnFf aGFuZGxlcihyaW5nKTsKKwkJaW50ZWxfbHJjX2lycV9oYW5kbGVyKHJpbmcsIHRydWUpOwogCWlm IChpaXIgJiAoR1RfR0VOOF9SQ1NfV0FUQ0hET0dfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9T SElGVCkpIHsKIAkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2 LT5kZXZfcHJpdmF0ZTsKIApAQCAtMjUyNCwyNyArMjUyNSw2IEBAIHN0YXRpYyB2b2lkIGk5MTVf ZXJyb3Jfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogCQkJcmV0ID0gaTkx NV9yZXNldF9lbmdpbmUocmluZyk7CiAKLQkJCS8qCi0JCQkgKiBFeGVjbGlzdCBtb2RlIG9ubHk6 Ci0JCQkgKgotCQkJICogLUVBR0FJTiBtZWFucyB0aGF0IGJldHdlZW4gZGV0ZWN0aW5nIGEgaGFu ZyAoYW5kCi0JCQkgKiBhbHNvIGRldGVybWluaW5nIHRoYXQgdGhlIGN1cnJlbnRseSBzdWJtaXR0 ZWQKLQkJCSAqIGNvbnRleHQgaXMgc3RhYmxlIGFuZCB2YWxpZCkgYW5kIHRyeWluZyB0byByZWNv dmVyCi0JCQkgKiBmcm9tIHRoZSBoYW5nIHRoZSBjdXJyZW50IGNvbnRleHQgY2hhbmdlZCBzdGF0 ZS4KLQkJCSAqIFRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgcHJvYmFibHkgbm90IGNvbXBsZXRlbHkg aHVuZwotCQkJICogYWZ0ZXIgYWxsLiBKdXN0IGZhaWwgYW5kIHJldHJ5IGJ5IGV4aXRpbmcgYWxs IHRoZQotCQkJICogd2F5IGJhY2sgYW5kIHdhaXQgZm9yIHRoZSBuZXh0IGhhbmcgZGV0ZWN0aW9u LiBJZiB3ZQotCQkJICogaGF2ZSBhIHRydWUgaGFuZyBvbiBvdXIgaGFuZHMgdGhlbiB3ZSB3aWxs IGRldGVjdCBpdAotCQkJICogYWdhaW4sIG90aGVyd2lzZSB3ZSB3aWxsIGNvbnRpbnVlIGxpa2Ug bm90aGluZwotCQkJICogaGFwcGVuZWQuCi0JCQkgKi8KLQkJCWlmIChyZXQgPT0gLUVBR0FJTikg ewotCQkJCURSTV9FUlJPUigiUmVzZXQgb2YgJXMgYWJvcnRlZCBkdWUgdG8gIiBcCi0JCQkJCSAg ImNoYW5nZSBpbiBjb250ZXh0IHN1Ym1pc3Npb24gIiBcCi0JCQkJCSAgInN0YXRlIC0gcmV0cnlp bmchIiwgcmluZy0+bmFtZSk7Ci0JCQkJcmV0ID0gMDsKLQkJCX0KLQogCQkJaWYgKHJldCkgewog CQkJCURSTV9FUlJPUigiUmVzZXQgb2YgJXMgZmFpbGVkISAoJWQpIiwgcmluZy0+bmFtZSwgcmV0 KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBjZGIxYjlhLi5iNjA2OWQzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNzI2LDExICs3MjYsMTUgQEAgc3RhdGljIHZvaWQg Z2V0X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAvKioKICAq IGludGVsX2xyY19pcnFfaGFuZGxlcigpIC0gaGFuZGxlIENvbnRleHQgU3dpdGNoIGludGVycnVw dHMKICAqIEByaW5nOiBFbmdpbmUgQ29tbWFuZCBTdHJlYW1lciB0byBoYW5kbGUuCisgKiBAZG9f bG9jazogTG9jayBleGVjbGlzdCBzcGlubG9jayAoaWYgZmFsc2UgdGhlIGNhbGxlciBpcyByZXNw b25zaWJsZSBmb3IgdGhpcykKICAqCiAgKiBDaGVjayB0aGUgdW5yZWFkIENvbnRleHQgU3RhdHVz IEJ1ZmZlcnMgYW5kIG1hbmFnZSB0aGUgc3VibWlzc2lvbiBvZiBuZXcKICAqIGNvbnRleHRzIHRv IHRoZSBFTFNQIGFjY29yZGluZ2x5LgorICoKKyAqIFJldHVybjoKKyAqICAgICAgVGhlIG51bWJl ciBvZiB1bnF1ZXVlZCBjb250ZXh0cy4KICAqLwotdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2ludCBpbnRlbF9scmNfaXJxX2hhbmRsZXIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBkb19sb2NrKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CiAJdTMy IHN0YXR1c19wb2ludGVyOwpAQCAtNzQwLDYgKzc0NCw5IEBAIHZvaWQgaW50ZWxfbHJjX2lycV9o YW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJdTMyIHN0YXR1c19pZDsKIAl1 MzIgc3VibWl0X2NvbnRleHRzID0gMDsKIAorCWlmIChkb19sb2NrKQorCQlzcGluX2xvY2soJnJp bmctPmV4ZWNsaXN0X2xvY2spOworCiAJc3RhdHVzX3BvaW50ZXIgPSBJOTE1X1JFQUQoUklOR19D T05URVhUX1NUQVRVU19QVFIocmluZykpOwogCiAJcmVhZF9wb2ludGVyID0gcmluZy0+bmV4dF9j b250ZXh0X3N0YXR1c19idWZmZXI7CkBAIC03NDcsOCArNzU0LDYgQEAgdm9pZCBpbnRlbF9scmNf aXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAlpZiAocmVhZF9wb2lu dGVyID4gd3JpdGVfcG9pbnRlcikKIAkJd3JpdGVfcG9pbnRlciArPSBHRU44X0NTQl9FTlRSSUVT OwogCi0Jc3Bpbl9sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKLQogCXdoaWxlIChyZWFkX3Bv aW50ZXIgPCB3cml0ZV9wb2ludGVyKSB7CiAKIAkJZ2V0X2NvbnRleHRfc3RhdHVzKHJpbmcsICsr cmVhZF9wb2ludGVyICUgR0VOOF9DU0JfRU5UUklFUywKQEAgLTc4MSw4ICs3ODYsNiBAQCB2b2lk IGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQll eGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcsIGZhbHNlKTsKIAl9CiAKLQlzcGluX3VubG9j aygmcmluZy0+ZXhlY2xpc3RfbG9jayk7Ci0KIAlpZiAodW5saWtlbHkoc3VibWl0X2NvbnRleHRz ID4gMikpCiAJCURSTV9FUlJPUigiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNvbXBsZXRlIGV2ZW50 cz9cbiIpOwogCkBAIC03OTMsNiArNzk2LDExIEBAIHZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVy KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJSTkxNV9XUklURShSSU5HX0NPTlRFWFRf U1RBVFVTX1BUUihyaW5nKSwKIAkJICAgX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BUUl9N QVNLLAogCQkJCSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA8PCA4KSk7CisKKwlp ZiAoZG9fbG9jaykKKwkJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOworCisJcmV0 dXJuIHN1Ym1pdF9jb250ZXh0czsKIH0KIAogc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9x dWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCkBAIC0xODExLDYgKzE4 MTksNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1OCBu ZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJ bHJjX3NldHVwX2hhcmR3YXJlX3N0YXR1c19wYWdlKHJpbmcsCiAJCQkJcmluZy0+ZGVmYXVsdF9j b250ZXh0LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlKTsKQEAgLTE4MjMsNiArMTgzMiw3IEBAIHN0 YXRpYyBpbnQgZ2VuOF9pbml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCiAJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUlVOX0xJU1RfRU5BQkxFKSk7CiAJUE9T VElOR19SRUFEKFJJTkdfTU9ERV9HRU43KHJpbmcpKTsKIAorCXNwaW5fbG9ja19pcnFzYXZlKCZy aW5nLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7CiAJLyoKIAkgKiBJbnN0ZWFkIG9mIHJlc2V0dGlu ZyB0aGUgQ29udGV4dCBTdGF0dXMgQnVmZmVyIChDU0IpIHJlYWQgcG9pbnRlciB0bwogCSAqIHpl cm8sIHdlIG5lZWQgdG8gcmVhZCB0aGUgd3JpdGUgcG9pbnRlciBmcm9tIGhhcmR3YXJlIGFuZCB1 c2UgaXRzCkBAIC0xODQ3LDYgKzE4NTcsOCBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25f cmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQluZXh0X2NvbnRleHRfc3RhdHVz X2J1ZmZlcl9odyA9IChHRU44X0NTQl9FTlRSSUVTIC0gMSk7CiAKIAlyaW5nLT5uZXh0X2NvbnRl eHRfc3RhdHVzX2J1ZmZlciA9IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyX2h3OworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKKwogCURSTV9E RUJVR19EUklWRVIoIkV4ZWNsaXN0cyBlbmFibGVkIGZvciAlc1xuIiwgcmluZy0+bmFtZSk7CiAK IAlpOTE1X2hhbmdjaGVja19yZWluaXQocmluZyk7CkBAIC0zMjMyLDMgKzMyNDQsNjQgQEAgaW50 ZWxfZXhlY2xpc3RzX1REUl9nZXRfY3VycmVudF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCiAKIAlyZXR1cm4gc3RhdHVzOwogfQorCisvKioKKyAqIGV4ZWNsaXN0c19URFJf Zm9yY2VfQ1NCX2NoZWNrKCkgLSByZWN0aWZ5IGluY29uc2lzdGVuY3kgYnkgZmFraW5nIElSUQor ICogQGRldl9wcml2OiAuLi4KKyAqIEBlbmdpbmU6IGVuZ2luZSB3aG9zZSBDU0IgaXMgdG8gYmUg Y2hlY2tlZC4KKyAqCisgKiBDb250ZXh0IHN1Ym1pc3Npb24gc3RhdHVzIGluY29uc2lzdGVuY2ll cyBhcmUgY2F1c2VkIGJ5IGxvc3QgaW50ZXJydXB0cyB0aGF0CisgKiBsZWF2ZSBDU0IgZXZlbnRz IHVucHJvY2Vzc2VkIGFuZCBsZWF2ZSBjb250ZXh0cyBpbiB0aGUgZXhlY2xpc3QgcXVldWVzIHdo ZW4KKyAqIHRoZXkgc2hvdWxkIHJlYWxseSBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhlc2Ugc3RhbGUg Y29udGV4dHMgYmxvY2sgZnVydGhlcgorICogc3VibWlzc2lvbnMgdG8gdGhlIGhhcmR3YXJlIChh bGwgdGhlIHdoaWxlIHRoZSBoYXJkd2FyZSBpcyBzaXR0aW5nIGlkbGUpIGFuZAorICogdGhlcmVi eSBjYXVzZSBhIHNvZnR3YXJlIGhhbmcuIFRoZSB3YXkgdG8gcmVjdGlmeSB0aGlzIGlzIGJ5IG1h bnVhbGx5CisgKiBjaGVja2luZyB0aGUgQ1NCIGJ1ZmZlciBmb3Igb3V0c3RhbmRpbmcgY29udGV4 dCBzdGF0ZSB0cmFuc2l0aW9uIGV2ZW50cyBhbmQKKyAqIGFjdGluZyBvbiB0aGVzZS4gVGhlIGVh c2llc3Qgd2F5IG9mIGRvaW5nIHRoaXMgaXMgYnkgc2ltcGx5IGZha2luZyB0aGUKKyAqIHByZXN1 bWVkIGxvc3QgY29udGV4dCBldmVudCBpbnRlcnJ1cHQgYnkgbWFudWFsbHkgY2FsbGluZyB0aGUg aW50ZXJydXB0CisgKiBoYW5kbGVyLiBJZiB0aGVyZSBhcmUgaW5kZWVkIG91dHN0YW5kaW5nLCB1 bnByb2Nlc3NlZCBDU0IgZXZlbnRzIHRoZW4gdGhlc2UKKyAqIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5 IHRoZSBmYWtlZCBpbnRlcnJ1cHQgY2FsbCBhbmQgaWYgb25lIG9mIHRoZXNlIGV2ZW50cyBpcwor ICogc29tZSBmb3JtIG9mIGNvbnRleHQgY29tcGxldGlvbiBldmVudCB0aGVuIHRoYXQgd2lsbCBw dXJnZSBhIHN0YWxlIGNvbnRleHQKKyAqIGZyb20gdGhlIGV4ZWNsaXN0IHF1ZXVlIGFuZCBzdWJt aXQgYSBuZXcgY29udGV4dCB0byBoYXJkd2FyZSBmcm9tIHRoZSBxdWV1ZSwKKyAqIHRoZXJlYnkg cmVzdW1pbmcgZXhlY3V0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiAJVHJ1ZTogRm9yY2VkIENT QiBjaGVjayBzdWNjZXNzZnVsLCBzdGF0ZSBjb25zaXN0ZW5jeSByZXN0b3JlZC4KKyAqIAlGYWxz ZTogTm8gQ1NCIGV2ZW50cyBmb3VuZCwgZm9yY2VkIENTQiBjaGVjayB1bnN1Y2Nlc3NmdWwsIGZh aWxlZAorICogCSAgICAgICB0cnlpbmcgdG8gcmVzdG9yZSBjb25zaXN0ZW5jeS4KKyAqLworYm9v bCBpbnRlbF9leGVjbGlzdHNfVERSX2ZvcmNlX0NTQl9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlib29sIGh3X2FjdGl2ZTsKKwlpbnQgd2FzX2VmZmVj dGl2ZTsKKworCWh3X2FjdGl2ZSA9CisJCShJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVNf TE8oZW5naW5lKSkgJgorCQkJRVhFQ0xJU1RfU1RBVFVTX0NVUlJFTlRfQUNUSVZFX0VMRU1FTlRf U1RBVFVTKSA/CisJCQkJdHJ1ZSA6IGZhbHNlOworCWlmIChod19hY3RpdmUpIHsKKwkJdTMyIGh3 X2NvbnRleHQ7CisKKwkJaHdfY29udGV4dCA9IEk5MTVfUkVBRChSSU5HX0VYRUNMSVNUX1NUQVRV U19DVFhfSUQoZW5naW5lKSk7CisJCVdBUk4oaHdfYWN0aXZlLCAiQ29udGV4dCAoJXgpIGV4ZWN1 dGluZyBvbiAlcyAtICIgXAorCQkJCSJObyBuZWVkIGZvciBmYWtlZCBJUlEhXG4iLAorCQkJCWh3 X2NvbnRleHQsIGVuZ2luZS0+bmFtZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7CisKKwlXQVJOKDEsICIl czogSW5jb25zaXN0ZW50IGNvbnRleHQgc3RhdGUgLSBGYWtpbmcgY29udGV4dCBldmVudCBJUlEh XG4iLAorCQllbmdpbmUtPm5hbWUpOworCisJaWYgKCEod2FzX2VmZmVjdGl2ZSA9IGludGVsX2xy Y19pcnFfaGFuZGxlcihlbmdpbmUsIGZhbHNlKSkpCisJCURSTV9FUlJPUigiRm9yY2VkIENTQiBj aGVjayBvZiAlcyBpbmVmZmVjdGl2ZSFcbiIsIGVuZ2luZS0+bmFtZSk7CisKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKKworCXdha2VfdXBf YWxsKCZlbmdpbmUtPmlycV9xdWV1ZSk7CisKKwlyZXR1cm4gISF3YXNfZWZmZWN0aXZlOworfQor CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IGQ5YWNiMzEuLjU1YTU4MmQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5oCkBAIC0xMTcsNyArMTE3LDcgQEAgaW50IGludGVsX2V4ZWNsaXN0 c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJCQkg ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdm1hcyk7CiB1MzIgaW50ZWxfZXhlY2xpc3RzX2N0eF9p ZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaik7CiAKLXZvaWQgaW50ZWxfbHJj X2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOworaW50IGludGVsX2xy Y19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGRvX2xvY2sp Owogdm9pZCBpbnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcpOwogCiBpbnQgaW50ZWxfZXhlY2xpc3RzX3JlYWRfdGFpbChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjX3Rkci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjX3Rkci5oCmluZGV4 IDQ1MjA3NTMuLjA0MWM4MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyY190ZHIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmNfdGRyLmgKQEAg LTMyLDUgKzMyLDggQEAgZW51bSBjb250ZXh0X3N1Ym1pc3Npb25fc3RhdHVzCiBpbnRlbF9leGVj bGlzdHNfVERSX2dldF9jdXJyZW50X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxKTsKIAorYm9vbCBpbnRlbF9l eGVjbGlzdHNfVERSX2ZvcmNlX0NTQl9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCisJCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCiAjZW5kaWYg LyogX0lOVEVMX0xSQ19URFJfSF8gKi8KIAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==