From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v9 06/11] x86/hvm/ioreq: add a new mappable resource type... Date: Fri, 6 Oct 2017 13:25:14 +0100 Message-ID: <20171006122519.30345-7-paul.durrant@citrix.com> References: <20171006122519.30345-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e0Rh2-00065o-Se for xen-devel@lists.xenproject.org; Fri, 06 Oct 2017 12:25:29 +0000 In-Reply-To: <20171006122519.30345-1-paul.durrant@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: Stefano Stabellini , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Jackson , Tim Deegan , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIKClRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0 IGZvciBhIG5ldyByZXNvdXJjZSB0eXBlIHRoYXQgY2FuIGJlIG1hcHBlZCB1c2luZwp0aGUgWEVO TUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5IG9wLgoKSWYgYW4gZW11bGF0b3IgbWFrZXMgdXNl IG9mIHRoaXMgcmVzb3VyY2UgdHlwZSB0aGVuLCBpbnN0ZWFkIG9mIG1hcHBpbmcKZ2ZucywgdGhl IElPUkVRIHNlcnZlciB3aWxsIGFsbG9jYXRlIHBhZ2VzIGZyb20gdGhlIGhlYXAuIFRoZXNlIHBh Z2VzCndpbGwgbmV2ZXIgYmUgcHJlc2VudCBpbiB0aGUgUDJNIG9mIHRoZSBndWVzdCBhdCBhbnkg cG9pbnQgYW5kIHNvIGFyZQpub3QgdnVsbmVyYWJsZSB0byBhbnkgZGlyZWN0IGF0dGFjayBieSB0 aGUgZ3Vlc3QuIFRoZXkgYXJlIG9ubHkgZXZlcgphY2Nlc3NpYmxlIGJ5IFhlbiBhbmQgYW55IGRv bWFpbiB0aGF0IGhhcyBtYXBwaW5nIHByaXZpbGVnZSBvdmVyIHRoZQpndWVzdCAod2hpY2ggbWF5 IG9yIG1heSBub3QgYmUgbGltaXRlZCB0byB0aGUgZG9tYWluIHJ1bm5pbmcgdGhlIGVtdWxhdG9y KS4KCk5PVEU6IFVzZSBvZiB0aGUgbmV3IHJlc291cmNlIHR5cGUgaXMgbm90IGNvbXBhdGlibGUg d2l0aCB1c2Ugb2YKICAgICAgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHVubGVzcyB0 aGUgWEVOX0RNT1Bfbm9fZ2ZucyBmbGFnIGlzCiAgICAgIHNldC4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkFja2VkLWJ5OiBHZW9yZ2UgRHVu bGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBXZWkgTGl1IDx3 ZWkubGl1MkBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBJYW4g SmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsg V2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0 YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgoKdjg6CiAt IFJlLWJhc2Ugb24gbmV3IGJvaWxlcnBsYXRlLgogLSBBZGp1c3QgZnVuY3Rpb24gc2lnbmF0dXJl IG9mIGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKCksIGFuZCB0ZXN0CiAgIHdoZXRoZXIgdGhl IGJ1ZmlvcmVxIHBhZ2UgaXMgcHJlc2VudC4KCnY1OgogLSBVc2UgZ2V0X2lvcmVxX3NlcnZlcigp IGZ1bmN0aW9uIHJhdGhlciB0aGFuIGluZGV4aW5nIGFycmF5IGRpcmVjdGx5LgogLSBBZGQgbW9y ZSBleHBsYW5hdGlvbiBpbnRvIGNvbW1lbnRzIHRvIHN0YXRlIHRoYW4gbWFwcGluZyBndWVzdCBm cmFtZXMKICAgYW5kIGFsbG9jYXRpb24gb2YgcGFnZXMgZm9yIGlvcmVxIHNlcnZlcnMgYXJlIG5v dCBzaW11bHRhbmVvdXNseQogICBwZXJtaXR0ZWQuCiAtIEFkZCBhIGNvbW1lbnQgaW50byBhc20v aW9yZXEuaCBzdGF0aW5nIHRoZSBtZWFuaW5nIG9mIHRoZSBpbmRleAogICB2YWx1ZSBwYXNzZWQg dG8gaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKS4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lv cmVxLmMgICAgICAgIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgfCAgMjIgKysrKysrKwogeGVuL2Nv bW1vbi9tZW1vcnkuYyAgICAgICAgICAgICB8ICAgNSArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vaW9yZXEuaCB8ICAgNiArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICB8ICAg NSArKwogeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oICB8ICAgNCArKwogeGVuL2luY2x1 ZGUvcHVibGljL21lbW9yeS5oICAgICB8ICAxMyArKystCiA3IGZpbGVzIGNoYW5nZWQsIDE5NCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2 bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCmluZGV4IGJiNGZhZGNjM2QuLjdh OTU5MTFiNmIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYworKysgYi94ZW4v YXJjaC94ODYvaHZtL2lvcmVxLmMKQEAgLTI2Niw2ICsyNjYsMTkgQEAgc3RhdGljIGludCBodm1f bWFwX2lvcmVxX2dmbihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgYm9vbCBidWYpCiAgICAg c3RydWN0IGh2bV9pb3JlcV9wYWdlICppb3JwID0gYnVmID8gJnMtPmJ1ZmlvcmVxIDogJnMtPmlv cmVxOwogICAgIGludCByYzsKIAorICAgIGlmICggaW9ycC0+cGFnZSApCisgICAgeworICAgICAg ICAvKgorICAgICAgICAgKiBJZiBhIHBhZ2UgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgKHdo aWNoIHdpbGwgaGFwcGVuIG9uCisgICAgICAgICAqIGRlbWFuZCBpZiBodm1fZ2V0X2lvcmVxX3Nl cnZlcl9mcmFtZSgpIGlzIGNhbGxlZCksIHRoZW4KKyAgICAgICAgICogbWFwcGluZyBhIGd1ZXN0 IGZyYW1lIGlzIG5vdCBwZXJtaXR0ZWQuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGdmbl9l cShpb3JwLT5nZm4sIElOVkFMSURfR0ZOKSApCisgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwor CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICggZC0+aXNfZHlpbmcgKQogICAg ICAgICByZXR1cm4gLUVJTlZBTDsKIApAQCAtMjg4LDYgKzMwMSw2MSBAQCBzdGF0aWMgaW50IGh2 bV9tYXBfaW9yZXFfZ2ZuKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKICAg ICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgaHZtX2FsbG9jX2lvcmVxX21mbihzdHJ1Y3Qg aHZtX2lvcmVxX3NlcnZlciAqcywgYm9vbCBidWYpCit7CisgICAgc3RydWN0IGRvbWFpbiAqY3Vy cmQgPSBjdXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGh2bV9pb3JlcV9wYWdlICppb3JwID0g YnVmID8gJnMtPmJ1ZmlvcmVxIDogJnMtPmlvcmVxOworCisgICAgaWYgKCBpb3JwLT5wYWdlICkK KyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIElmIGEgZ3Vlc3QgZnJhbWUgaGFzIGFscmVh ZHkgYmVlbiBtYXBwZWQgKHdoaWNoIG1heSBoYXBwZW4KKyAgICAgICAgICogb24gZGVtYW5kIGlm IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oKSBpcyBjYWxsZWQpLCB0aGVuCisgICAgICAgICAq IGFsbG9jYXRpbmcgYSBwYWdlIGlzIG5vdCBwZXJtaXR0ZWQuCisgICAgICAgICAqLworICAgICAg ICBpZiAoICFnZm5fZXEoaW9ycC0+Z2ZuLCBJTlZBTElEX0dGTikgKQorICAgICAgICAgICAgcmV0 dXJuIC1FUEVSTTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKgorICAgICAq IEFsbG9jYXRlZCBJT1JFUSBzZXJ2ZXIgcGFnZXMgYXJlIGFzc2lnbmVkIHRvIHRoZSBlbXVsYXRp bmcKKyAgICAgKiBkb21haW4sIG5vdCB0aGUgdGFyZ2V0IGRvbWFpbi4gVGhpcyBpcyBiZWNhdXNl IHRoZSBlbXVsYXRvciBpcworICAgICAqIGxpa2VseSB0byBiZSBkZXN0cm95ZWQgYWZ0ZXIgdGhl IHRhcmdldCBkb21haW4gaGFzIGJlZW4gdG9ybgorICAgICAqIGRvd24sIGFuZCB3ZSBtdXN0IHVz ZSBNRU1GX25vX3JlZmNvdW50IG90aGVyd2lzZSBwYWdlIGFsbG9jYXRpb24KKyAgICAgKiBjb3Vs ZCBmYWlsIGlmIHRoZSBlbXVsYXRpbmcgZG9tYWluIGhhcyBhbHJlYWR5IHJlYWNoZWQgaXRzCisg ICAgICogbWF4aW11bSBhbGxvY2F0aW9uLgorICAgICAqLworICAgIGlvcnAtPnBhZ2UgPSBhbGxv Y19kb21oZWFwX3BhZ2UoY3VycmQsIE1FTUZfbm9fcmVmY291bnQpOworICAgIGlmICggIWlvcnAt PnBhZ2UgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGlvcnAtPnZhID0gX19tYXBf ZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnBhZ2UpOworICAgIGlmICggIWlvcnAtPnZhICkKKyAg ICB7CisgICAgICAgIGlvcnAtPnBhZ2UgPSBOVUxMOworICAgICAgICByZXR1cm4gLUVOT01FTTsK KyAgICB9CisKKyAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgaHZtX2ZyZWVfaW9yZXFfbWZuKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LCBib29sIGJ1ZikKK3sKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAm cy0+YnVmaW9yZXEgOiAmcy0+aW9yZXE7CisKKyAgICBpZiAoICFpb3JwLT5wYWdlICkKKyAgICAg ICAgcmV0dXJuOworCisgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnZhKTsKKyAg ICBpb3JwLT52YSA9IE5VTEw7CisKKyAgICBwdXRfcGFnZShpb3JwLT5wYWdlKTsKKyAgICBpb3Jw LT5wYWdlID0gTlVMTDsKK30KKwogYm9vbCBpc19pb3JlcV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCBjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogewogICAgIGNvbnN0IHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzOwpAQCAtNDkxLDYgKzU1OSwyNyBAQCBzdGF0aWMgdm9pZCBo dm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQog ICAgIGh2bV91bm1hcF9pb3JlcV9nZm4ocywgZmFsc2UpOwogfQogCitzdGF0aWMgaW50IGh2bV9p b3JlcV9zZXJ2ZXJfYWxsb2NfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7Cisg ICAgaW50IHJjOworCisgICAgcmMgPSBodm1fYWxsb2NfaW9yZXFfbWZuKHMsIGZhbHNlKTsKKwor ICAgIGlmICggIXJjICYmIChzLT5idWZpb3JlcV9oYW5kbGluZyAhPSBIVk1fSU9SRVFTUlZfQlVG SU9SRVFfT0ZGKSApCisgICAgICAgIHJjID0gaHZtX2FsbG9jX2lvcmVxX21mbihzLCB0cnVlKTsK KworICAgIGlmICggcmMgKQorICAgICAgICBodm1fZnJlZV9pb3JlcV9tZm4ocywgZmFsc2UpOwor CisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVf cGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7CisgICAgaHZtX2ZyZWVfaW9yZXFf bWZuKHMsIHRydWUpOworICAgIGh2bV9mcmVlX2lvcmVxX21mbihzLCBmYWxzZSk7Cit9CisKIHN0 YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMpCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC02MTksNyArNzA4LDE4IEBA IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzLAogCiAgZmFpbF9hZGQ6CiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVz KHMpOworCisgICAgLyoKKyAgICAgKiBOT1RFOiBJdCBpcyBzYWZlIHRvIGNhbGwgYm90aCBodm1f aW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKCkgYW5kCisgICAgICogICAgICAgaHZtX2lvcmVxX3Nl cnZlcl9mcmVlX3BhZ2VzKCkgaW4gdGhhdCBvcmRlci4KKyAgICAgKiAgICAgICBUaGlzIGlzIGJl Y2F1c2UgdGhlIGZvcm1lciB3aWxsIGRvIG5vdGhpbmcgaWYgdGhlIHBhZ2VzCisgICAgICogICAg ICAgYXJlIG5vdCBtYXBwZWQsIGxlYXZpbmcgdGhlIHBhZ2UgdG8gYmUgZnJlZWQgYnkgdGhlIGxh dHRlci4KKyAgICAgKiAgICAgICBIb3dldmVyIGlmIHRoZSBwYWdlcyBhcmUgbWFwcGVkIHRoZW4g dGhlIGZvcm1lciB3aWxsIHNldAorICAgICAqICAgICAgIHRoZSBwYWdlX2luZm8gcG9pbnRlciB0 byBOVUxMLCBtZWFuaW5nIHRoZSBsYXR0ZXIgd2lsbCBkbworICAgICAqICAgICAgIG5vdGhpbmcu CisgICAgICovCiAgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKKyAgICBodm1f aW9yZXFfc2VydmVyX2ZyZWVfcGFnZXMocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC02Mjks NiArNzI5LDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQoc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnMpCiAgICAgQVNTRVJUKCFzLT5lbmFibGVkKTsKICAgICBodm1faW9y ZXFfc2VydmVyX3JlbW92ZV9hbGxfdmNwdXMocyk7CiAgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1h cF9wYWdlcyhzKTsKKyAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcGFnZXMocyk7CiAgICAgaHZt X2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzKTsKIH0KIApAQCAtNzg0LDYgKzg4NSw0NSBA QCBpbnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZp ZF90IGlkLAogICAgIHJldHVybiByYzsKIH0KIAoraW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2Zy YW1lKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkeCwgbWZuX3QgKm1mbikKK3sKKyAgICBzdHJ1Y3Qg aHZtX2lvcmVxX3NlcnZlciAqczsKKyAgICBpbnQgcmM7CisKKyAgICBzcGluX2xvY2tfcmVjdXJz aXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOworCisgICAgaWYgKCBp ZCA9PSBERUZBVUxUX0lPU0VSVklEICkKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworCisg ICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQpOworCisgICAgQVNTRVJUKCFJU19ERUZBVUxU KHMpKTsKKworICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19wYWdlcyhzKTsKKyAgICBp ZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBpZiAoIGlkeCA9PSAwICkKKyAgICB7 CisgICAgICAgIHJjID0gLUVOT0VOVDsKKyAgICAgICAgaWYgKCAhSEFORExFX0JVRklPUkVRKHMp ICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgICptZm4gPSBfbWZuKHBhZ2VfdG9f bWZuKHMtPmJ1ZmlvcmVxLnBhZ2UpKTsKKyAgICAgICAgcmMgPSAwOworICAgIH0KKyAgICBlbHNl IGlmICggaWR4ID09IDEgKQorICAgICAgICAqbWZuID0gX21mbihwYWdlX3RvX21mbihzLT5pb3Jl cS5wYWdlKSk7CisgICAgZWxzZQorICAgICAgICByYyA9IC1FSU5WQUw7CisKKyBvdXQ6CisgICAg c3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxv Y2spOworCisgICAgcmV0dXJuIHJjOworfQorCiBpbnQgaHZtX21hcF9pb19yYW5nZV90b19pb3Jl cV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGFydCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBlbmQpCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IGQ5ZGY1Y2E2 OWYuLmM5YmM0YTRlOTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS5jCkBAIC0xMjIsNiArMTIyLDcgQEAKICNpbmNsdWRlIDxhc20vZml4bWFwLmg+ CiAjaW5jbHVkZSA8YXNtL2lvX2FwaWMuaD4KICNpbmNsdWRlIDxhc20vcGNpLmg+CisjaW5jbHVk ZSA8YXNtL2h2bS9pb3JlcS5oPgogCiAjaW5jbHVkZSA8YXNtL2h2bS9ncmFudF90YWJsZS5oPgog I2luY2x1ZGUgPGFzbS9wdi9ncmFudF90YWJsZS5oPgpAQCAtMzg2Niw2ICszODY3LDI3IEBAIGlu dCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAogICAgIHJldHVybiByYzsKIH0KIAoraW50IHhl bm1lbV9hY3F1aXJlX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZnJhbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfZnJhbWVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbl9saXN0 W10pCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2Zy YW1lczsgaSsrICkKKyAgICB7CisgICAgICAgIG1mbl90IG1mbjsKKyAgICAgICAgaW50IHJjID0g aHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoZCwgaWQsIGZyYW1lICsgaSwgJm1mbik7CisKKyAg ICAgICAgaWYgKCByYyApCisgICAgICAgICAgICByZXR1cm4gcmM7CisKKyAgICAgICAgbWZuX2xp c3RbaV0gPSBtZm5feChtZm4pOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBsb25nIGFy Y2hfbWVtb3J5X29wKHVuc2lnbmVkIGxvbmcgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZv aWQpIGFyZykKIHsKICAgICBpbnQgcmM7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5j IGIveGVuL2NvbW1vbi9tZW1vcnkuYwppbmRleCA5MTBjMGM1MDYzLi44MGEzZjQyODc1IDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL21lbW9yeS5jCisrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKQEAg LTk4OCw2ICs5ODgsMTEgQEAgc3RhdGljIGludCBhY3F1aXJlX3Jlc291cmNlKGNvbnN0IHhlbl9t ZW1fYWNxdWlyZV9yZXNvdXJjZV90ICp4bWFyKQogCiAgICAgc3dpdGNoICggeG1hci0+dHlwZSAp CiAgICAgeworICAgIGNhc2UgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcjoKKyAgICAgICAg cmMgPSB4ZW5tZW1fYWNxdWlyZV9pb3JlcV9zZXJ2ZXIoZCwgeG1hci0+aWQsIHhtYXItPmZyYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWFyLT5ucl9mcmFt ZXMsIG1mbl9saXN0KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICBy YyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2lvcmVxLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCmlu ZGV4IDE4MjlmY2Y0M2UuLmE0ZjU4ZGM5ZWUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2lvcmVxLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaApAQCAt MzEsNiArMzEsMTIgQEAgaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgKmlvcmVxX2dmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgKmJ1ZmlvcmVxX2dmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2 dGNobl9wb3J0X3QgKmJ1ZmlvcmVxX3BvcnQpOworLyoKKyAqIEdldCB0aGUgbWZuIG9mIGVpdGhl ciB0aGUgYnVmZmVyZWQgb3Igc3luY2hyb25vdXMgaW9yZXEgZnJhbWUuCisgKiAoaWR4ID09IDAg LT4gYnVmZmVyZWQsIGlkeCA9PSAxIC0+IHN5bmNocm9ub3VzKS4KKyAqLworaW50IGh2bV9nZXRf aW9yZXFfc2VydmVyX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkeCwgbWZuX3QgKm1mbik7 CiBpbnQgaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwg aW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCB0eXBlLCB1aW50NjRfdCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBlbmQpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCmluZGV4IGYyZTBmNDk4YzQuLjYzN2IxZWVl MWMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L21tLmgKQEAgLTYxNSw0ICs2MTUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXJj aF9tZm5faW5fZGlyZWN0bWFwKHVuc2lnbmVkIGxvbmcgbWZuKQogICAgIHJldHVybiBtZm4gPD0g KHZpcnRfdG9fbWZuKGV2YSAtIDEpICsgMSk7CiB9CiAKK2ludCB4ZW5tZW1fYWNxdWlyZV9pb3Jl cV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yX2ZyYW1lcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm5fbGlzdFtdKTsKKwogI2VuZGlmIC8q IF9fQVNNX1g4Nl9NTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v ZG1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAppbmRleCA5Njc3YmQ3NGU3 Li41OWI2MDA2OTEwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCkBAIC05MCw2ICs5MCwxMCBAQCBz dHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgewogICogdGhlIGZyYW1lIG51bWJl cnMgcGFzc2VkIGJhY2sgaW4gZ2ZucyA8aW9yZXFfZ2ZuPiBhbmQgPGJ1ZmlvcmVxX2dmbj4KICAq IHJlc3BlY3RpdmVseS4gKElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRsaW5nIGJ1ZmZl cmVkIGVtdWxhdGlvbgogICogb25seSA8aW9yZXFfZ2ZuPiB3aWxsIGJlIHZhbGlkKS4KKyAqCisg KiBOT1RFOiBUbyBhY2Nlc3MgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVyZXMgYW5kIGJ1 ZmZlcmVkIGlvcmVxCisgKiAgICAgICByaW5nLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUg WEVOTUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5CisgKiAgICAgICBvcCBzcGVjaWZ5aW5nIHJl c291cmNlIHR5cGUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlci4KICAqLwogI2RlZmluZSBY RU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMgogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKaW5kZXggM2Fh OGZiMmZlMS4uZTMwYTRkOTc5NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL21lbW9y eS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjA5LDE1ICs2MDksMjYg QEAgc3RydWN0IHhlbl9tZW1fYWNxdWlyZV9yZXNvdXJjZSB7CiAgICAgZG9taWRfdCBkb21pZDsK ICAgICAvKiBJTiAtIHRoZSB0eXBlIG9mIHJlc291cmNlICovCiAgICAgdWludDE2X3QgdHlwZTsK KworI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyIDAKKwogICAgIC8qCiAgICAg ICogSU4gLSBhIHR5cGUtc3BlY2lmaWMgcmVzb3VyY2UgaWRlbnRpZmllciwgd2hpY2ggbXVzdCBi ZSB6ZXJvCiAgICAgICogICAgICB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4KKyAgICAgKgorICAg ICAqIHR5cGUgPT0gWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlciAtPiBpZCA9PSBpb3JlcSBz ZXJ2ZXIgaWQKICAgICAgKi8KICAgICB1aW50MzJfdCBpZDsKICAgICAvKiBJTiAtIG51bWJlciBv ZiAoNEspIGZyYW1lcyBvZiB0aGUgcmVzb3VyY2UgdG8gYmUgbWFwcGVkICovCiAgICAgdWludDMy X3QgbnJfZnJhbWVzOwogICAgIHVpbnQzMl90IHBhZDsKLSAgICAvKiBJTiAtIHRoZSBpbmRleCBv ZiB0aGUgaW5pdGlhbCBmcmFtZSB0byBiZSBtYXBwZWQgKi8KKyAgICAvKiBJTiAtIHRoZSBpbmRl eCBvZiB0aGUgaW5pdGlhbCBmcmFtZSB0byBiZSBtYXBwZWQKKyAgICAgKgorICAgICAqIHR5cGUg PT0gWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlciAtPiBmcmFtZSA9PSAwIC0+IGJ1ZmlvcmVx CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFnZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmcmFtZSA9PSAxIC0+IGlvcmVxCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZQorICAgICAqLwogICAgIHVpbnQ2NF9hbGln bmVkX3QgZnJhbWU7CiAgICAgLyogSU4vT1VUIC0gSWYgdGhlIHRvb2xzIGRvbWFpbiBpcyBQViB0 aGVuLCB1cG9uIHJldHVybiwgZ21mbl9saXN0CiAgICAgICogICAgICAgICAgd2lsbCBiZSBwb3B1 bGF0ZWQgd2l0aCB0aGUgTUZOcyBvZiB0aGUgcmVzb3VyY2UuCi0tIAoyLjExLjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK