From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v14 06/11] x86/hvm/ioreq: add a new mappable resource type... Date: Tue, 28 Nov 2017 15:08:48 +0000 Message-ID: <20171128150853.1927-7-paul.durrant@citrix.com> References: <20171128150853.1927-1-paul.durrant@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 1eJhVQ-0000Lv-43 for xen-devel@lists.xenproject.org; Tue, 28 Nov 2017 15:09:04 +0000 In-Reply-To: <20171128150853.1927-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant List-Id: xen-devel@lists.xenproject.org Li4uIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIKClRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0 IGZvciBhIG5ldyByZXNvdXJjZSB0eXBlIHRoYXQgY2FuIGJlIG1hcHBlZCB1c2luZwp0aGUgWEVO TUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5IG9wLgoKSWYgYW4gZW11bGF0b3IgbWFrZXMgdXNl IG9mIHRoaXMgcmVzb3VyY2UgdHlwZSB0aGVuLCBpbnN0ZWFkIG9mIG1hcHBpbmcKZ2ZucywgdGhl IElPUkVRIHNlcnZlciB3aWxsIGFsbG9jYXRlIHBhZ2VzIGZyb20gdGhlIGhlYXAuIFRoZXNlIHBh Z2VzCndpbGwgbmV2ZXIgYmUgcHJlc2VudCBpbiB0aGUgUDJNIG9mIHRoZSBndWVzdCBhdCBhbnkg cG9pbnQgYW5kIHNvIGFyZQpub3QgdnVsbmVyYWJsZSB0byBhbnkgZGlyZWN0IGF0dGFjayBieSB0 aGUgZ3Vlc3QuIFRoZXkgYXJlIG9ubHkgZXZlcgphY2Nlc3NpYmxlIGJ5IFhlbiBhbmQgYW55IGRv bWFpbiB0aGF0IGhhcyBtYXBwaW5nIHByaXZpbGVnZSBvdmVyIHRoZQpndWVzdCAod2hpY2ggbWF5 IG9yIG1heSBub3QgYmUgbGltaXRlZCB0byB0aGUgZG9tYWluIHJ1bm5pbmcgdGhlIGVtdWxhdG9y KS4KCk5PVEU6IFVzZSBvZiB0aGUgbmV3IHJlc291cmNlIHR5cGUgaXMgbm90IGNvbXBhdGlibGUg d2l0aCB1c2Ugb2YKICAgICAgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHVubGVzcyB0 aGUgWEVOX0RNT1Bfbm9fZ2ZucyBmbGFnIGlzCiAgICAgIHNldC4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1 bmxhcEBldS5jaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3Nv biA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogSnVsaWVuIEdy YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCnYxNDoKIC0gQWRkcmVzc2VkIG1vcmUgY29tbWVu dHMgZnJvbSBKYW4uCgp2MTM6CiAtIEludHJvZHVjZSBhbiBhcmNoX2FjcXVpcmVfcmVzb3VyY2Uo KSBhcyBzdWdnZXN0ZWQgYnkgSnVsaWVuIChhbmQgaGF2ZQogICB0aGUgQVJNIHZhcmllbnQgc2lt cGx5IHJldHVybiAtRU9QTk9UU1VQUCkuCiAtIENoZWNrIGZvciBpb3JlcSBzZXJ2ZXIgaWQgdHJ1 bmNhdGlvbiBhcyByZXF1ZXN0ZWQgYnkgSmFuLgogLSBOb3QgYWRkZWQgSmFuJ3MgUi1iIGR1ZSB0 byBzdWJzdGFudGl2ZSBjaGFuZ2UgZnJvbSB2MTIuCgp2MTI6CiAtIEFkZHJlc3NlZCBtb3JlIGNv bW1lbnRzIGZyb20gSmFuLgogLSBEcm9wcGVkIEdlb3JnZSdzIEEtYiBhbmQgV2VpJ3MgUi1iIGJl Y2F1c2Ugb2YgbWF0ZXJpYWwgY2hhbmdlLgoKdjExOgogLSBBZGRyZXNzZWQgbW9yZSBjb21tZW50 cyBmcm9tIEphbi4KCnYxMDoKIC0gQWRkcmVzc2VkIGNvbW1lbnRzIGZyb20gSmFuLgoKdjg6CiAt IFJlLWJhc2Ugb24gbmV3IGJvaWxlcnBsYXRlLgogLSBBZGp1c3QgZnVuY3Rpb24gc2lnbmF0dXJl IG9mIGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKCksIGFuZCB0ZXN0CiAgIHdoZXRoZXIgdGhl IGJ1ZmlvcmVxIHBhZ2UgaXMgcHJlc2VudC4KCnY1OgogLSBVc2UgZ2V0X2lvcmVxX3NlcnZlcigp IGZ1bmN0aW9uIHJhdGhlciB0aGFuIGluZGV4aW5nIGFycmF5IGRpcmVjdGx5LgogLSBBZGQgbW9y ZSBleHBsYW5hdGlvbiBpbnRvIGNvbW1lbnRzIHRvIHN0YXRlIHRoYW4gbWFwcGluZyBndWVzdCBm cmFtZXMKICAgYW5kIGFsbG9jYXRpb24gb2YgcGFnZXMgZm9yIGlvcmVxIHNlcnZlcnMgYXJlIG5v dCBzaW11bHRhbmVvdXNseQogICBwZXJtaXR0ZWQuCiAtIEFkZCBhIGNvbW1lbnQgaW50byBhc20v aW9yZXEuaCBzdGF0aW5nIHRoZSBtZWFuaW5nIG9mIHRoZSBpbmRleAogICB2YWx1ZSBwYXNzZWQg dG8gaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKS4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lv cmVxLmMgICAgICAgIHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgfCAgNDEgKysrKysrKysrKysKIHhl bi9jb21tb24vbWVtb3J5LmMgICAgICAgICAgICAgfCAgIDMgKy0KIHhlbi9pbmNsdWRlL2FzbS1h cm0vbW0uaCAgICAgICAgfCAgIDcgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmgg fCAgIDIgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICB8ICAgNSArKwogeGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oICB8ICAgNCArKwogeGVuL2luY2x1ZGUvcHVibGljL21l bW9yeS5oICAgICB8ICAgOSArKysKIDggZmlsZXMgY2hhbmdlZCwgMjI2IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggMzlkZTY1OWRkZi4uZDk5MWFjOWNkYyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v aW9yZXEuYwpAQCAtMjU5LDYgKzI1OSwxOSBAQCBzdGF0aWMgaW50IGh2bV9tYXBfaW9yZXFfZ2Zu KHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKICAgICBzdHJ1Y3QgaHZtX2lv cmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVmaW9yZXEgOiAmcy0+aW9yZXE7CiAgICAgaW50 IHJjOwogCisgICAgaWYgKCBpb3JwLT5wYWdlICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAg ICAqIElmIGEgcGFnZSBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCAod2hpY2ggd2lsbCBoYXBw ZW4gb24KKyAgICAgICAgICogZGVtYW5kIGlmIGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKCkg aXMgY2FsbGVkKSwgdGhlbgorICAgICAgICAgKiBtYXBwaW5nIGEgZ3Vlc3QgZnJhbWUgaXMgbm90 IHBlcm1pdHRlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggZ2ZuX2VxKGlvcnAtPmdmbiwg SU5WQUxJRF9HRk4pICkKKyAgICAgICAgICAgIHJldHVybiAtRVBFUk07CisKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCBkLT5pc19keWluZyApCiAgICAgICAgIHJldHVybiAt RUlOVkFMOwogCkBAIC0yODEsNiArMjk0LDcwIEBAIHN0YXRpYyBpbnQgaHZtX21hcF9pb3JlcV9n Zm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGJvb2wgYnVmKQogICAgIHJldHVybiByYzsK IH0KIAorc3RhdGljIGludCBodm1fYWxsb2NfaW9yZXFfbWZuKHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzLCBib29sIGJ1ZikKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQt PmRvbWFpbjsKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVm aW9yZXEgOiAmcy0+aW9yZXE7CisKKyAgICBpZiAoIGlvcnAtPnBhZ2UgKQorICAgIHsKKyAgICAg ICAgLyoKKyAgICAgICAgICogSWYgYSBndWVzdCBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIG1hcHBl ZCAod2hpY2ggbWF5IGhhcHBlbgorICAgICAgICAgKiBvbiBkZW1hbmQgaWYgaHZtX2dldF9pb3Jl cV9zZXJ2ZXJfaW5mbygpIGlzIGNhbGxlZCksIHRoZW4KKyAgICAgICAgICogYWxsb2NhdGluZyBh IHBhZ2UgaXMgbm90IHBlcm1pdHRlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggIWdmbl9l cShpb3JwLT5nZm4sIElOVkFMSURfR0ZOKSApCisgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwor CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qCisgICAgICogQWxsb2NhdGVkIElP UkVRIHNlcnZlciBwYWdlcyBhcmUgYXNzaWduZWQgdG8gdGhlIGVtdWxhdGluZworICAgICAqIGRv bWFpbiwgbm90IHRoZSB0YXJnZXQgZG9tYWluLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGVtdWxhdG9y IGlzCisgICAgICogbGlrZWx5IHRvIGJlIGRlc3Ryb3llZCBhZnRlciB0aGUgdGFyZ2V0IGRvbWFp biBoYXMgYmVlbiB0b3JuCisgICAgICogZG93biwgYW5kIHdlIG11c3QgdXNlIE1FTUZfbm9fcmVm Y291bnQgb3RoZXJ3aXNlIHBhZ2UgYWxsb2NhdGlvbgorICAgICAqIGNvdWxkIGZhaWwgaWYgdGhl IGVtdWxhdGluZyBkb21haW4gaGFzIGFscmVhZHkgcmVhY2hlZCBpdHMKKyAgICAgKiBtYXhpbXVt IGFsbG9jYXRpb24uCisgICAgICovCisgICAgaW9ycC0+cGFnZSA9IGFsbG9jX2RvbWhlYXBfcGFn ZShjdXJyZCwgTUVNRl9ub19yZWZjb3VudCk7CisgICAgaWYgKCAhaW9ycC0+cGFnZSApCisgICAg ICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaWYgKCAhZ2V0X3BhZ2VfdHlwZShpb3JwLT5wYWdl LCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxF KCk7CisgICAgICAgIHB1dF9wYWdlKGlvcnAtPnBhZ2UpOworICAgICAgICBpb3JwLT5wYWdlID0g TlVMTDsKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgfQorCisgICAgaW9ycC0+dmEgPSBf X21hcF9kb21haW5fcGFnZV9nbG9iYWwoaW9ycC0+cGFnZSk7CisgICAgaWYgKCAhaW9ycC0+dmEg KQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUoaW9ycC0+cGFnZSk7CisgICAgICAg IGlvcnAtPnBhZ2UgPSBOVUxMOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAg ICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg aHZtX2ZyZWVfaW9yZXFfbWZuKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikK K3sKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVmaW9yZXEg OiAmcy0+aW9yZXE7CisKKyAgICBpZiAoICFpb3JwLT5wYWdlICkKKyAgICAgICAgcmV0dXJuOwor CisgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnZhKTsKKyAgICBpb3JwLT52YSA9 IE5VTEw7CisKKyAgICBwdXRfcGFnZV9hbmRfdHlwZShpb3JwLT5wYWdlKTsKKyAgICBpb3JwLT5w YWdlID0gTlVMTDsKK30KKwogYm9vbCBpc19pb3JlcV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCBjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogewogICAgIGNvbnN0IHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzOwpAQCAtNDg0LDYgKzU2MSwyNyBAQCBzdGF0aWMgdm9pZCBodm1f aW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogICAg IGh2bV91bm1hcF9pb3JlcV9nZm4ocywgZmFsc2UpOwogfQogCitzdGF0aWMgaW50IGh2bV9pb3Jl cV9zZXJ2ZXJfYWxsb2NfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7CisgICAg aW50IHJjOworCisgICAgcmMgPSBodm1fYWxsb2NfaW9yZXFfbWZuKHMsIGZhbHNlKTsKKworICAg IGlmICggIXJjICYmIChzLT5idWZpb3JlcV9oYW5kbGluZyAhPSBIVk1fSU9SRVFTUlZfQlVGSU9S RVFfT0ZGKSApCisgICAgICAgIHJjID0gaHZtX2FsbG9jX2lvcmVxX21mbihzLCB0cnVlKTsKKwor ICAgIGlmICggcmMgKQorICAgICAgICBodm1fZnJlZV9pb3JlcV9tZm4ocywgZmFsc2UpOworCisg ICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcGFn ZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7CisgICAgaHZtX2ZyZWVfaW9yZXFfbWZu KHMsIHRydWUpOworICAgIGh2bV9mcmVlX2lvcmVxX21mbihzLCBmYWxzZSk7Cit9CisKIHN0YXRp YyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMpCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC02MTIsNyArNzEwLDE4IEBAIHN0 YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LAogCiAgZmFpbF9hZGQ6CiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHMp OworCisgICAgLyoKKyAgICAgKiBOT1RFOiBJdCBpcyBzYWZlIHRvIGNhbGwgYm90aCBodm1faW9y ZXFfc2VydmVyX3VubWFwX3BhZ2VzKCkgYW5kCisgICAgICogICAgICAgaHZtX2lvcmVxX3NlcnZl cl9mcmVlX3BhZ2VzKCkgaW4gdGhhdCBvcmRlci4KKyAgICAgKiAgICAgICBUaGlzIGlzIGJlY2F1 c2UgdGhlIGZvcm1lciB3aWxsIGRvIG5vdGhpbmcgaWYgdGhlIHBhZ2VzCisgICAgICogICAgICAg YXJlIG5vdCBtYXBwZWQsIGxlYXZpbmcgdGhlIHBhZ2UgdG8gYmUgZnJlZWQgYnkgdGhlIGxhdHRl ci4KKyAgICAgKiAgICAgICBIb3dldmVyIGlmIHRoZSBwYWdlcyBhcmUgbWFwcGVkIHRoZW4gdGhl IGZvcm1lciB3aWxsIHNldAorICAgICAqICAgICAgIHRoZSBwYWdlX2luZm8gcG9pbnRlciB0byBO VUxMLCBtZWFuaW5nIHRoZSBsYXR0ZXIgd2lsbCBkbworICAgICAqICAgICAgIG5vdGhpbmcuCisg ICAgICovCiAgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKKyAgICBodm1faW9y ZXFfc2VydmVyX2ZyZWVfcGFnZXMocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC02MjIsNiAr NzMxLDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQoc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnMpCiAgICAgQVNTRVJUKCFzLT5lbmFibGVkKTsKICAgICBodm1faW9yZXFf c2VydmVyX3JlbW92ZV9hbGxfdmNwdXMocyk7CiAgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9w YWdlcyhzKTsKKyAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcGFnZXMocyk7CiAgICAgaHZtX2lv cmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzKTsKIH0KIApAQCAtNzc3LDYgKzg4Nyw1MiBAQCBp bnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90 IGlkLAogICAgIHJldHVybiByYzsKIH0KIAoraW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1l KHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBpZHgsIG1mbl90ICptZm4pCit7CisgICAgc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgaW50IHJjOworCisgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2 ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAgIGlmICggaWQg PT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKworICAg IHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsKKworICAgIEFTU0VSVCghSVNfREVGQVVMVChz KSk7CisKKyAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcGFnZXMocyk7CisgICAgaWYg KCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3dpdGNoICggaWR4ICkKKyAgICB7Cisg ICAgY2FzZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1lX2J1ZmlvcmVxOgorICAg ICAgICByYyA9IC1FTk9FTlQ7CisgICAgICAgIGlmICggIUhBTkRMRV9CVUZJT1JFUShzKSApCisg ICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAgICAqbWZuID0gX21mbihwYWdlX3RvX21mbihz LT5idWZpb3JlcS5wYWdlKSk7CisgICAgICAgIHJjID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAg ICBjYXNlIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXJfZnJhbWVfaW9yZXEoMCk6CisgICAg ICAgICptZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHMtPmlvcmVxLnBhZ2UpKTsKKyAgICAgICAgcmMg PSAwOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVJTlZB TDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgb3V0OgorICAgIHNwaW5fdW5sb2NrX3JlY3Vy c2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAgIHJldHVy biByYzsKK30KKwogaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCA2ZWM2ZTY4YWZlLi4yNjU2ZWIxODFhIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAt MTIyLDYgKzEyMiw3IEBACiAjaW5jbHVkZSA8YXNtL2ZpeG1hcC5oPgogI2luY2x1ZGUgPGFzbS9p b19hcGljLmg+CiAjaW5jbHVkZSA8YXNtL3BjaS5oPgorI2luY2x1ZGUgPGFzbS9odm0vaW9yZXEu aD4KIAogI2luY2x1ZGUgPGFzbS9odm0vZ3JhbnRfdGFibGUuaD4KICNpbmNsdWRlIDxhc20vcHYv Z3JhbnRfdGFibGUuaD4KQEAgLTQxNzAsNiArNDE3MSw0NiBAQCBpbnQgeGVubWVtX2FkZF90b19w aHlzbWFwX29uZSgKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBhcmNoX2FjcXVpcmVfcmVzb3Vy Y2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgbG9uZyBmcmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lcywgeGVuX3Bmbl90IG1mbl9s aXN0W10pCit7CisgICAgaW50IHJjOworCisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAg IGNhc2UgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcjoKKyAgICB7CisgICAgICAgIGlvc2Vy dmlkX3QgaW9zZXJ2aWQgPSBpZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICAgICAg cmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGlkICE9ICh1bnNpZ25lZCBpbnQpaW9zZXJ2aWQg KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmMgPSAwOworICAgICAgICBmb3IgKCBp ID0gMDsgaSA8IG5yX2ZyYW1lczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgICAgbWZuX3Qg bWZuOworCisgICAgICAgICAgICByYyA9IGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKGQsIGlk LCBmcmFtZSArIGksICZtZm4pOworICAgICAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgICAgIG1mbl9saXN0W2ldID0gbWZuX3gobWZuKTsKKyAgICAg ICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJj ID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsK K30KKwogbG9uZyBhcmNoX21lbW9yeV9vcCh1bnNpZ25lZCBsb25nIGNtZCwgWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh2b2lkKSBhcmcpCiB7CiAgICAgaW50IHJjOwpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9tZW1vcnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKaW5kZXggNmMzODVhMjMyOC4uMDE2 N2Q5Nzg4YiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9tZW1vcnkuYworKysgYi94ZW4vY29tbW9u L21lbW9yeS5jCkBAIC0xMDE2LDcgKzEwMTYsOCBAQCBzdGF0aWMgaW50IGFjcXVpcmVfcmVzb3Vy Y2UoCiAgICAgc3dpdGNoICggeG1hci50eXBlICkKICAgICB7CiAgICAgZGVmYXVsdDoKLSAgICAg ICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgcmMgPSBhcmNoX2FjcXVpcmVfcmVzb3VyY2Uo ZCwgeG1hci50eXBlLCB4bWFyLmlkLCB4bWFyLmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4bWFyLm5yX2ZyYW1lcywgbWZuX2xpc3QpOwogICAgICAgICBicmVhazsK ICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vbW0uaAppbmRleCBhZDJmMmE0M2RjLi5iZDE0NmRlZTNjIDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5o CkBAIC0zODEsNiArMzgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGFnZV9hbmRfdHlw ZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogCiB2b2lkIGNsZWFyX2FuZF9jbGVhbl9wYWdlKHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2UpOwogCitzdGF0aWMgaW5saW5lIGludCBhcmNoX2FjcXVpcmVf cmVzb3VyY2UoCisgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsIHVuc2ln bmVkIGludCBpZCwKKyAgICB1bnNpZ25lZCBsb25nIGZyYW1lLHVuc2lnbmVkIGludCBucl9mcmFt ZXMsIHhlbl9wZm5fdCBtZm5fbGlzdFtdKQoreworICAgIHJldHVybiAtRU9QTk9UU1VQUDsKK30K KwogI2VuZGlmIC8qICBfX0FSQ0hfQVJNX01NX18gKi8KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaAppbmRleCAxODI5ZmNmNDNlLi45ZTM3Yzk3YTM3IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2lvcmVxLmgKQEAgLTMxLDYgKzMxLDggQEAgaW50IGh2bV9nZXRfaW9yZXFf c2VydmVyX2luZm8oc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmlvcmVxX2dmbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmlvcmVxX2dmbiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgKmJ1ZmlvcmVxX3BvcnQpOworaW50 IGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3Qg aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpZHgsIG1m bl90ICptZm4pOwogaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCA4MzYyNjA4NWUw Li4xMGU1YjZjZDE0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC02MjksNCArNjI5LDkgQEAgc3RhdGljIGlubGlu ZSBib29sIGFyY2hfbWZuX2luX2RpcmVjdG1hcCh1bnNpZ25lZCBsb25nIG1mbikKICAgICByZXR1 cm4gbWZuIDw9ICh2aXJ0X3RvX21mbihldmEgLSAxKSArIDEpOwogfQogCitpbnQgYXJjaF9hY3F1 aXJlX3Jlc291cmNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGxvbmcgZnJhbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mcmFtZXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBtZm5fbGlzdFtdKTsKKwogI2VuZGlmIC8q IF9fQVNNX1g4Nl9NTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v ZG1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAppbmRleCAxM2IzNzM3YzJm Li5hZGQ2OGVhMTkyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCkBAIC05MCw2ICs5MCwxMCBAQCBz dHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgewogICogdGhlIGZyYW1lIG51bWJl cnMgcGFzc2VkIGJhY2sgaW4gZ2ZucyA8aW9yZXFfZ2ZuPiBhbmQgPGJ1ZmlvcmVxX2dmbj4KICAq IHJlc3BlY3RpdmVseS4gKElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRsaW5nIGJ1ZmZl cmVkIGVtdWxhdGlvbgogICogb25seSA8aW9yZXFfZ2ZuPiB3aWxsIGJlIHZhbGlkKS4KKyAqCisg KiBOT1RFOiBUbyBhY2Nlc3MgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVyZXMgYW5kIGJ1 ZmZlcmVkIGlvcmVxCisgKiAgICAgICByaW5nLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUg WEVOTUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5CisgKiAgICAgICBvcCBzcGVjaWZ5aW5nIHJl c291cmNlIHR5cGUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlci4KICAqLwogI2RlZmluZSBY RU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMgogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKaW5kZXggODNl NjBiNjYwMy4uODM4ZjI0OGE1OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL21lbW9y eS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjA5LDkgKzYwOSwxNCBA QCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAgICBkb21pZF90IGRvbWlkOwog ICAgIC8qIElOIC0gdGhlIHR5cGUgb2YgcmVzb3VyY2UgKi8KICAgICB1aW50MTZfdCB0eXBlOwor CisjZGVmaW5lIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIgMAorCiAgICAgLyoKICAgICAg KiBJTiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJl IHplcm8KICAgICAgKiAgICAgIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgorICAgICAqCisgICAg ICogdHlwZSA9PSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyIC0+IGlkID09IGlvcmVxIHNl cnZlciBpZAogICAgICAqLwogICAgIHVpbnQzMl90IGlkOwogICAgIC8qIElOL09VVCAtIEFzIGFu IElOIHBhcmFtZXRlciBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSByZXNvdXJjZQpAQCAtNjI1LDYg KzYzMCwxMCBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAgICAgKiAgICAg IGlzIGlnbm9yZWQgaWYgbnJfZnJhbWVzIGlzIDAuCiAgICAgICovCiAgICAgdWludDY0X2FsaWdu ZWRfdCBmcmFtZTsKKworI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1l X2J1ZmlvcmVxIDAKKyNkZWZpbmUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcl9mcmFtZV9p b3JlcShuKSAoMSArIChuKSkKKwogICAgIC8qIElOL09VVCAtIElmIHRoZSB0b29scyBkb21haW4g aXMgUFYgdGhlbiwgdXBvbiByZXR1cm4sIGZyYW1lX2xpc3QKICAgICAgKiAgICAgICAgICB3aWxs IGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBNRk5zIG9mIHRoZSByZXNvdXJjZS4KICAgICAgKiAgICAg ICAgICBJZiB0aGUgdG9vbHMgZG9tYWluIGlzIEhWTSB0aGVuIGl0IGlzIGV4cGVjdGVkIHRoYXQs IG9uCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRl dmVs