From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oded Gabbay Subject: [PATCH 08/13] drm/amdkfd: add support for VI in MQD manager Date: Fri, 12 Jun 2015 22:31:16 +0300 Message-ID: <1434137481-13315-9-git-send-email-oded.gabbay@gmail.com> References: <1434137481-13315-1-git-send-email-oded.gabbay@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f176.google.com (mail-wi0-f176.google.com [209.85.212.176]) by gabe.freedesktop.org (Postfix) with ESMTP id 39C4E6E4E8 for ; Fri, 12 Jun 2015 12:31:37 -0700 (PDT) Received: by wibdq8 with SMTP id dq8so25341250wib.1 for ; Fri, 12 Jun 2015 12:31:36 -0700 (PDT) In-Reply-To: <1434137481-13315-1-git-send-email-oded.gabbay@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, alexdeucher@gmail.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogQmVuIEdveiA8YmVuLmdvekBhbWQuY29tPgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFs bCB0aGUgVkkgTVFEIG1hbmFnZXIgZnVuY3Rpb25zLgpUaGlzIGlzIGRvbmUgaW4gYSBkaWZmZXJl bnQgZmlsZSBhcyB0aGUgTVFEIGZvcm1hdCBpcyBkaWZmZXJlbnQKYmV0d2VlbiBDSSBhbmQgVkkK ClNpZ25lZC1vZmYtYnk6IEJlbiBHb3ogPGJlbi5nb3pAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTog T2RlZCBHYWJiYXkgPG9kZWQuZ2FiYmF5QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3ZpLmMgfCAyNDkgKysrKysrKysrKysrKysrKysr KysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKaW5kZXggMjg1NTExNS4uN2ZjOWIwZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQvTWFrZWZpbGUKQEAgLTIsNyArMiw4IEBACiAjIE1ha2Vm aWxlIGZvciBIZXRlcm9nZW5vdXMgU3lzdGVtIEFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBBTUQg R1BVIGRldmljZXMKICMKIAotY2NmbGFncy15IDo9IC1JaW5jbHVkZS9kcm0gLUlkcml2ZXJzL2dw dS9kcm0vYW1kL2luY2x1ZGUvCitjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybSAtSWRyaXZlcnMv Z3B1L2RybS9hbWQvaW5jbHVkZS8gIFwKKwkJLUlkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUv YXNpY19yZWcKIAogYW1ka2ZkLXkJOj0ga2ZkX21vZHVsZS5vIGtmZF9kZXZpY2UubyBrZmRfY2hh cmRldi5vIGtmZF90b3BvbG9neS5vIFwKIAkJa2ZkX3Bhc2lkLm8ga2ZkX2Rvb3JiZWxsLm8ga2Zk X2ZsYXRfbWVtb3J5Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX21xZF9tYW5hZ2VyX3ZpLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFk X21hbmFnZXJfdmkuYwppbmRleCBiM2E3ZTNiLi5mYTMyYzMyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYwpAQCAtMjIsMTIgKzIyLDI1NSBA QAogICovCiAKICNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CiAjaW5jbHVkZSAia2ZkX3ByaXYuaCIKICNpbmNsdWRlICJrZmRfbXFkX21hbmFnZXIuaCIK KyNpbmNsdWRlICJ2aV9zdHJ1Y3RzLmgiCisjaW5jbHVkZSAiZ2NhL2dmeF84XzBfc2hfbWFzay5o IgorI2luY2x1ZGUgImdjYS9nZnhfOF8wX2VudW0uaCIKKworI2RlZmluZSBDUF9NUURfQ09OVFJP TF9fUFJJVl9TVEFURV9fU0hJRlQgMHg4CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHZpX21xZCAq Z2V0X21xZCh2b2lkICptcWQpCit7CisJcmV0dXJuIChzdHJ1Y3QgdmlfbXFkICopbXFkOworfQor CitzdGF0aWMgaW50IGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKiptcWQs CisJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRk ciwKKwkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQoreworCWludCByZXR2YWw7CisJdWlu dDY0X3QgYWRkcjsKKwlzdHJ1Y3QgdmlfbXFkICptOworCisJcmV0dmFsID0ga2ZkX2d0dF9zYV9h bGxvY2F0ZShtbS0+ZGV2LCBzaXplb2Yoc3RydWN0IHZpX21xZCksCisJCQltcWRfbWVtX29iaik7 CisJaWYgKHJldHZhbCAhPSAwKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW0gPSAoc3RydWN0IHZp X21xZCAqKSAoKm1xZF9tZW1fb2JqKS0+Y3B1X3B0cjsKKwlhZGRyID0gKCptcWRfbWVtX29iaikt PmdwdV9hZGRyOworCisJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgdmlfbXFkKSk7CisKKwlt LT5oZWFkZXIgPSAweEMwMzEwODAwOworCW0tPmNvbXB1dGVfcGlwZWxpbmVzdGF0X2VuYWJsZSA9 IDE7CisJbS0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UwID0gMHhGRkZGRkZGRjsKKwlt LT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTEgPSAweEZGRkZGRkZGOworCW0tPmNvbXB1 dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMiA9IDB4RkZGRkZGRkY7CisJbS0+Y29tcHV0ZV9zdGF0 aWNfdGhyZWFkX21nbXRfc2UzID0gMHhGRkZGRkZGRjsKKworCW0tPmNwX2hxZF9wZXJzaXN0ZW50 X3N0YXRlID0gQ1BfSFFEX1BFUlNJU1RFTlRfU1RBVEVfX1BSRUxPQURfUkVRX01BU0sgfAorCQkJ MHg1MyA8PCBDUF9IUURfUEVSU0lTVEVOVF9TVEFURV9fUFJFTE9BRF9TSVpFX19TSElGVDsKKwor CW0tPmNwX21xZF9jb250cm9sID0gMSA8PCBDUF9NUURfQ09OVFJPTF9fUFJJVl9TVEFURV9fU0hJ RlQgfAorCQkJTVRZUEVfVUMgPDwgQ1BfTVFEX0NPTlRST0xfX01UWVBFX19TSElGVDsKKworCW0t PmNwX21xZF9iYXNlX2FkZHJfbG8gICAgICAgID0gbG93ZXJfMzJfYml0cyhhZGRyKTsKKwltLT5j cF9tcWRfYmFzZV9hZGRyX2hpICAgICAgICA9IHVwcGVyXzMyX2JpdHMoYWRkcik7CisKKwltLT5j cF9ocWRfcXVhbnR1bSA9IDEgPDwgQ1BfSFFEX1FVQU5UVU1fX1FVQU5UVU1fRU5fX1NISUZUIHwK KwkJCTEgPDwgQ1BfSFFEX1FVQU5UVU1fX1FVQU5UVU1fU0NBTEVfX1NISUZUIHwKKwkJCTEwIDw8 IENQX0hRRF9RVUFOVFVNX19RVUFOVFVNX0RVUkFUSU9OX19TSElGVDsKKworCW0tPmNwX2hxZF9w aXBlX3ByaW9yaXR5ID0gMTsKKwltLT5jcF9ocWRfcXVldWVfcHJpb3JpdHkgPSAxNTsKKworCW0t PmNwX2hxZF9lb3BfcnB0ciA9IDEgPDwgQ1BfSFFEX0VPUF9SUFRSX19JTklUX0ZFVENIRVJfX1NI SUZUOworCisJaWYgKHEtPmZvcm1hdCA9PSBLRkRfUVVFVUVfRk9STUFUX0FRTCkKKwkJbS0+Y3Bf aHFkX2lxX3JwdHIgPSAxOworCisJKm1xZCA9IG07CisJaWYgKGdhcnRfYWRkciAhPSBOVUxMKQor CQkqZ2FydF9hZGRyID0gYWRkcjsKKwlyZXR2YWwgPSBtbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7 CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IGxvYWRfbXFkKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKm1xZCwKKwkJCXVpbnQzMl90IHBpcGVfaWQsIHVpbnQzMl90IHF1 ZXVlX2lkLAorCQkJdWludDMyX3QgX191c2VyICp3cHRyKQoreworCXJldHVybiBtbS0+ZGV2LT5r ZmQya2dkLT5ocWRfbG9hZAorCQkobW0tPmRldi0+a2dkLCBtcWQsIHBpcGVfaWQsIHF1ZXVlX2lk LCB3cHRyKTsKK30KKworc3RhdGljIGludCBfX3VwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2Vy ICptbSwgdm9pZCAqbXFkLAorCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEsIHVuc2lnbmVk IGludCBtdHlwZSwKKwkJCXVuc2lnbmVkIGludCBhdGNfYml0KQoreworCXN0cnVjdCB2aV9tcWQg Km07CisKKwlCVUdfT04oIW1tIHx8ICFxIHx8ICFtcWQpOworCisJcHJfZGVidWcoImtmZDogSW4g ZnVuYyAlc1xuIiwgX19mdW5jX18pOworCisJbSA9IGdldF9tcWQobXFkKTsKKworCW0tPmNwX2hx ZF9wcV9jb250cm9sID0gNSA8PCBDUF9IUURfUFFfQ09OVFJPTF9fUlBUUl9CTE9DS19TSVpFX19T SElGVCB8CisJCQlhdGNfYml0IDw8IENQX0hRRF9QUV9DT05UUk9MX19QUV9BVENfX1NISUZUIHwK KwkJCW10eXBlIDw8IENQX0hRRF9QUV9DT05UUk9MX19NVFlQRV9fU0hJRlQ7CisJbS0+Y3BfaHFk X3BxX2NvbnRyb2wgfD0KKwkJCWZmcyhxLT5xdWV1ZV9zaXplIC8gc2l6ZW9mKHVuc2lnbmVkIGlu dCkpIC0gMSAtIDE7CisJcHJfZGVidWcoImtmZDogY3BfaHFkX3BxX2NvbnRyb2wgMHgleFxuIiwg bS0+Y3BfaHFkX3BxX2NvbnRyb2wpOworCisJbS0+Y3BfaHFkX3BxX2Jhc2VfbG8gPSBsb3dlcl8z Ml9iaXRzKCh1aW50NjRfdClxLT5xdWV1ZV9hZGRyZXNzID4+IDgpOworCW0tPmNwX2hxZF9wcV9i YXNlX2hpID0gdXBwZXJfMzJfYml0cygodWludDY0X3QpcS0+cXVldWVfYWRkcmVzcyA+PiA4KTsK KworCW0tPmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2xvID0gbG93ZXJfMzJfYml0cygodWlu dDY0X3QpcS0+cmVhZF9wdHIpOworCW0tPmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2hpID0g dXBwZXJfMzJfYml0cygodWludDY0X3QpcS0+cmVhZF9wdHIpOworCisJbS0+Y3BfaHFkX3BxX2Rv b3JiZWxsX2NvbnRyb2wgPQorCQkxIDw8IENQX0hRRF9QUV9ET09SQkVMTF9DT05UUk9MX19ET09S QkVMTF9FTl9fU0hJRlQgfAorCQlxLT5kb29yYmVsbF9vZmYgPDwKKwkJCUNQX0hRRF9QUV9ET09S QkVMTF9DT05UUk9MX19ET09SQkVMTF9PRkZTRVRfX1NISUZUOworCXByX2RlYnVnKCJrZmQ6IGNw X2hxZF9wcV9kb29yYmVsbF9jb250cm9sIDB4JXhcbiIsCisJCQltLT5jcF9ocWRfcHFfZG9vcmJl bGxfY29udHJvbCk7CisKKwltLT5jcF9ocWRfZW9wX2NvbnRyb2wgPSBhdGNfYml0IDw8IENQX0hR RF9FT1BfQ09OVFJPTF9fRU9QX0FUQ19fU0hJRlQgfAorCQkJbXR5cGUgPDwgQ1BfSFFEX0VPUF9D T05UUk9MX19NVFlQRV9fU0hJRlQ7CisKKwltLT5jcF9ocWRfaWJfY29udHJvbCA9IGF0Y19iaXQg PDwgQ1BfSFFEX0lCX0NPTlRST0xfX0lCX0FUQ19fU0hJRlQgfAorCQkJMyA8PCBDUF9IUURfSUJf Q09OVFJPTF9fTUlOX0lCX0FWQUlMX1NJWkVfX1NISUZUIHwKKwkJCW10eXBlIDw8IENQX0hRRF9J Ql9DT05UUk9MX19NVFlQRV9fU0hJRlQ7CisKKwltLT5jcF9ocWRfZW9wX2NvbnRyb2wgfD0KKwkJ ZmZzKHEtPmVvcF9yaW5nX2J1ZmZlcl9zaXplIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpIC0gMSAt IDE7CisJbS0+Y3BfaHFkX2VvcF9iYXNlX2FkZHJfbG8gPQorCQkJbG93ZXJfMzJfYml0cyhxLT5l b3BfcmluZ19idWZmZXJfYWRkcmVzcyA+PiA4KTsKKwltLT5jcF9ocWRfZW9wX2Jhc2VfYWRkcl9o aSA9CisJCQl1cHBlcl8zMl9iaXRzKHEtPmVvcF9yaW5nX2J1ZmZlcl9hZGRyZXNzID4+IDgpOwor CisJbS0+Y3BfaHFkX2lxX3RpbWVyID0gYXRjX2JpdCA8PCBDUF9IUURfSVFfVElNRVJfX0lRX0FU Q19fU0hJRlQgfAorCQkJbXR5cGUgPDwgQ1BfSFFEX0lRX1RJTUVSX19NVFlQRV9fU0hJRlQ7CisK KwltLT5jcF9ocWRfdm1pZCA9IHEtPnZtaWQ7CisKKwlpZiAocS0+Zm9ybWF0ID09IEtGRF9RVUVV RV9GT1JNQVRfQVFMKSB7CisJCW0tPmNwX2hxZF9wcV9jb250cm9sIHw9IENQX0hRRF9QUV9DT05U Uk9MX19OT19VUERBVEVfUlBUUl9NQVNLIHwKKwkJCQkyIDw8IENQX0hRRF9QUV9DT05UUk9MX19T TE9UX0JBU0VEX1dQVFJfX1NISUZUOworCX0KKworCW0tPmNwX2hxZF9hY3RpdmUgPSAwOworCXEt PmlzX2FjdGl2ZSA9IGZhbHNlOworCWlmIChxLT5xdWV1ZV9zaXplID4gMCAmJgorCQkJcS0+cXVl dWVfYWRkcmVzcyAhPSAwICYmCisJCQlxLT5xdWV1ZV9wZXJjZW50ID4gMCkgeworCQltLT5jcF9o cWRfYWN0aXZlID0gMTsKKwkJcS0+aXNfYWN0aXZlID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworCitzdGF0aWMgaW50IHVwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqbXFkLAorCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpCit7CisJcmV0dXJuIF9fdXBk YXRlX21xZChtbSwgbXFkLCBxLCBNVFlQRV9DQywgMSk7Cit9CisKK3N0YXRpYyBpbnQgZGVzdHJv eV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLAorCQkJZW51bSBrZmRfcHJl ZW1wdF90eXBlIHR5cGUsCisJCQl1bnNpZ25lZCBpbnQgdGltZW91dCwgdWludDMyX3QgcGlwZV9p ZCwKKwkJCXVpbnQzMl90IHF1ZXVlX2lkKQoreworCXJldHVybiBtbS0+ZGV2LT5rZmQya2dkLT5o cWRfZGVzdHJveQorCQkobW0tPmRldi0+a2dkLCB0eXBlLCB0aW1lb3V0LAorCQlwaXBlX2lkLCBx dWV1ZV9pZCk7Cit9CisKK3N0YXRpYyB2b2lkIHVuaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2Vy ICptbSwgdm9pZCAqbXFkLAorCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaikKK3sK KwlCVUdfT04oIW1tIHx8ICFtcWQpOworCWtmZF9ndHRfc2FfZnJlZShtbS0+ZGV2LCBtcWRfbWVt X29iaik7Cit9CisKK3N0YXRpYyBib29sIGlzX29jY3VwaWVkKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKm1xZCwKKwkJCXVpbnQ2NF90IHF1ZXVlX2FkZHJlc3MsCXVpbnQzMl90IHBpcGVf aWQsCisJCQl1aW50MzJfdCBxdWV1ZV9pZCkKK3sKKwlyZXR1cm4gbW0tPmRldi0+a2ZkMmtnZC0+ aHFkX2lzX29jY3VwaWVkKAorCQltbS0+ZGV2LT5rZ2QsIHF1ZXVlX2FkZHJlc3MsCisJCXBpcGVf aWQsIHF1ZXVlX2lkKTsKK30KKworc3RhdGljIGludCBpbml0X21xZF9oaXEoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqKm1xZCwKKwkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1f b2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLAorCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEp Cit7CisJc3RydWN0IHZpX21xZCAqbTsKKwlpbnQgcmV0dmFsID0gaW5pdF9tcWQobW0sIG1xZCwg bXFkX21lbV9vYmosIGdhcnRfYWRkciwgcSk7CisKKwlpZiAocmV0dmFsICE9IDApCisJCXJldHVy biByZXR2YWw7CisKKwltID0gZ2V0X21xZCgqbXFkKTsKKworCW0tPmNwX2hxZF9wcV9jb250cm9s IHw9IDEgPDwgQ1BfSFFEX1BRX0NPTlRST0xfX1BSSVZfU1RBVEVfX1NISUZUIHwKKwkJCTEgPDwg Q1BfSFFEX1BRX0NPTlRST0xfX0tNRF9RVUVVRV9fU0hJRlQ7CisKKwlyZXR1cm4gcmV0dmFsOwor fQorCitzdGF0aWMgaW50IHVwZGF0ZV9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKm1xZCwKKwkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQoreworCXN0cnVjdCB2aV9t cWQgKm07CisJaW50IHJldHZhbCA9IF9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCBNVFlQRV9VQywg MCk7CisKKwlpZiAocmV0dmFsICE9IDApCisJCXJldHVybiByZXR2YWw7CisKKwltID0gZ2V0X21x ZChtcWQpOworCW0tPmNwX2hxZF92bWlkID0gcS0+dm1pZDsKKwlyZXR1cm4gcmV0dmFsOworfQog CiBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfdmkoZW51bSBLRkRfTVFEX1RZ UEUgdHlwZSwKLQkJCQkJc3RydWN0IGtmZF9kZXYgKmRldikKKwkJc3RydWN0IGtmZF9kZXYgKmRl dikKIHsKLQlwcl93YXJuKCJhbWRrZmQ6IFZJIE1RRCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRl ZFxuIik7Ci0JcmV0dXJuIE5VTEw7CisJc3RydWN0IG1xZF9tYW5hZ2VyICptcWQ7CisKKwlCVUdf T04oIWRldik7CisJQlVHX09OKHR5cGUgPj0gS0ZEX01RRF9UWVBFX01BWCk7CisKKwlwcl9kZWJ1 Zygia2ZkOiBJbiBmdW5jICVzXG4iLCBfX2Z1bmNfXyk7CisKKwltcWQgPSBremFsbG9jKHNpemVv ZihzdHJ1Y3QgbXFkX21hbmFnZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1xZCkKKwkJcmV0dXJu IE5VTEw7CisKKwltcWQtPmRldiA9IGRldjsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgS0ZE X01RRF9UWVBFX0NQOgorCWNhc2UgS0ZEX01RRF9UWVBFX0NPTVBVVEU6CisJCW1xZC0+aW5pdF9t cWQgPSBpbml0X21xZDsKKwkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZDsKKwkJbXFkLT5s b2FkX21xZCA9IGxvYWRfbXFkOworCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkOworCQlt cWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7CisJCW1xZC0+aXNfb2NjdXBpZWQgPSBpc19v Y2N1cGllZDsKKwkJYnJlYWs7CisJY2FzZSBLRkRfTVFEX1RZUEVfSElROgorCQltcWQtPmluaXRf bXFkID0gaW5pdF9tcWRfaGlxOworCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkOworCQlt cWQtPmxvYWRfbXFkID0gbG9hZF9tcWQ7CisJCW1xZC0+dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWRf aGlxOworCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7CisJCW1xZC0+aXNfb2NjdXBp ZWQgPSBpc19vY2N1cGllZDsKKwkJYnJlYWs7CisJY2FzZSBLRkRfTVFEX1RZUEVfU0RNQToKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJa2ZyZWUobXFkKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJ cmV0dXJuIG1xZDsKIH0KLS0gCjIuNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=