From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v16 06/11] x86/hvm/ioreq: add a new mappable resource type... Date: Fri, 15 Dec 2017 10:41:46 +0000 Message-ID: <20171215104151.29754-7-paul.durrant@citrix.com> References: <20171215104151.29754-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ePnSf-0006N1-VF for xen-devel@lists.xenproject.org; Fri, 15 Dec 2017 10:43:25 +0000 In-Reply-To: <20171215104151.29754-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIKClRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0 IGZvciBhIG5ldyByZXNvdXJjZSB0eXBlIHRoYXQgY2FuIGJlIG1hcHBlZCB1c2luZwp0aGUgWEVO TUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5IG9wLgoKSWYgYW4gZW11bGF0b3IgbWFrZXMgdXNl IG9mIHRoaXMgcmVzb3VyY2UgdHlwZSB0aGVuLCBpbnN0ZWFkIG9mIG1hcHBpbmcKZ2ZucywgdGhl IElPUkVRIHNlcnZlciB3aWxsIGFsbG9jYXRlIHBhZ2VzIGZyb20gdGhlIGhlYXAuIFRoZXNlIHBh Z2VzCndpbGwgbmV2ZXIgYmUgcHJlc2VudCBpbiB0aGUgUDJNIG9mIHRoZSBndWVzdCBhdCBhbnkg cG9pbnQgYW5kIHNvIGFyZQpub3QgdnVsbmVyYWJsZSB0byBhbnkgZGlyZWN0IGF0dGFjayBieSB0 aGUgZ3Vlc3QuIFRoZXkgYXJlIG9ubHkgZXZlcgphY2Nlc3NpYmxlIGJ5IFhlbiBhbmQgYW55IGRv bWFpbiB0aGF0IGhhcyBtYXBwaW5nIHByaXZpbGVnZSBvdmVyIHRoZQpndWVzdCAod2hpY2ggbWF5 IG9yIG1heSBub3QgYmUgbGltaXRlZCB0byB0aGUgZG9tYWluIHJ1bm5pbmcgdGhlIGVtdWxhdG9y KS4KCk5PVEU6IFVzZSBvZiB0aGUgbmV3IHJlc291cmNlIHR5cGUgaXMgbm90IGNvbXBhdGlibGUg d2l0aCB1c2Ugb2YKICAgICAgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHVubGVzcyB0 aGUgWEVOX0RNT1Bfbm9fZ2ZucyBmbGFnIGlzCiAgICAgIHNldC4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5j aXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndp bGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVs Lm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxp ZW4uZ3JhbGxAYXJtLmNvbT4KCnYxNToKIC0gVXNlIHhlbmhlYXAgcGFnZXMgcmF0aGVyIHRoYW4g ZG9taGVhcCBwYWdlcyBhbmQgYXNzaWduIG93bmVyc2hpcCB0bwogICB0YXJnZXQgZG9tYWluLgoK djE0OgogLSBBZGRyZXNzZWQgbW9yZSBjb21tZW50cyBmcm9tIEphbi4KCnYxMzoKIC0gSW50cm9k dWNlIGFuIGFyY2hfYWNxdWlyZV9yZXNvdXJjZSgpIGFzIHN1Z2dlc3RlZCBieSBKdWxpZW4gKGFu ZCBoYXZlCiAgIHRoZSBBUk0gdmFyaWVudCBzaW1wbHkgcmV0dXJuIC1FT1BOT1RTVVBQKS4KIC0g Q2hlY2sgZm9yIGlvcmVxIHNlcnZlciBpZCB0cnVuY2F0aW9uIGFzIHJlcXVlc3RlZCBieSBKYW4u CiAtIE5vdCBhZGRlZCBKYW4ncyBSLWIgZHVlIHRvIHN1YnN0YW50aXZlIGNoYW5nZSBmcm9tIHYx Mi4KCnYxMjoKIC0gQWRkcmVzc2VkIG1vcmUgY29tbWVudHMgZnJvbSBKYW4uCiAtIERyb3BwZWQg R2VvcmdlJ3MgQS1iIGFuZCBXZWkncyBSLWIgYmVjYXVzZSBvZiBtYXRlcmlhbCBjaGFuZ2UuCgp2 MTE6CiAtIEFkZHJlc3NlZCBtb3JlIGNvbW1lbnRzIGZyb20gSmFuLgoKdjEwOgogLSBBZGRyZXNz ZWQgY29tbWVudHMgZnJvbSBKYW4uCgp2ODoKIC0gUmUtYmFzZSBvbiBuZXcgYm9pbGVycGxhdGUu CiAtIEFkanVzdCBmdW5jdGlvbiBzaWduYXR1cmUgb2YgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJh bWUoKSwgYW5kIHRlc3QKICAgd2hldGhlciB0aGUgYnVmaW9yZXEgcGFnZSBpcyBwcmVzZW50LgoK djU6CiAtIFVzZSBnZXRfaW9yZXFfc2VydmVyKCkgZnVuY3Rpb24gcmF0aGVyIHRoYW4gaW5kZXhp bmcgYXJyYXkgZGlyZWN0bHkuCiAtIEFkZCBtb3JlIGV4cGxhbmF0aW9uIGludG8gY29tbWVudHMg dG8gc3RhdGUgdGhhbiBtYXBwaW5nIGd1ZXN0IGZyYW1lcwogICBhbmQgYWxsb2NhdGlvbiBvZiBw YWdlcyBmb3IgaW9yZXEgc2VydmVycyBhcmUgbm90IHNpbXVsdGFuZW91c2x5CiAgIHBlcm1pdHRl ZC4KIC0gQWRkIGEgY29tbWVudCBpbnRvIGFzbS9pb3JlcS5oIHN0YXRpbmcgdGhlIG1lYW5pbmcg b2YgdGhlIGluZGV4CiAgIHZhbHVlIHBhc3NlZCB0byBodm1fZ2V0X2lvcmVxX3NlcnZlcl9mcmFt ZSgpLgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgfCAxMzMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tLmMgICAgICAg ICAgICAgICB8ICA0MSArKysrKysrKysrKysrCiB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAg ICAgIHwgICAzICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggICAgICAgIHwgICA3ICsrKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaCB8ICAgMiArCiB4ZW4vaW5jbHVkZS9hc20t eDg2L21tLmggICAgICAgIHwgICA1ICsrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgg IHwgICA0ICsrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmggICAgIHwgICA5ICsrKwogOCBm aWxlcyBjaGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpp bmRleCBhMDE1MDA2YjllLi43YWQ1M2JhMjVlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC0yNTksNiArMjU5LDE5 IEBAIHN0YXRpYyBpbnQgaHZtX21hcF9pb3JlcV9nZm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnMsIGJvb2wgYnVmKQogICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZz LT5idWZpb3JlcSA6ICZzLT5pb3JlcTsKICAgICBpbnQgcmM7CiAKKyAgICBpZiAoIGlvcnAtPnBh Z2UgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgYSBwYWdlIGhhcyBhbHJlYWR5 IGJlZW4gYWxsb2NhdGVkICh3aGljaCB3aWxsIGhhcHBlbiBvbgorICAgICAgICAgKiBkZW1hbmQg aWYgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKSBpcyBjYWxsZWQpLCB0aGVuCisgICAgICAg ICAqIG1hcHBpbmcgYSBndWVzdCBmcmFtZSBpcyBub3QgcGVybWl0dGVkLgorICAgICAgICAgKi8K KyAgICAgICAgaWYgKCBnZm5fZXEoaW9ycC0+Z2ZuLCBJTlZBTElEX0dGTikgKQorICAgICAgICAg ICAgcmV0dXJuIC1FUEVSTTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAo IGQtPmlzX2R5aW5nICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTI4MSw2ICsyOTQs NDcgQEAgc3RhdGljIGludCBodm1fbWFwX2lvcmVxX2dmbihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqcywgYm9vbCBidWYpCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IGh2bV9hbGxv Y19pb3JlcV9tZm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGJvb2wgYnVmKQoreworICAg IHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5idWZpb3JlcSA6ICZzLT5p b3JlcTsKKworICAgIGlmICggaW9ycC0+cGFnZSApCisgICAgeworICAgICAgICAvKgorICAgICAg ICAgKiBJZiBhIGd1ZXN0IGZyYW1lIGhhcyBhbHJlYWR5IGJlZW4gbWFwcGVkICh3aGljaCBtYXkg aGFwcGVuCisgICAgICAgICAqIG9uIGRlbWFuZCBpZiBodm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZv KCkgaXMgY2FsbGVkKSwgdGhlbgorICAgICAgICAgKiBhbGxvY2F0aW5nIGEgcGFnZSBpcyBub3Qg cGVybWl0dGVkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAhZ2ZuX2VxKGlvcnAtPmdmbiwg SU5WQUxJRF9HRk4pICkKKyAgICAgICAgICAgIHJldHVybiAtRVBFUk07CisKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorCisgICAgaW9ycC0+dmEgPSBhbGxvY194ZW5oZWFwX3BhZ2UoKTsKKyAg ICBpZiAoICFpb3JwLT52YSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgY2xlYXJf cGFnZShpb3JwLT52YSk7CisKKyAgICBpb3JwLT5wYWdlID0gdmlydF90b19wYWdlKGlvcnAtPnZh KTsKKyAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KGlvcnAtPnBhZ2UsIHMtPmRvbWFpbiwg WEVOU0hBUkVfd3JpdGFibGUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBodm1f ZnJlZV9pb3JlcV9tZm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGJvb2wgYnVmKQorewor ICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5idWZpb3JlcSA6ICZz LT5pb3JlcTsKKworICAgIGlmICggIWlvcnAtPnBhZ2UgKQorICAgICAgICByZXR1cm47CisKKyAg ICBpb3JwLT5wYWdlID0gTlVMTDsKKworICAgIGZyZWVfeGVuaGVhcF9wYWdlKGlvcnAtPnZhKTsK KyAgICBpb3JwLT52YSA9IE5VTEw7Cit9CisKIGJvb2wgaXNfaW9yZXFfc2VydmVyX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSkKIHsKICAgICBjb25z dCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKQEAgLTQ4NCw2ICs1MzgsMjcgQEAgc3RhdGlj IHZvaWQgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqcykKICAgICBodm1fdW5tYXBfaW9yZXFfZ2ZuKHMsIGZhbHNlKTsKIH0KIAorc3RhdGljIGlu dCBodm1faW9yZXFfc2VydmVyX2FsbG9jX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz KQoreworICAgIGludCByYzsKKworICAgIHJjID0gaHZtX2FsbG9jX2lvcmVxX21mbihzLCBmYWxz ZSk7CisKKyAgICBpZiAoICFyYyAmJiAocy0+YnVmaW9yZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVR U1JWX0JVRklPUkVRX09GRikgKQorICAgICAgICByYyA9IGh2bV9hbGxvY19pb3JlcV9tZm4ocywg dHJ1ZSk7CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgaHZtX2ZyZWVfaW9yZXFfbWZuKHMsIGZh bHNlKTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZl cl9mcmVlX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIGh2bV9mcmVl X2lvcmVxX21mbihzLCB0cnVlKTsKKyAgICBodm1fZnJlZV9pb3JlcV9tZm4ocywgZmFsc2UpOwor fQorCiBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzKQogewogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtNjMxLDcgKzcw NiwxOSBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqcykKIHsKICAgICBBU1NFUlQoIXMtPmVuYWJsZWQpOwogICAgIGh2bV9pb3Jl cV9zZXJ2ZXJfcmVtb3ZlX2FsbF92Y3B1cyhzKTsKKworICAgIC8qCisgICAgICogTk9URTogSXQg aXMgc2FmZSB0byBjYWxsIGJvdGggaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcygpIGFuZAor ICAgICAqICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9wYWdlcygpIGluIHRoYXQgb3JkZXIu CisgICAgICogICAgICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBmb3JtZXIgd2lsbCBkbyBub3RoaW5n IGlmIHRoZSBwYWdlcworICAgICAqICAgICAgIGFyZSBub3QgbWFwcGVkLCBsZWF2aW5nIHRoZSBw YWdlIHRvIGJlIGZyZWVkIGJ5IHRoZSBsYXR0ZXIuCisgICAgICogICAgICAgSG93ZXZlciBpZiB0 aGUgcGFnZXMgYXJlIG1hcHBlZCB0aGVuIHRoZSBmb3JtZXIgd2lsbCBzZXQKKyAgICAgKiAgICAg ICB0aGUgcGFnZV9pbmZvIHBvaW50ZXIgdG8gTlVMTCwgbWVhbmluZyB0aGUgbGF0dGVyIHdpbGwg ZG8KKyAgICAgKiAgICAgICBub3RoaW5nLgorICAgICAqLwogICAgIGh2bV9pb3JlcV9zZXJ2ZXJf dW5tYXBfcGFnZXMocyk7CisgICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3BhZ2VzKHMpOworCiAg ICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzKTsKIH0KIApAQCAtNzg3LDYgKzg3 NCw1MiBAQCBpbnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLCBp b3NlcnZpZF90IGlkLAogICAgIHJldHVybiByYzsKIH0KIAoraW50IGh2bV9nZXRfaW9yZXFfc2Vy dmVyX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpZHgsIG1mbl90ICptZm4pCit7CisgICAg c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgaW50IHJjOworCisgICAgc3Bpbl9sb2Nr X3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAg IGlmICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKKworICAgIHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsKKworICAgIEFTU0VSVCghSVNf REVGQVVMVChzKSk7CisKKyAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcGFnZXMocyk7 CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3dpdGNoICggaWR4ICkK KyAgICB7CisgICAgY2FzZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1lX2J1Zmlv cmVxOgorICAgICAgICByYyA9IC1FTk9FTlQ7CisgICAgICAgIGlmICggIUhBTkRMRV9CVUZJT1JF UShzKSApCisgICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAgICAqbWZuID0gX21mbihwYWdl X3RvX21mbihzLT5idWZpb3JlcS5wYWdlKSk7CisgICAgICAgIHJjID0gMDsKKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXJfZnJhbWVfaW9yZXEo MCk6CisgICAgICAgICptZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHMtPmlvcmVxLnBhZ2UpKTsKKyAg ICAgICAgcmMgPSAwOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJj ID0gLUVJTlZBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgb3V0OgorICAgIHNwaW5fdW5s b2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKwor ICAgIHJldHVybiByYzsKK30KKwogaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVy KHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKQpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCAwZGFlZGVjMTBkLi5kMmYx NTNhZTI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYv bW0uYwpAQCAtMTIyLDYgKzEyMiw3IEBACiAjaW5jbHVkZSA8YXNtL2ZpeG1hcC5oPgogI2luY2x1 ZGUgPGFzbS9pb19hcGljLmg+CiAjaW5jbHVkZSA8YXNtL3BjaS5oPgorI2luY2x1ZGUgPGFzbS9o dm0vaW9yZXEuaD4KIAogI2luY2x1ZGUgPGFzbS9odm0vZ3JhbnRfdGFibGUuaD4KICNpbmNsdWRl IDxhc20vcHYvZ3JhbnRfdGFibGUuaD4KQEAgLTQxODgsNiArNDE4OSw0NiBAQCBpbnQgeGVubWVt X2FkZF90b19waHlzbWFwX29uZSgKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBhcmNoX2FjcXVp cmVfcmVzb3VyY2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgbG9uZyBmcmFtZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lcywgeGVuX3Bm bl90IG1mbl9saXN0W10pCit7CisgICAgaW50IHJjOworCisgICAgc3dpdGNoICggdHlwZSApCisg ICAgeworICAgIGNhc2UgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcjoKKyAgICB7CisgICAg ICAgIGlvc2VydmlkX3QgaW9zZXJ2aWQgPSBpZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGlkICE9ICh1bnNpZ25lZCBpbnQp aW9zZXJ2aWQgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmMgPSAwOworICAgICAg ICBmb3IgKCBpID0gMDsgaSA8IG5yX2ZyYW1lczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAg ICAgbWZuX3QgbWZuOworCisgICAgICAgICAgICByYyA9IGh2bV9nZXRfaW9yZXFfc2VydmVyX2Zy YW1lKGQsIGlkLCBmcmFtZSArIGksICZtZm4pOworICAgICAgICAgICAgaWYgKCByYyApCisgICAg ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIG1mbl9saXN0W2ldID0gbWZuX3gobWZu KTsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6Cisg ICAgICAgIHJjID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl dHVybiByYzsKK30KKwogbG9uZyBhcmNoX21lbW9yeV9vcCh1bnNpZ25lZCBsb25nIGNtZCwgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiB7CiAgICAgaW50IHJjOwpkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKaW5kZXggNmMzODVh MjMyOC4uMDE2N2Q5Nzg4YiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9tZW1vcnkuYworKysgYi94 ZW4vY29tbW9uL21lbW9yeS5jCkBAIC0xMDE2LDcgKzEwMTYsOCBAQCBzdGF0aWMgaW50IGFjcXVp cmVfcmVzb3VyY2UoCiAgICAgc3dpdGNoICggeG1hci50eXBlICkKICAgICB7CiAgICAgZGVmYXVs dDoKLSAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgcmMgPSBhcmNoX2FjcXVpcmVf cmVzb3VyY2UoZCwgeG1hci50eXBlLCB4bWFyLmlkLCB4bWFyLmZyYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4bWFyLm5yX2ZyYW1lcywgbWZuX2xpc3QpOwogICAgICAg ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAppbmRleCA0ZDU1NjNiMGNlLi4yMDE1MzRhYjBjIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LWFybS9tbS5oCkBAIC0zODEsNiArMzgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGFn ZV9hbmRfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogCiB2b2lkIGNsZWFyX2FuZF9jbGVh bl9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpOwogCitzdGF0aWMgaW5saW5lIGludCBhcmNo X2FjcXVpcmVfcmVzb3VyY2UoCisgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5 cGUsIHVuc2lnbmVkIGludCBpZCwKKyAgICB1bnNpZ25lZCBsb25nIGZyYW1lLHVuc2lnbmVkIGlu dCBucl9mcmFtZXMsIHhlbl9wZm5fdCBtZm5fbGlzdFtdKQoreworICAgIHJldHVybiAtRU9QTk9U U1VQUDsKK30KKwogI2VuZGlmIC8qICBfX0FSQ0hfQVJNX01NX18gKi8KIC8qCiAgKiBMb2NhbCB2 YXJpYWJsZXM6CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaAppbmRleCAxODI5ZmNmNDNlLi45ZTM3Yzk3 YTM3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmgKQEAgLTMxLDYgKzMxLDggQEAgaW50IGh2bV9n ZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmlvcmVxX2dmbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmlvcmVxX2dmbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgKmJ1ZmlvcmVxX3Bv cnQpOworaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIGlv c2VydmlkX3QgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBpZHgsIG1mbl90ICptZm4pOwogaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVy KHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKTsKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCA3 ZTlmMzA2ZmY1Li5lZWMwNDYxMmZlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21t LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC02MzAsNCArNjMwLDkgQEAgc3Rh dGljIGlubGluZSBib29sIGFyY2hfbWZuX2luX2RpcmVjdG1hcCh1bnNpZ25lZCBsb25nIG1mbikK ICAgICByZXR1cm4gbWZuIDw9ICh2aXJ0X3RvX21mbihldmEgLSAxKSArIDEpOwogfQogCitpbnQg YXJjaF9hY3F1aXJlX3Jlc291cmNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCB0eXBl LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGxv bmcgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mcmFt ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBtZm5fbGlzdFtdKTsKKwog I2VuZGlmIC8qIF9fQVNNX1g4Nl9NTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAppbmRleCAx M2IzNzM3YzJmLi5hZGQ2OGVhMTkyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZt L2RtX29wLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCkBAIC05MCw2ICs5 MCwxMCBAQCBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgewogICogdGhlIGZy YW1lIG51bWJlcnMgcGFzc2VkIGJhY2sgaW4gZ2ZucyA8aW9yZXFfZ2ZuPiBhbmQgPGJ1ZmlvcmVx X2dmbj4KICAqIHJlc3BlY3RpdmVseS4gKElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRs aW5nIGJ1ZmZlcmVkIGVtdWxhdGlvbgogICogb25seSA8aW9yZXFfZ2ZuPiB3aWxsIGJlIHZhbGlk KS4KKyAqCisgKiBOT1RFOiBUbyBhY2Nlc3MgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVy ZXMgYW5kIGJ1ZmZlcmVkIGlvcmVxCisgKiAgICAgICByaW5nLCBpdCBpcyBwcmVmZXJhYmxlIHRv IHVzZSB0aGUgWEVOTUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5CisgKiAgICAgICBvcCBzcGVj aWZ5aW5nIHJlc291cmNlIHR5cGUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlci4KICAqLwog I2RlZmluZSBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMgogCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgK aW5kZXggODNlNjBiNjYwMy4uODM4ZjI0OGE1OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL21lbW9yeS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjA5LDkg KzYwOSwxNCBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAgICBkb21pZF90 IGRvbWlkOwogICAgIC8qIElOIC0gdGhlIHR5cGUgb2YgcmVzb3VyY2UgKi8KICAgICB1aW50MTZf dCB0eXBlOworCisjZGVmaW5lIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIgMAorCiAgICAg LyoKICAgICAgKiBJTiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGlj aCBtdXN0IGJlIHplcm8KICAgICAgKiAgICAgIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgorICAg ICAqCisgICAgICogdHlwZSA9PSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyIC0+IGlkID09 IGlvcmVxIHNlcnZlciBpZAogICAgICAqLwogICAgIHVpbnQzMl90IGlkOwogICAgIC8qIElOL09V VCAtIEFzIGFuIElOIHBhcmFtZXRlciBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSByZXNvdXJjZQpA QCAtNjI1LDYgKzYzMCwxMCBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAg ICAgKiAgICAgIGlzIGlnbm9yZWQgaWYgbnJfZnJhbWVzIGlzIDAuCiAgICAgICovCiAgICAgdWlu dDY0X2FsaWduZWRfdCBmcmFtZTsKKworI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2Vy dmVyX2ZyYW1lX2J1ZmlvcmVxIDAKKyNkZWZpbmUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZl cl9mcmFtZV9pb3JlcShuKSAoMSArIChuKSkKKwogICAgIC8qIElOL09VVCAtIElmIHRoZSB0b29s cyBkb21haW4gaXMgUFYgdGhlbiwgdXBvbiByZXR1cm4sIGZyYW1lX2xpc3QKICAgICAgKiAgICAg ICAgICB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBNRk5zIG9mIHRoZSByZXNvdXJjZS4KICAg ICAgKiAgICAgICAgICBJZiB0aGUgdG9vbHMgZG9tYWluIGlzIEhWTSB0aGVuIGl0IGlzIGV4cGVj dGVkIHRoYXQsIG9uCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs