From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 2/8] drm/amdgpu: fix sdma v4 startup under SRIOV Date: Tue, 9 Oct 2018 17:17:09 +0800 Message-ID: <20181009091708.GB8763@hr-amur2> References: <20181008133521.3237-1-christian.koenig@amd.com> <20181008133521.3237-2-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181008133521.3237-2-christian.koenig-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: Christian =?iso-8859-1?Q?K=F6nig?= , Monk Liu , Frank Min Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gTW9uLCBPY3QgMDgsIDIwMTggYXQgMDM6MzU6MTVQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBVbmRlciBTUklPViB3ZSB3ZXJlIGVuYWJsaW5nIHRoZSByaW5nIGJ1ZmZlciBi ZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvc2RtYV92NF8wLmMgfCAyMzQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMTE4IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0 XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jCj4gaW5kZXggYzIw ZDQxM2YyNzdjLi41ZWNmNmM5MjUyYzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvc2RtYV92NF8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9z ZG1hX3Y0XzAuYwo+IEBAIC02NzMsMTMgKzY3MywxNCBAQCBzdGF0aWMgdm9pZCBzZG1hX3Y0XzBf ZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKPiAgICogc2Rt YV92NF8wX2dmeF9yZXN1bWUgLSBzZXR1cCBhbmQgc3RhcnQgdGhlIGFzeW5jIGRtYSBlbmdpbmVz Cj4gICAqCj4gICAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPiArICogQGk6IGluc3Rh bmNlIHRvIHJlc3VtZQo+ICAgKgo+ICAgKiBTZXQgdXAgdGhlIGdmeCBETUEgcmluZyBidWZmZXJz IGFuZCBlbmFibGUgdGhlbSAoVkVHQTEwKS4KPiAgICogUmV0dXJucyAwIGZvciBzdWNjZXNzLCBl cnJvciBmb3IgZmFpbHVyZS4KPiAgICovCj4gLXN0YXRpYyBpbnQgc2RtYV92NF8wX2dmeF9yZXN1 bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gK3N0YXRpYyB2b2lkIHNkbWFfdjRfMF9n ZnhfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBpbnQgaSkKPiAg ewo+IC0Jc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwo+ICsJc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nID0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucmluZzsKPiAgCXUzMiByYl9jbnRsLCBpYl9j bnRsLCB3cHRyX3BvbGxfY250bDsKPiAgCXUzMiByYl9idWZzejsKPiAgCXUzMiB3Yl9vZmZzZXQ7 Cj4gQEAgLTY4NywxMjkgKzY4OCwxMDggQEAgc3RhdGljIGludCBzZG1hX3Y0XzBfZ2Z4X3Jlc3Vt ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgCXUzMiBkb29yYmVsbF9vZmZzZXQ7Cj4g IAl1MzIgdGVtcDsKPiAgCXU2NCB3cHRyX2dwdV9hZGRyOwo+IC0JaW50IGksIHI7Cj4gIAo+IC0J Zm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7Cj4gLQkJcmlu ZyA9ICZhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmc7Cj4gLQkJd2Jfb2Zmc2V0ID0gKHJpbmct PnJwdHJfb2ZmcyAqIDQpOwo+ICsJd2Jfb2Zmc2V0ID0gKHJpbmctPnJwdHJfb2ZmcyAqIDQpOwo+ ICAKPiAtCQlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBf U0VNX1dBSVRfRkFJTF9USU1FUl9DTlRMKSwgMCk7Cj4gKwlXUkVHMzIoc2RtYV92NF8wX2dldF9y ZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfU0VNX1dBSVRfRkFJTF9USU1FUl9DTlRMKSwgMCk7 Cj4gIAo+IC0JCS8qIFNldCByaW5nIGJ1ZmZlciBzaXplIGluIGR3b3JkcyAqLwo+IC0JCXJiX2J1 ZnN6ID0gb3JkZXJfYmFzZV8yKHJpbmctPnJpbmdfc2l6ZSAvIDQpOwo+IC0JCXJiX2NudGwgPSBS UkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX0NO VEwpKTsKPiAtCQlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJf Q05UTCwgUkJfU0laRSwgcmJfYnVmc3opOwo+ICsJLyogU2V0IHJpbmcgYnVmZmVyIHNpemUgaW4g ZHdvcmRzICovCj4gKwlyYl9idWZzeiA9IG9yZGVyX2Jhc2VfMihyaW5nLT5yaW5nX3NpemUgLyA0 KTsKPiArCXJiX2NudGwgPSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGks IG1tU0RNQTBfR0ZYX1JCX0NOVEwpKTsKPiArCXJiX2NudGwgPSBSRUdfU0VUX0ZJRUxEKHJiX2Nu dGwsIFNETUEwX0dGWF9SQl9DTlRMLCBSQl9TSVpFLCByYl9idWZzeik7Cj4gICNpZmRlZiBfX0JJ R19FTkRJQU4KPiAtCQlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9jbnRsLCBTRE1BMF9HRlhf UkJfQ05UTCwgUkJfU1dBUF9FTkFCTEUsIDEpOwo+IC0JCXJiX2NudGwgPSBSRUdfU0VUX0ZJRUxE KHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLAo+IC0JCQkJCVJQVFJfV1JJVEVCQUNLX1NXQVBf RU5BQkxFLCAxKTsKPiArCXJiX2NudGwgPSBSRUdfU0VUX0ZJRUxEKHJiX2NudGwsIFNETUEwX0dG WF9SQl9DTlRMLCBSQl9TV0FQX0VOQUJMRSwgMSk7Cj4gKwlyYl9jbnRsID0gUkVHX1NFVF9GSUVM RChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwKPiArCQkJCVJQVFJfV1JJVEVCQUNLX1NXQVBf RU5BQkxFLCAxKTsKPiAgI2VuZGlmCj4gLQkJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNl dChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9DTlRMKSwgcmJfY250bCk7Cj4gKwlXUkVHMzIoc2Rt YV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX0NOVEwpLCByYl9j bnRsKTsKPiAgCj4gLQkJLyogSW5pdGlhbGl6ZSB0aGUgcmluZyBidWZmZXIncyByZWFkIGFuZCB3 cml0ZSBwb2ludGVycyAqLwo+IC0JCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRl diwgaSwgbW1TRE1BMF9HRlhfUkJfUlBUUiksIDApOwo+IC0JCVdSRUczMihzZG1hX3Y0XzBfZ2V0 X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfUkJfUlBUUl9ISSksIDApOwo+IC0JCVdS RUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfUkJfV1BU UiksIDApOwo+IC0JCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1T RE1BMF9HRlhfUkJfV1BUUl9ISSksIDApOwo+ICsJLyogSW5pdGlhbGl6ZSB0aGUgcmluZyBidWZm ZXIncyByZWFkIGFuZCB3cml0ZSBwb2ludGVycyAqLwo+ICsJV1JFRzMyKHNkbWFfdjRfMF9nZXRf cmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9SUFRSKSwgMCk7Cj4gKwlXUkVHMzIo c2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1JQVFJfSEkp LCAwKTsKPiArCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1B MF9HRlhfUkJfV1BUUiksIDApOwo+ICsJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChh ZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9XUFRSX0hJKSwgMCk7Cj4gIAo+IC0JCS8qIHNldCB0aGUg d2IgYWRkcmVzcyB3aGV0aGVyIGl0J3MgZW5hYmxlZCBvciBub3QgKi8KPiAtCQlXUkVHMzIoc2Rt YV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1JQVFJfQUREUl9I SSksCj4gLQkJICAgICAgIHVwcGVyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKyB3Yl9vZmZz ZXQpICYgMHhGRkZGRkZGRik7Cj4gLQkJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChh ZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9SUFRSX0FERFJfTE8pLAo+IC0JCSAgICAgICBsb3dlcl8z Ml9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsgd2Jfb2Zmc2V0KSAmIDB4RkZGRkZGRkMpOwo+ICsJ Lyogc2V0IHRoZSB3YiBhZGRyZXNzIHdoZXRoZXIgaXQncyBlbmFibGVkIG9yIG5vdCAqLwo+ICsJ V1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9S UFRSX0FERFJfSEkpLAo+ICsJICAgICAgIHVwcGVyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIg KyB3Yl9vZmZzZXQpICYgMHhGRkZGRkZGRik7Cj4gKwlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdf b2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1JQVFJfQUREUl9MTyksCj4gKwkgICAgICAg bG93ZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArIHdiX29mZnNldCkgJiAweEZGRkZGRkZD KTsKPiAgCj4gLQkJcmJfY250bCA9IFJFR19TRVRfRklFTEQocmJfY250bCwgU0RNQTBfR0ZYX1JC X0NOVEwsIFJQVFJfV1JJVEVCQUNLX0VOQUJMRSwgMSk7Cj4gKwlyYl9jbnRsID0gUkVHX1NFVF9G SUVMRChyYl9jbnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwgUlBUUl9XUklURUJBQ0tfRU5BQkxFLCAx KTsKPiAgCj4gLQkJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNE TUEwX0dGWF9SQl9CQVNFKSwgcmluZy0+Z3B1X2FkZHIgPj4gOCk7Cj4gLQkJV1JFRzMyKHNkbWFf djRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9CQVNFX0hJKSwgcmlu Zy0+Z3B1X2FkZHIgPj4gNDApOwo+ICsJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChh ZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9CQVNFKSwgcmluZy0+Z3B1X2FkZHIgPj4gOCk7Cj4gKwlX UkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX0JB U0VfSEkpLCByaW5nLT5ncHVfYWRkciA+PiA0MCk7Cj4gIAo+IC0JCXJpbmctPndwdHIgPSAwOwo+ ICsJcmluZy0+d3B0ciA9IDA7Cj4gIAo+IC0JCS8qIGJlZm9yZSBwcm9ncmFtaW5nIHdwdHIgdG8g YSBsZXNzIHZhbHVlLCBuZWVkIHNldCBtaW5vcl9wdHJfdXBkYXRlIGZpcnN0ICovCj4gLQkJV1JF RzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9NSU5PUl9Q VFJfVVBEQVRFKSwgMSk7Cj4gKwkvKiBiZWZvcmUgcHJvZ3JhbWluZyB3cHRyIHRvIGEgbGVzcyB2 YWx1ZSwgbmVlZCBzZXQgbWlub3JfcHRyX3VwZGF0ZSBmaXJzdCAqLwo+ICsJV1JFRzMyKHNkbWFf djRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9NSU5PUl9QVFJfVVBEQVRF KSwgMSk7Cj4gIAo+IC0JCWlmICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7IC8qIG9ubHkgYmFy ZS1tZXRhbCB1c2UgcmVnaXN0ZXIgd3JpdGUgZm9yIHdwdHIgKi8KPiAtCQkJV1JFRzMyKHNkbWFf djRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9XUFRSKSwgbG93ZXJf MzJfYml0cyhyaW5nLT53cHRyKSA8PCAyKTsKPiAtCQkJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVn X29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9XUFRSX0hJKSwgdXBwZXJfMzJfYml0cyhy aW5nLT53cHRyKSA8PCAyKTsKPiAtCQl9Cj4gKwlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkg eyAvKiBvbmx5IGJhcmUtbWV0YWwgdXNlIHJlZ2lzdGVyIHdyaXRlIGZvciB3cHRyICovCj4gKwkJ V1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9X UFRSKSwgbG93ZXJfMzJfYml0cyhyaW5nLT53cHRyKSA8PCAyKTsKPiArCQlXUkVHMzIoc2RtYV92 NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1dQVFJfSEkpLCB1cHBl cl8zMl9iaXRzKHJpbmctPndwdHIpIDw8IDIpOwo+ICsJfQo+ICAKPiAtCQlkb29yYmVsbCA9IFJS RUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfRE9PUkJF TEwpKTsKPiAtCQlkb29yYmVsbF9vZmZzZXQgPSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zm c2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMX09GRlNFVCkpOwo+ICsJZG9vcmJlbGwg PSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0RP T1JCRUxMKSk7Cj4gKwlkb29yYmVsbF9vZmZzZXQgPSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdf b2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMX09GRlNFVCkpOwo+ICAKPiAtCQlp ZiAocmluZy0+dXNlX2Rvb3JiZWxsKSB7Cj4gLQkJCWRvb3JiZWxsID0gUkVHX1NFVF9GSUVMRChk b29yYmVsbCwgU0RNQTBfR0ZYX0RPT1JCRUxMLCBFTkFCTEUsIDEpOwo+IC0JCQlkb29yYmVsbF9v ZmZzZXQgPSBSRUdfU0VUX0ZJRUxEKGRvb3JiZWxsX29mZnNldCwgU0RNQTBfR0ZYX0RPT1JCRUxM X09GRlNFVCwKPiAtCQkJCQlPRkZTRVQsIHJpbmctPmRvb3JiZWxsX2luZGV4KTsKPiAtCQl9IGVs c2Ugewo+IC0JCQlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9vcmJlbGwsIFNETUEwX0dGWF9E T09SQkVMTCwgRU5BQkxFLCAwKTsKPiAtCQl9Cj4gLQkJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVn X29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9ET09SQkVMTCksIGRvb3JiZWxsKTsKPiAtCQlX UkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0RPT1JC RUxMX09GRlNFVCksIGRvb3JiZWxsX29mZnNldCk7Cj4gLQkJYWRldi0+bmJpb19mdW5jcy0+c2Rt YV9kb29yYmVsbF9yYW5nZShhZGV2LCBpLCByaW5nLT51c2VfZG9vcmJlbGwsCj4gLQkJCQkJCSAg ICAgIHJpbmctPmRvb3JiZWxsX2luZGV4KTsKPiAtCj4gLQkJaWYgKGFtZGdwdV9zcmlvdl92Zihh ZGV2KSkKPiAtCQkJc2RtYV92NF8wX3Jpbmdfc2V0X3dwdHIocmluZyk7Cj4gLQo+IC0JCS8qIHNl dCBtaW5vcl9wdHJfdXBkYXRlIHRvIDAgYWZ0ZXIgd3B0ciBwcm9ncmFtZWQgKi8KPiAtCQlXUkVH MzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX01JTk9SX1BU Ul9VUERBVEUpLCAwKTsKPiAtCj4gLQkJLyogc2V0IHV0YyBsMSBlbmFibGUgZmxhZyBhbHdheXMg dG8gMSAqLwo+IC0JCXRlbXAgPSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYs IGksIG1tU0RNQTBfQ05UTCkpOwo+IC0JCXRlbXAgPSBSRUdfU0VUX0ZJRUxEKHRlbXAsIFNETUEw X0NOVEwsIFVUQ19MMV9FTkFCTEUsIDEpOwo+IC0JCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19v ZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9DTlRMKSwgdGVtcCk7Cj4gLQo+IC0JCWlmICghYW1kZ3B1 X3NyaW92X3ZmKGFkZXYpKSB7Cj4gLQkJCS8qIHVuaGFsdCBlbmdpbmUgKi8KPiAtCQkJdGVtcCA9 IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9GMzJfQ05U TCkpOwo+IC0JCQl0ZW1wID0gUkVHX1NFVF9GSUVMRCh0ZW1wLCBTRE1BMF9GMzJfQ05UTCwgSEFM VCwgMCk7Cj4gLQkJCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1T RE1BMF9GMzJfQ05UTCksIHRlbXApOwo+IC0JCX0KPiArCWlmIChyaW5nLT51c2VfZG9vcmJlbGwp IHsKPiArCQlkb29yYmVsbCA9IFJFR19TRVRfRklFTEQoZG9vcmJlbGwsIFNETUEwX0dGWF9ET09S QkVMTCwgRU5BQkxFLCAxKTsKPiArCQlkb29yYmVsbF9vZmZzZXQgPSBSRUdfU0VUX0ZJRUxEKGRv b3JiZWxsX29mZnNldCwgU0RNQTBfR0ZYX0RPT1JCRUxMX09GRlNFVCwKPiArCQkJCU9GRlNFVCwg cmluZy0+ZG9vcmJlbGxfaW5kZXgpOwo+ICsJfSBlbHNlIHsKPiArCQlkb29yYmVsbCA9IFJFR19T RVRfRklFTEQoZG9vcmJlbGwsIFNETUEwX0dGWF9ET09SQkVMTCwgRU5BQkxFLCAwKTsKPiArCX0K PiArCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhf RE9PUkJFTEwpLCBkb29yYmVsbCk7Cj4gKwlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0 KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0RPT1JCRUxMX09GRlNFVCksIGRvb3JiZWxsX29mZnNldCk7 Cj4gKwlhZGV2LT5uYmlvX2Z1bmNzLT5zZG1hX2Rvb3JiZWxsX3JhbmdlKGFkZXYsIGksIHJpbmct PnVzZV9kb29yYmVsbCwKPiArCQkJCQkgICAgICByaW5nLT5kb29yYmVsbF9pbmRleCk7Cj4gIAo+ IC0JCS8qIHNldHVwIHRoZSB3cHRyIHNoYWRvdyBwb2xsaW5nICovCj4gLQkJd3B0cl9ncHVfYWRk ciA9IGFkZXYtPndiLmdwdV9hZGRyICsgKHJpbmctPndwdHJfb2ZmcyAqIDQpOwo+IC0JCVdSRUcz MihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9Q T0xMX0FERFJfTE8pLAo+IC0JCSAgICAgICBsb3dlcl8zMl9iaXRzKHdwdHJfZ3B1X2FkZHIpKTsK PiAtCQlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZY X1JCX1dQVFJfUE9MTF9BRERSX0hJKSwKPiAtCQkgICAgICAgdXBwZXJfMzJfYml0cyh3cHRyX2dw dV9hZGRyKSk7Cj4gLQkJd3B0cl9wb2xsX2NudGwgPSBSUkVHMzIoc2RtYV92NF8wX2dldF9yZWdf b2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1dQVFJfUE9MTF9DTlRMKSk7Cj4gLQkJaWYg KGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKPiAtCQkJd3B0cl9wb2xsX2NudGwgPSBSRUdfU0VUX0ZJ RUxEKHdwdHJfcG9sbF9jbnRsLCBTRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0NOVEwsIEYzMl9QT0xM X0VOQUJMRSwgMSk7Cj4gLQkJZWxzZQo+IC0JCQl3cHRyX3BvbGxfY250bCA9IFJFR19TRVRfRklF TEQod3B0cl9wb2xsX2NudGwsIFNETUEwX0dGWF9SQl9XUFRSX1BPTExfQ05UTCwgRjMyX1BPTExf RU5BQkxFLCAwKTsKPiAtCQlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGks IG1tU0RNQTBfR0ZYX1JCX1dQVFJfUE9MTF9DTlRMKSwgd3B0cl9wb2xsX2NudGwpOwo+ICsJaWYg KGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKPiArCQlzZG1hX3Y0XzBfcmluZ19zZXRfd3B0cihyaW5n KTsKPiAgCj4gLQkJLyogZW5hYmxlIERNQSBSQiAqLwo+IC0JCXJiX2NudGwgPSBSRUdfU0VUX0ZJ RUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLCBSQl9FTkFCTEUsIDEpOwo+IC0JCVdSRUcz MihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfUkJfQ05UTCks IHJiX2NudGwpOwo+ICsJLyogc2V0IG1pbm9yX3B0cl91cGRhdGUgdG8gMCBhZnRlciB3cHRyIHBy b2dyYW1lZCAqLwo+ICsJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBt bVNETUEwX0dGWF9NSU5PUl9QVFJfVVBEQVRFKSwgMCk7Cj4gIAo+IC0JCWliX2NudGwgPSBSUkVH MzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX0lCX0NOVEwp KTsKPiAtCQlpYl9jbnRsID0gUkVHX1NFVF9GSUVMRChpYl9jbnRsLCBTRE1BMF9HRlhfSUJfQ05U TCwgSUJfRU5BQkxFLCAxKTsKPiAtI2lmZGVmIF9fQklHX0VORElBTgo+IC0JCWliX2NudGwgPSBS RUdfU0VUX0ZJRUxEKGliX2NudGwsIFNETUEwX0dGWF9JQl9DTlRMLCBJQl9TV0FQX0VOQUJMRSwg MSk7Cj4gLSNlbmRpZgo+IC0JCS8qIGVuYWJsZSBETUEgSUJzICovCj4gLQkJV1JFRzMyKHNkbWFf djRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9JQl9DTlRMKSwgaWJfY250 bCk7Cj4gKwkvKiBzZXQgdXRjIGwxIGVuYWJsZSBmbGFnIGFsd2F5cyB0byAxICovCj4gKwl0ZW1w ID0gUlJFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0NOVEwp KTsKPiArCXRlbXAgPSBSRUdfU0VUX0ZJRUxEKHRlbXAsIFNETUEwX0NOVEwsIFVUQ19MMV9FTkFC TEUsIDEpOwo+ICsJV1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNE TUEwX0NOVEwpLCB0ZW1wKTsKPiAgCj4gLQkJcmluZy0+cmVhZHkgPSB0cnVlOwo+ICsJaWYgKCFh bWRncHVfc3Jpb3ZfdmYoYWRldikpIHsKPiArCQkvKiB1bmhhbHQgZW5naW5lICovCj4gKwkJdGVt cCA9IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9GMzJf Q05UTCkpOwo+ICsJCXRlbXAgPSBSRUdfU0VUX0ZJRUxEKHRlbXAsIFNETUEwX0YzMl9DTlRMLCBI QUxULCAwKTsKPiArCQlXUkVHMzIoc2RtYV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1t U0RNQTBfRjMyX0NOVEwpLCB0ZW1wKTsKPiArCX0KPiAgCj4gLQkJaWYgKGFtZGdwdV9zcmlvdl92 ZihhZGV2KSkgeyAvKiBiYXJlLW1ldGFsIHNlcXVlbmNlIGRvZXNuJ3QgbmVlZCBiZWxvdyB0byBs aW5lcyAqLwo+IC0JCQlzZG1hX3Y0XzBfY3R4X3N3aXRjaF9lbmFibGUoYWRldiwgdHJ1ZSk7Cj4g LQkJCXNkbWFfdjRfMF9lbmFibGUoYWRldiwgdHJ1ZSk7Cj4gLQkJfQo+ICsJLyogc2V0dXAgdGhl IHdwdHIgc2hhZG93IHBvbGxpbmcgKi8KPiArCXdwdHJfZ3B1X2FkZHIgPSBhZGV2LT53Yi5ncHVf YWRkciArIChyaW5nLT53cHRyX29mZnMgKiA0KTsKPiArCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3Jl Z19vZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfUkJfV1BUUl9QT0xMX0FERFJfTE8pLAo+ICsJ ICAgICAgIGxvd2VyXzMyX2JpdHMod3B0cl9ncHVfYWRkcikpOwo+ICsJV1JFRzMyKHNkbWFfdjRf MF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9XUFRSX1BPTExfQUREUl9I SSksCj4gKwkgICAgICAgdXBwZXJfMzJfYml0cyh3cHRyX2dwdV9hZGRyKSk7Cj4gKwl3cHRyX3Bv bGxfY250bCA9IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwgaSwgbW1TRE1B MF9HRlhfUkJfV1BUUl9QT0xMX0NOVEwpKTsKPiArCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikp Cj4gKwkJd3B0cl9wb2xsX2NudGwgPSBSRUdfU0VUX0ZJRUxEKHdwdHJfcG9sbF9jbnRsLCBTRE1B MF9HRlhfUkJfV1BUUl9QT0xMX0NOVEwsIEYzMl9QT0xMX0VOQUJMRSwgMSk7Cj4gKwllbHNlCj4g KwkJd3B0cl9wb2xsX2NudGwgPSBSRUdfU0VUX0ZJRUxEKHdwdHJfcG9sbF9jbnRsLCBTRE1BMF9H RlhfUkJfV1BUUl9QT0xMX0NOVEwsIEYzMl9QT0xMX0VOQUJMRSwgMCk7Cj4gKwlXUkVHMzIoc2Rt YV92NF8wX2dldF9yZWdfb2Zmc2V0KGFkZXYsIGksIG1tU0RNQTBfR0ZYX1JCX1dQVFJfUE9MTF9D TlRMKSwgd3B0cl9wb2xsX2NudGwpOwo+ICAKPiAtCQlyID0gYW1kZ3B1X3JpbmdfdGVzdF9yaW5n KHJpbmcpOwo+IC0JCWlmIChyKSB7Cj4gLQkJCXJpbmctPnJlYWR5ID0gZmFsc2U7Cj4gLQkJCXJl dHVybiByOwo+IC0JCX0KPiArCS8qIGVuYWJsZSBETUEgUkIgKi8KPiArCXJiX2NudGwgPSBSRUdf U0VUX0ZJRUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLCBSQl9FTkFCTEUsIDEpOwo+ICsJ V1JFRzMyKHNkbWFfdjRfMF9nZXRfcmVnX29mZnNldChhZGV2LCBpLCBtbVNETUEwX0dGWF9SQl9D TlRMKSwgcmJfY250bCk7Cj4gIAo+IC0JCWlmIChhZGV2LT5tbWFuLmJ1ZmZlcl9mdW5jc19yaW5n ID09IHJpbmcpCj4gLQkJCWFtZGdwdV90dG1fc2V0X2J1ZmZlcl9mdW5jc19zdGF0dXMoYWRldiwg dHJ1ZSk7Cj4gLQo+IC0JfQo+ICsJaWJfY250bCA9IFJSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19v ZmZzZXQoYWRldiwgaSwgbW1TRE1BMF9HRlhfSUJfQ05UTCkpOwo+ICsJaWJfY250bCA9IFJFR19T RVRfRklFTEQoaWJfY250bCwgU0RNQTBfR0ZYX0lCX0NOVEwsIElCX0VOQUJMRSwgMSk7Cj4gKyNp ZmRlZiBfX0JJR19FTkRJQU4KPiArCWliX2NudGwgPSBSRUdfU0VUX0ZJRUxEKGliX2NudGwsIFNE TUEwX0dGWF9JQl9DTlRMLCBJQl9TV0FQX0VOQUJMRSwgMSk7Cj4gKyNlbmRpZgo+ICsJLyogZW5h YmxlIERNQSBJQnMgKi8KPiArCVdSRUczMihzZG1hX3Y0XzBfZ2V0X3JlZ19vZmZzZXQoYWRldiwg aSwgbW1TRE1BMF9HRlhfSUJfQ05UTCksIGliX2NudGwpOwo+ICAKPiAtCXJldHVybiAwOwo+ICsJ cmluZy0+cmVhZHkgPSB0cnVlOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC05NDEsMzMg KzkyMSw1MSBAQCBzdGF0aWMgaW50IHNkbWFfdjRfMF9sb2FkX21pY3JvY29kZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKPiAgICovCj4gIHN0YXRpYyBpbnQgc2RtYV92NF8wX3N0YXJ0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICB7Cj4gLQlpbnQgciA9IDA7Cj4gKwlzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmc7Cj4gKwlpbnQgaSwgcjsKPiAgCj4gIAlpZiAoYW1kZ3B1X3NyaW92 X3ZmKGFkZXYpKSB7Cj4gIAkJc2RtYV92NF8wX2N0eF9zd2l0Y2hfZW5hYmxlKGFkZXYsIGZhbHNl KTsKPiAgCQlzZG1hX3Y0XzBfZW5hYmxlKGFkZXYsIGZhbHNlKTsKPiArCX0gZWxzZSB7Cj4gIAo+ IC0JCS8qIHNldCBSQiByZWdpc3RlcnMgKi8KPiAtCQlyID0gc2RtYV92NF8wX2dmeF9yZXN1bWUo YWRldik7Cj4gLQkJcmV0dXJuIHI7Cj4gKwkJaWYgKGFkZXYtPmZpcm13YXJlLmxvYWRfdHlwZSAh PSBBTURHUFVfRldfTE9BRF9QU1ApIHsKPiArCQkJciA9IHNkbWFfdjRfMF9sb2FkX21pY3JvY29k ZShhZGV2KTsKPiArCQkJaWYgKHIpCj4gKwkJCQlyZXR1cm4gcjsKPiArCQl9Cj4gKwo+ICsJCS8q IHVuaGFsdCB0aGUgTUVzICovCj4gKwkJc2RtYV92NF8wX2VuYWJsZShhZGV2LCB0cnVlKTsKPiAr CQkvKiBlbmFibGUgc2RtYSByaW5nIHByZWVtcHRpb24gKi8KPiArCQlzZG1hX3Y0XzBfY3R4X3N3 aXRjaF9lbmFibGUoYWRldiwgdHJ1ZSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGFkZXYtPmZpcm13YXJl LmxvYWRfdHlwZSAhPSBBTURHUFVfRldfTE9BRF9QU1ApIHsKPiAtCQlyID0gc2RtYV92NF8wX2xv YWRfbWljcm9jb2RlKGFkZXYpOwo+ICsJLyogc3RhcnQgdGhlIGdmeCByaW5ncyBhbmQgcmxjIGNv bXB1dGUgcXVldWVzICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+c2RtYS5udW1faW5zdGFu Y2VzOyBpKyspCj4gKwkJc2RtYV92NF8wX2dmeF9yZXN1bWUoYWRldiwgaSk7Cj4gKwo+ICsJaWYg KGFtZGdwdV9zcmlvdl92ZihhZGV2KSkgewo+ICsJCXNkbWFfdjRfMF9jdHhfc3dpdGNoX2VuYWJs ZShhZGV2LCB0cnVlKTsKPiArCQlzZG1hX3Y0XzBfZW5hYmxlKGFkZXYsIHRydWUpOwo+ICsJfSBl bHNlIHsKPiArCQlyID0gc2RtYV92NF8wX3JsY19yZXN1bWUoYWRldik7Cj4gIAkJaWYgKHIpCj4g IAkJCXJldHVybiByOwo+ICAJfQoKKyBNb25rLCBGcmFuaywKCkkgcHJvYmFibHkgY2Fubm90IGp1 ZGdlIGhlcmUsIHVuZGVyIFNSSU9WLCBJIHNhdyB5b3UgZGlzYWJsZSBjdHggc3dpdGNoCmJlZm9y ZS4gRG8geW91IGhhdmUgYW55IGNvbmNlcm4gaWYgd2UgZW5hYmxlZCBpdCBoZXJlLgoKT3RoZXJz LCBsb29rcyBnb29kIGZvciBtZS4gQ2hyaXN0aWFuLCBtYXkgd2Uga25vdyB3aGljaCBraW5kIG9m IGpvYnMgd2lsbAp1c2Ugc2RtYSBwYWdlIHF1ZXVlKHJpbmcpLCB5b3Uga25vdywgd2UganVzdCBz ZG1hIGdmeCBxdWV1ZShyaW5nKSBiZWZvcmU/CgpUaGFua3MsClJheQoKPiAgCj4gLQkvKiB1bmhh bHQgdGhlIE1FcyAqLwo+IC0Jc2RtYV92NF8wX2VuYWJsZShhZGV2LCB0cnVlKTsKPiAtCS8qIGVu YWJsZSBzZG1hIHJpbmcgcHJlZW1wdGlvbiAqLwo+IC0Jc2RtYV92NF8wX2N0eF9zd2l0Y2hfZW5h YmxlKGFkZXYsIHRydWUpOwo+ICsJZm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3Rh bmNlczsgaSsrKSB7Cj4gKwkJcmluZyA9ICZhZGV2LT5zZG1hLmluc3RhbmNlW2ldLnJpbmc7Cj4g IAo+IC0JLyogc3RhcnQgdGhlIGdmeCByaW5ncyBhbmQgcmxjIGNvbXB1dGUgcXVldWVzICovCj4g LQlyID0gc2RtYV92NF8wX2dmeF9yZXN1bWUoYWRldik7Cj4gLQlpZiAocikKPiAtCQlyZXR1cm4g cjsKPiAtCXIgPSBzZG1hX3Y0XzBfcmxjX3Jlc3VtZShhZGV2KTsKPiArCQlyID0gYW1kZ3B1X3Jp bmdfdGVzdF9yaW5nKHJpbmcpOwo+ICsJCWlmIChyKSB7Cj4gKwkJCXJpbmctPnJlYWR5ID0gZmFs c2U7Cj4gKwkJCXJldHVybiByOwo+ICsJCX0KPiArCj4gKwkJaWYgKGFkZXYtPm1tYW4uYnVmZmVy X2Z1bmNzX3JpbmcgPT0gcmluZykKPiArCQkJYW1kZ3B1X3R0bV9zZXRfYnVmZmVyX2Z1bmNzX3N0 YXR1cyhhZGV2LCB0cnVlKTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gcjsKPiAgfQo+IC0tIAo+IDIu MTQuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1h aWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK