From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 84DD4C433EF for ; Mon, 28 Feb 2022 19:05:20 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A297D10E140; Mon, 28 Feb 2022 19:05:19 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E09810E140; Mon, 28 Feb 2022 19:05:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646075118; x=1677611118; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=Fd2rIiwcO2o25pLZmTDc+/l88KUkJXqhMZrQBSSru3Q=; b=gL33UPpSlcWRLTLaqjVcfABx/DLHDnSrgWKCAhvs06wtOtPuJ42Zxhu4 2b+Ok10+xJ5zMZmqYC4IFZ+Wp9nv9eb7zlEnk7iwZIvajUrvSBqQ12MPp iJUHbNiY9AzfB4lfUPhDaZj9hXA+7Gg4NXY6SsXsA7XU13AxjU5eMWy1V o0nbmzmc875hCU0YMvfFj+OobVoVzZ1FFMTDaChWQJ0SDToou5G40bb+u t7bojVlia4N7sc1dCC4x6tb94zXaA7OlrpO8a88UEsklxgx1VMBv0vBhR /56b86call6pakmJnZ8//04IQODKJx0WV0eAPiTw/w1M84zxasdokqK9f Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10272"; a="316176383" X-IronPort-AV: E=Sophos;i="5.90,144,1643702400"; d="scan'208";a="316176383" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Feb 2022 11:05:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,144,1643702400"; d="scan'208";a="708758910" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga005.jf.intel.com with ESMTP; 28 Feb 2022 11:05:17 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Mon, 28 Feb 2022 11:05:17 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Mon, 28 Feb 2022 11:05:17 -0800 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2308.021; Mon, 28 Feb 2022 11:05:17 -0800 From: "Kasireddy, Vivek" To: Tvrtko Ursulin , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [CI 1/2] drm/mm: Add an iterator to optimally walk over holes for an allocation (v4) Thread-Index: AQHYLAHtLDfjiRfWcEqxornUYK0pI6ypS8GAgAAGMsA= Date: Mon, 28 Feb 2022 19:05:17 +0000 Message-ID: <7ce7408a05c84c978af5b49351aa019b@intel.com> References: <20220227172957.1208890-1-vivek.kasireddy@intel.com> <20220227172957.1208890-2-vivek.kasireddy@intel.com> <97f17df4-f820-afd4-7e48-f6f62bb9ee34@linux.intel.com> In-Reply-To: <97f17df4-f820-afd4-7e48-f6f62bb9ee34@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.401.20 dlp-reaction: no-action x-originating-ip: [10.1.200.100] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Intel-gfx] [CI 1/2] drm/mm: Add an iterator to optimally walk over holes for an allocation (v4) X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SGkgVHZydGtvLA0KDQo+IA0KPiBIaSBWaXZlaywNCj4gDQo+IE9uIDI3LzAyLzIwMjIgMTc6Mjks IFZpdmVrIEthc2lyZWRkeSB3cm90ZToNCj4gPiBUaGlzIGl0ZXJhdG9yIHJlbGllcyBvbiBkcm1f bW1fZmlyc3RfaG9sZSgpIGFuZCBkcm1fbW1fbmV4dF9ob2xlKCkNCj4gPiBmdW5jdGlvbnMgdG8g aWRlbnRpZnkgc3VpdGFibGUgaG9sZXMgZm9yIGFuIGFsbG9jYXRpb24gb2YgYSBnaXZlbg0KPiA+ IHNpemUgYnkgZWZmaWNpZW50bHkgdHJhdmVyc2luZyB0aGUgcmJ0cmVlIGFzc29jaWF0ZWQgd2l0 aCB0aGUgZ2l2ZW4NCj4gPiBhbGxvY2F0b3IuDQo+ID4NCj4gPiBJdCByZXBsYWNlcyB0aGUgZm9y IGxvb3AgaW4gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlKCkgYW5kIGNhbg0KPiA+IGFsc28g YmUgdXNlZCBieSBkcm0gZHJpdmVycyB0byBxdWlja2x5IGlkZW50aWZ5IGhvbGVzIG9mIGEgY2Vy dGFpbg0KPiA+IHNpemUgd2l0aGluIGEgZ2l2ZW4gcmFuZ2UuDQo+ID4NCj4gPiB2MjogKFR2cnRr bykNCj4gPiAtIFByZXBlbmQgYSBkb3VibGUgdW5kZXJzY29yZSBmb3IgdGhlIG5ld2x5IGV4cG9y dGVkIGZpcnN0L25leHRfaG9sZQ0KPiA+IC0gcy9lYWNoX2Jlc3RfaG9sZS9lYWNoX3N1aXRhYmxl X2hvbGUvZw0KPiA+IC0gTWFzayBvdXQgRFJNX01NX0lOU0VSVF9PTkNFIGZyb20gdGhlIG1vZGUg YmVmb3JlIGNhbGxpbmcNCj4gPiAgICBmaXJzdC9uZXh0X2hvbGUgYW5kIGVsc2V3aGVyZS4NCj4g Pg0KPiA+IHYzOiAoVHZydGtvKQ0KPiA+IC0gUmVkdWNlIHRoZSBudW1iZXIgb2YgaHVua3MgYnkg cmV0YWluaW5nIHRoZSAibW9kZSIgdmFyaWFibGUgbmFtZQ0KPiA+DQo+ID4gdjQ6DQo+ID4gLSBU eXBvOiBzL19fZHJtX21tX25leHRfaG9sZSguLiwgaG9sZS9fX2RybV9tbV9uZXh0X2hvbGUoLi4s IHBvcw0KPiA+DQo+ID4gUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+DQo+ID4gQWNrZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4NCj4gPiBTdWdnZXN0ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28u dXJzdWxpbkBsaW51eC5pbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogVml2ZWsgS2FzaXJl ZGR5IDx2aXZlay5rYXNpcmVkZHlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZHJpdmVycy9n cHUvZHJtL2RybV9tbS5jIHwgMzIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4g PiAgIGluY2x1ZGUvZHJtL2RybV9tbS5oICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAx NyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMNCj4gPiBpbmRleCA4MjU3ZjlkNGY2MTku LjhlZmVhNTQ4YWU5ZiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMN Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMNCj4gPiBAQCAtMzUyLDEwICszNTIs MTAgQEAgc3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqZmluZF9ob2xlX2FkZHIoc3RydWN0IGRy bV9tbQ0KPiAqbW0sIHU2NCBhZGRyLCB1NjQgc2l6ZSkNCj4gPiAgIAlyZXR1cm4gbm9kZTsNCj4g PiAgIH0NCj4gPg0KPiA+IC1zdGF0aWMgc3RydWN0IGRybV9tbV9ub2RlICoNCj4gPiAtZmlyc3Rf aG9sZShzdHJ1Y3QgZHJtX21tICptbSwNCj4gPiAtCSAgIHU2NCBzdGFydCwgdTY0IGVuZCwgdTY0 IHNpemUsDQo+ID4gLQkgICBlbnVtIGRybV9tbV9pbnNlcnRfbW9kZSBtb2RlKQ0KPiA+ICtzdHJ1 Y3QgZHJtX21tX25vZGUgKg0KPiA+ICtfX2RybV9tbV9maXJzdF9ob2xlKHN0cnVjdCBkcm1fbW0g Km1tLA0KPiA+ICsJCSAgICB1NjQgc3RhcnQsIHU2NCBlbmQsIHU2NCBzaXplLA0KPiA+ICsJCSAg ICBlbnVtIGRybV9tbV9pbnNlcnRfbW9kZSBtb2RlKQ0KPiA+ICAgew0KPiA+ICAgCXN3aXRjaCAo bW9kZSkgew0KPiA+ICAgCWRlZmF1bHQ6DQo+ID4gQEAgLTM3NCw2ICszNzQsNyBAQCBmaXJzdF9o b2xlKHN0cnVjdCBkcm1fbW0gKm1tLA0KPiA+ICAgCQkJCQkJaG9sZV9zdGFjayk7DQo+ID4gICAJ fQ0KPiA+ICAgfQ0KPiA+ICtFWFBPUlRfU1lNQk9MKF9fZHJtX21tX2ZpcnN0X2hvbGUpOw0KPiA+ DQo+ID4gICAvKioNCj4gPiAgICAqIERFQ0xBUkVfTkVYVF9IT0xFX0FERFIgLSBtYWNybyB0byBk ZWNsYXJlIG5leHQgaG9sZSBmdW5jdGlvbnMNCj4gPiBAQCAtNDEwLDExICs0MTEsMTEgQEAgc3Rh dGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqbmFtZShzdHJ1Y3QgZHJtX21tX25vZGUNCj4gKmVudHJ5 LCB1NjQgc2l6ZSkJXA0KPiA+ICAgREVDTEFSRV9ORVhUX0hPTEVfQUREUihuZXh0X2hvbGVfaGln aF9hZGRyLCByYl9sZWZ0LCByYl9yaWdodCkNCj4gPiAgIERFQ0xBUkVfTkVYVF9IT0xFX0FERFIo bmV4dF9ob2xlX2xvd19hZGRyLCByYl9yaWdodCwgcmJfbGVmdCkNCj4gPg0KPiA+IC1zdGF0aWMg c3RydWN0IGRybV9tbV9ub2RlICoNCj4gPiAtbmV4dF9ob2xlKHN0cnVjdCBkcm1fbW0gKm1tLA0K PiA+IC0JICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsDQo+ID4gLQkgIHU2NCBzaXplLA0KPiA+ IC0JICBlbnVtIGRybV9tbV9pbnNlcnRfbW9kZSBtb2RlKQ0KPiA+ICtzdHJ1Y3QgZHJtX21tX25v ZGUgKg0KPiA+ICtfX2RybV9tbV9uZXh0X2hvbGUoc3RydWN0IGRybV9tbSAqbW0sDQo+ID4gKwkJ ICAgc3RydWN0IGRybV9tbV9ub2RlICpub2RlLA0KPiA+ICsJCSAgIHU2NCBzaXplLA0KPiA+ICsJ CSAgIGVudW0gZHJtX21tX2luc2VydF9tb2RlIG1vZGUpDQo+ID4gICB7DQo+ID4gICAJc3dpdGNo IChtb2RlKSB7DQo+ID4gICAJZGVmYXVsdDoNCj4gPiBAQCAtNDMyLDYgKzQzMyw3IEBAIG5leHRf aG9sZShzdHJ1Y3QgZHJtX21tICptbSwNCj4gPiAgIAkJcmV0dXJuICZub2RlLT5ob2xlX3N0YWNr ID09ICZtbS0+aG9sZV9zdGFjayA/IE5VTEwgOiBub2RlOw0KPiA+ICAgCX0NCj4gPiAgIH0NCj4g PiArRVhQT1JUX1NZTUJPTChfX2RybV9tbV9uZXh0X2hvbGUpOw0KPiA+DQo+ID4gICAvKioNCj4g PiAgICAqIGRybV9tbV9yZXNlcnZlX25vZGUgLSBpbnNlcnQgYW4gcHJlLWluaXRpYWxpemVkIG5v ZGUNCj4gPiBAQCAtNTE2LDExICs1MTgsMTEgQEAgaW50IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9y YW5nZShzdHJ1Y3QgZHJtX21tICogY29uc3QNCj4gbW0sDQo+ID4gICAJCQkJdTY0IHNpemUsIHU2 NCBhbGlnbm1lbnQsDQo+ID4gICAJCQkJdW5zaWduZWQgbG9uZyBjb2xvciwNCj4gPiAgIAkJCQl1 NjQgcmFuZ2Vfc3RhcnQsIHU2NCByYW5nZV9lbmQsDQo+ID4gLQkJCQllbnVtIGRybV9tbV9pbnNl cnRfbW9kZSBtb2RlKQ0KPiA+ICsJCQkJZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgY2FsbGVyX21v ZGUpDQo+ID4gICB7DQo+ID4gICAJc3RydWN0IGRybV9tbV9ub2RlICpob2xlOw0KPiA+ICAgCXU2 NCByZW1haW5kZXJfbWFzazsNCj4gPiAtCWJvb2wgb25jZTsNCj4gPiArCWVudW0gZHJtX21tX2lu c2VydF9tb2RlIG1vZGUgPSBjYWxsZXJfbW9kZSAmDQo+IH5EUk1fTU1fSU5TRVJUX09OQ0U7DQo+ ID4NCj4gPiAgIAlEUk1fTU1fQlVHX09OKHJhbmdlX3N0YXJ0ID4gcmFuZ2VfZW5kKTsNCj4gPg0K PiA+IEBAIC01MzMsMTMgKzUzNSw5IEBAIGludCBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2Uo c3RydWN0IGRybV9tbSAqIGNvbnN0DQo+IG1tLA0KPiA+ICAgCWlmIChhbGlnbm1lbnQgPD0gMSkN Cj4gPiAgIAkJYWxpZ25tZW50ID0gMDsNCj4gPg0KPiA+IC0Jb25jZSA9IG1vZGUgJiBEUk1fTU1f SU5TRVJUX09OQ0U7DQo+ID4gLQltb2RlICY9IH5EUk1fTU1fSU5TRVJUX09OQ0U7DQo+ID4gLQ0K PiA+ICAgCXJlbWFpbmRlcl9tYXNrID0gaXNfcG93ZXJfb2ZfMihhbGlnbm1lbnQpID8gYWxpZ25t ZW50IC0gMSA6IDA7DQo+ID4gLQlmb3IgKGhvbGUgPSBmaXJzdF9ob2xlKG1tLCByYW5nZV9zdGFy dCwgcmFuZ2VfZW5kLCBzaXplLCBtb2RlKTsNCj4gPiAtCSAgICAgaG9sZTsNCj4gPiAtCSAgICAg aG9sZSA9IG9uY2UgPyBOVUxMIDogbmV4dF9ob2xlKG1tLCBob2xlLCBzaXplLCBtb2RlKSkgew0K PiA+ICsJZHJtX21tX2Zvcl9lYWNoX3N1aXRhYmxlX2hvbGUoaG9sZSwgbW0sIHJhbmdlX3N0YXJ0 LCByYW5nZV9lbmQsDQo+ID4gKwkJCQkgICAgICBzaXplLCBtb2RlKSB7DQo+IA0KPiBJIHdhcyBk b2luZyBvbmUgbGFzdCByZWFkIG9mIHRoZSBwYXRjaCBiZWZvcmUgSSBhc2sgdGhlIG1haW50YWlu ZXJzDQo+IHdoZXJlIHRvIG1lcmdlIGl0IGFuZCByZWFsaXplZCAtIGRvbid0IHlvdSBuZWVkIHRv IHBhc3MgaW4gdGhlDQo+IGNhbGxlcl9tb2RlIGp1c3QgaGVyZSAobm90IG1vZGUgd2hpY2ggaGFz IGJlZW4gbWFza2VkIG91dCBmcm9tICJvbmNlIik/DQo+IE90aGVyd2lzZSAib25jZSIgbW9kZSB3 aWxsIG5vdCBiZSByZXNwZWN0ZWQgYnkgdGhlIGl0ZXJhdG9yLg0KW0thc2lyZWRkeSwgVml2ZWtd IFJpZ2h0LCB5ZXQgYW5vdGhlciB0eXBvOyBpdCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlcl9tb2Rl DQppbnN0ZWFkIG9mIG1vZGUuIExldCBtZSBmaXggaXQgYW5kIHJ1biBpdCB0aHJvdWdoIGFub3Ro ZXIgQ0kgY3ljbGUuDQoNClRoYW5rcywNClZpdmVrDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gVHZy dGtvDQo+IA0KPiA+ICAgCQl1NjQgaG9sZV9zdGFydCA9IF9fZHJtX21tX2hvbGVfbm9kZV9zdGFy dChob2xlKTsNCj4gPiAgIAkJdTY0IGhvbGVfZW5kID0gaG9sZV9zdGFydCArIGhvbGUtPmhvbGVf c2l6ZTsNCj4gPiAgIAkJdTY0IGFkal9zdGFydCwgYWRqX2VuZDsNCj4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vZHJtX21tLmggYi9pbmNsdWRlL2RybS9kcm1fbW0uaA0KPiA+IGluZGV4IGFj MzNiYTFiMThiYy4uZGZmNmRiNjI3ODA3IDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9tbS5oDQo+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX21tLmgNCj4gPiBAQCAtNDAwLDYgKzQw MCw0MiBAQCBzdGF0aWMgaW5saW5lIHU2NCBkcm1fbW1faG9sZV9ub2RlX2VuZChjb25zdCBzdHJ1 Y3QNCj4gZHJtX21tX25vZGUgKmhvbGVfbm9kZSkNCj4gPiAgIAkgICAgIDEgOiAwOyBcDQo+ID4g ICAJICAgICBwb3MgPSBsaXN0X25leHRfZW50cnkocG9zLCBob2xlX3N0YWNrKSkNCj4gPg0KPiA+ ICtzdHJ1Y3QgZHJtX21tX25vZGUgKg0KPiA+ICtfX2RybV9tbV9maXJzdF9ob2xlKHN0cnVjdCBk cm1fbW0gKm1tLA0KPiA+ICsJCSAgICB1NjQgc3RhcnQsIHU2NCBlbmQsIHU2NCBzaXplLA0KPiA+ ICsJCSAgICBlbnVtIGRybV9tbV9pbnNlcnRfbW9kZSBtb2RlKTsNCj4gPiArDQo+ID4gK3N0cnVj dCBkcm1fbW1fbm9kZSAqDQo+ID4gK19fZHJtX21tX25leHRfaG9sZShzdHJ1Y3QgZHJtX21tICpt bSwNCj4gPiArCQkgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsDQo+ID4gKwkJICAgdTY0IHNp emUsDQo+ID4gKwkJICAgZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgbW9kZSk7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogZHJtX21tX2Zvcl9lYWNoX3N1aXRhYmxlX2hvbGUgLSBpdGVyYXRvciB0 byBvcHRpbWFsbHkgd2FsayBvdmVyIGFsbA0KPiA+ICsgKiBob2xlcyB0aGF0IGNhbiBmaXQgYW4g YWxsb2NhdGlvbiBvZiB0aGUgZ2l2ZW4gQHNpemUuDQo+ID4gKyAqIEBwb3M6ICZkcm1fbW1fbm9k ZSB1c2VkIGludGVybmFsbHkgdG8gdHJhY2sgcHJvZ3Jlc3MNCj4gPiArICogQG1tOiAmZHJtX21t IGFsbG9jYXRvciB0byB3YWxrDQo+ID4gKyAqIEByYW5nZV9zdGFydDogc3RhcnQgb2YgdGhlIGFs bG93ZWQgcmFuZ2UgZm9yIHRoZSBhbGxvY2F0aW9uDQo+ID4gKyAqIEByYW5nZV9lbmQ6IGVuZCBv ZiB0aGUgYWxsb3dlZCByYW5nZSBmb3IgdGhlIGFsbG9jYXRpb24NCj4gPiArICogQHNpemU6IHNp emUgb2YgdGhlIGFsbG9jYXRpb24NCj4gPiArICogQG1vZGU6IGZpbmUtdHVuZSB0aGUgYWxsb2Nh dGlvbiBzZWFyY2gNCj4gPiArICoNCj4gPiArICogVGhpcyBpdGVyYXRvciB3YWxrcyBvdmVyIGFs bCBob2xlcyBzdWl0YWJsZSBmb3IgdGhlIGFsbG9jYXRpb24gb2YgZ2l2ZW4NCj4gPiArICogQHNp emUgaW4gYSB2ZXJ5IGVmZmljaWVudCBtYW5uZXIuIEl0IGlzIGltcGxlbWVudGVkIGJ5IGNhbGxp bmcNCj4gPiArICogZHJtX21tX2ZpcnN0X2hvbGUoKSBhbmQgZHJtX21tX25leHRfaG9sZSgpIHdo aWNoIGlkZW50aWZ5IHRoZQ0KPiA+ICsgKiBhcHByb3ByaWF0ZSBob2xlcyB3aXRoaW4gdGhlIGdp dmVuIHJhbmdlIGJ5IGVmZmljaWVudGx5IHRyYXZlcnNpbmcgdGhlDQo+ID4gKyAqIHJidHJlZSBh c3NvY2lhdGVkIHdpdGggQG1tLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBkcm1fbW1fZm9yX2Vh Y2hfc3VpdGFibGVfaG9sZShwb3MsIG1tLCByYW5nZV9zdGFydCwgcmFuZ2VfZW5kLCBcDQo+ID4g KwkJCQkgICAgICBzaXplLCBtb2RlKSBcDQo+ID4gKwlmb3IgKHBvcyA9IF9fZHJtX21tX2ZpcnN0 X2hvbGUobW0sIHJhbmdlX3N0YXJ0LCByYW5nZV9lbmQsIHNpemUsIFwNCj4gPiArCQkJCSAgICAg ICBtb2RlICYgfkRSTV9NTV9JTlNFUlRfT05DRSk7IFwNCj4gPiArCSAgICAgcG9zOyBcDQo+ID4g KwkgICAgIHBvcyA9IG1vZGUgJiBEUk1fTU1fSU5TRVJUX09OQ0UgPyBcDQo+ID4gKwkgICAgIE5V TEwgOiBfX2RybV9tbV9uZXh0X2hvbGUobW0sIHBvcywgc2l6ZSwgXA0KPiA+ICsJCQkJICAgICAg IG1vZGUgJiB+RFJNX01NX0lOU0VSVF9PTkNFKSkNCj4gPiArDQo+ID4gICAvKg0KPiA+ICAgICog QmFzaWMgcmFuZ2UgbWFuYWdlciBzdXBwb3J0IChkcm1fbW0uYykNCj4gPiAgICAqLw0K