From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH 2/3] drm/amdgpu: allocate gart memory when it's required (v2) Date: Wed, 27 Jun 2018 09:42:15 +0800 Message-ID: <5B32EB77.7000906@amd.com> References: <1530002116-7019-1-git-send-email-Jerry.Zhang@amd.com> <1530002116-7019-2-git-send-email-Jerry.Zhang@amd.com> <1d4546ba-c3f3-c512-3d87-31ed34eb3896@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1d4546ba-c3f3-c512-3d87-31ed34eb3896-5C7GfCeVMHo@public.gmane.org> 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: Felix Kuehling , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: michel.daenzer-5C7GfCeVMHo@public.gmane.org, christian.koenig-5C7GfCeVMHo@public.gmane.org T24gMDYvMjYvMjAxOCAxMTo1MyBQTSwgRmVsaXggS3VlaGxpbmcgd3JvdGU6Cj4gQ29tbWVudHMg aW5saW5lIFtGS10KPgo+Cj4gT24gMjAxOC0wNi0yNiAwNDozNSBBTSwgSnVud2VpIFpoYW5nIHdy b3RlOgo+PiBJbnN0ZWFkIG9mIGNhbGxpbmcgZ2FydCBtZW1vcnkgb24gZXZlcnkgYm8gcGluLAo+ PiBhbGxvY2F0ZXMgaXQgb24gZGVtYW5kCj4+Cj4+IHYyOiBmaXggZXJyb3IgaGFuZGxpbmcKPj4K Pj4gU2lnbmVkLW9mZi1ieTogSnVud2VpIFpoYW5nIDxKZXJyeS5aaGFuZ0BhbWQuY29tPgo+PiAt LS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMgICAgICAg IHwgIDYgKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtm ZF9ncHV2bS5jICB8ICA2ICsrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9iZW5jaG1hcmsuYyAgICAgfCAxNCArKysrKysrKysrKystLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgICAgICAgfCAgNiArKysrKysKPj4gICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYyAgICAgICAgICAgIHwgIDggKysr KysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgICAg ICAgIHwgMTUgKysrKysrKysrLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3Rlc3QuYyAgICAgICAgICB8ICA1ICsrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8IDEzICsrKysrKysrKysrLS0KPj4gICA4 IGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jCj4+IGluZGV4IDk4ZTNi ZjguLmUzZWQwOGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9hbWRrZmQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf YW1ka2ZkLmMKPj4gQEAgLTI4MCw2ICsyODAsMTIgQEAgaW50IGFsbG9jX2d0dF9tZW0oc3RydWN0 IGtnZF9kZXYgKmtnZCwgc2l6ZV90IHNpemUsCj4+ICAgCQlnb3RvIGFsbG9jYXRlX21lbV9waW5f Ym9fZmFpbGVkOwo+PiAgIAl9Cj4+Cj4+ICsJciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmYm8t PnRibyk7Cj4+ICsJaWYgKHIpIHsKPj4gKwkJZGV2X2VycihhZGV2LT5kZXYsICIlcCBiaW5kIGZh aWxlZFxuIiwgYm8pOwo+PiArCQlnb3RvIGFsbG9jYXRlX21lbV9rbWFwX2JvX2ZhaWxlZDsKPj4g Kwl9Cj4+ICsKPj4gICAJciA9IGFtZGdwdV9ib19rbWFwKGJvLCAmY3B1X3B0cl90bXApOwo+PiAg IAlpZiAocikgewo+PiAgIAkJZGV2X2VycihhZGV2LT5kZXYsCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPj4gaW5kZXggMDc5YWY4YS4u MmMwYmM3YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2FtZGtmZF9ncHV2bS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9hbWRrZmRfZ3B1dm0uYwo+PiBAQCAtMTU5Myw2ICsxNTkzLDEyIEBAIGludCBhbWRncHVfYW1k a2ZkX2dwdXZtX21hcF9ndHRfYm9fdG9fa2VybmVsKHN0cnVjdCBrZ2RfZGV2ICprZ2QsCj4+ICAg CQlnb3RvIHBpbl9mYWlsZWQ7Cj4+ICAgCX0KPj4KPj4gKwlyZXQgPSBhbWRncHVfdHRtX2FsbG9j X2dhcnQoJmJvLT50Ym8pOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJcHJfZXJyKCIlcCBiaW5kIGZh aWxlZFxuIiwgYm8pOwo+PiArCQlnb3RvIGttYXBfZmFpbGVkOwo+PiArCX0KPj4gKwo+Cj4gW0ZL XSBJIHRoaW5rIHRoaW5rIGluIHRoaXMgY2FzZSB3ZSBkb24ndCBuZWVkIHRoZSBHQVJUIG1hcHBp bmcuIFRoaXMKPiBmdW5jdGlvbiBkb2Vzbid0IHF1ZXJ5IHRoZSBHUFUgYWRkcmVzcyBvZiB0aGUg cGlubmVkIGJ1ZmZlci4gVGhlIG9ubHkKPiByZWFzb24gd2UgcGluIHRoZSBCTyBoZXJlIGlzIHRv IGtlZXAgdGhlIGtlcm5lbCBtYXBwaW5nIHZhbGlkLgoKRmVsaXgsIHRoYW5rcyBmb3IgeW91ciBj b21tZW50cy4KQ2hlY2sgdGhlIGNvZGUgYWdhaW4sIGl0IHNlZW1zIHRvIGdldCBHVFQgYm8gZm9y IGtlcm5lbCBleGVjdXRpb24gZnJvbSB1c2VyIGV2ZW50IG9yIHByb2Nlc3MuCmlmIHNvLCB0aGF0 J3MgcmVhbGx5IG5vdCBuZWVkZWQuCkdvaW5nIHRvIHJlbW92ZSBpdCBpbiB2My4KCkJUVywga2Zk MmtnZF9jYWxscyBrZmQya2dkIGxvb2tzIGR1cGxpY2F0ZWQgaW4gYW1ka2ZkX2dmeF92Ny84Lzku Ywp3ZSBtYXkgaW5pdGlhbGl6ZSBpdCBpbiBhIGNvbW1vbiBwbGFjZShhdCBsZWFzdCBmb3IgY29t bW9uIG1lbWJlcnMpLgpJZiBpdCBoYXMgb3RoZXIgcHVycG9zZSwgcGxlYXNlIGlnbm9yZSB0aGF0 LgoKSmVycnkKCj4KPiBSZWdhcmRzLAo+ICAgIEZlbGl4Cj4KPj4gICAJcmV0ID0gYW1kZ3B1X2Jv X2ttYXAoYm8sIGtwdHIpOwo+PiAgIAlpZiAocmV0KSB7Cj4+ICAgCQlwcl9lcnIoIkZhaWxlZCB0 byBtYXAgYm8gdG8ga2VybmVsLiByZXQgJWRcbiIsIHJldCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYmVuY2htYXJrLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYmVuY2htYXJrLmMKPj4gaW5kZXggY2I4OGQ3ZS4uMzA3OWVh OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JlbmNo bWFyay5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9iZW5jaG1h cmsuYwo+PiBAQCAtOTYsMTEgKzk2LDE2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9iZW5jaG1hcmtf bW92ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgc2l6ZSwKPj4gICAJaWYg KHVubGlrZWx5KHIgIT0gMCkpCj4+ICAgCQlnb3RvIG91dF9jbGVhbnVwOwo+PiAgIAlyID0gYW1k Z3B1X2JvX3Bpbihzb2JqLCBzZG9tYWluKTsKPj4gLQlzYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zm c2V0KHNvYmopOwo+PiArCWlmIChyKSB7Cj4+ICsJCWFtZGdwdV9ib191bnJlc2VydmUoc29iaik7 Cj4+ICsJCWdvdG8gb3V0X2NsZWFudXA7Cj4+ICsJfQo+PiArCXIgPSBhbWRncHVfdHRtX2FsbG9j X2dhcnQoJnNvYmotPnRibyk7Cj4+ICAgCWFtZGdwdV9ib191bnJlc2VydmUoc29iaik7Cj4+ICAg CWlmIChyKSB7Cj4+ICAgCQlnb3RvIG91dF9jbGVhbnVwOwo+PiAgIAl9Cj4+ICsJc2FkZHIgPSBh bWRncHVfYm9fZ3B1X29mZnNldChzb2JqKTsKPj4gICAJYnAuZG9tYWluID0gZGRvbWFpbjsKPj4g ICAJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwgJmJwLCAmZG9iaik7Cj4+ICAgCWlmIChyKSB7 Cj4+IEBAIC0xMTAsMTEgKzExNSwxNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfYmVuY2htYXJrX21v dmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHNpemUsCj4+ICAgCWlmICh1 bmxpa2VseShyICE9IDApKQo+PiAgIAkJZ290byBvdXRfY2xlYW51cDsKPj4gICAJciA9IGFtZGdw dV9ib19waW4oZG9iaiwgZGRvbWFpbik7Cj4+IC0JZGFkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNl dChkb2JqKTsKPj4gKwlpZiAocikgewo+PiArCQlhbWRncHVfYm9fdW5yZXNlcnZlKHNvYmopOwo+ PiArCQlnb3RvIG91dF9jbGVhbnVwOwo+PiArCX0KPj4gKwlyID0gYW1kZ3B1X3R0bV9hbGxvY19n YXJ0KCZkb2JqLT50Ym8pOwo+PiAgIAlhbWRncHVfYm9fdW5yZXNlcnZlKGRvYmopOwo+PiAgIAlp ZiAocikgewo+PiAgIAkJZ290byBvdXRfY2xlYW51cDsKPj4gICAJfQo+PiArCWRhZGRyID0gYW1k Z3B1X2JvX2dwdV9vZmZzZXQoZG9iaik7Cj4+Cj4+ICAgCWlmIChhZGV2LT5tbWFuLmJ1ZmZlcl9m dW5jcykgewo+PiAgIAkJdGltZSA9IGFtZGdwdV9iZW5jaG1hcmtfZG9fbW92ZShhZGV2LCBzaXpl LCBzYWRkciwgZGFkZHIsIG4pOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kaXNwbGF5LmMKPj4gaW5kZXggMDM2YjZmNy4uN2Q2YTM2YiAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCj4+IEBAIC0xOTQsNiArMTk0LDEy IEBAIGludCBhbWRncHVfZGlzcGxheV9jcnRjX3BhZ2VfZmxpcF90YXJnZXQoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+PiAgIAkJZ290byB1bnJlc2VydmU7Cj4+ICAgCX0KPj4KPj4gKwlyID0gYW1k Z3B1X3R0bV9hbGxvY19nYXJ0KCZuZXdfYWJvLT50Ym8pOwo+PiArCWlmICh1bmxpa2VseShyICE9 IDApKSB7Cj4+ICsJCURSTV9FUlJPUigiJXAgYmluZCBmYWlsZWRcbiIsIG5ld19hYm8pOwo+PiAr CQlnb3RvIHVucGluOwo+PiArCX0KPj4gKwo+PiAgIAlyID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dl dF9mZW5jZXNfcmN1KG5ld19hYm8tPnRiby5yZXN2LCAmd29yay0+ZXhjbCwKPj4gICAJCQkJCSAg ICAgICZ3b3JrLT5zaGFyZWRfY291bnQsCj4+ICAgCQkJCQkgICAgICAmd29yay0+c2hhcmVkKTsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9mYi5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKPj4gaW5kZXggNDYyYjdhMS4u Y2Q2OGEyZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2ZiLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKPj4g QEAgLTE3Myw2ICsxNzMsMTQgQEAgc3RhdGljIGludCBhbWRncHVmYl9jcmVhdGVfcGlubmVkX29i amVjdChzdHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJkZXYsCj4+ICAgCQlhbWRncHVfYm9fdW5yZXNl cnZlKGFibyk7Cj4+ICAgCQlnb3RvIG91dF91bnJlZjsKPj4gICAJfQo+PiArCj4+ICsJcmV0ID0g YW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZhYm8tPnRibyk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlh bWRncHVfYm9fdW5yZXNlcnZlKGFibyk7Cj4+ICsJCWRldl9lcnIoYWRldi0+ZGV2LCAiJXAgYmlu ZCBmYWlsZWRcbiIsIGFibyk7Cj4+ICsJCWdvdG8gb3V0X3VucmVmOwo+PiArCX0KPj4gKwo+PiAg IAlyZXQgPSBhbWRncHVfYm9fa21hcChhYm8sIE5VTEwpOwo+PiAgIAlhbWRncHVfYm9fdW5yZXNl cnZlKGFibyk7Cj4+ICAgCWlmIChyZXQpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9vYmplY3QuYwo+PiBpbmRleCA3OWNkYmYxLi43ZjdjMjIxIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+IEBAIC0yNTcsNiArMjU3 LDEzIEBAIGludCBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAo+PiAgIAkJZGV2X2VycihhZGV2LT5kZXYsICIoJWQpIGtlcm5lbCBibyBwaW4gZmFp bGVkXG4iLCByKTsKPj4gICAJCWdvdG8gZXJyb3JfdW5yZXNlcnZlOwo+PiAgIAl9Cj4+ICsKPj4g KwlyID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCYoKmJvX3B0ciktPnRibyk7Cj4+ICsJaWYgKHIp IHsKPj4gKwkJZGV2X2VycihhZGV2LT5kZXYsICIlcCBiaW5kIGZhaWxlZFxuIiwgKmJvX3B0cik7 Cj4+ICsJCWdvdG8gZXJyb3JfdW5waW47Cj4+ICsJfQo+PiArCj4+ICAgCWlmIChncHVfYWRkcikK Pj4gICAJCSpncHVfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KCpib19wdHIpOwo+Pgo+PiBA QCAtMjcwLDYgKzI3Nyw4IEBAIGludCBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAo+Pgo+PiAgIAlyZXR1cm4gMDsKPj4KPj4gK2Vycm9yX3VucGlu Ogo+PiArCWFtZGdwdV9ib191bnBpbigqYm9fcHRyKTsKPj4gICBlcnJvcl91bnJlc2VydmU6Cj4+ ICAgCWFtZGdwdV9ib191bnJlc2VydmUoKmJvX3B0cik7Cj4+Cj4+IEBAIC05MDMsMTIgKzkxMiw2 IEBAIGludCBhbWRncHVfYm9fcGluX3Jlc3RyaWN0ZWQoc3RydWN0IGFtZGdwdV9ibyAqYm8sIHUz MiBkb21haW4sCj4+ICAgCQlnb3RvIGVycm9yOwo+PiAgIAl9Cj4+Cj4+IC0JciA9IGFtZGdwdV90 dG1fYWxsb2NfZ2FydCgmYm8tPnRibyk7Cj4+IC0JaWYgKHVubGlrZWx5KHIpKSB7Cj4+IC0JCWRl dl9lcnIoYWRldi0+ZGV2LCAiJXAgYmluZCBmYWlsZWRcbiIsIGJvKTsKPj4gLQkJZ290byBlcnJv cjsKPj4gLQl9Cj4+IC0KPj4gICAJYm8tPnBpbl9jb3VudCA9IDE7Cj4+Cj4+ICAgCWRvbWFpbiA9 IGFtZGdwdV9tZW1fdHlwZV90b19kb21haW4oYm8tPnRiby5tZW0ubWVtX3R5cGUpOwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Rlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90ZXN0LmMKPj4gaW5kZXggNjIyYWZmYy4uZDZl ZWVhMSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Rl c3QuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdGVzdC5jCj4+ IEBAIC0xMDIsNiArMTAyLDExIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kb190ZXN0X21vdmVzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiAgIAkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHBp biBHVFQgb2JqZWN0ICVkXG4iLCBpKTsKPj4gICAJCQlnb3RvIG91dF9sY2xlYW5fdW5yZXM7Cj4+ ICAgCQl9Cj4+ICsJCXIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmd0dF9vYmpbaV0tPnRibyk7 Cj4+ICsJCWlmIChyKSB7Cj4+ICsJCQlEUk1fRVJST1IoIiVwIGJpbmQgZmFpbGVkXG4iLCBndHRf b2JqW2ldKTsKPj4gKwkJCWdvdG8gb3V0X2xjbGVhbl91bnBpbjsKPj4gKwkJfQo+PiAgIAkJZ2Fy dF9hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoZ3R0X29ialtpXSk7Cj4+Cj4+ICAgCQlyID0g YW1kZ3B1X2JvX2ttYXAoZ3R0X29ialtpXSwgJmd0dF9tYXApOwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4gaW5kZXggMzE2NTJj MWUuLmQ0MzM0MjggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+PiBAQCAtMzExMCwxMyArMzExMCwyMiBAQCBzdGF0aWMg aW50IGRtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ PiAgIAkJZG9tYWluID0gQU1ER1BVX0dFTV9ET01BSU5fVlJBTTsKPj4KPj4gICAJciA9IGFtZGdw dV9ib19waW4ocmJvLCBkb21haW4pOwo+PiAtCWFtZGdwdV9ib191bnJlc2VydmUocmJvKTsKPj4g LQo+PiAgIAlpZiAodW5saWtlbHkociAhPSAwKSkgewo+PiAgIAkJaWYgKHIgIT0gLUVSRVNUQVJU U1lTKQo+PiAgIAkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHBpbiBmcmFtZWJ1ZmZlciB3aXRoIGVy cm9yICVkXG4iLCByKTsKPj4gKwkJYW1kZ3B1X2JvX3VucmVzZXJ2ZShyYm8pOwo+PiArCQlyZXR1 cm4gcjsKPj4gKwl9Cj4+ICsKPj4gKwlyID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZyYm8tPnRi byk7Cj4+ICsJaWYgKHVubGlrZWx5KHIgIT0gMCkpIHsKPj4gKwkJYW1kZ3B1X2JvX3VucGluKHJi byk7Cj4+ICsJCWFtZGdwdV9ib191bnJlc2VydmUocmJvKTsKPj4gKwkJRFJNX0VSUk9SKCIlcCBi aW5kIGZhaWxlZFxuIiwgcmJvKTsKPj4gICAJCXJldHVybiByOwo+PiAgIAl9Cj4+ICsJYW1kZ3B1 X2JvX3VucmVzZXJ2ZShyYm8pOwo+PiArCj4+ICAgCWFmYi0+YWRkcmVzcyA9IGFtZGdwdV9ib19n cHVfb2Zmc2V0KHJibyk7Cj4+Cj4+ICAgCWFtZGdwdV9ib19yZWYocmJvKTsKPgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK