From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Libin" Subject: Re: [PATCH RESEND 9/9] drm/i915: set proper N/M in modeset Date: Wed, 12 Oct 2016 06:29:18 +0000 Message-ID: <96A12704CE18D347B625EE2D4A099D194FA43B07@SHSMSX103.ccr.corp.intel.com> References: <356b7b46bb602c250afcbf003afa720c998b3deb.1476111629.git.jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFD966E7C2 for ; Wed, 12 Oct 2016 06:29:22 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Lin, Mengdong" , "intel-gfx@lists.freedesktop.org" Cc: "Nikula, Jani" , "libin.yang@linux.intel.com" , "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSW50ZWwtZ2Z4IFttYWls dG86aW50ZWwtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXSBPbiBCZWhhbGYgT2YN Cj4gTGluLCBNZW5nZG9uZw0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMTIsIDIwMTYgMTA6 NDYgQU0NCj4gVG86IE5pa3VsYSwgSmFuaSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPjsgaW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogTmlrdWxhLCBKYW5pIDxqYW5pLm5pa3Vs YUBpbnRlbC5jb20+OyBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbTsNCj4gUGFuZGl5YW4sIERo aW5ha2FyYW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W0ludGVsLWdmeF0gW1BBVENIIFJFU0VORCA5LzldIGRybS9pOTE1OiBzZXQgcHJvcGVyIE4vTSBp bg0KPiBtb2Rlc2V0DQo+IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiBGcm9tOiBJbnRlbC1nZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0cy5mcmVl ZGVza3RvcC5vcmddIE9uDQo+ID4gQmVoYWxmIE9mIEphbmkgTmlrdWxhDQo+ID4gU2VudDogTW9u ZGF5LCBPY3RvYmVyIDEwLCAyMDE2IDExOjA0IFBNDQo+ID4gVG86IGludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCj4gPiBDYzogTmlrdWxhLCBKYW5pIDxqYW5pLm5pa3VsYUBpbnRlbC5j b20+OyBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbTsNCj4gPiBQYW5kaXlhbiwgRGhpbmFrYXJh biA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW0ludGVsLWdm eF0gW1BBVENIIFJFU0VORCA5LzldIGRybS9pOTE1OiBzZXQgcHJvcGVyIE4vTSBpbg0KPiA+IG1v ZGVzZXQNCj4gPg0KPiA+IFdoZW4gbW9kZXNldCBvY2N1cnMgYW5kIHRoZSBMU19DTEsgaXMgc2V0 IHRvIHNvbWUgc3BlY2lhbCB2YWx1ZXMgaW4gRFANCj4gPiBtb2RlLCB0aGUgTi9NIG5lZWQgdG8g YmUgc2V0IG1hbnVhbGx5IGlmIGF1ZGlvIGlzIHBsYXlpbmcuIE90aGVyd2lzZQ0KPiA+IHRoZSBm aXJzdCBzZXZlcmFsIHNlY29uZHMgbWF5IGJlIHNpbGVudCBpbiBhdWRpbyBwbGF5YmFjay4NCj4g Pg0KPiA+IFRoZSByZWxhdGlvbnNoaXAgb2YgTWF1ZCBhbmQgTmF1ZCBpcyBleHByZXNzZWQgaW4g dGhlIGZvbGxvd2luZyBlcXVhdGlvbjoNCj4gPiBNYXVkL05hdWQgPSA1MTIgKiBmcyAvIGZfTFNf Q2xrDQo+ID4NCj4gPiBQbGVhc2UgcmVmZXIgVkVTQSBEaXNwbGF5UG9ydCBTdGFuZGFyZCBzcGVj IGZvciBkZXRhaWxzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4u eWFuZ0BsaW51eC5pbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCAgICB8ICAgNyArKysNCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYyB8IDEwMA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0N Cj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGluZGV4IDU5NWQxOTZmNzUzZi4u OGQ5ZGJjN2Q1YjMyDQo+ID4gMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4g PiBAQCAtNzM1OSw2ICs3MzU5LDEzIEBAIGVudW0gew0KPiA+ICAjZGVmaW5lIF9IU1dfQVVEX01J U0NfQ1RSTF9CCQkweDY1MTEwDQo+ID4gICNkZWZpbmUgSFNXX0FVRF9NSVNDX0NUUkwocGlwZSkJ CV9NTUlPX1BJUEUocGlwZSwNCj4gPiBfSFNXX0FVRF9NSVNDX0NUUkxfQSwgX0hTV19BVURfTUlT Q19DVFJMX0IpDQo+ID4NCj4gPiArI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQQkJMHg2 NTAyOA0KPiA+ICsjZGVmaW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9CCQkweDY1MTI4DQo+ID4g KyNkZWZpbmUgSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSkJX01NSU9fUElQRShwaXBlLA0KPiA+ IF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BLCBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQikNCj4gPiAr I2RlZmluZSAgIEFVRF9NX0NUU19NX1ZBTFVFX0lOREVYCSgxIDw8IDIxKQ0KPiA+ICsjZGVmaW5l ICAgQVVEX01fQ1RTX01fUFJPR19FTkFCTEUJKDEgPDwgMjApDQo+ID4gKyNkZWZpbmUgICBBVURf Q09ORklHX01fTUFTSwkJMHhmZmZmZg0KPiANCj4gVGhlIGxhc3QgbGluZSBjYXVzZSBtaXNhbGln bm1lbnQgYWZ0ZXIgYXBwbHlpbmcgdGhlIHBhdGNoLg0KPiANCj4gPiArDQo+ID4gICNkZWZpbmUg X0hTV19BVURfRElQX0VMRF9DVFJMX1NUX0EJMHg2NTBiNA0KPiA+ICAjZGVmaW5lIF9IU1dfQVVE X0RJUF9FTERfQ1RSTF9TVF9CCTB4NjUxYjQNCj4gPiAgI2RlZmluZSBIU1dfQVVEX0RJUF9FTERf Q1RSTChwaXBlKQlfTU1JT19QSVBFKHBpcGUsDQo+ID4gX0hTV19BVURfRElQX0VMRF9DVFJMX1NU X0EsIF9IU1dfQVVEX0RJUF9FTERfQ1RSTF9TVF9CKSBkaWZmIC0tDQo+IGdpdA0KPiA+IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYw0KPiA+IGluZGV4IDgxZGYyOWNhNDk0Ny4uMGJjMjcwMWI2YzljIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMNCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jDQo+ID4gQEAgLTU3LDYgKzU3 LDcwIEBADQo+ID4gICAqIHN0cnVjdCAmaTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzIEBh dWRpb19vcHMgaXMgY2FsbGVkIGZyb20NCj4gPiBpOTE1IGRyaXZlci4NCj4gPiAgICovDQo+ID4N Cj4gPiArLyogRFAgTi9NIHRhYmxlICovDQo+ID4gKyNkZWZpbmUgTENfNTQwTSA1NDAwMDANCj4g PiArI2RlZmluZSBMQ18yNzBNIDI3MDAwMA0KPiA+ICsjZGVmaW5lIExDXzE2Mk0gMTYyMDAwDQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgZHBfYXVkX25fbSB7DQo+ID4gKwlpbnQgc2FtcGxlX3JhdGU7DQo+ ID4gKwlpbnQgY2xvY2s7DQo+ID4gKwl1MTYgbjsNCj4gPiArCXUxNiBtOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcF9hdWRfbl9tIGRwX2F1ZF9uX21bXSA9IHsN Cj4gPiArCXsgMTkyMDAwLCBMQ181NDBNLCA1NjI1LCAxMDI0IH0sDQo+ID4gKwl7IDE3NjQwMCwg TENfNTQwTSwgOTM3NSwgMTU2OCB9LA0KPiA+ICsJeyA5NjAwMCwgTENfNTQwTSwgNTYyNSwgNTEy IH0sDQo+ID4gKwl7IDg4MjAwLCBMQ181NDBNLCA5Mzc1LCA3ODQgfSwNCj4gPiArCXsgNDgwMDAs IExDXzU0ME0sIDU2MjUsIDI1NiB9LA0KPiA+ICsJeyA0NDEwMCwgTENfNTQwTSwgOTM3NSwgMzky IH0sDQo+ID4gKwl7IDMyMDAwLCBMQ181NDBNLCAxNjg3NSwgNTEyIH0sDQo+ID4gKwl7IDE5MjAw MCwgTENfMjcwTSwgNTYyNSwgMjA0OCB9LA0KPiA+ICsJeyAxNzY0MDAsIExDXzI3ME0sIDkzNzUs IDMxMzYgfSwNCj4gPiArCXsgOTYwMDAsIExDXzI3ME0sIDU2MjUsIDEwMjQgfSwNCj4gPiArCXsg ODgyMDAsIExDXzI3ME0sIDkzNzUsIDE1NjggfSwNCj4gPiArCXsgNDgwMDAsIExDXzI3ME0sIDU2 MjUsIDUxMiB9LA0KPiA+ICsJeyA0NDEwMCwgTENfMjcwTSwgOTM3NSwgNzg0IH0sDQo+ID4gKwl7 IDMyMDAwLCBMQ18yNzBNLCAxNjg3NSwgMTAyNCB9LA0KPiA+ICsJeyAxOTIwMDAsIExDXzE2Mk0s IDMzNzUsIDIwNDggfSwNCj4gPiArCXsgMTc2NDAwLCBMQ18xNjJNLCA1NjI1LCAzMTM2IH0sDQo+ ID4gKwl7IDk2MDAwLCBMQ18xNjJNLCAzMzc1LCAxMDI0IH0sDQo+ID4gKwl7IDg4MjAwLCBMQ18x NjJNLCA1NjI1LCAxNTY4IH0sDQo+ID4gKwl7IDQ4MDAwLCBMQ18xNjJNLCAzMzc1LCA1MTIgfSwN Cj4gPiArCXsgNDQxMDAsIExDXzE2Mk0sIDU2MjUsIDc4NCB9LA0KPiA+ICsJeyAzMjAwMCwgTENf MTYyTSwgMTAxMjUsIDEwMjQgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHBfYXVkX25fbSAqDQo+ID4gK2F1ZGlvX2NvbmZpZ19kcF9nZXRfbl9tKHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQgcmF0ZSkgew0KPiA+ICsJaW50IGk7DQo+ID4gKw0K PiA+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHBfYXVkX25fbSk7IGkrKykgew0KPiA+ ICsJCWlmIChyYXRlID09IGRwX2F1ZF9uX21baV0uc2FtcGxlX3JhdGUgJiYNCj4gPiArCQkgICAg aW50ZWxfY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGRwX2F1ZF9uX21baV0uY2xvY2spDQo+ ID4gKwkJCXJldHVybiAmZHBfYXVkX25fbVtpXTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1 cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdfZHBf Z2V0X20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsIGludA0KPiA+ICtyYXRlKSB7DQo+ ID4gKwljb25zdCBzdHJ1Y3QgZHBfYXVkX25fbSAqbm0gPQ0KPiA+IGF1ZGlvX2NvbmZpZ19kcF9n ZXRfbl9tKGludGVsX2NydGMsDQo+ID4gK3JhdGUpOw0KPiA+ICsNCj4gPiArCXJldHVybiBubSA/ IG5tLT5tIDogMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdf ZHBfZ2V0X24oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsIGludA0KPiA+ICtyYXRlKSB7 DQo+ID4gKwljb25zdCBzdHJ1Y3QgZHBfYXVkX25fbSAqbm0gPQ0KPiA+IGF1ZGlvX2NvbmZpZ19k cF9nZXRfbl9tKGludGVsX2NydGMsDQo+ID4gK3JhdGUpOw0KPiA+ICsNCj4gPiArCXJldHVybiBu bSA/IG5tLT5uIDogMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCB7 DQo+ID4gIAlpbnQgY2xvY2s7DQo+ID4gIAl1MzIgY29uZmlnOw0KPiA+IEBAIC0yMjUsOCArMjg5 LDEwIEBAIGhzd19kcF9hdWRpb19jb25maWdfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjDQo+ID4g KmludGVsX2NydGMsIGVudW0gcG9ydCBwb3J0LA0KPiA+ICAJCQkgICBjb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkgIHsNCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYpOw0KPiA+ICsJ c3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2LQ0KPiA+ID5hdWRp b19jb21wb25lbnQ7DQo+ID4gKwlpbnQgcmF0ZSA9IGFjb21wID8gYWNvbXAtPmF1ZF9zYW1wbGVf cmF0ZVtwb3J0XSA6IDA7DQo+ID4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 DQo+ID4gLQl1MzIgdG1wOw0KPiA+ICsJdTMyIHRtcCwgbiwgbTsNCj4gPg0KPiA+ICAJdG1wID0g STkxNV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUpKTsNCj4gPiAgCXRtcCAmPSB+QVVEX0NPTkZJR19O X1ZBTFVFX0lOREVYOw0KPiA+IEBAIC0yMzQsNyArMzAwLDMwIEBAIGhzd19kcF9hdWRpb19jb25m aWdfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjDQo+ID4gKmludGVsX2NydGMsIGVudW0gcG9ydCBw b3J0LA0KPiA+ICAJdG1wICY9IH5BVURfQ09ORklHX05fUFJPR19FTkFCTEU7DQo+ID4gIAl0bXAg fD0gQVVEX0NPTkZJR19OX1ZBTFVFX0lOREVYOw0KPiA+DQo+ID4gKwlpZiAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzU0ME0gfHwNCj4gPiArCSAgICBpbnRlbF9jcnRjLT5j b25maWctPnBvcnRfY2xvY2sgPT0gTENfMjcwTSB8fA0KPiA+ICsJICAgIGludGVsX2NydGMtPmNv bmZpZy0+cG9ydF9jbG9jayA9PSBMQ18xNjJNKSB7DQo+ID4gKwkJbiA9IGF1ZGlvX2NvbmZpZ19k cF9nZXRfbihpbnRlbF9jcnRjLCByYXRlKTsNCj4gPiArCQlpZiAobiAhPSAwKSB7DQo+ID4gKwkJ CXRtcCAmPSB+QVVEX0NPTkZJR19OX01BU0s7DQo+ID4gKwkJCXRtcCB8PSBBVURfQ09ORklHX04o bik7DQo+ID4gKwkJCXRtcCB8PSBBVURfQ09ORklHX05fUFJPR19FTkFCTEU7DQo+ID4gKwkJfSBl bHNlIHsNCj4gPiArCQkJRFJNX0RFQlVHX0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcyBmb3Vu ZFxuIik7DQo+IA0KPiBDb3VsZCBzb21lIGNvbW1lbnRzIGJlIGFkZGVkIGhlcmUgd2h5IHdlIGRv bid0IHJldHVybiBpZiBubyB2YWxpZCBOIHZhbHVlDQo+IGlzIGZvdW5kPw0KDQpUaGlzIGlzIGJl Y2F1c2UgYWx0aG91Z2ggd2UgZG9uJ3QgbmVlZCBzZXQgTiB2YWx1ZSBoZXJlLCBidXQgdGhlcmUg YXJlIHNvbWUNCm90aGVyIGJpdHMgdG8gYmUgc2V0LiBTbyB5b3UgY2FuIHNlZSB3ZSBjYWxsIA0K STkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsNCkxhdGVyLiANCg0KPiBEbyB3ZSBz dGlsbCBuZWVkIHRvIHByb2dyYW0gd3JpdGUgdGhlIHJlZ2lzdGVyIHRvIGxldCBIVyBjYWxjdWxh dGUgTiBieSBpdHNlbGY/DQoNCklkZWFsbHksIGFsbCB0aGUgZnJlcXVlbmN5IHNob3VsZCBiZSBp biB0aGUgdGFibGUuIEJ1dCBpZiB0aGUgZnJlcXVlbmN5IGlzIG5vdA0KaW4gb3VyIHRhYmxlLCB3 ZSB3aWxsIGxldCBIVyBjYWxjdWxhdGUgTiBieSBpdHNlbGYuDQoNCj4gDQo+ID4gKwkJfQ0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiAgCUk5MTVfV1JJVEUoSFNXX0FVRF9DRkcocGlwZSksIHRtcCk7DQo+ IA0KPiBBbmQgaWYgbm8gdmFsaWQgTiB2YWx1ZSBpcyBmb3VuZCwgbmVlZCB3ZSBnbyBhaGVhZCB0 byBjaGVjayBNIHZhbHVlPw0KDQpJZiB0aGVyZSBpcyBubyB2YWxpZCBOIHZhbHVlLCBhdWRpb19j b25maWdfZHBfZ2V0X20oaW50ZWxfY3J0YywgcmF0ZSk7DQp3aWxsIGFsc28gcmV0dXJuIDAgYW5k IHNraXAgdGhlIG0gc2V0dGluZy4NCg0KUmVnYXJkcywNCkxpYmluDQoNCj4gDQo+ID4gKw0KPiA+ ICsJbSA9IGF1ZGlvX2NvbmZpZ19kcF9nZXRfbShpbnRlbF9jcnRjLCByYXRlKTsNCj4gPiArCWlm IChtKSB7DQo+ID4gKwkJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUp KTsNCj4gPiArCQl0bXAgJj0gfkFVRF9DT05GSUdfTV9NQVNLOw0KPiA+ICsJCXRtcCB8PSBtOw0K PiA+ICsJCXRtcCB8PSBBVURfTV9DVFNfTV9WQUxVRV9JTkRFWDsNCj4gPiArCQl0bXAgfD0gQVVE X01fQ1RTX01fUFJPR19FTkFCTEU7DQo+ID4gKwkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VO QUJMRShwaXBlKSwgdG1wKTsNCj4gPiArCX0NCj4gPiAgfQ0KPiANCj4gVGhhbmtzDQo+IE1lbmdk b25nDQo+IA0KPiA+ICBzdGF0aWMgdm9pZA0KPiA+IEBAIC0yNjcsNiArMzU2LDEyIEBAIGhzd19o ZG1pX2F1ZGlvX2NvbmZpZ191cGRhdGUoc3RydWN0IGludGVsX2NydGMNCj4gPiAqaW50ZWxfY3J0 YywgZW51bSBwb3J0IHBvcnQsDQo+ID4gIAl9DQo+ID4NCj4gPiAgCUk5MTVfV1JJVEUoSFNXX0FV RF9DRkcocGlwZSksIHRtcCk7DQo+ID4gKw0KPiA+ICsJdG1wID0gSTkxNV9SRUFEKEhTV19BVURf TV9DVFNfRU5BQkxFKHBpcGUpKTsNCj4gPiArCXRtcCAmPSB+QVVEX0NPTkZJR19NX01BU0s7DQo+ ID4gKwl0bXAgJj0gfkFVRF9NX0NUU19NX1ZBTFVFX0lOREVYOw0KPiA+ICsJdG1wIHw9IEFVRF9N X0NUU19NX1BST0dfRU5BQkxFOw0KPiA+ICsJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VOQUJM RShwaXBlKSwgdG1wKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gQEAgLTY4 Nyw3ICs3ODIsOCBAQCBzdGF0aWMgaW50DQo+ID4gaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19h dWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmtkZXYsIGludCBwb3J0LA0KPiA+ICAJLyogMS4gZ2V0 IHRoZSBwaXBlICovDQo+ID4gIAlpbnRlbF9lbmNvZGVyID0gZ2V0X3NhdmVkX2VuYyhkZXZfcHJp diwgcG9ydCwgcGlwZSk7DQo+ID4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwgIWludGVsX2VuY29k ZXItPmJhc2UuY3J0YyB8fA0KPiA+IC0JICAgIGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxf T1VUUFVUX0hETUkpIHsNCj4gPiArCSAgICAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9P VVRQVVRfSERNSSAmJg0KPiA+ICsJICAgICBpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09V VFBVVF9EUCkpIHsNCj4gPiAgCQlEUk1fREVCVUdfS01TKCJOb3QgdmFsaWQgZm9yIHBvcnQgJWNc biIsDQo+IHBvcnRfbmFtZShwb3J0KSk7DQo+ID4gIAkJZXJyID0gLUVOT0RFVjsNCj4gPiAgCQln b3RvIHVubG9jazsNCj4gPiAtLQ0KPiA+IDIuMS40DQo+ID4NCj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QNCj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdA0KPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK