From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 4/8] x86/hvm: convert gsi_assert_count into a variable size array Date: Wed, 29 Mar 2017 15:47:29 +0100 Message-ID: <20170329144733.4709-3-roger.pau@citrix.com> References: <20170329143918.4445-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctEtg-0008Qt-BC for xen-devel@lists.xenproject.org; Wed, 29 Mar 2017 14:48:28 +0000 In-Reply-To: <20170329143918.4445-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, boris.ostrovsky@oracle.com Cc: Andrew Cooper , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org UmVhcnJhbmdlIHRoZSBmaWVsZHMgb2YgaHZtX2lycSBzbyB0aGF0IGdzaV9hc3NlcnRfY291bnQg Y2FuIGJlIGNvbnZlcnRlZCBpbnRvCmEgdmFyaWFibGUgc2l6ZSBhcnJheSBhbmQgYWRkIGEgbmV3 IGZpZWxkIHRvIGFjY291bnQgdGhlIG51bWJlciBvZiBHU0lzLgoKRHVlIHRvIHRoaXMgY2hhbmdl cyB0aGUgaXJxIG1lbWJlciBpbiB0aGUgaHZtX2RvbWFpbiBzdHJ1Y3QgYWxzbyBuZWVkcyB0bwpi ZWNvbWUgYSBwb2ludGVyIHNldCBhdCBydW50aW1lLgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1 IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVs aWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv bT4KLS0tCkNoYW5nZXMgc2luY2UgdjI6CiAtIFBhcmVudGhlc2l6ZSBpc19odm1fcHZfZXZ0Y2hu X2RvbWFpbiBhcmd1bWVudC4KIC0gQWRkIGEgYnVpbGQgQlVHX09OIHRvIG1ha2Ugc3VyZSBEb21V IG51bWJlciBvZiBJUlFzIGNvdmVycyB0aGUgSVNBIHJhbmdlIGF0CiAgIGxlYXN0LgogLSBBZGQg YW4gQVNTRVJUIHRvIG1ha2Ugc3VyZSBucl9nc2lzIGNvdmVycyB0aGUgSVNBIHJhbmdlICh0aG9z ZSB0d28gYXJlCiAgIGlkZW50aWNhbCBub3csIGJ1dCB0aGF0J3MgZ29pbmcgdG8gY2hhbmdlIHdo ZW4gRG9tMCBpbnRyb2R1Y2VzIGEgdmFyaWFibGUKICAgbnVtYmVyIG9mIEdTSXMsIGhlbmNlIHRo ZSBBU1NFUlQgYW5kIHRoZSBCVUlMRF9CVUdfT04pLgogLSBEb24ndCBleHBhbmQgdGhlIEFTU0VS VHMgaW4gdGhlIGlycSBhc3NlcnQvZGVhc3NlcnQgcm91dGluZXMgKHRoZSBhYm92ZQogICBhZGRp dGlvbnMgYWxyZWFkeSBjb3ZlciB0aG9zZSkuCiAtIFVzZSAlMiBhcyBmb3JtYXQgc3BlY2lmaWVy IHRvIHByaW50IHRoZSBHU0lzIGFzc2VydCBjb3VudCAodGhlIGV4aXN0aW5nIGNvZGUKICAgaGFz IGJlZW4gbGVmdCBhcy1pcywgdXNpbmcgJTIuMiBpbnN0ZWFkKS4KLS0tCiB4ZW4vYXJjaC94ODYv aHZtL2h2bS5jICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvaHZt L2lycS5jICAgICAgICAgICB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvZG9tYWluLmggICAgIHwgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFp bi5oIHwgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lycS5oICAgIHwgMjggKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCsp LCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIv eGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCA5OGRlZGUyMGRiLi42YzNjOTQ0YWJkIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMKQEAgLTYyMCwxMSArNjIwLDE5IEBAIGludCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0 IGRvbWFpbiAqZCkKICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zID0geHphbGxvY19hcnJh eSh1aW50NjRfdCwgSFZNX05SX1BBUkFNUyk7CiAgICAgZC0+YXJjaC5odm1fZG9tYWluLmlvX2hh bmRsZXIgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBodm1faW9faGFuZGxlciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJfSU9fSEFORExFUlMpOwor ICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pcnEgPSB4emFsbG9jX2J5dGVzKGh2bV9pcnFfc2l6ZShO Ul9IVk1fRE9NVV9JUlFTKSk7CisKICAgICByYyA9IC1FTk9NRU07Ci0gICAgaWYgKCAhZC0+YXJj aC5odm1fZG9tYWluLnBsX3RpbWUgfHwKKyAgICBpZiAoICFkLT5hcmNoLmh2bV9kb21haW4ucGxf dGltZSB8fCAhZC0+YXJjaC5odm1fZG9tYWluLmlycSB8fAogICAgICAgICAgIWQtPmFyY2guaHZt X2RvbWFpbi5wYXJhbXMgIHx8ICFkLT5hcmNoLmh2bV9kb21haW4uaW9faGFuZGxlciApCiAgICAg ICAgIGdvdG8gZmFpbDE7CiAKKyAgICAvKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIEdTSXMg Ki8KKyAgICBodm1fZG9tYWluX2lycShkKS0+bnJfZ3NpcyA9IE5SX0hWTV9ET01VX0lSUVM7CisK KyAgICBCVUlMRF9CVUdfT04oTlJfSFZNX0RPTVVfSVJRUyA8IE5SX0lTQUlSUVMpOworICAgIEFT U0VSVChodm1fZG9tYWluX2lycShkKS0+bnJfZ3NpcyA+PSBOUl9JU0FJUlFTKTsKKwogICAgIC8q IG5lZWQgbGluayB0byBjb250YWluaW5nIGRvbWFpbiAqLwogICAgIGQtPmFyY2guaHZtX2RvbWFp bi5wbF90aW1lLT5kb21haW4gPSBkOwogCkBAIC02ODEsNiArNjg5LDcgQEAgaW50IGh2bV9kb21h aW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHhmcmVlKGQtPmFyY2guaHZtX2Rv bWFpbi5pb19oYW5kbGVyKTsKICAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zKTsK ICAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4ucGxfdGltZSk7CisgICAgeGZyZWUoZC0+YXJj aC5odm1fZG9tYWluLmlycSk7CiAgZmFpbDA6CiAgICAgaHZtX2Rlc3Ryb3lfY2FjaGVhdHRyX3Jl Z2lvbl9saXN0KGQpOwogICAgIHJldHVybiByYzsKQEAgLTcyNyw2ICs3MzYsOSBAQCB2b2lkIGh2 bV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHhmcmVlKGQtPmFyY2guaHZt X2RvbWFpbi5wbF90aW1lKTsKICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGxfdGltZSA9IE5VTEw7 CiAKKyAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4uaXJxKTsKKyAgICBkLT5hcmNoLmh2bV9k b21haW4uaXJxID0gTlVMTDsKKwogICAgIGxpc3RfZm9yX2VhY2hfc2FmZSAoIGlvcG9ydF9saXN0 LCB0bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5nMm1f aW9wb3J0X2xpc3QgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMg Yi94ZW4vYXJjaC94ODYvaHZtL2lycS5jCmluZGV4IGMyOTUxY2NmOGEuLjAwNzEzMjU3YzkgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9p cnEuYwpAQCAtNjksNiArNjksNyBAQCBzdGF0aWMgdm9pZCBfX2h2bV9wY2lfaW50eF9hc3NlcnQo CiAgICAgICAgIHJldHVybjsKIAogICAgIGdzaSA9IGh2bV9wY2lfaW50eF9nc2koZGV2aWNlLCBp bnR4KTsKKyAgICBBU1NFUlQoZ3NpIDwgaHZtX2lycS0+bnJfZ3Npcyk7CiAgICAgaWYgKCBodm1f aXJxLT5nc2lfYXNzZXJ0X2NvdW50W2dzaV0rKyA9PSAwICkKICAgICAgICAgYXNzZXJ0X2dzaShk LCBnc2kpOwogCkBAIC05OSw2ICsxMDAsNyBAQCBzdGF0aWMgdm9pZCBfX2h2bV9wY2lfaW50eF9k ZWFzc2VydCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ3NpID0gaHZtX3BjaV9pbnR4X2dzaShk ZXZpY2UsIGludHgpOworICAgIEFTU0VSVChnc2kgPCBodm1faXJxLT5ucl9nc2lzKTsKICAgICAt LWh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXTsKIAogICAgIGxpbmsgICAgPSBodm1fcGNp X2ludHhfbGluayhkZXZpY2UsIGludHgpOwpAQCAtMzYzLDcgKzM2NSw3IEBAIHZvaWQgaHZtX3Nl dF9jYWxsYmFja192aWEoc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgdmlhKQogICAgIHsKICAg ICBjYXNlIEhWTUlSUV9jYWxsYmFja19nc2k6CiAgICAgICAgIGdzaSA9IGh2bV9pcnEtPmNhbGxi YWNrX3ZpYS5nc2kgPSAodWludDhfdCl2aWE7Ci0gICAgICAgIGlmICggKGdzaSA9PSAwKSB8fCAo Z3NpID49IEFSUkFZX1NJWkUoaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudCkpICkKKyAgICAgICAg aWYgKCAoZ3NpID09IDApIHx8IChnc2kgPj0gaHZtX2lycS0+bnJfZ3NpcykgKQogICAgICAgICAg ICAgaHZtX2lycS0+Y2FsbGJhY2tfdmlhX3R5cGUgPSBIVk1JUlFfY2FsbGJhY2tfbm9uZTsKICAg ICAgICAgZWxzZSBpZiAoIGh2bV9pcnEtPmNhbGxiYWNrX3ZpYV9hc3NlcnRlZCAmJgogICAgICAg ICAgICAgICAgICAgKGh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXSsrID09IDApICkKQEAg LTQxOSw5ICs0MjEsOSBAQCBzdHJ1Y3QgaHZtX2ludGFjayBodm1fdmNwdV9oYXNfcGVuZGluZ19p cnEoc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCB1bmxpa2VseSh2LT5tY2VfcGVuZGluZykgKQog ICAgICAgICByZXR1cm4gaHZtX2ludGFja19tY2U7CiAKLSAgICBpZiAoIChwbGF0LT5pcnEuY2Fs bGJhY2tfdmlhX3R5cGUgPT0gSFZNSVJRX2NhbGxiYWNrX3ZlY3RvcikKKyAgICBpZiAoIChwbGF0 LT5pcnEtPmNhbGxiYWNrX3ZpYV90eXBlID09IEhWTUlSUV9jYWxsYmFja192ZWN0b3IpCiAgICAg ICAgICAmJiB2Y3B1X2luZm8odiwgZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKSApCi0gICAgICAgIHJl dHVybiBodm1faW50YWNrX3ZlY3RvcihwbGF0LT5pcnEuY2FsbGJhY2tfdmlhLnZlY3Rvcik7Cisg ICAgICAgIHJldHVybiBodm1faW50YWNrX3ZlY3RvcihwbGF0LT5pcnEtPmNhbGxiYWNrX3ZpYS52 ZWN0b3IpOwogCiAgICAgaWYgKCB2bGFwaWNfYWNjZXB0X3BpY19pbnRyKHYpICYmIHBsYXQtPnZw aWNbMF0uaW50X291dHB1dCApCiAgICAgICAgIHJldHVybiBodm1faW50YWNrX3BpYygwKTsKQEAg LTQ5NSw3ICs0OTcsNyBAQCBzdGF0aWMgdm9pZCBpcnFfZHVtcChzdHJ1Y3QgZG9tYWluICpkKQog ICAgICAgICAgICAodWludDMyX3QpIGh2bV9pcnEtPmlzYV9pcnEucGFkWzBdLCAKICAgICAgICAg ICAgaHZtX2lycS0+cGNpX2xpbmsucm91dGVbMF0sIGh2bV9pcnEtPnBjaV9saW5rLnJvdXRlWzFd LAogICAgICAgICAgICBodm1faXJxLT5wY2lfbGluay5yb3V0ZVsyXSwgaHZtX2lycS0+cGNpX2xp bmsucm91dGVbM10pOwotICAgIGZvciAoIGkgPSAwIDsgaSA8IFZJT0FQSUNfTlVNX1BJTlM7IGkg Kz0gOCApCisgICAgZm9yICggaSA9IDA7IGkgPCBodm1faXJxLT5ucl9nc2lzICYmIGkgKyA4IDw9 IGh2bV9pcnEtPm5yX2dzaXM7IGkgKz0gOCApCiAgICAgICAgIHByaW50aygiR1NJIFsleCAtICV4 XSAlMi4yIlBSSXU4IiAlMi4yIlBSSXU4IiAlMi4yIlBSSXU4IiAlMi4yIlBSSXU4CiAgICAgICAg ICAgICAgICAiICUyLjIiUFJJdTgiICUyLjIiUFJJdTgiICUyLjIiUFJJdTgiICUyLjIiUFJJdTgi XG4iLAogICAgICAgICAgICAgICAgaSwgaSs3LApAQCAtNTA3LDYgKzUwOSwxMyBAQCBzdGF0aWMg dm9pZCBpcnFfZHVtcChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgaHZtX2lycS0+ Z3NpX2Fzc2VydF9jb3VudFtpKzVdLAogICAgICAgICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2Vy dF9jb3VudFtpKzZdLAogICAgICAgICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudFtp KzddKTsKKyAgICBpZiAoIGkgIT0gaHZtX2lycS0+bnJfZ3NpcyApCisgICAgeworICAgICAgICBw cmludGsoIkdTSSBbJXggLSAleF0iLCBpLCBodm1faXJxLT5ucl9nc2lzIC0gMSk7CisgICAgICAg IGZvciAoIDsgaSA8IGh2bV9pcnEtPm5yX2dzaXM7IGkrKykKKyAgICAgICAgICAgIHByaW50aygi ICUyIlBSSXU4LCBodm1faXJxLT5nc2lfYXNzZXJ0X2NvdW50W2ldKTsKKyAgICAgICAgcHJpbnRr KCJcbiIpOworICAgIH0KICAgICBwcmludGsoIkxpbmsgJTIuMiJQUkl1OCIgJTIuMiJQUkl1OCIg JTIuMiJQUkl1OCIgJTIuMiJQUkl1OCJcbiIsCiAgICAgICAgICAgIGh2bV9pcnEtPnBjaV9saW5r X2Fzc2VydF9jb3VudFswXSwKICAgICAgICAgICAgaHZtX2lycS0+cGNpX2xpbmtfYXNzZXJ0X2Nv dW50WzFdLApAQCAtNjAxLDcgKzYxMCw3IEBAIHN0YXRpYyBpbnQgaXJxX2xvYWRfcGNpKHN0cnVj dCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgICAgICBodm1faXJxLT5w Y2lfbGlua19hc3NlcnRfY291bnRbbGlua10gPSAwOwogICAgIAogICAgIC8qIENsZWFyIHRoZSBH U0kgbGluayBhc3NlcnQgY291bnRzICovCi0gICAgZm9yICggZ3NpID0gMDsgZ3NpIDwgVklPQVBJ Q19OVU1fUElOUzsgZ3NpKysgKQorICAgIGZvciAoIGdzaSA9IDA7IGdzaSA8IGh2bV9pcnEtPm5y X2dzaXM7IGdzaSsrICkKICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudFtnc2ldID0g MDsKIAogICAgIC8qIFJlY2FsY3VsYXRlIHRoZSBjb3VudHMgZnJvbSB0aGUgSVJRIGxpbmUgc3Rh dGUgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L2RvbWFpbi5oCmluZGV4IGVjMTRjY2U4MWYuLjY0MjBjYTI0YjkgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9kb21haW4uaApAQCAtMTcsNyArMTcsNyBAQAogI2RlZmluZSBpc19wdl8zMmJpdF92Y3B1 KHYpICAgIChpc19wdl8zMmJpdF9kb21haW4oKHYpLT5kb21haW4pKQogCiAjZGVmaW5lIGlzX2h2 bV9wdl9ldnRjaG5fZG9tYWluKGQpIChpc19odm1fZG9tYWluKGQpICYmIFwKLSAgICAgICAgZC0+ YXJjaC5odm1fZG9tYWluLmlycS5jYWxsYmFja192aWFfdHlwZSA9PSBIVk1JUlFfY2FsbGJhY2tf dmVjdG9yKQorICAgICAgICAoZCktPmFyY2guaHZtX2RvbWFpbi5pcnEtPmNhbGxiYWNrX3ZpYV90 eXBlID09IEhWTUlSUV9jYWxsYmFja192ZWN0b3IpCiAjZGVmaW5lIGlzX2h2bV9wdl9ldnRjaG5f dmNwdSh2KSAoaXNfaHZtX3B2X2V2dGNobl9kb21haW4odi0+ZG9tYWluKSkKICNkZWZpbmUgaXNf ZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkgKCh2b2lkKShkKSwgMCkKIApkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9k b21haW4uaAppbmRleCBiZGZjMDgyNjQxLi42MjJlMWNhMTJkIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9k b21haW4uaApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0cnVjdCBodm1fZG9tYWluIHsKIAogICAgIC8q IExvY2sgcHJvdGVjdHMgYWNjZXNzIHRvIGlycSwgdnBpYyBhbmQgdmlvYXBpYy4gKi8KICAgICBz cGlubG9ja190ICAgICAgICAgICAgIGlycV9sb2NrOwotICAgIHN0cnVjdCBodm1faXJxICAgICAg ICAgaXJxOworICAgIHN0cnVjdCBodm1faXJxICAgICAgICAqaXJxOwogICAgIHN0cnVjdCBodm1f aHdfdnBpYyAgICAgdnBpY1syXTsgLyogMD1tYXN0ZXI7IDE9c2xhdmUgKi8KICAgICBzdHJ1Y3Qg aHZtX3Zpb2FwaWMgICAgKnZpb2FwaWM7CiAgICAgc3RydWN0IGh2bV9od19zdGR2Z2EgICBzdGR2 Z2E7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pcnEuaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lycS5oCmluZGV4IDE3YTk1N2Q0YjUuLjdkNDUyOTNhZWQgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lycS5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL2lycS5oCkBAIC02NywxOCArNjcsNiBAQCBzdHJ1Y3QgaHZtX2lycSB7CiAgICAg dTggcGNpX2xpbmtfYXNzZXJ0X2NvdW50WzRdOwogCiAgICAgLyoKLSAgICAgKiBOdW1iZXIgb2Yg d2lyZXMgYXNzZXJ0aW5nIGVhY2ggR1NJLgotICAgICAqIAotICAgICAqIEdTSXMgMC0xNSBhcmUg dGhlIElTQSBJUlFzLiBJU0EgZGV2aWNlcyBtYXAgZGlyZWN0bHkgaW50byB0aGlzIHNwYWNlCi0g ICAgICogZXhjZXB0IElTQSBJUlEgMCwgd2hpY2ggaXMgY29ubmVjdGVkIHRvIEdTSSAyLgotICAg ICAqIFBDSSBsaW5rcyBtYXAgaW50byB0aGlzIHNwYWNlIHZpYSB0aGUgUENJLUlTQSBicmlkZ2Uu Ci0gICAgICogCi0gICAgICogR1NJcyAxNisgYXJlIHVzZWQgb25seSBiZSBQQ0kgZGV2aWNlcy4g VGhlIG1hcHBpbmcgZnJvbSBQQ0kgZGV2aWNlIHRvCi0gICAgICogR1NJIGlzIGFzIGZvbGxvd3M6 ICgoZGV2aWNlKjQgKyBkZXZpY2UvOCArIElOVHgjKSAmIDMxKSArIDE2Ci0gICAgICovCi0gICAg dTggZ3NpX2Fzc2VydF9jb3VudFtWSU9BUElDX05VTV9QSU5TXTsKLQotICAgIC8qCiAgICAgICog R1NJcyBtYXAgb250byBQSUMvSU8tQVBJQyBpbiB0aGUgdXN1YWwgd2F5OgogICAgICAqICAwLTc6 ICBNYXN0ZXIgODI1OSBQSUMsIElPLUFQSUMgcGlucyAwLTcKICAgICAgKiAgOC0xNTogU2xhdmUg IDgyNTkgUElDLCBJTy1BUElDIHBpbnMgOC0xNQpAQCAtODksMTMgKzc3LDI3IEBAIHN0cnVjdCBo dm1faXJxIHsKICAgICB1OCByb3VuZF9yb2Jpbl9wcmV2X3ZjcHU7CiAKICAgICBzdHJ1Y3QgaHZt X2lycV9kcGNpICpkcGNpOworCisgICAgLyoKKyAgICAgKiBOdW1iZXIgb2Ygd2lyZXMgYXNzZXJ0 aW5nIGVhY2ggR1NJLgorICAgICAqCisgICAgICogR1NJcyAwLTE1IGFyZSB0aGUgSVNBIElSUXMu IElTQSBkZXZpY2VzIG1hcCBkaXJlY3RseSBpbnRvIHRoaXMgc3BhY2UKKyAgICAgKiBleGNlcHQg SVNBIElSUSAwLCB3aGljaCBpcyBjb25uZWN0ZWQgdG8gR1NJIDIuCisgICAgICogUENJIGxpbmtz IG1hcCBpbnRvIHRoaXMgc3BhY2UgdmlhIHRoZSBQQ0ktSVNBIGJyaWRnZS4KKyAgICAgKgorICAg ICAqIEdTSXMgMTYrIGFyZSB1c2VkIG9ubHkgYmUgUENJIGRldmljZXMuIFRoZSBtYXBwaW5nIGZy b20gUENJIGRldmljZSB0bworICAgICAqIEdTSSBpcyBhcyBmb2xsb3dzOiAoKGRldmljZSo0ICsg ZGV2aWNlLzggKyBJTlR4IykgJiAzMSkgKyAxNgorICAgICAqLworICAgIHVuc2lnbmVkIGludCBu cl9nc2lzOworICAgIHU4IGdzaV9hc3NlcnRfY291bnRbXTsKIH07CiAKICNkZWZpbmUgaHZtX3Bj aV9pbnR4X2dzaShkZXYsIGludHgpICBcCiAgICAgKCgoKChkZXYpPDwyKSArICgoZGV2KT4+Mykg KyAoaW50eCkpICYgMzEpICsgMTYpCiAjZGVmaW5lIGh2bV9wY2lfaW50eF9saW5rKGRldiwgaW50 eCkgXAogICAgICgoKGRldikgKyAoaW50eCkpICYgMykKLSNkZWZpbmUgaHZtX2RvbWFpbl9pcnEo ZCkgKCYoZCktPmFyY2guaHZtX2RvbWFpbi5pcnEpCisjZGVmaW5lIGh2bV9kb21haW5faXJxKGQp ICgoZCktPmFyY2guaHZtX2RvbWFpbi5pcnEpCisjZGVmaW5lIGh2bV9pcnFfc2l6ZShjbnQpIG9m ZnNldG9mKHN0cnVjdCBodm1faXJxLCBnc2lfYXNzZXJ0X2NvdW50W2NudF0pCiAKICNkZWZpbmUg aHZtX2lzYV9pcnFfdG9fZ3NpKGlzYV9pcnEpICgoaXNhX2lycSkgPyA6IDIpCiAKLS0gCjIuMTEu MCAoQXBwbGUgR2l0LTgxKQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=