From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 06/38] drm: Add some kselftests for the DRM range manager (struct drm_mm) Date: Tue, 27 Dec 2016 12:36:32 +0100 Message-ID: <20161227113632.GI19172@dvetter-linux.ger.corp.intel.com> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> <20161222083641.2691-7-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161222083641.2691-7-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: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDg6MzY6MDlBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEZpcnN0IHdlIGludHJvZHVjZSBhIHNtYXR0ZXJpbmcgb2YgaW5mcmFzdHJ1Y3R1cmUg Zm9yIHdyaXRpbmcgc2VsZnRlc3RzLgo+IFRoZSBpZGVhIGlzIHRoYXQgd2UgaGF2ZSBhIHRlc3Qg bW9kdWxlIHRoYXQgZXhlcmNpc2VzIGEgcGFydGljdWxhcgo+IHBvcnRpb24gb2YgdGhlIGV4cG9y dGVkIEFQSSwgYW5kIHRoYXQgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHRlc3RzCj4gdGhhdCBj YW4gZWl0aGVyIGJlIHJ1biBhcyBhbiBlbnNlbWJsZSB2aWEga3NlbGZ0ZXN0IG9yIGluZGl2aWR1 YWxseSB2aWEKPiBhbiBpZ3QgaGFybmVzcyAoaW4gdGhpcyBjYXNlIGlndC9kcm1fbW0pLiBUbyBh Y2NvbW1vZGF0ZSBzZWxlY3RpbmcKPiBpbmRpdmlkdWFsIHRlc3RzLCB3ZSBleHBvcnQgYSBib29s ZWFuIHBhcmFtZXRlciB0byBjb250cm9sIHNlbGVjdGlvbiBvZgo+IGVhY2ggdGVzdCAtIHRoYXQg aXMgaGlkZGVuIGluc2lkZSBhIGJ1bmNoIG9mIHJldXNhYmxlIGJvaWxlcnBsYXRlIG1hY3Jvcwo+ IHRvIGtlZXAgd3JpdGluZyB0aGUgdGVzdHMgc2ltcGxlLgo+IAo+IHYyOiBDaG9vc2UgYSByYW5k b20gcmFuZG9tX3NlZWQgdW5sZXNzIG9uZSBpcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCj4gdjM6 IE1vcmUgcGFyYW1ldGVycyB0byBjb250cm9sIG1heF9pdGVyYXRpb25zIGFuZCBtYXhfcHJpbWUg b2YgdGhlCj4gdGVzdHMuCj4gCj4gVGVzdGNhc2U6IGlndC9kcm1fbW0KPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBBY2tlZC1ieTogQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IFJldmlld2VkLWJ5OiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CgpBIHNob3J0 IERPQzogc2VjdGlvbiB0aGF0IGV4cGxhaW5zIHRoZSBkZXNpZ24gZm9yIHRoaXMsIHB1bGxlZCBp bnRvCmtlcm5lbC1kb2MsIHdvdWxkIGJlIGxvdmVseS4gQnV0IGFzIGEgZm9sbG93LXVwIHBhdGNo LCBzaW5jZSBJJ20gbWVyZ2luZy4KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL0tj b25maWcgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsrKysKPiAgZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJt L3NlbGZ0ZXN0cy9kcm1fbW1fc2VsZnRlc3RzLmggIHwgICA4ICsrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9zZWxmdGVzdHMvZHJtX3NlbGZ0ZXN0LmMgICAgICB8IDEwOSArKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9zZWxmdGVzdC5oICAgICAg fCAgNDEgKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21t LmMgICAgICAgfCAgNTggKysrKysrKysrKysrKysKPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv ZHJpdmVycy9ncHUvZHJtX21tLnNoIHwgIDE1ICsrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAyNDcg aW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy9kcm1fbW1fc2VsZnRlc3RzLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9zZWxmdGVzdHMvZHJtX3NlbGZ0ZXN0LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX3NlbGZ0ZXN0LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW0uYwo+ICBjcmVhdGUgbW9kZSAx MDA3NTUgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9ncHUvZHJtX21tLnNoCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKPiBpbmRleCA0NWExYzc0NjhlODguLjI5MTQ2ZmE4MzAwMSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4g QEAgLTQ4LDYgKzQ4LDIxIEBAIGNvbmZpZyBEUk1fREVCVUdfTU0KPiAgCj4gIAkgIElmIGluIGRv dWJ0LCBzYXkgIk4iLgo+ICAKPiArY29uZmlnIERSTV9ERUJVR19NTV9TRUxGVEVTVAo+ICsJdHJp c3RhdGUgImtzZWxmdGVzdHMgZm9yIERSTSByYW5nZSBtYW5hZ2VyIChzdHJ1Y3QgZHJtX21tKSIK PiArCWRlcGVuZHMgb24gRFJNCj4gKwlkZXBlbmRzIG9uIERFQlVHX0tFUk5FTAo+ICsJc2VsZWN0 IFBSSU1FX05VTUJFUlMKPiArCXNlbGVjdCBEUk1fTElCX1JBTkRPTQo+ICsJZGVmYXVsdCBuCj4g KwloZWxwCj4gKwkgIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGEga2VybmVsIG1vZHVsZSB0aGF0IGNh biBiZSB1c2VkIHRvIHRlc3QKPiArCSAgdGhlIERSTSByYW5nZSBtYW5hZ2VyIChkcm1fbW0pIGFu ZCBpdHMgQVBJLiBUaGlzIG9wdGlvbiBpcyBub3QKPiArCSAgdXNlZnVsIGZvciBkaXN0cmlidXRp b25zIG9yIGdlbmVyYWwga2VybmVscywgYnV0IG9ubHkgZm9yIGtlcm5lbAo+ICsJICBkZXZlbG9w ZXJzIHdvcmtpbmcgb24gRFJNIGFuZCBhc3NvY2lhdGVkIGRyaXZlcnMuCj4gKwo+ICsJICBJZiBp biBkb3VidCwgc2F5ICJOIi4KPiArCj4gIGNvbmZpZyBEUk1fS01TX0hFTFBFUgo+ICAJdHJpc3Rh dGUKPiAgCWRlcGVuZHMgb24gRFJNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDZiYjQxNjM2MGFlNC4uYzBk MWFlZDg1ODhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zOCw2ICszOCw3IEBAIGRybV9rbXNfaGVs cGVyLSQoQ09ORklHX0RSTV9LTVNfQ01BX0hFTFBFUikgKz0gZHJtX2ZiX2NtYV9oZWxwZXIubwo+ ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRFBfQVVYX0NIQVJERVYpICs9IGRybV9kcF9h dXhfZGV2Lm8KPiAgCj4gIG9iai0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgKz0gZHJtX2ttc19o ZWxwZXIubwo+ICtvYmotJChDT05GSUdfRFJNX0RFQlVHX01NX1NFTEZURVNUKSArPSBzZWxmdGVz dHMvdGVzdC1kcm1fbW0ubwo+ICAKPiAgQ0ZMQUdTX2RybV90cmFjZV9wb2ludHMubyA6PSAtSSQo c3JjKQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fbW1f c2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9tbV9zZWxmdGVzdHMu aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xNjEwZTBhNjNh NWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1f bW1fc2VsZnRlc3RzLmgKPiBAQCAtMCwwICsxLDggQEAKPiArLyogTGlzdCBlYWNoIHVuaXQgdGVz dCBhcyBzZWxmdGVzdChuYW1lLCBmdW5jdGlvbikKPiArICoKPiArICogVGhlIG5hbWUgaXMgdXNl ZCBhcyBib3RoIGFuIGVudW0gYW5kIGV4cGFuZGVkIGFzIGlndF9fbmFtZSB0byBjcmVhdGUKPiAr ICogYSBtb2R1bGUgcGFyYW1ldGVyLiBJdCBtdXN0IGJlIHVuaXF1ZSBhbmQgbGVnYWwgZm9yIGEg QyBpZGVudGlmaWVyLgo+ICsgKgo+ICsgKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgYnkg aWd0L2RybV9tbQo+ICsgKi8KPiArc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIGlndF9zYW5pdHljaGVj aykgLyoga2VlcCBmaXJzdCAoc2VsZmNoZWNrIGZvciBpZ3QpICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX3NlbGZ0ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v c2VsZnRlc3RzL2RybV9zZWxmdGVzdC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAwMDAuLmUyOWVkOWZhZWY1Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vc2VsZnRlc3RzL2RybV9zZWxmdGVzdC5jCj4gQEAgLTAsMCArMSwxMDkgQEAKPiAr LyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF Ugo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElO IFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4K PiArCj4gKyNkZWZpbmUgc2VsZnRlc3QobmFtZSwgZnVuYykgX19pZHhfIyNuYW1lLAo+ICtlbnVt IHsKPiArI2luY2x1ZGUgVEVTVFMKPiArfTsKPiArI3VuZGVmIHNlbGZ0ZXN0Cj4gKwo+ICsjZGVm aW5lIHNlbGZ0ZXN0KG4sIGYpIFtfX2lkeF8jI25dID0geyAubmFtZSA9ICNuLCAuZnVuYyA9IGYg fSwKPiArc3RhdGljIHN0cnVjdCBkcm1fc2VsZnRlc3Qgewo+ICsJYm9vbCBlbmFibGVkOwo+ICsJ Y29uc3QgY2hhciAqbmFtZTsKPiArCWludCAoKmZ1bmMpKHZvaWQgKik7Cj4gK30gc2VsZnRlc3Rz W10gPSB7Cj4gKyNpbmNsdWRlIFRFU1RTCj4gK307Cj4gKyN1bmRlZiBzZWxmdGVzdAo+ICsKPiAr LyogRW1iZWQgdGhlIGxpbmUgbnVtYmVyIGludG8gdGhlIHBhcmFtZXRlciBuYW1lIHNvIHRoYXQg d2UgY2FuIG9yZGVyIHRlc3RzICovCj4gKyNkZWZpbmUgcGFyYW0obikgX19QQVNURShpZ3RfXywg X19QQVNURShfX1BBU1RFKF9fTElORV9fLCBfXyksIG4pKQo+ICsjZGVmaW5lIHNlbGZ0ZXN0XzAo biwgZnVuYywgaWQpIFwKPiArbW9kdWxlX3BhcmFtX25hbWVkKGlkLCBzZWxmdGVzdHNbX19pZHhf IyNuXS5lbmFibGVkLCBib29sLCAwNDAwKTsKPiArI2RlZmluZSBzZWxmdGVzdChuLCBmdW5jKSBz ZWxmdGVzdF8wKG4sIGZ1bmMsIHBhcmFtKG4pKQo+ICsjaW5jbHVkZSBURVNUUwo+ICsjdW5kZWYg c2VsZnRlc3QKPiArCj4gK3N0YXRpYyB2b2lkIHNldF9kZWZhdWx0X3Rlc3RfYWxsKHN0cnVjdCBk cm1fc2VsZnRlc3QgKnN0LCB1bnNpZ25lZCBsb25nIGNvdW50KQo+ICt7Cj4gKwl1bnNpZ25lZCBs b25nIGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4gKwkJaWYgKHN0W2ld LmVuYWJsZWQpCj4gKwkJCXJldHVybjsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykKPiArCQlzdFtpXS5lbmFibGVkID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBydW5f c2VsZnRlc3RzKHN0cnVjdCBkcm1fc2VsZnRlc3QgKnN0LAo+ICsJCQkgdW5zaWduZWQgbG9uZyBj b3VudCwKPiArCQkJIHZvaWQgKmRhdGEpCj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCXNl dF9kZWZhdWx0X3Rlc3RfYWxsKHN0LCBjb3VudCk7Cj4gKwo+ICsJLyogVGVzdHMgYXJlIGxpc3Rl ZCBpbiBuYXR1cmFsIG9yZGVyIGluIGRybV8qX3NlbGZ0ZXN0cy5oICovCj4gKwlmb3IgKDsgY291 bnQtLTsgc3QrKykgewo+ICsJCWlmICghc3QtPmVuYWJsZWQpCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlwcl9kZWJ1ZygiZHJtOiBSdW5uaW5nICVzXG4iLCBzdC0+bmFtZSk7Cj4gKwkJZXJyID0g c3QtPmZ1bmMoZGF0YSk7Cj4gKwkJaWYgKGVycikKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJ aWYgKFdBUk4oZXJyID4gMCB8fCBlcnIgPT0gLUVOT1RUWSwKPiArCQkgIiVzIHJldHVybmVkICVk LCBjb25mbGljdGluZyB3aXRoIHNlbGZ0ZXN0J3MgbWFnaWMgdmFsdWVzIVxuIiwKPiArCQkgc3Qt Pm5hbWUsIGVycikpCj4gKwkJZXJyID0gLTE7Cj4gKwo+ICsJcmN1X2JhcnJpZXIoKTsKPiArCXJl dHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQKPiArX19kcm1f c3VidGVzdHMoY29uc3QgY2hhciAqY2FsbGVyLAo+ICsJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1f c3VidGVzdCAqc3QsCj4gKwkgICAgICAgaW50IGNvdW50LAo+ICsJICAgICAgIHZvaWQgKmRhdGEp Cj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZm9yICg7IGNvdW50LS07IHN0KyspIHsKPiArCQlw cl9kZWJ1ZygiUnVubmluZyAlcy8lc1xuIiwgY2FsbGVyLCBzdC0+bmFtZSk7Cj4gKwkJZXJyID0g c3QtPmZ1bmMoZGF0YSk7Cj4gKwkJaWYgKGVycikgewo+ICsJCQlwcl9lcnIoIiVzOiAlcyBmYWls ZWQgd2l0aCBlcnJvciAlZFxuIiwKPiArCQkJICAgICAgIGNhbGxlciwgc3QtPm5hbWUsIGVycik7 Cj4gKwkJCXJldHVybiBlcnI7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX3NlbGZ0ZXN0LmggYi9k cml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9zZWxmdGVzdC5oCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmM3ODRlYzAyZmY1Mwo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9zZWxmdGVzdC5oCj4gQEAgLTAs MCArMSw0MSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19EUk1f U0VMRlRFU1RfSF9fCj4gKyNkZWZpbmUgX19EUk1fU0VMRlRFU1RfSF9fCj4gKwo+ICtzdHJ1Y3Qg ZHJtX3N1YnRlc3Qgewo+ICsJaW50ICgqZnVuYykodm9pZCAqZGF0YSk7Cj4gKwljb25zdCBjaGFy ICpuYW1lOwo+ICt9Owo+ICsKPiArc3RhdGljIGludCBfX2RybV9zdWJ0ZXN0cyhjb25zdCBjaGFy ICpjYWxsZXIsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGRybV9zdWJ0ZXN0ICpzdCwKPiArCQkJICBp bnQgY291bnQsCj4gKwkJCSAgdm9pZCAqZGF0YSk7Cj4gKyNkZWZpbmUgZHJtX3N1YnRlc3RzKFQs IGRhdGEpIFwKPiArCV9fZHJtX3N1YnRlc3RzKF9fZnVuY19fLCBULCBBUlJBWV9TSVpFKFQpLCBk YXRhKQo+ICsKPiArI2RlZmluZSBTVUJURVNUKHgpIHsgeCwgI3ggfQo+ICsKPiArI2VuZGlmIC8q IF9fRFJNX1NFTEZURVNUX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2Vs ZnRlc3RzL3Rlc3QtZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJt X21tLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjgyZjVm ODZmNDY1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMv dGVzdC1kcm1fbW0uYwo+IEBAIC0wLDAgKzEsNTggQEAKPiArLyoKPiArICogVGVzdCBjYXNlcyBm b3IgdGhlIGRybV9tbSByYW5nZSBtYW5hZ2VyCj4gKyAqLwo+ICsKPiArI2RlZmluZSBwcl9mbXQo Zm10KSAiZHJtX21tOiAiIGZtdAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsj aW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5o Pgo+ICsjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC92bWFsbG9j Lmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tbS5oPgo+ICsKPiArI2luY2x1ZGUgIi4uL2xp Yi9kcm1fcmFuZG9tLmgiCj4gKwo+ICsjZGVmaW5lIFRFU1RTICJkcm1fbW1fc2VsZnRlc3RzLmgi Cj4gKyNpbmNsdWRlICJkcm1fc2VsZnRlc3QuaCIKPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQg cmFuZG9tX3NlZWQ7Cj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2l0ZXJhdGlvbnMgPSA4MTky Owo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG1heF9wcmltZSA9IDEyODsKPiArCj4gK3N0YXRpYyBp bnQgaWd0X3Nhbml0eWNoZWNrKHZvaWQgKmlnbm9yZWQpCj4gK3sKPiArCXByX2luZm8oIiVzIC0g b2shXG4iLCBfX2Z1bmNfXyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArI2luY2x1ZGUgImRy bV9zZWxmdGVzdC5jIgo+ICsKPiArc3RhdGljIGludCBfX2luaXQgdGVzdF9kcm1fbW1faW5pdCh2 b2lkKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCXdoaWxlICghcmFuZG9tX3NlZWQpCj4gKwkJ cmFuZG9tX3NlZWQgPSBnZXRfcmFuZG9tX2ludCgpOwo+ICsKPiArCXByX2luZm8oIlRlc3Rpbmcg RFJNIHJhbmdlIG1hbmdlciAoc3RydWN0IGRybV9tbSksIHdpdGggcmFuZG9tX3NlZWQ9MHgleCBt YXhfaXRlcmF0aW9ucz0ldSBtYXhfcHJpbWU9JXVcbiIsCj4gKwkJcmFuZG9tX3NlZWQsIG1heF9p dGVyYXRpb25zLCBtYXhfcHJpbWUpOwo+ICsJZXJyID0gcnVuX3NlbGZ0ZXN0cyhzZWxmdGVzdHMs IEFSUkFZX1NJWkUoc2VsZnRlc3RzKSwgTlVMTCk7Cj4gKwo+ICsJcmV0dXJuIGVyciA+IDAgPyAw IDogZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2V4aXQgdGVzdF9kcm1fbW1fZXhpdCh2 b2lkKQo+ICt7Cj4gK30KPiArCj4gK21vZHVsZV9pbml0KHRlc3RfZHJtX21tX2luaXQpOwo+ICtt b2R1bGVfZXhpdCh0ZXN0X2RybV9tbV9leGl0KTsKPiArCj4gK21vZHVsZV9wYXJhbShyYW5kb21f c2VlZCwgdWludCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbShtYXhfaXRlcmF0aW9ucywgdWludCwg MDQwMCk7Cj4gK21vZHVsZV9wYXJhbShtYXhfcHJpbWUsIHVpbnQsIDA0MDApOwo+ICsKPiArTU9E VUxFX0FVVEhPUigiSW50ZWwgQ29ycG9yYXRpb24iKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIp Owo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2dwdS9kcm1f bW0uc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2dwdS9kcm1fbW0uc2gKPiBu ZXcgZmlsZSBtb2RlIDEwMDc1NQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTZkZDU1YzkyNzk5Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZ3B1 L2RybV9tbS5zaAo+IEBAIC0wLDAgKzEsMTUgQEAKPiArIyEvYmluL3NoCj4gKyMgUnVucyBBUEkg dGVzdHMgZm9yIHN0cnVjdCBkcm1fbW0gKERSTSByYW5nZSBtYW5hZ2VyKQo+ICsKPiAraWYgISAv c2Jpbi9tb2Rwcm9iZSAtbiAtcSB0ZXN0LWRybV9tbTsgdGhlbgo+ICsgICAgICAgZWNobyAiZHJp dmVycy9ncHUvZHJtX21tOiBbc2tpcF0iCj4gKyAgICAgICBleGl0IDc3Cj4gK2ZpCj4gKwo+ICtp ZiAvc2Jpbi9tb2Rwcm9iZSAtcSB0ZXN0LWRybV9tbTsgdGhlbgo+ICsgICAgICAgL3NiaW4vbW9k cHJvYmUgLXEgLXIgdGVzdC1kcm1fbW0KPiArICAgICAgIGVjaG8gImRyaXZlcnMvZ3B1L2RybV9t bTogb2siCj4gK2Vsc2UKPiArICAgICAgIGVjaG8gImRyaXZlcnMvZ3B1L2RybV9tbTogW0ZBSUxd Igo+ICsgICAgICAgZXhpdCAxCj4gK2ZpCj4gLS0gCj4gMi4xMS4wCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==