From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [2/2] dmaengine: mediatek: Add MediaTek Command-Queue DMA controller for MT6765 SoC From: Vinod Koul Message-Id: <20181111101911.GF12092@vkoul-mobl> Date: Sun, 11 Nov 2018 15:49:11 +0530 To: shun-chih.yu@mediatek.com Cc: Sean Wang , Rob Herring , Matthias Brugger , Dan Williams , dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srv_wsdupstream@mediatek.com List-ID: T24gMTgtMTAtMTgsIDE1OjQ5LCBzaHVuLWNoaWgueXVAbWVkaWF0ZWsuY29tIHdyb3RlOgo+IEZy b206IFNodW4tQ2hpaCBZdSA8c2h1bi1jaGloLnl1QG1lZGlhdGVrLmNvbT4KPiAKPiBNZWRpYVRl ayBDb21tYW5kLVF1ZXVlIERNQSBjb250cm9sbGVyIChDUURNQSkgb24gTVQ2NzY1IFNvQyBpcyBk ZWRpY2F0ZWQKPiB0byBtZW1vcnktdG8tbWVtb3J5IHRyYW5zZmVyIHRocm91Z2ggcXVldWUgYmFz ZWQgZGVzY3JpcHRvciBtYW5hZ2VtZW50Lgo+IAo+IFRoZXJlIGFyZSBvbmx5IDMgcGh5c2ljYWwg Y2hhbm5lbHMgaW5zaWRlIENRRE1BLCB3aGlsZSB0aGUgZHJpdmVyIGlzCj4gZXh0ZW5kZWQgdG8g c3VwcG9ydCAzMiB2aXJ0dWFsIGNoYW5uZWxzIGZvciBtdWx0aXBsZSBkbWEgdXNlcnMgdG8gaXNz dWUKPiBkbWEgcmVxdWVzdHMgb250byB0aGUgQ1FETUEgc2ltdWx0YW5lb3VzbHkuCgpJIHNlZSBz b21lIHdhcm5zIGluIHRoZSBkcml2ZXIgd2hlbiBJIGNvbXBpbGUgd2l0aCBDPTEgcGxlYXNlIGRv IGZpeAp0aG9zZSBpbiBuZXh0IHJldgoKPiArc3RydWN0IG10a19jcWRtYV92ZGVzYyB7Cj4gKwlz dHJ1Y3QgdmlydF9kbWFfZGVzYyB2ZDsKPiArCXNpemVfdCBsZW47Cj4gKwlzaXplX3QgcmVzaWR1 ZTsKCndoeSBzaG91bGQgeW91IHN0b3JlIHJlc2lkdWUgaW4gZGVzY3JpcHRvciwgaXQgd2lsbCBn ZXQgc3RhbGUgdmVyeSBzb29uIQoKPiArCWRtYV9hZGRyX3QgZGVzdDsKPiArCWRtYV9hZGRyX3Qg c3JjOwo+ICsJc3RydWN0IGRtYV9jaGFuICpjaDsKPiArCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIG5v ZGU7Cgp3aHkgZG8geW91IG5lZWQgeW91ciBvd24gbGlzdCwgdmQgaGFzIGEgbGlzdCBmb3IgZGVz Y3JpcHRvcnMhCgo+ICtzdHJ1Y3QgbXRrX2NxZG1hX3BjaGFuIHsKPiArCXN0cnVjdCBsaXN0X2hl YWQgcXVldWU7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwl1MzIgaXJxOwo+ICsKPiArCXJl ZmNvdW50X3QgcmVmY250OwoKQ2FuIHlvdSBzdWJtaXQgbW9yZSB0aGFuIG9uZSBkZXNjcmlwdG9y IGF0IGFueSBwb2ludCBvZiB0aW1lPwoKPiArc3RydWN0IG10a19jcWRtYV92Y2hhbiB7Cj4gKwlz dHJ1Y3QgdmlydF9kbWFfY2hhbiB2YzsKPiArCXN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gKnBjOwo+ ICsJc3RydWN0IGNvbXBsZXRpb24gaXNzdWVfY29tcGxldGlvbjsKPiArCWJvb2wgaXNzdWVfc3lu Y2hyb25pemU7Cgp3aGF0IGxvY2sgcHJvdGVjdHMgdGhpcz8KCj4gK3N0YXRpYyB2b2lkIG10a19j cWRtYV9zdGFydChzdHJ1Y3QgbXRrX2NxZG1hX3BjaGFuICpwYywKPiArCQkJICAgIHN0cnVjdCBt dGtfY3FkbWFfdmRlc2MgKmN2ZCkKPiArewo+ICsJLyogd2FpdCBmb3IgdGhlIHByZXZpb3VzIHRy YW5zYWN0aW9uIGRvbmUgKi8KPiArCWlmIChtdGtfY3FkbWFfcG9sbF9lbmdpbmVfZG9uZShwYywg dHJ1ZSkgPCAwKQo+ICsJCWRldl9lcnIoY3FkbWEyZGV2KHRvX2NxZG1hX2RldihjdmQtPmNoKSks ICJjcWRtYSB3YWl0IHRyYW5zYWN0aW9uIHRpbWVvdXRcbiIpOwoKUGxlYXNlIHNwbGl0IHRoaXMg dG8gMiBsaW5lcyB0byBhZGhlcmUgdG8gODAgY2hhcnMgbGltaXQKCkFsc28gbm8gYmFpbG91dCBv ZiBlcnJvcj8KCj4gK3N0YXRpYyBzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjCj4gKyptdGtfY3FkbWFf Y29uc3VtZV93b3JrX3F1ZXVlKHN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gKnBjKQo+ICt7Cj4gKwlz dHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuICpjdmM7Cj4gKwlzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjICpj dmQsICpyZXQgPSBOVUxMOwoKcmV0IGluaXRpYWxpemF0aW9uIHNlZW1zIHN1cGVyZmx1b3VzCgo+ ICtzdGF0aWMgdm9pZCBtdGtfY3FkbWFfdGFza2xldF9jYih1bnNpZ25lZCBsb25nIGRhdGEpCj4g K3sKPiArCXN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gKnBjID0gKHN0cnVjdCBtdGtfY3FkbWFfcGNo YW4gKilkYXRhOwo+ICsJc3RydWN0IG10a19jcWRtYV92ZGVzYyAqY3ZkID0gTlVMTDsKPiArCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnBjLT5sb2NrLCBm bGFncyk7Cj4gKwkvKiBjb25zdW1lIHRoZSBxdWV1ZSAqLwo+ICsJY3ZkID0gbXRrX2NxZG1hX2Nv bnN1bWVfd29ya19xdWV1ZShwYyk7Cgp3aHkgbm90IGRvIHRoaXMgZnJvbSBJU1IsIERNQSBzaG91 bGQgYmUgc3VibWl0dGVkIGFzIGZhc3QgYXMgcG9zc2libGUhCgo+ICtzdGF0aWMgaW50IG10a19j cWRtYV9hbGxvY19jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmMpCj4gK3sKPiArCXN0 cnVjdCBtdGtfY3FkbWFfZGV2aWNlICpjcWRtYSA9IHRvX2NxZG1hX2RldihjKTsKPiArCXN0cnVj dCBtdGtfY3FkbWFfdmNoYW4gKnZjID0gdG9fY3FkbWFfdmNoYW4oYyk7Cj4gKwlzdHJ1Y3QgbXRr X2NxZG1hX3BjaGFuICpwYyA9IE5VTEw7Cj4gKwl1MzIgaSwgbWluX3JlZmNudCA9IFUzMl9NQVgs IHJlZmNudDsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJLyogYWxsb2NhdGUgUEMg d2l0aCB0aGUgbWluaW11biByZWZjb3VudCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF5eXl5eXl4KdHlwbyAKCj4gK3N0YXRpYyBpbnQgbXRrX2NxZG1hX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXN0cnVjdCBtdGtfY3FkbWFfZGV2aWNlICpj cWRtYTsKPiArCXN0cnVjdCBtdGtfY3FkbWFfdmNoYW4gKnZjOwo+ICsJc3RydWN0IGRtYV9kZXZp Y2UgKmRkOwo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwlpbnQgZXJyOwo+ICsJdTMyIGk7 Cj4gKwo+ICsJY3FkbWEgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpjcWRtYSks IEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjcWRtYSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4g KwlkZCA9ICZjcWRtYS0+ZGRldjsKPiArCj4gKwljcWRtYS0+Y2xrID0gZGV2bV9jbGtfZ2V0KCZw ZGV2LT5kZXYsICJjcWRtYSIpOwo+ICsJaWYgKElTX0VSUihjcWRtYS0+Y2xrKSkgewo+ICsJCWRl dl9lcnIoJnBkZXYtPmRldiwgIk5vIGNsb2NrIGZvciAlc1xuIiwKPiArCQkJZGV2X25hbWUoJnBk ZXYtPmRldikpOwo+ICsJCXJldHVybiBQVFJfRVJSKGNxZG1hLT5jbGspOwo+ICsJfQo+ICsKPiAr CWRtYV9jYXBfc2V0KERNQV9NRU1DUFksIGRkLT5jYXBfbWFzayk7Cj4gKwo+ICsJZGQtPmNvcHlf YWxpZ24gPSBNVEtfQ1FETUFfQUxJR05fU0laRTsKPiArCWRkLT5kZXZpY2VfYWxsb2NfY2hhbl9y ZXNvdXJjZXMgPSBtdGtfY3FkbWFfYWxsb2NfY2hhbl9yZXNvdXJjZXM7Cj4gKwlkZC0+ZGV2aWNl X2ZyZWVfY2hhbl9yZXNvdXJjZXMgPSBtdGtfY3FkbWFfZnJlZV9jaGFuX3Jlc291cmNlczsKPiAr CWRkLT5kZXZpY2VfdHhfc3RhdHVzID0gbXRrX2NxZG1hX3R4X3N0YXR1czsKPiArCWRkLT5kZXZp Y2VfaXNzdWVfcGVuZGluZyA9IG10a19jcWRtYV9pc3N1ZV9wZW5kaW5nOwo+ICsJZGQtPmRldmlj ZV9wcmVwX2RtYV9tZW1jcHkgPSBtdGtfY3FkbWFfcHJlcF9kbWFfbWVtY3B5Owo+ICsJZGQtPmRl dmljZV90ZXJtaW5hdGVfYWxsID0gbXRrX2NxZG1hX3Rlcm1pbmF0ZV9hbGw7Cj4gKwlkZC0+c3Jj X2FkZHJfd2lkdGhzID0gTVRLX0NRRE1BX0RNQV9CVVNXSURUSFM7Cj4gKwlkZC0+ZHN0X2FkZHJf d2lkdGhzID0gTVRLX0NRRE1BX0RNQV9CVVNXSURUSFM7Cj4gKwlkZC0+ZGlyZWN0aW9ucyA9IEJJ VChETUFfTUVNX1RPX01FTSk7Cj4gKwlkZC0+cmVzaWR1ZV9ncmFudWxhcml0eSA9IERNQV9SRVNJ RFVFX0dSQU5VTEFSSVRZX1NFR01FTlQ7Cj4gKwlkZC0+ZGV2ID0gJnBkZXYtPmRldjsKPiArCUlO SVRfTElTVF9IRUFEKCZkZC0+Y2hhbm5lbHMpOwo+ICsKPiArCWlmIChwZGV2LT5kZXYub2Zfbm9k ZSAmJiBvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LT5kZXYub2Zfbm9kZSwKPiArCQkJCQkJICAg ICAgImRtYS1yZXF1ZXN0cyIsCj4gKwkJCQkJCSAgICAgICZjcWRtYS0+ZG1hX3JlcXVlc3RzKSkg ewo+ICsJCWRldl9pbmZvKCZwZGV2LT5kZXYsCj4gKwkJCSAiVXNpbmcgJXUgYXMgbWlzc2luZyBk bWEtcmVxdWVzdHMgcHJvcGVydHlcbiIsCj4gKwkJCSBNVEtfQ1FETUFfTlJfVkNIQU5TKTsKPiAr Cj4gKwkJY3FkbWEtPmRtYV9yZXF1ZXN0cyA9IE1US19DUURNQV9OUl9WQ0hBTlM7Cj4gKwl9Cj4g Kwo+ICsJaWYgKHBkZXYtPmRldi5vZl9ub2RlICYmIG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYt PmRldi5vZl9ub2RlLAo+ICsJCQkJCQkgICAgICAiZG1hLWNoYW5uZWxzIiwKPiArCQkJCQkJICAg ICAgJmNxZG1hLT5kbWFfY2hhbm5lbHMpKSB7Cj4gKwkJZGV2X2luZm8oJnBkZXYtPmRldiwKPiAr CQkJICJVc2luZyAldSBhcyBtaXNzaW5nIGRtYS1jaGFubmVscyBwcm9wZXJ0eVxuIiwKPiArCQkJ IE1US19DUURNQV9OUl9QQ0hBTlMpOwo+ICsKPiArCQljcWRtYS0+ZG1hX2NoYW5uZWxzID0gTVRL X0NRRE1BX05SX1BDSEFOUzsKPiArCX0KPiArCj4gKwljcWRtYS0+cGMgPSBkZXZtX2tjYWxsb2Mo JnBkZXYtPmRldiwgY3FkbWEtPmRtYV9jaGFubmVscywKPiArCQkJCSBzaXplb2YoKmNxZG1hLT5w YyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjcWRtYS0+cGMpCj4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4gKwo+ICsJLyogaW5pdGlhbGl6YXRpb24gZm9yIFBDcyAqLwo+ICsJZm9yIChpID0gMDsgaSA8 IGNxZG1hLT5kbWFfY2hhbm5lbHM7ICsraSkgewo+ICsJCWNxZG1hLT5wY1tpXSA9IGRldm1fa2Nh bGxvYygmcGRldi0+ZGV2LCAxLAo+ICsJCQkJCSAgICBzaXplb2YoKipjcWRtYS0+cGMpLCBHRlBf S0VSTkVMKTsKPiArCQlpZiAoIWNxZG1hLT5wY1tpXSkKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4g Kwo+ICsJCUlOSVRfTElTVF9IRUFEKCZjcWRtYS0+cGNbaV0tPnF1ZXVlKTsKPiArCQlzcGluX2xv Y2tfaW5pdCgmY3FkbWEtPnBjW2ldLT5sb2NrKTsKPiArCQlyZWZjb3VudF9zZXQoJmNxZG1hLT5w Y1tpXS0+cmVmY250LCAwKTsKPiArCj4gKwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLCBpKTsKPiArCQlpZiAoIXJlcykgewo+ICsJCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJObyBtZW0gcmVzb3VyY2UgZm9yICVzXG4iLAo+ICsJCQkJZGV2X25hbWUoJnBk ZXYtPmRldikpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWNxZG1hLT5w Y1tpXS0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ICsJ CWlmIChJU19FUlIoY3FkbWEtPnBjW2ldLT5iYXNlKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoY3Fk bWEtPnBjW2ldLT5iYXNlKTsKPiArCj4gKwkJLyogYWxsb2NhdGUgSVJRIHJlc291cmNlICovCj4g KwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCBpKTsK PiArCQlpZiAoIXJlcykgewo+ICsJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJObyBpcnEgcmVzb3Vy Y2UgZm9yICVzXG4iLAo+ICsJCQkJZGV2X25hbWUoJnBkZXYtPmRldikpOwo+ICsJCQlyZXR1cm4g LUVJTlZBTDsKPiArCQl9Cj4gKwkJY3FkbWEtPnBjW2ldLT5pcnEgPSByZXMtPnN0YXJ0Owo+ICsK PiArCQllcnIgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGNxZG1hLT5wY1tpXS0+aXJx LAo+ICsJCQkJICAgICAgIG10a19jcWRtYV9pcnEsIDAsIGRldl9uYW1lKCZwZGV2LT5kZXYpLAo+ ICsJCQkJICAgICAgIGNxZG1hKTsKPiArCQlpZiAoZXJyKSB7Cj4gKwkJCWRldl9lcnIoJnBkZXYt PmRldiwKPiArCQkJCSJyZXF1ZXN0X2lycSBmYWlsZWQgd2l0aCBlcnIgJWRcbiIsIGVycik7Cj4g KwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBhbGxvY2F0ZSByZXNv dXJjZSBmb3IgVkNzICovCj4gKwljcWRtYS0+dmMgPSBkZXZtX2tjYWxsb2MoJnBkZXYtPmRldiwg Y3FkbWEtPmRtYV9yZXF1ZXN0cywKPiArCQkJCSBzaXplb2YoKmNxZG1hLT52YyksIEdGUF9LRVJO RUwpOwo+ICsJaWYgKCFjcWRtYS0+dmMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IGNxZG1hLT5kbWFfcmVxdWVzdHM7IGkrKykgewo+ICsJCXZjID0gJmNxZG1h LT52Y1tpXTsKPiArCQl2Yy0+dmMuZGVzY19mcmVlID0gbXRrX2NxZG1hX3ZkZXNjX2ZyZWU7Cj4g KwkJdmNoYW5faW5pdCgmdmMtPnZjLCBkZCk7Cj4gKwkJaW5pdF9jb21wbGV0aW9uKCZ2Yy0+aXNz dWVfY29tcGxldGlvbik7Cj4gKwl9Cj4gKwo+ICsJZXJyID0gZG1hX2FzeW5jX2RldmljZV9yZWdp c3RlcihkZCk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJZXJyID0gb2Zf ZG1hX2NvbnRyb2xsZXJfcmVnaXN0ZXIocGRldi0+ZGV2Lm9mX25vZGUsCj4gKwkJCQkJIG9mX2Rt YV94bGF0ZV9ieV9jaGFuX2lkLCBjcWRtYSk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJZGV2X2Vycigm cGRldi0+ZGV2LAo+ICsJCQkiTWVkaWFUZWsgQ1FETUEgT0YgcmVnaXN0cmF0aW9uIGZhaWxlZCAl ZFxuIiwgZXJyKTsKPiArCQlnb3RvIGVycl91bnJlZ2lzdGVyOwo+ICsJfQo+ICsKPiArCWVyciA9 IG10a19jcWRtYV9od19pbml0KGNxZG1hKTsKPiArCWlmIChlcnIpIHsKPiArCQlkZXZfZXJyKCZw ZGV2LT5kZXYsCj4gKwkJCSJNZWRpYVRlayBDUURNQSBIVyBpbml0aWFsaXphdGlvbiBmYWlsZWQg JWRcbiIsIGVycik7Cj4gKwkJZ290byBlcnJfdW5yZWdpc3RlcjsKPiArCX0KPiArCj4gKwlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjcWRtYSk7Cj4gKwo+ICsJLyogaW5pdGlhbGl6ZSB0YXNr bGV0IGZvciBlYWNoIFBDICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgY3FkbWEtPmRtYV9jaGFubmVs czsgKytpKQo+ICsJCXRhc2tsZXRfaW5pdCgmY3FkbWEtPnBjW2ldLT50YXNrbGV0LCBtdGtfY3Fk bWFfdGFza2xldF9jYiwKPiArCQkJICAgICAodW5zaWduZWQgbG9uZyljcWRtYS0+cGNbaV0pOwo+ ICsKPiArCWRldl9pbmZvKCZwZGV2LT5kZXYsICJNZWRpYVRlayBDUURNQSBkcml2ZXIgcmVnaXN0 ZXJlZFxuIik7CgpkZWJ1ZyBsb2cgcGxlYXNlCgo+ICtzdGF0aWMgaW50IG10a19jcWRtYV9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IG10a19jcWRt YV9kZXZpY2UgKmNxZG1hID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3Qg bXRrX2NxZG1hX3ZjaGFuICp2YzsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwlpbnQgaTsK PiArCj4gKwkvKiBraWxsIFZDIHRhc2sgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBjcWRtYS0+ZG1h X3JlcXVlc3RzOyBpKyspIHsKPiArCQl2YyA9ICZjcWRtYS0+dmNbaV07Cj4gKwo+ICsJCWxpc3Rf ZGVsKCZ2Yy0+dmMuY2hhbi5kZXZpY2Vfbm9kZSk7Cj4gKwkJdGFza2xldF9raWxsKCZ2Yy0+dmMu dGFzayk7Cj4gKwl9Cj4gKwo+ICsJLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8KPiArCWZvciAoaSA9 IDA7IGkgPCBjcWRtYS0+ZG1hX2NoYW5uZWxzOyBpKyspIHsKPiArCQlzcGluX2xvY2tfaXJxc2F2 ZSgmY3FkbWEtPnBjW2ldLT5sb2NrLCBmbGFncyk7Cj4gKwkJbXRrX2RtYV9jbHIoY3FkbWEtPnBj W2ldLCBNVEtfQ1FETUFfSU5UX0VOLAo+ICsJCQkgICAgTVRLX0NRRE1BX0lOVF9FTl9CSVQpOwo+ ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNxZG1hLT5wY1tpXS0+bG9jaywgZmxhZ3MpOwo+ ICsKPiArCQkvKiBXYWl0cyBmb3IgYW55IHBlbmRpbmcgSVJRIGhhbmRsZXJzIHRvIGNvbXBsZXRl ICovCj4gKwkJc3luY2hyb25pemVfaXJxKGNxZG1hLT5wY1tpXS0+aXJxKTsKPiArCj4gKwkJdGFz a2xldF9raWxsKCZjcWRtYS0+cGNbaV0tPnRhc2tsZXQpOwo+ICsJfQoKcGxlYXNlIGtpbGwgVkMg dGFza3MgYWZ0ZXIgdGhpcywgdGhleSBjYW4gc3RpbGwgYmUgZmlyZWQgd2hpbGUgeW91IGFyZQpk aXNhYmxpbmcgaW50ZXJydXB0LCBzbyBpbnRlcnJ1cHQgZmlyc3QgYW5kIHRoZW4gdGFza2xldHMK