From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH RFC 28/49] xen/sched: make arinc653 scheduler vcpu agnostic. Date: Fri, 29 Mar 2019 16:09:13 +0100 Message-ID: <20190329150934.17694-29-jgross@suse.com> References: <20190329150934.17694-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h9t8f-0003c7-7c for xen-devel@lists.xenproject.org; Fri, 29 Mar 2019 15:09:49 +0000 In-Reply-To: <20190329150934.17694-1-jgross@suse.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: Juergen Gross , George Dunlap , Josh Whitehead , Robert VanVossen , Dario Faggioli List-Id: xen-devel@lists.xenproject.org U3dpdGNoIGFyaW5jNjUzIHNjaGVkdWxlciBjb21wbGV0ZWx5IGZyb20gdmNwdSB0byBzY2hlZF9p dGVtIHVzYWdlLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t PgotLS0KIHhlbi9jb21tb24vc2NoZWRfYXJpbmM2NTMuYyB8IDIwOCArKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMSBpbnNlcnRp b25zKCspLCAxMDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9h cmluYzY1My5jIGIveGVuL2NvbW1vbi9zY2hlZF9hcmluYzY1My5jCmluZGV4IDU3MzNhMmE2Yjgu LjYxZjllYTY4MjQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfYXJpbmM2NTMuYworKysg Yi94ZW4vY29tbW9uL3NjaGVkX2FyaW5jNjUzLmMKQEAgLTQ1LDE1ICs0NSwxNSBAQAogI2RlZmlu ZSBERUZBVUxUX1RJTUVTTElDRSBNSUxMSVNFQ1MoMTApCiAKIC8qKgotICogUmV0cmlldmUgdGhl IGlkbGUgVkNQVSBmb3IgYSBnaXZlbiBwaHlzaWNhbCBDUFUKKyAqIFJldHJpZXZlIHRoZSBpZGxl IElURU0gZm9yIGEgZ2l2ZW4gcGh5c2ljYWwgQ1BVCiAgKi8KLSNkZWZpbmUgSURMRVRBU0soY3B1 KSAgKGlkbGVfdmNwdVtjcHVdKQorI2RlZmluZSBJRExFVEFTSyhjcHUpICAoc2NoZWRfaWRsZV9p dGVtKGNwdSkpCiAKIC8qKgogICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgQVJJTkMgNjUzLXNw ZWNpZmljIHNjaGVkdWxlciBkYXRhIGluZm9ybWF0aW9uCi0gKiBhc3NvY2lhdGVkIHdpdGggdGhl IGdpdmVuIFZDUFUgKHZjKQorICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJVEVNIChpdGVt KQogICovCi0jZGVmaW5lIEFWQ1BVKHZjKSAoKGFyaW5jNjUzX3ZjcHVfdCAqKSh2YyktPnNjaGVk X2l0ZW0tPnByaXYpCisjZGVmaW5lIEFJVEVNKGl0ZW0pICgoYXJpbmM2NTNfaXRlbV90ICopKGl0 ZW0pLT5wcml2KQogCiAvKioKICAqIFJldHVybiB0aGUgZ2xvYmFsIHNjaGVkdWxlciBwcml2YXRl IGRhdGEgZ2l2ZW4gdGhlIHNjaGVkdWxlciBvcHMgcG9pbnRlcgpAQCAtNjUsMjAgKzY1LDIwIEBA CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCiAKIC8qKgotICogVGhlIGFyaW5jNjUzX3ZjcHVfdCBzdHJ1 Y3R1cmUgaG9sZHMgQVJJTkMgNjUzLXNjaGVkdWxlci1zcGVjaWZpYwotICogaW5mb3JtYXRpb24g Zm9yIGFsbCBub24taWRsZSBWQ1BVcworICogVGhlIGFyaW5jNjUzX2l0ZW1fdCBzdHJ1Y3R1cmUg aG9sZHMgQVJJTkMgNjUzLXNjaGVkdWxlci1zcGVjaWZpYworICogaW5mb3JtYXRpb24gZm9yIGFs bCBub24taWRsZSBJVEVNcwogICovCi10eXBlZGVmIHN0cnVjdCBhcmluYzY1M192Y3B1X3MKK3R5 cGVkZWYgc3RydWN0IGFyaW5jNjUzX2l0ZW1fcwogewotICAgIC8qIHZjIHBvaW50cyB0byBYZW4n cyBzdHJ1Y3QgdmNwdSBzbyB3ZSBjYW4gZ2V0IHRvIGl0IGZyb20gYW4KLSAgICAgKiBhcmluYzY1 M192Y3B1X3QgcG9pbnRlci4gKi8KLSAgICBzdHJ1Y3QgdmNwdSAqICAgICAgIHZjOwotICAgIC8q IGF3YWtlIGhvbGRzIHdoZXRoZXIgdGhlIFZDUFUgaGFzIGJlZW4gd29rZW4gd2l0aCB2Y3B1X3dh a2UoKSAqLworICAgIC8qIGl0ZW0gcG9pbnRzIHRvIFhlbidzIHN0cnVjdCBzY2hlZF9pdGVtIHNv IHdlIGNhbiBnZXQgdG8gaXQgZnJvbSBhbgorICAgICAqIGFyaW5jNjUzX2l0ZW1fdCBwb2ludGVy LiAqLworICAgIHN0cnVjdCBzY2hlZF9pdGVtICogaXRlbTsKKyAgICAvKiBhd2FrZSBob2xkcyB3 aGV0aGVyIHRoZSBJVEVNIGhhcyBiZWVuIHdva2VuIHdpdGggdmNwdV93YWtlKCkgKi8KICAgICBi b29sX3QgICAgICAgICAgICAgIGF3YWtlOwotICAgIC8qIGxpc3QgaG9sZHMgdGhlIGxpbmtlZCBs aXN0IGluZm9ybWF0aW9uIGZvciB0aGUgbGlzdCB0aGlzIFZDUFUKKyAgICAvKiBsaXN0IGhvbGRz IHRoZSBsaW5rZWQgbGlzdCBpbmZvcm1hdGlvbiBmb3IgdGhlIGxpc3QgdGhpcyBJVEVNCiAgICAg ICogaXMgc3RvcmVkIGluICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCAgICBsaXN0OwotfSBhcmlu YzY1M192Y3B1X3Q7Cit9IGFyaW5jNjUzX2l0ZW1fdDsKIAogLyoqCiAgKiBUaGUgc2NoZWRfZW50 cnlfdCBzdHJ1Y3R1cmUgaG9sZHMgYSBzaW5nbGUgZW50cnkgb2YgdGhlCkBAIC04OSwxNCArODks MTQgQEAgdHlwZWRlZiBzdHJ1Y3Qgc2NoZWRfZW50cnlfcwogICAgIC8qIGRvbV9oYW5kbGUgaG9s ZHMgdGhlIGhhbmRsZSAoIlVVSUQiKSBmb3IgdGhlIGRvbWFpbiB0aGF0IHRoaXMKICAgICAgKiBz Y2hlZHVsZSBlbnRyeSByZWZlcnMgdG8uICovCiAgICAgeGVuX2RvbWFpbl9oYW5kbGVfdCBkb21f aGFuZGxlOwotICAgIC8qIHZjcHVfaWQgaG9sZHMgdGhlIFZDUFUgbnVtYmVyIGZvciB0aGUgVkNQ VSB0aGF0IHRoaXMgc2NoZWR1bGUKKyAgICAvKiBpdGVtX2lkIGhvbGRzIHRoZSBJVEVNIG51bWJl ciBmb3IgdGhlIElURU0gdGhhdCB0aGlzIHNjaGVkdWxlCiAgICAgICogZW50cnkgcmVmZXJzIHRv LiAqLwotICAgIGludCAgICAgICAgICAgICAgICAgdmNwdV9pZDsKLSAgICAvKiBydW50aW1lIGhv bGRzIHRoZSBudW1iZXIgb2YgbmFub3NlY29uZHMgdGhhdCB0aGUgVkNQVSBmb3IgdGhpcworICAg IGludCAgICAgICAgICAgICAgICAgaXRlbV9pZDsKKyAgICAvKiBydW50aW1lIGhvbGRzIHRoZSBu dW1iZXIgb2YgbmFub3NlY29uZHMgdGhhdCB0aGUgSVRFTSBmb3IgdGhpcwogICAgICAqIHNjaGVk dWxlIGVudHJ5IHNob3VsZCBiZSBhbGxvd2VkIHRvIHJ1biBwZXIgbWFqb3IgZnJhbWUuICovCiAg ICAgc190aW1lX3QgICAgICAgICAgICBydW50aW1lOwotICAgIC8qIHZjIGhvbGRzIGEgcG9pbnRl ciB0byB0aGUgWGVuIFZDUFUgc3RydWN0dXJlICovCi0gICAgc3RydWN0IHZjcHUgKiAgICAgICB2 YzsKKyAgICAvKiBpdGVtIGhvbGRzIGEgcG9pbnRlciB0byB0aGUgWGVuIHNjaGVkX2l0ZW0gc3Ry dWN0dXJlICovCisgICAgc3RydWN0IHNjaGVkX2l0ZW0gKiBpdGVtOwogfSBzY2hlZF9lbnRyeV90 OwogCiAvKioKQEAgLTExMCw5ICsxMTAsOSBAQCB0eXBlZGVmIHN0cnVjdCBhNjUzc2NoZWRfcHJp dl9zCiAgICAgLyoqCiAgICAgICogVGhpcyBhcnJheSBob2xkcyB0aGUgYWN0aXZlIEFSSU5DIDY1 MyBzY2hlZHVsZS4KICAgICAgKgotICAgICAqIFdoZW4gdGhlIHN5c3RlbSB0cmllcyB0byBzdGFy dCBhIG5ldyBWQ1BVLCB0aGlzIHNjaGVkdWxlIGlzIHNjYW5uZWQKLSAgICAgKiB0byBsb29rIGZv ciBhIG1hdGNoaW5nIChoYW5kbGUsIFZDUFUgIykgcGFpci4gSWYgYm90aCB0aGUgaGFuZGxlIChV VUlEKQotICAgICAqIGFuZCBWQ1BVIG51bWJlciBtYXRjaCwgdGhlbiB0aGUgVkNQVSBpcyBhbGxv d2VkIHRvIHJ1bi4gSXRzIHJ1biB0aW1lCisgICAgICogV2hlbiB0aGUgc3lzdGVtIHRyaWVzIHRv IHN0YXJ0IGEgbmV3IElURU0sIHRoaXMgc2NoZWR1bGUgaXMgc2Nhbm5lZAorICAgICAqIHRvIGxv b2sgZm9yIGEgbWF0Y2hpbmcgKGhhbmRsZSwgSVRFTSAjKSBwYWlyLiBJZiBib3RoIHRoZSBoYW5k bGUgKFVVSUQpCisgICAgICogYW5kIElURU0gbnVtYmVyIG1hdGNoLCB0aGVuIHRoZSBJVEVNIGlz IGFsbG93ZWQgdG8gcnVuLiBJdHMgcnVuIHRpbWUKICAgICAgKiAocGVyIG1ham9yIGZyYW1lKSBp cyBnaXZlbiBpbiB0aGUgdGhpcmQgZW50cnkgb2YgdGhlIHNjaGVkdWxlLgogICAgICAqLwogICAg IHNjaGVkX2VudHJ5X3Qgc2NoZWR1bGVbQVJJTkM2NTNfTUFYX0RPTUFJTlNfUEVSX1NDSEVEVUxF XTsKQEAgLTEyMyw4ICsxMjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBhNjUzc2NoZWRfcHJpdl9zCiAg ICAgICoKICAgICAgKiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbnVt YmVyIG9mIGRvbWFpbnMgaW4gdGhlCiAgICAgICogc2NoZWR1bGUuIEEgZG9tYWluIGNvdWxkIGJl IGxpc3RlZCBtdWx0aXBsZSB0aW1lcyB3aXRoaW4gdGhlIHNjaGVkdWxlLAotICAgICAqIG9yIGEg ZG9tYWluIHdpdGggbXVsdGlwbGUgVkNQVXMgY291bGQgaGF2ZSBhIGRpZmZlcmVudAotICAgICAq IHNjaGVkdWxlIGVudHJ5IGZvciBlYWNoIFZDUFUuCisgICAgICogb3IgYSBkb21haW4gd2l0aCBt dWx0aXBsZSBJVEVNcyBjb3VsZCBoYXZlIGEgZGlmZmVyZW50CisgICAgICogc2NoZWR1bGUgZW50 cnkgZm9yIGVhY2ggSVRFTS4KICAgICAgKi8KICAgICB1bnNpZ25lZCBpbnQgbnVtX3NjaGVkdWxl X2VudHJpZXM7CiAKQEAgLTEzOSw5ICsxMzksOSBAQCB0eXBlZGVmIHN0cnVjdCBhNjUzc2NoZWRf cHJpdl9zCiAgICAgc190aW1lX3QgbmV4dF9tYWpvcl9mcmFtZTsKIAogICAgIC8qKgotICAgICAq IHBvaW50ZXJzIHRvIGFsbCBYZW4gVkNQVSBzdHJ1Y3R1cmVzIGZvciBpdGVyYXRpbmcgdGhyb3Vn aAorICAgICAqIHBvaW50ZXJzIHRvIGFsbCBYZW4gSVRFTSBzdHJ1Y3R1cmVzIGZvciBpdGVyYXRp bmcgdGhyb3VnaAogICAgICAqLwotICAgIHN0cnVjdCBsaXN0X2hlYWQgdmNwdV9saXN0OworICAg IHN0cnVjdCBsaXN0X2hlYWQgaXRlbV9saXN0OwogfSBhNjUzc2NoZWRfcHJpdl90OwogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKQEAgLTE2Nyw1MCArMTY3LDUwIEBAIHN0YXRpYyBpbnQgZG9tX2hhbmRs ZV9jbXAoY29uc3QgeGVuX2RvbWFpbl9oYW5kbGVfdCBoMSwKIH0KIAogLyoqCi0gKiBUaGlzIGZ1 bmN0aW9uIHNlYXJjaGVzIHRoZSB2Y3B1IGxpc3QgdG8gZmluZCBhIFZDUFUgdGhhdCBtYXRjaGVz Ci0gKiB0aGUgZG9tYWluIGhhbmRsZSBhbmQgVkNQVSBJRCBzcGVjaWZpZWQuCisgKiBUaGlzIGZ1 bmN0aW9uIHNlYXJjaGVzIHRoZSBpdGVtIGxpc3QgdG8gZmluZCBhIElURU0gdGhhdCBtYXRjaGVz CisgKiB0aGUgZG9tYWluIGhhbmRsZSBhbmQgSVRFTSBJRCBzcGVjaWZpZWQuCiAgKgogICogQHBh cmFtIG9wcyAgICAgICBQb2ludGVyIHRvIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNjaGVkdWxlciBz dHJ1Y3R1cmUKICAqIEBwYXJhbSBoYW5kbGUgICAgUG9pbnRlciB0byBoYW5kbGVyCi0gKiBAcGFy YW0gdmNwdV9pZCAgIFZDUFUgSUQKKyAqIEBwYXJhbSBpdGVtX2lkICAgSVRFTSBJRAogICoKICAq IEByZXR1cm4gICAgICAgICAgPHVsPgotICogICAgICAgICAgICAgICAgICA8bGk+IFBvaW50ZXIg dG8gdGhlIG1hdGNoaW5nIFZDUFUgaWYgb25lIGlzIGZvdW5kCisgKiAgICAgICAgICAgICAgICAg IDxsaT4gUG9pbnRlciB0byB0aGUgbWF0Y2hpbmcgSVRFTSBpZiBvbmUgaXMgZm91bmQKICAqICAg ICAgICAgICAgICAgICAgPGxpPiBOVUxMIG90aGVyd2lzZQogICogICAgICAgICAgICAgICAgICA8 L3VsPgogICovCi1zdGF0aWMgc3RydWN0IHZjcHUgKmZpbmRfdmNwdSgKK3N0YXRpYyBzdHJ1Y3Qg c2NoZWRfaXRlbSAqZmluZF9pdGVtKAogICAgIGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywK ICAgICB4ZW5fZG9tYWluX2hhbmRsZV90IGhhbmRsZSwKLSAgICBpbnQgdmNwdV9pZCkKKyAgICBp bnQgaXRlbV9pZCkKIHsKLSAgICBhcmluYzY1M192Y3B1X3QgKmF2Y3B1OworICAgIGFyaW5jNjUz X2l0ZW1fdCAqYWl0ZW07CiAKLSAgICAvKiBsb29wIHRocm91Z2ggdGhlIHZjcHVfbGlzdCBsb29r aW5nIGZvciB0aGUgc3BlY2lmaWVkIFZDUFUgKi8KLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICgg YXZjcHUsICZTQ0hFRF9QUklWKG9wcyktPnZjcHVfbGlzdCwgbGlzdCApCi0gICAgICAgIGlmICgg KGRvbV9oYW5kbGVfY21wKGF2Y3B1LT52Yy0+ZG9tYWluLT5oYW5kbGUsIGhhbmRsZSkgPT0gMCkK LSAgICAgICAgICAgICAmJiAodmNwdV9pZCA9PSBhdmNwdS0+dmMtPnZjcHVfaWQpICkKLSAgICAg ICAgICAgIHJldHVybiBhdmNwdS0+dmM7CisgICAgLyogbG9vcCB0aHJvdWdoIHRoZSBpdGVtX2xp c3QgbG9va2luZyBmb3IgdGhlIHNwZWNpZmllZCBJVEVNICovCisgICAgbGlzdF9mb3JfZWFjaF9l bnRyeSAoIGFpdGVtLCAmU0NIRURfUFJJVihvcHMpLT5pdGVtX2xpc3QsIGxpc3QgKQorICAgICAg ICBpZiAoIChkb21faGFuZGxlX2NtcChhaXRlbS0+aXRlbS0+ZG9tYWluLT5oYW5kbGUsIGhhbmRs ZSkgPT0gMCkKKyAgICAgICAgICAgICAmJiAoaXRlbV9pZCA9PSBhaXRlbS0+aXRlbS0+aXRlbV9p ZCkgKQorICAgICAgICAgICAgcmV0dXJuIGFpdGVtLT5pdGVtOwogCiAgICAgcmV0dXJuIE5VTEw7 CiB9CiAKIC8qKgotICogVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBwb2ludGVyIHRvIHRoZSBY ZW4gVkNQVSBzdHJ1Y3R1cmUgZm9yIGVhY2ggZW50cnkKKyAqIFRoaXMgZnVuY3Rpb24gdXBkYXRl cyB0aGUgcG9pbnRlciB0byB0aGUgWGVuIElURU0gc3RydWN0dXJlIGZvciBlYWNoIGVudHJ5CiAg KiBpbiB0aGUgQVJJTkMgNjUzIHNjaGVkdWxlLgogICoKICAqIEBwYXJhbSBvcHMgICAgICAgUG9p bnRlciB0byB0aGlzIGluc3RhbmNlIG9mIHRoZSBzY2hlZHVsZXIgc3RydWN0dXJlCiAgKiBAcmV0 dXJuICAgICAgICAgIDxOb25lPgogICovCi1zdGF0aWMgdm9pZCB1cGRhdGVfc2NoZWR1bGVfdmNw dXMoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQorc3RhdGljIHZvaWQgdXBkYXRlX3NjaGVk dWxlX2l0ZW1zKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKIHsKICAgICB1bnNpZ25lZCBp bnQgaSwgbl9lbnRyaWVzID0gU0NIRURfUFJJVihvcHMpLT5udW1fc2NoZWR1bGVfZW50cmllczsK IAogICAgIGZvciAoIGkgPSAwOyBpIDwgbl9lbnRyaWVzOyBpKysgKQotICAgICAgICBTQ0hFRF9Q UklWKG9wcyktPnNjaGVkdWxlW2ldLnZjID0KLSAgICAgICAgICAgIGZpbmRfdmNwdShvcHMsCisg ICAgICAgIFNDSEVEX1BSSVYob3BzKS0+c2NoZWR1bGVbaV0uaXRlbSA9CisgICAgICAgICAgICBm aW5kX2l0ZW0ob3BzLAogICAgICAgICAgICAgICAgICAgICAgIFNDSEVEX1BSSVYob3BzKS0+c2No ZWR1bGVbaV0uZG9tX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICBTQ0hFRF9QUklWKG9w cyktPnNjaGVkdWxlW2ldLnZjcHVfaWQpOworICAgICAgICAgICAgICAgICAgICAgIFNDSEVEX1BS SVYob3BzKS0+c2NoZWR1bGVbaV0uaXRlbV9pZCk7CiB9CiAKIC8qKgpAQCAtMjY4LDEyICsyNjgs MTIgQEAgYXJpbmM2NTNfc2NoZWRfc2V0KAogICAgICAgICBtZW1jcHkoc2NoZWRfcHJpdi0+c2No ZWR1bGVbaV0uZG9tX2hhbmRsZSwKICAgICAgICAgICAgICAgIHNjaGVkdWxlLT5zY2hlZF9lbnRy aWVzW2ldLmRvbV9oYW5kbGUsCiAgICAgICAgICAgICAgICBzaXplb2Yoc2NoZWRfcHJpdi0+c2No ZWR1bGVbaV0uZG9tX2hhbmRsZSkpOwotICAgICAgICBzY2hlZF9wcml2LT5zY2hlZHVsZVtpXS52 Y3B1X2lkID0KKyAgICAgICAgc2NoZWRfcHJpdi0+c2NoZWR1bGVbaV0uaXRlbV9pZCA9CiAgICAg ICAgICAgICBzY2hlZHVsZS0+c2NoZWRfZW50cmllc1tpXS52Y3B1X2lkOwogICAgICAgICBzY2hl ZF9wcml2LT5zY2hlZHVsZVtpXS5ydW50aW1lID0KICAgICAgICAgICAgIHNjaGVkdWxlLT5zY2hl ZF9lbnRyaWVzW2ldLnJ1bnRpbWU7CiAgICAgfQotICAgIHVwZGF0ZV9zY2hlZHVsZV92Y3B1cyhv cHMpOworICAgIHVwZGF0ZV9zY2hlZHVsZV9pdGVtcyhvcHMpOwogCiAgICAgLyoKICAgICAgKiBU aGUgbmV3bHktaW5zdGFsbGVkIHNjaGVkdWxlIHRha2VzIGVmZmVjdCBpbW1lZGlhdGVseS4gV2Ug ZG8gbm90IGV2ZW4KQEAgLTMxOSw3ICszMTksNyBAQCBhcmluYzY1M19zY2hlZF9nZXQoCiAgICAg ICAgIG1lbWNweShzY2hlZHVsZS0+c2NoZWRfZW50cmllc1tpXS5kb21faGFuZGxlLAogICAgICAg ICAgICAgICAgc2NoZWRfcHJpdi0+c2NoZWR1bGVbaV0uZG9tX2hhbmRsZSwKICAgICAgICAgICAg ICAgIHNpemVvZihzY2hlZF9wcml2LT5zY2hlZHVsZVtpXS5kb21faGFuZGxlKSk7Ci0gICAgICAg IHNjaGVkdWxlLT5zY2hlZF9lbnRyaWVzW2ldLnZjcHVfaWQgPSBzY2hlZF9wcml2LT5zY2hlZHVs ZVtpXS52Y3B1X2lkOworICAgICAgICBzY2hlZHVsZS0+c2NoZWRfZW50cmllc1tpXS52Y3B1X2lk ID0gc2NoZWRfcHJpdi0+c2NoZWR1bGVbaV0uaXRlbV9pZDsKICAgICAgICAgc2NoZWR1bGUtPnNj aGVkX2VudHJpZXNbaV0ucnVudGltZSA9IHNjaGVkX3ByaXYtPnNjaGVkdWxlW2ldLnJ1bnRpbWU7 CiAgICAgfQogCkBAIC0zNTUsNyArMzU1LDcgQEAgYTY1M3NjaGVkX2luaXQoc3RydWN0IHNjaGVk dWxlciAqb3BzKQogCiAgICAgcHJ2LT5uZXh0X21ham9yX2ZyYW1lID0gMDsKICAgICBzcGluX2xv Y2tfaW5pdCgmcHJ2LT5sb2NrKTsKLSAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT52Y3B1X2xpc3Qp OworICAgIElOSVRfTElTVF9IRUFEKCZwcnYtPml0ZW1fbGlzdCk7CiAKICAgICByZXR1cm4gMDsK IH0KQEAgLTM3Myw3ICszNzMsNyBAQCBhNjUzc2NoZWRfZGVpbml0KHN0cnVjdCBzY2hlZHVsZXIg Km9wcykKIH0KIAogLyoqCi0gKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBzY2hlZHVsZXItc3Bl Y2lmaWMgZGF0YSBmb3IgYSBWQ1BVCisgKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBzY2hlZHVs ZXItc3BlY2lmaWMgZGF0YSBmb3IgYSBJVEVNCiAgKgogICogQHBhcmFtIG9wcyAgICAgICBQb2lu dGVyIHRvIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNjaGVkdWxlciBzdHJ1Y3R1cmUKICAqIEBwYXJh bSBpdGVtICAgICAgUG9pbnRlciB0byBzdHJ1Y3Qgc2NoZWRfaXRlbQpAQCAtMzg1LDM1ICszODUs MzQgQEAgYTY1M3NjaGVkX2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg c3RydWN0IHNjaGVkX2l0ZW0gKml0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGQp CiB7CiAgICAgYTY1M3NjaGVkX3ByaXZfdCAqc2NoZWRfcHJpdiA9IFNDSEVEX1BSSVYob3BzKTsK LSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSBpdGVtLT52Y3B1OwotICAgIGFyaW5jNjUzX3ZjcHVfdCAq c3ZjOworICAgIGFyaW5jNjUzX2l0ZW1fdCAqc3ZjOwogICAgIHVuc2lnbmVkIGludCBlbnRyeTsK ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAgICAgLyoKICAgICAgKiBBbGxvY2F0ZSBtZW1v cnkgZm9yIHRoZSBBUklOQyA2NTMtc3BlY2lmaWMgc2NoZWR1bGVyIGRhdGEgaW5mb3JtYXRpb24K LSAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIFZDUFUgKHZjKS4KKyAgICAgKiBhc3Nv Y2lhdGVkIHdpdGggdGhlIGdpdmVuIElURU0gKGl0ZW0pLgogICAgICAqLwotICAgIHN2YyA9IHht YWxsb2MoYXJpbmM2NTNfdmNwdV90KTsKKyAgICBzdmMgPSB4bWFsbG9jKGFyaW5jNjUzX2l0ZW1f dCk7CiAgICAgaWYgKCBzdmMgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAg c3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkX3ByaXYtPmxvY2ssIGZsYWdzKTsKIAotICAgIC8qIAot ICAgICAqIEFkZCBldmVyeSBvbmUgb2YgZG9tMCdzIHZjcHVzIHRvIHRoZSBzY2hlZHVsZSwgYXMg bG9uZyBhcyB0aGVyZSBhcmUKKyAgICAvKgorICAgICAqIEFkZCBldmVyeSBvbmUgb2YgZG9tMCdz IGl0ZW1zIHRvIHRoZSBzY2hlZHVsZSwgYXMgbG9uZyBhcyB0aGVyZSBhcmUKICAgICAgKiBzbG90 cyBhdmFpbGFibGUuCiAgICAgICovCi0gICAgaWYgKCB2Yy0+ZG9tYWluLT5kb21haW5faWQgPT0g MCApCisgICAgaWYgKCBpdGVtLT5kb21haW4tPmRvbWFpbl9pZCA9PSAwICkKICAgICB7CiAgICAg ICAgIGVudHJ5ID0gc2NoZWRfcHJpdi0+bnVtX3NjaGVkdWxlX2VudHJpZXM7CiAKICAgICAgICAg aWYgKCBlbnRyeSA8IEFSSU5DNjUzX01BWF9ET01BSU5TX1BFUl9TQ0hFRFVMRSApCiAgICAgICAg IHsKICAgICAgICAgICAgIHNjaGVkX3ByaXYtPnNjaGVkdWxlW2VudHJ5XS5kb21faGFuZGxlWzBd ID0gJ1wwJzsKLSAgICAgICAgICAgIHNjaGVkX3ByaXYtPnNjaGVkdWxlW2VudHJ5XS52Y3B1X2lk ID0gdmMtPnZjcHVfaWQ7CisgICAgICAgICAgICBzY2hlZF9wcml2LT5zY2hlZHVsZVtlbnRyeV0u aXRlbV9pZCA9IGl0ZW0tPml0ZW1faWQ7CiAgICAgICAgICAgICBzY2hlZF9wcml2LT5zY2hlZHVs ZVtlbnRyeV0ucnVudGltZSA9IERFRkFVTFRfVElNRVNMSUNFOwotICAgICAgICAgICAgc2NoZWRf cHJpdi0+c2NoZWR1bGVbZW50cnldLnZjID0gdmM7CisgICAgICAgICAgICBzY2hlZF9wcml2LT5z Y2hlZHVsZVtlbnRyeV0uaXRlbSA9IGl0ZW07CiAKICAgICAgICAgICAgIHNjaGVkX3ByaXYtPm1h am9yX2ZyYW1lICs9IERFRkFVTFRfVElNRVNMSUNFOwogICAgICAgICAgICAgKytzY2hlZF9wcml2 LT5udW1fc2NoZWR1bGVfZW50cmllczsKQEAgLTQyMSwxNiArNDIwLDE2IEBAIGE2NTNzY2hlZF9h bGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF9pdGVt ICppdGVtLAogICAgIH0KIAogICAgIC8qCi0gICAgICogSW5pdGlhbGl6ZSBvdXIgQVJJTkMgNjUz IHNjaGVkdWxlci1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIFZDUFUuCi0gICAgICogVGhl IFZDUFUgc3RhcnRzICJhc2xlZXAuIiBXaGVuIFhlbiBpcyByZWFkeSBmb3IgdGhlIFZDUFUgdG8g cnVuLCBpdAorICAgICAqIEluaXRpYWxpemUgb3VyIEFSSU5DIDY1MyBzY2hlZHVsZXItc3BlY2lm aWMgaW5mb3JtYXRpb24gZm9yIHRoZSBJVEVNLgorICAgICAqIFRoZSBJVEVNIHN0YXJ0cyAiYXNs ZWVwLiIgV2hlbiBYZW4gaXMgcmVhZHkgZm9yIHRoZSBJVEVNIHRvIHJ1biwgaXQKICAgICAgKiB3 aWxsIGNhbGwgdGhlIHZjcHVfd2FrZSBzY2hlZHVsZXIgY2FsbGJhY2sgZnVuY3Rpb24gYW5kIG91 ciBzY2hlZHVsZXIKLSAgICAgKiB3aWxsIG1hcmsgdGhlIFZDUFUgYXdha2UuCisgICAgICogd2ls bCBtYXJrIHRoZSBJVEVNIGF3YWtlLgogICAgICAqLwotICAgIHN2Yy0+dmMgPSB2YzsKKyAgICBz dmMtPml0ZW0gPSBpdGVtOwogICAgIHN2Yy0+YXdha2UgPSAwOwotICAgIGlmICggIWlzX2lkbGVf dmNwdSh2YykgKQotICAgICAgICBsaXN0X2FkZCgmc3ZjLT5saXN0LCAmU0NIRURfUFJJVihvcHMp LT52Y3B1X2xpc3QpOwotICAgIHVwZGF0ZV9zY2hlZHVsZV92Y3B1cyhvcHMpOworICAgIGlmICgg IWlzX2lkbGVfaXRlbShpdGVtKSApCisgICAgICAgIGxpc3RfYWRkKCZzdmMtPmxpc3QsICZTQ0hF RF9QUklWKG9wcyktPml0ZW1fbGlzdCk7CisgICAgdXBkYXRlX3NjaGVkdWxlX2l0ZW1zKG9wcyk7 CiAKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZF9wcml2LT5sb2NrLCBmbGFncyk7 CiAKQEAgLTQzOCwyNyArNDM3LDI3IEBAIGE2NTNzY2hlZF9hbGxvY192ZGF0YShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF9pdGVtICppdGVtLAogfQogCiAvKioKLSAq IFRoaXMgZnVuY3Rpb24gZnJlZXMgc2NoZWR1bGVyLXNwZWNpZmljIFZDUFUgZGF0YQorICogVGhp cyBmdW5jdGlvbiBmcmVlcyBzY2hlZHVsZXItc3BlY2lmaWMgSVRFTSBkYXRhCiAgKgogICogQHBh cmFtIG9wcyAgICAgICBQb2ludGVyIHRvIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNjaGVkdWxlciBz dHJ1Y3R1cmUKICAqLwogc3RhdGljIHZvaWQKIGE2NTNzY2hlZF9mcmVlX3ZkYXRhKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcHJpdikKIHsKLSAgICBhcmluYzY1M192Y3B1X3Qg KmF2ID0gcHJpdjsKKyAgICBhcmluYzY1M19pdGVtX3QgKmF2ID0gcHJpdjsKIAogICAgIGlmIChh diA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoICFpc19pZGxlX3ZjcHUoYXYt PnZjKSApCisgICAgaWYgKCAhaXNfaWRsZV9pdGVtKGF2LT5pdGVtKSApCiAgICAgICAgIGxpc3Rf ZGVsKCZhdi0+bGlzdCk7CiAKICAgICB4ZnJlZShhdik7Ci0gICAgdXBkYXRlX3NjaGVkdWxlX3Zj cHVzKG9wcyk7CisgICAgdXBkYXRlX3NjaGVkdWxlX2l0ZW1zKG9wcyk7CiB9CiAKIC8qKgotICog WGVuIHNjaGVkdWxlciBjYWxsYmFjayBmdW5jdGlvbiB0byBzbGVlcCBhIFZDUFUKKyAqIFhlbiBz Y2hlZHVsZXIgY2FsbGJhY2sgZnVuY3Rpb24gdG8gc2xlZXAgYSBJVEVNCiAgKgogICogQHBhcmFt IG9wcyAgICAgICBQb2ludGVyIHRvIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNjaGVkdWxlciBzdHJ1 Y3R1cmUKICAqIEBwYXJhbSBpdGVtICAgICAgUG9pbnRlciB0byBzdHJ1Y3Qgc2NoZWRfaXRlbQpA QCAtNDY2LDIxICs0NjUsMTkgQEAgYTY1M3NjaGVkX2ZyZWVfdmRhdGEoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCB2b2lkICpwcml2KQogc3RhdGljIHZvaWQKIGE2NTNzY2hlZF9pdGVtX3Ns ZWVwKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX2l0ZW0gKml0ZW0p CiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gaXRlbS0+dmNwdTsKLQotICAgIGlmICggQVZDUFUo dmMpICE9IE5VTEwgKQotICAgICAgICBBVkNQVSh2YyktPmF3YWtlID0gMDsKKyAgICBpZiAoIEFJ VEVNKGl0ZW0pICE9IE5VTEwgKQorICAgICAgICBBSVRFTShpdGVtKS0+YXdha2UgPSAwOwogCiAg ICAgLyoKLSAgICAgKiBJZiB0aGUgVkNQVSBiZWluZyBwdXQgdG8gc2xlZXAgaXMgdGhlIHNhbWUg b25lIHRoYXQgaXMgY3VycmVudGx5CisgICAgICogSWYgdGhlIElURU0gYmVpbmcgcHV0IHRvIHNs ZWVwIGlzIHRoZSBzYW1lIG9uZSB0aGF0IGlzIGN1cnJlbnRseQogICAgICAqIHJ1bm5pbmcsIHJh aXNlIGEgc29mdGlycSB0byBpbnZva2UgdGhlIHNjaGVkdWxlciB0byBzd2l0Y2ggZG9tYWlucy4K ICAgICAgKi8KLSAgICBpZiAoIHBlcl9jcHUoc2NoZWRfcmVzLCB2Yy0+cHJvY2Vzc29yKS0+Y3Vy ciA9PSBpdGVtICkKLSAgICAgICAgY3B1X3JhaXNlX3NvZnRpcnEodmMtPnByb2Nlc3NvciwgU0NI RURVTEVfU09GVElSUSk7CisgICAgaWYgKCBwZXJfY3B1KHNjaGVkX3Jlcywgc2NoZWRfaXRlbV9j cHUoaXRlbSkpLT5jdXJyID09IGl0ZW0gKQorICAgICAgICBjcHVfcmFpc2Vfc29mdGlycShzY2hl ZF9pdGVtX2NwdShpdGVtKSwgU0NIRURVTEVfU09GVElSUSk7CiB9CiAKIC8qKgotICogWGVuIHNj aGVkdWxlciBjYWxsYmFjayBmdW5jdGlvbiB0byB3YWtlIHVwIGEgVkNQVQorICogWGVuIHNjaGVk dWxlciBjYWxsYmFjayBmdW5jdGlvbiB0byB3YWtlIHVwIGEgSVRFTQogICoKICAqIEBwYXJhbSBv cHMgICAgICAgUG9pbnRlciB0byB0aGlzIGluc3RhbmNlIG9mIHRoZSBzY2hlZHVsZXIgc3RydWN0 dXJlCiAgKiBAcGFyYW0gaXRlbSAgICAgIFBvaW50ZXIgdG8gc3RydWN0IHNjaGVkX2l0ZW0KQEAg LTQ4OCwyNCArNDg1LDIyIEBAIGE2NTNzY2hlZF9pdGVtX3NsZWVwKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX2l0ZW0gKml0ZW0pCiBzdGF0aWMgdm9pZAogYTY1M3Nj aGVkX2l0ZW1fd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF9p dGVtICppdGVtKQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IGl0ZW0tPnZjcHU7CisgICAgaWYg KCBBSVRFTShpdGVtKSAhPSBOVUxMICkKKyAgICAgICAgQUlURU0oaXRlbSktPmF3YWtlID0gMTsK IAotICAgIGlmICggQVZDUFUodmMpICE9IE5VTEwgKQotICAgICAgICBBVkNQVSh2YyktPmF3YWtl ID0gMTsKLQotICAgIGNwdV9yYWlzZV9zb2Z0aXJxKHZjLT5wcm9jZXNzb3IsIFNDSEVEVUxFX1NP RlRJUlEpOworICAgIGNwdV9yYWlzZV9zb2Z0aXJxKHNjaGVkX2l0ZW1fY3B1KGl0ZW0pLCBTQ0hF RFVMRV9TT0ZUSVJRKTsKIH0KIAogLyoqCi0gKiBYZW4gc2NoZWR1bGVyIGNhbGxiYWNrIGZ1bmN0 aW9uIHRvIHNlbGVjdCBhIFZDUFUgdG8gcnVuLgorICogWGVuIHNjaGVkdWxlciBjYWxsYmFjayBm dW5jdGlvbiB0byBzZWxlY3QgYSBJVEVNIHRvIHJ1bi4KICAqIFRoaXMgaXMgdGhlIG1haW4gc2No ZWR1bGVyIHJvdXRpbmUuCiAgKgogICogQHBhcmFtIG9wcyAgICAgICBQb2ludGVyIHRvIHRoaXMg aW5zdGFuY2Ugb2YgdGhlIHNjaGVkdWxlciBzdHJ1Y3R1cmUKICAqIEBwYXJhbSBub3cgICAgICAg Q3VycmVudCB0aW1lCiAgKgotICogQHJldHVybiAgICAgICAgICBBZGRyZXNzIG9mIHRoZSBWQ1BV IHN0cnVjdHVyZSBzY2hlZHVsZWQgdG8gYmUgcnVuIG5leHQKLSAqICAgICAgICAgICAgICAgICAg QW1vdW50IG9mIHRpbWUgdG8gZXhlY3V0ZSB0aGUgcmV0dXJuZWQgVkNQVQotICogICAgICAgICAg ICAgICAgICBGbGFnIGZvciB3aGV0aGVyIHRoZSBWQ1BVIHdhcyBtaWdyYXRlZAorICogQHJldHVy biAgICAgICAgICBBZGRyZXNzIG9mIHRoZSBJVEVNIHN0cnVjdHVyZSBzY2hlZHVsZWQgdG8gYmUg cnVuIG5leHQKKyAqICAgICAgICAgICAgICAgICAgQW1vdW50IG9mIHRpbWUgdG8gZXhlY3V0ZSB0 aGUgcmV0dXJuZWQgSVRFTQorICogICAgICAgICAgICAgICAgICBGbGFnIGZvciB3aGV0aGVyIHRo ZSBJVEVNIHdhcyBtaWdyYXRlZAogICovCiBzdGF0aWMgc3RydWN0IHRhc2tfc2xpY2UKIGE2NTNz Y2hlZF9kb19zY2hlZHVsZSgKQEAgLTUxNCw3ICs1MDksNyBAQCBhNjUzc2NoZWRfZG9fc2NoZWR1 bGUoCiAgICAgYm9vbF90IHRhc2tsZXRfd29ya19zY2hlZHVsZWQpCiB7CiAgICAgc3RydWN0IHRh c2tfc2xpY2UgcmV0OyAgICAgICAgICAgICAgICAgICAgICAvKiBob2xkIHRoZSBjaG9zZW4gZG9t YWluICovCi0gICAgc3RydWN0IHZjcHUgKiBuZXdfdGFzayA9IE5VTEw7CisgICAgc3RydWN0IHNj aGVkX2l0ZW0gKm5ld190YXNrID0gTlVMTDsKICAgICBzdGF0aWMgdW5zaWduZWQgaW50IHNjaGVk X2luZGV4ID0gMDsKICAgICBzdGF0aWMgc190aW1lX3QgbmV4dF9zd2l0Y2hfdGltZTsKICAgICBh NjUzc2NoZWRfcHJpdl90ICpzY2hlZF9wcml2ID0gU0NIRURfUFJJVihvcHMpOwpAQCAtNTU5LDE0 ICs1NTQsMTQgQEAgYTY1M3NjaGVkX2RvX3NjaGVkdWxlKAogICAgICAqIHNjaGVkX2l0ZW0gc3Ry dWN0dXJlLgogICAgICAqLwogICAgIG5ld190YXNrID0gKHNjaGVkX2luZGV4IDwgc2NoZWRfcHJp di0+bnVtX3NjaGVkdWxlX2VudHJpZXMpCi0gICAgICAgID8gc2NoZWRfcHJpdi0+c2NoZWR1bGVb c2NoZWRfaW5kZXhdLnZjCisgICAgICAgID8gc2NoZWRfcHJpdi0+c2NoZWR1bGVbc2NoZWRfaW5k ZXhdLml0ZW0KICAgICAgICAgOiBJRExFVEFTSyhjcHUpOwogCiAgICAgLyogQ2hlY2sgdG8gc2Vl IGlmIHRoZSBuZXcgdGFzayBjYW4gYmUgcnVuIChhd2FrZSAmIHJ1bm5hYmxlKS4gKi8KICAgICBp ZiAoICEoKG5ld190YXNrICE9IE5VTEwpCi0gICAgICAgICAgICYmIChBVkNQVShuZXdfdGFzaykg IT0gTlVMTCkKLSAgICAgICAgICAgJiYgQVZDUFUobmV3X3Rhc2spLT5hd2FrZQotICAgICAgICAg ICAmJiB2Y3B1X3J1bm5hYmxlKG5ld190YXNrKSkgKQorICAgICAgICAgICAmJiAoQUlURU0obmV3 X3Rhc2spICE9IE5VTEwpCisgICAgICAgICAgICYmIEFJVEVNKG5ld190YXNrKS0+YXdha2UKKyAg ICAgICAgICAgJiYgaXRlbV9ydW5uYWJsZShuZXdfdGFzaykpICkKICAgICAgICAgbmV3X3Rhc2sg PSBJRExFVEFTSyhjcHUpOwogICAgIEJVR19PTihuZXdfdGFzayA9PSBOVUxMKTsKIApAQCAtNTc4 LDIxICs1NzMsMjEgQEAgYTY1M3NjaGVkX2RvX3NjaGVkdWxlKAogCiAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmc2NoZWRfcHJpdi0+bG9jaywgZmxhZ3MpOwogCi0gICAgLyogVGFza2xldCB3 b3JrICh3aGljaCBydW5zIGluIGlkbGUgVkNQVSBjb250ZXh0KSBvdmVycmlkZXMgYWxsIGVsc2Uu ICovCisgICAgLyogVGFza2xldCB3b3JrICh3aGljaCBydW5zIGluIGlkbGUgSVRFTSBjb250ZXh0 KSBvdmVycmlkZXMgYWxsIGVsc2UuICovCiAgICAgaWYgKCB0YXNrbGV0X3dvcmtfc2NoZWR1bGVk ICkKICAgICAgICAgbmV3X3Rhc2sgPSBJRExFVEFTSyhjcHUpOwogCiAgICAgLyogUnVubmluZyB0 aGlzIHRhc2sgd291bGQgcmVzdWx0IGluIGEgbWlncmF0aW9uICovCi0gICAgaWYgKCAhaXNfaWRs ZV92Y3B1KG5ld190YXNrKQotICAgICAgICAgJiYgKG5ld190YXNrLT5wcm9jZXNzb3IgIT0gY3B1 KSApCisgICAgaWYgKCAhaXNfaWRsZV9pdGVtKG5ld190YXNrKQorICAgICAgICAgJiYgKHNjaGVk X2l0ZW1fY3B1KG5ld190YXNrKSAhPSBjcHUpICkKICAgICAgICAgbmV3X3Rhc2sgPSBJRExFVEFT SyhjcHUpOwogCiAgICAgLyoKICAgICAgKiBSZXR1cm4gdGhlIGFtb3VudCBvZiB0aW1lIHRoZSBu ZXh0IGRvbWFpbiBoYXMgdG8gcnVuIGFuZCB0aGUgYWRkcmVzcwotICAgICAqIG9mIHRoZSBzZWxl Y3RlZCB0YXNrJ3MgVkNQVSBzdHJ1Y3R1cmUuCisgICAgICogb2YgdGhlIHNlbGVjdGVkIHRhc2sn cyBJVEVNIHN0cnVjdHVyZS4KICAgICAgKi8KICAgICByZXQudGltZSA9IG5leHRfc3dpdGNoX3Rp bWUgLSBub3c7Ci0gICAgcmV0LnRhc2sgPSBuZXdfdGFzay0+c2NoZWRfaXRlbTsKKyAgICByZXQu dGFzayA9IG5ld190YXNrOwogICAgIHJldC5taWdyYXRlZCA9IDA7CiAKICAgICBCVUdfT04ocmV0 LnRpbWUgPD0gMCk7CkBAIC02MDEsNyArNTk2LDcgQEAgYTY1M3NjaGVkX2RvX3NjaGVkdWxlKAog fQogCiAvKioKLSAqIFhlbiBzY2hlZHVsZXIgY2FsbGJhY2sgZnVuY3Rpb24gdG8gc2VsZWN0IGEg cmVzb3VyY2UgZm9yIHRoZSBWQ1BVIHRvIHJ1biBvbgorICogWGVuIHNjaGVkdWxlciBjYWxsYmFj ayBmdW5jdGlvbiB0byBzZWxlY3QgYSByZXNvdXJjZSBmb3IgdGhlIElURU0gdG8gcnVuIG9uCiAg KgogICogQHBhcmFtIG9wcyAgICAgICBQb2ludGVyIHRvIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIHNj aGVkdWxlciBzdHJ1Y3R1cmUKICAqIEBwYXJhbSBpdGVtICAgICAgUG9pbnRlciB0byBzdHJ1Y3Qg c2NoZWRfaXRlbQpAQCAtNjExLDIxICs2MDYsMjAgQEAgYTY1M3NjaGVkX2RvX3NjaGVkdWxlKAog c3RhdGljIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqCiBhNjUzc2NoZWRfcGlja19yZXNvdXJjZShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF9pdGVtICppdGVtKQogewot ICAgIHN0cnVjdCB2Y3B1ICp2YyA9IGl0ZW0tPnZjcHU7CiAgICAgY3B1bWFza190ICpvbmxpbmU7 CiAgICAgdW5zaWduZWQgaW50IGNwdTsKIAotICAgIC8qIAotICAgICAqIElmIHByZXNlbnQsIHBy ZWZlciB2YydzIGN1cnJlbnQgcHJvY2Vzc29yLCBlbHNlCi0gICAgICoganVzdCBmaW5kIHRoZSBm aXJzdCB2YWxpZCB2Y3B1IC4KKyAgICAvKgorICAgICAqIElmIHByZXNlbnQsIHByZWZlciBpdGVt J3MgY3VycmVudCBwcm9jZXNzb3IsIGVsc2UKKyAgICAgKiBqdXN0IGZpbmQgdGhlIGZpcnN0IHZh bGlkIGl0ZW0uCiAgICAgICovCi0gICAgb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayh2 Yy0+ZG9tYWluKTsKKyAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKGl0ZW0tPmRv bWFpbik7CiAKICAgICBjcHUgPSBjcHVtYXNrX2ZpcnN0KG9ubGluZSk7CiAKLSAgICBpZiAoIGNw dW1hc2tfdGVzdF9jcHUodmMtPnByb2Nlc3Nvciwgb25saW5lKQorICAgIGlmICggY3B1bWFza190 ZXN0X2NwdShzY2hlZF9pdGVtX2NwdShpdGVtKSwgb25saW5lKQogICAgICAgICAgfHwgKGNwdSA+ PSBucl9jcHVfaWRzKSApCi0gICAgICAgIGNwdSA9IHZjLT5wcm9jZXNzb3I7CisgICAgICAgIGNw dSA9IHNjaGVkX2l0ZW1fY3B1KGl0ZW0pOwogCiAgICAgcmV0dXJuIHBlcl9jcHUoc2NoZWRfcmVz LCBjcHUpOwogfQpAQCAtNjM2LDE4ICs2MzAsMTggQEAgYTY1M3NjaGVkX3BpY2tfcmVzb3VyY2Uo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfaXRlbSAqaXRlbSkKICAq IEBwYXJhbSBuZXdfb3BzICAgUG9pbnRlciB0byB0aGlzIGluc3RhbmNlIG9mIHRoZSBzY2hlZHVs ZXIgc3RydWN0dXJlCiAgKiBAcGFyYW0gY3B1ICAgICAgIFRoZSBjcHUgdGhhdCBpcyBjaGFuZ2lu ZyBzY2hlZHVsZXIKICAqIEBwYXJhbSBwZGF0YSAgICAgc2NoZWR1bGVyIHNwZWNpZmljIFBDUFUg ZGF0YSAod2UgZG9uJ3QgaGF2ZSBhbnkpCi0gKiBAcGFyYW0gdmRhdGEgICAgIHNjaGVkdWxlciBz cGVjaWZpYyBWQ1BVIGRhdGEgb2YgdGhlIGlkbGUgdmNwdQorICogQHBhcmFtIHZkYXRhICAgICBz Y2hlZHVsZXIgc3BlY2lmaWMgSVRFTSBkYXRhIG9mIHRoZSBpZGxlIGl0ZW0KICAqLwogc3RhdGlj IHZvaWQKIGE2NTNfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVuc2ln bmVkIGludCBjcHUsCiAgICAgICAgICAgICAgICAgICB2b2lkICpwZGF0YSwgdm9pZCAqdmRhdGEp CiB7CiAgICAgc3RydWN0IHNjaGVkX3Jlc291cmNlICpzZCA9IHBlcl9jcHUoc2NoZWRfcmVzLCBj cHUpOwotICAgIGFyaW5jNjUzX3ZjcHVfdCAqc3ZjID0gdmRhdGE7CisgICAgYXJpbmM2NTNfaXRl bV90ICpzdmMgPSB2ZGF0YTsKIAotICAgIEFTU0VSVCghcGRhdGEgJiYgc3ZjICYmIGlzX2lkbGVf dmNwdShzdmMtPnZjKSk7CisgICAgQVNTRVJUKCFwZGF0YSAmJiBzdmMgJiYgaXNfaWRsZV9pdGVt KHN2Yy0+aXRlbSkpOwogCi0gICAgaWRsZV92Y3B1W2NwdV0tPnNjaGVkX2l0ZW0tPnByaXYgPSB2 ZGF0YTsKKyAgICBzY2hlZF9pZGxlX2l0ZW0oY3B1KS0+cHJpdiA9IHZkYXRhOwogCiAgICAgcGVy X2NwdShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOwogICAgIHBlcl9jcHUoc2NoZWRfcmVzLCBj cHUpLT5zY2hlZF9wcml2ID0gTlVMTDsgLyogbm8gcGRhdGEgKi8KLS0gCjIuMTYuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=