From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 6/8] x86/vioapic: introduce support for multiple vIO APICS Date: Wed, 29 Mar 2017 15:47:31 +0100 Message-ID: <20170329144733.4709-5-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 1ctEte-0008Q5-I2 for xen-devel@lists.xenproject.org; Wed, 29 Mar 2017 14:48:26 +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 QWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHZJTyBBUElDcyBvbiB0aGUgc2FtZSBkb21haW4sIHRo dXMgdHVybmluZwpkLT5hcmNoLmh2bV9kb21haW4udmlvYXBpYyBpbnRvIGFuIGFycmF5IG9mIHZJ TyBBUElDIGNvbnRyb2wgc3RydWN0dXJlcy4KCk5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkg aXMgbm90IGV4cG9zZWQgdG8gdW5wcml2aWxlZ2VkIGd1ZXN0cywgYW5kIHdpbGwKb25seSBiZSB1 c2VkIGJ5IFBWSHYyIERvbTAuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ2hhbmdl cyBzaW5jZSB2MjoKIC0gTW9yZSBjb25zdGlmeS4KIC0gZ3NpX3Zpb2FwaWMgc2hvdWxkIHJldHVy biB0aGUgcGluIGFuZCBub3QgdGhlIGJhc2UgR1NJLgogLSBDaGFuZ2UgcGluX2dzaSB0byBiYXNl X2dzaSwgYW5kIG1ha2UgaXQgcmV0dXJuIHRoZSBiYXNlIHZJTyBBUElDIEdTSS4KIC0gTWFrZSBz dXJlIGJhc2VfZ3NpIGRvZXNuJ3Qgb3ZlcnJ1biB0aGUgYXJyYXkuCiAtIEFkZCBBU1NFUlRzIHRv IG1ha2Ugc3VyZSBEb21VIGRvbid0IHVzZSBtb3JlIHRoYW4gb25lIHZJTyBBUElDLgoKQ2hhbmdl cyBzaW5jZSB2MToKIC0gQ29uc3RpZnkgc29tZSBwYXJhbWV0ZXJzLgogLSBNYWtlIGdzaV92aW9h cGljIHJldHVybiB0aGUgYmFzZSBHU0kgb2YgdGhlIElPIEFQSUMuCiAtIEFkZCBjaGVja3MgdG8g cHRfaXJxX3ZlY3RvciBpbiBvcmRlciB0byBwcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KLS0t CiB4ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYyAgICAgfCAgIDIgKy0KIHhlbi9hcmNoL3g4 Ni9odm0vdmlvYXBpYy5jICAgICAgICB8IDIxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyAgICAgICAgIHwgICAyICstCiB4 ZW4vYXJjaC94ODYvaHZtL3ZwdC5jICAgICAgICAgICAgfCAgMjUgKysrKy0KIHhlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oICB8ICAgMyArLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v dmlvYXBpYy5oIHwgICA0ICstCiA2IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspLCA2 NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQu YyBiL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jCmluZGV4IDU1NzZkYjRlZTguLmRhYTc5 MWQzZjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jCkBAIC03MjksNyArNzI5LDcgQEAgc3RhdGljIGlu dCBfX2luaXQgcHZoX3NldHVwX2FjcGlfbWFkdChzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90ICph ZGRyKQogICAgIGlvX2FwaWMgPSAodm9pZCAqKShtYWR0ICsgMSk7CiAgICAgaW9fYXBpYy0+aGVh ZGVyLnR5cGUgPSBBQ1BJX01BRFRfVFlQRV9JT19BUElDOwogICAgIGlvX2FwaWMtPmhlYWRlci5s ZW5ndGggPSBzaXplb2YoKmlvX2FwaWMpOwotICAgIGlvX2FwaWMtPmlkID0gZG9tYWluX3Zpb2Fw aWMoZCktPmlkOworICAgIGlvX2FwaWMtPmlkID0gZG9tYWluX3Zpb2FwaWMoZCwgMCktPmlkOwog ICAgIGlvX2FwaWMtPmFkZHJlc3MgPSBWSU9BUElDX0RFRkFVTFRfQkFTRV9BRERSRVNTOwogCiAg ICAgeDJhcGljID0gKHZvaWQgKikoaW9fYXBpYyArIDEpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS92aW9hcGljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYwppbmRleCA2YmM4 ZGJkZDQyLi45OTBhZDcwN2VjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMu YworKysgYi94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYwpAQCAtNDIsNyArNDIsNTcgQEAKIC8q IEhBQ0s6IFJvdXRlIElSUTAgb25seSB0byBWQ1BVMCB0byBwcmV2ZW50IHRpbWUganVtcHMuICov CiAjZGVmaW5lIElSUTBfU1BFQ0lBTF9ST1VUSU5HIDEKIAotc3RhdGljIHZvaWQgdmlvYXBpY19k ZWxpdmVyKHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYywgaW50IGlycSk7CitzdGF0aWMgdm9p ZCB2aW9hcGljX2RlbGl2ZXIoc3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljLCB1bnNpZ25lZCBp bnQgaXJxKTsKKworc3RhdGljIHN0cnVjdCBodm1fdmlvYXBpYyAqYWRkcl92aW9hcGljKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBhZGRyKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9y ICggaSA9IDA7IGkgPCBkLT5hcmNoLmh2bV9kb21haW4ubnJfdmlvYXBpY3M7IGkrKyApCisgICAg eworICAgICAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyhk LCBpKTsKKworICAgICAgICBpZiAoIGFkZHIgPj0gdmlvYXBpYy0+YmFzZV9hZGRyZXNzICYmCisg ICAgICAgICAgICAgYWRkciA8IHZpb2FwaWMtPmJhc2VfYWRkcmVzcyArIFZJT0FQSUNfTUVNX0xF TkdUSCApCisgICAgICAgICAgICByZXR1cm4gdmlvYXBpYzsKKyAgICB9CisKKyAgICByZXR1cm4g TlVMTDsKK30KKworc3RydWN0IGh2bV92aW9hcGljICpnc2lfdmlvYXBpYyhjb25zdCBzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZ3NpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgKnBpbikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgYmFzZV9nc2kg PSAwOworCisgICAgZm9yICggaSA9IDA7IGkgPCBkLT5hcmNoLmh2bV9kb21haW4ubnJfdmlvYXBp Y3M7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWMgPSBk b21haW5fdmlvYXBpYyhkLCBpKTsKKworICAgICAgICBpZiAoIGdzaSA+PSBiYXNlX2dzaSAmJiBn c2kgPCBiYXNlX2dzaSArIHZpb2FwaWMtPm5yX3BpbnMgKQorICAgICAgICB7CisgICAgICAgICAg ICAqcGluID0gZ3NpIC0gYmFzZV9nc2k7CisgICAgICAgICAgICByZXR1cm4gdmlvYXBpYzsKKyAg ICAgICAgfQorCisgICAgICAgIGJhc2VfZ3NpICs9IHZpb2FwaWMtPm5yX3BpbnM7CisgICAgfQor CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYmFzZV9nc2koY29u c3Qgc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljKQoreworICAgIGNvbnN0IHN0cnVjdCBodm1fdmlv YXBpYyAqdG1wOworICAgIHVuc2lnbmVkIGludCBiYXNlX2dzaSA9IDAsIG5yX3Zpb2FwaWNzID0g ZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2FwaWNzOworCisgICAgZm9yICggdG1wID0gZG9tYWlu X3Zpb2FwaWMoZCwgMCk7IC0tbnJfdmlvYXBpY3MgJiYgdG1wICE9IHZpb2FwaWM7IHRtcCsrICkK KyAgICAgICAgYmFzZV9nc2kgKz0gdG1wLT5ucl9waW5zOworCisgICAgcmV0dXJuIGJhc2VfZ3Np OworfQogCiBzdGF0aWMgdWludDMyX3QgdmlvYXBpY19yZWFkX2luZGlyZWN0KGNvbnN0IHN0cnVj dCBodm1fdmlvYXBpYyAqdmlvYXBpYykKIHsKQEAgLTk0LDExICsxNDQsMTQgQEAgc3RhdGljIGlu dCB2aW9hcGljX3JlYWQoCiAgICAgc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwK ICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBsb25nICpwdmFsKQogewotICAgIGNv bnN0IHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGljKHYtPmRvbWFp bik7CisgICAgY29uc3Qgc3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljOwogICAgIHVpbnQzMl90 IHJlc3VsdDsKIAogICAgIEhWTV9EQkdfTE9HKERCR19MRVZFTF9JT0FQSUMsICJhZGRyICVseCIs IGFkZHIpOwogCisgICAgdmlvYXBpYyA9IGFkZHJfdmlvYXBpYyh2LT5kb21haW4sIGFkZHIpOwor ICAgIEFTU0VSVCh2aW9hcGljKTsKKwogICAgIHN3aXRjaCAoIGFkZHIgJiAweGZmICkKICAgICB7 CiAgICAgY2FzZSBWSU9BUElDX1JFR19TRUxFQ1Q6CkBAIC0xMjYsNiArMTc5LDcgQEAgc3RhdGlj IHZvaWQgdmlvYXBpY193cml0ZV9yZWRpcmVudCgKICAgICBzdHJ1Y3QgaHZtX2lycSAqaHZtX2ly cSA9IGh2bV9kb21haW5faXJxKGQpOwogICAgIHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKnBl bnQsIGVudDsKICAgICBpbnQgdW5tYXNrZWQgPSAwOworICAgIHVuc2lnbmVkIGludCBnc2kgPSBi YXNlX2dzaShkLCB2aW9hcGljKSArIGlkeDsKIAogICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1f ZG9tYWluLmlycV9sb2NrKTsKIApAQCAtMTQ5LDcgKzIwMyw3IEBAIHN0YXRpYyB2b2lkIHZpb2Fw aWNfd3JpdGVfcmVkaXJlbnQoCiAKICAgICAqcGVudCA9IGVudDsKIAotICAgIGlmICggaWR4ID09 IDAgKQorICAgIGlmICggZ3NpID09IDAgKQogICAgIHsKICAgICAgICAgdmxhcGljX2FkanVzdF9p ODI1OV90YXJnZXQoZCk7CiAgICAgfQpAQCAtMTY1LDcgKzIxOSw3IEBAIHN0YXRpYyB2b2lkIHZp b2FwaWNfd3JpdGVfcmVkaXJlbnQoCiAKICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9t YWluLmlycV9sb2NrKTsKIAotICAgIGlmICggaWR4ID09IDAgfHwgdW5tYXNrZWQgKQorICAgIGlm ICggZ3NpID09IDAgfHwgdW5tYXNrZWQgKQogICAgICAgICBwdF9tYXlfdW5tYXNrX2lycShkLCBO VUxMKTsKIH0KIApAQCAtMjE1LDcgKzI2OSwxMCBAQCBzdGF0aWMgaW50IHZpb2FwaWNfd3JpdGUo CiAgICAgc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICB1bnNpZ25lZCBp bnQgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIHZhbCkKIHsKLSAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMg KnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyh2LT5kb21haW4pOworICAgIHN0cnVjdCBodm1fdmlv YXBpYyAqdmlvYXBpYzsKKworICAgIHZpb2FwaWMgPSBhZGRyX3Zpb2FwaWModi0+ZG9tYWluLCBh ZGRyKTsKKyAgICBBU1NFUlQodmlvYXBpYyk7CiAKICAgICBzd2l0Y2ggKCBhZGRyICYgMHhmZiAp CiAgICAgewpAQCAtMjQyLDEwICsyOTksNyBAQCBzdGF0aWMgaW50IHZpb2FwaWNfd3JpdGUoCiAK IHN0YXRpYyBpbnQgdmlvYXBpY19yYW5nZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBh ZGRyKQogewotICAgIHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGlj KHYtPmRvbWFpbik7Ci0KLSAgICByZXR1cm4gKChhZGRyID49IHZpb2FwaWMtPmJhc2VfYWRkcmVz cyAmJgotICAgICAgICAgICAgIChhZGRyIDwgdmlvYXBpYy0+YmFzZV9hZGRyZXNzICsgVklPQVBJ Q19NRU1fTEVOR1RIKSkpOworICAgIHJldHVybiAhIWFkZHJfdmlvYXBpYyh2LT5kb21haW4sIGFk ZHIpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWlvX29wcyB2aW9hcGljX21taW9f b3BzID0gewpAQCAtMjc1LDE2ICszMjksMTcgQEAgc3RhdGljIGlubGluZSBpbnQgcGl0X2NoYW5u ZWwwX2VuYWJsZWQodm9pZCkKICAgICByZXR1cm4gcHRfYWN0aXZlKCZjdXJyZW50LT5kb21haW4t PmFyY2gudnBpdC5wdDApOwogfQogCi1zdGF0aWMgdm9pZCB2aW9hcGljX2RlbGl2ZXIoc3RydWN0 IGh2bV92aW9hcGljICp2aW9hcGljLCBpbnQgaXJxKQorc3RhdGljIHZvaWQgdmlvYXBpY19kZWxp dmVyKHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYywgdW5zaWduZWQgaW50IHBpbikKIHsKLSAg ICB1aW50MTZfdCBkZXN0ID0gdmlvYXBpYy0+cmVkaXJ0YmxbaXJxXS5maWVsZHMuZGVzdF9pZDsK LSAgICB1aW50OF90IGRlc3RfbW9kZSA9IHZpb2FwaWMtPnJlZGlydGJsW2lycV0uZmllbGRzLmRl c3RfbW9kZTsKLSAgICB1aW50OF90IGRlbGl2ZXJ5X21vZGUgPSB2aW9hcGljLT5yZWRpcnRibFtp cnFdLmZpZWxkcy5kZWxpdmVyeV9tb2RlOwotICAgIHVpbnQ4X3QgdmVjdG9yID0gdmlvYXBpYy0+ cmVkaXJ0YmxbaXJxXS5maWVsZHMudmVjdG9yOwotICAgIHVpbnQ4X3QgdHJpZ19tb2RlID0gdmlv YXBpYy0+cmVkaXJ0YmxbaXJxXS5maWVsZHMudHJpZ19tb2RlOworICAgIHVpbnQxNl90IGRlc3Qg PSB2aW9hcGljLT5yZWRpcnRibFtwaW5dLmZpZWxkcy5kZXN0X2lkOworICAgIHVpbnQ4X3QgZGVz dF9tb2RlID0gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVsZHMuZGVzdF9tb2RlOworICAgIHVp bnQ4X3QgZGVsaXZlcnlfbW9kZSA9IHZpb2FwaWMtPnJlZGlydGJsW3Bpbl0uZmllbGRzLmRlbGl2 ZXJ5X21vZGU7CisgICAgdWludDhfdCB2ZWN0b3IgPSB2aW9hcGljLT5yZWRpcnRibFtwaW5dLmZp ZWxkcy52ZWN0b3I7CisgICAgdWludDhfdCB0cmlnX21vZGUgPSB2aW9hcGljLT5yZWRpcnRibFtw aW5dLmZpZWxkcy50cmlnX21vZGU7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHZpb2FwaWNfZG9t YWluKHZpb2FwaWMpOwogICAgIHN0cnVjdCB2bGFwaWMgKnRhcmdldDsKICAgICBzdHJ1Y3QgdmNw dSAqdjsKKyAgICB1bnNpZ25lZCBpbnQgaXJxID0gYmFzZV9nc2koZCwgdmlvYXBpYykgKyBwaW47 CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9j aykpOwogCkBAIC0zNjEsNjQgKzQxNiw3MSBAQCBzdGF0aWMgdm9pZCB2aW9hcGljX2RlbGl2ZXIo c3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljLCBpbnQgaXJxKQogCiB2b2lkIHZpb2FwaWNfaXJx X3Bvc2l0aXZlX2VkZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlycSkKIHsKLSAg ICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyhkKTsKKyAgICB1 bnNpZ25lZCBpbnQgcGluOworICAgIHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYyA9IGdzaV92 aW9hcGljKGQsIGlycSwgJnBpbik7CiAgICAgdW5pb24gdmlvYXBpY19yZWRpcl9lbnRyeSAqZW50 OwogCiAgICAgQVNTRVJUKGhhc192aW9hcGljKGQpKTsKIAogICAgIEhWTV9EQkdfTE9HKERCR19M RVZFTF9JT0FQSUMsICJpcnEgJXgiLCBpcnEpOwogCi0gICAgQVNTRVJUKGlycSA8IHZpb2FwaWMt Pm5yX3BpbnMpOworICAgIEFTU0VSVChwaW4gPCB2aW9hcGljLT5ucl9waW5zKTsKICAgICBBU1NF UlQoc3Bpbl9pc19sb2NrZWQoJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jaykpOwogCi0gICAg ZW50ID0gJnZpb2FwaWMtPnJlZGlydGJsW2lycV07CisgICAgZW50ID0gJnZpb2FwaWMtPnJlZGly dGJsW3Bpbl07CiAgICAgaWYgKCBlbnQtPmZpZWxkcy5tYXNrICkKICAgICAgICAgcmV0dXJuOwog CiAgICAgaWYgKCBlbnQtPmZpZWxkcy50cmlnX21vZGUgPT0gVklPQVBJQ19FREdFX1RSSUcgKQog ICAgIHsKLSAgICAgICAgdmlvYXBpY19kZWxpdmVyKHZpb2FwaWMsIGlycSk7CisgICAgICAgIHZp b2FwaWNfZGVsaXZlcih2aW9hcGljLCBwaW4pOwogICAgIH0KICAgICBlbHNlIGlmICggIWVudC0+ ZmllbGRzLnJlbW90ZV9pcnIgKQogICAgIHsKICAgICAgICAgZW50LT5maWVsZHMucmVtb3RlX2ly ciA9IDE7Ci0gICAgICAgIHZpb2FwaWNfZGVsaXZlcih2aW9hcGljLCBpcnEpOworICAgICAgICB2 aW9hcGljX2RlbGl2ZXIodmlvYXBpYywgcGluKTsKICAgICB9CiB9CiAKIHZvaWQgdmlvYXBpY191 cGRhdGVfRU9JKHN0cnVjdCBkb21haW4gKmQsIHU4IHZlY3RvcikKIHsKLSAgICBzdHJ1Y3QgaHZt X3Zpb2FwaWMgKnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyhkKTsKICAgICBzdHJ1Y3QgaHZtX2ly cSAqaHZtX2lycSA9IGh2bV9kb21haW5faXJxKGQpOwogICAgIHVuaW9uIHZpb2FwaWNfcmVkaXJf ZW50cnkgKmVudDsKLSAgICBpbnQgZ3NpOworICAgIHVuc2lnbmVkIGludCBpLCBiYXNlX2dzaSA9 IDA7CiAKICAgICBBU1NFUlQoaGFzX3Zpb2FwaWMoZCkpOwogCiAgICAgc3Bpbl9sb2NrKCZkLT5h cmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwogCi0gICAgZm9yICggZ3NpID0gMDsgZ3NpIDwgdmlv YXBpYy0+bnJfcGluczsgZ3NpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+YXJjaC5odm1f ZG9tYWluLm5yX3Zpb2FwaWNzOyBpKysgKQogICAgIHsKLSAgICAgICAgZW50ID0gJnZpb2FwaWMt PnJlZGlydGJsW2dzaV07Ci0gICAgICAgIGlmICggZW50LT5maWVsZHMudmVjdG9yICE9IHZlY3Rv ciApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBlbnQtPmZpZWxkcy5yZW1vdGVf aXJyID0gMDsKKyAgICAgICAgc3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljID0gZG9tYWluX3Zp b2FwaWMoZCwgaSk7CisgICAgICAgIHVuc2lnbmVkIGludCBqOwogCi0gICAgICAgIGlmICggaW9t bXVfZW5hYmxlZCApCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgdmlvYXBpYy0+bnJfcGluczsg aisrICkKICAgICAgICAgewotICAgICAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyY2guaHZtX2Rv bWFpbi5pcnFfbG9jayk7Ci0gICAgICAgICAgICBodm1fZHBjaV9lb2koZCwgZ3NpLCBlbnQpOwot ICAgICAgICAgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwotICAg ICAgICB9Ci0KLSAgICAgICAgaWYgKCAoZW50LT5maWVsZHMudHJpZ19tb2RlID09IFZJT0FQSUNf TEVWRUxfVFJJRykgJiYKLSAgICAgICAgICAgICAhZW50LT5maWVsZHMubWFzayAmJgotICAgICAg ICAgICAgIGh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXSApCi0gICAgICAgIHsKLSAgICAg ICAgICAgIGVudC0+ZmllbGRzLnJlbW90ZV9pcnIgPSAxOwotICAgICAgICAgICAgdmlvYXBpY19k ZWxpdmVyKHZpb2FwaWMsIGdzaSk7CisgICAgICAgICAgICBlbnQgPSAmdmlvYXBpYy0+cmVkaXJ0 Ymxbal07CisgICAgICAgICAgICBpZiAoIGVudC0+ZmllbGRzLnZlY3RvciAhPSB2ZWN0b3IgKQor ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBlbnQtPmZpZWxkcy5yZW1v dGVfaXJyID0gMDsKKworICAgICAgICAgICAgaWYgKCBpb21tdV9lbmFibGVkICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmly cV9sb2NrKTsKKyAgICAgICAgICAgICAgICBodm1fZHBjaV9lb2koZCwgYmFzZV9nc2kgKyBqLCBl bnQpOworICAgICAgICAgICAgICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9s b2NrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCAoZW50LT5maWVsZHMudHJp Z19tb2RlID09IFZJT0FQSUNfTEVWRUxfVFJJRykgJiYKKyAgICAgICAgICAgICAgICAgIWVudC0+ ZmllbGRzLm1hc2sgJiYKKyAgICAgICAgICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3Vu dFtiYXNlX2dzaSArIGpdICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbnQtPmZp ZWxkcy5yZW1vdGVfaXJyID0gMTsKKyAgICAgICAgICAgICAgICB2aW9hcGljX2RlbGl2ZXIodmlv YXBpYywgaik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgYmFzZV9nc2kgKz0g dmlvYXBpYy0+bnJfcGluczsKICAgICB9CiAKICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1f ZG9tYWluLmlycV9sb2NrKTsKQEAgLTQyNiwxMiArNDg4LDEzIEBAIHZvaWQgdmlvYXBpY191cGRh dGVfRU9JKHN0cnVjdCBkb21haW4gKmQsIHU4IHZlY3RvcikKIAogc3RhdGljIGludCBpb2FwaWNf c2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKLSAgICBz dHJ1Y3QgaHZtX3Zpb2FwaWMgKnMgPSBkb21haW5fdmlvYXBpYyhkKTsKKyAgICBzdHJ1Y3QgaHZt X3Zpb2FwaWMgKnMgPSBkb21haW5fdmlvYXBpYyhkLCAwKTsKIAogICAgIGlmICggIWhhc192aW9h cGljKGQpICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIHMtPm5yX3BpbnMgIT0gQVJS QVlfU0laRShzLT5kb21VLnJlZGlydGJsKSApCisgICAgaWYgKCBzLT5ucl9waW5zICE9IEFSUkFZ X1NJWkUocy0+ZG9tVS5yZWRpcnRibCkgfHwKKyAgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5u cl92aW9hcGljcyAhPSAxICkKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAgICAgcmV0 dXJuIGh2bV9zYXZlX2VudHJ5KElPQVBJQywgMCwgaCwgJnMtPmRvbVUpOwpAQCAtNDM5LDEyICs1 MDIsMTMgQEAgc3RhdGljIGludCBpb2FwaWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKIAogc3RhdGljIGludCBpb2FwaWNfbG9hZChzdHJ1Y3QgZG9tYWlu ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKLSAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMg KnMgPSBkb21haW5fdmlvYXBpYyhkKTsKKyAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnMgPSBkb21h aW5fdmlvYXBpYyhkLCAwKTsKIAogICAgIGlmICggIWhhc192aW9hcGljKGQpICkKICAgICAgICAg cmV0dXJuIC1FTk9ERVY7CiAKLSAgICBpZiAoIHMtPm5yX3BpbnMgIT0gQVJSQVlfU0laRShzLT5k b21VLnJlZGlydGJsKSApCisgICAgaWYgKCBzLT5ucl9waW5zICE9IEFSUkFZX1NJWkUocy0+ZG9t VS5yZWRpcnRibCkgfHwKKyAgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljcyAh PSAxICkKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAgICAgcmV0dXJuIGh2bV9sb2Fk X2VudHJ5KElPQVBJQywgaCwgJnMtPmRvbVUpOwpAQCAtNDU0LDMyICs1MTgsNjggQEAgSFZNX1JF R0lTVEVSX1NBVkVfUkVTVE9SRShJT0FQSUMsIGlvYXBpY19zYXZlLCBpb2FwaWNfbG9hZCwgMSwg SFZNU1JfUEVSX0RPTSk7CiAKIHZvaWQgdmlvYXBpY19yZXNldChzdHJ1Y3QgZG9tYWluICpkKQog ewotICAgIHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGljKGQpOwot ICAgIHVpbnQzMl90IG5yX3BpbnMgPSB2aW9hcGljLT5ucl9waW5zOwotICAgIGludCBpOworICAg IHVuc2lnbmVkIGludCBpOwogCiAgICAgaWYgKCAhaGFzX3Zpb2FwaWMoZCkgKQorICAgIHsKKyAg ICAgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4ubnJfdmlvYXBpY3MpOwogICAgICAgICBy ZXR1cm47CisgICAgfQogCi0gICAgbWVtc2V0KHZpb2FwaWMsIDAsIGh2bV92aW9hcGljX3NpemUo bnJfcGlucykpOwotICAgIHZpb2FwaWMtPmRvbWFpbiA9IGQ7Ci0gICAgdmlvYXBpYy0+bnJfcGlu cyA9IG5yX3BpbnM7Ci0gICAgZm9yICggaSA9IDA7IGkgPCBucl9waW5zOyBpKysgKQotICAgICAg ICB2aW9hcGljLT5yZWRpcnRibFtpXS5maWVsZHMubWFzayA9IDE7Ci0gICAgdmlvYXBpYy0+YmFz ZV9hZGRyZXNzID0gVklPQVBJQ19ERUZBVUxUX0JBU0VfQUREUkVTUzsKKyAgICBmb3IgKCBpID0g MDsgaSA8IGQtPmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljczsgaSsrICkKKyAgICB7CisgICAg ICAgIHN0cnVjdCBodm1fdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGljKGQsIGkpOwor ICAgICAgICB1bnNpZ25lZCBpbnQgaiwgbnJfcGlucyA9IHZpb2FwaWMtPm5yX3BpbnM7CisKKyAg ICAgICAgbWVtc2V0KHZpb2FwaWMsIDAsIGh2bV92aW9hcGljX3NpemUobnJfcGlucykpOworICAg ICAgICBmb3IgKCBqID0gMDsgaiA8IG5yX3BpbnM7IGorKyApCisgICAgICAgICAgICB2aW9hcGlj LT5yZWRpcnRibFtqXS5maWVsZHMubWFzayA9IDE7CisgICAgICAgIEFTU0VSVCghaSk7CisgICAg ICAgIHZpb2FwaWMtPmJhc2VfYWRkcmVzcyA9IFZJT0FQSUNfREVGQVVMVF9CQVNFX0FERFJFU1Mg KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSU9BUElDX01FTV9MRU5HVEggKiBp OworICAgICAgICB2aW9hcGljLT5pZCA9IGk7CisgICAgICAgIHZpb2FwaWMtPm5yX3BpbnMgPSBu cl9waW5zOworICAgICAgICB2aW9hcGljLT5kb21haW4gPSBkOworICAgIH0KK30KKworc3RhdGlj IHZvaWQgdmlvYXBpY19mcmVlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBu cl92aW9hcGljcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBp IDwgbnJfdmlvYXBpY3M7IGkrKykKKyAgICAgICAgeGZyZWUoZG9tYWluX3Zpb2FwaWMoZCwgaSkp OworICAgIHhmcmVlKGQtPmFyY2guaHZtX2RvbWFpbi52aW9hcGljKTsKIH0KIAogaW50IHZpb2Fw aWNfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHVuc2lnbmVkIGludCBpLCBucl92aW9h cGljcyA9IDE7CisgICAgdW5zaWduZWQgaW50IG5yX3BpbnMgPSBBUlJBWV9TSVpFKGRvbWFpbl92 aW9hcGljKGQsIDApLT5kb21VLnJlZGlydGJsKTsKKwogICAgIGlmICggIWhhc192aW9hcGljKGQp ICkKKyAgICB7CisgICAgICAgIEFTU0VSVCghZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2FwaWNz KTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgaWYgKCAoZC0+YXJjaC5odm1fZG9t YWluLnZpb2FwaWMgPT0gTlVMTCkgJiYKLSAgICAgICAgICgoZC0+YXJjaC5odm1fZG9tYWluLnZp b2FwaWMgPSB4bWFsbG9jKHN0cnVjdCBodm1fdmlvYXBpYykpID09IE5VTEwpICkKKyAgICAgICAg ICgoZC0+YXJjaC5odm1fZG9tYWluLnZpb2FwaWMgPQorICAgICAgICAgICB4emFsbG9jX2FycmF5 KHN0cnVjdCBodm1fdmlvYXBpYyAqLCBucl92aW9hcGljcykpID09IE5VTEwpICkKICAgICAgICAg cmV0dXJuIC1FTk9NRU07CiAKLSAgICBkLT5hcmNoLmh2bV9kb21haW4udmlvYXBpYy0+ZG9tYWlu ID0gZDsKLSAgICBkb21haW5fdmlvYXBpYyhkKS0+bnJfcGlucyA9IEFSUkFZX1NJWkUoZG9tYWlu X3Zpb2FwaWMoZCktPmRvbVUucmVkaXJ0YmwpOworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfdmlv YXBpY3M7IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChkb21haW5fdmlvYXBpYyhkLCBpKSA9 CisgICAgICAgICAgICAgIHhtYWxsb2NfYnl0ZXMoaHZtX3Zpb2FwaWNfc2l6ZShucl9waW5zKSkp ID09IE5VTEwgKQorICAgICAgICB7CisgICAgICAgICAgICB2aW9hcGljX2ZyZWUoZCwgbnJfdmlv YXBpY3MpOworICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIH0KKyAgICAgICAg ZG9tYWluX3Zpb2FwaWMoZCwgaSktPm5yX3BpbnMgPSBucl9waW5zOworICAgIH0KKworICAgIGQt PmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljcyA9IG5yX3Zpb2FwaWNzOwogICAgIHZpb2FwaWNf cmVzZXQoZCk7CiAKICAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZpb2FwaWNfbW1pb19v cHMpOwpAQCAtNDkwLDggKzU5MCwxMCBAQCBpbnQgdmlvYXBpY19pbml0KHN0cnVjdCBkb21haW4g KmQpCiB2b2lkIHZpb2FwaWNfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgaWYgKCAh aGFzX3Zpb2FwaWMoZCkgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21h aW4ubnJfdmlvYXBpY3MpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgeGZyZWUoZC0+ YXJjaC5odm1fZG9tYWluLnZpb2FwaWMpOwotICAgIGQtPmFyY2guaHZtX2RvbWFpbi52aW9hcGlj ID0gTlVMTDsKKyAgICB2aW9hcGljX2ZyZWUoZCwgZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2Fw aWNzKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgYi94ZW4vYXJj aC94ODYvaHZtL3ZsYXBpYy5jCmluZGV4IDA1OTBkNmM2OWQuLjI2NTNiYTgwZmQgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bGFw aWMuYwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgc3RhdGljIGludCBfX3ZsYXBpY19hY2NlcHRfcGlj X2ludHIoc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCAhaGFzX3Zpb2FwaWMoZCkgKQogICAgICAg ICByZXR1cm4gMDsKIAotICAgIHJlZGlyMCA9IGRvbWFpbl92aW9hcGljKGQpLT5yZWRpcnRibFsw XTsKKyAgICByZWRpcjAgPSBkb21haW5fdmlvYXBpYyhkLCAwKS0+cmVkaXJ0YmxbMF07CiAKICAg ICAvKiBXZSBkZWxpdmVyIDgyNTkgaW50ZXJydXB0cyB0byB0aGUgYXBwcm9wcmlhdGUgQ1BVIGFz IGZvbGxvd3MuICovCiAgICAgcmV0dXJuICgoLyogSU9BUElDIHBpbjAgaXMgdW5tYXNrZWQgYW5k IHJvdXRpbmcgdG8gdGhpcyBMQVBJQz8gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dnB0LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZwdC5jCmluZGV4IDVjNDhmZGI0YjUuLmFhNzM4YjI0 ZmQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdnB0LmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS92cHQuYwpAQCAtNzgsNyArNzgsOCBAQCB2b2lkIGh2bV9zZXRfZ3Vlc3RfdGltZShzdHJ1 Y3QgdmNwdSAqdiwgdTY0IGd1ZXN0X3RpbWUpCiBzdGF0aWMgaW50IHB0X2lycV92ZWN0b3Ioc3Ry dWN0IHBlcmlvZGljX3RpbWUgKnB0LCBlbnVtIGh2bV9pbnRzcmMgc3JjKQogewogICAgIHN0cnVj dCB2Y3B1ICp2ID0gcHQtPnZjcHU7Ci0gICAgdW5zaWduZWQgaW50IGdzaSwgaXNhX2lycTsKKyAg ICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWM7CisgICAgdW5zaWduZWQgaW50IGdzaSwgaXNh X2lycSwgcGluOwogCiAgICAgaWYgKCBwdC0+c291cmNlID09IFBUU1JDX2xhcGljICkKICAgICAg ICAgcmV0dXJuIHB0LT5pcnE7CkBAIC05MSwxMyArOTIsMjIgQEAgc3RhdGljIGludCBwdF9pcnFf dmVjdG9yKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCwgZW51bSBodm1faW50c3JjIHNyYykKICAg ICAgICAgICAgICAgICArIChpc2FfaXJxICYgNykpOwogCiAgICAgQVNTRVJUKHNyYyA9PSBodm1f aW50c3JjX2xhcGljKTsKLSAgICByZXR1cm4gZG9tYWluX3Zpb2FwaWModi0+ZG9tYWluKS0+cmVk aXJ0YmxbZ3NpXS5maWVsZHMudmVjdG9yOworICAgIHZpb2FwaWMgPSBnc2lfdmlvYXBpYyh2LT5k b21haW4sIGdzaSwgJnBpbik7CisgICAgaWYgKCAhdmlvYXBpYyApCisgICAgeworICAgICAgICBn ZHByaW50ayhYRU5MT0dfV0FSTklORywgIkludmFsaWQgR1NJICgldSkgZm9yIHBsYXRmb3JtIHRp bWVyXG4iLCBnc2kpOworICAgICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsKKyAgICAgICAg cmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiB2aW9hcGljLT5yZWRpcnRibFtwaW5dLmZp ZWxkcy52ZWN0b3I7CiB9CiAKIHN0YXRpYyBpbnQgcHRfaXJxX21hc2tlZChzdHJ1Y3QgcGVyaW9k aWNfdGltZSAqcHQpCiB7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBwdC0+dmNwdTsKLSAgICB1bnNp Z25lZCBpbnQgZ3NpLCBpc2FfaXJxOworICAgIHVuc2lnbmVkIGludCBnc2ksIGlzYV9pcnEsIHBp bjsKKyAgICBzdHJ1Y3QgaHZtX3Zpb2FwaWMgKnZpb2FwaWM7CiAgICAgdWludDhfdCBwaWNfaW1y OwogCiAgICAgaWYgKCBwdC0+c291cmNlID09IFBUU1JDX2xhcGljICkKQEAgLTExMCw5ICsxMjAs MTYgQEAgc3RhdGljIGludCBwdF9pcnFfbWFza2VkKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCkK ICAgICBpc2FfaXJxID0gcHQtPmlycTsKICAgICBnc2kgPSBodm1faXNhX2lycV90b19nc2koaXNh X2lycSk7CiAgICAgcGljX2ltciA9IHYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnZwaWNbaXNh X2lycSA+PiAzXS5pbXI7CisgICAgdmlvYXBpYyA9IGdzaV92aW9hcGljKHYtPmRvbWFpbiwgZ3Np LCAmcGluKTsKKyAgICBpZiAoICF2aW9hcGljICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhF TkxPR19XQVJOSU5HLCAiSW52YWxpZCBHU0kgKCV1KSBmb3IgcGxhdGZvcm0gdGltZXJcbiIsIGdz aSk7CisgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOworICAgICAgICByZXR1cm4gLTE7 CisgICAgfQogCiAgICAgcmV0dXJuICgoKHBpY19pbXIgJiAoMSA8PCAoaXNhX2lycSAmIDcpKSkg fHwgIXZsYXBpY19hY2NlcHRfcGljX2ludHIodikpICYmCi0gICAgICAgICAgICBkb21haW5fdmlv YXBpYyh2LT5kb21haW4pLT5yZWRpcnRibFtnc2ldLmZpZWxkcy5tYXNrKTsKKyAgICAgICAgICAg IHZpb2FwaWMtPnJlZGlydGJsW3Bpbl0uZmllbGRzLm1hc2spOwogfQogCiBzdGF0aWMgdm9pZCBw dF9sb2NrKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgK aW5kZXggNjIyZTFjYTEyZC4uZDI4OTljOWJiMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgK QEAgLTEyNyw3ICsxMjcsOCBAQCBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAgICAgc3BpbmxvY2tfdCAg ICAgICAgICAgICBpcnFfbG9jazsKICAgICBzdHJ1Y3QgaHZtX2lycSAgICAgICAgKmlycTsKICAg ICBzdHJ1Y3QgaHZtX2h3X3ZwaWMgICAgIHZwaWNbMl07IC8qIDA9bWFzdGVyOyAxPXNsYXZlICov Ci0gICAgc3RydWN0IGh2bV92aW9hcGljICAgICp2aW9hcGljOworICAgIHN0cnVjdCBodm1fdmlv YXBpYyAgICAqKnZpb2FwaWM7CisgICAgdW5zaWduZWQgaW50ICAgICAgICAgICBucl92aW9hcGlj czsKICAgICBzdHJ1Y3QgaHZtX2h3X3N0ZHZnYSAgIHN0ZHZnYTsKIAogICAgIC8qCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aW9hcGljLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS92aW9hcGljLmgKaW5kZXggNzExZjI5NGZiZS4uYWMwMWMyYTNlNiAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlvYXBpYy5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3Zpb2FwaWMuaApAQCAtNTcsOCArNTcsMTAgQEAgc3RydWN0IGh2bV92aW9hcGlj IHsKIH07CiAKICNkZWZpbmUgaHZtX3Zpb2FwaWNfc2l6ZShjbnQpIG9mZnNldG9mKHN0cnVjdCBo dm1fdmlvYXBpYywgcmVkaXJ0YmxbY250XSkKLSNkZWZpbmUgZG9tYWluX3Zpb2FwaWMoZCkgKChk KS0+YXJjaC5odm1fZG9tYWluLnZpb2FwaWMpCisjZGVmaW5lIGRvbWFpbl92aW9hcGljKGQsIGkp ICgoZCktPmFyY2guaHZtX2RvbWFpbi52aW9hcGljW2ldKQogI2RlZmluZSB2aW9hcGljX2RvbWFp bih2KSAoKHYpLT5kb21haW4pCitzdHJ1Y3QgaHZtX3Zpb2FwaWMgKmdzaV92aW9hcGljKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBnc2ksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqcGluKTsKIAogaW50IHZpb2FwaWNfaW5pdChzdHJ1 Y3QgZG9tYWluICpkKTsKIHZvaWQgdmlvYXBpY19kZWluaXQoc3RydWN0IGRvbWFpbiAqZCk7Ci0t IAoyLjExLjAgKEFwcGxlIEdpdC04MSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK