From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Deucher, Alexander" Subject: RE: [PATCH v2] drm/amdgpu: Read vram width from integrated system info table Date: Mon, 3 Apr 2017 15:37:53 +0000 Message-ID: References: <20170403150107.13253-1-harry.wentland@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170403150107.13253-1-harry.wentland-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Wentland, Harry" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBhbWQtZ2Z4IFttYWlsdG86YW1k LWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmDQo+IE9mIEhhcnJ5 IFdlbnRsYW5kDQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMDMsIDIwMTcgMTE6MDEgQU0NCj4gVG86 IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IENjOiBXZW50bGFuZCwgSGFycnkNCj4g U3ViamVjdDogW1BBVENIIHYyXSBkcm0vYW1kZ3B1OiBSZWFkIHZyYW0gd2lkdGggZnJvbSBpbnRl Z3JhdGVkIHN5c3RlbQ0KPiBpbmZvIHRhYmxlDQo+IA0KPiBPbiBLQiwgS1YsIENaIHdlIHNob3Vs ZCByZWFkIHRoZSB2cmFtIHdpZHRoIGZyb20gaW50ZWdyYXRlZCBzeXN0ZW0NCj4gdGFibGUsIGlm IHdlIGNhbi4gVGhlIE5PT0ZDSEFOIGluIE1DX1NIQVJFRF9DSE1BUCBpcyBub3QgYWNjdXJhdGUu DQo+IA0KPiBXaXRoIHRoaXMgY2hhbmdlIHdlIGNhbiBlbmFibGUgdHdvIDRrIGRpc3BsYXlzIG9u IENaIGFnYWluLiBUaGlzIHVzZQ0KPiBjYXNlIHdhcyBicm9rZW4gc29tZXRpbWUgaW4gSmFudWFy eSB3aGVuIHdlIHN0YXJ0ZWQgbG9va2luZyBhdA0KPiB2cmFtX3dpZHRoIGZvciBiYW5kd2lkdGgg Y2FsY3VsYXRpb25zIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGlzIHZhbHVlLg0KPiANCj4gdjI6 DQo+ICAgUmV0dXJuIDAgaWYgaW50ZWdyYXRlZCBzeXN0ZW0gaW5mbyB0YWJsZSBpcyBub3QgYXZh aWxhYmxlLg0KPiANCj4gVGVzdGVkLWJ5OiBSb21hbiBMaSA8cm9tYW4ubGlAYW1kLmNvbT4NCj4g U2lnbmVkLW9mZi1ieTogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+DQoN ClJldmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+DQoN Cj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYyB8 IDI5ICsrKysrKysrKysNCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9t Ymlvcy5oIHwgIDIgKw0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyAg ICAgICAgfCA4NyArKysrKysrKysrKysrKystLS0tLQ0KPiAtLS0tLS0tLQ0KPiAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYyAgICAgICAgfCA4NyArKysrKysrKysrKysrKyst LS0tLQ0KPiAtLS0tLS0tLQ0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwg ODIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2F0b21iaW9zLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYXRvbWJpb3MuYw0KPiBpbmRleCBmNTJiMWJmM2QzZDkuLmFkNDMyOTkyMmY3OSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMNCj4g QEAgLTc1NCw2ICs3NTQsMzUgQEAgdW5pb24gaWdwX2luZm8gew0KPiAgCXN0cnVjdCBfQVRPTV9J TlRFR1JBVEVEX1NZU1RFTV9JTkZPX1YxXzkgaW5mb185Ow0KPiAgfTsNCj4gDQo+ICsvKg0KPiAr ICogUmV0dXJuIHZyYW0gd2lkdGggZnJvbSBpbnRlZ3JhdGVkIHN5c3RlbSBpbmZvIHRhYmxlLCBp ZiBhdmFpbGFibGUsDQo+ICsgKiBvciAwIGlmIG5vdC4NCj4gKyAqLw0KPiAraW50IGFtZGdwdV9h dG9tYmlvc19nZXRfdnJhbV93aWR0aChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gK3sN Cj4gKwlzdHJ1Y3QgYW1kZ3B1X21vZGVfaW5mbyAqbW9kZV9pbmZvID0gJmFkZXYtPm1vZGVfaW5m bzsNCj4gKwlpbnQgaW5kZXggPSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShEQVRBLCBJbnRlZ3Jh dGVkU3lzdGVtSW5mbyk7DQo+ICsJdTE2IGRhdGFfb2Zmc2V0LCBzaXplOw0KPiArCXVuaW9uIGln cF9pbmZvICppZ3BfaW5mbzsNCj4gKwl1OCBmcmV2LCBjcmV2Ow0KPiArDQo+ICsJLyogZ2V0IGFu eSBpZ3Agc3BlY2lmaWMgb3ZlcnJpZGVzICovDQo+ICsJaWYgKGFtZGdwdV9hdG9tX3BhcnNlX2Rh dGFfaGVhZGVyKG1vZGVfaW5mby0+YXRvbV9jb250ZXh0LA0KPiBpbmRleCwgJnNpemUsDQo+ICsJ CQkJICAgJmZyZXYsICZjcmV2LCAmZGF0YV9vZmZzZXQpKSB7DQo+ICsJCWlncF9pbmZvID0gKHVu aW9uIGlncF9pbmZvICopDQo+ICsJCQkobW9kZV9pbmZvLT5hdG9tX2NvbnRleHQtPmJpb3MgKyBk YXRhX29mZnNldCk7DQo+ICsJCXN3aXRjaCAoY3Jldikgew0KPiArCQljYXNlIDg6DQo+ICsJCWNh c2UgOToNCj4gKwkJCXJldHVybiBpZ3BfaW5mby0+aW5mb184LnVjVU1BQ2hhbm5lbE51bWJlciAq DQo+IDY0Ow0KPiArCQlkZWZhdWx0Og0KPiArCQkJcmV0dXJuIDA7DQo+ICsJCX0NCj4gKwl9DQo+ ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAgc3RhdGljIHZvaWQgYW1kZ3B1X2F0b21i aW9zX2dldF9pZ3Bfc3Nfb3ZlcnJpZGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlDQo+ICphZGV2LA0K PiAgCQkJCQkJIHN0cnVjdCBhbWRncHVfYXRvbV9zcyAqc3MsDQo+ICAJCQkJCQkgaW50IGlkKQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9z LmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuaA0KPiBp bmRleCA0ZTBmNDg4NDg3ZjMuLjM4ZDBmZTMyZTVjZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmgNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmgNCj4gQEAgLTE0OCw2ICsxNDgsOCBAQCBp bnQgYW1kZ3B1X2F0b21iaW9zX2dldF9jbG9ja19pbmZvKHN0cnVjdA0KPiBhbWRncHVfZGV2aWNl ICphZGV2KTsNCj4gDQo+ICBpbnQgYW1kZ3B1X2F0b21iaW9zX2dldF9nZnhfaW5mbyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldik7DQo+IA0KPiAraW50IGFtZGdwdV9hdG9tYmlvc19nZXRfdnJh bV93aWR0aChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+ICsNCj4gIGJvb2wgYW1kZ3B1 X2F0b21iaW9zX2dldF9hc2ljX3NzX2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ ICAJCQkJICAgICAgc3RydWN0IGFtZGdwdV9hdG9tX3NzICpzcywNCj4gIAkJCQkgICAgICBpbnQg aWQsIHUzMiBjbG9jayk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nbWNfdjdfMC5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYw0K PiBpbmRleCAwYzBhNjAxNWNjYTUuLjc4NjQzYTFiYWE1YyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nbWNfdjdfMC5jDQo+IEBAIC0zNyw2ICszNyw4IEBADQo+ICAjaW5jbHVkZSAi b3NzL29zc18yXzBfZC5oIg0KPiAgI2luY2x1ZGUgIm9zcy9vc3NfMl8wX3NoX21hc2suaCINCj4g DQo+ICsjaW5jbHVkZSAiYW1kZ3B1X2F0b21iaW9zLmgiDQo+ICsNCj4gIHN0YXRpYyB2b2lkIGdt Y192N18wX3NldF9nYXJ0X2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsNCj4gIHN0 YXRpYyB2b2lkIGdtY192N18wX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpOw0KPiAgc3RhdGljIGludCBnbWNfdjdfMF93YWl0X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSk7 DQo+IEBAIC0zMjUsNDggKzMyNyw1MSBAQCBzdGF0aWMgdm9pZCBnbWNfdjdfMF9tY19wcm9ncmFt KHN0cnVjdA0KPiBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAgICovDQo+ICBzdGF0aWMgaW50IGdt Y192N18wX21jX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICB7DQo+IC0JdTMy IHRtcDsNCj4gLQlpbnQgY2hhbnNpemUsIG51bWNoYW47DQo+IC0NCj4gLQkvKiBHZXQgVlJBTSBp bmZvcm1hdGlvbnMgKi8NCj4gLQl0bXAgPSBSUkVHMzIobW1NQ19BUkJfUkFNQ0ZHKTsNCj4gLQlp ZiAoUkVHX0dFVF9GSUVMRCh0bXAsIE1DX0FSQl9SQU1DRkcsIENIQU5TSVpFKSkgew0KPiAtCQlj aGFuc2l6ZSA9IDY0Ow0KPiAtCX0gZWxzZSB7DQo+IC0JCWNoYW5zaXplID0gMzI7DQo+IC0JfQ0K PiAtCXRtcCA9IFJSRUczMihtbU1DX1NIQVJFRF9DSE1BUCk7DQo+IC0Jc3dpdGNoIChSRUdfR0VU X0ZJRUxEKHRtcCwgTUNfU0hBUkVEX0NITUFQLCBOT09GQ0hBTikpIHsNCj4gLQljYXNlIDA6DQo+ IC0JZGVmYXVsdDoNCj4gLQkJbnVtY2hhbiA9IDE7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgMToN Cj4gLQkJbnVtY2hhbiA9IDI7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgMjoNCj4gLQkJbnVtY2hh biA9IDQ7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgMzoNCj4gLQkJbnVtY2hhbiA9IDg7DQo+IC0J CWJyZWFrOw0KPiAtCWNhc2UgNDoNCj4gLQkJbnVtY2hhbiA9IDM7DQo+IC0JCWJyZWFrOw0KPiAt CWNhc2UgNToNCj4gLQkJbnVtY2hhbiA9IDY7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgNjoNCj4g LQkJbnVtY2hhbiA9IDEwOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIDc6DQo+IC0JCW51bWNoYW4g PSAxMjsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSA4Og0KPiAtCQludW1jaGFuID0gMTY7DQo+IC0J CWJyZWFrOw0KPiArCWFkZXYtPm1jLnZyYW1fd2lkdGggPSBhbWRncHVfYXRvbWJpb3NfZ2V0X3Zy YW1fd2lkdGgoYWRldik7DQo+ICsJaWYgKCFhZGV2LT5tYy52cmFtX3dpZHRoKSB7DQo+ICsJCXUz MiB0bXA7DQo+ICsJCWludCBjaGFuc2l6ZSwgbnVtY2hhbjsNCj4gKw0KPiArCQkvKiBHZXQgVlJB TSBpbmZvcm1hdGlvbnMgKi8NCj4gKwkJdG1wID0gUlJFRzMyKG1tTUNfQVJCX1JBTUNGRyk7DQo+ ICsJCWlmIChSRUdfR0VUX0ZJRUxEKHRtcCwgTUNfQVJCX1JBTUNGRywgQ0hBTlNJWkUpKSB7DQo+ ICsJCQljaGFuc2l6ZSA9IDY0Ow0KPiArCQl9IGVsc2Ugew0KPiArCQkJY2hhbnNpemUgPSAzMjsN Cj4gKwkJfQ0KPiArCQl0bXAgPSBSUkVHMzIobW1NQ19TSEFSRURfQ0hNQVApOw0KPiArCQlzd2l0 Y2ggKFJFR19HRVRfRklFTEQodG1wLCBNQ19TSEFSRURfQ0hNQVAsDQo+IE5PT0ZDSEFOKSkgew0K PiArCQljYXNlIDA6DQo+ICsJCWRlZmF1bHQ6DQo+ICsJCQludW1jaGFuID0gMTsNCj4gKwkJCWJy ZWFrOw0KPiArCQljYXNlIDE6DQo+ICsJCQludW1jaGFuID0gMjsNCj4gKwkJCWJyZWFrOw0KPiAr CQljYXNlIDI6DQo+ICsJCQludW1jaGFuID0gNDsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIDM6 DQo+ICsJCQludW1jaGFuID0gODsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIDQ6DQo+ICsJCQlu dW1jaGFuID0gMzsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIDU6DQo+ICsJCQludW1jaGFuID0g NjsNCj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIDY6DQo+ICsJCQludW1jaGFuID0gMTA7DQo+ICsJ CQlicmVhazsNCj4gKwkJY2FzZSA3Og0KPiArCQkJbnVtY2hhbiA9IDEyOw0KPiArCQkJYnJlYWs7 DQo+ICsJCWNhc2UgODoNCj4gKwkJCW51bWNoYW4gPSAxNjsNCj4gKwkJCWJyZWFrOw0KPiArCQl9 DQo+ICsJCWFkZXYtPm1jLnZyYW1fd2lkdGggPSBudW1jaGFuICogY2hhbnNpemU7DQo+ICAJfQ0K PiAtCWFkZXYtPm1jLnZyYW1fd2lkdGggPSBudW1jaGFuICogY2hhbnNpemU7DQo+ICAJLyogQ291 bGQgYXBlciBzaXplIHJlcG9ydCAwID8gKi8NCj4gIAlhZGV2LT5tYy5hcGVyX2Jhc2UgPSBwY2lf cmVzb3VyY2Vfc3RhcnQoYWRldi0+cGRldiwgMCk7DQo+ICAJYWRldi0+bWMuYXBlcl9zaXplID0g cGNpX3Jlc291cmNlX2xlbihhZGV2LT5wZGV2LCAwKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nbWNfdjhfMC5jDQo+IGluZGV4IGQxOWQxYzVlMjg0Ny4uNDJiMmYzNTdhNzk5IDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMNCj4gQEAgLTM4LDYgKzM4LDgg QEANCj4gICNpbmNsdWRlICJ2aWQuaCINCj4gICNpbmNsdWRlICJ2aS5oIg0KPiANCj4gKyNpbmNs dWRlICJhbWRncHVfYXRvbWJpb3MuaCINCj4gKw0KPiANCj4gIHN0YXRpYyB2b2lkIGdtY192OF8w X3NldF9nYXJ0X2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsNCj4gIHN0YXRpYyB2 b2lkIGdtY192OF8wX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOw0K PiBAQCAtNDg3LDQ4ICs0ODksNTEgQEAgc3RhdGljIHZvaWQgZ21jX3Y4XzBfbWNfcHJvZ3JhbShz dHJ1Y3QNCj4gYW1kZ3B1X2RldmljZSAqYWRldikNCj4gICAqLw0KPiAgc3RhdGljIGludCBnbWNf djhfMF9tY19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAgew0KPiAtCXUzMiB0 bXA7DQo+IC0JaW50IGNoYW5zaXplLCBudW1jaGFuOw0KPiAtDQo+IC0JLyogR2V0IFZSQU0gaW5m b3JtYXRpb25zICovDQo+IC0JdG1wID0gUlJFRzMyKG1tTUNfQVJCX1JBTUNGRyk7DQo+IC0JaWYg KFJFR19HRVRfRklFTEQodG1wLCBNQ19BUkJfUkFNQ0ZHLCBDSEFOU0laRSkpIHsNCj4gLQkJY2hh bnNpemUgPSA2NDsNCj4gLQl9IGVsc2Ugew0KPiAtCQljaGFuc2l6ZSA9IDMyOw0KPiAtCX0NCj4g LQl0bXAgPSBSUkVHMzIobW1NQ19TSEFSRURfQ0hNQVApOw0KPiAtCXN3aXRjaCAoUkVHX0dFVF9G SUVMRCh0bXAsIE1DX1NIQVJFRF9DSE1BUCwgTk9PRkNIQU4pKSB7DQo+IC0JY2FzZSAwOg0KPiAt CWRlZmF1bHQ6DQo+IC0JCW51bWNoYW4gPSAxOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIDE6DQo+ IC0JCW51bWNoYW4gPSAyOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIDI6DQo+IC0JCW51bWNoYW4g PSA0Ow0KPiAtCQlicmVhazsNCj4gLQljYXNlIDM6DQo+IC0JCW51bWNoYW4gPSA4Ow0KPiAtCQli cmVhazsNCj4gLQljYXNlIDQ6DQo+IC0JCW51bWNoYW4gPSAzOw0KPiAtCQlicmVhazsNCj4gLQlj YXNlIDU6DQo+IC0JCW51bWNoYW4gPSA2Ow0KPiAtCQlicmVhazsNCj4gLQljYXNlIDY6DQo+IC0J CW51bWNoYW4gPSAxMDsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSA3Og0KPiAtCQludW1jaGFuID0g MTI7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgODoNCj4gLQkJbnVtY2hhbiA9IDE2Ow0KPiAtCQli cmVhazsNCj4gKwlhZGV2LT5tYy52cmFtX3dpZHRoID0gYW1kZ3B1X2F0b21iaW9zX2dldF92cmFt X3dpZHRoKGFkZXYpOw0KPiArCWlmICghYWRldi0+bWMudnJhbV93aWR0aCkgew0KPiArCQl1MzIg dG1wOw0KPiArCQlpbnQgY2hhbnNpemUsIG51bWNoYW47DQo+ICsNCj4gKwkJLyogR2V0IFZSQU0g aW5mb3JtYXRpb25zICovDQo+ICsJCXRtcCA9IFJSRUczMihtbU1DX0FSQl9SQU1DRkcpOw0KPiAr CQlpZiAoUkVHX0dFVF9GSUVMRCh0bXAsIE1DX0FSQl9SQU1DRkcsIENIQU5TSVpFKSkgew0KPiAr CQkJY2hhbnNpemUgPSA2NDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCWNoYW5zaXplID0gMzI7DQo+ ICsJCX0NCj4gKwkJdG1wID0gUlJFRzMyKG1tTUNfU0hBUkVEX0NITUFQKTsNCj4gKwkJc3dpdGNo IChSRUdfR0VUX0ZJRUxEKHRtcCwgTUNfU0hBUkVEX0NITUFQLA0KPiBOT09GQ0hBTikpIHsNCj4g KwkJY2FzZSAwOg0KPiArCQlkZWZhdWx0Og0KPiArCQkJbnVtY2hhbiA9IDE7DQo+ICsJCQlicmVh azsNCj4gKwkJY2FzZSAxOg0KPiArCQkJbnVtY2hhbiA9IDI7DQo+ICsJCQlicmVhazsNCj4gKwkJ Y2FzZSAyOg0KPiArCQkJbnVtY2hhbiA9IDQ7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSAzOg0K PiArCQkJbnVtY2hhbiA9IDg7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSA0Og0KPiArCQkJbnVt Y2hhbiA9IDM7DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSA1Og0KPiArCQkJbnVtY2hhbiA9IDY7 DQo+ICsJCQlicmVhazsNCj4gKwkJY2FzZSA2Og0KPiArCQkJbnVtY2hhbiA9IDEwOw0KPiArCQkJ YnJlYWs7DQo+ICsJCWNhc2UgNzoNCj4gKwkJCW51bWNoYW4gPSAxMjsNCj4gKwkJCWJyZWFrOw0K PiArCQljYXNlIDg6DQo+ICsJCQludW1jaGFuID0gMTY7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0K PiArCQlhZGV2LT5tYy52cmFtX3dpZHRoID0gbnVtY2hhbiAqIGNoYW5zaXplOw0KPiAgCX0NCj4g LQlhZGV2LT5tYy52cmFtX3dpZHRoID0gbnVtY2hhbiAqIGNoYW5zaXplOw0KPiAgCS8qIENvdWxk IGFwZXIgc2l6ZSByZXBvcnQgMCA/ICovDQo+ICAJYWRldi0+bWMuYXBlcl9iYXNlID0gcGNpX3Jl c291cmNlX3N0YXJ0KGFkZXYtPnBkZXYsIDApOw0KPiAgCWFkZXYtPm1jLmFwZXJfc2l6ZSA9IHBj aV9yZXNvdXJjZV9sZW4oYWRldi0+cGRldiwgMCk7DQo+IC0tDQo+IDIuMTEuMA0KPiANCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gYW1kLWdmeCBt YWlsaW5nIGxpc3QNCj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK