From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH 3/5] x86/vioapic: introduce support for multiple vIO APICS Date: Thu, 23 Feb 2017 11:52:15 +0000 Message-ID: <20170223115217.32764-4-roger.pau@citrix.com> References: <20170223115217.32764-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cgrwg-0003f3-Hd for xen-devel@lists.xenproject.org; Thu, 23 Feb 2017 11:52:26 +0000 In-Reply-To: <20170223115217.32764-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 Cc: Andrew Cooper , boris.ostrovsky@oracle.com, Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIHZJTyBBUElDcyBvbiB0aGUgc2FtZSBkb21haW4sIHRo dXMgdHVybmluZwpkLT5hcmNoLmh2bV9kb21haW4udmlvYXBpYyBpbnRvIGFuIGFycmF5IG9mIHZJ TyBBUElDIGNvbnRyb2wgc3RydWN0dXJlcy4KCk5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkg aXMgbm90IGV4cG9zZWQgdG8gdW5wcml2aWxlZ2VkIGd1ZXN0cywgYW5kIHdpbGwKb25seSBiZSB1 c2VkIGJ5IFBWSHYyIERvbTAuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9h cmNoL3g4Ni9kb21haW5fYnVpbGQuYyAgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L2h2bS92 aW9hcGljLmMgICAgICAgIHwgMjA0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jICAgICAgICAgfCAgIDIgKy0KIHhlbi9hcmNo L3g4Ni9odm0vdnB0LmMgICAgICAgICAgICB8ICAxMyArKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2RvbWFpbi5oICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aW9hcGljLmgg fCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNo L3g4Ni9kb21haW5fYnVpbGQuYwppbmRleCA5MzJmYTRlLi5kYWQzYjRlIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbl9idWls ZC5jCkBAIC0yMzE3LDcgKzIzMTcsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwdmhfc2V0dXBfYWNw aV9tYWR0KHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgKmFkZHIpCiAgICAgaW9fYXBpYyA9ICh2 b2lkICopKG1hZHQgKyAxKTsKICAgICBpb19hcGljLT5oZWFkZXIudHlwZSA9IEFDUElfTUFEVF9U WVBFX0lPX0FQSUM7CiAgICAgaW9fYXBpYy0+aGVhZGVyLmxlbmd0aCA9IHNpemVvZigqaW9fYXBp Yyk7Ci0gICAgaW9fYXBpYy0+aWQgPSBkb21haW5fdmlvYXBpYyhkKS0+aWQ7CisgICAgaW9fYXBp Yy0+aWQgPSBkb21haW5fdmlvYXBpYyhkLCAwKS0+aWQ7CiAgICAgaW9fYXBpYy0+YWRkcmVzcyA9 IFZJT0FQSUNfREVGQVVMVF9CQVNFX0FERFJFU1M7CiAKICAgICB4MmFwaWMgPSAodm9pZCAqKShp b19hcGljICsgMSk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYyBiL3hl bi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jCmluZGV4IGY0NjljYmYuLjY0MjE5NzEgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlv YXBpYy5jCkBAIC00NCw2ICs0NCw1NiBAQAogCiBzdGF0aWMgdm9pZCB2aW9hcGljX2RlbGl2ZXIo c3RydWN0IGRvbWFpbiAqZCwgaW50IGlycSk7CiAKK3N0YXRpYyBzdHJ1Y3QgaHZtX2h3X3Zpb2Fw aWMgKmFkZHJfdmlvYXBpYyhzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zp b2FwaWNzOyBpKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9h cGljID0gZG9tYWluX3Zpb2FwaWMoZCwgaSk7CisKKyAgICAgICAgaWYgKCBhZGRyID49IHZpb2Fw aWMtPmJhc2VfYWRkcmVzcyAmJgorICAgICAgICAgICAgIGFkZHIgPCB2aW9hcGljLT5iYXNlX2Fk ZHJlc3MgKyBWSU9BUElDX01FTV9MRU5HVEggKQorICAgICAgICAgICAgcmV0dXJuIHZpb2FwaWM7 CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCBodm1faHdfdmlvYXBpYyAq Z3NpX3Zpb2FwaWMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpwaW4pCit7CisgICAgdW5z aWduZWQgaW50IGksIGJhc2VfZ3NpID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+YXJj aC5odm1fZG9tYWluLm5yX3Zpb2FwaWNzOyBpKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IGh2 bV9od192aW9hcGljICp2aW9hcGljID0gZG9tYWluX3Zpb2FwaWMoZCwgaSk7CisKKyAgICAgICAg aWYgKCBnc2kgPj0gYmFzZV9nc2kgJiYgZ3NpIDwgYmFzZV9nc2kgKyB2aW9hcGljLT5ucl9waW5z ICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBwaW4gIT0gTlVMTCApCisgICAgICAgICAg ICAgICAgKnBpbiA9IGdzaSAtIGJhc2VfZ3NpOworICAgICAgICAgICAgcmV0dXJuIHZpb2FwaWM7 CisgICAgICAgIH0KKyAgICAgICAgYmFzZV9nc2kgKz0gdmlvYXBpYy0+bnJfcGluczsKKyAgICB9 CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBwaW5fZ3NpKHN0 cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGluKQoreworICAgIHN0cnVjdCBodm1f aHdfdmlvYXBpYyAqdG1wOworICAgIHVuc2lnbmVkIGludCBiYXNlX2dzaSA9IDA7CisKKyAgICBm b3IgKCB0bXAgPSBkb21haW5fdmlvYXBpYyhkLCAwKTsgdG1wICE9IHZpb2FwaWM7IHRtcCsrICkK KyAgICAgICAgYmFzZV9nc2kgKz0gdG1wLT5ucl9waW5zOworCisgICAgcmV0dXJuIGJhc2VfZ3Np ICsgcGluOworfQorCiBzdGF0aWMgdWludDMyX3QgdmlvYXBpY19yZWFkX2luZGlyZWN0KGNvbnN0 IHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYykKIHsKICAgICB1aW50MzJfdCByZXN1bHQg PSAwOwpAQCAtOTQsMTEgKzE0NCwxNCBAQCBzdGF0aWMgaW50IHZpb2FwaWNfcmVhZCgKICAgICBz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgIHVuc2lnbmVkIGludCBsZW5n dGgsIHVuc2lnbmVkIGxvbmcgKnB2YWwpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGh2bV9od192aW9h cGljICp2aW9hcGljID0gZG9tYWluX3Zpb2FwaWModi0+ZG9tYWluKTsKKyAgICBjb25zdCBzdHJ1 Y3QgaHZtX2h3X3Zpb2FwaWMgKnZpb2FwaWM7CiAgICAgdWludDMyX3QgcmVzdWx0OwogCiAgICAg SFZNX0RCR19MT0coREJHX0xFVkVMX0lPQVBJQywgImFkZHIgJWx4IiwgYWRkcik7CiAKKyAgICB2 aW9hcGljID0gYWRkcl92aW9hcGljKHYtPmRvbWFpbiwgYWRkcik7CisgICAgQVNTRVJUKHZpb2Fw aWMpOworCiAgICAgc3dpdGNoICggYWRkciAmIDB4ZmYgKQogICAgIHsKICAgICBjYXNlIFZJT0FQ SUNfUkVHX1NFTEVDVDoKQEAgLTExOSwxMyArMTcyLDEzIEBAIHN0YXRpYyBpbnQgdmlvYXBpY19y ZWFkKAogfQogCiBzdGF0aWMgdm9pZCB2aW9hcGljX3dyaXRlX3JlZGlyZW50KAotICAgIHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCisgICAgc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IGh2bV9od192aW9hcGljICp2aW9hcGljLCB1bnNpZ25lZCBpbnQgaWR4LAogICAgIGludCB0 b3Bfd29yZCwgdWludDMyX3QgdmFsKQogewotICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlv YXBpYyA9IGRvbWFpbl92aW9hcGljKGQpOwogICAgIHN0cnVjdCBodm1faXJxICpodm1faXJxID0g JmQtPmFyY2guaHZtX2RvbWFpbi5pcnE7CiAgICAgdW5pb24gdmlvYXBpY19yZWRpcl9lbnRyeSAq cGVudCwgZW50OwogICAgIGludCB1bm1hc2tlZCA9IDA7CisgICAgdW5zaWduZWQgaW50IGdzaSA9 IHBpbl9nc2koZCwgdmlvYXBpYywgaWR4KTsKIAogICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1f ZG9tYWluLmlycV9sb2NrKTsKIApAQCAtMTQ5LDcgKzIwMiw3IEBAIHN0YXRpYyB2b2lkIHZpb2Fw aWNfd3JpdGVfcmVkaXJlbnQoCiAKICAgICAqcGVudCA9IGVudDsKIAotICAgIGlmICggaWR4ID09 IDAgKQorICAgIGlmICggZ3NpID09IDAgKQogICAgIHsKICAgICAgICAgdmxhcGljX2FkanVzdF9p ODI1OV90YXJnZXQoZCk7CiAgICAgfQpAQCAtMTU3LDIxICsyMTAsMjIgQEAgc3RhdGljIHZvaWQg dmlvYXBpY193cml0ZV9yZWRpcmVudCgKICAgICAgICAgcGVudC0+ZmllbGRzLnJlbW90ZV9pcnIg PSAwOwogICAgIGVsc2UgaWYgKCAhZW50LmZpZWxkcy5tYXNrICYmCiAgICAgICAgICAgICAgICFl bnQuZmllbGRzLnJlbW90ZV9pcnIgJiYKLSAgICAgICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2Vy dF9jb3VudFtpZHhdICkKKyAgICAgICAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudFtn c2ldICkKICAgICB7CiAgICAgICAgIHBlbnQtPmZpZWxkcy5yZW1vdGVfaXJyID0gMTsKLSAgICAg ICAgdmlvYXBpY19kZWxpdmVyKGQsIGlkeCk7CisgICAgICAgIHZpb2FwaWNfZGVsaXZlcihkLCBn c2kpOwogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xv Y2spOwogCi0gICAgaWYgKCBpZHggPT0gMCB8fCB1bm1hc2tlZCApCisgICAgaWYgKCBnc2kgPT0g MCB8fCB1bm1hc2tlZCApCiAgICAgICAgIHB0X21heV91bm1hc2tfaXJxKGQsIE5VTEwpOwogfQog Ci1zdGF0aWMgdm9pZCB2aW9hcGljX3dyaXRlX2luZGlyZWN0KHN0cnVjdCBkb21haW4gKmQsIHVp bnQzMl90IHZhbCkKK3N0YXRpYyB2b2lkIHZpb2FwaWNfd3JpdGVfaW5kaXJlY3Qoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCB2YWwpCiB7Ci0gICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9h cGljID0gZG9tYWluX3Zpb2FwaWMoZCk7CisgICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9h cGljID0gYWRkcl92aW9hcGljKGQsIGFkZHIpOwogCiAgICAgc3dpdGNoICggdmlvYXBpYy0+aW9y ZWdzZWwgKQogICAgIHsKQEAgLTIwNSw3ICsyNTksOCBAQCBzdGF0aWMgdm9pZCB2aW9hcGljX3dy aXRlX2luZGlyZWN0KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZhbCkKICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgdmlvYXBpY193cml0ZV9yZWRpcmVudChkLCBy ZWRpcl9pbmRleCwgdmlvYXBpYy0+aW9yZWdzZWwmMSwgdmFsKTsKKyAgICAgICAgdmlvYXBpY193 cml0ZV9yZWRpcmVudChkLCB2aW9hcGljLCByZWRpcl9pbmRleCwgdmlvYXBpYy0+aW9yZWdzZWwm MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpOwogICAgICAgICBicmVhazsK ICAgICB9CiAgICAgfQpAQCAtMjE1LDcgKzI3MCwxMCBAQCBzdGF0aWMgaW50IHZpb2FwaWNfd3Jp dGUoCiAgICAgc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICB1bnNpZ25l ZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBsb25nIHZhbCkKIHsKLSAgICBzdHJ1Y3QgaHZtX2h3X3Zp b2FwaWMgKnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyh2LT5kb21haW4pOworICAgIHN0cnVjdCBo dm1faHdfdmlvYXBpYyAqdmlvYXBpYzsKKworICAgIHZpb2FwaWMgPSBhZGRyX3Zpb2FwaWModi0+ ZG9tYWluLCBhZGRyKTsKKyAgICBBU1NFUlQodmlvYXBpYyk7CiAKICAgICBzd2l0Y2ggKCBhZGRy ICYgMHhmZiApCiAgICAgewpAQCAtMjI0LDcgKzI4Miw3IEBAIHN0YXRpYyBpbnQgdmlvYXBpY193 cml0ZSgKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFZJT0FQSUNfUkVHX1dJTkRPVzoKLSAg ICAgICAgdmlvYXBpY193cml0ZV9pbmRpcmVjdCh2LT5kb21haW4sIHZhbCk7CisgICAgICAgIHZp b2FwaWNfd3JpdGVfaW5kaXJlY3Qodi0+ZG9tYWluLCBhZGRyLCB2YWwpOwogICAgICAgICBicmVh azsKIAogI2lmIFZJT0FQSUNfVkVSU0lPTl9JRCA+PSAweDIwCkBAIC0yNDIsMTAgKzMwMCw3IEBA IHN0YXRpYyBpbnQgdmlvYXBpY193cml0ZSgKIAogc3RhdGljIGludCB2aW9hcGljX3JhbmdlKHN0 cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIpCiB7Ci0gICAgc3RydWN0IGh2bV9od192 aW9hcGljICp2aW9hcGljID0gZG9tYWluX3Zpb2FwaWModi0+ZG9tYWluKTsKLQotICAgIHJldHVy biAoKGFkZHIgPj0gdmlvYXBpYy0+YmFzZV9hZGRyZXNzICYmCi0gICAgICAgICAgICAgKGFkZHIg PCB2aW9hcGljLT5iYXNlX2FkZHJlc3MgKyBWSU9BUElDX01FTV9MRU5HVEgpKSk7CisgICAgcmV0 dXJuICEhYWRkcl92aW9hcGljKHYtPmRvbWFpbiwgYWRkcik7CiB9CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaHZtX21taW9fb3BzIHZpb2FwaWNfbW1pb19vcHMgPSB7CkBAIC0yNzcsMTIgKzMzMiwx MyBAQCBzdGF0aWMgaW5saW5lIGludCBwaXRfY2hhbm5lbDBfZW5hYmxlZCh2b2lkKQogCiBzdGF0 aWMgdm9pZCB2aW9hcGljX2RlbGl2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW50IGlycSkKIHsKLSAg ICBzdHJ1Y3QgaHZtX2h3X3Zpb2FwaWMgKnZpb2FwaWMgPSBkb21haW5fdmlvYXBpYyhkKTsKLSAg ICB1aW50MTZfdCBkZXN0ID0gdmlvYXBpYy0+cmVkaXJ0YmxbaXJxXS5maWVsZHMuZGVzdF9pZDsK LSAgICB1aW50OF90IGRlc3RfbW9kZSA9IHZpb2FwaWMtPnJlZGlydGJsW2lycV0uZmllbGRzLmRl c3RfbW9kZTsKLSAgICB1aW50OF90IGRlbGl2ZXJ5X21vZGUgPSB2aW9hcGljLT5yZWRpcnRibFtp cnFdLmZpZWxkcy5kZWxpdmVyeV9tb2RlOwotICAgIHVpbnQ4X3QgdmVjdG9yID0gdmlvYXBpYy0+ cmVkaXJ0YmxbaXJxXS5maWVsZHMudmVjdG9yOwotICAgIHVpbnQ4X3QgdHJpZ19tb2RlID0gdmlv YXBpYy0+cmVkaXJ0YmxbaXJxXS5maWVsZHMudHJpZ19tb2RlOworICAgIHVuc2lnbmVkIGludCBw aW47CisgICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9hcGljID0gZ3NpX3Zpb2FwaWMoZCwg aXJxLCAmcGluKTsKKyAgICB1aW50MTZfdCBkZXN0ID0gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5m aWVsZHMuZGVzdF9pZDsKKyAgICB1aW50OF90IGRlc3RfbW9kZSA9IHZpb2FwaWMtPnJlZGlydGJs W3Bpbl0uZmllbGRzLmRlc3RfbW9kZTsKKyAgICB1aW50OF90IGRlbGl2ZXJ5X21vZGUgPSB2aW9h cGljLT5yZWRpcnRibFtwaW5dLmZpZWxkcy5kZWxpdmVyeV9tb2RlOworICAgIHVpbnQ4X3QgdmVj dG9yID0gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVsZHMudmVjdG9yOworICAgIHVpbnQ4X3Qg dHJpZ19tb2RlID0gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVsZHMudHJpZ19tb2RlOwogICAg IHN0cnVjdCB2bGFwaWMgKnRhcmdldDsKICAgICBzdHJ1Y3QgdmNwdSAqdjsKIApAQCAtMzYxLDE3 ICs0MTcsMTggQEAgc3RhdGljIHZvaWQgdmlvYXBpY19kZWxpdmVyKHN0cnVjdCBkb21haW4gKmQs IGludCBpcnEpCiAKIHZvaWQgdmlvYXBpY19pcnFfcG9zaXRpdmVfZWRnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBpbnQgaXJxKQogewotICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlv YXBpYyA9IGRvbWFpbl92aW9hcGljKGQpOworICAgIHVuc2lnbmVkIGludCBwaW47CisgICAgc3Ry dWN0IGh2bV9od192aW9hcGljICp2aW9hcGljID0gZ3NpX3Zpb2FwaWMoZCwgaXJxLCAmcGluKTsK ICAgICB1bmlvbiB2aW9hcGljX3JlZGlyX2VudHJ5ICplbnQ7CiAKICAgICBBU1NFUlQoaGFzX3Zp b2FwaWMoZCkpOwogCiAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMX0lPQVBJQywgImlycSAleCIs IGlycSk7CiAKLSAgICBBU1NFUlQoaXJxIDwgdmlvYXBpYy0+bnJfcGlucyk7CisgICAgQVNTRVJU KHBpbiA8IHZpb2FwaWMtPm5yX3BpbnMpOwogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmZC0+ YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKSk7CiAKLSAgICBlbnQgPSAmdmlvYXBpYy0+cmVkaXJ0 YmxbaXJxXTsKKyAgICBlbnQgPSAmdmlvYXBpYy0+cmVkaXJ0YmxbcGluXTsKICAgICBpZiAoIGVu dC0+ZmllbGRzLm1hc2sgKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4OCwzNyArNDQ1LDQzIEBA IHZvaWQgdmlvYXBpY19pcnFfcG9zaXRpdmVfZWRnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQgaXJxKQogCiB2b2lkIHZpb2FwaWNfdXBkYXRlX0VPSShzdHJ1Y3QgZG9tYWluICpkLCB1 OCB2ZWN0b3IpCiB7Ci0gICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9hcGljID0gZG9tYWlu X3Zpb2FwaWMoZCk7CiAgICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSAmZC0+YXJjaC5odm1f ZG9tYWluLmlycTsKICAgICB1bmlvbiB2aW9hcGljX3JlZGlyX2VudHJ5ICplbnQ7Ci0gICAgaW50 IGdzaTsKKyAgICB1bnNpZ25lZCBpbnQgaSwgYmFzZV9nc2kgPSAwOwogCiAgICAgQVNTRVJUKGhh c192aW9hcGljKGQpKTsKIAogICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9s b2NrKTsKIAotICAgIGZvciAoIGdzaSA9IDA7IGdzaSA8IHZpb2FwaWMtPm5yX3BpbnM7IGdzaSsr ICkKKyAgICBmb3IgKCBpID0gMDsgaSA8IGQtPmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljczsg aSsrICkKICAgICB7Ci0gICAgICAgIGVudCA9ICZ2aW9hcGljLT5yZWRpcnRibFtnc2ldOwotICAg ICAgICBpZiAoIGVudC0+ZmllbGRzLnZlY3RvciAhPSB2ZWN0b3IgKQotICAgICAgICAgICAgY29u dGludWU7Ci0KLSAgICAgICAgZW50LT5maWVsZHMucmVtb3RlX2lyciA9IDA7CisgICAgICAgIHN0 cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGljKGQsIGkpOworICAg ICAgICB1bnNpZ25lZCBpbnQgajsKIAotICAgICAgICBpZiAoIGlvbW11X2VuYWJsZWQgKQorICAg ICAgICBmb3IgKCBqID0gMDsgaiA8IHZpb2FwaWMtPm5yX3BpbnM7IGorKyApCiAgICAgICAgIHsK LSAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwot ICAgICAgICAgICAgaHZtX2RwY2lfZW9pKGQsIGdzaSwgZW50KTsKLSAgICAgICAgICAgIHNwaW5f bG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKLSAgICAgICAgfQotCi0gICAgICAg IGlmICggKGVudC0+ZmllbGRzLnRyaWdfbW9kZSA9PSBWSU9BUElDX0xFVkVMX1RSSUcpICYmCi0g ICAgICAgICAgICAgIWVudC0+ZmllbGRzLm1hc2sgJiYKLSAgICAgICAgICAgICBodm1faXJxLT5n c2lfYXNzZXJ0X2NvdW50W2dzaV0gKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbnQtPmZpZWxk cy5yZW1vdGVfaXJyID0gMTsKLSAgICAgICAgICAgIHZpb2FwaWNfZGVsaXZlcihkLCBnc2kpOwor ICAgICAgICAgICAgZW50ID0gJnZpb2FwaWMtPnJlZGlydGJsW2pdOworICAgICAgICAgICAgaWYg KCBlbnQtPmZpZWxkcy52ZWN0b3IgIT0gdmVjdG9yICkKKyAgICAgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICAgICAgZW50LT5maWVsZHMucmVtb3RlX2lyciA9IDA7CisKKyAgICAgICAg ICAgIGlmICggaW9tbXVfZW5hYmxlZCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg c3Bpbl91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jayk7CisgICAgICAgICAgICAg ICAgaHZtX2RwY2lfZW9pKGQsIGJhc2VfZ3NpICsgaiwgZW50KTsKKyAgICAgICAgICAgICAgICBz cGluX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jayk7CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGlmICggKGVudC0+ZmllbGRzLnRyaWdfbW9kZSA9PSBWSU9BUElDX0xFVkVM X1RSSUcpICYmCisgICAgICAgICAgICAgICAgICFlbnQtPmZpZWxkcy5tYXNrICYmCisgICAgICAg ICAgICAgICAgIGh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbYmFzZV9nc2kgKyBqXSApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgZW50LT5maWVsZHMucmVtb3RlX2lyciA9IDE7Cisg ICAgICAgICAgICAgICAgdmlvYXBpY19kZWxpdmVyKGQsIGJhc2VfZ3NpICsgaik7CisgICAgICAg ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgYmFzZV9nc2kgKz0gdmlvYXBpYy0+bnJfcGluczsK ICAgICB9CiAKICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsK QEAgLTQzMCwxMSArNDkzLDE0IEBAIHZvaWQgdmlvYXBpY191cGRhdGVfRU9JKHN0cnVjdCBkb21h aW4gKmQsIHU4IHZlY3RvcikKIAogc3RhdGljIGludCB2aW9hcGljX3NhdmUoc3RydWN0IGRvbWFp biAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7Ci0gICAgc3RydWN0IGh2bV9od192aW9h cGljICp2aW9hcGljID0gZG9tYWluX3Zpb2FwaWMoZCk7CisgICAgc3RydWN0IGh2bV9od192aW9h cGljICp2aW9hcGljID0gZG9tYWluX3Zpb2FwaWMoZCwgMCk7CiAKICAgICBpZiAoICFoYXNfdmlv YXBpYyhkKSApCiAgICAgICAgIHJldHVybiAwOwogCisgICAgaWYgKCBkLT5hcmNoLmh2bV9kb21h aW4ubnJfdmlvYXBpY3MgIT0gMSApCisgICAgICAgIHJldHVybiAtRU5PU1lTOworCiAgICAgaWYg KCB2aW9hcGljLT5ucl9waW5zICE9IFZJT0FQSUNfTlVNX1BJTlMgKQogICAgICAgICByZXR1cm4g LUVOT1NZUzsKIApAQCAtNDU2LDcgKzUyMiw3IEBAIHN0YXRpYyBpbnQgdmlvYXBpY19sb2FkKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHVuc2lnbmVkIGlu dCBpb2FwaWNfbnIgPSBodm1fbG9hZF9pbnN0YW5jZShoKTsKICAgICBjb25zdCBzdHJ1Y3QgaHZt X3NhdmVfZGVzY3JpcHRvciAqZGVzYzsKICAgICBzdHJ1Y3QgaHZtX2h3X3Zpb2FwaWNfY29tcGF0 ICppb2FwaWNfY29tcGF0OwotICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqaW9hcGljID0gZG9t YWluX3Zpb2FwaWMoZCk7CisgICAgc3RydWN0IGh2bV9od192aW9hcGljICppb2FwaWMgPSBkb21h aW5fdmlvYXBpYyhkLCAwKTsKIAogICAgIGlmICggIWhhc192aW9hcGljKGQpICkKICAgICAgICAg cmV0dXJuIC1FTk9ERVY7CkBAIC01NDYsNDAgKzYxMiw1MyBAQCBfX2luaXRjYWxsKHZpb2FwaWNf cmVnaXN0ZXJfc2F2ZV9hbmRfcmVzdG9yZSk7CiAKIHZvaWQgdmlvYXBpY19yZXNldChzdHJ1Y3Qg ZG9tYWluICpkKQogewotICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFp bl92aW9hcGljKGQpOwogICAgIHVuc2lnbmVkIGludCBpOwogCiAgICAgaWYgKCAhaGFzX3Zpb2Fw aWMoZCkgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4ubnJfdmlv YXBpY3MpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgbWVtc2V0KHZpb2FwaWMtPnJl ZGlydGJsLCAwLAotICAgICAgICAgICBzaXplb2YoKnZpb2FwaWMtPnJlZGlydGJsKSAqIHZpb2Fw aWMtPm5yX3BpbnMpOwotICAgIGZvciAoIGkgPSAwOyBpIDwgdmlvYXBpYy0+bnJfcGluczsgaSsr ICkKLSAgICAgICAgdmlvYXBpYy0+cmVkaXJ0YmxbaV0uZmllbGRzLm1hc2sgPSAxOwotICAgIHZp b2FwaWMtPmJhc2VfYWRkcmVzcyA9IFZJT0FQSUNfREVGQVVMVF9CQVNFX0FERFJFU1M7Ci0gICAg dmlvYXBpYy0+aWQgPSAwOwotICAgIHZpb2FwaWMtPmlvcmVnc2VsID0gMDsKKyAgICBmb3IgKCBp ID0gMDsgaSA8IGQtPmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljczsgaSsrICkKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYyA9IGRvbWFpbl92aW9hcGljKGQs IGkpOworICAgICAgICB1bnNpZ25lZCBpbnQgajsKKworICAgICAgICBtZW1zZXQodmlvYXBpYy0+ cmVkaXJ0YmwsIDAsCisgICAgICAgICAgICAgICBzaXplb2YoKnZpb2FwaWMtPnJlZGlydGJsKSAq IHZpb2FwaWMtPm5yX3BpbnMpOworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHZpb2FwaWMtPm5y X3BpbnM7IGorKyApCisgICAgICAgICAgICB2aW9hcGljLT5yZWRpcnRibFtqXS5maWVsZHMubWFz ayA9IDE7CisgICAgICAgIHZpb2FwaWMtPmJhc2VfYWRkcmVzcyA9IFZJT0FQSUNfREVGQVVMVF9C QVNFX0FERFJFU1MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSU9BUElDX01F TV9MRU5HVEggKiBpOworICAgICAgICB2aW9hcGljLT5pZCA9IGk7CisgICAgICAgIHZpb2FwaWMt PmlvcmVnc2VsID0gMDsKKyAgICB9CiB9CiAKIGludCB2aW9hcGljX2luaXQoc3RydWN0IGRvbWFp biAqZCkKIHsKICAgICBpZiAoICFoYXNfdmlvYXBpYyhkKSApCisgICAgeworICAgICAgICBkLT5h cmNoLmh2bV9kb21haW4ubnJfdmlvYXBpY3MgPSAwOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9 CiAKICAgICBpZiAoIChkLT5hcmNoLmh2bV9kb21haW4udmlvYXBpYyA9PSBOVUxMKSAmJgogICAg ICAgICAgKChkLT5hcmNoLmh2bV9kb21haW4udmlvYXBpYyA9CiAgICAgICAgICAgIHhtYWxsb2Mo c3RydWN0IGh2bV9od192aW9hcGljKSkgPT0gTlVMTCkgKQogICAgICAgICByZXR1cm4gLUVOT01F TTsKIAotICAgIGRvbWFpbl92aW9hcGljKGQpLT5yZWRpcnRibCA9IHhtYWxsb2NfYXJyYXkodW5p b24gdmlvYXBpY19yZWRpcl9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZJT0FQSUNfTlVNX1BJTlMpOwotICAgIGlmICggIWRvbWFpbl92aW9h cGljKGQpLT5yZWRpcnRibCApCisgICAgZG9tYWluX3Zpb2FwaWMoZCwgMCktPnJlZGlydGJsID0g eG1hbGxvY19hcnJheSh1bmlvbiB2aW9hcGljX3JlZGlyX2VudHJ5LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklPQVBJQ19OVU1fUElOUyk7Cisg ICAgaWYgKCAhZG9tYWluX3Zpb2FwaWMoZCwgMCktPnJlZGlydGJsICkKICAgICB7CiAgICAgICAg IHhmcmVlKGQtPmFyY2guaHZtX2RvbWFpbi52aW9hcGljKTsKICAgICAgICAgcmV0dXJuIC1FTk9N RU07CiAgICAgfQogCi0gICAgZG9tYWluX3Zpb2FwaWMoZCktPm5yX3BpbnMgPSBWSU9BUElDX05V TV9QSU5TOworICAgIGRvbWFpbl92aW9hcGljKGQsIDApLT5ucl9waW5zID0gVklPQVBJQ19OVU1f UElOUzsKKyAgICBkLT5hcmNoLmh2bV9kb21haW4ubnJfdmlvYXBpY3MgPSAxOwogICAgIHZpb2Fw aWNfcmVzZXQoZCk7CiAKICAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZpb2FwaWNfbW1p b19vcHMpOwpAQCAtNTg5LDkgKzY2OCwxNiBAQCBpbnQgdmlvYXBpY19pbml0KHN0cnVjdCBkb21h aW4gKmQpCiAKIHZvaWQgdmlvYXBpY19kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKwogICAgIGlmICggIWhhc192aW9hcGljKGQpICkKKyAgICB7CisgICAg ICAgIEFTU0VSVCghZC0+YXJjaC5odm1fZG9tYWluLm5yX3Zpb2FwaWNzKTsKICAgICAgICAgcmV0 dXJuOworICAgIH0KIAorICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+YXJjaC5odm1fZG9tYWluLm5y X3Zpb2FwaWNzOyBpKysgKQorICAgICAgICB4ZnJlZShkb21haW5fdmlvYXBpYyhkLCBpKS0+cmVk aXJ0YmwpOwogICAgIHhmcmVlKGQtPmFyY2guaHZtX2RvbWFpbi52aW9hcGljKTsKICAgICBkLT5h cmNoLmh2bV9kb21haW4udmlvYXBpYyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZsYXBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwppbmRleCAzZmEzNzI3 Li4xODdmMTA2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKQEAgLTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBpbnQg X192bGFwaWNfYWNjZXB0X3BpY19pbnRyKHN0cnVjdCB2Y3B1ICp2KQogICAgIGlmICggIWhhc192 aW9hcGljKGQpICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZWRpcjAgPSBkb21haW5fdmlv YXBpYyhkKS0+cmVkaXJ0YmxbMF07CisgICAgcmVkaXIwID0gZG9tYWluX3Zpb2FwaWMoZCwgMCkt PnJlZGlydGJsWzBdOwogCiAgICAgLyogV2UgZGVsaXZlciA4MjU5IGludGVycnVwdHMgdG8gdGhl IGFwcHJvcHJpYXRlIENQVSBhcyBmb2xsb3dzLiAqLwogICAgIHJldHVybiAoKC8qIElPQVBJQyBw aW4wIGlzIHVubWFza2VkIGFuZCByb3V0aW5nIHRvIHRoaXMgTEFQSUM/ICovCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL3ZwdC5jIGIveGVuL2FyY2gveDg2L2h2bS92cHQuYwppbmRleCA1 YzQ4ZmRiLi5mZDMwZGZiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZwdC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vdnB0LmMKQEAgLTc4LDcgKzc4LDggQEAgdm9pZCBodm1fc2V0X2d1 ZXN0X3RpbWUoc3RydWN0IHZjcHUgKnYsIHU2NCBndWVzdF90aW1lKQogc3RhdGljIGludCBwdF9p cnFfdmVjdG9yKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCwgZW51bSBodm1faW50c3JjIHNyYykK IHsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IHB0LT52Y3B1OwotICAgIHVuc2lnbmVkIGludCBnc2ks IGlzYV9pcnE7CisgICAgc3RydWN0IGh2bV9od192aW9hcGljICp2aW9hcGljOworICAgIHVuc2ln bmVkIGludCBnc2ksIGlzYV9pcnEsIHBpbjsKIAogICAgIGlmICggcHQtPnNvdXJjZSA9PSBQVFNS Q19sYXBpYyApCiAgICAgICAgIHJldHVybiBwdC0+aXJxOwpAQCAtOTEsMTMgKzkyLDE2IEBAIHN0 YXRpYyBpbnQgcHRfaXJxX3ZlY3RvcihzdHJ1Y3QgcGVyaW9kaWNfdGltZSAqcHQsIGVudW0gaHZt X2ludHNyYyBzcmMpCiAgICAgICAgICAgICAgICAgKyAoaXNhX2lycSAmIDcpKTsKIAogICAgIEFT U0VSVChzcmMgPT0gaHZtX2ludHNyY19sYXBpYyk7Ci0gICAgcmV0dXJuIGRvbWFpbl92aW9hcGlj KHYtPmRvbWFpbiktPnJlZGlydGJsW2dzaV0uZmllbGRzLnZlY3RvcjsKKyAgICB2aW9hcGljID0g Z3NpX3Zpb2FwaWModi0+ZG9tYWluLCBnc2ksICZwaW4pOworCisgICAgcmV0dXJuIHZpb2FwaWMt PnJlZGlydGJsW3Bpbl0uZmllbGRzLnZlY3RvcjsKIH0KIAogc3RhdGljIGludCBwdF9pcnFfbWFz a2VkKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IHB0 LT52Y3B1OwotICAgIHVuc2lnbmVkIGludCBnc2ksIGlzYV9pcnE7CisgICAgdW5zaWduZWQgaW50 IGdzaSwgaXNhX2lycSwgcGluOworICAgIHN0cnVjdCBodm1faHdfdmlvYXBpYyAqdmlvYXBpYzsK ICAgICB1aW50OF90IHBpY19pbXI7CiAKICAgICBpZiAoIHB0LT5zb3VyY2UgPT0gUFRTUkNfbGFw aWMgKQpAQCAtMTEwLDkgKzExNCwxMCBAQCBzdGF0aWMgaW50IHB0X2lycV9tYXNrZWQoc3RydWN0 IHBlcmlvZGljX3RpbWUgKnB0KQogICAgIGlzYV9pcnEgPSBwdC0+aXJxOwogICAgIGdzaSA9IGh2 bV9pc2FfaXJxX3RvX2dzaShpc2FfaXJxKTsKICAgICBwaWNfaW1yID0gdi0+ZG9tYWluLT5hcmNo Lmh2bV9kb21haW4udnBpY1tpc2FfaXJxID4+IDNdLmltcjsKKyAgICB2aW9hcGljID0gZ3NpX3Zp b2FwaWModi0+ZG9tYWluLCBnc2ksICZwaW4pOwogCiAgICAgcmV0dXJuICgoKHBpY19pbXIgJiAo MSA8PCAoaXNhX2lycSAmIDcpKSkgfHwgIXZsYXBpY19hY2NlcHRfcGljX2ludHIodikpICYmCi0g ICAgICAgICAgICBkb21haW5fdmlvYXBpYyh2LT5kb21haW4pLT5yZWRpcnRibFtnc2ldLmZpZWxk cy5tYXNrKTsKKyAgICAgICAgICAgIHZpb2FwaWMtPnJlZGlydGJsW3Bpbl0uZmllbGRzLm1hc2sp OwogfQogCiBzdGF0aWMgdm9pZCBwdF9sb2NrKHN0cnVjdCBwZXJpb2RpY190aW1lICpwdCkKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vZG9tYWluLmgKaW5kZXggNWNmMzM5OC4uY2YxYmUzNyAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vZG9tYWluLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAg ICAgc3RydWN0IGh2bV9pcnEgICAgICAgICBpcnE7CiAgICAgc3RydWN0IGh2bV9od192cGljICAg ICB2cGljWzJdOyAvKiAwPW1hc3RlcjsgMT1zbGF2ZSAqLwogICAgIHN0cnVjdCBodm1faHdfdmlv YXBpYyAqdmlvYXBpYzsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgIG5yX3Zpb2FwaWNzOwog ICAgIHN0cnVjdCBodm1faHdfc3RkdmdhICAgc3RkdmdhOwogCiAgICAgLyoKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3Zpb2FwaWMuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL3Zpb2FwaWMuaAppbmRleCA2NzYyODM1Li42ODg5YjU3IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS92aW9hcGljLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v dmlvYXBpYy5oCkBAIC00Nyw3ICs0Nyw5IEBACiAjZGVmaW5lIFZJT0FQSUNfUkVHX0FSQl9JRCAg MHgwMiAvKiB4ODYgSU9BUElDIG9ubHkgKi8KICNkZWZpbmUgVklPQVBJQ19SRUdfUlRFMCAgICAw eDEwCiAKLSNkZWZpbmUgZG9tYWluX3Zpb2FwaWMoZCkgKChkKS0+YXJjaC5odm1fZG9tYWluLnZp b2FwaWMpCisjZGVmaW5lIGRvbWFpbl92aW9hcGljKGQsIGkpICgmKGQpLT5hcmNoLmh2bV9kb21h aW4udmlvYXBpY1tpXSkKK3N0cnVjdCBodm1faHdfdmlvYXBpYyAqZ3NpX3Zpb2FwaWMoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50ICpwaW4pOwogCiBpbnQgdmlvYXBpY19pbml0KHN0cnVjdCBk b21haW4gKmQpOwogdm9pZCB2aW9hcGljX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKLS0gCjIu MTAuMSAoQXBwbGUgR2l0LTc4KQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=