From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: Add short HPD IRQ storm detection for non-MST systems Date: Fri, 26 Oct 2018 20:52:21 +0300 Message-ID: <20181026175221.GG9144@intel.com> References: <20181025222657.9241-1-lyude@redhat.com> <20181025222657.9241-3-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181025222657.9241-3-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Paul Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBPY3QgMjUsIDIwMTggYXQgMDY6MjY6NTdQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBVbmZvcnR1bmF0ZWx5LCBpdCBzZWVtcyB0aGF0IHRoZSBIUEQgSVJRIHN0b3JtIHByb2Js ZW0gZnJvbSB0aGUgZWFybHkKPiBkYXlzIG9mIEludGVsIEdQVXMgd2FzIG5ldmVyIGVudGlyZWx5 IHNvbHZlZCwgb25seSBtb3N0bHkuIFdpdGhpbiB0aGUKPiBsYXN0IGNvdXBsZSBvZiBkYXlzLCBJ IGdvdCBhIGJ1ZyByZXBvcnQgZnJvbSBvbmUgb2Ygb3VyIGN1c3RvbWVycyB3aG8KPiBoYWQgYmVl biBoYXZpbmcgaXNzdWVzIHdpdGggdGhlaXIgbWFjaGluZSBzdWRkZW5seSBib290aW5nIHVwIHZl cnkKPiBzbG93bHkgYWZ0ZXIgaGF2aW5nIHVwZGF0ZWQuIFRoZSBhbW91bnQgb2YgdGltZSBpdCB0 b29rIHRvIGJvb3Qgd2VudAo+IGZyb20gYXJvdW5kIDMwIHNlY29uZHMsIHRvIG92ZXIgNiBtaW51 dGVzIGNvbnNpc3RlbnRseS4KPiAKPiBBZnRlciBzb21lIGludmVzdGlnYXRpb24sIEkgZGlzY292 ZXJlZCB0aGF0IGk5MTUgd2FzIHJlcG9ydGluZyBtYXNzaXZlCj4gYW1vdW50cyBvZiBzaG9ydCBI UEQgSVJRIHNwYW0gb24gdGhpcyBzeXN0ZW0gZnJvbSB0aGUgRGlzcGxheVBvcnQgcG9ydCwKPiBk ZXNwaXRlIHRoZXJlIG5vdCBiZWluZyBhbnl0aGluZyBhY3R1YWxseSBjb25uZWN0ZWQuIFRoZSBz eW1wdG9tcyB3b3VsZAo+IHN0YXJ0IHdpdGggb25lICJsb25nIiBIUEQgSVJRIGJlaW5nIGRldGVj dGVkIGF0IGJvb3Q6Cj4gCj4gWyAgICAxLjg5MTM5OF0gW2RybTppbnRlbF9nZXRfaHBkX3BpbnMg W2k5MTVdXSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0IDB4MDA0NDAwMDAsIGRpZyAweDAw NDQwMDAwLCBwaW5zIDB4MDAwMDAwYTAKPiBbICAgIDEuODkxNDM2XSBbZHJtOmludGVsX2hwZF9p cnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgQiAtIGxvbmcKPiBbICAgIDEuODkx NDcyXSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIFJlY2VpdmVkIEhQRCBpbnRl cnJ1cHQgb24gUElOIDUgLSBjbnQ6IDAKPiBbICAgIDEuODkxNTA4XSBbZHJtOmludGVsX2hwZF9p cnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgRCAtIGxvbmcKPiBbICAgIDEuODkx NTQ0XSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIFJlY2VpdmVkIEhQRCBpbnRl cnJ1cHQgb24gUElOIDcgLSBjbnQ6IDAKPiBbICAgIDEuODkxNTkyXSBbZHJtOmludGVsX2RwX2hw ZF9wdWxzZSBbaTkxNV1dIGdvdCBocGQgaXJxIG9uIHBvcnQgQiAtIGxvbmcKPiBbICAgIDEuODkx NjI4XSBbZHJtOmludGVsX2RwX2hwZF9wdWxzZSBbaTkxNV1dIGdvdCBocGQgaXJxIG9uIHBvcnQg RCAtIGxvbmcKPiDigKYKPiAKPiBmb2xsb3dlZCBieSBjb25zdGFudCBzaG9ydCBJUlFzIGFmdGVy d2FyZHM6Cj4gCj4gWyAgICAxLjg5NTA5MV0gW2RybTppbnRlbF9lbmNvZGVyX2hvdHBsdWcgW2k5 MTVdXSBbQ09OTkVDVE9SOjY2OkRQLTFdIHN0YXR1cyB1cGRhdGVkIGZyb20gdW5rbm93biB0byBk aXNjb25uZWN0ZWQKPiBbICAgIDEuODk1MTI5XSBbZHJtOmk5MTVfaG90cGx1Z193b3JrX2Z1bmMg W2k5MTVdXSBDb25uZWN0b3IgRFAtMyAocGluIDcpIHJlY2VpdmVkIGhvdHBsdWcgZXZlbnQuCj4g WyAgICAxLjg5NTE2NV0gW2RybTppbnRlbF9kcF9kZXRlY3QgW2k5MTVdXSBbQ09OTkVDVE9SOjcy OkRQLTNdCj4gWyAgICAxLjg5NTI3NV0gW2RybTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVdXSBo b3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAwLCBw aW5zIDB4MDAwMDAwODAKPiBbICAgIDEuODk1MzEyXSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxl ciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgRCAtIHNob3J0Cj4gWyAgICAxLjg5NTc2Ml0gW2Ry bTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVdXSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0 IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAwLCBwaW5zIDB4MDAwMDAwODAKPiBbICAgIDEuODk1 Nzk5XSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQg RCAtIHNob3J0Cj4gWyAgICAxLjg5NjIzOV0gW2RybTppbnRlbF9kcF9hdXhfeGZlciBbaTkxNV1d IGRwX2F1eF9jaCB0aW1lb3V0IHN0YXR1cyAweDcxNDUwMDg1Cj4gWyAgICAxLjg5NjI5M10gW2Ry bTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVdXSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0 IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAwLCBwaW5zIDB4MDAwMDAwODAKPiBbICAgIDEuODk2 MzMwXSBbZHJtOmludGVsX2hwZF9pcnFfaGFuZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQg RCAtIHNob3J0Cj4gWyAgICAxLjg5Njc4MV0gW2RybTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVd XSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBzdGF0IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAw LCBwaW5zIDB4MDAwMDAwODAKPiBbICAgIDEuODk2ODE3XSBbZHJtOmludGVsX2hwZF9pcnFfaGFu ZGxlciBbaTkxNV1dIGRpZ2l0YWwgaHBkIHBvcnQgRCAtIHNob3J0Cj4gWyAgICAxLjg5NzI3NV0g W2RybTppbnRlbF9nZXRfaHBkX3BpbnMgW2k5MTVdXSBob3RwbHVnIGV2ZW50IHJlY2VpdmVkLCBz dGF0IDB4MDAyMDAwMDAsIGRpZyAweDAwMjAwMDAwLCBwaW5zIDB4MDAwMDAwODAKPiAKPiBUaGUg Y3VzdG9tZXIncyBzeXN0ZW0gaW4gcXVlc3Rpb24gaGFzIGEgR000NSBHUFUsIHdoaWNoIGlzIGFw cGFyZW50bHkKPiB3ZWxsIGtub3duIGZvciBob3RwbHVnZ2luZyBzdG9ybXMuCj4gCj4gU28sIHdv cmthcm91bmQgdGhpcyBpbXByZXNzaXZlbHkgYnJva2VuIGhhcmR3YXJlIGJ5IGRldGVjdGluZyBz aG9ydCBJUlEKPiBzdG9ybXMgdXNpbmcgYSBzZXBhcmF0ZSB0aHJlc2hvbGQgYW5kIGNvdW50LCBv bmUgdGhhdCBpcyBtdWNoIGhpZ2hlcgo+IHRoZW4gdGhlIHRocmVzaG9sZCBmb3IgbG9uZyBJUlFz LiBXZSBkZWZhdWx0IHRvIGEgdGhyZXNob2xkIG9mIDUwIHNob3J0Cj4gcHVsc2VzIHdpdGhpbiB0 aGUgdGltZXNwYW4gb2YgYSBzZWNvbmQsIHdoaWNoIHNob3VsZCBhbW91bnQgdG8gYWJvdXQKPiAx MDBtcyBvZiBjb25zdGFudCBwdWxzaW5nLiBUaGlzIHNob3VsZCBiZSBhIGdvb2QgbWlkZGxlIGdy b3VuZCBiZXR3ZWVuCj4gYXZvaWRpbmcgZGV0ZWN0aW5nIGZhbHNlIElSUSBzdG9ybXMsIHdoaWxl IHN0aWxsIGNhdGNoaW5nIHNob3J0IElSUQo+IHN0b3JtcyBxdWlja2x5IGVub3VnaCB0byBtaW5p bWl6ZSB0aGUgYW1vdW50IG9mIHRpbWUgd2UnbGwgc3R1dHRlciBldmVyeQo+IHRpbWUgaG90cGx1 Z2dpbmcgZ2V0cyByZS1lbmFibGVkIGFuZCBpbW1lZGlhdGVseSBkaXNhYmxlZCBieSBhbm90aGVy Cj4gc2hvcnQgSVJRIHN0b3JtLgo+IAo+IEFuZCBqdXN0IHRvIGJlIGV4dHJhIHNhZmU6IHdlIGRv bid0IGVuYWJsZSB0aGlzIGJ5IGRlZmF1bHQgb24gc3lzdGVtcwo+IHdpdGggTVNUIHN1cHBvcnQu IFRoZXJlJ3MgdG9vIGhpZ2ggb2YgYSBjaGFuY2Ugb2YgTVNUIHN1cHBvcnQgdHJpZ2dlcmluZwo+ IHN0b3JtIGRldGVjdGlvbiwgYW5kIHN5c3RlbXMgdGhhdCBhcmUgbmV3IGVub3VnaCB0byBzdXBw b3J0IE1TVCBhcmUgYQo+IGxvdCBsZXNzIGxpa2VseSB0byBoYXZlIGlzc3VlcyB3aXRoIElSUSBz dG9ybXMgYW55d2F5Lgo+IAo+IEFzIGEgbm90ZTogdGhpcyBwYXRjaCB3YXMgdGVzdGVkIHVzaW5n IGEgVGhpbmtQYWQgVDQ1MHMgYW5kIGEgQ2hhbWVsaXVtCj4gdG8gc2ltdWxhdGUgdGhlIHNob3J0 IElSUSBzdG9ybXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0 LmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgIHwgODkgKysr KysrKysrKysrKysrKysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAxNSArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAg ICAgfCAxNCArKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgfCA4 NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNl cnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+IGluZGV4IGI0NzQ0YTY4Y2Q4OC4uODRlODlmYmQ1NWZiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNDU2NiwyMSArNDU2NiwyNCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2ZvcmNld2FrZV9mb3BzID0gewo+ICAJLnJl bGVhc2UgPSBpOTE1X2ZvcmNld2FrZV9yZWxlYXNlLAo+ICB9Owo+ICAKPiAtc3RhdGljIGludCBp OTE1X2hwZF9zdG9ybV9jdGxfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4g K3N0YXRpYyBpbnQgaTkxNV9ocGRfc3Rvcm1fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJvb2wg bG9uZ19ocGQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0t PnByaXZhdGU7Cj4gIAlzdHJ1Y3QgaTkxNV9ob3RwbHVnICpob3RwbHVnID0gJmRldl9wcml2LT5o b3RwbHVnOwo+ICsJY29uc3QgdW5zaWduZWQgaW50IHRocmVzaG9sZCA9IGxvbmdfaHBkID8KPiAr CQlob3RwbHVnLT5sb25nX2hwZF9zdG9ybV90aHJlc2hvbGQgOgo+ICsJCWhvdHBsdWctPnNob3J0 X2hwZF9zdG9ybV90aHJlc2hvbGQ7Cj4gIAo+IC0Jc2VxX3ByaW50ZihtLCAiVGhyZXNob2xkOiAl ZFxuIiwgaG90cGx1Zy0+aHBkX3N0b3JtX3RocmVzaG9sZCk7Cj4gKwlzZXFfcHJpbnRmKG0sICJU aHJlc2hvbGQ6ICVkXG4iLCB0aHJlc2hvbGQpOwo+ICAJc2VxX3ByaW50ZihtLCAiRGV0ZWN0ZWQ6 ICVzXG4iLAo+ICAJCSAgIHllc25vKGRlbGF5ZWRfd29ya19wZW5kaW5nKCZob3RwbHVnLT5yZWVu YWJsZV93b3JrKSkpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3NpemVf dCBpOTE1X2hwZF9zdG9ybV9jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4gLQkJCQkJY29u c3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBsZW4sCj4gLQkJCQkJbG9mZl90ICpvZmZwKQo+ ICtzdGF0aWMgc3NpemVfdCBpOTE1X2hwZF9zdG9ybV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwK PiArCQkJCSAgICBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGxlbiwKPiArCQkJCSAg ICBsb2ZmX3QgKm9mZnAsIGJvb2wgbG9uZ19ocGQpCj4gIHsKPiAgCXN0cnVjdCBzZXFfZmlsZSAq bSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG0tPnByaXZhdGU7Cj4gQEAgLTQ1ODksNiArNDU5Miw3IEBAIHN0YXRpYyBzc2l6ZV90 IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgCWludCBpOwo+ ICAJY2hhciAqbmV3bGluZTsKPiAgCWNoYXIgdG1wWzE2XTsKPiArCWNvbnN0IGNoYXIgKm5hbWUg PSBsb25nX2hwZCA/ICJsb25nIiA6ICJzaG9ydCI7Cj4gIAo+ICAJaWYgKGxlbiA+PSBzaXplb2Yo dG1wKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtNDYwMywyMiArNDYwNywzNiBAQCBzdGF0 aWMgc3NpemVfdCBpOTE1X2hwZF9zdG9ybV9jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4g IAlpZiAobmV3bGluZSkKPiAgCQkqbmV3bGluZSA9ICdcMCc7Cj4gIAo+IC0JaWYgKHN0cmNtcCh0 bXAsICJyZXNldCIpID09IDApCj4gLQkJbmV3X3RocmVzaG9sZCA9IEhQRF9TVE9STV9ERUZBVUxU X1RIUkVTSE9MRDsKPiAtCWVsc2UgaWYgKGtzdHJ0b3VpbnQodG1wLCAxMCwgJm5ld190aHJlc2hv bGQpICE9IDApCj4gKwlpZiAoc3RyY21wKHRtcCwgInJlc2V0IikgPT0gMCkgewo+ICsJCWlmIChs b25nX2hwZCkKPiArCQkJbmV3X3RocmVzaG9sZCA9IEhQRF9TVE9STV9ERUZBVUxUX1RIUkVTSE9M RF9MT05HOwo+ICsJCWVsc2UgaWYgKCFIQVNfRFBfTVNUKGRldl9wcml2KSkKPiArCQkJbmV3X3Ro cmVzaG9sZCA9IEhQRF9TVE9STV9ERUZBVUxUX1RIUkVTSE9MRF9TSE9SVDsKPiArCQllbHNlCj4g KwkJCW5ld190aHJlc2hvbGQgPSAwOwo+ICsJfSBlbHNlIGlmIChrc3RydG91aW50KHRtcCwgMTAs ICZuZXdfdGhyZXNob2xkKSAhPSAwKSB7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gIAo+ ICAJaWYgKG5ld190aHJlc2hvbGQgPiAwKQo+IC0JCURSTV9ERUJVR19LTVMoIlNldHRpbmcgSFBE IHN0b3JtIGRldGVjdGlvbiB0aHJlc2hvbGQgdG8gJWRcbiIsCj4gLQkJCSAgICAgIG5ld190aHJl c2hvbGQpOwo+ICsJCURSTV9ERUJVR19LTVMoIlNldHRpbmcgJXMgSFBEIHN0b3JtIGRldGVjdGlv biB0aHJlc2hvbGQgdG8gJWRcbiIsCj4gKwkJCSAgICAgIG5hbWUsIG5ld190aHJlc2hvbGQpOwo+ ICAJZWxzZQo+IC0JCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBIUEQgc3Rvcm0gZGV0ZWN0aW9u XG4iKTsKPiArCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgJXMgSFBEIHN0b3JtIGRldGVjdGlv blxuIiwgbmFtZSk7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsK PiAtCWhvdHBsdWctPmhwZF9zdG9ybV90aHJlc2hvbGQgPSBuZXdfdGhyZXNob2xkOwo+ICsJaWYg KGxvbmdfaHBkKQo+ICsJCWhvdHBsdWctPmxvbmdfaHBkX3N0b3JtX3RocmVzaG9sZCA9IG5ld190 aHJlc2hvbGQ7Cj4gKwllbHNlCj4gKwkJaG90cGx1Zy0+c2hvcnRfaHBkX3N0b3JtX3RocmVzaG9s ZCA9IG5ld190aHJlc2hvbGQ7Cj4gKwo+ICAJLyogUmVzZXQgdGhlIEhQRCBzdG9ybSBzdGF0cyBz byB3ZSBkb24ndCBhY2NpZGVudGFsbHkgdHJpZ2dlciBhIHN0b3JtICovCj4gLQlmb3JfZWFjaF9o cGRfcGluKGkpCj4gLQkJaG90cGx1Zy0+c3RhdHNbaV0uY291bnQgPSAwOwo+ICsJZm9yX2VhY2hf aHBkX3BpbihpKSB7Cj4gKwkJaWYgKGxvbmdfaHBkKQo+ICsJCQlob3RwbHVnLT5zdGF0c1tpXS5s b25nX2lycS5jb3VudCA9IDA7Cj4gKwkJZWxzZQo+ICsJCQlob3RwbHVnLT5zdGF0c1tpXS5zaG9y dF9pcnEuY291bnQgPSAwOwo+ICsJfQo+ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJx X2xvY2spOwo+ICAKPiAgCS8qIFJlLWVuYWJsZSBocGQgaW1tZWRpYXRlbHkgaWYgd2Ugd2VyZSBp biBhbiBpcnEgc3Rvcm0gKi8KPiBAQCAtNDYyNyw2ICs0NjQ1LDE4IEBAIHN0YXRpYyBzc2l6ZV90 IGk5MTVfaHBkX3N0b3JtX2N0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgCXJldHVybiBs ZW47Cj4gIH0KPiAgCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK2k5MTVfaHBkX3N0b3JtX2N0bF93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gKwkJCSBzaXpl X3QgbGVuLCBsb2ZmX3QgKm9mZnApCj4gK3sKPiArCXJldHVybiBpOTE1X2hwZF9zdG9ybV93cml0 ZShmaWxlLCB1YnVmLCBsZW4sIG9mZnAsIHRydWUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGk5 MTVfaHBkX3N0b3JtX2N0bF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAr ewo+ICsJcmV0dXJuIGk5MTVfaHBkX3N0b3JtX3Nob3cobSwgdHJ1ZSk7Cj4gK30KPiArCj4gIHN0 YXRpYyBpbnQgaTkxNV9ocGRfc3Rvcm1fY3RsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpCj4gIHsKPiAgCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X2hw ZF9zdG9ybV9jdGxfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7Cj4gQEAgLTQ2MzgsNyArNDY2OCwz NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2hwZF9zdG9ybV9j dGxfZm9wcyA9IHsKPiAgCS5yZWFkID0gc2VxX3JlYWQsCj4gIAkubGxzZWVrID0gc2VxX2xzZWVr LAo+ICAJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwKPiAtCS53cml0ZSA9IGk5MTVfaHBkX3N0 b3JtX2N0bF93cml0ZQo+ICsJLndyaXRlID0gaTkxNV9ocGRfc3Rvcm1fY3RsX3dyaXRlLAo+ICt9 Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAraTkxNV9zaG9ydF9ocGRfc3Rvcm1fY3RsX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiArCQkJICAgICAg IHNpemVfdCBsZW4sIGxvZmZfdCAqb2ZmcCkKPiArewo+ICsJcmV0dXJuIGk5MTVfaHBkX3N0b3Jt X3dyaXRlKGZpbGUsIHVidWYsIGxlbiwgb2ZmcCwgZmFsc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGk5MTVfc2hvcnRfaHBkX3N0b3JtX2N0bF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKPiArewo+ICsJcmV0dXJuIGk5MTVfaHBkX3N0b3JtX3Nob3cobSwgZmFsc2UpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2k5MTVfc2hvcnRfaHBkX3N0b3JtX2N0bF9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+ICt7Cj4gKwlyZXR1cm4gc2lu Z2xlX29wZW4oZmlsZSwgaTkxNV9zaG9ydF9ocGRfc3Rvcm1fY3RsX3Nob3csCj4gKwkJCSAgIGlu b2RlLT5pX3ByaXZhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfZm9wcyA9IHsKPiArCS5vd25lciA9IFRI SVNfTU9EVUxFLAo+ICsJLm9wZW4gPSBpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGxfb3BlbiwKPiAr CS5yZWFkID0gc2VxX3JlYWQsCj4gKwkubGxzZWVrID0gc2VxX2xzZWVrLAo+ICsJLnJlbGVhc2Ug PSBzaW5nbGVfcmVsZWFzZSwKPiArCS53cml0ZSA9IGk5MTVfc2hvcnRfaHBkX3N0b3JtX2N0bF93 cml0ZSwKPiAgfTsKPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9kcnJzX2N0bF9zZXQodm9pZCAqZGF0 YSwgdTY0IHZhbCkKPiBAQCAtNDgxOCw2ICs0ODc2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X2RlYnVnZnNfZmlsZXMgewo+ICAJeyJpOTE1X2d1Y19sb2dfbGV2ZWwiLCAmaTkxNV9ndWNf bG9nX2xldmVsX2ZvcHN9LAo+ICAJeyJpOTE1X2d1Y19sb2dfcmVsYXkiLCAmaTkxNV9ndWNfbG9n X3JlbGF5X2ZvcHN9LAo+ICAJeyJpOTE1X2hwZF9zdG9ybV9jdGwiLCAmaTkxNV9ocGRfc3Rvcm1f Y3RsX2ZvcHN9LAo+ICsJeyJpOTE1X3Nob3J0X2hwZF9zdG9ybV9jdGwiLCAmaTkxNV9zaG9ydF9o cGRfc3Rvcm1fY3RsX2ZvcHN9LAo+ICAJeyJpOTE1X2lwY19zdGF0dXMiLCAmaTkxNV9pcGNfc3Rh dHVzX2ZvcHN9LAo+ICAJeyJpOTE1X2RycnNfY3RsIiwgJmk5MTVfZHJyc19jdGxfZm9wc30sCj4g IAl7Imk5MTVfZWRwX3Bzcl9kZWJ1ZyIsICZpOTE1X2VkcF9wc3JfZGVidWdfZm9wc30KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA4MDgyMDRhN2NhN2MuLmVmMzhiYWY1MDI5OSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yODIsMTQgKzI4MiwyMCBAQCBlbnVtIGhw ZF9waW4gewo+ICAjZGVmaW5lIGZvcl9lYWNoX2hwZF9waW4oX19waW4pIFwKPiAgCWZvciAoKF9f cGluKSA9IChIUERfTk9ORSArIDEpOyAoX19waW4pIDwgSFBEX05VTV9QSU5TOyAoX19waW4pKysp Cj4gIAo+IC0jZGVmaW5lIEhQRF9TVE9STV9ERUZBVUxUX1RIUkVTSE9MRCA1Cj4gKyNkZWZpbmUg SFBEX1NUT1JNX0RFRkFVTFRfVEhSRVNIT0xEX0xPTkcJNQo+ICsjZGVmaW5lIEhQRF9TVE9STV9E RUZBVUxUX1RIUkVTSE9MRF9TSE9SVAk1MAoKSG1tLiBNYXliZSB3ZSBjb3VsZCBzdGljayB0byB0 aGUgb25lIGNvdW50ZXIgYW5kIG1ha2UgZWFjaApsb25nIGhwZCBjb250cmlidXRlIDEwIGFuZCBl YWNoIHNob3J0IGhwZCBjb250cmlidXRlIDEKKG9yIHdoYXRldmVyIHNlZW1zIGFwcHJvcHJpYXRl KT8KCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfaHBkX2lycV9zdGF0cyB7Cj4gKwl1bnNpZ25lZCBsb25n IGxhc3RfamlmZmllczsKPiArCWludCBjb3VudDsKPiArfTsKPiAgCj4gIHN0cnVjdCBpOTE1X2hv dHBsdWcgewo+ICAJc3RydWN0IHdvcmtfc3RydWN0IGhvdHBsdWdfd29yazsKPiAgCj4gIAlzdHJ1 Y3Qgewo+IC0JCXVuc2lnbmVkIGxvbmcgbGFzdF9qaWZmaWVzOwo+IC0JCWludCBjb3VudDsKPiAr CQlzdHJ1Y3QgaW50ZWxfaHBkX2lycV9zdGF0cyBsb25nX2lycTsKPiArCQlzdHJ1Y3QgaW50ZWxf aHBkX2lycV9zdGF0cyBzaG9ydF9pcnE7Cj4gIAkJZW51bSB7Cj4gIAkJCUhQRF9FTkFCTEVEID0g MCwKPiAgCQkJSFBEX0RJU0FCTEVEID0gMSwKPiBAQCAtMzA2LDcgKzMxMiw4IEBAIHN0cnVjdCBp OTE1X2hvdHBsdWcgewo+ICAJc3RydWN0IHdvcmtfc3RydWN0IHBvbGxfaW5pdF93b3JrOwo+ICAJ Ym9vbCBwb2xsX2VuYWJsZWQ7Cj4gIAo+IC0JdW5zaWduZWQgaW50IGhwZF9zdG9ybV90aHJlc2hv bGQ7Cj4gKwl1bnNpZ25lZCBpbnQgbG9uZ19ocGRfc3Rvcm1fdGhyZXNob2xkOwo+ICsJdW5zaWdu ZWQgaW50IHNob3J0X2hwZF9zdG9ybV90aHJlc2hvbGQ7Cj4gIAo+ICAJLyoKPiAgCSAqIGlmIHdl IGdldCBhIEhQRCBpcnEgZnJvbSBEUCBhbmQgYSBIUEQgaXJxIGZyb20gbm9uLURQCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gaW5kZXggMTBmMjhhMmVlMmU2Li4yOGE5MzdmM2U4ZTAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtNDg0Miw3ICs0ODQyLDE5IEBAIHZvaWQgaW50 ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCWRl dl9wcml2LT5kaXNwbGF5X2lycXNfZW5hYmxlZCA9IGZhbHNlOwo+ICAKPiAtCWRldl9wcml2LT5o b3RwbHVnLmhwZF9zdG9ybV90aHJlc2hvbGQgPSBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hPTEQ7 Cj4gKwlkZXZfcHJpdi0+aG90cGx1Zy5sb25nX2hwZF9zdG9ybV90aHJlc2hvbGQgPQo+ICsJCUhQ RF9TVE9STV9ERUZBVUxUX1RIUkVTSE9MRF9MT05HOwo+ICsKPiArCS8qIElmIHdlIGhhdmUgTVNU IHN1cHBvcnQsIHdlIHdhbnQgdG8gYXZvaWQgZG9pbmcgc2hvcnQgSFBEIElSUSBzdG9ybQo+ICsJ ICogZGV0ZWN0aW9uLCBhcyBzaG9ydCBIUEQgc3Rvcm1zIHdpbGwgb2NjdXIgYXMgYSBuYXR1cmFs IHBhcnQgb2YKPiArCSAqIHNpZGViYW5kIG1lc3NhZ2luZyB3aXRoIE1TVC4KPiArCSAqIE9uIG9s ZGVyIHBsYXRmb3JtcyBob3dldmVyLCBJUlEgc3Rvcm1zIGNhbiBvY2N1ciB3aXRoIGJvdGggbG9u ZyBhbmQKPiArCSAqIHNob3J0IHB1bHNlcywgYXMgc2VlbiBvbiBzb21lIEc0eCBzeXN0ZW1zLgo+ ICsJICovCj4gKwlpZiAoIUhBU19EUF9NU1QoZGV2X3ByaXYpKSB7Cj4gKwkJZGV2X3ByaXYtPmhv dHBsdWcuc2hvcnRfaHBkX3N0b3JtX3RocmVzaG9sZCA9Cj4gKwkJCUhQRF9TVE9STV9ERUZBVUxU X1RIUkVTSE9MRF9TSE9SVDsKPiArCX0KPiAgCj4gIAlkZXYtPmRyaXZlci0+Z2V0X3ZibGFua190 aW1lc3RhbXAgPSBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zOwo+ICAJZGV2 LT5kcml2ZXItPmdldF9zY2Fub3V0X3Bvc2l0aW9uID0gaTkxNV9nZXRfY3J0Y19zY2Fub3V0cG9z Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiBpbmRleCA3ZDIxYWFjMTBkMTYu Ljc0Nzk4YzkyMDkwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o b3RwbHVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiBA QCAtMTE4LDQxICsxMTgsNjQgQEAgZW51bSBocGRfcGluIGludGVsX2hwZF9waW5fZGVmYXVsdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAqIEBkZXZfcHJpdjogcHJpdmF0 ZSBkcml2ZXIgZGF0YSBwb2ludGVyCj4gICAqIEBwaW46IHRoZSBwaW4gdG8gZ2F0aGVyIHN0YXRz IG9uCj4gICAqCj4gLSAqIEdhdGhlciBzdGF0cyBhYm91dCBIUEQgaXJxcyBmcm9tIHRoZSBzcGVj aWZpZWQgQHBpbiwgYW5kIGRldGVjdCBpcnEKPiArICogR2F0aGVyIHN0YXRzIGFib3V0IEhQRCBJ UlFzIGZyb20gdGhlIHNwZWNpZmllZCBAcGluLCBhbmQgZGV0ZWN0IElSUQo+ICAgKiBzdG9ybXMu IE9ubHkgdGhlIHBpbiBzcGVjaWZpYyBzdGF0cyBhbmQgc3RhdGUgYXJlIGNoYW5nZWQsIHRoZSBj YWxsZXIgaXMKPiAgICogcmVzcG9uc2libGUgZm9yIGZ1cnRoZXIgYWN0aW9uLgo+ICAgKgo+IC0g KiBUaGUgbnVtYmVyIG9mIGlycXMgdGhhdCBhcmUgYWxsb3dlZCB3aXRoaW4gQEhQRF9TVE9STV9E RVRFQ1RfUEVSSU9EIGlzCj4gLSAqIHN0b3JlZCBpbiBAZGV2X3ByaXYtPmhvdHBsdWcuaHBkX3N0 b3JtX3RocmVzaG9sZCB3aGljaCBkZWZhdWx0cyB0bwo+IC0gKiBASFBEX1NUT1JNX0RFRkFVTFRf VEhSRVNIT0xELiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgaXQncwo+IC0gKiBjb25z aWRlcmVkIGFuIGlycSBzdG9ybSBhbmQgdGhlIGlycSBzdGF0ZSBpcyBzZXQgdG8gQEhQRF9NQVJL X0RJU0FCTEVELgo+ICsgKiBJUlEgc3Rvcm0gZGV0ZWN0aW9uIGNhbiBoYXBwZW4gZm9yIGJvdGgg bG9uZyBhbmQgc2hvcnQgSVJRcy4gVGhlIG51bWJlciBvZgo+ICsgKiBzaG9ydCBvciBsb25nIElS UXMgdGhhdCBhcmUgYWxsb3dlZCB3aXRoaW4gQEhQRF9TVE9STV9ERVRFQ1RfUEVSSU9EIGFyZQo+ ICsgKiBzdG9yZWQgaW4gQGRldl9wcml2LT5ob3RwbHVnLmxvbmdfaHBkX3N0b3JtX3RocmVzaG9s ZCBhbmQKPiArICogQGRldl9wcml2LT5ob3RwbHVnLnNob3J0X2hwZF9zdG9ybV90aHJlc2hvbGQg cmVzcGVjdGl2ZWx5LiBGb3IgbG9uZyBJUlFzLAo+ICsgKiB0aGUgdGhyZXNob2xkIGRlZmF1bHRz IHRvIEBIUERfU1RPUk1fREVGQVVMVF9USFJFU0hPTERfTE9ORyBvbiBhbGwgc3lzdGVtcy4KPiAr ICogRm9yIHNob3J0IElSUXMgaG93ZXZlciwgdGhlIGRlZmF1bHQgdGhyZXNob2xkIHZhcmllcy4g T24gc3lzdGVtcyB0aGF0IGFyZQo+ICsgKiB0b28gb2xkIHRvIHN1cHBvcnQgTVNULCB0aGUgdGhy ZXNob2xkIHdpbGwgZGVmYXVsdCB0bwo+ICsgKiBASFBEX1NUT1JNX0RFRkFVTFRfVEhSRVNIT0xE X1NIT1JULiBTeXN0ZW1zIHdoaWNoIGRvIHN1cHBvcnQgTVNUIHdpbGwgbm90Cj4gKyAqIGhhdmUg c2hvcnQgSVJRIHN0b3JtIGRldGVjdGlvbiBlbmFibGVkIGJ5IGRlZmF1bHQsIGFzIGRvaW5nIHNv IHdvdWxkIGxpa2VseQo+ICsgKiBpbnRlcmZlcmUgd2l0aCB0aGUgc2hvcnQgSVJRIGJ1cnN0cyBj YXVzZWQgYnkgc2lkZWJhbmQgdHJhbnNhY3Rpb25zLgo+ICsgKiBUaGlzIGlzIGZpbmUsIGFzIHN5 c3RlbXMgbmV3IGVub3VnaCB0byBzdXBwb3J0IE1TVCBhcmUgdW5saWtlbHkgdG8gcmVseSBvbgo+ ICsgKiBIUEQgc3Rvcm0gcHJvdGVjdGlvbiBhcyBtdWNoIGFzIG9sZGVyIHN5c3RlbXMgbWF5Lgo+ ICAgKgo+IC0gKiBUaGUgSFBEIHRocmVzaG9sZCBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIGk5 MTVfaHBkX3N0b3JtX2N0bCBpbiBkZWJ1Z2ZzLAo+IC0gKiBhbmQgc2hvdWxkIG9ubHkgYmUgYWRq dXN0ZWQgZm9yIGF1dG9tYXRlZCBob3RwbHVnIHRlc3RpbmcuCj4gKyAqIFRoZSBIUEQgdGhyZXNo b2xkIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggaTkxNV9ocGRfc3Rvcm1fY3RsIGluIGRlYnVn ZnMKPiArICogZm9yIGxvbmcgSVJRcywgYW5kIGk5MTVfc2hvcnRfaHBkX3N0b3JtX2N0bCBmb3Ig c2hvcnQgSVJRcy4gVGhpcyBzaG91bGQKPiArICogb25seSBldmVyIGJlIGFkanVzdGVkIGZvciBh dXRvbWF0ZWQgaG90cGx1ZyB0ZXN0aW5nLgo+ICAgKgo+ICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbiBp cnEgc3Rvcm0gd2FzIGRldGVjdGVkIG9uIEBwaW4uCj4gICAqLwo+ICBzdGF0aWMgYm9vbCBpbnRl bF9ocGRfaXJxX3N0b3JtX2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gLQkJCQkgICAgICAgZW51bSBocGRfcGluIHBpbikKPiArCQkJCSAgICAgICBlbnVtIGhwZF9w aW4gcGluLCBib29sIGxvbmdfaHBkKQo+ICB7Cj4gLQl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gZGV2 X3ByaXYtPmhvdHBsdWcuc3RhdHNbcGluXS5sYXN0X2ppZmZpZXM7Cj4gLQl1bnNpZ25lZCBsb25n IGVuZCA9IHN0YXJ0ICsgbXNlY3NfdG9famlmZmllcyhIUERfU1RPUk1fREVURUNUX1BFUklPRCk7 Cj4gLQljb25zdCBpbnQgdGhyZXNob2xkID0gZGV2X3ByaXYtPmhvdHBsdWcuaHBkX3N0b3JtX3Ro cmVzaG9sZDsKPiArCXN0cnVjdCBpbnRlbF9ocGRfaXJxX3N0YXRzICpzdGF0czsKPiArCWNvbnN0 IGNoYXIgKm5hbWU7Cj4gKwl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7Cj4gKwlpbnQgdGhyZXNo b2xkOwo+ICAJYm9vbCBzdG9ybSA9IGZhbHNlOwo+ICAKPiArCWlmIChsb25nX2hwZCkgewo+ICsJ CXN0YXRzID0gJmRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0ubG9uZ19pcnE7Cj4gKwkJdGhy ZXNob2xkID0gZGV2X3ByaXYtPmhvdHBsdWcubG9uZ19ocGRfc3Rvcm1fdGhyZXNob2xkOwo+ICsJ CW5hbWUgPSAibG9uZyI7Cj4gKwl9IGVsc2Ugewo+ICsJCXN0YXRzID0gJmRldl9wcml2LT5ob3Rw bHVnLnN0YXRzW3Bpbl0uc2hvcnRfaXJxOwo+ICsJCXRocmVzaG9sZCA9IGRldl9wcml2LT5ob3Rw bHVnLnNob3J0X2hwZF9zdG9ybV90aHJlc2hvbGQ7Cj4gKwkJbmFtZSA9ICJzaG9ydCI7Cj4gKwl9 Cj4gKwlzdGFydCA9IHN0YXRzLT5sYXN0X2ppZmZpZXM7Cj4gKwllbmQgPSBzdGFydCArIG1zZWNz X3RvX2ppZmZpZXMoSFBEX1NUT1JNX0RFVEVDVF9QRVJJT0QpOwo+ICsKPiAgCWlmICghdGltZV9p bl9yYW5nZShqaWZmaWVzLCBzdGFydCwgZW5kKSkgewo+IC0JCWRldl9wcml2LT5ob3RwbHVnLnN0 YXRzW3Bpbl0ubGFzdF9qaWZmaWVzID0gamlmZmllczsKPiAtCQlkZXZfcHJpdi0+aG90cGx1Zy5z dGF0c1twaW5dLmNvdW50ID0gMDsKPiAtCQlEUk1fREVCVUdfS01TKCJSZWNlaXZlZCBIUEQgaW50 ZXJydXB0IG9uIFBJTiAlZCAtIGNudDogMFxuIiwgcGluKTsKPiAtCX0gZWxzZSBpZiAoZGV2X3By aXYtPmhvdHBsdWcuc3RhdHNbcGluXS5jb3VudCA+IHRocmVzaG9sZCAmJgo+IC0JCSAgIHRocmVz aG9sZCkgewo+ICsJCXN0YXRzLT5sYXN0X2ppZmZpZXMgPSBqaWZmaWVzOwo+ICsJCXN0YXRzLT5j b3VudCA9IDA7Cj4gKwkJRFJNX0RFQlVHX0tNUygiUmVjZWl2ZWQgJXMgSFBEIGludGVycnVwdCBv biBQSU4gJWQgLSBjbnQ6IDBcbiIsCj4gKwkJCSAgICAgIG5hbWUsIHBpbik7Cj4gKwl9IGVsc2Ug aWYgKHN0YXRzLT5jb3VudCA+IHRocmVzaG9sZCAmJiB0aHJlc2hvbGQpIHsKPiAgCQlkZXZfcHJp di0+aG90cGx1Zy5zdGF0c1twaW5dLnN0YXRlID0gSFBEX01BUktfRElTQUJMRUQ7Cj4gLQkJRFJN X0RFQlVHX0tNUygiSFBEIGludGVycnVwdCBzdG9ybSBkZXRlY3RlZCBvbiBQSU4gJWRcbiIsIHBp bik7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRGV0ZWN0ZWQgJXMgSFBEIGludGVycnVwdCBzdG9ybSBv biBQSU4gJWRcbiIsCj4gKwkJCSAgICAgIG5hbWUsIHBpbik7Cj4gIAkJc3Rvcm0gPSB0cnVlOwo+ ICAJfSBlbHNlIHsKPiAtCQlkZXZfcHJpdi0+aG90cGx1Zy5zdGF0c1twaW5dLmNvdW50Kys7Cj4g LQkJRFJNX0RFQlVHX0tNUygiUmVjZWl2ZWQgSFBEIGludGVycnVwdCBvbiBQSU4gJWQgLSBjbnQ6 ICVkXG4iLCBwaW4sCj4gLQkJCSAgICAgIGRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uY291 bnQpOwo+ICsJCXN0YXRzLT5jb3VudCsrOwo+ICsJCURSTV9ERUJVR19LTVMoIlJlY2VpdmVkICVz IEhQRCBpbnRlcnJ1cHQgb24gUElOICVkIC0gY250OiAlZFxuIiwKPiArCQkJICAgICAgbmFtZSwg cGluLCBzdGF0cy0+Y291bnQpOwo+ICAJfQo+ICAKPiAgCXJldHVybiBzdG9ybTsKPiBAQCAtNDA0 LDI4ICs0MjcsMjQgQEAgdm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcigmZGV2X3ByaXYt PmRybSwgZW5jb2Rlcikgewo+ICAJCWVudW0gaHBkX3BpbiBwaW4gPSBlbmNvZGVyLT5ocGRfcGlu Owo+ICAJCWJvb2wgaGFzX2hwZF9wdWxzZSA9IGludGVsX2VuY29kZXJfaGFzX2hwZF9wdWxzZShl bmNvZGVyKTsKPiArCQlib29sIGxvbmdfaHBkID0gdHJ1ZTsKPiAgCj4gIAkJaWYgKCEoQklUKHBp bikgJiBwaW5fbWFzaykpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAoaGFzX2hwZF9wdWxz ZSkgewo+IC0JCQlib29sIGxvbmdfaHBkID0gbG9uZ19tYXNrICYgQklUKHBpbik7Cj4gIAkJCWVu dW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKPiAgCj4gKwkJCWxvbmdfaHBkID0gISEobG9u Z19tYXNrICYgQklUKHBpbikpOwo+ICsKPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiZGlnaXRhbCBo cGQgcG9ydCAlYyAtICVzXG4iLCBwb3J0X25hbWUocG9ydCksCj4gIAkJCQkJIGxvbmdfaHBkID8g ImxvbmciIDogInNob3J0Iik7Cj4gLQkJCS8qCj4gLQkJCSAqIEZvciBsb25nIEhQRCBwdWxzZXMg d2Ugd2FudCB0byBoYXZlIHRoZSBkaWdpdGFsIHF1ZXVlIGhhcHBlbiwKPiAtCQkJICogYnV0IHdl IHN0aWxsIHdhbnQgSFBEIHN0b3JtIGRldGVjdGlvbiB0byBmdW5jdGlvbi4KPiAtCQkJICovCj4g IAkJCXF1ZXVlX2RpZyA9IHRydWU7Cj4gLQkJCWlmIChsb25nX2hwZCkgewo+ICsJCQlpZiAobG9u Z19ocGQpCj4gIAkJCQlkZXZfcHJpdi0+aG90cGx1Zy5sb25nX3BvcnRfbWFzayB8PSAoMSA8PCBw b3J0KTsKPiAtCQkJfSBlbHNlIHsKPiAtCQkJCS8qIGZvciBzaG9ydCBIUEQganVzdCB0cmlnZ2Vy IHRoZSBkaWdpdGFsIHF1ZXVlICovCj4gKwkJCWVsc2UKPiAgCQkJCWRldl9wcml2LT5ob3RwbHVn LnNob3J0X3BvcnRfbWFzayB8PSAoMSA8PCBwb3J0KTsKPiAtCQkJCWNvbnRpbnVlOwo+IC0JCQl9 Cj4gKwo+ICAJCX0KPiAgCj4gIAkJaWYgKGRldl9wcml2LT5ob3RwbHVnLnN0YXRzW3Bpbl0uc3Rh dGUgPT0gSFBEX0RJU0FCTEVEKSB7Cj4gQEAgLTQ0OCw3ICs0NjcsNyBAQCB2b2lkIGludGVsX2hw ZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXF1 ZXVlX2hwID0gdHJ1ZTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChpbnRlbF9ocGRfaXJxX3N0b3JtX2Rl dGVjdChkZXZfcHJpdiwgcGluKSkgewo+ICsJCWlmIChpbnRlbF9ocGRfaXJxX3N0b3JtX2RldGVj dChkZXZfcHJpdiwgcGluLCBsb25nX2hwZCkpIHsKPiAgCQkJZGV2X3ByaXYtPmhvdHBsdWcuZXZl bnRfYml0cyAmPSB+QklUKHBpbik7Cj4gIAkJCXN0b3JtX2RldGVjdGVkID0gdHJ1ZTsKPiAgCQl9 Cj4gQEAgLTQ4OSw3ICs1MDgsOCBAQCB2b2lkIGludGVsX2hwZF9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludCBpOwo+ICAKPiAgCWZvcl9lYWNoX2hwZF9waW4o aSkgewo+IC0JCWRldl9wcml2LT5ob3RwbHVnLnN0YXRzW2ldLmNvdW50ID0gMDsKPiArCQlkZXZf cHJpdi0+aG90cGx1Zy5zdGF0c1tpXS5sb25nX2lycS5jb3VudCA9IDA7Cj4gKwkJZGV2X3ByaXYt PmhvdHBsdWcuc3RhdHNbaV0uc2hvcnRfaXJxLmNvdW50ID0gMDsKPiAgCQlkZXZfcHJpdi0+aG90 cGx1Zy5zdGF0c1tpXS5zdGF0ZSA9IEhQRF9FTkFCTEVEOwo+ICAJfQo+ICAKPiAtLSAKPiAyLjE3 LjIKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==