From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH xf86-video-amdgpu 3/3] Add RandR leases with modesetting driver support [v6] Date: Fri, 2 Mar 2018 20:49:31 -0800 Message-ID: <20180303044931.6902-4-keithp@keithp.com> References: <[PATCH xf86-video-amdgpu 0/3] Add non-desktop and leasing support> <20180303044931.6902-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180303044931.6902-1-keithp-aN4HjG94KOLQT0dZR+AlfA@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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: michel-otUistvHUpPR7s880joybQ@public.gmane.org, keithp-aN4HjG94KOLQT0dZR+AlfA@public.gmane.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIFJhbmRSIENSVEMvT3V0cHV0IGxlYXNlcyB0aHJvdWdoIHRo ZSBtb2Rlc2V0dGluZwpkcml2ZXIsIGNyZWF0aW5nIGEgbGVhc2UgdXNpbmcgbmV3IGtlcm5lbCBp bmZyYXN0cnVjdHVyZSBhbmQgcmV0dXJuaW5nCnRoYXQgdG8gYSBjbGllbnQgdGhyb3VnaCBhbiBm ZCB3aGljaCB3aWxsIGhhdmUgYWNjZXNzIHRvIG9ubHkgdGhvc2UKcmVzb3VyY2VzLgoKdjI6CVJl c3RvcmUgQ1JUQyBtb2RlIHdoZW4gbGVhc2VzIHRlcm1pbmF0ZQoKCVdoZW4gYSBsZWFzZSB0ZXJt aW5hdGVzIGZvciBhIGNydGMgd2UgaGF2ZSBzYXZlZCBkYXRhIGZvciwgZ28KCWFoZWFkIGFuZCBy ZXN0b3JlIHRoZSBzYXZlZCBtb2RlLgoKdjM6CVJlcG9ydCBSUl9Sb3RhdGVfMCByb3RhdGlvbnMg Zm9yIGxlYXNlZCBjcnRjcy4KCglJZ25vcmUgbGVhc2VkIENSVENzIHdoZW4gc2VsZWN0aW5nIHNj cmVlbiBzaXplLgoKCVN0b3AgbGVhc2luZyBlbmNvZGVycywgdGhlIGtlcm5lbCBkb2Vzbid0IGRv IHRoYXQgYW55bW9yZS4KCglUdXJuIG9mZiBjcnRjLT5lbmFibGVkIHdoaWxlIGxlYXNlZCBzbyB0 aGF0IG1vZGVzZXR0aW5nCglpZ25vcmVzIHRoZW0uCgoJQ2hlY2sgbGVhc2Ugc3RhdHVzIGJlZm9y ZSBjYWxsaW5nIGFueSBkcml2ZXIgbW9kZSBmdW5jdGlvbnMKCglXaGVuIHN0YXJ0aW5nIGEgbGVh c2UsIG1hcmsgbGVhc2VkIENSVENzIGFzIGRpc2FibGVkIGFuZCBoaWRlCgl0aGVpciBjdXJzb3Jz LiBBbHNvLCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyCglub24tbGVhc2VkIENSVENz IHdoaWNoIGFyZSBkcml2aW5nIGxlYXNlZCBPdXRwdXRzIGFuZCBtYXJrCgl0aGVtIGFzIGRpc2Fi bGVkIGFzIHdlbGwuIFNvbWV0aW1lcyBhbiBhcHBsaWNhdGlvbiB3aWxsIGxlYXNlCglhbiBpZGxl IGNydGMgaW5zdGVhZCBvZiB0aGUgb25lIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIHRoZQoJbGVh c2VkIG91dHB1dC4KCglXaGVuIHRlcm1pbmF0aW5nIGEgbGVhc2UsIHJlc2V0IGFueSBDUlRDcyB3 aGljaCBhcmUgZHJpdmluZwoJb3V0cHV0cyB0aGF0IGFyZSBubyBsb25nZXIgbGVhc2VkIHNvIHRo YXQgdGhleSBzdGFydCB3b3JraW5nCglhZ2Fpbi4KCglUaGlzIHJlcXVpcmVkIHNwbGl0dGluZyB0 aGUgRElYIGxldmVsIGxlYXNlIHRlcm1pbmF0aW9uIGNvZGUKCWludG8gdHdvIHBpZWNlcywgb25l IHRvIHJlbW92ZSB0aGUgbGVhc2UgZnJvbSB0aGUgc3lzdGVtCgkoUlJMZWFzZVRlcm1pbmF0ZWQp IGFuZCBhIG5ldyBmdW5jdGlvbiB0aGF0IGZyZWVzIHRoZSBsZWFzZQoJZGF0YSBzdHJ1Y3R1cmUg KFJSTGVhc2VGcmVlKS4KCnY0OglSZXBvcnQgUlJfUm90YXRlXzAgcm90YXRpb24gZm9yIGxlYXNl ZCBjcnRjcy4KCnY1OiBUZXJtaW5hdGUgYWxsIGxlYXNlcyBvbiBzZXJ2ZXIgcmVzZXQuCgoJTGVh c2VzIGhhbmcgYXJvdW5kIGFmdGVyIHRoZSBhc3NvY2lhdGVkIGNsaWVudCBleGl0cyBzbyB0aGF0 Cgl0aGUgY2xpZW50IGRvZXNuJ3QgbmVlZCB0byBvY2N1cHkgYW4gWCBzZXJ2ZXIgY2xpZW50IHNs b3QgYW5kCgljb25zdW1lIGEgZmlsZSBkZXNjcmlwdG9yIG9uY2UgaXQgaGFzIGdvdHRlbiB0aGUg b3V0cHV0CglyZXNvdXJjZXMgbmVjZXNzYXJ5LgoKCUFueSBsZWFzZXMgc3RpbGwgaGFuZ2luZyBh cm91bmQgd2hlbiB0aGUgWCBzZXJ2ZXIgcmVzZXRzIG9yCglzaHV0cyBkb3duIG5lZWQgdG8gYmUg Y2xlYW5lZCB1cCBieSBjYWxsaW5nIHRoZSBrZXJuZWwgdG8KCXRlcm1pbmF0ZSB0aGUgbGVhc2Ug YW5kIGZyZWVpbmcgYW55IERJWCBzdHJ1Y3R1cmVzLgoKCU5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2lt cGx5IHVzZSB0aGUgZXhpc3RpbmcKCWRybW1vZGVfdGVybWluYXRlX2xlYXNlIGZ1bmN0aW9uIG9u IGVhY2ggbGVhc2UgYXMgdGhhdCB3YW50cwoJdG8gYWxzbyByZXNldCB0aGUgdmlkZW8gbW9kZSwg YW5kIGR1cmluZyBzZXJ2ZXIgc2h1dCBkb3duIHRoYXQKCiAgIG1vZGVzZXR0aW5nOiBWYWxpZGF0 ZSBsZWFzZXMgb24gVlQgZW50ZXIKCglUaGUga2VybmVsIGRvZXNuJ3QgYWxsb3cgYW55IG1hc3Rl ciBpb2N0bHMgdG8gcnVuIHdoZW4gYW5vdGhlcgoJVlQgaXMgYWN0aXZlLCBpbmNsdWRpbmcgc2lt cGxlIHRoaW5ncyBsaWtlIGxpc3RpbmcgdGhlIGFjdGl2ZQoJbGVhc2VzLiBUbyBkZWFsIHdpdGgg dGhhdCwgd2UgY2hlY2sgdGhlIGxpc3Qgb2YgbGVhc2VzCgl3aGVuZXZlciB0aGUgWCBzZXJ2ZXIg VlQgaXMgYWN0aXZhdGVkLgoKICAgeGZyZWU4NjogaGlkZSBkaXNhYmxlZCBjdXJzb3JzIHdoZW4g cmVzZXR0aW5nIGFmdGVyIGxlYXNlIHRlcm1pbmF0aW9uCgoJVGhlIGxlc3NlZSBtYXkgd2VsbCBo YXZlIHBsYXllZCB3aXRoIGN1cnNvcnMgYW5kIGxlZnQgb25lCglhY3RpdmUgb24gb3VyIHNjcmVl bi4gSnVzdCB0ZWxsIHRoZSBrZXJuZWwgdG8gdHVybiBpdCBvZmYuCgp2NjoJQWRkIG1lc29uIGJ1 aWxkIGluZnJhc3RydWN0dXJlCgpbQWxzbyBidW1wZWQgbGliZHJtIHJlcXVpcmVtZW50IC0gYWph eF0KClNpZ25lZC1vZmYtYnk6IEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgpSZXZp ZXdlZC1ieTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci0tLQogY29uZmlndXJlLmFj ICAgICAgICAgIHwgIDEyICsrKysrCiBzcmMvYW1kZ3B1X2ttcy5jICAgICAgfCAgIDIgKwogc3Jj L2RybW1vZGVfZGlzcGxheS5jIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiBzcmMvZHJtbW9kZV9kaXNwbGF5LmggfCAgIDUgKysKIDQgZmls ZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZTdjYzkzMy4uZmY0YTk2NSAxMDA2 NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTQsNiArNTQsMTQg QEAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCiAJQ1BQRkxBR1M9IiRDUFBGTEFHUyAt V2FsbCIKIGZpCiAKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNs dWRlIDxmZWF0dXJlcy5oPgorI2lmbmRlZiBfX0dMSUJDX18KKyNlcnJvciBub3QgZ2xpYmMKKyNl bmRpZgorXV0sIFtdKV0sIFtBQ19ERUZJTkUoX0dOVV9TT1VSQ0UsIDEsCisJWyBFbmFibGUgR05V IGFuZCBvdGhlciBleHRlbnNpb25zIHRvIHRoZSBDIGVudmlyb25tZW50IGZvciBnbGliY10pXSkK KwogQUhfVE9QKFsjaW5jbHVkZSAieG9yZy1zZXJ2ZXIuaCJdKQogCiAjIERlZmluZSBhIGNvbmZp Z3VyZSBvcHRpb24gZm9yIGFuIGFsdGVybmF0ZSBtb2R1bGUgZGlyZWN0b3J5CkBAIC0yMDMsNiAr MjExLDggQEAgQUNfQ0hFQ0tfSEVBREVSUyhbZHJpMy5oXSwgW10sIFtdLAogCiBDUFBGTEFHUz0i JFNBVkVfQ1BQRkxBR1MiCiAKK0FDX0NIRUNLX0xJQihbYnNkXSwgW2FyYzRyYW5kb21fYnVmXSkK KwogIyBDaGVja3MgZm9yIGhlYWRlcnMvbWFjcm9zIGZvciBieXRlIHN3YXBwaW5nCiAjIEtub3du IHZhcmlhbnRzOgogIwk8Ynl0ZXN3YXAuaD4gYnN3YXBfMTYsIGJzd2FwXzMyLCBic3dhcF82NCAg KGdsaWJjKQpAQCAtMjEzLDYgKzIyMyw4IEBAIENQUEZMQUdTPSIkU0FWRV9DUFBGTEFHUyIKICMg aWYgPGJ5dGVzd2FwLmg+IGlzIGZvdW5kLCBhc3N1bWUgaXQncyB0aGUgY29ycmVjdCB2ZXJzaW9u CiBBQ19DSEVDS19IRUFERVJTKFtieXRlc3dhcC5oXSkKIAorQUNfUkVQTEFDRV9GVU5DUyhbcmVh bGxvY2FycmF5XSkKKwogIyBpZiA8c3lzL2VuZGlhbi5oPiBpcyBmb3VuZCwgaGF2ZSB0byBjaGVj ayB3aGljaCB2ZXJzaW9uCiBBQ19DSEVDS19IRUFERVIoW3N5cy9lbmRpYW4uaF0sIFtIQVZFX1NZ U19FTkRJQU5fSD0ieWVzIl0sIFtIQVZFX1NZU19FTkRJQU5fSD0ibm8iXSkKIApkaWZmIC0tZ2l0 IGEvc3JjL2FtZGdwdV9rbXMuYyBiL3NyYy9hbWRncHVfa21zLmMKaW5kZXggZTFhYWU5OS4uMDM3 ZGRhMCAxMDA2NDQKLS0tIGEvc3JjL2FtZGdwdV9rbXMuYworKysgYi9zcmMvYW1kZ3B1X2ttcy5j CkBAIC0xNzA4LDYgKzE3MDgsOCBAQCBzdGF0aWMgQm9vbCBBTURHUFVDbG9zZVNjcmVlbl9LTVMo U2NyZWVuUHRyIHBTY3JlZW4pCiAJLyogQ2xlYXIgbWFzayBvZiBhc3NpZ25lZCBjcnRjJ3MgaW4g dGhpcyBnZW5lcmF0aW9uICovCiAJcEFNREdQVUVudC0+YXNzaWduZWRfY3J0Y3MgPSAwOwogCisJ ZHJtbW9kZV90ZXJtaW5hdGVfbGVhc2VzKHBTY3JuLCAmaW5mby0+ZHJtbW9kZSk7CisKIAlkcm1t b2RlX3VldmVudF9maW5pKHBTY3JuLCAmaW5mby0+ZHJtbW9kZSk7CiAJYW1kZ3B1X2RybV9xdWV1 ZV9jbG9zZShwU2Nybik7CiAKZGlmZiAtLWdpdCBhL3NyYy9kcm1tb2RlX2Rpc3BsYXkuYyBiL3Ny Yy9kcm1tb2RlX2Rpc3BsYXkuYwppbmRleCBmZTMxOWViLi5kZTUyZjJmIDEwMDY0NAotLS0gYS9z cmMvZHJtbW9kZV9kaXNwbGF5LmMKKysrIGIvc3JjL2RybW1vZGVfZGlzcGxheS5jCkBAIC0yMzAz LDggKzIzMDMsMTUwIEBAIGZhaWw6CiAJcmV0dXJuIEZBTFNFOwogfQogCitzdGF0aWMgdm9pZAor ZHJtbW9kZV92YWxpZGF0ZV9sZWFzZXMoU2NybkluZm9QdHIgc2NybikKK3sKKwlTY3JlZW5QdHIg c2NyZWVuID0gc2Nybi0+cFNjcmVlbjsKKwlyclNjclByaXZQdHIgc2NyX3ByaXYgPSByckdldFNj clByaXYoc2NyZWVuKTsKKwlBTURHUFVFbnRQdHIgcEFNREdQVUVudCA9IEFNREdQVUVudFByaXYo c2Nybik7CisJZHJtTW9kZUxlc3NlZUxpc3RQdHIgbGVzc2VlczsKKwlSUkxlYXNlUHRyIGxlYXNl LCBuZXh0OworCWludCBsOworCisJLyogV2UgY2FuJ3QgdGFsayB0byB0aGUga2VybmVsIGFib3V0 IGxlYXNlcyB3aGVuIFZUIHN3aXRjaGVkICovCisJaWYgKCFzY3JuLT52dFNlbWEpCisJCXJldHVy bjsKKworCWxlc3NlZXMgPSBkcm1Nb2RlTGlzdExlc3NlZXMocEFNREdQVUVudC0+ZmQpOworCWlm ICghbGVzc2VlcykKKwkJcmV0dXJuOworCisJeG9yZ19saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo bGVhc2UsIG5leHQsICZzY3JfcHJpdi0+bGVhc2VzLCBsaXN0KSB7CisJCWRybW1vZGVfbGVhc2Vf cHJpdmF0ZV9wdHIgbGVhc2VfcHJpdmF0ZSA9IGxlYXNlLT5kZXZQcml2YXRlOworCisJCWZvciAo bCA9IDA7IGwgPCBsZXNzZWVzLT5jb3VudDsgbCsrKSB7CisJCQlpZiAobGVzc2Vlcy0+bGVzc2Vl c1tsXSA9PSBsZWFzZV9wcml2YXRlLT5sZXNzZWVfaWQpCisJCQkJYnJlYWs7CisJCX0KKworCQkv KiBjaGVjayB0byBzZWUgaWYgdGhlIGxlYXNlIGhhcyBnb25lIGF3YXkgKi8KKwkJaWYgKGwgPT0g bGVzc2Vlcy0+Y291bnQpIHsKKwkJCWZyZWUobGVhc2VfcHJpdmF0ZSk7CisJCQlsZWFzZS0+ZGV2 UHJpdmF0ZSA9IE5VTEw7CisJCQl4Zjg2Q3J0Y0xlYXNlVGVybWluYXRlZChsZWFzZSk7CisJCX0K Kwl9CisKKwlmcmVlKGxlc3NlZXMpOworfQorCitzdGF0aWMgaW50Citkcm1tb2RlX2NyZWF0ZV9s ZWFzZShSUkxlYXNlUHRyIGxlYXNlLCBpbnQgKmZkKQoreworCVNjcmVlblB0ciBzY3JlZW4gPSBs ZWFzZS0+c2NyZWVuOworCVNjcm5JbmZvUHRyIHNjcm4gPSB4Zjg2U2NyZWVuVG9TY3JuKHNjcmVl bik7CisJQU1ER1BVRW50UHRyIHBBTURHUFVFbnQgPSBBTURHUFVFbnRQcml2KHNjcm4pOworCWlu dCBuY3J0YyA9IGxlYXNlLT5udW1DcnRjczsKKwlpbnQgbm91dHB1dCA9IGxlYXNlLT5udW1PdXRw dXRzOworCWludCBub2JqZWN0czsKKwlpbnQgYywgbzsKKwlpbnQgaTsKKwlpbnQgbGVhc2VfZmQ7 CisJdWludDMyX3QgKm9iamVjdHM7CisJZHJtbW9kZV9sZWFzZV9wcml2YXRlX3B0ciAgIGxlYXNl X3ByaXZhdGU7CisKKwlub2JqZWN0cyA9IG5jcnRjICsgbm91dHB1dDsKKworCWlmIChub2JqZWN0 cyA9PSAwKQorCQlyZXR1cm4gQmFkVmFsdWU7CisKKwlsZWFzZV9wcml2YXRlID0gY2FsbG9jKDEs IHNpemVvZiAoZHJtbW9kZV9sZWFzZV9wcml2YXRlX3JlYykpOworCWlmICghbGVhc2VfcHJpdmF0 ZSkKKwkJcmV0dXJuIEJhZEFsbG9jOworCisJb2JqZWN0cyA9IHhhbGxvY2FycmF5KG5vYmplY3Rz LCBzaXplb2YgKHVpbnQzMl90KSk7CisKKwlpZiAoIW9iamVjdHMpIHsKKwkJZnJlZShsZWFzZV9w cml2YXRlKTsKKwkJcmV0dXJuIEJhZEFsbG9jOworCX0KKworCWkgPSAwOworCisJLyogQWRkIENS VEMgaWRzICovCisJZm9yIChjID0gMDsgYyA8IG5jcnRjOyBjKyspIHsKKwkJeGY4NkNydGNQdHIg Y3J0YyA9IGxlYXNlLT5jcnRjc1tjXS0+ZGV2UHJpdmF0ZTsKKwkJZHJtbW9kZV9jcnRjX3ByaXZh dGVfcHRyIGRybW1vZGVfY3J0YyA9IGNydGMtPmRyaXZlcl9wcml2YXRlOworCisJCW9iamVjdHNb aSsrXSA9IGRybW1vZGVfY3J0Yy0+bW9kZV9jcnRjLT5jcnRjX2lkOworCX0KKworCS8qIEFkZCBj b25uZWN0b3IgaWRzICovCisKKwlmb3IgKG8gPSAwOyBvIDwgbm91dHB1dDsgbysrKSB7CisJCXhm ODZPdXRwdXRQdHIgICBvdXRwdXQgPSBsZWFzZS0+b3V0cHV0c1tvXS0+ZGV2UHJpdmF0ZTsKKwkJ ZHJtbW9kZV9vdXRwdXRfcHJpdmF0ZV9wdHIgZHJtbW9kZV9vdXRwdXQgPSBvdXRwdXQtPmRyaXZl cl9wcml2YXRlOworCisJCW9iamVjdHNbaSsrXSA9IGRybW1vZGVfb3V0cHV0LT5tb2RlX291dHB1 dC0+Y29ubmVjdG9yX2lkOworCX0KKworCS8qIGNhbGwga2VybmVsIHRvIGNyZWF0ZSBsZWFzZSAq LworCWFzc2VydCAoaSA9PSBub2JqZWN0cyk7CisKKwlsZWFzZV9mZCA9IGRybU1vZGVDcmVhdGVM ZWFzZShwQU1ER1BVRW50LT5mZCwgb2JqZWN0cywgbm9iamVjdHMsIDAsICZsZWFzZV9wcml2YXRl LT5sZXNzZWVfaWQpOworCisJZnJlZShvYmplY3RzKTsKKworCWlmIChsZWFzZV9mZCA8IDApIHsK KwkJZnJlZShsZWFzZV9wcml2YXRlKTsKKwkJcmV0dXJuIEJhZE1hdGNoOworCX0KKworCWxlYXNl LT5kZXZQcml2YXRlID0gbGVhc2VfcHJpdmF0ZTsKKworCXhmODZDcnRjTGVhc2VTdGFydGVkKGxl YXNlKTsKKworCSpmZCA9IGxlYXNlX2ZkOworCXJldHVybiBTdWNjZXNzOworfQorCitzdGF0aWMg dm9pZAorZHJtbW9kZV90ZXJtaW5hdGVfbGVhc2UoUlJMZWFzZVB0ciBsZWFzZSkKK3sKKwlTY3Jl ZW5QdHIgc2NyZWVuID0gbGVhc2UtPnNjcmVlbjsKKwlTY3JuSW5mb1B0ciBzY3JuID0geGY4NlNj cmVlblRvU2NybihzY3JlZW4pOworCUFNREdQVUVudFB0ciBwQU1ER1BVRW50ID0gQU1ER1BVRW50 UHJpdihzY3JuKTsKKwlkcm1tb2RlX2xlYXNlX3ByaXZhdGVfcHRyIGxlYXNlX3ByaXZhdGUgPSBs ZWFzZS0+ZGV2UHJpdmF0ZTsKKworCWlmIChkcm1Nb2RlUmV2b2tlTGVhc2UocEFNREdQVUVudC0+ ZmQsIGxlYXNlX3ByaXZhdGUtPmxlc3NlZV9pZCkgPT0gMCkgeworCQlmcmVlKGxlYXNlX3ByaXZh dGUpOworCQlsZWFzZS0+ZGV2UHJpdmF0ZSA9IE5VTEw7CisJCXhmODZDcnRjTGVhc2VUZXJtaW5h dGVkKGxlYXNlKTsKKwl9Cit9CisKK3ZvaWQKK2RybW1vZGVfdGVybWluYXRlX2xlYXNlcyhTY3Ju SW5mb1B0ciBwU2NybiwgZHJtbW9kZV9wdHIgZHJtbW9kZSkKK3sKKwlTY3JlZW5QdHIgc2NyZWVu ID0geGY4NlNjcm5Ub1NjcmVlbihwU2Nybik7CisJQU1ER1BVRW50UHRyIHBBTURHUFVFbnQgPSBB TURHUFVFbnRQcml2KHBTY3JuKTsKKwlyclNjclByaXZQdHIgc2NyX3ByaXYgPSByckdldFNjclBy aXYoc2NyZWVuKTsKKwlSUkxlYXNlUHRyIGxlYXNlLCBuZXh0OworCisJeG9yZ19saXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUobGVhc2UsIG5leHQsICZzY3JfcHJpdi0+bGVhc2VzLCBsaXN0KSB7CisJ CWRybW1vZGVfbGVhc2VfcHJpdmF0ZV9wdHIgbGVhc2VfcHJpdmF0ZSA9IGxlYXNlLT5kZXZQcml2 YXRlOworCQlkcm1Nb2RlUmV2b2tlTGVhc2UocEFNREdQVUVudC0+ZmQsIGxlYXNlX3ByaXZhdGUt Pmxlc3NlZV9pZCk7CisJCWZyZWUobGVhc2VfcHJpdmF0ZSk7CisJCWxlYXNlLT5kZXZQcml2YXRl ID0gTlVMTDsKKwkJUlJMZWFzZVRlcm1pbmF0ZWQobGVhc2UpOworCQlSUkxlYXNlRnJlZShsZWFz ZSk7CisJfQorfQorCiBzdGF0aWMgY29uc3QgeGY4NkNydGNDb25maWdGdW5jc1JlYyBkcm1tb2Rl X3hmODZjcnRjX2NvbmZpZ19mdW5jcyA9IHsKLQlkcm1tb2RlX3hmODZjcnRjX3Jlc2l6ZQorCS5y ZXNpemUgPSBkcm1tb2RlX3hmODZjcnRjX3Jlc2l6ZSwKKwkuY3JlYXRlX2xlYXNlID0gZHJtbW9k ZV9jcmVhdGVfbGVhc2UsCisJLnRlcm1pbmF0ZV9sZWFzZSA9IGRybW1vZGVfdGVybWluYXRlX2xl YXNlCiB9OwogCiBzdGF0aWMgdm9pZApAQCAtMjg4Miw2ICszMDI0LDkgQEAgcmVzdGFydF9kZXN0 cm95OgogCQkJY2hhbmdlZCA9IFRSVUU7CiAJfQogCisJLyogQ2hlY2sgdG8gc2VlIGlmIGEgbGVz c2VlIGhhcyBkaXNhcHBlYXJlZCAqLworCWRybW1vZGVfdmFsaWRhdGVfbGVhc2VzKHNjcm4pOwor CiAJaWYgKGNoYW5nZWQgJiYgZGl4UHJpdmF0ZUtleVJlZ2lzdGVyZWQocnJQcml2S2V5KSkgewog I2lmIFhPUkdfVkVSU0lPTl9DVVJSRU5UID49IFhPUkdfVkVSU0lPTl9OVU1FUklDKDEsMTQsOTks MiwwKQogCQlSUlNldENoYW5nZWQoeGY4NlNjcm5Ub1NjcmVlbihzY3JuKSk7CmRpZmYgLS1naXQg YS9zcmMvZHJtbW9kZV9kaXNwbGF5LmggYi9zcmMvZHJtbW9kZV9kaXNwbGF5LmgKaW5kZXggNGU2 ZjcwNy4uYzZmMTVhZiAxMDA2NDQKLS0tIGEvc3JjL2RybW1vZGVfZGlzcGxheS5oCisrKyBiL3Ny Yy9kcm1tb2RlX2Rpc3BsYXkuaApAQCAtMTMyLDYgKzEzMiw5IEBAIHR5cGVkZWYgc3RydWN0IHsK IAlpbnQgdGVhcl9mcmVlOwogfSBkcm1tb2RlX291dHB1dF9wcml2YXRlX3JlYywgKmRybW1vZGVf b3V0cHV0X3ByaXZhdGVfcHRyOwogCit0eXBlZGVmIHN0cnVjdCB7CisJdWludDMyX3QgICAgbGVz c2VlX2lkOworfSBkcm1tb2RlX2xlYXNlX3ByaXZhdGVfcmVjLCAqZHJtbW9kZV9sZWFzZV9wcml2 YXRlX3B0cjsKIAogZW51bSBkcm1tb2RlX2ZsaXBfc3luYyB7CiAgICAgRkxJUF9WU1lOQywKQEAg LTIyMCw2ICsyMjMsOCBAQCBQaXhtYXBQdHIgZHJtbW9kZV9jcnRjX3NjYW5vdXRfY3JlYXRlKHhm ODZDcnRjUHRyIGNydGMsCiBleHRlcm4gdm9pZCBkcm1tb2RlX3VldmVudF9pbml0KFNjcm5JbmZv UHRyIHNjcm4sIGRybW1vZGVfcHRyIGRybW1vZGUpOwogZXh0ZXJuIHZvaWQgZHJtbW9kZV91ZXZl bnRfZmluaShTY3JuSW5mb1B0ciBzY3JuLCBkcm1tb2RlX3B0ciBkcm1tb2RlKTsKIAorZXh0ZXJu IHZvaWQgZHJtbW9kZV90ZXJtaW5hdGVfbGVhc2VzKFNjcm5JbmZvUHRyIHNjcm4sIGRybW1vZGVf cHRyIGRybW1vZGUpOworCiBCb29sIGRybW1vZGVfc2V0X21vZGUoeGY4NkNydGNQdHIgY3J0Yywg c3RydWN0IGRybW1vZGVfZmIgKmZiLAogCQkgICAgICBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQg eCwgaW50IHkpOwogCi0tIAoyLjE2LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeAo=