From mboxrd@z Thu Jan 1 00:00:00 1970 From: Owen Smith Subject: [PATCH 2/3 v4] xenfb: Use Input Handlers directly Date: Tue, 26 Sep 2017 14:43:38 +0000 Message-ID: <1506437019-17946-3-git-send-email-owen.smith@citrix.com> References: <1506437019-17946-1-git-send-email-owen.smith@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dwrBG-0006Mf-WC for xen-devel@lists.xenproject.org; Tue, 26 Sep 2017 14:49:51 +0000 In-Reply-To: <1506437019-17946-1-git-send-email-owen.smith@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: sstabellini@kernel.org, anthony.perard@citrix.com, kraxel@redhat.com Cc: xen-devel@lists.xenproject.org, qemu-devel@nongnu.org, Owen Smith List-Id: xen-devel@lists.xenproject.org QXZvaWQgdGhlIHVubmVjY2Vzc2FyeSBjYWxscyB0aHJvdWdoIHRoZSBpbnB1dC1sZWdhY3kuYyBm aWxlIGJ5CnVzaW5nIHRoZSBxZW11X2lucHV0X2hhbmRsZXJfKigpIGNhbGxzIGRpcmVjdGx5LiBU aGlzIGRpZCByZXF1aXJlCnJld29ya2luZyB0aGUgZXZlbnQgYW5kIHN5bmMgaGFuZGxlcnMgdG8g dXNlIHRoZSByZXZlcnNlIG1hcHBpbmcKZnJvbSBxY29kZSB0byBsaW51eCB1c2luZyBxZW11X2lu cHV0X3Fjb2RlX3RvX2xpbnV4KCkuClJlbW92ZXMgdGhlIHNjYW5jb2RlMmxpbnV4IG1hcHBpbmcs IGFuZCBzdXBwb3J0aW5nIGRvY3VtZW50aW9uLgoKU2lnbmVkLW9mZi1ieTogT3dlbiBTbWl0aCA8 b3dlbi5zbWl0aEBjaXRyaXguY29tPgotLS0KIGh3L2Rpc3BsYXkveGVuZmIuYyB8IDI4OSArKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAxNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvaHcvZGlzcGxheS94ZW5mYi5jIGIvaHcvZGlzcGxheS94ZW5mYi5jCmluZGV4IGRmOGI3OGYu LjMzMzYxYjQgMTAwNjQ0Ci0tLSBhL2h3L2Rpc3BsYXkveGVuZmIuYworKysgYi9ody9kaXNwbGF5 L3hlbmZiLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJxZW11L29zZGVwLmgiCiAKICNp bmNsdWRlICJody9ody5oIgorI2luY2x1ZGUgInVpL2lucHV0LmgiCiAjaW5jbHVkZSAidWkvY29u c29sZS5oIgogI2luY2x1ZGUgImh3L3hlbi94ZW5fYmFja2VuZC5oIgogCkBAIC01MSw5ICs1Miwx MCBAQCBzdHJ1Y3QgY29tbW9uIHsKIHN0cnVjdCBYZW5JbnB1dCB7CiAgICAgc3RydWN0IGNvbW1v biBjOwogICAgIGludCBhYnNfcG9pbnRlcl93YW50ZWQ7IC8qIFdoZXRoZXIgZ3Vlc3Qgc3VwcG9y dHMgYWJzb2x1dGUgcG9pbnRlciAqLwotICAgIGludCBidXR0b25fc3RhdGU7ICAgICAgIC8qIExh c3Qgc2VlbiBwb2ludGVyIGJ1dHRvbiBzdGF0ZSAqLwotICAgIGludCBleHRlbmRlZDsKLSAgICBR RU1VUHV0TW91c2VFbnRyeSAqcW1vdXNlOworICAgIFFlbXVJbnB1dEhhbmRsZXJTdGF0ZSAqcWti ZDsKKyAgICBRZW11SW5wdXRIYW5kbGVyU3RhdGUgKnFtb3U7CisgICAgaW50IG1vdXNlX2F4ZXNb SU5QVVRfQVhJU19fTUFYXTsKKyAgICBpbnQgbW91c2Vfd2hlZWw7CiB9OwogCiAjZGVmaW5lIFVQ X1FVRVVFIDgKQEAgLTExOSw3OSArMTIxLDYgQEAgc3RhdGljIHZvaWQgY29tbW9uX3VuYmluZChz dHJ1Y3QgY29tbW9uICpjKQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWYgMAotLyoKLSAq IFRoZXNlIHR3byB0YWJsZXMgYXJlIG5vdCBuZWVkZWQgYW55IG1vcmUsIGJ1dCBsZWZ0IGluIGhl cmUKLSAqIGludGVudGlvbmFsbHkgYXMgZG9jdW1lbnRhdGlvbiwgdG8gc2hvdyBob3cgc2NhbmNv ZGUybGludXhbXQotICogd2FzIGdlbmVyYXRlZC4KLSAqCi0gKiBUYWJsZXMgdG8gbWFwIGZyb20g c2NhbmNvZGUgdG8gTGludXggaW5wdXQgbGF5ZXIga2V5Y29kZS4KLSAqIFNjYW5jb2RlcyBhcmUg aGFyZHdhcmUtc3BlY2lmaWMuICBUaGVzZSBtYXBzIGFzc3VtZXMgYQotICogc3RhbmRhcmQgQVQg b3IgUFMvMiBrZXlib2FyZCB3aGljaCBpcyB3aGF0IFFFTVUgZmVlZHMgdXMuCi0gKi8KLWNvbnN0 IHVuc2lnbmVkIGNoYXIgYXRrYmRfc2V0Ml9rZXljb2RlWzUxMl0gPSB7Ci0KLSAgICAgMCwgNjcs IDY1LCA2MywgNjEsIDU5LCA2MCwgODgsICAwLCA2OCwgNjYsIDY0LCA2MiwgMTUsIDQxLDExNywK LSAgICAgMCwgNTYsIDQyLCA5MywgMjksIDE2LCAgMiwgIDAsICAwLCAgMCwgNDQsIDMxLCAzMCwg MTcsICAzLCAgMCwKLSAgICAgMCwgNDYsIDQ1LCAzMiwgMTgsICA1LCAgNCwgOTUsICAwLCA1Nywg NDcsIDMzLCAyMCwgMTksICA2LDE4MywKLSAgICAgMCwgNDksIDQ4LCAzNSwgMzQsIDIxLCAgNywx ODQsICAwLCAgMCwgNTAsIDM2LCAyMiwgIDgsICA5LDE4NSwKLSAgICAgMCwgNTEsIDM3LCAyMywg MjQsIDExLCAxMCwgIDAsICAwLCA1MiwgNTMsIDM4LCAzOSwgMjUsIDEyLCAgMCwKLSAgICAgMCwg ODksIDQwLCAgMCwgMjYsIDEzLCAgMCwgIDAsIDU4LCA1NCwgMjgsIDI3LCAgMCwgNDMsICAwLCA4 NSwKLSAgICAgMCwgODYsIDkxLCA5MCwgOTIsICAwLCAxNCwgOTQsICAwLCA3OSwxMjQsIDc1LCA3 MSwxMjEsICAwLCAgMCwKLSAgICA4MiwgODMsIDgwLCA3NiwgNzcsIDcyLCAgMSwgNjksIDg3LCA3 OCwgODEsIDc0LCA1NSwgNzMsIDcwLCA5OSwKLQotICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAw LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKLSAgICAyMTcsMTAwLDI1 NSwgIDAsIDk3LDE2NSwgIDAsICAwLDE1NiwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwxMjUsCi0g ICAgMTczLDExNCwgIDAsMTEzLCAgMCwgIDAsICAwLDEyNiwxMjgsICAwLCAgMCwxNDAsICAwLCAg MCwgIDAsMTI3LAotICAgIDE1OSwgIDAsMTE1LCAgMCwxNjQsICAwLCAgMCwxMTYsMTU4LCAgMCwx NTAsMTY2LCAgMCwgIDAsICAwLDE0MiwKLSAgICAxNTcsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAs ICAwLDE1NSwgIDAsIDk4LCAgMCwgIDAsMTYzLCAgMCwgIDAsCi0gICAgMjI2LCAgMCwgIDAsICAw LCAgMCwgIDAsICAwLCAgMCwgIDAsMjU1LCA5NiwgIDAsICAwLCAgMCwxNDMsICAwLAotICAgICAg MCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLDEwNywgIDAsMTA1LDEwMiwgIDAsICAw LDExMiwKLSAgICAxMTAsMTExLDEwOCwxMTIsMTA2LDEwMywgIDAsMTE5LCAgMCwxMTgsMTA5LCAg MCwgOTksMTA0LDExOSwgIDAsCi0KLX07Ci0KLWNvbnN0IHVuc2lnbmVkIGNoYXIgYXRrYmRfdW54 bGF0ZV90YWJsZVsxMjhdID0gewotCi0gICAgICAwLDExOCwgMjIsIDMwLCAzOCwgMzcsIDQ2LCA1 NCwgNjEsIDYyLCA3MCwgNjksIDc4LCA4NSwxMDIsIDEzLAotICAgICAyMSwgMjksIDM2LCA0NSwg NDQsIDUzLCA2MCwgNjcsIDY4LCA3NywgODQsIDkxLCA5MCwgMjAsIDI4LCAyNywKLSAgICAgMzUs IDQzLCA1MiwgNTEsIDU5LCA2NiwgNzUsIDc2LCA4MiwgMTQsIDE4LCA5MywgMjYsIDM0LCAzMywg NDIsCi0gICAgIDUwLCA0OSwgNTgsIDY1LCA3MywgNzQsIDg5LDEyNCwgMTcsIDQxLCA4OCwgIDUs ICA2LCAgNCwgMTIsICAzLAotICAgICAxMSwgIDIsIDEwLCAgMSwgIDksMTE5LDEyNiwxMDgsMTE3 LDEyNSwxMjMsMTA3LDExNSwxMTYsMTIxLDEwNSwKLSAgICAxMTQsMTIyLDExMiwxMTMsMTI3LCA5 NiwgOTcsMTIwLCAgNywgMTUsIDIzLCAzMSwgMzksIDQ3LCA1NSwgNjMsCi0gICAgIDcxLCA3OSwg ODYsIDk0LCAgOCwgMTYsIDI0LCAzMiwgNDAsIDQ4LCA1NiwgNjQsIDcyLCA4MCwgODcsMTExLAot ICAgICAxOSwgMjUsIDU3LCA4MSwgODMsIDkyLCA5NSwgOTgsIDk5LDEwMCwxMDEsMTAzLDEwNCwx MDYsMTA5LDExMAotCi19OwotI2VuZGlmCi0KLS8qCi0gKiBmb3IgKGkgPSAwOyBpIDwgMTI4OyBp KyspIHsKLSAqICAgICBzY2FuY29kZTJsaW51eFtpXSA9IGF0a2JkX3NldDJfa2V5Y29kZVthdGti ZF91bnhsYXRlX3RhYmxlW2ldXTsKLSAqICAgICBzY2FuY29kZTJsaW51eFtpIHwgMHg4MF0gPSBh dGtiZF9zZXQyX2tleWNvZGVbYXRrYmRfdW54bGF0ZV90YWJsZVtpXSB8IDB4ODBdOwotICogfQot ICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzY2FuY29kZTJsaW51eFs1MTJdID0gewot ICAgICAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwg MTMsIDE0LCAxNSwKLSAgICAgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUs IDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsCi0gICAgIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4 LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAotICAgICA0OCwgNDksIDUwLCA1 MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywKLSAgICAg NjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3 OCwgNzksCi0gICAgIDgwLCA4MSwgODIsIDgzLCA5OSwgIDAsIDg2LCA4NywgODgsMTE3LCAgMCwg IDAsIDk1LDE4MywxODQsMTg1LAotICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAs ICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKLSAgICAgOTMsICAwLCAgMCwgODksICAw LCAgMCwgODUsIDkxLCA5MCwgOTIsICAwLCA5NCwgIDAsMTI0LDEyMSwgIDAsCi0KLSAgICAgIDAs ICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwg IDAsCi0gICAgMTY1LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsMTYzLCAgMCwgIDAs IDk2LCA5NywgIDAsICAwLAotICAgIDExMywxNDAsMTY0LCAgMCwxNjYsICAwLCAgMCwgIDAsICAw LCAgMCwyNTUsICAwLCAgMCwgIDAsMTE0LCAgMCwKLSAgICAxMTUsICAwLDE1MCwgIDAsICAwLCA5 OCwyNTUsIDk5LDEwMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCi0gICAgICAwLCAgMCwg IDAsICAwLCAgMCwxMTksMTE5LDEwMiwxMDMsMTA0LCAgMCwxMDUsMTEyLDEwNiwxMTgsMTA3LAot ICAgIDEwOCwxMDksMTEwLDExMSwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsMTI1LDEyNiwx MjcsMTE2LDE0MiwKLSAgICAgIDAsICAwLCAgMCwxNDMsICAwLDIxNywxNTYsMTczLDEyOCwxNTks MTU4LDE1NywxNTUsMjI2LCAgMCwxMTIsCi0gICAgICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAw LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAotfTsKLQogLyogU2VuZCBhbiBl dmVudCB0byB0aGUga2V5Ym9hcmQgZnJvbnRlbmQgZHJpdmVyICovCiBzdGF0aWMgaW50IHhlbmZi X2tiZF9ldmVudChzdHJ1Y3QgWGVuSW5wdXQgKnhlbmZiLAogCQkJICAgdW5pb24geGVua2JkX2lu X2V2ZW50ICpldmVudCkKQEAgLTI2MCw4NyArMTg5LDEyNiBAQCBzdGF0aWMgaW50IHhlbmZiX3Nl bmRfcG9zaXRpb24oc3RydWN0IFhlbklucHV0ICp4ZW5mYiwKICAgICByZXR1cm4geGVuZmJfa2Jk X2V2ZW50KHhlbmZiLCAmZXZlbnQpOwogfQogCi0vKgotICogU2VuZCBhIGtleSBldmVudCBmcm9t IHRoZSBjbGllbnQgdG8gdGhlIGd1ZXN0IE9TCi0gKiBRRU1VIGdpdmVzIHVzIGEgcmF3IHNjYW5j b2RlIGZyb20gYW4gQVQgLyBQUy8yIHN0eWxlIGtleWJvYXJkLgotICogV2UgaGF2ZSB0byB0dXJu IHRoaXMgaW50byBhIExpbnV4IElucHV0IGxheWVyIGtleWNvZGUuCi0gKgotICogRXh0cmEgY29t cGxleGl0eSBmcm9tIHRoZSBmYWN0IHRoYXQgd2l0aCBleHRlbmRlZCBzY2FuY29kZXMKLSAqIChs aWtlIHRob3NlIHByb2R1Y2VkIGJ5IGFycm93IGtleXMpIHRoaXMgbWV0aG9kIGdldHMgY2FsbGVk Ci0gKiB0d2ljZSwgYnV0IHdlIG9ubHkgd2FudCB0byBzZW5kIGEgc2luZ2xlIGV2ZW50LiBTbyB3 ZSBoYXZlIHRvCi0gKiB0cmFjayB0aGUgJzB4ZTAnIHNjYW5jb2RlIHN0YXRlICYgY29sbGFwc2Ug dGhlIGV4dGVuZGVkIGtleXMKLSAqIGFzIG5lZWRlZC4KLSAqCi0gKiBXaXNoIHdlIGNvdWxkIGp1 c3Qgc2VuZCBzY2FuY29kZXMgc3RyYWlnaHQgdG8gdGhlIGd1ZXN0IHdoaWNoCi0gKiBhbHJlYWR5 IGhhcyBjb2RlIGZvciBkZWFsaW5nIHdpdGggdGhpcy4uLgotICovCi1zdGF0aWMgdm9pZCB4ZW5m Yl9rZXlfZXZlbnQodm9pZCAqb3BhcXVlLCBpbnQgc2NhbmNvZGUpCitzdGF0aWMgdm9pZCB4ZW5m Yl9rZXlfZXZlbnQoRGV2aWNlU3RhdGUgKmRldiwgUWVtdUNvbnNvbGUgKnNyYywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbnB1dEV2ZW50ICpldnQpCiB7Ci0gICAgc3RydWN0IFhlbklu cHV0ICp4ZW5mYiA9IG9wYXF1ZTsKLSAgICBpbnQgZG93biA9IDE7Ci0KLSAgICBpZiAoc2NhbmNv ZGUgPT0gMHhlMCkgewotCXhlbmZiLT5leHRlbmRlZCA9IDE7Ci0JcmV0dXJuOwotICAgIH0gZWxz ZSBpZiAoc2NhbmNvZGUgJiAweDgwKSB7Ci0Jc2NhbmNvZGUgJj0gMHg3ZjsKLQlkb3duID0gMDsK KyAgICBzdHJ1Y3QgWGVuSW5wdXQgKmluID0gKHN0cnVjdCBYZW5JbnB1dCAqKWRldjsKKyAgICBJ bnB1dEtleUV2ZW50ICprZXkgPSBldnQtPnUua2V5LmRhdGE7CisgICAgaW50IHFjb2RlID0gcWVt dV9pbnB1dF9rZXlfdmFsdWVfdG9fcWNvZGUoa2V5LT5rZXkpOworCisgICAgaWYgKHFjb2RlKSB7 CisgICAgICAgIHVuc2lnbmVkIGludCBsbnggPSBxZW11X2lucHV0X3Fjb2RlX3RvX2xpbnV4KHFj b2RlKTsKKyAgICAgICAgaWYgKGxueCkgeworICAgICAgICAgICAgeGVuZmJfc2VuZF9rZXkoaW4s IGtleS0+ZG93biwgbG54KTsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoeGVuZmItPmV4dGVu ZGVkKSB7Ci0Jc2NhbmNvZGUgfD0gMHg4MDsKLQl4ZW5mYi0+ZXh0ZW5kZWQgPSAwOworfQorCitz dGF0aWMgdm9pZCB4ZW5mYl9tb3VzZV9ldmVudChEZXZpY2VTdGF0ZSAqZGV2LCBRZW11Q29uc29s ZSAqc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRFdmVudCAqZXZ0KQor eworICAgIHN0cnVjdCBYZW5JbnB1dCAqaW4gPSAoc3RydWN0IFhlbklucHV0ICopZGV2OworICAg IElucHV0QnRuRXZlbnQgKmJ0bjsKKyAgICBJbnB1dE1vdmVFdmVudCAqbW92ZTsKKworICAgIHN3 aXRjaCAoZXZ0LT50eXBlKSB7CisgICAgY2FzZSBJTlBVVF9FVkVOVF9LSU5EX0JUTjoKKyAgICAg ICAgYnRuID0gZXZ0LT51LmJ0bi5kYXRhOworICAgICAgICBzd2l0Y2ggKGJ0bi0+YnV0dG9uKSB7 CisgICAgICAgIGNhc2UgSU5QVVRfQlVUVE9OX0xFRlQ6CisgICAgICAgICAgICB4ZW5mYl9zZW5k X2tleShpbiwgYnRuLT5kb3duLCBCVE5fTEVGVCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgY2FzZSBJTlBVVF9CVVRUT05fUklHSFQ6CisgICAgICAgICAgICB4ZW5mYl9zZW5kX2tleShp biwgYnRuLT5kb3duLCBCVE5fTEVGVCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IGNhc2UgSU5QVVRfQlVUVE9OX01JRERMRToKKyAgICAgICAgICAgIHhlbmZiX3NlbmRfa2V5KGlu LCBidG4tPmRvd24sIEJUTl9MRUZUICsgMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBJTlBVVF9CVVRUT05fV0hFRUxfVVA6CisgICAgICAgICAgICBpZiAoYnRuLT5kb3duKSB7 CisgICAgICAgICAgICAgICAgaW4tPm1vdXNlX3doZWVsLS07CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTlBVVF9CVVRUT05fV0hFRUxfRE9XTjoKKyAg ICAgICAgICAgIGlmIChidG4tPmRvd24pIHsKKyAgICAgICAgICAgICAgICBpbi0+bW91c2Vfd2hl ZWwrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0 OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSBJTlBVVF9FVkVOVF9LSU5EX0FCUzoKKyAgICAgICAgbW92ZSA9IGV2dC0+dS5hYnMuZGF0YTsK KyAgICAgICAgaW4tPm1vdXNlX2F4ZXNbbW92ZS0+YXhpc10gPSBtb3ZlLT52YWx1ZTsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSBJTlBVVF9FVkVOVF9LSU5EX1JFTDoKKyAgICAgICAgbW92ZSA9 IGV2dC0+dS5yZWwuZGF0YTsKKyAgICAgICAgaW4tPm1vdXNlX2F4ZXNbbW92ZS0+YXhpc10gKz0g bW92ZS0+dmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr OwogICAgIH0KLSAgICB4ZW5mYl9zZW5kX2tleSh4ZW5mYiwgZG93biwgc2NhbmNvZGUybGludXhb c2NhbmNvZGVdKTsKIH0KIAotLyoKLSAqIFNlbmQgYSBtb3VzZSBldmVudCBmcm9tIHRoZSBjbGll bnQgdG8gdGhlIGd1ZXN0IE9TCi0gKgotICogVGhlIFFFTVUgbW91c2UgY2FuIGJlIGluIGVpdGhl ciByZWxhdGl2ZSwgb3IgYWJzb2x1dGUgbW9kZS4KLSAqIE1vdmVtZW50IGlzIHNlbnQgc2VwYXJh dGVseSBmcm9tIGJ1dHRvbiBzdGF0ZSwgd2hpY2ggaGFzIHRvCi0gKiBiZSBlbmNvZGVkIGFzIHZp cnR1YWwga2V5IGV2ZW50cy4gV2UgYWxzbyBkb24ndCBhY3R1YWxseSBnZXQKLSAqIGdpdmVuIGFu eSBidXR0b24gdXAvZG93biBldmVudHMsIHNvIGhhdmUgdG8gdHJhY2sgY2hhbmdlcyBpbgotICog dGhlIGJ1dHRvbiBzdGF0ZS4KLSAqLwotc3RhdGljIHZvaWQgeGVuZmJfbW91c2VfZXZlbnQodm9p ZCAqb3BhcXVlLAotCQkJICAgICAgaW50IGR4LCBpbnQgZHksIGludCBkeiwgaW50IGJ1dHRvbl9z dGF0ZSkKK3N0YXRpYyB2b2lkIHhlbmZiX21vdXNlX3N5bmMoRGV2aWNlU3RhdGUgKmRldikKIHsK LSAgICBzdHJ1Y3QgWGVuSW5wdXQgKnhlbmZiID0gb3BhcXVlOwotICAgIFFlbXVDb25zb2xlICpj b24gPSBxZW11X2NvbnNvbGVfbG9va3VwX2J5X2luZGV4KDApOwotICAgIERpc3BsYXlTdXJmYWNl ICpzdXJmYWNlOwotICAgIGludCBkdywgZGgsIGk7CisgICAgc3RydWN0IFhlbklucHV0ICppbiA9 IChzdHJ1Y3QgWGVuSW5wdXQgKilkZXY7CisgICAgaW50IGR4LCBkeSwgZHo7CiAKLSAgICBpZiAo IWNvbikgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKCZ4ZW5mYi0+Yy54ZW5kZXYsIDAsICJObyBR RU1VIGNvbnNvbGUgYXZhaWxhYmxlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZHgg PSBpbi0+bW91c2VfYXhlc1tJTlBVVF9BWElTX1hdOworICAgIGR5ID0gaW4tPm1vdXNlX2F4ZXNb SU5QVVRfQVhJU19ZXTsKKyAgICBkeiA9IGluLT5tb3VzZV93aGVlbDsKKworICAgIHRyYWNlX3hl bmZiX21vdXNlX2V2ZW50KGluLCBkeCwgZHksIGR6LCAwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluLT5hYnNfcG9pbnRlcl93YW50ZWQpOworCisgICAgaWYgKGluLT5hYnNfcG9pbnRl cl93YW50ZWQpIHsKKyAgICAgICAgUWVtdUNvbnNvbGUgKmNvbiA9IHFlbXVfY29uc29sZV9sb29r dXBfYnlfaW5kZXgoMCk7CisgICAgICAgIERpc3BsYXlTdXJmYWNlICpzdXJmYWNlOworICAgICAg ICBpbnQgZHcsIGRoOworCisgICAgICAgIGlmICghY29uKSB7CisgICAgICAgICAgICB4ZW5fcHZf cHJpbnRmKCZpbi0+Yy54ZW5kZXYsIDAsICJObyBRRU1VIGNvbnNvbGUgYXZhaWxhYmxlIik7Cisg ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzdXJmYWNlID0gcWVtdV9j b25zb2xlX3N1cmZhY2UoY29uKTsKKyAgICAgICAgZHcgPSBzdXJmYWNlX3dpZHRoKHN1cmZhY2Up OworICAgICAgICBkaCA9IHN1cmZhY2VfaGVpZ2h0KHN1cmZhY2UpOworCisgICAgICAgIGR4ID0g ZHggKiAoZHcgLSAxKSAvIDB4N2ZmZjsKKyAgICAgICAgZHkgPSBkeSAqIChkaCAtIDEpIC8gMHg3 ZmZmOwogCi0gICAgc3VyZmFjZSA9IHFlbXVfY29uc29sZV9zdXJmYWNlKGNvbik7Ci0gICAgZHcg PSBzdXJmYWNlX3dpZHRoKHN1cmZhY2UpOwotICAgIGRoID0gc3VyZmFjZV9oZWlnaHQoc3VyZmFj ZSk7Ci0KLSAgICB0cmFjZV94ZW5mYl9tb3VzZV9ldmVudChvcGFxdWUsIGR4LCBkeSwgZHosIGJ1 dHRvbl9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5mYi0+YWJzX3BvaW50 ZXJfd2FudGVkKTsKLSAgICBpZiAoeGVuZmItPmFic19wb2ludGVyX3dhbnRlZCkKLQl4ZW5mYl9z ZW5kX3Bvc2l0aW9uKHhlbmZiLAotCQkJICAgIGR4ICogKGR3IC0gMSkgLyAweDdmZmYsCi0JCQkg ICAgZHkgKiAoZGggLSAxKSAvIDB4N2ZmZiwKLQkJCSAgICBkeik7Ci0gICAgZWxzZQotCXhlbmZi X3NlbmRfbW90aW9uKHhlbmZiLCBkeCwgZHksIGR6KTsKLQotICAgIGZvciAoaSA9IDAgOyBpIDwg OCA7IGkrKykgewotCWludCBsYXN0RG93biA9IHhlbmZiLT5idXR0b25fc3RhdGUgJiAoMSA8PCBp KTsKLQlpbnQgZG93biA9IGJ1dHRvbl9zdGF0ZSAmICgxIDw8IGkpOwotCWlmIChkb3duID09IGxh c3REb3duKQotCSAgICBjb250aW51ZTsKLQotCWlmICh4ZW5mYl9zZW5kX2tleSh4ZW5mYiwgZG93 biwgQlROX0xFRlQraSkgPCAwKQotCSAgICByZXR1cm47CisgICAgICAgIHhlbmZiX3NlbmRfcG9z aXRpb24oaW4sIGR4LCBkeSwgZHopOworICAgIH0gZWxzZSB7CisgICAgICAgIHhlbmZiX3NlbmRf bW90aW9uKGluLCBkeCwgZHksIGR6KTsKKworICAgICAgICBpbi0+bW91c2VfYXhlc1tJTlBVVF9B WElTX1hdID0gMDsKKyAgICAgICAgaW4tPm1vdXNlX2F4ZXNbSU5QVVRfQVhJU19ZXSA9IDA7CiAg ICAgfQotICAgIHhlbmZiLT5idXR0b25fc3RhdGUgPSBidXR0b25fc3RhdGU7CisKKyAgICBpbi0+ bW91c2Vfd2hlZWwgPSAwOwogfQogCitzdGF0aWMgUWVtdUlucHV0SGFuZGxlciB4ZW5mYl9rZXli b2FyZCA9IHsKKyAgICAubmFtZSAgPSAiWGVuIFBWRkIgS2V5Ym9hcmQiLAorICAgIC5tYXNrICA9 IElOUFVUX0VWRU5UX01BU0tfS0VZLAorICAgIC5ldmVudCA9IHhlbmZiX2tleV9ldmVudCwKK307 CitzdGF0aWMgUWVtdUlucHV0SGFuZGxlciB4ZW5mYl9hYnNfbW91c2UgPSB7CisgICAgLm5hbWUg ID0gIlhlbiBQVkZCIEFic29sdXRlIE1vdXNlIiwKKyAgICAubWFzayAgPSBJTlBVVF9FVkVOVF9N QVNLX0JUTiB8IElOUFVUX0VWRU5UX01BU0tfQUJTLAorICAgIC5ldmVudCA9IHhlbmZiX21vdXNl X2V2ZW50LAorICAgIC5zeW5jICA9IHhlbmZiX21vdXNlX3N5bmMKK307CitzdGF0aWMgUWVtdUlu cHV0SGFuZGxlciB4ZW5mYl9yZWxfbW91c2UgPSB7CisgICAgLm5hbWUgID0gIlhlbiBQVkZCIE1v dXNlIiwKKyAgICAubWFzayAgPSBJTlBVVF9FVkVOVF9NQVNLX0JUTiB8IElOUFVUX0VWRU5UX01B U0tfUkVMLAorICAgIC5ldmVudCA9IHhlbmZiX21vdXNlX2V2ZW50LAorICAgIC5zeW5jICA9IHhl bmZiX21vdXNlX3N5bmMsCit9OworCiBzdGF0aWMgaW50IGlucHV0X2luaXQoc3RydWN0IFhlbkRl dmljZSAqeGVuZGV2KQogewogICAgIHhlbnN0b3JlX3dyaXRlX2JlX2ludCh4ZW5kZXYsICJmZWF0 dXJlLWFicy1wb2ludGVyIiwgMSk7CkBAIC0zNTYsNyArMzI0LDYgQEAgc3RhdGljIGludCBpbnB1 dF9pbml0aWFsaXNlKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICBpZiAocmMgIT0gMCkK IAlyZXR1cm4gcmM7CiAKLSAgICBxZW11X2FkZF9rYmRfZXZlbnRfaGFuZGxlcih4ZW5mYl9rZXlf ZXZlbnQsIGluKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzY5LDI0ICszMzYsMzQgQEAgc3Rh dGljIHZvaWQgaW5wdXRfY29ubmVjdGVkKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAg ICAgaW4tPmFic19wb2ludGVyX3dhbnRlZCA9IDA7CiAgICAgfQogCi0gICAgaWYgKGluLT5xbW91 c2UpIHsKLSAgICAgICAgcWVtdV9yZW1vdmVfbW91c2VfZXZlbnRfaGFuZGxlcihpbi0+cW1vdXNl KTsKKyAgICBpZiAoaW4tPnFrYmQpIHsKKyAgICAgICAgcWVtdV9pbnB1dF9oYW5kbGVyX3VucmVn aXN0ZXIoaW4tPnFrYmQpOworICAgIH0KKyAgICBpZiAoaW4tPnFtb3UpIHsKKyAgICAgICAgcWVt dV9pbnB1dF9oYW5kbGVyX3VucmVnaXN0ZXIoaW4tPnFtb3UpOwogICAgIH0KICAgICB0cmFjZV94 ZW5mYl9pbnB1dF9jb25uZWN0ZWQoeGVuZGV2LCBpbi0+YWJzX3BvaW50ZXJfd2FudGVkKTsKLSAg ICBpbi0+cW1vdXNlID0gcWVtdV9hZGRfbW91c2VfZXZlbnRfaGFuZGxlcih4ZW5mYl9tb3VzZV9l dmVudCwgaW4sCi0JCQkJCSAgICAgIGluLT5hYnNfcG9pbnRlcl93YW50ZWQsCi0JCQkJCSAgICAg ICJYZW4gUFZGQiBNb3VzZSIpOworCisgICAgaW4tPnFrYmQgPSBxZW11X2lucHV0X2hhbmRsZXJf cmVnaXN0ZXIoKERldmljZVN0YXRlICopaW4sICZ4ZW5mYl9rZXlib2FyZCk7CisgICAgaW4tPnFt b3UgPSBxZW11X2lucHV0X2hhbmRsZXJfcmVnaXN0ZXIoKERldmljZVN0YXRlICopaW4sCisgICAg ICAgIChpbi0+YWJzX3BvaW50ZXJfd2FudGVkID8gJnhlbmZiX2Fic19tb3VzZSA6ICZ4ZW5mYl9y ZWxfbW91c2UpKTsKKworICAgIHFlbXVfaW5wdXRfaGFuZGxlcl9hY3RpdmF0ZShpbi0+cWtiZCk7 CisgICAgcWVtdV9pbnB1dF9oYW5kbGVyX2FjdGl2YXRlKGluLT5xbW91KTsKIH0KIAogc3RhdGlj IHZvaWQgaW5wdXRfZGlzY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiB7CiAgICAg c3RydWN0IFhlbklucHV0ICppbiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5JbnB1 dCwgYy54ZW5kZXYpOwogCi0gICAgaWYgKGluLT5xbW91c2UpIHsKLQlxZW11X3JlbW92ZV9tb3Vz ZV9ldmVudF9oYW5kbGVyKGluLT5xbW91c2UpOwotCWluLT5xbW91c2UgPSBOVUxMOworICAgIGlm IChpbi0+cWtiZCkgeworICAgICAgICBxZW11X2lucHV0X2hhbmRsZXJfdW5yZWdpc3Rlcihpbi0+ cWtiZCk7CisgICAgICAgIGluLT5xa2JkID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGluLT5xbW91 KSB7CisgICAgICAgIHFlbXVfaW5wdXRfaGFuZGxlcl91bnJlZ2lzdGVyKGluLT5xbW91KTsKKyAg ICAgICAgaW4tPnFtb3UgPSBOVUxMOwogICAgIH0KLSAgICBxZW11X2FkZF9rYmRfZXZlbnRfaGFu ZGxlcihOVUxMLCBOVUxMKTsKICAgICBjb21tb25fdW5iaW5kKCZpbi0+Yyk7CiB9CiAKLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==