From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v8 13/15] xen: make grant resource limits per domain Date: Wed, 20 Sep 2017 08:34:28 +0200 Message-ID: <20170920063430.9105-14-jgross@suse.com> References: <20170920063430.9105-1-jgross@suse.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 1duYal-000371-Ti for xen-devel@lists.xenproject.org; Wed, 20 Sep 2017 06:34:40 +0000 In-Reply-To: <20170920063430.9105-1-jgross@suse.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: Juergen Gross , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiB1c2luZyB0aGUgc2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50 IHRhYmxlcyAobWF4LgpudW1iZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0 cmFjayBmcmFtZXMpIGZvciBhbGwgZG9tYWlucwptYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWlu LiBTZXQgdGhvc2UgcGVyLWRvbWFpbiBsaW1pdHMgaW4KZ3JhbnRfdGFibGVfc2V0X2xpbWl0cygp LgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpSZXZpZXdl ZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tClY2OgotIHNl dmVyYWwgY2hhbmdlcyBkdWUgdG8gbmV3IHBhdGNoIG9yZGVyCgpWMzoKLSBjb3JyZWN0IGVycm9y IG1lc3NhZ2UgKFBhdWwgRHVycmFudCkKLS0tCiB4ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJs ZS5jICAgfCAgMzEgKysrLS0tLS0tLQogeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAg IHwgMTIxICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL2dyYW50X3RhYmxlLmggfCAgIDYgKy0KIDMgZmlsZXMgY2hhbmdlZCwgODggaW5z ZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9jb21w YXQvZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vY29tcGF0L2dyYW50X3RhYmxlLmMKaW5kZXgg Y2NlM2ZmMGI5YS4uZmYxZDY3OGYwMSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9jb21wYXQvZ3Jh bnRfdGFibGUuYworKysgYi94ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJsZS5jCkBAIC0xNTcs MjEgKzE1NywxNCBAQCBpbnQgY29tcGF0X2dyYW50X3RhYmxlX29wKHVuc2lnbmVkIGludCBjbWQs CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFn ZSA9CiAgICAgICAgICAgICAgICAgICAgIChDT01QQVRfQVJHX1hMQVRfU0laRSAtIHNpemVvZigq bmF0LnNldHVwKSkgLwogICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm5hdC5zZXR1cC0+ZnJh bWVfbGlzdC5wKTsKLSAgICAgICAgICAgICAgICBpZiAoIG1heF9mcmFtZV9saXN0X3NpemVfaW5f cGFnZSA8IG1heF9ncmFudF9mcmFtZXMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJtYXhfZ3JhbnRfZnJhbWVzIGlzIHRvbyBsYXJnZSAoJXUsJXUpXG4iLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ3JhbnRfZnJhbWVzLCBtYXhfZnJhbWVfbGlzdF9z aXplX2luX3BhZ2UpOwotICAgICAgICAgICAgICAgICAgICByYyA9IC1FSU5WQUw7Ci0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7CisKICNk ZWZpbmUgWExBVF9nbnR0YWJfc2V0dXBfdGFibGVfSE5ETF9mcmFtZV9saXN0KF9kXywgX3NfKSBc Ci0gICAgICAgICAgICAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKChfZF8pLT5mcmFtZV9s aXN0LCAodW5zaWduZWQgbG9uZyAqKShuYXQuc2V0dXAgKyAxKSkKLSAgICAgICAgICAgICAgICAg ICAgWExBVF9nbnR0YWJfc2V0dXBfdGFibGUobmF0LnNldHVwLCAmY21wLnNldHVwKTsKKyAgICAg ICAgICAgICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZSgoX2RfKS0+ZnJhbWVfbGlzdCwgKHVuc2ln bmVkIGxvbmcgKikobmF0LnNldHVwICsgMSkpCisgICAgICAgICAgICAgICAgWExBVF9nbnR0YWJf c2V0dXBfdGFibGUobmF0LnNldHVwLCAmY21wLnNldHVwKTsKICN1bmRlZiBYTEFUX2dudHRhYl9z ZXR1cF90YWJsZV9ITkRMX2ZyYW1lX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBnbnR0 YWJfc2V0dXBfdGFibGUoZ3Vlc3RfaGFuZGxlX2Nhc3QobmF0LnVvcCwgZ250dGFiX3NldHVwX3Rh YmxlX3QpLCAxKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmMgPSBnbnR0 YWJfc2V0dXBfdGFibGUoZ3Vlc3RfaGFuZGxlX2Nhc3QobmF0LnVvcCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbnR0YWJfc2V0dXBf dGFibGVfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgbWF4 X2ZyYW1lX2xpc3Rfc2l6ZV9pbl9wYWdlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFT U0VSVChyYyA8PSAwKTsKICAgICAgICAgICAgIGlmICggcmMgPT0gMCApCkBAIC0yOTQsMTYgKzI4 Nyw2IEBAIGludCBjb21wYXRfZ3JhbnRfdGFibGVfb3AodW5zaWduZWQgaW50IGNtZCwKICAgICAg ICAgICAgICAgICByYyA9IC1FRkFVTFQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICBpZiAoIG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFnZXMgPAot ICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMp ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklO RywKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhf Z3JhbnRfZnJhbWVzKSBpcyB0b28gbGFyZ2UgKCV1LCV1KVxuIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMpLAotICAgICAg ICAgICAgICAgICAgICAgICAgIG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFnZXMpOwotICAgICAg ICAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgIH0KIAogI2RlZmluZSBYTEFUX2dudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc19ITkRMX2ZyYW1l X2xpc3QoX2RfLCBfc18pIFwKICAgICAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKChfZF8p LT5mcmFtZV9saXN0LCAodWludDY0X3QgKikobmF0LmdldF9zdGF0dXMgKyAxKSkKQEAgLTMxMiw3 ICsyOTUsNyBAQCBpbnQgY29tcGF0X2dyYW50X3RhYmxlX29wKHVuc2lnbmVkIGludCBjbWQsCiAK ICAgICAgICAgICAgIHJjID0gZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzKAogICAgICAgICAgICAg ICAgIGd1ZXN0X2hhbmRsZV9jYXN0KG5hdC51b3AsIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190 KSwKLSAgICAgICAgICAgICAgICBjb3VudCk7CisgICAgICAgICAgICAgICAgY291bnQsIG1heF9m cmFtZV9saXN0X3NpemVfaW5fcGFnZXMpOwogICAgICAgICAgICAgaWYgKCByYyA+PSAwICkKICAg ICAgICAgICAgIHsKICNkZWZpbmUgWExBVF9nbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfSE5ETF9m cmFtZV9saXN0KF9kXywgX3NfKSBcCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKaW5kZXggMjZmOWEzMjY1Ni4uYTBkOGYzMjg2 OSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24v Z3JhbnRfdGFibGUuYwpAQCAtNTQsNiArNTQsOSBAQCBzdHJ1Y3QgZ3JhbnRfdGFibGUgewogICAg ICAqIHdoYXQgdmVyc2lvbiB0byB1c2UgeWV0LgogICAgICAqLwogICAgIHVuc2lnbmVkIGludCAg ICAgICAgICBndF92ZXJzaW9uOworICAgIC8qIFJlc291cmNlIGxpbWl0cyBvZiB0aGUgZG9tYWlu LiAqLworICAgIHVuc2lnbmVkIGludCAgICAgICAgICBtYXhfZ3JhbnRfZnJhbWVzOworICAgIHVu c2lnbmVkIGludCAgICAgICAgICBtYXhfbWFwdHJhY2tfZnJhbWVzOwogICAgIC8qIFRhYmxlIHNp emUuIE51bWJlciBvZiBmcmFtZXMgc2hhcmVkIHdpdGggZ3Vlc3QgKi8KICAgICB1bnNpZ25lZCBp bnQgICAgICAgICAgbnJfZ3JhbnRfZnJhbWVzOwogICAgIC8qIE51bWJlciBvZiBncmFudCBzdGF0 dXMgZnJhbWVzIHNoYXJlZCB3aXRoIGd1ZXN0IChmb3IgdmVyc2lvbiAyKSAqLwpAQCAtMjkwLDgg KzI5Myw4IEBAIG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhjb25zdCB1bnNpZ25lZCBp bnQgbnVtKQogICAgIHJldHVybiBESVZfUk9VTkRfVVAobnVtICogc2hhX3Blcl9wYWdlLCBBQ0dO VF9QRVJfUEFHRSk7CiB9CiAKLSNkZWZpbmUgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMgXAot ICAgIG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKQorI2Rl ZmluZSBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhndCkgXAorICAgIG51bV9hY3RfZnJhbWVz X2Zyb21fc2hhX2ZyYW1lcyhndC0+bWF4X2dyYW50X2ZyYW1lcykKIAogc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQKIG5yX2FjdGl2ZV9ncmFudF9mcmFtZXMoc3RydWN0IGdyYW50X3RhYmxlICpn dCkKQEAgLTUyOCw3ICs1MzEsNyBAQCBnZXRfbWFwdHJhY2tfaGFuZGxlKAogICAgICAqIG91dCBv ZiBtZW1vcnksIHRyeSBzdGVhbGluZyBhbiBlbnRyeSBmcm9tIGFub3RoZXIgVkNQVSAoaW4gY2Fz ZSB0aGUKICAgICAgKiBndWVzdCBpc24ndCBtYXBwaW5nIGFjcm9zcyBpdHMgVkNQVXMgZXZlbmx5 KS4KICAgICAgKi8KLSAgICBpZiAoIG5yX21hcHRyYWNrX2ZyYW1lcyhsZ3QpIDwgbWF4X21hcHRy YWNrX2ZyYW1lcyApCisgICAgaWYgKCBucl9tYXB0cmFja19mcmFtZXMobGd0KSA8IGxndC0+bWF4 X21hcHRyYWNrX2ZyYW1lcyApCiAgICAgICAgIG5ld19tdCA9IGFsbG9jX3hlbmhlYXBfcGFnZSgp OwogCiAgICAgaWYgKCAhbmV3X210ICkKQEAgLTE2NjcsMjMgKzE2NzAsMjYgQEAgZ3JhbnRfdGFi bGVfaW5pdChzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0KQogCiAgICAgLyogQWN0aXZlIGdyYW50IHRh YmxlLiAqLwogICAgIGd0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3Jh bnRfZW50cnkgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0aXZl X2dyYW50X2ZyYW1lcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X25yX2Fj dGl2ZV9ncmFudF9mcmFtZXMoZ3QpKTsKICAgICBpZiAoIGd0LT5hY3RpdmUgPT0gTlVMTCApCiAg ICAgICAgIGdvdG8gb3V0OwogCiAgICAgLyogVHJhY2tpbmcgb2YgbWFwcGVkIGZvcmVpZ24gZnJh bWVzIHRhYmxlICovCi0gICAgZ3QtPm1hcHRyYWNrID0gdnphbGxvYyhtYXhfbWFwdHJhY2tfZnJh bWVzICogc2l6ZW9mKCpndC0+bWFwdHJhY2spKTsKLSAgICBpZiAoIGd0LT5tYXB0cmFjayA9PSBO VUxMICkKLSAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKCBndC0+bWF4X21hcHRyYWNrX2ZyYW1l cyApCisgICAgeworICAgICAgICBndC0+bWFwdHJhY2sgPSB2emFsbG9jKGd0LT5tYXhfbWFwdHJh Y2tfZnJhbWVzICogc2l6ZW9mKCpndC0+bWFwdHJhY2spKTsKKyAgICAgICAgaWYgKCBndC0+bWFw dHJhY2sgPT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICB9CiAKICAgICAvKiBT aGFyZWQgZ3JhbnQgdGFibGUuICovCi0gICAgZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9jX2FycmF5 KHZvaWQgKiwgbWF4X2dyYW50X2ZyYW1lcyk7CisgICAgZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9j X2FycmF5KHZvaWQgKiwgZ3QtPm1heF9ncmFudF9mcmFtZXMpOwogICAgIGlmICggZ3QtPnNoYXJl ZF9yYXcgPT0gTlVMTCApCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgLyogU3RhdHVzIHBhZ2Vz IGZvciBncmFudCB0YWJsZSAtIGZvciB2ZXJzaW9uIDIgKi8KICAgICBndC0+c3RhdHVzID0geHph bGxvY19hcnJheShncmFudF9zdGF0dXNfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMoZ3QtPm1heF9ncmFu dF9mcmFtZXMpKTsKICAgICBpZiAoIGd0LT5zdGF0dXMgPT0gTlVMTCApCiAgICAgICAgIGdvdG8g b3V0OwogCkBAIC0xNzE4LDggKzE3MjQsOSBAQCBnbnR0YWJfZ3Jvd190YWJsZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQgcmVxX25yX2ZyYW1lcykKICAgICBBU1NFUlQoZ3QtPmFjdGl2 ZSk7CiAKICAgICBpZiAoIHJlcV9ucl9mcmFtZXMgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyAp Ci0gICAgICAgIHJlcV9ucl9mcmFtZXMgPSBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsKLSAgICBB U1NFUlQocmVxX25yX2ZyYW1lcyA8PSBtYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICAgICAgcmVxX25y X2ZyYW1lcyA9IG1pbl90KHVuc2lnbmVkIGludCwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0LT5tYXhfZ3JhbnRf ZnJhbWVzKTsKKyAgICBBU1NFUlQocmVxX25yX2ZyYW1lcyA8PSBndC0+bWF4X2dyYW50X2ZyYW1l cyk7CiAKICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKICAgICAgICAgICAgICJFeHBhbmRpbmcg ZG9tICglZCkgZ3JhbnQgdGFibGUgZnJvbSAoJWQpIHRvICglZCkgZnJhbWVzLlxuIiwKQEAgLTE3 NzcsMTMgKzE3ODQsMTUgQEAgYWN0aXZlX2FsbG9jX2ZhaWxlZDoKIAogc3RhdGljIGxvbmcKIGdu dHRhYl9zZXR1cF90YWJsZSgKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9zZXR1 cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGludCBjb3VudCkKKyAgICBYRU5fR1VFU1RfSEFORExF X1BBUkFNKGdudHRhYl9zZXR1cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGludCBjb3VudCwKKyAg ICB1bnNpZ25lZCBpbnQgbGltaXRfbWF4KQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3Vy cmVudDsKICAgICBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIG9wOwogICAgIHN0cnVjdCBkb21h aW4gKmQgPSBOVUxMOwogICAgIHN0cnVjdCBncmFudF90YWJsZSAqZ3Q7CiAgICAgdW5zaWduZWQg aW50IGk7CisgICAgbG9uZyByZXQgPSAwOwogCiAgICAgaWYgKCBjb3VudCAhPSAxICkKICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CkBAIC0xNzkxLDE1ICsxODAwLDYgQEAgZ250dGFiX3NldHVwX3Rh YmxlKAogICAgIGlmICggdW5saWtlbHkoY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSkgKQog ICAgICAgICByZXR1cm4gLUVGQVVMVDsKIAotICAgIGlmICggdW5saWtlbHkob3AubnJfZnJhbWVz ID4gbWF4X2dyYW50X2ZyYW1lcykgKQotICAgIHsKLSAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lO Rk8sICJYZW4gb25seSBzdXBwb3J0cyB1cCB0byAlZCBncmFudC10YWJsZSBmcmFtZXMiCi0gICAg ICAgICAgICAgICAgIiBwZXIgZG9tYWluLlxuIiwKLSAgICAgICAgICAgICAgICBtYXhfZ3JhbnRf ZnJhbWVzKTsKLSAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsKLSAgICAg ICAgZ290byBvdXQ7Ci0gICAgfQotCiAgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkob3AuZnJh bWVfbGlzdCwgb3AubnJfZnJhbWVzKSApCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogCkBAIC0x ODE5LDYgKzE4MTksMjEgQEAgZ250dGFiX3NldHVwX3RhYmxlKAogICAgIGd0ID0gZC0+Z3JhbnRf dGFibGU7CiAgICAgZ3JhbnRfd3JpdGVfbG9jayhndCk7CiAKKyAgICBpZiAoIHVubGlrZWx5KG9w Lm5yX2ZyYW1lcyA+IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKSApCisgICAgeworICAgICAgICBnZHBy aW50ayhYRU5MT0dfSU5GTywgIkRvbWFpbiBpcyBsaW1pdGVkIHRvICVkIGdyYW50LXRhYmxlIGZy YW1lcy5cbiIsCisgICAgICAgICAgICAgICAgZ3QtPm1heF9ncmFudF9mcmFtZXMpOworICAgICAg ICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOworICAgICAgICBnb3RvIHVubG9jazsK KyAgICB9CisgICAgaWYgKCB1bmxpa2VseShsaW1pdF9tYXggPCBndC0+bWF4X2dyYW50X2ZyYW1l cykgKQorICAgIHsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJtYXhfZ3JhbnRf ZnJhbWVzIGlzIHRvbyBsYXJnZSAoJXUsJXUpXG4iLAorICAgICAgICAgICAgICAgICBndC0+bWF4 X2dyYW50X2ZyYW1lcywgbGltaXRfbWF4KTsKKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyAgICAg ICAgZ290byB1bmxvY2s7CisgICAgfQorCiAgICAgaWYgKCBndC0+Z3RfdmVyc2lvbiA9PSAwICkK ICAgICAgICAgZ3QtPmd0X3ZlcnNpb24gPSAxOwogCkBAIC0xODI5LDcgKzE4NDQsNyBAQCBnbnR0 YWJfc2V0dXBfdGFibGUoCiAgICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKICAg ICAgICAgICAgICAgICAgIkV4cGFuZCBncmFudCB0YWJsZSB0byAldSBmYWlsZWQuIEN1cnJlbnQ6 ICV1IE1heDogJXVcbiIsCi0gICAgICAgICAgICAgICAgIG9wLm5yX2ZyYW1lcywgbnJfZ3JhbnRf ZnJhbWVzKGd0KSwgbWF4X2dyYW50X2ZyYW1lcyk7CisgICAgICAgICAgICAgICAgIG9wLm5yX2Zy YW1lcywgbnJfZ3JhbnRfZnJhbWVzKGd0KSwgZ3QtPm1heF9ncmFudF9mcmFtZXMpOwogICAgICAg ICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgICAgICBnb3RvIHVubG9jazsK ICAgICB9CkBAIC0xODUyLDEwICsxODY3LDEwIEBAIGdudHRhYl9zZXR1cF90YWJsZSgKICAgICBp ZiAoIGQgKQogICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKIAotICAgIGlmICggdW5saWtl bHkoX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVvcCwgJm9wLCBzdGF0dXMpKSApCisgICAgaWYgKCAh cmV0ICYmIHVubGlrZWx5KF9fY29weV9maWVsZF90b19ndWVzdCh1b3AsICZvcCwgc3RhdHVzKSkg KQogICAgICAgICByZXR1cm4gLUVGQVVMVDsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBy ZXQ7CiB9CiAKIHN0YXRpYyBsb25nCkBAIC0xODY0LDYgKzE4NzksNyBAQCBnbnR0YWJfcXVlcnlf c2l6ZSgKIHsKICAgICBzdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgb3A7CiAgICAgc3RydWN0IGRv bWFpbiAqZDsKKyAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0OwogCiAgICAgaWYgKCBjb3VudCAh PSAxICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CkBAIC0xODg0LDEzICsxOTAwLDE1IEBAIGdu dHRhYl9xdWVyeV9zaXplKAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICBncmFudF9y ZWFkX2xvY2soZC0+Z3JhbnRfdGFibGUpOworICAgIGd0ID0gZC0+Z3JhbnRfdGFibGU7CiAKLSAg ICBvcC5ucl9mcmFtZXMgICAgID0gbnJfZ3JhbnRfZnJhbWVzKGQtPmdyYW50X3RhYmxlKTsKLSAg ICBvcC5tYXhfbnJfZnJhbWVzID0gbWF4X2dyYW50X2ZyYW1lczsKKyAgICBncmFudF9yZWFkX2xv Y2soZ3QpOworCisgICAgb3AubnJfZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhndCk7Cisg ICAgb3AubWF4X25yX2ZyYW1lcyA9IGd0LT5tYXhfZ3JhbnRfZnJhbWVzOwogICAgIG9wLnN0YXR1 cyAgICAgICAgPSBHTlRTVF9va2F5OwogCi0gICAgZ3JhbnRfcmVhZF91bmxvY2soZC0+Z3JhbnRf dGFibGUpOworICAgIGdyYW50X3JlYWRfdW5sb2NrKGd0KTsKIAogIG91dDoKICAgICBpZiAoIGQg KQpAQCAtMjk2NSwxNCArMjk4MywxNCBAQCBnbnR0YWJfc2V0X3ZlcnNpb24oWEVOX0dVRVNUX0hB TkRMRV9QQVJBTShnbnR0YWJfc2V0X3ZlcnNpb25fdCkgdW9wKQogCiBzdGF0aWMgbG9uZwogZ250 dGFiX2dldF9zdGF0dXNfZnJhbWVzKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oZ250dGFiX2dldF9z dGF0dXNfZnJhbWVzX3QpIHVvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQp CisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCB1bnNpZ25lZCBpbnQgbGltaXRf bWF4KQogewogICAgIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190IG9wOwogICAgIHN0cnVjdCBk b21haW4gKmQ7CiAgICAgc3RydWN0IGdyYW50X3RhYmxlICpndDsKICAgICB1aW50NjRfdCAgICAg ICBnbWZuOwogICAgIGludCBpOwotICAgIGludCByYzsKKyAgICBpbnQgcmMsIHJldCA9IDA7CiAK ICAgICBpZiAoIGNvdW50ICE9IDEgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTMwMTIs NiArMzAzMCwxNSBAQCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCkgdW9wLAogICAgICAgICBnb3RvIHVubG9j azsKICAgICB9CiAKKyAgICBpZiAoIHVubGlrZWx5KGxpbWl0X21heCA8IGdyYW50X3RvX3N0YXR1 c19mcmFtZXMoZ3QtPm1heF9ncmFudF9mcmFtZXMpKSApCisgICAgeworICAgICAgICBnZHByaW50 ayhYRU5MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgImdyYW50X3RvX3N0YXR1c19mcmFt ZXMobWF4X2dyYW50X2ZyYW1lcykgaXMgdG9vIGxhcmdlICgldSwldSlcbiIsCisgICAgICAgICAg ICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMoZ3QtPm1heF9ncmFudF9mcmFtZXMpLCBsaW1p dF9tYXgpOworICAgICAgICByZXQgPSAtRUlOVkFMOworICAgICAgICBnb3RvIHVubG9jazsKKyAg ICB9CisKICAgICBmb3IgKCBpID0gMDsgaSA8IG9wLm5yX2ZyYW1lczsgaSsrICkKICAgICB7CiAg ICAgICAgIGdtZm4gPSBnbnR0YWJfc3RhdHVzX2dtZm4oZCwgZ3QsIGkpOwpAQCAtMzAyNCwxMCAr MzA1MSwxMCBAQCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoWEVOX0dVRVNUX0hBTkRMRV9QQVJB TShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCkgdW9wLAogIG91dDI6CiAgICAgcmN1X3VubG9j a19kb21haW4oZCk7CiAgb3V0MToKLSAgICBpZiAoIHVubGlrZWx5KF9fY29weV9maWVsZF90b19n dWVzdCh1b3AsICZvcCwgc3RhdHVzKSkgKQorICAgIGlmICggIXJldCAmJiB1bmxpa2VseShfX2Nv cHlfZmllbGRfdG9fZ3Vlc3QodW9wLCAmb3AsIHN0YXR1cykpICkKICAgICAgICAgcmV0dXJuIC1F RkFVTFQ7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgbG9u ZwpAQCAtMzMyMCw3ICszMzQ3LDcgQEAgZG9fZ3JhbnRfdGFibGVfb3AoCiAKICAgICBjYXNlIEdO VFRBQk9QX3NldHVwX3RhYmxlOgogICAgICAgICByYyA9IGdudHRhYl9zZXR1cF90YWJsZSgKLSAg ICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KHVvcCwgZ250dGFiX3NldHVwX3RhYmxlX3QpLCBj b3VudCk7CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3AsIGdudHRhYl9zZXR1cF90 YWJsZV90KSwgY291bnQsIH4wKTsKICAgICAgICAgQVNTRVJUKHJjIDw9IDApOwogICAgICAgICBi cmVhazsKIApAQCAtMzM2OSw3ICszMzk2LDcgQEAgZG9fZ3JhbnRfdGFibGVfb3AoCiAKICAgICBj YXNlIEdOVFRBQk9QX2dldF9zdGF0dXNfZnJhbWVzOgogICAgICAgICByYyA9IGdudHRhYl9nZXRf c3RhdHVzX2ZyYW1lcygKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KHVvcCwgZ250dGFi X2dldF9zdGF0dXNfZnJhbWVzX3QpLCBjb3VudCk7CisgICAgICAgICAgICBndWVzdF9oYW5kbGVf Y2FzdCh1b3AsIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSwgY291bnQsIH4wKTsKICAgICAg ICAgYnJlYWs7CiAKICAgICBjYXNlIEdOVFRBQk9QX2dldF92ZXJzaW9uOgpAQCAtMzQ0Miw2ICsz NDY5LDggQEAgZ3JhbnRfdGFibGVfY3JlYXRlKAogICAgIC8qIFNpbXBsZSBzdHVmZi4gKi8KICAg ICBwZXJjcHVfcndsb2NrX3Jlc291cmNlX2luaXQoJnQtPmxvY2ssIGdyYW50X3J3bG9jayk7CiAg ICAgc3Bpbl9sb2NrX2luaXQoJnQtPm1hcHRyYWNrX2xvY2spOworICAgIHQtPm1heF9ncmFudF9m cmFtZXMgPSBtYXhfZ3JhbnRfZnJhbWVzOworICAgIHQtPm1heF9tYXB0cmFja19mcmFtZXMgPSBt YXhfbWFwdHJhY2tfZnJhbWVzOwogCiAgICAgLyogT2theSwgaW5zdGFsbCB0aGUgc3RydWN0dXJl LiAqLwogICAgIGQtPmdyYW50X3RhYmxlID0gdDsKQEAgLTM2NDgsNiArMzY3Nyw4IEBAIGludCBn cmFudF90YWJsZV9zZXRfbGltaXRzKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBncmFu dF9mcmFtZXMsCiAgICAgc3RydWN0IGdyYW50X3RhYmxlICpndCA9IGQtPmdyYW50X3RhYmxlOwog ICAgIGludCByZXQgPSAtRUJVU1k7CiAKKyAgICBpZiAoICFncmFudF9mcmFtZXMgKQorICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICBpZiAoICFndCApCiAgICAgICAgIHJldHVybiAtRU5PRU5U OwogCkBAIC0zNjU1LDcgKzM2ODYsMTEgQEAgaW50IGdyYW50X3RhYmxlX3NldF9saW1pdHMoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdyYW50X2ZyYW1lcywKIAogICAgIC8qIFNldCBs aW1pdHMuICovCiAgICAgaWYgKCAhZ3QtPmFjdGl2ZSApCisgICAgeworICAgICAgICBndC0+bWF4 X2dyYW50X2ZyYW1lcyA9IGdyYW50X2ZyYW1lczsKKyAgICAgICAgZ3QtPm1heF9tYXB0cmFja19m cmFtZXMgPSBtYXB0cmFja19mcmFtZXM7CiAgICAgICAgIHJldCA9IGdyYW50X3RhYmxlX2luaXQo Z3QpOworICAgIH0KIAogICAgIGdyYW50X3dyaXRlX3VubG9jayhndCk7CiAKQEAgLTM3MzEsNyAr Mzc2Niw3IEBAIGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgaWR4LCBnZm5fdCBnZm4sCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlm ICggKGlkeCA+PSBucl9ncmFudF9mcmFtZXMoZ3QpKSAmJiAoaWR4IDwgbWF4X2dyYW50X2ZyYW1l cykgKQorICAgICAgICBpZiAoIChpZHggPj0gbnJfZ3JhbnRfZnJhbWVzKGd0KSkgJiYgKGlkeCA8 IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKSApCiAgICAgICAgICAgICBnbnR0YWJfZ3Jvd190YWJsZShk LCBpZHggKyAxKTsKIAogICAgICAgICBpZiAoIGlkeCA8IG5yX2dyYW50X2ZyYW1lcyhndCkgKQpA QCAtMzc1OSw2ICszNzk0LDEyIEBAIHN0YXRpYyB2b2lkIGdudHRhYl91c2FnZV9wcmludChzdHJ1 Y3QgZG9tYWluICpyZCkKIAogICAgIGdyYW50X3JlYWRfbG9jayhndCk7CiAKKyAgICBwcmludGso ImdyYW50LXRhYmxlIGZvciByZW1vdGUgZG9tYWluOiU1ZCAodiVkKVxuIgorICAgICAgICAgICAi ICAlZCBmcmFtZXMgKCVkIG1heCksICVkIG1hcHRyYWNrIGZyYW1lcyAoJWQgbWF4KVxuIiwKKyAg ICAgICAgICAgcmQtPmRvbWFpbl9pZCwgZ3QtPmd0X3ZlcnNpb24sCisgICAgICAgICAgIG5yX2dy YW50X2ZyYW1lcyhndCksIGd0LT5tYXhfZ3JhbnRfZnJhbWVzLAorICAgICAgICAgICBucl9tYXB0 cmFja19mcmFtZXMoZ3QpLCBndC0+bWF4X21hcHRyYWNrX2ZyYW1lcyk7CisKICAgICBmb3IgKCBy ZWYgPSAwOyByZWYgIT0gbnJfZ3JhbnRfZW50cmllcyhndCk7IHJlZisrICkKICAgICB7CiAgICAg ICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsKQEAgLTM3ODYsMTIgKzM4MjcsNyBA QCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAgICAg ICAgICAgICBzdGF0dXMgPSBzdGF0dXNfZW50cnkoZ3QsIHJlZik7CiAgICAgICAgIH0KIAotICAg ICAgICBpZiAoIGZpcnN0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcHJpbnRrKCJncmFudC10 YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjolNWQgKHYlZClcbiIsCi0gICAgICAgICAgICAgICAgICAg cmQtPmRvbWFpbl9pZCwgZ3QtPmd0X3ZlcnNpb24pOwotICAgICAgICAgICAgZmlyc3QgPSAwOwot ICAgICAgICB9CisgICAgICAgIGZpcnN0ID0gMDsKIAogICAgICAgICAvKiAgICAgIFsweFhYWF0g IGRkZGRkIDB4WFhYWFhYIDB4WFhYWFhYWFggICAgICBkZGRkZCAweFhYWFhYWCAweFhYICovCiAg ICAgICAgIHByaW50aygiWzB4JTAzeF0gICU1ZCAweCUwNmx4IDB4JTA4eCAgICAgICU1ZCAweCUw NiJQUkl4NjQiIDB4JTAyeFxuIiwKQEAgLTM4MDMsOCArMzgzOSw3IEBAIHN0YXRpYyB2b2lkIGdu dHRhYl91c2FnZV9wcmludChzdHJ1Y3QgZG9tYWluICpyZCkKICAgICBncmFudF9yZWFkX3VubG9j ayhndCk7CiAKICAgICBpZiAoIGZpcnN0ICkKLSAgICAgICAgcHJpbnRrKCJncmFudC10YWJsZSBm b3IgcmVtb3RlIGRvbWFpbjolNWQgLi4uICIKLSAgICAgICAgICAgICAgICJubyBhY3RpdmUgZ3Jh bnQgdGFibGUgZW50cmllc1xuIiwgcmQtPmRvbWFpbl9pZCk7CisgICAgICAgIHByaW50aygibm8g YWN0aXZlIGdyYW50IHRhYmxlIGVudHJpZXNcbiIpOwogfQogCiBzdGF0aWMgdm9pZCBnbnR0YWJf dXNhZ2VfcHJpbnRfYWxsKHVuc2lnbmVkIGNoYXIga2V5KQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJs ZS5oCmluZGV4IDA4NzBiNWI3ODIuLjlhNjBlNGU2MTQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vZ3JhbnRfdGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3Rh YmxlLmgKQEAgLTI2LDggKzI2LDggQEAgc3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9z dXBwb3J0ZWQodm9pZCkKICAgICByZXR1cm4gMTsKIH0KIAotI2RlZmluZSBnbnR0YWJfaW5pdF9h cmNoKGd0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAoICgoZ3QpLT5hcmNoLmdmbiA9IHh6YWxsb2NfYXJyYXkoZ2ZuX3QsIG1heF9ncmFudF9mcmFt ZXMpKSA9PSAwICAgICBcCisjZGVmaW5lIGdudHRhYl9pbml0X2FyY2goZ3QpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCAoKGd0KS0+YXJjaC5n Zm4gPSB4emFsbG9jX2FycmF5KGdmbl90LCAoZ3QpLT5tYXhfZ3JhbnRfZnJhbWVzKSkgPT0gMCBc CiAgICAgICA/IDAgOiAtRU5PTUVNICkKIAogI2RlZmluZSBnbnR0YWJfZGVzdHJveV9hcmNoKGd0 KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQ5LDcgKzQ5 LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9zdXBwb3J0ZWQodm9pZCkKIAog I2RlZmluZSBnbnR0YWJfc2hhcmVkX2dtZm4oZCwgdCwgaSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAoICgoaSA+PSBucl9ncmFudF9mcmFtZXModCkpICYmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgKGkgPCBtYXhfZ3Jh bnRfZnJhbWVzKSkgPyAwIDogZ2ZuX3godC0+YXJjaC5nZm5baV0pKQorICAgICAgIChpIDwgKHQp LT5tYXhfZ3JhbnRfZnJhbWVzKSk/IDAgOiBnZm5feCgodCktPmFyY2guZ2ZuW2ldKSkKIAogI2Rl ZmluZSBnbnR0YWJfbmVlZF9pb21tdV9tYXBwaW5nKGQpICAgICAgICAgICAgICAgICAgICBcCiAg ICAgKGlzX2RvbWFpbl9kaXJlY3RfbWFwcGVkKGQpICYmIG5lZWRfaW9tbXUoZCkpCi0tIAoyLjEy LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK