From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v3 4/8] xen: make grant resource limits per domain Date: Wed, 6 Sep 2017 14:46:49 +0200 Message-ID: <20170906124653.5408-5-jgross@suse.com> References: <20170906124653.5408-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170906124653.5408-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.xen.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 List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiB1c2luZyB0aGUgc2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50 IHRhYmxlcyAobWF4LgpudW1iZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0 cmFjayBmcmFtZXMpIGZvciBhbGwgZG9tYWlucwptYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWlu LiBUaGlzIHdpbGwgYWxsb3cgc2V0dGluZyBpbmRpdmlkdWFsIGxpbWl0cwppbiB0aGUgZnV0dXJl LiBGb3Igbm93IGluaXRpYWxpemUgdGhlIHBlciBkb21haW4gbGltaXRzIHdpdGggdGhlIGdsb2Jh bAp2YWx1ZXMuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ ClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0K VjM6Ci0gY29ycmVjdCBlcnJvciBtZXNzYWdlIChQYXVsIER1cnJhbnQpCi0tLQogeGVuL2NvbW1v bi9ncmFudF90YWJsZS5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1v bi9ncmFudF90YWJsZS5jCmluZGV4IDI5ZTdmYTUzOWIuLmZmNzM1YTRiNDcgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYworKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMK QEAgLTcxLDYgKzcxLDkgQEAgc3RydWN0IGdyYW50X3RhYmxlIHsKICAgICAgKiB3aGF0IHZlcnNp b24gdG8gdXNlIHlldC4KICAgICAgKi8KICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgZ3RfdmVy c2lvbjsKKyAgICAvKiBSZXNvdXJjZSBsaW1pdHMgb2YgdGhlIGRvbWFpbi4gKi8KKyAgICB1bnNp Z25lZCBpbnQgICAgICAgICAgbWF4X2dyYW50X2ZyYW1lczsKKyAgICB1bnNpZ25lZCBpbnQgICAg ICAgICAgbWF4X21hcHRyYWNrX2ZyYW1lczsKIH07CiAKICNpZm5kZWYgREVGQVVMVF9NQVhfTlJf R1JBTlRfRlJBTUVTIC8qIHRvIGFsbG93IGFyY2ggdG8gb3ZlcnJpZGUgKi8KQEAgLTI4Nyw4ICsy OTAsOCBAQCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoY29uc3QgdW5zaWduZWQgaW50 IG51bSkKICAgICByZXR1cm4gRElWX1JPVU5EX1VQKG51bSAqIHNoYV9wZXJfcGFnZSwgQUNHTlRf UEVSX1BBR0UpOwogfQogCi0jZGVmaW5lIG1heF9ucl9hY3RpdmVfZ3JhbnRfZnJhbWVzIFwKLSAg ICBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykKKyNkZWZp bmUgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMoZ3QpIFwKKyAgICBudW1fYWN0X2ZyYW1lc19m cm9tX3NoYV9mcmFtZXMoZ3QtPm1heF9ncmFudF9mcmFtZXMpCiAKIHN0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50CiBucl9hY3RpdmVfZ3JhbnRfZnJhbWVzKHN0cnVjdCBncmFudF90YWJsZSAqZ3Qp CkBAIC01MjYsNyArNTI5LDcgQEAgZ2V0X21hcHRyYWNrX2hhbmRsZSgKICAgICAgKiBvdXQgb2Yg bWVtb3J5LCB0cnkgc3RlYWxpbmcgYW4gZW50cnkgZnJvbSBhbm90aGVyIFZDUFUgKGluIGNhc2Ug dGhlCiAgICAgICogZ3Vlc3QgaXNuJ3QgbWFwcGluZyBhY3Jvc3MgaXRzIFZDUFVzIGV2ZW5seSku CiAgICAgICovCi0gICAgaWYgKCBucl9tYXB0cmFja19mcmFtZXMobGd0KSA8IG1heF9tYXB0cmFj a19mcmFtZXMgKQorICAgIGlmICggbnJfbWFwdHJhY2tfZnJhbWVzKGxndCkgPCBsZ3QtPm1heF9t YXB0cmFja19mcmFtZXMgKQogICAgICAgICBuZXdfbXQgPSBhbGxvY194ZW5oZWFwX3BhZ2UoKTsK IAogICAgIGlmICggIW5ld19tdCApCkBAIC0xNjY0LDE0ICsxNjY3LDE1IEBAIGdyYW50X3RhYmxl X2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAoIGd0LT5ucl9ncmFudF9mcmFtZXMgKQog ICAgICAgICByZXR1cm4gMDsKIAotICAgIGd0LT5ucl9ncmFudF9mcmFtZXMgPSBJTklUSUFMX05S X0dSQU5UX0ZSQU1FUzsKKyAgICBndC0+bnJfZ3JhbnRfZnJhbWVzID0gbWluX3QodW5zaWduZWQg aW50LCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndC0+bWF4X2dyYW50X2ZyYW1lcyk7CiAKICAgICAvKiBBY3Rp dmUgZ3JhbnQgdGFibGUuICovCiAgICAgaWYgKCAoZ3QtPmFjdGl2ZSA9IHh6YWxsb2NfYXJyYXko c3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1heF9ucl9hY3RpdmVfZ3JhbnRfZnJhbWVzKSkgPT0gTlVMTCApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMo Z3QpKSkgPT0gTlVMTCApCiAgICAgICAgIGdvdG8gbm9fbWVtXzE7CiAgICAgZm9yICggaSA9IDA7 Ci0gICAgICAgICAgaSA8IG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhJTklUSUFMX05S X0dSQU5UX0ZSQU1FUyk7IGkrKyApCisgICAgICAgICAgaSA8IG51bV9hY3RfZnJhbWVzX2Zyb21f c2hhX2ZyYW1lcyhndC0+bnJfZ3JhbnRfZnJhbWVzKTsgaSsrICkKICAgICB7CiAgICAgICAgIGlm ICggKGd0LT5hY3RpdmVbaV0gPSBhbGxvY194ZW5oZWFwX3BhZ2UoKSkgPT0gTlVMTCApCiAgICAg ICAgICAgICBnb3RvIG5vX21lbV8yOwpAQCAtMTY4MSwxNCArMTY4NSwxNCBAQCBncmFudF90YWJs ZV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgfQogCiAgICAgLyogVHJhY2tpbmcgb2YgbWFw cGVkIGZvcmVpZ24gZnJhbWVzIHRhYmxlICovCi0gICAgZ3QtPm1hcHRyYWNrID0gdnphbGxvYyht YXhfbWFwdHJhY2tfZnJhbWVzICogc2l6ZW9mKCpndC0+bWFwdHJhY2spKTsKKyAgICBndC0+bWFw dHJhY2sgPSB2emFsbG9jKGd0LT5tYXhfbWFwdHJhY2tfZnJhbWVzICogc2l6ZW9mKCpndC0+bWFw dHJhY2spKTsKICAgICBpZiAoIGd0LT5tYXB0cmFjayA9PSBOVUxMICkKICAgICAgICAgZ290byBu b19tZW1fMjsKIAogICAgIC8qIFNoYXJlZCBncmFudCB0YWJsZS4gKi8KLSAgICBpZiAoIChndC0+ c2hhcmVkX3JhdyA9IHh6YWxsb2NfYXJyYXkodm9pZCAqLCBtYXhfZ3JhbnRfZnJhbWVzKSkgPT0g TlVMTCApCisgICAgaWYgKCAoZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwg Z3QtPm1heF9ncmFudF9mcmFtZXMpKSA9PSBOVUxMICkKICAgICAgICAgZ290byBub19tZW1fMzsK LSAgICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOyBpKysgKQorICAg IGZvciAoIGkgPSAwOyBpIDwgZ3QtPm5yX2dyYW50X2ZyYW1lczsgaSsrICkKICAgICB7CiAgICAg ICAgIGlmICggKGd0LT5zaGFyZWRfcmF3W2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkpID09IE5V TEwgKQogICAgICAgICAgICAgZ290byBub19tZW1fNDsKQEAgLTE2OTcsMTEgKzE3MDEsMTEgQEAg Z3JhbnRfdGFibGVfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgLyogU3RhdHVzIHBhZ2Vz IGZvciBncmFudCB0YWJsZSAtIGZvciB2ZXJzaW9uIDIgKi8KICAgICBndC0+c3RhdHVzID0geHph bGxvY19hcnJheShncmFudF9zdGF0dXNfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMoZ3QtPm1heF9ncmFu dF9mcmFtZXMpKTsKICAgICBpZiAoIGd0LT5zdGF0dXMgPT0gTlVMTCApCiAgICAgICAgIGdvdG8g bm9fbWVtXzQ7CiAKLSAgICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVT OyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgZ3QtPm5yX2dyYW50X2ZyYW1lczsgaSsrICkK ICAgICAgICAgZ250dGFiX2NyZWF0ZV9zaGFyZWRfcGFnZShkLCBndCwgaSk7CiAKICAgICBndC0+ bnJfc3RhdHVzX2ZyYW1lcyA9IDA7CkBAIC0xNzA5LDcgKzE3MTMsNyBAQCBncmFudF90YWJsZV9p bml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIDA7CiAKICBub19tZW1fNDoKLSAgICBm b3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOyBpKysgKQorICAgIGZvciAo IGkgPSAwOyBpIDwgZ3QtPm5yX2dyYW50X2ZyYW1lczsgaSsrICkKICAgICAgICAgZnJlZV94ZW5o ZWFwX3BhZ2UoZ3QtPnNoYXJlZF9yYXdbaV0pOwogICAgIHhmcmVlKGd0LT5zaGFyZWRfcmF3KTsK ICAgICBndC0+c2hhcmVkX3JhdyA9IE5VTEw7CkBAIC0xNzE4LDcgKzE3MjIsNyBAQCBncmFudF90 YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgZ3QtPm1hcHRyYWNrID0gTlVMTDsKICBu b19tZW1fMjoKICAgICBmb3IgKCBpID0gMDsKLSAgICAgICAgICBpIDwgbnVtX2FjdF9mcmFtZXNf ZnJvbV9zaGFfZnJhbWVzKElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTKTsgaSsrICkKKyAgICAgICAg ICBpIDwgbnVtX2FjdF9mcmFtZXNfZnJvbV9zaGFfZnJhbWVzKGd0LT5ucl9ncmFudF9mcmFtZXMp OyBpKysgKQogICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZShndC0+YWN0aXZlW2ldKTsKICAgICB4 ZnJlZShndC0+YWN0aXZlKTsKICAgICBndC0+YWN0aXZlID0gTlVMTDsKQEAgLTE3NDMsNyArMTc0 Nyw3IEBAIGdudHRhYl9ncm93X3RhYmxlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBy ZXFfbnJfZnJhbWVzKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBBU1NFUlQocmVx X25yX2ZyYW1lcyA8PSBtYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICBBU1NFUlQocmVxX25yX2ZyYW1l cyA8PSBndC0+bWF4X2dyYW50X2ZyYW1lcyk7CiAKICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywK ICAgICAgICAgICAgICJFeHBhbmRpbmcgZG9tICglZCkgZ3JhbnQgdGFibGUgZnJvbSAoJWQpIHRv ICglZCkgZnJhbWVzLlxuIiwKQEAgLTE4MTUsMTUgKzE4MTksNiBAQCBnbnR0YWJfc2V0dXBfdGFi bGUoCiAgICAgaWYgKCB1bmxpa2VseShjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpKSApCiAg ICAgICAgIHJldHVybiAtRUZBVUxUOwogCi0gICAgaWYgKCB1bmxpa2VseShvcC5ucl9mcmFtZXMg PiBtYXhfZ3JhbnRfZnJhbWVzKSApCi0gICAgewotICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5G TywgIlhlbiBvbmx5IHN1cHBvcnRzIHVwIHRvICVkIGdyYW50LXRhYmxlIGZyYW1lcyIKLSAgICAg ICAgICAgICAgICAiIHBlciBkb21haW4uXG4iLAotICAgICAgICAgICAgICAgIG1heF9ncmFudF9m cmFtZXMpOwotICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOwotICAgICAg ICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICBpZiAoICFndWVzdF9oYW5kbGVfb2theShvcC5mcmFt ZV9saXN0LCBvcC5ucl9mcmFtZXMpICkKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAKQEAgLTE4 NDMsNiArMTgzOCwxNCBAQCBnbnR0YWJfc2V0dXBfdGFibGUoCiAgICAgZ3QgPSBkLT5ncmFudF90 YWJsZTsKICAgICBncmFudF93cml0ZV9sb2NrKGd0KTsKIAorICAgIGlmICggdW5saWtlbHkob3Au bnJfZnJhbWVzID4gZ3QtPm1heF9ncmFudF9mcmFtZXMpICkKKyAgICB7CisgICAgICAgIGdkcHJp bnRrKFhFTkxPR19JTkZPLCAiRG9tYWluIGlzIGxpbWl0ZWQgdG8gJWQgZ3JhbnQtdGFibGUgZnJh bWVzLlxuIiwKKyAgICAgICAgICAgICAgICBndC0+bWF4X2dyYW50X2ZyYW1lcyk7CisgICAgICAg IG9wLnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7CisgICAgICAgIGdvdG8gdW5sb2NrOwor ICAgIH0KKwogICAgIGlmICggZ3QtPmd0X3ZlcnNpb24gPT0gMCApCiAgICAgICAgIGd0LT5ndF92 ZXJzaW9uID0gMTsKIApAQCAtMTg1Myw3ICsxODU2LDcgQEAgZ250dGFiX3NldHVwX3RhYmxlKAog ICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCiAgICAgICAgICAgICAgICAgICJF eHBhbmQgZ3JhbnQgdGFibGUgdG8gJXUgZmFpbGVkLiBDdXJyZW50OiAldSBNYXg6ICV1XG4iLAot ICAgICAgICAgICAgICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhndCksIG1heF9n cmFudF9mcmFtZXMpOworICAgICAgICAgICAgICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2Zy YW1lcyhndCksIGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsKICAgICAgICAgb3Auc3RhdHVzID0gR05U U1RfZ2VuZXJhbF9lcnJvcjsKICAgICAgICAgZ290byB1bmxvY2s7CiAgICAgfQpAQCAtMTg4OCw2 ICsxODkxLDcgQEAgZ250dGFiX3F1ZXJ5X3NpemUoCiB7CiAgICAgc3RydWN0IGdudHRhYl9xdWVy eV9zaXplIG9wOwogICAgIHN0cnVjdCBkb21haW4gKmQ7CisgICAgc3RydWN0IGdyYW50X3RhYmxl ICpndDsKIAogICAgIGlmICggY291bnQgIT0gMSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwpA QCAtMTkwOCwxMyArMTkxMiwxNSBAQCBnbnR0YWJfcXVlcnlfc2l6ZSgKICAgICAgICAgZ290byBv dXQ7CiAgICAgfQogCi0gICAgZ3JhbnRfcmVhZF9sb2NrKGQtPmdyYW50X3RhYmxlKTsKKyAgICBn dCA9IGQtPmdyYW50X3RhYmxlOworCisgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsKIAotICAgIG9w Lm5yX2ZyYW1lcyAgICAgPSBucl9ncmFudF9mcmFtZXMoZC0+Z3JhbnRfdGFibGUpOwotICAgIG9w Lm1heF9ucl9mcmFtZXMgPSBtYXhfZ3JhbnRfZnJhbWVzOworICAgIG9wLm5yX2ZyYW1lcyAgICAg PSBucl9ncmFudF9mcmFtZXMoZ3QpOworICAgIG9wLm1heF9ucl9mcmFtZXMgPSBndC0+bWF4X2dy YW50X2ZyYW1lczsKICAgICBvcC5zdGF0dXMgICAgICAgID0gR05UU1Rfb2theTsKIAotICAgIGdy YW50X3JlYWRfdW5sb2NrKGQtPmdyYW50X3RhYmxlKTsKKyAgICBncmFudF9yZWFkX3VubG9jayhn dCk7CiAKICBvdXQ6CiAgICAgaWYgKCBkICkKQEAgLTM0NjUsNiArMzQ3MSw4IEBAIGdyYW50X3Rh YmxlX2NyZWF0ZSgKICAgICAvKiBTaW1wbGUgc3R1ZmYuICovCiAgICAgcGVyY3B1X3J3bG9ja19y ZXNvdXJjZV9pbml0KCZ0LT5sb2NrLCBncmFudF9yd2xvY2spOwogICAgIHNwaW5fbG9ja19pbml0 KCZ0LT5tYXB0cmFja19sb2NrKTsKKyAgICB0LT5tYXhfZ3JhbnRfZnJhbWVzID0gbWF4X2dyYW50 X2ZyYW1lczsKKyAgICB0LT5tYXhfbWFwdHJhY2tfZnJhbWVzID0gbWF4X21hcHRyYWNrX2ZyYW1l czsKIAogICAgIC8qIE9rYXksIGluc3RhbGwgdGhlIHN0cnVjdHVyZS4gKi8KICAgICBkLT5ncmFu dF90YWJsZSA9IHQ7CkBAIC0zNzI4LDcgKzM3MzYsNyBAQCBpbnQgZ250dGFiX21hcF9mcmFtZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwgZ2ZuX3QgZ2ZuLAogICAgIH0KICAg ICBlbHNlCiAgICAgewotICAgICAgICBpZiAoIChpZHggPj0gbnJfZ3JhbnRfZnJhbWVzKGd0KSkg JiYgKGlkeCA8IG1heF9ncmFudF9mcmFtZXMpICkKKyAgICAgICAgaWYgKCAoaWR4ID49IG5yX2dy YW50X2ZyYW1lcyhndCkpICYmIChpZHggPCBndC0+bWF4X2dyYW50X2ZyYW1lcykgKQogICAgICAg ICAgICAgZ250dGFiX2dyb3dfdGFibGUoZCwgaWR4ICsgMSk7CiAKICAgICAgICAgaWYgKCBpZHgg PCBucl9ncmFudF9mcmFtZXMoZ3QpICkKQEAgLTM3NTUsNiArMzc2MywxMiBAQCBzdGF0aWMgdm9p ZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAKICAgICBncmFudF9yZWFk X2xvY2soZ3QpOwogCisgICAgcHJpbnRrKCJncmFudC10YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjol NWQgKHYlZClcbiIKKyAgICAgICAgICAgIiAgJWQgZnJhbWVzICglZCBtYXgpLCAlZCBtYXB0cmFj ayBmcmFtZXMgKCVkIG1heClcbiIsCisgICAgICAgICAgIHJkLT5kb21haW5faWQsIGd0LT5ndF92 ZXJzaW9uLAorICAgICAgICAgICBucl9ncmFudF9mcmFtZXMoZ3QpLCBndC0+bWF4X2dyYW50X2Zy YW1lcywKKyAgICAgICAgICAgbnJfbWFwdHJhY2tfZnJhbWVzKGd0KSwgZ3QtPm1heF9tYXB0cmFj a19mcmFtZXMpOworCiAgICAgZm9yICggcmVmID0gMDsgcmVmICE9IG5yX2dyYW50X2VudHJpZXMo Z3QpOyByZWYrKyApCiAgICAgewogICAgICAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICph Y3Q7CkBAIC0zNzgyLDEyICszNzk2LDcgQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50 KHN0cnVjdCBkb21haW4gKnJkKQogICAgICAgICAgICAgc3RhdHVzID0gc3RhdHVzX2VudHJ5KGd0 LCByZWYpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBmaXJzdCApCi0gICAgICAgIHsKLSAg ICAgICAgICAgIHByaW50aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkb21haW46JTVkICh2JWQp XG4iLAotICAgICAgICAgICAgICAgICAgIHJkLT5kb21haW5faWQsIGd0LT5ndF92ZXJzaW9uKTsK LSAgICAgICAgICAgIGZpcnN0ID0gMDsKLSAgICAgICAgfQorICAgICAgICBmaXJzdCA9IDA7CiAK ICAgICAgICAgLyogICAgICBbMHhYWFhdICBkZGRkZCAweFhYWFhYWCAweFhYWFhYWFhYICAgICAg ZGRkZGQgMHhYWFhYWFggMHhYWCAqLwogICAgICAgICBwcmludGsoIlsweCUwM3hdICAlNWQgMHgl MDZseCAweCUwOHggICAgICAlNWQgMHglMDYiUFJJeDY0IiAweCUwMnhcbiIsCkBAIC0zNzk5LDgg KzM4MDgsNyBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAq cmQpCiAgICAgZ3JhbnRfcmVhZF91bmxvY2soZ3QpOwogCiAgICAgaWYgKCBmaXJzdCApCi0gICAg ICAgIHByaW50aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkb21haW46JTVkIC4uLiAiCi0gICAg ICAgICAgICAgICAibm8gYWN0aXZlIGdyYW50IHRhYmxlIGVudHJpZXNcbiIsIHJkLT5kb21haW5f aWQpOworICAgICAgICBwcmludGsoIm5vIGFjdGl2ZSBncmFudCB0YWJsZSBlbnRyaWVzXG4iKTsK IH0KIAogc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50X2FsbCh1bnNpZ25lZCBjaGFyIGtl eSkKLS0gCjIuMTIuMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=