From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Gupta, Sourab" Subject: Re: [RFC 2/8] drm/i915: Add mechanism for forwarding the timestamp data through perf Date: Wed, 15 Jul 2015 11:30:13 +0000 Message-ID: <1436959949.13551.30.camel@sourabgu-desktop> References: <1436950306-14147-1-git-send-email-sourab.gupta@intel.com> <1436950306-14147-3-git-send-email-sourab.gupta@intel.com> <20150715094055.GA9115@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 5434B6E24E for ; Wed, 15 Jul 2015 04:30:20 -0700 (PDT) In-Reply-To: <20150715094055.GA9115@nuc-i3427.alporthouse.com> Content-Language: en-US Content-ID: <63D9FBC3957F7148AC2D2FED923D4EA6@intel.com> 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: Peter Zijlstra , "intel-gfx@lists.freedesktop.org" , "Wu, Jabin" , "Woo, Insoo" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE1LTA3LTE1IGF0IDA5OjQwICswMDAwLCBDaHJpcyBXaWxzb24gd3JvdGU6DQo+ IE9uIFdlZCwgSnVsIDE1LCAyMDE1IGF0IDAyOjIxOjQwUE0gKzA1MzAsIHNvdXJhYi5ndXB0YUBp bnRlbC5jb20gd3JvdGU6DQo+ID4gRnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50 ZWwuY29tPg0KPiA+IA0KPiA+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgbWVjaGFuaXNtIGZvciBmb3J3 YXJkaW5nIHRoZSB0aW1lc3RhbXAgZGF0YSB0bw0KPiA+IHVzZXJzcGFjZSB1c2luZyB0aGUgR2Vu IFBNVSBwZXJmIGV2ZW50IGludGVyZmFjZS4NCj4gPiANCj4gPiBUaGUgdGltZXN0YW1wcyB3aWxs IGJlIGNhcHR1cmVkIGluIGEgZ2VtIGJ1ZmZlciBvYmplY3QuIFRoZSBtZXRhZGF0YQ0KPiA+IGlu Zm9ybWF0aW9uIChjdHhfaWQgcmlnaHQgbm93KSBwZXJ0YWluaW5nIHRvIHNuYXBzaG90IGlzIG1h aW50YWluZWQgaW4gYQ0KPiA+IGxpc3QsIHdob3NlIGVhY2ggbm9kZSBoYXMgb2Zmc2V0cyBpbnRv IHRoZSBnZW0gYnVmZmVyIG9iamVjdCBmb3IgZWFjaA0KPiA+IHNuYXBzaG90IGNhcHR1cmVkLg0K PiANCj4gV2hhdCBpcyB0aGUgZGVmaW5pdGlvbiBvZiBjdHhfaWQ/IFRoZSBvbmx5IHBlcnNpc3Rl bnQgb25lIGlzIHRoZQ0KPiB1c2VyX2hhbmRsZSB3aGljaCBpcyBvbmx5IHZhbGlkIHdpdGhpbiB0 aGUgZmlsZV9wcml2IG5hbWVzcGFjZS4gVGhlcmUgaXMNCj4gbm8gZ3VpZCBmb3IgY3R4IGF0IHRo ZSBtb21lbnQuDQoNCldlbGwsIHRoaXMgcGF0Y2ggc2V0IG1ha2VzIGFzc3VtcHRpb24gb24gdGhl IGF2YWlsYWJpbGl0eSBvZiBhIGdsb2JhbGx5DQp1bmlxdWUgY3R4X2lkLiBUaGUgZmlyc3QgcGF0 Y2ggaW4gdGhlIHNlcmllcyBwcm9wb3NlcyB0aGUgc2FtZToNCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwtZ2Z4LzIwMTUtSnVseS8wNzE2OTguaHRtbA0KTm90IHN1 cmUsIHdoZXRoZXIgdGhhdCB3b3VsZCBiZSBhY2NlcHRhYmxlIHRob3VnaC4NCj4gDQo+ID4gSW4g b3JkZXIgdG8gdHJhY2sgd2hldGhlciB0aGUgZ3B1IGhhcyBjb21wbGV0ZWQgcHJvY2Vzc2luZyB0 aGUgbm9kZSwNCj4gPiBhIGZpZWxkIHBlcnRhaW5pbmcgdG8gY29ycmVzcG9uZGluZyBnZW0gcmVx dWVzdCBpcyBhZGRlZC4gVGhlIHJlcXVlc3QgaXMNCj4gPiBleHBlY3RlZCB0byBiZSByZWZlcmVu Y2VkIHdoZW5ldmVyIHRoZSBncHUgY29tbWFuZCBpcyBzdWJtaXR0ZWQuDQo+ID4gDQo+ID4gRWFj aCBzbmFwc2hvdCBjb2xsZWN0ZWQgaXMgZm9yd2FyZGVkIGFzIGEgc2VwYXJhdGUgcGVyZiBzYW1w bGUuIFRoZSBwZXJmDQo+ID4gc2FtcGxlIHdpbGwgaGF2ZSByYXcgdGltZXN0YW1wIGRhdGEgZm9s bG93ZWQgYnkgbWV0YWRhdGEgaW5mb3JtYXRpb24NCj4gPiBwZXJ0YWluaW5nIHRvIHRoYXQgc2Ft cGxlLg0KPiA+IFdoaWxlIGZvcndhcmRpbmcgdGhlIHNhbXBsZXMsIHdlIGNoZWNrIHdoZXRoZXIg dGhlIGdlbSByZXF1ZXN0IGlzIGNvbXBsZXRlZA0KPiA+IGFuZCBkZXJlZmVyZW5jZSB0aGUgY29y cmVzcG9uZGluZyByZXF1ZXN0LiBUaGUgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUNCj4gPiByZXF1 ZXN0IG5lY2Vzc2l0YXRlcyBhIHdvcmtlciBoZXJlLCB3aGljaCB3aWxsIGJlIHNjaGVkdWxlZCB3 aGVuIHRoZQ0KPiA+IGhydGltZXIgdHJpZ2dlcnMuDQo+ID4gV2hpbGUgZmx1c2hpbmcgdGhlIHNh bXBsZXMsIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHJlcXVlc3RzIGFscmVhZHkNCj4gPiBzY2hl ZHVsZWQsIGJlZm9yZSBmb3J3YXJkaW5nIHRoZSBzYW1wbGVzLiBUaGlzIHdhaXQgaXMgZG9uZSBp biBhIGxvY2tsZXNzDQo+ID4gZmFzaGlvbi4NCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBTb3Vy YWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgIDExICsrKysNCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMgfCAxMTggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystDQo+ID4gIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgIHwgIDEw ICsrKw0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IGluZGV4IDdlOGU3N2Iu LjY5ODQxNTAgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiBAQCAtMTY3 NSw2ICsxNjc1LDEzIEBAIHN0cnVjdCBpOTE1X29hX3Jjc19ub2RlIHsNCj4gPiAgCXUzMiB0YWc7 DQo+ID4gIH07DQo+ID4gIA0KPiA+ICtzdHJ1Y3QgaTkxNV9nZW5fcG11X25vZGUgew0KPiA+ICsJ c3RydWN0IGxpc3RfaGVhZCBoZWFkOw0KPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXE7DQo+ID4gKwl1MzIgb2Zmc2V0Ow0KPiA+ICsJdTMyIGN0eF9pZDsNCj4gPiArfTsNCj4g PiArDQo+ID4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgaTkxNV9vYV8zZF9tdXhf Y29uZmlnX2hzd1tdOw0KPiA+ICBleHRlcm4gY29uc3QgaW50IGk5MTVfb2FfM2RfbXV4X2NvbmZp Z19oc3dfbGVuOw0KPiA+ICBleHRlcm4gY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGk5MTVfb2Ff M2RfYl9jb3VudGVyX2NvbmZpZ19oc3dbXTsNCj4gPiBAQCAtMTk5Niw3ICsyMDAzLDExIEBAIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4gPiAgCQlzdHJ1Y3Qgew0KPiA+ICAJCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOw0KPiA+ICAJCQl1OCAqYWRkcjsNCj4gPiArCQkJdTMy IG5vZGVfc2l6ZTsNCj4gPiArCQkJdTMyIG5vZGVfY291bnQ7DQo+ID4gIAkJfSBidWZmZXI7DQo+ ID4gKwkJc3RydWN0IGxpc3RfaGVhZCBub2RlX2xpc3Q7DQo+ID4gKwkJc3RydWN0IHdvcmtfc3Ry dWN0IHdvcmtfdGltZXI7DQo+ID4gIAl9IGdlbl9wbXU7DQo+ID4gIA0KPiA+ICAJdm9pZCAoKmlu c2VydF9wcm9maWxlX2NtZFtJOTE1X1BST0ZJTEVfTUFYXSkNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X29hX3BlcmYuYw0KPiA+IGluZGV4IGFiOTY1YjQuLjM1MGI1NjAgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYw0KPiA+IEBAIC00MDgsMTEgKzQwOCwxMDggQEAg dm9pZCBmb3J3YXJkX29hX3Jjc19zbmFwc2hvdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9f d29yaykNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+ICANCj4gPiAraW50IGk5MTVfZ2VuX3BtdV93YWl0 X2dwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+IA0KPiBXaHkgc28gbWFu eSBleHBvcnRzIGZyb20gdGhpcyBmaWxlPyBBbmQgd2h5IGFyZSBoYWxmIG9mIHRoZW0gcHJpdmF0 ZWx5DQo+IG5hbWVkPw0KDQpBY2tub3dsZWRnZWQuIFRoZSBleHBvcnRzIGFyZSBub3QgbmVlZGVk LiBXaWxsIGhhdmUgYSBzdGF0aWMNCmRlY2xhcmF0aW9uLg0KPiANCj4gPiArew0KPiA+ICsJc3Ry dWN0IGk5MTVfZ2VuX3BtdV9ub2RlICpsYXN0X2VudHJ5Ow0KPiA+ICsJdW5zaWduZWQgbG9uZyBs b2NrX2ZsYWdzOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogV2Fp dCBmb3IgdGhlIGxhc3Qgc2NoZWR1bGVkIHJlcXVlc3QgdG8gY29tcGxldGUuIFRoaXMgd291bGQN Cj4gPiArCSAqIGltcGxpY2l0bHkgd2FpdCBmb3IgdGhlIHByaW9yIHN1Ym1pdHRlZCByZXF1ZXN0 cy4gVGhlIHJlZmNvdW50DQo+ID4gKwkgKiBvZiB0aGUgcmVxdWVzdHMgaXMgbm90IGRlY3JlbWVu dGVkIGhlcmUuDQo+ID4gKwkgKi8NCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ Z2VuX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsNCj4gDQo+IFVybSwgYXJlIHdlIHJlYWxseSBnb2lu ZyB0byBiZSBjYWxsZWQgaW4gaXJxIGNvbnRleHQ/IEkgcmVhbGx5IGhvcGUgeW91DQo+IGFyZSBu b3QgcGxhbm5pbmcgb24gaG9va2luZyBpbiB0aGUgaXJxIGhhbmRsZXJzLi4uDQo+IA0KPiBBZmFp Y3QsIHlvdSBhcmUganVzdCB1c2luZyB0aGUgbGlzdCBmcm9tIGEgdGltZXIgY29udGV4dCwgc28N Cj4gc3Bpbl9sb2NrX2JoKCkgd291bGQgYmUgc3VmZmljaWVudC4gQXBwYXJlbnRseSBpdCBpc24n dCBhIHRpbWVyICh0aGFua3MNCj4gZm9yIHRoZSBtaXNsZWFkaW5nIG5hbWUhKSBzbyBqdXN0IHNw aW5fbG9jaygpLg0KDQpObywgaXQgd29uJ3QgYmUgY2FsbGVkIGZyb20gaXJxIGNvbnRleHQuIEkn bGwganVzdCB1c2Ugc3Bpbl9sb2NrKCkgaGVyZS4NCj4gDQo+ID4gKwlpZiAobGlzdF9lbXB0eSgm ZGV2X3ByaXYtPmdlbl9wbXUubm9kZV9saXN0KSkgew0KPiA+ICsJCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRldl9wcml2LT5nZW5fcG11LmxvY2ssIGxvY2tfZmxhZ3MpOw0KPiA+ICsJCXJldHVy biAwOw0KPiA+ICsJfQ0KPiA+ICsJbGFzdF9lbnRyeSA9IGxpc3RfbGFzdF9lbnRyeSgmZGV2X3By aXYtPmdlbl9wbXUubm9kZV9saXN0LA0KPiA+ICsJCQlzdHJ1Y3QgaTkxNV9nZW5fcG11X25vZGUs IGhlYWQpOw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmdlbl9wbXUu bG9jaywgbG9ja19mbGFncyk7DQo+IA0KPiBZb3UgY291bGQgd3JpdGUgdGhpcyBhIGxpdHRsZSBu ZWF0ZXIgd2l0aCBqdXN0IG9uZSBwYXRoIHRocm91Z2ggdGhlDQo+IGNydGljaWFsIHNlY3Rpb24u DQoNCldpbGwgcmV3b3JrIG9uIHRoaXMuDQo+IA0KPiA+ICsJaWYgKGxhc3RfZW50cnkgJiYgbGFz dF9lbnRyeS0+cmVxKSB7DQo+IA0KPiBsYXN0X2VudHJ5IGNhbm5vdCBiZSBOVUxMLg0KPiANCj4g V2hlbiBpcyByZXEgTlVMTD8gRG9lcyB0aGUgbGFzdF9lbnRyeS0+cmVxIGJlaW5nIE5VTEwgZ3Vh cnJhbnRlZSB0aGF0DQo+IGFsbCBwcmV2aW91cyByZXEgYXJlIE5VTEw/DQoNClNvcnJ5LCB0aGVz ZSBleHRyYW5lb3VzIGNoZWNrcyBtYXkgaGF2ZSBjcmVwdCBpbi4gQWdyZWVkIHRoYXQgbGFzdF9l bnRyeQ0KY2FuJ3QgYmUgTlVMTCwgYW5kIHNhbWUgZm9yIHJlcSwgc2luY2Ugd2UgaGF2ZSByZWZj b3VudGVkIHRoZSByZXEuIFdpbGwNCnJlbW92ZSB0aGVzZS4gIA0KPiANCj4gPiArCQlyZXQgPSBf X2k5MTVfd2FpdF9yZXF1ZXN0KGxhc3RfZW50cnktPnJlcSwgYXRvbWljX3JlYWQoDQo+ID4gKwkJ CQkmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKSwNCj4gPiArCQkJCWRldl9wcml2 LT5tbS5pbnRlcnJ1cHRpYmxlLCBOVUxMLCBOVUxMKTsNCj4gDQo+IEludmFsaWQgdXNlIG9mIGRl dl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlIChqdXN0IHBhc3MgdHJ1ZSkuDQoNCldpbGwgbWFrZSB0 aGlzIGNoYW5nZS4NCj4gDQo+ID4gKwkJaWYgKHJldCkgew0KPiA+ICsJCQlEUk1fRVJST1IoImZh aWxlZCB0byB3YWl0XG4iKTsNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArCQl9DQo+ID4gKwl9 DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZm9yd2Fy ZF9vbmVfZ2VuX3BtdV9zYW1wbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0K PiA+ICsJCQkJc3RydWN0IGk5MTVfZ2VuX3BtdV9ub2RlICpub2RlKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgcGVyZl9zYW1wbGVfZGF0YSBkYXRhOw0KPiA+ICsJc3RydWN0IHBlcmZfZXZlbnQgKmV2 ZW50ID0gZGV2X3ByaXYtPmdlbl9wbXUuZXhjbHVzaXZlX2V2ZW50Ow0KPiA+ICsJaW50IHRzX3Np emUsIHNuYXBzaG90X3NpemU7DQo+ID4gKwl1OCAqc25hcHNob3Q7DQo+ID4gKwlzdHJ1Y3QgZHJt X2k5MTVfdHNfbm9kZV9jdHhfaWQgKmN0eF9pbmZvOw0KPiA+ICsJc3RydWN0IHBlcmZfcmF3X3Jl Y29yZCByYXc7DQo+ID4gKw0KPiA+ICsJdHNfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVf dHNfZGF0YSk7DQo+ID4gKwlzbmFwc2hvdF9zaXplID0gdHNfc2l6ZSArIHNpemVvZigqY3R4X2lu Zm8pOw0KPiANCj4gSWYgeW91IGtlcHQgdGhlc2UgYXMgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBp dCB3aWxsIG1ha2UgdGhlIHJlc3QgYSBiaXQNCj4gZWFzaWVyIHRvIGZvbGxvdy4NCldpbGwgbWFr ZSB0aGlzIGNoYW5nZS4NCj4gDQo+ID4gKwlzbmFwc2hvdCA9IGRldl9wcml2LT5nZW5fcG11LmJ1 ZmZlci5hZGRyICsgbm9kZS0+b2Zmc2V0Ow0KPiA+ICsNCj4gPiArCWN0eF9pbmZvID0gKHN0cnVj dCBkcm1faTkxNV90c19ub2RlX2N0eF9pZCAqKShzbmFwc2hvdCArIHRzX3NpemUpOw0KPiA+ICsJ Y3R4X2luZm8tPmN0eF9pZCA9IG5vZGUtPmN0eF9pZDsNCj4gPiArDQo+ID4gKwlwZXJmX3NhbXBs ZV9kYXRhX2luaXQoJmRhdGEsIDAsIGV2ZW50LT5ody5sYXN0X3BlcmlvZCk7DQo+ID4gKw0KPiA+ ICsJLyogTm90ZTogdGhlIGNvbWJpbmVkIHUzMiByYXctPnNpemUgbWVtYmVyICsgcmF3IGRhdGEg aXRzZWxmIG11c3QgYmUgOA0KPiA+ICsJICogYnl0ZSBhbGlnbmVkLiAoU2VlIG5vdGUgaW4gaW5p dF9nZW5fcG11X2J1ZmZlciBmb3IgbW9yZSBkZXRhaWxzKSAqLw0KPiANCj4gWW91IG1lYW4gdGhp cyBjb21tZW50Pw0KPiAvKiBzaXplIGhhcyB0byBiZSBhbGlnbmVkIHRvIDggYnl0ZXMgKHJlcXVp cmVkIGJ5IHJlbGV2YW50IGdwdSBjbWRzKSAqLw0KPiBUaGF0J3Mgbm90IHBhcnRpY3VsYXJseSBl bmxpZ2h0ZW5pbmcuDQo+IA0KPiBNaXNzaW5nIEJVSUxEX0JVRyB0ZXN0cyB0byBhc3NlcnQgdGhh dCB5b3VyIHN0cnVjdHVyZSBzaXplcyBhcmUgd2hhdCB5b3UNCj4gY2xhaW0gdGhleSBzaG91bGQg YmUuIFRvIGlsbHVzdHJhdGUgdGhpcyBjb21tZW50LCB5b3UgY291bGQgZG8NCj4gDQo+IEJVSUxE X0JVR19PTihzaXplb2Yoc3RydWN0IGRybV9pOTE1X3RzX2RhdGEpICE9IDgpOw0KPiBCVUlMRF9C VUdfT04oc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV90c19tb2RlX2N0eF9pZCkgIT0gOCk7DQo+IEJV SUxEX0JVR19PTigoc25hcHNob3Rfc2l6ZSArIDQgKyBzaXplb2YocmF3LnNpemUpICUgOCkgPT0g MCk7DQo+IA0KPiBPdGhlcndpc2UgdGhlIGNvbW1lbnQgZG9lc24ndCByZWFsbHkgbWFrZSBpdCBj bGVhciBleGFjdGx5IHdoYXQgaGFzIHRvDQo+IGJlIGFsaWduZWQgdG8gOCBvciAqd2h5Ki4NCj4g DQoNCkFjdHVhbGx5LCB0aGlzIGNoZWNrIGlzIGZvciBlbnN1cmluZyB0aGF0IHRoZSBjb21iaW5l ZCBzaXplIG9mIHJhdyBkYXRhDQorIHRoZSBzaXplIG9mICdyYXctPnNpemUnIG1lbWJlciBmaWVs ZCBzaG91bGQgYmUgbXVsdGlwbGUgb2YgOCBieXRlcy4NClRoaXMgY2hlY2sgY2FuIGJlIHNlZW4g YXQga2VybmVsL2V2ZW50cy9jb3JlLmM6IHBlcmZfcHJlcGFyZV9zYW1wbGUoKQ0KKHRoZSBwbGFj ZSB3aGVyZSBQRVJGX1NBTVBMRV9SQVcgaXMgcHJvY2Vzc2VkKS4NCldpbGwgcmV3b3JkIHRoZSBj b21tZW50IHRvIG1ha2UgaXQgY2xlYXJlciwgaW4gYWRkaXRpb24gdG8gaGF2aW5nIHRoZQ0KQlVJ TERfQlVHX09OIG1hY3JvIGNoZWNrcy4NCg0KPiA+ICsJcmF3LnNpemUgPSBzbmFwc2hvdF9zaXpl ICsgNDsNCj4gPiArCXJhdy5kYXRhID0gc25hcHNob3Q7DQo+IA0KPiA+ICsJZGF0YS5yYXcgPSAm cmF3Ow0KPiA+ICsNCj4gPiArCXBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsICZkYXRhLCAmZGV2 X3ByaXYtPmdlbl9wbXUuZHVtbXlfcmVncyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgZm9y d2FyZF9nZW5fcG11X3NuYXBzaG90c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqX193b3JrKQ0K PiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQ0KPiA+ICsJ CWNvbnRhaW5lcl9vZihfX3dvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBnZW5fcG11LndvcmtfdGlt ZXIpOw0KPiA+ICsJc3RydWN0IGk5MTVfZ2VuX3BtdV9ub2RlICplbnRyeSwgKm5leHQ7DQo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsNCj4gPiArCXVuc2lnbmVkIGxvbmcg bG9ja19mbGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlDQo+ID4gKwkJKGVudHJ5LCBuZXh0LCAmZGV2X3ByaXYtPmdlbl9wbXUubm9kZV9s aXN0LCBoZWFkKSB7DQo+ID4gKwkJcmVxID0gZW50cnktPnJlcTsNCj4gPiArCQlpZiAocmVxICYm IGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpIHsNCj4gDQo+IE5lZ2F0ZSB0 aGUgdGVzdCBhbmQgcmVkdWNlIGluZGVudGF0aW9uIGZvciBlYXNlIG9mIHJlYWRpbmcuDQoNCk9r LCB3aWxsIGRvLg0KPiANCj4gPiArCQkJZm9yd2FyZF9vbmVfZ2VuX3BtdV9zYW1wbGUoZGV2X3By aXYsIGVudHJ5KTsNCj4gPiArCQkJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUo ZGV2X3ByaXYtPmRldik7DQo+ID4gKwkJCWlmIChyZXQpDQo+ID4gKwkJCQlicmVhazsNCj4gPiAr CQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJmVudHJ5LT5yZXEsIE5VTEwpOw0KPiA+ICsJCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCk7DQo+IA0KPiBUaGlzIGlz IGp1c3QgaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV91bmxvY2tlZCgpLg0KDQpSaWdodC4g TWlzc2VkIGl0LiBXaWxsIGhhdmUgdGhpcyBmdW5jdGlvbi4NCj4gDQo+ID4gKwkJfSBlbHNlDQo+ ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIERvIHdlIGluc3RlYWQg bmVlZCB0byBwcm90ZWN0IHdob2xlIGxvb3A/IElmIHNvLCB3ZSB3b3VsZA0KPiA+ICsJCSAqIG5l ZWQgdG8gKmxpc3RfbW92ZV90YWlsKiB0byBhIGRlZmVycmVkIGxpc3QsIGZyb20gd2hlcmUNCj4g PiArCQkgKiBpOTE1IGRldmljZSBtdXRleCBjb3VsZCBiZSB0YWtlbiB0byBkZWZlcmVuY2UgdGhl IHJlcXVlc3RzLA0KPiA+ICsJCSAqIGFuZCBmcmVlIHRoZSBub2RlLg0KPiA+ICsJCSAqLw0KPiA+ ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrLCBsb2NrX2ZsYWdz KTsNCj4gPiArCQlsaXN0X2RlbCgmZW50cnktPmhlYWQpOw0KPiA+ICsJCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmRldl9wcml2LT5nZW5fcG11LmxvY2ssIGxvY2tfZmxhZ3MpOw0KPiA+ICsJCWtm cmVlKGVudHJ5KTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQgZ2Vu X3BtdV9mbHVzaF9zbmFwc2hvdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0K PiA+ICB7DQo+ID4gIAlXQVJOX09OKCFkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcik7DQo+ ID4gIA0KPiA+IC0JLyogVE9ETzogcm91dGluZSBmb3IgZm9yd2FyZGluZyBzbmFwc2hvdHMgdG8g dXNlcnNwYWNlICovDQo+ID4gKwlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+Z2VuX3BtdS53b3Jr X3RpbWVyKTsNCj4gDQo+IFdoeSBhcmUgd2Ugc2NoZWR1bGluZyBhIHRpbWVyPyBNaWdodCBiZSBh IGJhZCBuYW1lIGZvciBhIHdvcmsgaXRlbSB0bw0KPiBpbmZlciB0aGF0IGl0IGlzIGEgdGltZXIu DQo+IA0KV2VsbCwgdGhpcyBpcyBhIGNhc2Ugb2YgYmFkIG5hbWUgYW5kIGl0J3MgYSB3b3JrIGl0 ZW0gcmVhbGx5Lg0KDQo+IFdoeSBpcyB0aGlzIGluIGEgd29yayBxdWV1ZSBpZiB5b3UgYWxyZWFk eSBibG9ja2VkIGR1cmluZyB0aGUgZmx1c2g/DQo+IA0KDQpBY3R1YWxseSwgdGhlIGdlbl9wbXVf Zmx1c2hfc25hcHNob3RzKCkgZm4gaXMgY2FsbGVkIGZyb20gMyBwbGFjZXM6DQpocnRpbWVyLCBl dmVudF9zdG9wIGFuZCBldmVudF9mbHVzaC4gQW5kIHdlIGNhbiBibG9jayBvbmx5IGZyb20gZXZl bnQNCmZsdXNoLiBTbywgdGhpcyBmdW5jdGlvbiBub3QgcmVhbGx5IHRpZWQgd2l0aCBldmVudCBm bHVzaCBvbmx5Lg0KDQpBbHNvLCB0aGUgam9iIG9mIGZvcndhcmRpbmcgc2FtcGxlcyBuZWVkcyBt dXRleCB0byBiZSB0YWtlbiAodG8NCmRlcmVmZXJlbmNlIHRoZSByZXF1ZXN0IDogaTkxNV9nZW1f cmVxdWVzdF91bnJlZmVyZW5jZV91bmxvY2tlZCksIGFuZA0Kc2luY2UgdGhlIGZvcndhcmRpbmcg aGFzIHRvIGJlIGluaXRpYXRlZCBmcm9tIGF0b21pYyBjb250ZXh0IChlLmcuDQpocnRpbWVyKSwg SSBjcmVhdGVkIGEgd3EgZm9yIHRoZSBzYW1lLCB3aXRoIHRoZSBpbnRlbnRpb24gb2Ygbm90IGhh dmluZw0KY29kZSBkdXBsaWNhdGlvbiBmb3IgZXZlbnQgZmx1c2guDQoNClByb2JhYmx5LCB0aGUg YmV0dGVyIHNlbnNlIHdvdWxkIGJlIHRvIGhhdmUgdGhlIGZvcndhcmRpbmcgZnVuY3Rpb25hbGl0 eQ0KaW1wbGVtZW50ZWQgaW4gYSBzZXBlcmF0ZSBmdW5jdGlvbi4gVGhlIHdvcmsgaXRlbSAod2hp Y2ggd291bGQgYmUNCnNjaGVkdWxlZCBmcm9tIGhydGltZXIvZXZlbnQgc3RvcCkgd291bGQgYmUg Y2FsbGluZyB0aGF0IGZ1bmN0aW9uLiBBbmQNCnRoZSB0aGUgZXZlbnQgZmx1c2ggd291bGQgZGly ZWN0bHkgY2FsbCB0aGlzIGZvcndhcmRpbmcgZm4sIHdpdGhvdXQgdGhlDQpleHRyYW5lb3VzIHdv cmsgaXRlbSBzY2hlZHVsZWQuIERvZXMgdGhpcyBzZWVtIG9rPw0KDQo+ID4gIH0NCj4gPiAgDQo+ ID4gIHN0YXRpYyB2b2lkDQo+ID4gQEAgLTc2MSw3ICs4NTgsNyBAQCBzdGF0aWMgaW50IGluaXRf Z2VuX3BtdV9idWZmZXIoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQ0KPiA+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0NCj4gPiAgCQljb250YWluZXJfb2YoZXZlbnQtPnBt dSwgdHlwZW9mKCpkZXZfcHJpdiksIGdlbl9wbXUucG11KTsNCj4gPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpibzsNCj4gPiAtCWludCByZXQ7DQo+ID4gKwlpbnQgcmV0LCBub2RlX3Np emU7DQo+ID4gIA0KPiA+ICAJQlVHX09OKGRldl9wcml2LT5nZW5fcG11LmJ1ZmZlci5vYmopOw0K PiA+ICANCj4gPiBAQCAtNzcyLDYgKzg2OSwxNSBAQCBzdGF0aWMgaW50IGluaXRfZ2VuX3BtdV9i dWZmZXIoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQ0KPiA+ICAJZGV2X3ByaXYtPmdlbl9wbXUu YnVmZmVyLm9iaiA9IGJvOw0KPiA+ICANCj4gPiAgCWRldl9wcml2LT5nZW5fcG11LmJ1ZmZlci5h ZGRyID0gdm1hcF9vYV9idWZmZXIoYm8pOw0KPiA+ICsJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2 LT5nZW5fcG11Lm5vZGVfbGlzdCk7DQo+ID4gKw0KPiA+ICsJbm9kZV9zaXplID0gc2l6ZW9mKHN0 cnVjdCBkcm1faTkxNV90c19kYXRhKSArDQo+ID4gKwkJCXNpemVvZihzdHJ1Y3QgZHJtX2k5MTVf dHNfbm9kZV9jdHhfaWQpOw0KPiA+ICsNCj4gPiArCS8qIHNpemUgaGFzIHRvIGJlIGFsaWduZWQg dG8gOCBieXRlcyAocmVxdWlyZWQgYnkgcmVsZXZhbnQgZ3B1IGNtZHMpICovDQo+ID4gKwlub2Rl X3NpemUgPSBBTElHTihub2RlX3NpemUsIDgpOw0KPiA+ICsJZGV2X3ByaXYtPmdlbl9wbXUuYnVm ZmVyLm5vZGVfc2l6ZSA9IG5vZGVfc2l6ZTsNCj4gPiArCWRldl9wcml2LT5nZW5fcG11LmJ1ZmZl ci5ub2RlX2NvdW50ID0gYm8tPmJhc2Uuc2l6ZSAvIG5vZGVfc2l6ZTsNCj4gPiAgDQo+ID4gIAlE Uk1fREVCVUdfRFJJVkVSKCJHZW4gUE1VIEJ1ZmZlciBpbml0aWFsaXplZCwgdmFkZHIgPSAlcCIs DQo+ID4gIAkJCSBkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcik7DQo+ID4gQEAgLTEzOTcs NiArMTUwMywxMSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VuX2V2ZW50X2ZsdXNoKHN0cnVjdCBwZXJm X2V2ZW50ICpldmVudCkNCj4gPiAgew0KPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPQ0KPiA+ICAJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUpLCBnZW5f cG11LnBtdSk7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGk5MTVfZ2VuX3Bt dV93YWl0X2dwdShpOTE1KTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4g PiAgDQo+ID4gIAlnZW5fcG11X2ZsdXNoX3NuYXBzaG90cyhpOTE1KTsNCj4gDQo+IFdhaXQgZm9y IGlkbGUsIHRoZW4gc2NoZWR1bGUgYSB0YXNrPz8/DQo+IC1DaHJpcw0KPiA+ICAgDQo+IA0KDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=