From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v13 06/11] x86/hvm/ioreq: add a new mappable resource type... Date: Mon, 30 Oct 2017 17:48:24 +0000 Message-ID: <20171030174829.4518-7-paul.durrant@citrix.com> References: <20171030174829.4518-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 1e9EAw-0006ml-Fu for xen-devel@lists.xenproject.org; Mon, 30 Oct 2017 17:48:38 +0000 In-Reply-To: <20171030174829.4518-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 , Wei Liu , Konrad Rzeszutek Wilk , 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+Ci0tLQpDYzogR2VvcmdlIER1bmxh cCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0 cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmph Y2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndp bGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVs Lm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxp ZW4uZ3JhbGxAYXJtLmNvbT4KCnYxMzoKIC0gSW50cm9kdWNlIGFuIGFyY2hfYWNxdWlyZV9yZXNv dXJjZSgpIGFzIHN1Z2dlc3RlZCBieSBKdWxpZW4gKGFuZCBoYXZlCiAgIHRoZSBBUk0gdmFyaWVu dCBzaW1wbHkgcmV0dXJuIC1FT1BOT1RTVVBQKS4KIC0gQ2hlY2sgZm9yIGlvcmVxIHNlcnZlciBp ZCB0cnVuY2F0aW9uIGFzIHJlcXVlc3RlZCBieSBKYW4uCiAtIE5vdCBhZGRlZCBKYW4ncyBSLWIg ZHVlIHRvIHN1YnN0YW50aXZlIGNoYW5nZSBmcm9tIHYxMi4KCnYxMjoKIC0gQWRkcmVzc2VkIG1v cmUgY29tbWVudHMgZnJvbSBKYW4uCiAtIERyb3BwZWQgR2VvcmdlJ3MgQS1iIGFuZCBXZWkncyBS LWIgYmVjYXVzZSBvZiBtYXRlcmlhbCBjaGFuZ2UuCgp2MTE6CiAtIEFkZHJlc3NlZCBtb3JlIGNv bW1lbnRzIGZyb20gSmFuLgoKdjEwOgogLSBBZGRyZXNzZWQgY29tbWVudHMgZnJvbSBKYW4uCgp2 ODoKIC0gUmUtYmFzZSBvbiBuZXcgYm9pbGVycGxhdGUuCiAtIEFkanVzdCBmdW5jdGlvbiBzaWdu YXR1cmUgb2YgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfZnJhbWUoKSwgYW5kIHRlc3QKICAgd2hldGhl ciB0aGUgYnVmaW9yZXEgcGFnZSBpcyBwcmVzZW50LgoKdjU6CiAtIFVzZSBnZXRfaW9yZXFfc2Vy dmVyKCkgZnVuY3Rpb24gcmF0aGVyIHRoYW4gaW5kZXhpbmcgYXJyYXkgZGlyZWN0bHkuCiAtIEFk ZCBtb3JlIGV4cGxhbmF0aW9uIGludG8gY29tbWVudHMgdG8gc3RhdGUgdGhhbiBtYXBwaW5nIGd1 ZXN0IGZyYW1lcwogICBhbmQgYWxsb2NhdGlvbiBvZiBwYWdlcyBmb3IgaW9yZXEgc2VydmVycyBh cmUgbm90IHNpbXVsdGFuZW91c2x5CiAgIHBlcm1pdHRlZC4KIC0gQWRkIGEgY29tbWVudCBpbnRv IGFzbS9pb3JlcS5oIHN0YXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIGluZGV4CiAgIHZhbHVlIHBh c3NlZCB0byBodm1fZ2V0X2lvcmVxX3NlcnZlcl9mcmFtZSgpLgotLS0KIHhlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYyAgICAgICAgfCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICB8ICA0OSArKysrKysrKysr KysrCiB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAgICAgIHwgICAzICstCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL21tLmggICAgICAgIHwgICA3ICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9p b3JlcS5oIHwgICAyICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCAgICAgICAgfCAgIDUgKysK IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCAgfCAgIDQgKysKIHhlbi9pbmNsdWRlL3B1 YmxpYy9tZW1vcnkuaCAgICAgfCAgIDkgKysrCiA4IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCmluZGV4IDM5ZGU2NTlkZGYuLmQ5OTFhYzlj ZGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMKQEAgLTI1OSw2ICsyNTksMTkgQEAgc3RhdGljIGludCBodm1fbWFwX2lv cmVxX2dmbihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgYm9vbCBidWYpCiAgICAgc3RydWN0 IGh2bV9pb3JlcV9wYWdlICppb3JwID0gYnVmID8gJnMtPmJ1ZmlvcmVxIDogJnMtPmlvcmVxOwog ICAgIGludCByYzsKIAorICAgIGlmICggaW9ycC0+cGFnZSApCisgICAgeworICAgICAgICAvKgor ICAgICAgICAgKiBJZiBhIHBhZ2UgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgKHdoaWNoIHdp bGwgaGFwcGVuIG9uCisgICAgICAgICAqIGRlbWFuZCBpZiBodm1fZ2V0X2lvcmVxX3NlcnZlcl9m cmFtZSgpIGlzIGNhbGxlZCksIHRoZW4KKyAgICAgICAgICogbWFwcGluZyBhIGd1ZXN0IGZyYW1l IGlzIG5vdCBwZXJtaXR0ZWQuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGdmbl9lcShpb3Jw LT5nZm4sIElOVkFMSURfR0ZOKSApCisgICAgICAgICAgICByZXR1cm4gLUVQRVJNOworCisgICAg ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICggZC0+aXNfZHlpbmcgKQogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKIApAQCAtMjgxLDYgKzI5NCw3MCBAQCBzdGF0aWMgaW50IGh2bV9tYXBf aW9yZXFfZ2ZuKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKICAgICByZXR1 cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgaHZtX2FsbG9jX2lvcmVxX21mbihzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqcywgYm9vbCBidWYpCit7CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBj dXJyZW50LT5kb21haW47CisgICAgc3RydWN0IGh2bV9pb3JlcV9wYWdlICppb3JwID0gYnVmID8g JnMtPmJ1ZmlvcmVxIDogJnMtPmlvcmVxOworCisgICAgaWYgKCBpb3JwLT5wYWdlICkKKyAgICB7 CisgICAgICAgIC8qCisgICAgICAgICAqIElmIGEgZ3Vlc3QgZnJhbWUgaGFzIGFscmVhZHkgYmVl biBtYXBwZWQgKHdoaWNoIG1heSBoYXBwZW4KKyAgICAgICAgICogb24gZGVtYW5kIGlmIGh2bV9n ZXRfaW9yZXFfc2VydmVyX2luZm8oKSBpcyBjYWxsZWQpLCB0aGVuCisgICAgICAgICAqIGFsbG9j YXRpbmcgYSBwYWdlIGlzIG5vdCBwZXJtaXR0ZWQuCisgICAgICAgICAqLworICAgICAgICBpZiAo ICFnZm5fZXEoaW9ycC0+Z2ZuLCBJTlZBTElEX0dGTikgKQorICAgICAgICAgICAgcmV0dXJuIC1F UEVSTTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEFsbG9j YXRlZCBJT1JFUSBzZXJ2ZXIgcGFnZXMgYXJlIGFzc2lnbmVkIHRvIHRoZSBlbXVsYXRpbmcKKyAg ICAgKiBkb21haW4sIG5vdCB0aGUgdGFyZ2V0IGRvbWFpbi4gVGhpcyBpcyBiZWNhdXNlIHRoZSBl bXVsYXRvciBpcworICAgICAqIGxpa2VseSB0byBiZSBkZXN0cm95ZWQgYWZ0ZXIgdGhlIHRhcmdl dCBkb21haW4gaGFzIGJlZW4gdG9ybgorICAgICAqIGRvd24sIGFuZCB3ZSBtdXN0IHVzZSBNRU1G X25vX3JlZmNvdW50IG90aGVyd2lzZSBwYWdlIGFsbG9jYXRpb24KKyAgICAgKiBjb3VsZCBmYWls IGlmIHRoZSBlbXVsYXRpbmcgZG9tYWluIGhhcyBhbHJlYWR5IHJlYWNoZWQgaXRzCisgICAgICog bWF4aW11bSBhbGxvY2F0aW9uLgorICAgICAqLworICAgIGlvcnAtPnBhZ2UgPSBhbGxvY19kb21o ZWFwX3BhZ2UoY3VycmQsIE1FTUZfbm9fcmVmY291bnQpOworICAgIGlmICggIWlvcnAtPnBhZ2Ug KQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGlmICggIWdldF9wYWdlX3R5cGUoaW9y cC0+cGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlJF QUNIQUJMRSgpOworICAgICAgICBwdXRfcGFnZShpb3JwLT5wYWdlKTsKKyAgICAgICAgaW9ycC0+ cGFnZSA9IE5VTEw7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIGlvcnAt PnZhID0gX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGlvcnAtPnBhZ2UpOworICAgIGlmICggIWlv cnAtPnZhICkKKyAgICB7CisgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKGlvcnAtPnBhZ2UpOwor ICAgICAgICBpb3JwLT5wYWdlID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAg fQorCisgICAgY2xlYXJfcGFnZShpb3JwLT52YSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGh2bV9mcmVlX2lvcmVxX21mbihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgYm9v bCBidWYpCit7CisgICAgc3RydWN0IGh2bV9pb3JlcV9wYWdlICppb3JwID0gYnVmID8gJnMtPmJ1 ZmlvcmVxIDogJnMtPmlvcmVxOworCisgICAgaWYgKCAhaW9ycC0+cGFnZSApCisgICAgICAgIHJl dHVybjsKKworICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbChpb3JwLT52YSk7CisgICAgaW9y cC0+dmEgPSBOVUxMOworCisgICAgcHV0X3BhZ2VfYW5kX3R5cGUoaW9ycC0+cGFnZSk7CisgICAg aW9ycC0+cGFnZSA9IE5VTEw7Cit9CisKIGJvb2wgaXNfaW9yZXFfc2VydmVyX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSkKIHsKICAgICBjb25zdCBz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKQEAgLTQ4NCw2ICs1NjEsMjcgQEAgc3RhdGljIHZv aWQgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAq cykKICAgICBodm1fdW5tYXBfaW9yZXFfZ2ZuKHMsIGZhbHNlKTsKIH0KIAorc3RhdGljIGludCBo dm1faW9yZXFfc2VydmVyX2FsbG9jX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQor eworICAgIGludCByYzsKKworICAgIHJjID0gaHZtX2FsbG9jX2lvcmVxX21mbihzLCBmYWxzZSk7 CisKKyAgICBpZiAoICFyYyAmJiAocy0+YnVmaW9yZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVRU1JW X0JVRklPUkVRX09GRikgKQorICAgICAgICByYyA9IGh2bV9hbGxvY19pb3JlcV9tZm4ocywgdHJ1 ZSk7CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgaHZtX2ZyZWVfaW9yZXFfbWZuKHMsIGZhbHNl KTsKKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9m cmVlX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIGh2bV9mcmVlX2lv cmVxX21mbihzLCB0cnVlKTsKKyAgICBodm1fZnJlZV9pb3JlcV9tZm4ocywgZmFsc2UpOworfQor CiBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzKQogewogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtNjEyLDcgKzcxMCwx OCBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKIAogIGZhaWxfYWRkOgogICAgIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX2FsbF92 Y3B1cyhzKTsKKworICAgIC8qCisgICAgICogTk9URTogSXQgaXMgc2FmZSB0byBjYWxsIGJvdGgg aHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcygpIGFuZAorICAgICAqICAgICAgIGh2bV9pb3Jl cV9zZXJ2ZXJfZnJlZV9wYWdlcygpIGluIHRoYXQgb3JkZXIuCisgICAgICogICAgICAgVGhpcyBp cyBiZWNhdXNlIHRoZSBmb3JtZXIgd2lsbCBkbyBub3RoaW5nIGlmIHRoZSBwYWdlcworICAgICAq ICAgICAgIGFyZSBub3QgbWFwcGVkLCBsZWF2aW5nIHRoZSBwYWdlIHRvIGJlIGZyZWVkIGJ5IHRo ZSBsYXR0ZXIuCisgICAgICogICAgICAgSG93ZXZlciBpZiB0aGUgcGFnZXMgYXJlIG1hcHBlZCB0 aGVuIHRoZSBmb3JtZXIgd2lsbCBzZXQKKyAgICAgKiAgICAgICB0aGUgcGFnZV9pbmZvIHBvaW50 ZXIgdG8gTlVMTCwgbWVhbmluZyB0aGUgbGF0dGVyIHdpbGwgZG8KKyAgICAgKiAgICAgICBub3Ro aW5nLgorICAgICAqLwogICAgIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocyk7CisgICAg aHZtX2lvcmVxX3NlcnZlcl9mcmVlX3BhZ2VzKHMpOwogCiAgICAgcmV0dXJuIHJjOwogfQpAQCAt NjIyLDYgKzczMSw3IEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzKQogICAgIEFTU0VSVCghcy0+ZW5hYmxlZCk7CiAgICAgaHZt X2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHMpOwogICAgIGh2bV9pb3JlcV9zZXJ2ZXJf dW5tYXBfcGFnZXMocyk7CisgICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3BhZ2VzKHMpOwogICAg IGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocyk7CiB9CiAKQEAgLTc3Nyw2ICs4ODcs NTIgQEAgaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRvbWFpbiAqZCwgaW9z ZXJ2aWRfdCBpZCwKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBodm1fZ2V0X2lvcmVxX3NlcnZl cl9mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWR4LCBtZm5fdCAqbWZuKQoreworICAgIHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIGludCByYzsKKworICAgIHNwaW5fbG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CisKKyAgICBp ZiAoIGlkID09IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 CisKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CisKKyAgICBBU1NFUlQoIUlTX0RF RkFVTFQocykpOworCisgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FsbG9jX3BhZ2VzKHMpOwor ICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHN3aXRjaCAoIGlkeCApCisg ICAgeworICAgIGNhc2UgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcl9mcmFtZV9idWZpb3Jl cToKKyAgICAgICAgcmMgPSAtRU5PRU5UOworICAgICAgICBpZiAoICFIQU5ETEVfQlVGSU9SRVEo cykgKQorICAgICAgICAgICAgZ290byBvdXQ7CisKKyAgICAgICAgKm1mbiA9IF9tZm4ocGFnZV90 b19tZm4ocy0+YnVmaW9yZXEucGFnZSkpOworICAgICAgICByYyA9IDA7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1lX2lvcmVxKDAp OgorICAgICAgICAqbWZuID0gX21mbihwYWdlX3RvX21mbihzLT5pb3JlcS5wYWdlKSk7CisgICAg ICAgIHJjID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9 IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIH0KKworIG91dDoKKyAgICBzcGluX3VubG9j a19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CisKKyAg ICByZXR1cm4gcmM7Cit9CisKIGludCBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihz dHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IHN0YXJ0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCkKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggNjJkMzEzZTNmNS4uYThjMjA3 Yjk3MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21t LmMKQEAgLTEyMiw2ICsxMjIsNyBAQAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNsdWRl IDxhc20vaW9fYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9wY2kuaD4KKyNpbmNsdWRlIDxhc20vaHZt L2lvcmVxLmg+CiAKICNpbmNsdWRlIDxhc20vaHZtL2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8 YXNtL3B2L2dyYW50X3RhYmxlLmg+CkBAIC00MDA5LDYgKzQwMTAsNTQgQEAgaW50IHhlbm1lbV9h ZGRfdG9fcGh5c21hcF9vbmUoCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IGFjcXVp cmVfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZnJhbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mcmFtZXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBtZm5fbGlzdFtdKQoreworICAgIHVuc2ln bmVkIGludCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9mcmFtZXM7IGkrKyApCisgICAg eworICAgICAgICBtZm5fdCBtZm47CisgICAgICAgIGludCByYyA9IGh2bV9nZXRfaW9yZXFfc2Vy dmVyX2ZyYW1lKGQsIGlkLCBmcmFtZSArIGksICZtZm4pOworCisgICAgICAgIGlmICggcmMgKQor ICAgICAgICAgICAgcmV0dXJuIHJjOworCisgICAgICAgIG1mbl9saXN0W2ldID0gbWZuX3gobWZu KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGFyY2hfYWNxdWlyZV9yZXNvdXJj ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBsb25nIGZyYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLCB4ZW5fcGZuX3QgbWZuX2xp c3RbXSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAg Y2FzZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgaW9zZXJ2 aWRfdCBpb3NlcnZpZCA9IGlkOworCisgICAgICAgIGlmICggaWQgIT0gKHVuc2lnbmVkIGludClp b3NlcnZpZCApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICByYyA9IGFj cXVpcmVfaW9yZXFfc2VydmVyKGQsIGlvc2VydmlkLCBmcmFtZSwgbnJfZnJhbWVzLCBtZm5fbGlz dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0g LUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30K KwogbG9uZyBhcmNoX21lbW9yeV9vcCh1bnNpZ25lZCBsb25nIGNtZCwgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh2b2lkKSBhcmcpCiB7CiAgICAgaW50IHJjOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1v bi9tZW1vcnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKaW5kZXggZmIzYmE1Y2MyOC4uMWM2OTMy ZmQ4NSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9tZW1vcnkuYworKysgYi94ZW4vY29tbW9uL21l bW9yeS5jCkBAIC0xMDExLDcgKzEwMTEsOCBAQCBzdGF0aWMgaW50IGFjcXVpcmVfcmVzb3VyY2Uo CiAgICAgc3dpdGNoICggeG1hci50eXBlICkKICAgICB7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg cmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgcmMgPSBhcmNoX2FjcXVpcmVfcmVzb3VyY2UoZCwg eG1hci50eXBlLCB4bWFyLmlkLCB4bWFyLmZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4bWFyLm5yX2ZyYW1lcywgbWZuX2xpc3QpOwogICAgICAgICBicmVhazsKICAg ICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vbW0uaAppbmRleCBjZDZkZmI1NGI5Li45ZTBlYTUyNmFhIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCkBA IC0zNzYsNiArMzc2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGFnZV9hbmRfdHlwZShz dHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogCiB2b2lkIGNsZWFyX2FuZF9jbGVhbl9wYWdlKHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UpOwogCitzdGF0aWMgaW5saW5lIGludCBhcmNoX2FjcXVpcmVfcmVz b3VyY2UoCisgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVk IGludCBpZCwKKyAgICB1bnNpZ25lZCBsb25nIGZyYW1lLHVuc2lnbmVkIGludCBucl9mcmFtZXMs IHhlbl9wZm5fdCBtZm5fbGlzdFtdKQoreworICAgIHJldHVybiAtRU9QTk9UU1VQUDsKK30KKwog I2VuZGlmIC8qICBfX0FSQ0hfQVJNX01NX18gKi8KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vaW9yZXEuaAppbmRleCAxODI5ZmNmNDNlLi45ZTM3Yzk3YTM3IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL2lvcmVxLmgKQEAgLTMxLDYgKzMxLDggQEAgaW50IGh2bV9nZXRfaW9yZXFfc2Vy dmVyX2luZm8oc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmlvcmVxX2dmbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmlvcmVxX2dmbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgKmJ1ZmlvcmVxX3BvcnQpOworaW50IGh2 bV9nZXRfaW9yZXFfc2VydmVyX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpZHgsIG1mbl90 ICptZm4pOwogaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21h aW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCAyNmYwMTUzMTY0Li41 YjFhZTAyNzIzIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC02MjYsNCArNjI2LDkgQEAgc3RhdGljIGlubGluZSBi b29sIGFyY2hfbWZuX2luX2RpcmVjdG1hcCh1bnNpZ25lZCBsb25nIG1mbikKICAgICByZXR1cm4g bWZuIDw9ICh2aXJ0X3RvX21mbihldmEgLSAxKSArIDEpOwogfQogCitpbnQgYXJjaF9hY3F1aXJl X3Jlc291cmNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCB0eXBlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGxvbmcgZnJhbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mcmFtZXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBtZm5fbGlzdFtdKTsKKwogI2VuZGlmIC8qIF9f QVNNX1g4Nl9NTV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1f b3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAppbmRleCAxM2IzNzM3YzJmLi5h ZGQ2OGVhMTkyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKKysr IGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCkBAIC05MCw2ICs5MCwxMCBAQCBzdHJ1 Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgewogICogdGhlIGZyYW1lIG51bWJlcnMg cGFzc2VkIGJhY2sgaW4gZ2ZucyA8aW9yZXFfZ2ZuPiBhbmQgPGJ1ZmlvcmVxX2dmbj4KICAqIHJl c3BlY3RpdmVseS4gKElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRsaW5nIGJ1ZmZlcmVk IGVtdWxhdGlvbgogICogb25seSA8aW9yZXFfZ2ZuPiB3aWxsIGJlIHZhbGlkKS4KKyAqCisgKiBO T1RFOiBUbyBhY2Nlc3MgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVyZXMgYW5kIGJ1ZmZl cmVkIGlvcmVxCisgKiAgICAgICByaW5nLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUgWEVO TUVNX2FjcXVpcmVfcmVzb3VyY2UgbWVtb3J5CisgKiAgICAgICBvcCBzcGVjaWZ5aW5nIHJlc291 cmNlIHR5cGUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlci4KICAqLwogI2RlZmluZSBYRU5f RE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMgogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9w dWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKaW5kZXggODNlNjBi NjYwMy4uODM4ZjI0OGE1OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5o CisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjA5LDkgKzYwOSwxNCBAQCBz dHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAgICBkb21pZF90IGRvbWlkOwogICAg IC8qIElOIC0gdGhlIHR5cGUgb2YgcmVzb3VyY2UgKi8KICAgICB1aW50MTZfdCB0eXBlOworCisj ZGVmaW5lIFhFTk1FTV9yZXNvdXJjZV9pb3JlcV9zZXJ2ZXIgMAorCiAgICAgLyoKICAgICAgKiBJ TiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJlIHpl cm8KICAgICAgKiAgICAgIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgorICAgICAqCisgICAgICog dHlwZSA9PSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyIC0+IGlkID09IGlvcmVxIHNlcnZl ciBpZAogICAgICAqLwogICAgIHVpbnQzMl90IGlkOwogICAgIC8qIElOL09VVCAtIEFzIGFuIElO IHBhcmFtZXRlciBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSByZXNvdXJjZQpAQCAtNjI1LDYgKzYz MCwxMCBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNlIHsKICAgICAgKiAgICAgIGlz IGlnbm9yZWQgaWYgbnJfZnJhbWVzIGlzIDAuCiAgICAgICovCiAgICAgdWludDY0X2FsaWduZWRf dCBmcmFtZTsKKworI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfaW9yZXFfc2VydmVyX2ZyYW1lX2J1 ZmlvcmVxIDAKKyNkZWZpbmUgWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlcl9mcmFtZV9pb3Jl cShuKSAoMSArIChuKSkKKwogICAgIC8qIElOL09VVCAtIElmIHRoZSB0b29scyBkb21haW4gaXMg UFYgdGhlbiwgdXBvbiByZXR1cm4sIGZyYW1lX2xpc3QKICAgICAgKiAgICAgICAgICB3aWxsIGJl IHBvcHVsYXRlZCB3aXRoIHRoZSBNRk5zIG9mIHRoZSByZXNvdXJjZS4KICAgICAgKiAgICAgICAg ICBJZiB0aGUgdG9vbHMgZG9tYWluIGlzIEhWTSB0aGVuIGl0IGlzIGV4cGVjdGVkIHRoYXQsIG9u Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK