From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [RFCv2 04/19] drm/i915: Add unit tests for the breadcrumb rbtree, insert/remove Date: Tue, 20 Dec 2016 13:07:59 +0000 Message-ID: <20161220130814.10213-4-chris@chris-wilson.co.uk> References: <20161220130814.10213-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 573A46E973 for ; Tue, 20 Dec 2016 13:08:23 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id g23so24289017wme.1 for ; Tue, 20 Dec 2016 05:08:23 -0800 (PST) In-Reply-To: <20161220130814.10213-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Rmlyc3QgcmV0cm9hY3RpdmUgdGVzdCwgbWFrZSBzdXJlIHRoYXQgdGhlIHdhaXRlcnMgYXJlIGlu IGdsb2JhbCBzZXFubwpvcmRlciBhZnRlciByYW5kb20gaW5zZXJ0cyBhbmQgcmVtb3ZhbHMuCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyAgICAgICAgICAgfCAg MjEgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgICAg ICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgICAg ICAgICB8ICAgMiArCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRl c3RzLmggICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5k b20uYyAgICAgICB8ICA2MyArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfcmFuZG9tLmggICAgICAgfCAgNDcgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaW50ZWxfYnJlYWRjcnVtYnMuYyB8IDE3MyArKysrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jICAgICAgIHwgIDU1 ICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5oICAg ICAgIHwgIDMyICsrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9t LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9yYW5kb20uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9icmVhZGNydW1icy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuaAoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKaW5kZXggNDYxYWViNDRhOWFkLi4yODQ0YjJkNjQzZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CkBAIC0xMTYsNiArMTE2LDcgQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBcCiAjIFBvc3QtbW9y dGVtIGRlYnVnIGFuZCBHUFUgaGFuZyBzdGF0ZSBjYXB0dXJlCiBpOTE1LSQoQ09ORklHX0RSTV9J OTE1X0NBUFRVUkVfRVJST1IpICs9IGk5MTVfZ3B1X2Vycm9yLm8KIGk5MTUtJChDT05GSUdfRFJN X0k5MTVfU0VMRlRFU1QpICs9IFwKKwlzZWxmdGVzdHMvaTkxNV9yYW5kb20ubyBcCiAJc2VsZnRl c3RzL2k5MTVfc2VsZnRlc3QubwogCiAjIHZpcnR1YWwgZ3B1IGNvZGUKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9icmVhZGNydW1icy5jCmluZGV4IGZjZmE0MjNkMDhiZC4uNTY4MmM4YWE4MDY0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKQEAgLTEwOSw2ICsx MDksMTggQEAgc3RhdGljIHZvaWQgX19pbnRlbF9icmVhZGNydW1ic19lbmFibGVfaXJxKHN0cnVj dCBpbnRlbF9icmVhZGNydW1icyAqYikKIAlpZiAoYi0+cnBtX3dha2Vsb2NrKQogCQlyZXR1cm47 CiAKKwlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKGItPm1vY2spKSB7CisJCS8qIEZvciBvdXIgbW9j ayBvYmplY3RzIHdlIHdhbnQgdG8gYXZvaWQgaW50ZXJhY3Rpb24KKwkJICogd2l0aCB0aGUgcmVh bCBoYXJkd2FyZSAod2hpY2ggaXMgbm90IHNldCB1cCkuIFNvCisJCSAqIHdlIHNpbXBseSBwcmV0 ZW5kIHdlIGhhdmUgZW5hYmxlZCB0aGUgcG93ZXJ3ZWxsCisJCSAqIGFuZCB0aGUgaXJxLCBhbmQg bGVhdmUgaXQgdXAgdG8gdGhlIG1vY2sKKwkJICogaW1wbGVtZW50YXRpb24gdG8gY2FsbCBpbnRl bF9lbmdpbmVfd2FrZXVwKCkKKwkJICogaXRzZWxmIHdoZW4gaXQgd2FudHMgdG8gc2ltdWxhdGUg YSB1c2VyIGludGVycnVwdCwKKwkJICovCisJCWItPnJwbV93YWtlbG9jayA9IHRydWU7CisJCXJl dHVybjsKKwl9CisKIAkvKiBTaW5jZSB3ZSBhcmUgd2FpdGluZyBvbiBhIHJlcXVlc3QsIHRoZSBH UFUgc2hvdWxkIGJlIGJ1c3kKIAkgKiBhbmQgc2hvdWxkIGhhdmUgaXRzIG93biBycG0gcmVmZXJl bmNlLiBGb3IgY29tcGxldGVuZXNzLAogCSAqIHJlY29yZCBhbiBycG0gcmVmZXJlbmNlIGZvciBv dXJzZWx2ZXMgdG8gY292ZXIgdGhlCkBAIC0xNDMsNiArMTU1LDExIEBAIHN0YXRpYyB2b2lkIF9f aW50ZWxfYnJlYWRjcnVtYnNfZGlzYWJsZV9pcnEoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpi KQogCWlmICghYi0+cnBtX3dha2Vsb2NrKQogCQlyZXR1cm47CiAKKwlpZiAoSTkxNV9TRUxGVEVT VF9PTkxZKGItPm1vY2spKSB7CisJCWItPnJwbV93YWtlbG9jayA9IGZhbHNlOworCQlyZXR1cm47 CisJfQorCiAJaWYgKGItPmlycV9lbmFibGVkKSB7CiAJCWlycV9kaXNhYmxlKGVuZ2luZSk7CiAJ CWItPmlycV9lbmFibGVkID0gZmFsc2U7CkBAIC02NjEsMyArNjc4LDcgQEAgdW5zaWduZWQgaW50 IGludGVsX2JyZWFkY3J1bWJzX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAK IAlyZXR1cm4gbWFzazsKIH0KKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZU RVNUKQorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRlbF9icmVhZGNydW1icy5jIgorI2VuZGlmCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDk3YmJiYzNkNmFhOC4uYzYz MzIwOTZkODcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtNDgy LDMgKzQ4Miw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCiAJCWJyZWFrOwogCX0KIH0KKworI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X1NFTEZURVNUKQorI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j IgorI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMDk2 OWRlN2Q1YWI3Li41YjEwZTJkMWM5YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKQEAgLTUsNiArNSw3IEBACiAjaW5jbHVkZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5o IgogI2luY2x1ZGUgImk5MTVfZ2VtX3JlcXVlc3QuaCIKICNpbmNsdWRlICJpOTE1X2dlbV90aW1l bGluZS5oIgorI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKIAogI2RlZmluZSBJOTE1X0NNRF9I QVNIX09SREVSIDkKIApAQCAtMjQ0LDYgKzI0NSw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewogCiAJCWJvb2wgaXJxX2VuYWJsZWQgOiAxOwogCQlib29sIHJwbV93YWtlbG9jayA6IDE7CisJ CUk5MTVfU0VMRlRFU1RfREVDTEFSRShib29sIG1vY2sgOiAxKTsKIAl9IGJyZWFkY3J1bWJzOwog CiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21v Y2tfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2Nr X3NlbGZ0ZXN0cy5oCmluZGV4IDg2MzliYjhmZDUwZC4uZmRlZTZjODhlNDE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgK QEAgLTEwLDMgKzEwLDQgQEAKICAqLwogc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIGk5MTVfbW9ja19z YW5pdHljaGVjaykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8KIHNlbGZ0ZXN0KHNj YXR0ZXJsaXN0LCBtb2NrX3NjYXR0ZXJsaXN0X3NlbGZ0ZXN0cykKK3NlbGZ0ZXN0KGJyZWFkY3J1 bWJzLCBpbnRlbF9icmVhZGNydW1ic19zZWxmdGVzdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfcmFuZG9tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi42MDZhMjM3ZmVkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uYwpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMu aD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4K KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2lu Y2x1ZGUgImk5MTVfcmFuZG9tLmgiCisKK3N0YXRpYyBpbmxpbmUgdTMyIGk5MTVfcHJhbmRvbV91 MzJfbWF4X3N0YXRlKHUzMiBlcF9ybywgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpCit7CisJcmV0 dXJuIHVwcGVyXzMyX2JpdHMoKHU2NClwcmFuZG9tX3UzMl9zdGF0ZShzdGF0ZSkgKiBlcF9ybyk7 Cit9CisKK3ZvaWQgaTkxNV9yYW5kb21fcmVvcmRlcih1bnNpZ25lZCBpbnQgKm9yZGVyLCB1bnNp Z25lZCBpbnQgY291bnQsCisJCQkgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpCit7CisJdW5zaWdu ZWQgaW50IGksIGo7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQlCVUlMRF9C VUdfT04oc2l6ZW9mKHVuc2lnbmVkIGludCkgPiBzaXplb2YodTMyKSk7CisJCWogPSBpOTE1X3By YW5kb21fdTMyX21heF9zdGF0ZShjb3VudCwgc3RhdGUpOworCQlzd2FwKG9yZGVyW2ldLCBvcmRl cltqXSk7CisJfQorfQorCit1bnNpZ25lZCBpbnQgKmk5MTVfcmFuZG9tX29yZGVyKHVuc2lnbmVk IGludCBjb3VudCwgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpCit7CisJdW5zaWduZWQgaW50ICpv cmRlciwgaTsKKworCW9yZGVyID0ga21hbGxvY19hcnJheShjb3VudCwgc2l6ZW9mKCpvcmRlciks IEdGUF9URU1QT1JBUlkpOworCWlmICghb3JkZXIpCisJCXJldHVybiBvcmRlcjsKKworCWZvciAo aSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCQlvcmRlcltpXSA9IGk7CisKKwlpOTE1X3JhbmRvbV9y ZW9yZGVyKG9yZGVyLCBjb3VudCwgc3RhdGUpOworCXJldHVybiBvcmRlcjsKK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYzhhNDhkNDE3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uaApAQCAtMCwwICsxLDQ3 IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYg X19JOTE1X1NFTEZURVNUU19SQU5ET01fSF9fCisjZGVmaW5lIF9fSTkxNV9TRUxGVEVTVFNfUkFO RE9NX0hfXworCisjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CisKKyNpbmNsdWRlICJpOTE1X3Nl bGZ0ZXN0LmgiCisKKyNkZWZpbmUgSTkxNV9STkRfU1RBVEVfSU5JVElBTElaRVIoKSAoewkJCQkJ XAorCXN0cnVjdCBybmRfc3RhdGUgc3RhdGVfXzsJCQkJCVwKKwlwcmFuZG9tX3NlZWRfc3RhdGUo JnN0YXRlX18sIGk5MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpOwlcCisJc3RhdGVfXzsJCQkJCQkJ XAorfSkKKworI2RlZmluZSBJOTE1X1JORF9TVEFURShuYW1lX18pIFwKKwlzdHJ1Y3Qgcm5kX3N0 YXRlIG5hbWVfXyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKCkKKwordW5zaWduZWQgaW50 ICppOTE1X3JhbmRvbV9vcmRlcih1bnNpZ25lZCBpbnQgY291bnQsCisJCQkJc3RydWN0IHJuZF9z dGF0ZSAqc3RhdGUpOwordm9pZCBpOTE1X3JhbmRvbV9yZW9yZGVyKHVuc2lnbmVkIGludCAqb3Jk ZXIsCisJCQkgdW5zaWduZWQgaW50IGNvdW50LAorCQkJIHN0cnVjdCBybmRfc3RhdGUgKnN0YXRl KTsKKworI2VuZGlmIC8qICFfX0k5MTVfU0VMRlRFU1RTX1JBTkRPTV9IX18gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9icmVhZGNydW1icy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2JyZWFkY3J1bWJzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mM2M2NDQxMmVkNTYKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfYnJlYWRjcnVt YnMuYwpAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaW5jbHVkZSAiaTkxNV9yYW5kb20uaCIKKyNpbmNsdWRlICJpOTE1X3NlbGZ0 ZXN0LmgiCisKKyNpbmNsdWRlICJtb2NrX2VuZ2luZS5oIgorCitzdGF0aWMgaW50IGNoZWNrX3Ji dHJlZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQljb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXAsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdGVycywKKwkJCWNv bnN0IGludCBjb3VudCkKK3sKKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmZW5naW5l LT5icmVhZGNydW1iczsKKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7CisJaW50IG47CisKKwlpZiAoJmIt PmZpcnN0X3dhaXQtPm5vZGUgIT0gcmJfZmlyc3QoJmItPndhaXRlcnMpKSB7CisJCXByX2Vycigi Rmlyc3Qgd2FpdGVyIGRvZXMgbm90IG1hdGNoIGZpcnN0IGVsZW1lbnQgb2Ygd2FpdC10cmVlXG4i KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbiA9IGZpbmRfZmlyc3RfYml0KGJpdG1hcCwg Y291bnQpOworCWZvciAocmIgPSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJiX25l eHQocmIpKSB7CisJCXN0cnVjdCBpbnRlbF93YWl0ICp3ID0gY29udGFpbmVyX29mKHJiLCB0eXBl b2YoKncpLCBub2RlKTsKKwkJaW50IGlkeCA9IHcgLSB3YWl0ZXJzOworCisJCWlmICghdGVzdF9i aXQoaWR4LCBiaXRtYXApKSB7CisJCQlwcl9lcnIoIndhaXRlclslZCwgc2Vxbm89JWRdIHJlbW92 ZWQgYnV0IHN0aWxsIGluIHdhaXQtdHJlZVxuIiwKKwkJCSAgICAgICBpZHgsIHctPnNlcW5vKTsK KwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJaWYgKG4gIT0gaWR4KSB7CisJCQlwcl9lcnIo IndhaXRlclslZCwgc2Vxbm89JWRdIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIG5leHQgZWxlbWVu dCBpbiB0cmVlIFslZF1cbiIsCisJCQkgICAgICAgaWR4LCB3LT5zZXFubywgbik7CisJCQlyZXR1 cm4gLUVJTlZBTDsKKwkJfQorCisJCW4gPSBmaW5kX25leHRfYml0KGJpdG1hcCwgY291bnQsIG4g KyAxKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjaGVja19yYnRyZWVfZW1w dHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9icmVh ZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOworCisJaWYgKGItPmZpcnN0X3dhaXQp IHsKKwkJcHJfZXJyKCJFbXB0eSBicmVhZGNydW1icyBzdGlsbCBoYXMgYSB3YWl0ZXJcbiIpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoIVJCX0VNUFRZX1JPT1QoJmItPndhaXRlcnMp KSB7CisJCXByX2VycigiRW1wdHkgYnJlYWRjcnVtYnMsIGJ1dCB3YWl0LXRyZWUgbm90IGVtcHR5 XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgaWd0X3JhbmRvbV9pbnNlcnRfcmVtb3ZlKHZvaWQgKmFyZykKK3sKKwljb25zdCB1MzIgc2Vx bm9fYmlhcyA9IDB4MTAwMDsKKwlJOTE1X1JORF9TVEFURShwcm5nKTsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUgPSBhcmc7CisJc3RydWN0IGludGVsX3dhaXQgKndhaXRlcnM7CisJ Y29uc3QgaW50IGNvdW50ID0gNDA5NjsKKwlpbnQgKmluX29yZGVyLCAqb3V0X29yZGVyOworCXVu c2lnbmVkIGxvbmcgKmJpdG1hcDsKKwlpbnQgZXJyID0gLUVOT01FTTsKKwlpbnQgbjsKKworCW1v Y2tfZW5naW5lX3Jlc2V0KGVuZ2luZSk7CisKKwl3YWl0ZXJzID0gZHJtX21hbGxvY19nZnAoY291 bnQsIHNpemVvZigqd2FpdGVycyksIEdGUF9URU1QT1JBUlkpOworCWlmICghd2FpdGVycykKKwkJ Z290byBvdXRfZW5naW5lczsKKworCWJpdG1hcCA9IGtjYWxsb2MoRElWX1JPVU5EX1VQKGNvdW50 LCBCSVRTX1BFUl9MT05HKSwgc2l6ZW9mKCpiaXRtYXApLAorCQkJIEdGUF9URU1QT1JBUlkpOwor CWlmICghYml0bWFwKQorCQlnb3RvIG91dF93YWl0ZXJzOworCisJaW5fb3JkZXIgPSBpOTE1X3Jh bmRvbV9vcmRlcihjb3VudCwgJnBybmcpOworCWlmICghaW5fb3JkZXIpCisJCWdvdG8gb3V0X2Jp dG1hcDsKKworCW91dF9vcmRlciA9IGk5MTVfcmFuZG9tX29yZGVyKGNvdW50LCAmcHJuZyk7CisJ aWYgKCFvdXRfb3JkZXIpCisJCWdvdG8gb3V0X29yZGVyOworCisJZm9yIChuID0gMDsgbiA8IGNv dW50OyBuKyspCisJCWludGVsX3dhaXRfaW5pdCgmd2FpdGVyc1tuXSwgc2Vxbm9fYmlhcyArIG4p OworCisJZXJyID0gY2hlY2tfcmJ0cmVlKGVuZ2luZSwgYml0bWFwLCB3YWl0ZXJzLCBjb3VudCk7 CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykg eworCQlpbnQgaSA9IGluX29yZGVyW25dOworCisJCWludGVsX2VuZ2luZV9hZGRfd2FpdChlbmdp bmUsICZ3YWl0ZXJzW2ldKTsKKwkJX19zZXRfYml0KGksIGJpdG1hcCk7CisKKwkJZXJyID0gY2hl Y2tfcmJ0cmVlKGVuZ2luZSwgYml0bWFwLCB3YWl0ZXJzLCBjb3VudCk7CisJCWlmIChlcnIpCisJ CQlnb3RvIGVycjsKKwl9CisJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKKwkJaW50IGkg PSBvdXRfb3JkZXJbbl07CisKKwkJaW50ZWxfZW5naW5lX3JlbW92ZV93YWl0KGVuZ2luZSwgJndh aXRlcnNbaV0pOworCQlfX2NsZWFyX2JpdChpLCBiaXRtYXApOworCisJCWVyciA9IGNoZWNrX3Ji dHJlZShlbmdpbmUsIGJpdG1hcCwgd2FpdGVycywgY291bnQpOworCQlpZiAoZXJyKQorCQkJZ290 byBlcnI7CisJfQorCisJZXJyID0gY2hlY2tfcmJ0cmVlX2VtcHR5KGVuZ2luZSk7CitlcnI6CisJ a2ZyZWUob3V0X29yZGVyKTsKK291dF9vcmRlcjoKKwlrZnJlZShpbl9vcmRlcik7CitvdXRfYml0 bWFwOgorCWtmcmVlKGJpdG1hcCk7CitvdXRfd2FpdGVyczoKKwlkcm1fZnJlZV9sYXJnZSh3YWl0 ZXJzKTsKK291dF9lbmdpbmVzOgorCW1vY2tfZW5naW5lX2ZsdXNoKGVuZ2luZSk7CisJcmV0dXJu IGVycjsKK30KKworaW50IGludGVsX2JyZWFkY3J1bWJzX3NlbGZ0ZXN0KHZvaWQpCit7CisJc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChpZ3Rf cmFuZG9tX2luc2VydF9yZW1vdmUpLAorCX07CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOworCWludCBlcnI7CisKKwllbmdpbmUgPSBtb2NrX2VuZ2luZSgibW9jayIpOworCWlmICgh ZW5naW5lKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMs IGVuZ2luZSk7CisJa2ZyZWUoZW5naW5lKTsKKworCXJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMDg1ZDYxMWVkNTZiCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKQEAgLTAsMCArMSw1NSBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSAi bW9ja19lbmdpbmUuaCIKKworc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoY29u c3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3Rh dGljIGludCBpZDsKKworCWVuZ2luZSA9IGt6YWxsb2Moc2l6ZW9mKCplbmdpbmUpICsgUEFHRV9T SVpFLCBHRlBfVEVNUE9SQVJZKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KiBtaW5pbWFsIGVuZ2luZSBzZXR1cCBmb3Igc2Vxbm8gKi8KKwllbmdpbmUtPm5hbWUgPSBuYW1l OworCWVuZ2luZS0+aWQgPSBpZCsrOworCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0g KHZvaWQgKikoZW5naW5lICsgMSk7CisKKwkvKiBtaW5pbWFsIGJyZWFkY3J1bWJzIGluaXQgKi8K KwlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5icmVhZGNydW1icy5sb2NrKTsKKwllbmdpbmUtPmJy ZWFkY3J1bWJzLm1vY2sgPSB0cnVlOworCisJcmV0dXJuIGVuZ2luZTsKK30KKwordm9pZCBtb2Nr X2VuZ2luZV9mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7Cit9CisKK3Zv aWQgbW9ja19lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorewor CWludGVsX3dyaXRlX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0lOREVYLCAwKTsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2lu ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYWU5YTk0YWFhMWUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuaApA QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRp b24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICov CisKKyNpZm5kZWYgX19NT0NLX0VOR0lORV9IX18KKyNkZWZpbmUgX19NT0NLX0VOR0lORV9IX18K Kworc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoY29uc3QgY2hhciAqbmFtZSk7 Cit2b2lkIG1vY2tfZW5naW5lX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 Cit2b2lkIG1vY2tfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 CisKKyNlbmRpZiAvKiAhX19NT0NLX0VOR0lORV9IX18gKi8KLS0gCjIuMTEuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==