From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Martin Subject: [PATCH v4 11/28] arm64/sve: Core task context handling Date: Fri, 27 Oct 2017 11:50:53 +0100 Message-ID: <1509101470-7881-12-git-send-email-Dave.Martin@arm.com> References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 2C5C649D45 for ; Fri, 27 Oct 2017 06:50:19 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KQGuO-m2jJ7F for ; Fri, 27 Oct 2017 06:50:16 -0400 (EDT) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 8D78549D5F for ; Fri, 27 Oct 2017 06:50:16 -0400 (EDT) In-Reply-To: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: linux-arm-kernel@lists.infradead.org Cc: linux-arch@vger.kernel.org, Okamoto Takayuki , libc-alpha@sourceware.org, Ard Biesheuvel , Szabolcs Nagy , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu List-Id: kvmarm@lists.cs.columbia.edu VGhpcyBwYXRjaCBhZGRzIHRoZSBjb3JlIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBhbmQgbWFuYWdp bmcgdGhlIFNWRQphcmNoaXRlY3R1cmFsIHN0YXRlIG9mIHVzZXIgdGFza3MuCgpDYWxscyB0byB0 aGUgZXhpc3RpbmcgRlBTSU1EIGxvdy1sZXZlbCBzYXZlL3Jlc3RvcmUgZnVuY3Rpb25zIGFyZQpm YWN0b3JlZCBvdXQgYXMgbmV3IGZ1bmN0aW9ucyB0YXNrX2Zwc2ltZF97c2F2ZSxsb2FkfSgpLCBz aW5jZSBTVkUKbm93IGR5bmFtaWNhbGx5IG1heSBvciBtYXkgbm90IG5lZWQgdG8gYmUgaGFuZGxl ZCBhdCB0aGVzZSBwb2ludHMKZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwg aGFyZHdhcmUgZmVhdHVyZXMgZGlzY292ZXJlZAphdCBib290LCBhbmQgdGhlIHJ1bnRpbWUgc3Rh dGUgb2YgdGhlIHRhc2suICBUbyBtYWtlIHRoZXNlCmRlY2lzaW9ucyBhcyBmYXN0IGFzIHBvc3Np YmxlLCBjb25zdCBjcHVjYXBzIGFyZSB1c2VkIHdoZXJlCmZlYXNpYmxlLCB2aWEgdGhlIHN5c3Rl bV9zdXBwb3J0c19zdmUoKSBoZWxwZXIuCgpUaGUgU1ZFIHJlZ2lzdGVycyBhcmUgb25seSB0cmFj a2VkIGZvciB0aHJlYWRzIHRoYXQgaGF2ZSBleHBsaWNpdGx5CnVzZWQgU1ZFLCBpbmRpY2F0ZWQg YnkgdGhlIG5ldyB0aHJlYWQgZmxhZyBUSUZfU1ZFLiAgT3RoZXJ3aXNlLCB0aGUKRlBTSU1EIHZp ZXcgb2YgdGhlIGFyY2hpdGVjdHVyYWwgc3RhdGUgaXMgc3RvcmVkIGluCnRocmVhZC5mcHNpbWRf c3RhdGUgYXMgdXN1YWwuCgpXaGVuIGluIHVzZSwgdGhlIFNWRSByZWdpc3RlcnMgYXJlIG5vdCBz dG9yZWQgZGlyZWN0bHkgaW4KdGhyZWFkX3N0cnVjdCBkdWUgdG8gdGhlaXIgcG90ZW50aWFsbHkg bGFyZ2UgYW5kIHZhcmlhYmxlIHNpemUuCkJlY2F1c2UgdGhlIHRhc2tfc3RydWN0IHNsYWIgYWxs b2NhdG9yIG11c3QgYmUgY29uZmlndXJlZCB2ZXJ5CmVhcmx5IGR1cmluZyBrZXJuZWwgYm9vdCwg aXQgaXMgYWxzbyB0cmlja3kgdG8gY29uZmlndXJlIGl0CmNvcnJlY3RseSB0byBtYXRjaCB0aGUg bWF4aW11bSB2ZWN0b3IgbGVuZ3RoIHByb3ZpZGVkIGJ5IHRoZQpoYXJkd2FyZSwgc2luY2UgdGhp cyBkZXBlbmRzIG9uIGV4YW1pbmluZyBzZWNvbmRhcnkgQ1BVcyBhcyB3ZWxsIGFzCnRoZSBwcmlt YXJ5LiAgSW5zdGVhZCwgYSBwb2ludGVyIHN2ZV9zdGF0ZSBpbiB0aHJlYWRfc3RydWN0IHBvaW50 cwp0byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidWZmZXIgY29udGFpbmluZyB0aGUgU1ZFIHJl Z2lzdGVyIGRhdGEsCmFuZCBjb2RlIGlzIGFkZGVkIHRvIGFsbG9jYXRlIGFuZCBmcmVlIHRoaXMg YnVmZmVyIGF0IGFwcHJvcHJpYXRlCnRpbWVzLgoKVElGX1NWRSBpcyBzZXQgd2hlbiB0YWtpbmcg YW4gU1ZFIGFjY2VzcyB0cmFwIGZyb20gdXNlcnNwYWNlLCBpZgpzdWl0YWJsZSBoYXJkd2FyZSBz dXBwb3J0IGhhcyBiZWVuIGRldGVjdGVkLiAgVGhpcyBlbmFibGVzIFNWRSBmb3IKdGhlIHRocmVh ZDogYSBzdWJzZXF1ZW50IHJldHVybiB0byB1c2Vyc3BhY2Ugd2lsbCBkaXNhYmxlIHRoZSB0cmFw CmFjY29yZGluZ2x5LiAgSWYgc3VjaCBhIHRyYXAgaXMgdGFrZW4gd2l0aG91dCBzdWZmaWNpZW50 IHN5c3RlbS0Kd2lkZSBoYXJkd2FyZSBzdXBwb3J0LCBTSUdJTEwgaXMgc2VudCB0byB0aGUgdGhy ZWFkIGluc3RlYWQgYXMgaWYKYW4gdW5kZWZpbmVkIGluc3RydWN0aW9uIGhhZCBiZWVuIGV4ZWN1 dGVkOiB0aGlzIG1heSBoYXBwZW4gaWYKdXNlcnNwYWNlIHRyaWVzIHRvIHVzZSBTVkUgaW4gYSBz eXN0ZW0gd2hlcmUgbm90IGFsbCBDUFVzIHN1cHBvcnQKaXQgZm9yIGV4YW1wbGUuCgpUaGUga2Vy bmVsIHdpbGwgY2xlYXIgVElGX1NWRSBhbmQgZGlzYWJsZSBTVkUgZm9yIHRoZSB0aHJlYWQKd2hl bmV2ZXIgYW4gZXhwbGljaXQgc3lzY2FsbCBpcyBtYWRlIGJ5IHVzZXJzcGFjZS4gIEZvciBiYWNr d2FyZHMKY29tcGF0aWJpbGl0eSByZWFzb25zIGFuZCBjb25mb3JtYW5jZSB3aXRoIHRoZSBzcGly aXQgb2YgdGhlIGJhc2UKQUFyY2g2NCBwcm9jZWR1cmUgY2FsbCBzdGFuZGFyZCwgdGhlIHN1YnNl dCBvZiB0aGUgU1ZFIHJlZ2lzdGVyCnN0YXRlIHRoYXQgYWxpYXNlcyB0aGUgRlBTSU1EIHJlZ2lz dGVycyBpcyBzdGlsbCBwcmVzZXJ2ZWQgYWNyb3NzIGEKc3lzY2FsbCBldmVuIGlmIHRoaXMgaGFw cGVucy4gIFRoZSByZW1haW5kZXIgb2YgdGhlIFNWRSByZWdpc3RlcgpzdGF0ZSBsb2dpY2FsbHkg YmVjb21lcyB6ZXJvIGF0IHN5c2NhbGwgZW50cnksIHRob3VnaCB0aGUgYWN0dWFsCnplcm9pbmcg d29yayBpcyBjdXJyZW50bHkgZGVmZXJyZWQgdW50aWwgdGhlIHRocmVhZCBuZXh0IHRyaWVzIHRv CnVzZSBTVkUsIGNhdXNpbmcgYW5vdGhlciB0cmFwIHRvIHRoZSBrZXJuZWwuICBUaGlzIGltcGxl bWVudGF0aW9uCmlzIHN1Ym9wdGltYWw6IGluIHRoZSBmdXR1cmUsIHRoZSBmYXN0cGF0aCBjYXNl IG1heSBiZSBvcHRpbWlzZWQKdG8gemVybyB0aGUgcmVnaXN0ZXJzIGluLXBsYWNlIGFuZCBsZWF2 ZSBTVkUgZW5hYmxlZCBmb3IgdGhlIHRhc2ssCndoZXJlIGJlbmVmaWNpYWwuCgpUSUZfU1ZFIGlz IGFsc28gY2xlYXJlZCBpbiB0aGUgZm9sbG93aW5nIHNsb3dwYXRoIGNhc2VzLCB3aGljaCBhcmUK dGFrZW4gYXMgcmVhc29uYWJsZSBoaW50cyB0aGF0IHRoZSB0YXNrIG1heSBubyBsb25nZXIgdXNl IFNWRToKICogZXhlYwogKiBmb3JrIGFuZCBjbG9uZQoKQ29kZSBpcyBhZGRlZCB0byBzeW5jIGRh dGEgYmV0d2VlbiB0aHJlYWQuZnBzaW1kX3N0YXRlIGFuZAp0aHJlYWQuc3ZlX3N0YXRlIHdoZW5l dmVyIGVuYWJsaW5nL2Rpc2FibGluZyBTVkUsIGluIGEgbWFubmVyCmNvbnNpc3RlbnQgd2l0aCB0 aGUgU1ZFIGFyY2hpdGVjdHVyYWwgcHJvZ3JhbW1lcidzIG1vZGVsLgoKU2lnbmVkLW9mZi1ieTog RGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5jb20+CkNjOiBBcmQgQmllc2hldXZlbCA8YXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4KQ2M6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGlu YXJvLm9yZz4KCi0tLQoKQ2hhbmdlcyBzaW5jZSB2MwotLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2Vz IHJlcXVlc3RlZCBieSBDYXRhbGluIE1hcmluYXM6CgogKiBDaGFuZ2Ugc3RhdGljIF9fbWF5YmVf dW51c2VkIGZ1bmN0aW9ucyB0byBzdGF0aWMgaW5saW5lcy4KCiAqIE1vdmUgZnBzaW1kX3JlbGVh c2VfdGhyZWFkKCkgdG8gdGhlIGFyY2hfcmVsZWFzZV90YXNrX3N0cnVjdCgpIHBhdGguCgogICBU aGlzIGF2b2lkcyBhbnkgbmVlZCB0byB3b3JyeSBhYm91dCBwcmVlbXB0aW9uLgoKICAgQSBkZWNs YXJhdGlvbiBmb3IgYXJjaF9yZWxlYXNlX3Rhc2tfc3RydWN0KCkgaXMgYWRkZWQgdG8KICAgPGFz bS90aHJlYWRfaW5mby5oPiB0byBoZWxwIGd1YXJkIGFnYWluc3QgaW5jb25zaXN0ZW50IHByb3Rv dHlwZXMsCiAgIHRob3VnaCB0aGlzIGlzIG5vdCByZXF1aXJlZCBhbmQgdGhlIGNvZGUgd291bGQg d29yayB3aXRob3V0IGl0LgoKICAgKHRocmVhZF9pbmZvLmggaXMgYWxyZWFkeSBpbmNsdWRlZCBi eSB0aGUgcmVsZXZhbnQgY29kZSBjb2RlLCBhbmQKICAgYXJjaC9zaCB1c2VzIHRoZSBzYW1lIGhl YWRlcikuCgogKiBBZGRlZCBjb21tZW50cyB0byBleHBsYWluIHRoZSBtZWFuaW5nIG9mIFRJRl9T VkUuCgogKiBBQkkgY2hhbmdlOiBaZXJvIFNWRSByZWdzIG9uIHN5c2NhbGwgZW50cnkuCgogICBE ZXRhaWxlZCByYXRpb25hbGU6CgpBcyBjdXJyZW50bHkgZG9jdW1lbnRlZCwgbm8gZ3VhcmFudGVl IGlzIG1hZGUgYWJvdXQgd2hhdCBhIHVzZXIKdGFzayBzZWVzIGluIHRoZSBTVkUgcmVnaXN0ZXJz IGFmdGVyIGEgc3lzY2FsbCwgZXhjZXB0IHRoYXQgVjAtVjMxCihjb3JyZXNwb25kaW5nIHRvIFow LVozMSBiaXRzIFsxMjc6MF0pIGFyZSBwcmVzZXJ2ZWQuCgpUaGUgYWN0dWFsIGtlcm5lbCBiZWhh dmlvdXIgY3VycmVudGx5IGltcGxlbWVudGVkIGlzIHRoYXQgdGhlIFNWRQpyZWdpc3RlcnMgYXJl IHplcm9lZCBpZiBhIGNvbnRleHQgc3dpdGNoIG9yIHNpZ25hbCBkZWxpdmVyeSBvY2N1cnMKZHVy aW5nIGEgc3lzY2FsbC4gIEFmdGVyIGEgZm9yaygpIG9yIGNsb25lKCksIHRoZSBTVkUgcmVnaXN0 ZXJzCm9mIHRoZSBjaGlsZCB0YXNrIGFyZSB6ZXJvZWQgYWxzby4gIFRoZSBTVkUgcmVnaXN0ZXJz IGFyZSBvdGhlcndpc2UKcHJlc2VydmVkLiAgRmxleGliaWxpdHkgaXMgcmV0YWluZWQgaW4gdGhl IEFCSSBhYm91dCB0aGUgZXhhY3QKY3JpdGVyaWEgZm9yIHRoZSBkZWNpc2lvbi4KClRoZXJlIGFy ZSBzb21lIHBvdGVudGlhbCBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2guCgpTeXNjYWxsIGlt cGFjdAotLS0tLS0tLS0tLS0tLQoKV2lsbCwgQ2F0YWxpbiBhbmQgTWFyayBoYXZlIGV4cHJlc3Nl ZCBjb25jZXJucyBhYm91dCB0aGUgcmlzayBvZgpjcmVhdGluZyBkZSBmYWN0byBBQkkgaGVyZTog aW4gc2NlbmFyaW9zIG9yIHdvcmtsb2FkcyB3aGVyZSBhCmNvbnRleHQgc3dpdGNoIG5ldmVyIG9j Y3VycyBvciBpcyB2ZXJ5IHVubGlrZWx5LCB1c2Vyc3BhY2UgbWF5CmxlYXJuIHRvIHJlbHkgb24g cHJlc2VydmF0aW9uIG9mIHRoZSBTVkUgcmVnaXN0ZXJzIGFjcm9zcyBjZXJ0YWluCnN5c2NhbGxz LgoKSXQgaXMgZGlmZmljdWx0IHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXM6IHRoZSBzeXNj YWxsIEFCSSBpcwpub3QgYSBnZW5lcmFsLXB1cnBvc2UgaW50ZXJmYWNlLCBzaW5jZSBpdCBpcyB1 c3VhbGx5IGhpZGRlbiBiZWhpbmQKbGliYyB3cmFwcGVyczogZGlyZWN0IGludm9jYXRpb24gb2Yg U1ZDIGlzIGRpc2NvdXJhZ2VkLiAgSG93ZXZlciwKc3BlY2lhbGlzZWQgcnVudGltZXMsIHN0YXRp Y2FsbHkgbGlua2VkIHByb2dyYW1zIGFuZCBiaW5hcnkgYmxvYnMKbWF5IGJha2UgaW4gZGlyZWN0 IHN5c2NhbGxzIHRoYXQgbWFrZSBiYWQgYXNzdW1wdGlvbnMuCgpDb252ZXJzZWx5LCB0aGUgcmVs YXRpdmUgY29zdCBvZiB6ZXJvaW5nIHRoZSBTVkUgcmVncyB0byBtaXRpZ2F0ZQphZ2FpbnN0IHRo aXMgYWxzbyBjYW5ub3QgYmUgd2VsbCBjaGFyYWN0ZXJpc2VkIHVudGlsIFNWRSBoYXJkd2FyZQpl eGlzdHMuCgpwdHJhY2UgaW1wYWN0Ci0tLS0tLS0tLS0tLS0KClRoZSBjdXJyZW50IGltcGxlbWVu dGF0aW9uIGNhbiBkaXNjYXJkIGFuZCB6ZXJvIHRoZSBTVkUgcmVnaXN0ZXJzCmF0IGFueSBwb2lu dCBkdXJpbmcgYSBzeXNjYWxsLCBpbmNsdWRpbmcgYmVmb3JlLCBhZnRlciBvciBiZXR3ZWVuCnB0 cmFjZSB0cmFwcyBpbnNpZGUgYSBzaW5nbGUgc3lzY2FsbC4gIFRoaXMgbWVhbnMgdGhhdCBzZXR0 aW5nIHRoZQpTVkUgcmVnaXN0ZXJzIHRocm91Z2ggUFRSQUNFX1NFVFJFR1NFVCB3aWxsIG9mdGVu IG5vdCBkbyB3aGF0IHRoZQp1c2VyIGV4cGVjdHM6IHRoZSBuZXcgcmVnaXN0ZXIgdmFsdWVzIGFy ZSBvbmx5IGd1YXJhbnRlZWQgdG8Kc3Vydml2ZSBhcyBmYXIgYXMgdXNlcnNwYWNlIGlmIHNldCBm cm9tIGFuIGFzeW5jaHJvbm91cwpzaWduYWwtZGVsaXZlcnktc3RvcCAoZS5nLiwgYnJlYWtwb2lu dCwgU0VHViBvciBhc3luY2hyb25vdXMgc2lnbmFsCmRlbGl2ZXJlZCBvdXRzaWRlIHN5c2NhbGwg Y29udGV4dCkuCgpUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgY3VycmVudGx5IGRvY3VtZW50 ZWQgU1ZFIHVzZXIgQUJJLCBidXQKbGlrZWx5IHRvIGJlIHN1cnByaXNpbmcgZm9yIGEgZGVidWdn ZXIgdXNlciwgc2luY2Ugc2V0dGluZyBtb3N0CnJlZ2lzdGVycyBvZiBhIHRyYWNlZSBkb2Vzbid0 IGJlaGF2ZSBpbiB0aGlzIHdheS4KClRoaXMgcGF0Y2gKLS0tLS0tLS0tLQoKVGhlIGNvbW1vbiBz eXNjYWxsIGVudHJ5IHBhdGggaXMgbW9kaWZpZWQgdG8gZm9yY2libHkgZGlzY2FyZCBTVkUsCmFu ZCB0aGUgZGlzY2FyZCBsb2dpYyBlbHNld2hlcmUgaXMgcmVtb3ZlZC4KClRoaXMgbWVhbnMgdGhh dCB0aGVyZSBpcyBhIG1hbmRhdG9yeSBhZGRpdGlvbmFsIHRyYXAgdG8gdGhlIGtlcm5lbAp3aGVu IGEgdXNlciB0YXNrIHRyaWVzIHRvIHVzZSBTVkUgYWdhaW4gYWZ0ZXIgYSBzeXNjYWxsLiAgVGhp cyBjYW4KYmUgZXhwZW5zaXZlIGZvciBwcm9ncmFtcyB0aGF0IHVzZSBTVkUgaGVhdmlseSBhcm91 bmQgc3lzY2FsbHMsIGJ1dApjYW4gYmUgb3B0aW1pc2VkIGxhdGVyLgoKQmVjYXVzZSBhbGwgcHRy YWNlIHRyYXBzIG9jY3VyIGFmdGVyIHN5c2NhbGwgZW50cnksIHRoaXMgYWxzbyBtZWFucwp0aGF0 IG5vIGRpc2NhcmQgd2lsbCBvY2N1ciBhZnRlciBTVkUgcmVnaXN0ZXJzIGFyZSBzZXQgdGhyb3Vn aApwdHJhY2UsIHVudGlsIHRoZSB0YXNrIG5leHQgcGFzc2VzIHRocm91Z2ggdXNlcnNwYWNlIGFu ZCBkb2VzCmFub3RoZXIgc3lzY2FsbC4gIFRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIGlzIGlu IGZvcmsoKS9jbG9uZSgpCndoZXJlIGZvcmNlZCBkaXNjYXJkIHN0aWxsIG9jY3VyczogaG93ZXZl ciwgdGhpcyBpcyBsaWtlbHkgdG8gYmUKZW5jb3VudGVyZWQgbGVzcyBmcmVxdWVudGx5IGJ5IGRl YnVnZ2VyIHVzZXJzLgoKVGhpcyBBQkkgY2hhbmdlIHdpbGwgY29tbWl0IHRoZSBrZXJuZWwgdG8g c29tZSBleHRyYSBjb3N0OiBhdCBsZWFzdApzb21lIHRocmVhZCBmbGFnIG1hbmlwdWxhdGlvbiwg Y29uZGl0aW9uYWwgYnJhbmNoaW5nIGFuZAoKCW1vdgl2MC4xNmIsIHYwLjE2YgoJbW92CXYxLjE2 YiwgdjEuMTZiCgkvLyAuLi4KCW1vdiAJdjMxLjE2YiwgdjMxLjE2YgoJcGZhbHNlCXAwLmIKCS8v IC4uLgoJcGZhbHNlCXAxNS5iCgl3cmZmcglwMC5iCgoob3IgZXF1aXZhbGVudCkgb24gdGhlIHN5 c2NhbGwgZmFzdCBwYXRoLCBmb3IgU1ZFIHRhc2tzLgoKRm9yIG5vdyB0aGlzIHBhdGNoIHJlcXVp cmVzIHRyYXAgKyBtZW1zZXQoKSArIHJlbG9hZCwgc28gaXMKc2lnbmlmaWNhbnRseSBtb3JlIGV4 cGVuc2l2ZS4KLS0tCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Zwc2ltZC5oICAgICAgfCAgMTYg KysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggICB8ICAgMiArCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggfCAgIDQgKwogYXJjaC9hcm02NC9pbmNsdWRl L2FzbS90cmFwcy5oICAgICAgIHwgICAyICsKIGFyY2gvYXJtNjQva2VybmVsL2VudHJ5LlMgICAg ICAgICAgICB8ICAzOSArKysrLQogYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMgICAgICAgICAg IHwgMzI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBhcmNoL2FybTY0L2tl cm5lbC9wcm9jZXNzLmMgICAgICAgICAgfCAgMjQgKysrCiBhcmNoL2FybTY0L2tlcm5lbC90cmFw cy5jICAgICAgICAgICAgfCAgIDYgKy0KIDggZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMo KyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v ZnBzaW1kLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Zwc2ltZC5oCmluZGV4IDAyNmE3Yzcu LjU2NTVmZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBzaW1kLmgKKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mcHNpbWQuaApAQCAtMjAsNiArMjAsOCBAQAogCiAj aWZuZGVmIF9fQVNTRU1CTFlfXwogCisjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CisKIC8qCiAg KiBGUC9TSU1EIHN0b3JhZ2UgYXJlYSBoYXM6CiAgKiAgLSBGUFNSIGFuZCBGUENSCkBAIC03Miw2 ICs3NCwyMCBAQCBleHRlcm4gdm9pZCBzdmVfbG9hZF9zdGF0ZSh2b2lkIGNvbnN0ICpzdGF0ZSwg dTMyIGNvbnN0ICpwZnBzciwKIAkJCSAgIHVuc2lnbmVkIGxvbmcgdnFfbWludXNfMSk7CiBleHRl cm4gdW5zaWduZWQgaW50IHN2ZV9nZXRfdmwodm9pZCk7CiAKKyNpZmRlZiBDT05GSUdfQVJNNjRf U1ZFCisKK2V4dGVybiBzaXplX3Qgc3ZlX3N0YXRlX3NpemUoc3RydWN0IHRhc2tfc3RydWN0IGNv bnN0ICp0YXNrKTsKKworZXh0ZXJuIHZvaWQgc3ZlX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzayk7CitleHRlcm4gdm9pZCBmcHNpbWRfcmVsZWFzZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVj dCAqdGFzayk7CisKKyNlbHNlIC8qICEgQ09ORklHX0FSTTY0X1NWRSAqLworCitzdGF0aWMgaW5s aW5lIHZvaWQgc3ZlX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykgeyB9CitzdGF0aWMg aW5saW5lIHZvaWQgZnBzaW1kX3JlbGVhc2VfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sp IHsgfQorCisjZW5kaWYgLyogISBDT05GSUdfQVJNNjRfU1ZFICovCisKIC8qIEZvciB1c2UgYnkg RUZJIHJ1bnRpbWUgc2VydmljZXMgY2FsbHMgb25seSAqLwogZXh0ZXJuIHZvaWQgX19lZmlfZnBz aW1kX2JlZ2luKHZvaWQpOwogZXh0ZXJuIHZvaWQgX19lZmlfZnBzaW1kX2VuZCh2b2lkKTsKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCmluZGV4IDdkZGRjYTIuLmUyZjU3NWQgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9wcm9jZXNzb3IuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHN0cnVjdCB0aHJlYWRf c3RydWN0IHsKIAl1bnNpZ25lZCBsb25nCQl0cDJfdmFsdWU7CiAjZW5kaWYKIAlzdHJ1Y3QgZnBz aW1kX3N0YXRlCWZwc2ltZF9zdGF0ZTsKKwl2b2lkCQkJKnN2ZV9zdGF0ZTsJLyogU1ZFIHJlZ2lz dGVycywgaWYgYW55ICovCisJdW5zaWduZWQgaW50CQlzdmVfdmw7CQkvKiBTVkUgdmVjdG9yIGxl bmd0aCAqLwogCXVuc2lnbmVkIGxvbmcJCWZhdWx0X2FkZHJlc3M7CS8qIGZhdWx0IGluZm8gKi8K IAl1bnNpZ25lZCBsb25nCQlmYXVsdF9jb2RlOwkvKiBFU1JfRUwxIHZhbHVlICovCiAJc3RydWN0 IGRlYnVnX2luZm8JZGVidWc7CQkvKiBkZWJ1Z2dpbmcgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhy ZWFkX2luZm8uaAppbmRleCBkZGRlZDY0Li45MmI3YjQ4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90 aHJlYWRfaW5mby5oCkBAIC02Myw2ICs2Myw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7CiB2b2lk IGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIGFyY2hfc2V0dXBfbmV3X2V4ZWMg ICAgIGFyY2hfc2V0dXBfbmV3X2V4ZWMKIAordm9pZCBhcmNoX3JlbGVhc2VfdGFza19zdHJ1Y3Qo c3RydWN0IHRhc2tfc3RydWN0ICp0c2spOworCiAjZW5kaWYKIAogLyoKQEAgLTkyLDYgKzk0LDcg QEAgdm9pZCBhcmNoX3NldHVwX25ld19leGVjKHZvaWQpOwogI2RlZmluZSBUSUZfUkVTVE9SRV9T SUdNQVNLCTIwCiAjZGVmaW5lIFRJRl9TSU5HTEVTVEVQCQkyMQogI2RlZmluZSBUSUZfMzJCSVQJ CTIyCS8qIDMyYml0IHByb2Nlc3MgKi8KKyNkZWZpbmUgVElGX1NWRQkJCTIzCS8qIFNjYWxhYmxl IFZlY3RvciBFeHRlbnNpb24gaW4gdXNlICovCiAKICNkZWZpbmUgX1RJRl9TSUdQRU5ESU5HCQko MSA8PCBUSUZfU0lHUEVORElORykKICNkZWZpbmUgX1RJRl9ORUVEX1JFU0NIRUQJKDEgPDwgVElG X05FRURfUkVTQ0hFRCkKQEAgLTEwNSw2ICsxMDgsNyBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4 ZWModm9pZCk7CiAjZGVmaW5lIF9USUZfVVBST0JFCQkoMSA8PCBUSUZfVVBST0JFKQogI2RlZmlu ZSBfVElGX0ZTQ0hFQ0sJCSgxIDw8IFRJRl9GU0NIRUNLKQogI2RlZmluZSBfVElGXzMyQklUCQko MSA8PCBUSUZfMzJCSVQpCisjZGVmaW5lIF9USUZfU1ZFCQkoMSA8PCBUSUZfU1ZFKQogCiAjZGVm aW5lIF9USUZfV09SS19NQVNLCQkoX1RJRl9ORUVEX1JFU0NIRUQgfCBfVElGX1NJR1BFTkRJTkcg fCBcCiAJCQkJIF9USUZfTk9USUZZX1JFU1VNRSB8IF9USUZfRk9SRUlHTl9GUFNUQVRFIHwgXApk aWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS90cmFwcy5oCmluZGV4IDQ1ZTNkYTMuLjE2OTZmOWQgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtNjQvaW5jbHVkZS9hc20vdHJhcHMuaAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L3RyYXBzLmgKQEAgLTM0LDYgKzM0LDggQEAgc3RydWN0IHVuZGVmX2hvb2sgewogCiB2b2lkIHJl Z2lzdGVyX3VuZGVmX2hvb2soc3RydWN0IHVuZGVmX2hvb2sgKmhvb2spOwogdm9pZCB1bnJlZ2lz dGVyX3VuZGVmX2hvb2soc3RydWN0IHVuZGVmX2hvb2sgKmhvb2spOwordm9pZCBmb3JjZV9zaWdu YWxfaW5qZWN0KGludCBzaWduYWwsIGludCBjb2RlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJ CSB1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwogCiB2b2lkIGFybTY0X25vdGlmeV9zZWdmYXVsdChz dHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBhZGRyKTsKIApkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9rZXJuZWwvZW50cnkuUyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LlMKaW5k ZXggZjVlODUxZS4uNTZlODQ4ZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnku UworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS5TCkBAIC02MDcsNiArNjA3LDggQEAgZWww X3N5bmM6CiAJYi5lcQllbDBfaWEKIAljbXAJeDI0LCAjRVNSX0VMeF9FQ19GUF9BU0lNRAkvLyBG UC9BU0lNRCBhY2Nlc3MKIAliLmVxCWVsMF9mcHNpbWRfYWNjCisJY21wCXgyNCwgI0VTUl9FTHhf RUNfU1ZFCQkvLyBTVkUgYWNjZXNzCisJYi5lcQllbDBfc3ZlX2FjYwogCWNtcAl4MjQsICNFU1Jf RUx4X0VDX0ZQX0VYQzY0CS8vIEZQL0FTSU1EIGV4Y2VwdGlvbgogCWIuZXEJZWwwX2Zwc2ltZF9l eGMKIAljbXAJeDI0LCAjRVNSX0VMeF9FQ19TWVM2NAkJLy8gY29uZmlndXJhYmxlIHRyYXAKQEAg LTY1OCw2ICs2NjAsNyBAQCBlbDBfc3ZjX2NvbXBhdDoKIAkvKgogCSAqIEFBcmNoMzIgc3lzY2Fs bCBoYW5kbGluZwogCSAqLworCWxkcgl4MTYsIFt0c2ssICNUU0tfVElfRkxBR1NdCS8vIGxvYWQg dGhyZWFkIGZsYWdzCiAJYWRycAlzdGJsLCBjb21wYXRfc3lzX2NhbGxfdGFibGUJLy8gbG9hZCBj b21wYXQgc3lzY2FsbCB0YWJsZSBwb2ludGVyCiAJbW92CXdzY25vLCB3NwkJCS8vIHN5c2NhbGwg bnVtYmVyIGluIHc3IChyNykKIAltb3YgICAgIHdzY19uciwgI19fTlJfY29tcGF0X3N5c2NhbGxz CkBAIC03MDUsOSArNzA4LDE5IEBAIGVsMF9mcHNpbWRfYWNjOgogCW1vdgl4MSwgc3AKIAlibAlk b19mcHNpbWRfYWNjCiAJYglyZXRfdG9fdXNlcgorZWwwX3N2ZV9hY2M6CisJLyoKKwkgKiBTY2Fs YWJsZSBWZWN0b3IgRXh0ZW5zaW9uIGFjY2VzcworCSAqLworCWVuYWJsZV9kYmdfYW5kX2lycQor CWN0X3VzZXJfZXhpdAorCW1vdgl4MCwgeDI1CisJbW92CXgxLCBzcAorCWJsCWRvX3N2ZV9hY2MK KwliCXJldF90b191c2VyCiBlbDBfZnBzaW1kX2V4YzoKIAkvKgotCSAqIEZsb2F0aW5nIFBvaW50 IG9yIEFkdmFuY2VkIFNJTUQgZXhjZXB0aW9uCisJICogRmxvYXRpbmcgUG9pbnQsIEFkdmFuY2Vk IFNJTUQgb3IgU1ZFIGV4Y2VwdGlvbgogCSAqLwogCWVuYWJsZV9kYmcKIAljdF91c2VyX2V4aXQK QEAgLTgzNSwxNiArODQ4LDM2IEBAIEVORFBST0MocmV0X3RvX3VzZXIpCiAgKi8KIAkuYWxpZ24J NgogZWwwX3N2YzoKKwlsZHIJeDE2LCBbdHNrLCAjVFNLX1RJX0ZMQUdTXQkvLyBsb2FkIHRocmVh ZCBmbGFncwogCWFkcnAJc3RibCwgc3lzX2NhbGxfdGFibGUJCS8vIGxvYWQgc3lzY2FsbCB0YWJs ZSBwb2ludGVyCiAJbW92CXdzY25vLCB3OAkJCS8vIHN5c2NhbGwgbnVtYmVyIGluIHc4CiAJbW92 CXdzY19uciwgI19fTlJfc3lzY2FsbHMKKworI2lmbmRlZiBDT05GSUdfQVJNNjRfU1ZFCisJYgll bDBfc3ZjX25ha2VkCisjZWxzZQorCXRiegl4MTYsICNUSUZfU1ZFLCBlbDBfc3ZjX25ha2VkCS8v IFNraXAgdW5sZXNzIFRJRl9TVkUgc2V0OgorCWJpYwl4MTYsIHgxNiwgI19USUZfU1ZFCQkvLyBk aXNjYXJkIFNWRSBzdGF0ZQorCXN0cgl4MTYsIFt0c2ssICNUU0tfVElfRkxBR1NdCisKKwkvKgor CSAqIHRhc2tfZnBzaW1kX2xvYWQoKSB3b24ndCBiZSBjYWxsZWQgdG8gdXBkYXRlIENQQUNSX0VM MSBpbgorCSAqIHJldF90b191c2VyIHVubGVzcyBUSUZfRk9SRUlHTl9GUFNUQVRFIGlzIHN0aWxs IHNldCwgd2hpY2ggb25seQorCSAqIGhhcHBlbnMgaWYgYSBjb250ZXh0IHN3aXRjaCBvciBrZXJu ZWxfbmVvbl9iZWdpbigpIG9yIGNvbnRleHQKKwkgKiBtb2RpZmljYXRpb24gKHNpZ3JldHVybiwg cHRyYWNlKSBpbnRlcnZlbmVzLgorCSAqIFNvLCBlbnN1cmUgdGhhdCBDUEFDUl9FTDEgaXMgYWxy ZWFkeSBjb3JyZWN0IGZvciB0aGUgZmFzdC1wYXRoIGNhc2U6CisJICovCisJbXJzCXg5LCBjcGFj cl9lbDEKKwliaWMJeDksIHg5LCAjQ1BBQ1JfRUwxX1pFTl9FTDBFTgkvLyBkaXNhYmxlIFNWRSBm b3IgZWwwCisJbXNyCWNwYWNyX2VsMSwgeDkJCQkvLyBzeW5jaHJvbmlzZWQgYnkgZXJldCB0byBl bDAKKyNlbmRpZiAvKiBDT05GSUdfQVJNNjRfU1ZFICovCisKIGVsMF9zdmNfbmFrZWQ6CQkJCQkv LyBjb21wYXQgZW50cnkgcG9pbnQKIAlzdHAJeDAsIHhzY25vLCBbc3AsICNTX09SSUdfWDBdCS8v IHNhdmUgdGhlIG9yaWdpbmFsIHgwIGFuZCBzeXNjYWxsIG51bWJlcgogCWVuYWJsZV9kYmdfYW5k X2lycQogCWN0X3VzZXJfZXhpdCAxCiAKLQlsZHIJeDE2LCBbdHNrLCAjVFNLX1RJX0ZMQUdTXQkv LyBjaGVjayBmb3Igc3lzY2FsbCBob29rcwotCXRzdAl4MTYsICNfVElGX1NZU0NBTExfV09SSwor CXRzdAl4MTYsICNfVElGX1NZU0NBTExfV09SSwkJLy8gY2hlY2sgZm9yIHN5c2NhbGwgaG9va3MK IAliLm5lCV9fc3lzX3RyYWNlCiAJY21wICAgICB3c2Nubywgd3NjX25yCQkJLy8gY2hlY2sgdXBw ZXIgc3lzY2FsbCBsaW1pdAogCWIuaHMJbmlfc3lzCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tl cm5lbC9mcHNpbWQuYyBiL2FyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jCmluZGV4IDdhODY1Yzgu LjBiMTVhNTk0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYworKysgYi9h cmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYwpAQCAtMTgsMTggKzE4LDI2IEBACiAgKi8KIAogI2lu Y2x1ZGUgPGxpbnV4L2JvdHRvbV9oYWxmLmg+CisjaW5jbHVkZSA8bGludXgvYnVnLmg+CisjaW5j bHVkZSA8bGludXgvY29tcGF0Lmg+CiAjaW5jbHVkZSA8bGludXgvY3B1Lmg+CiAjaW5jbHVkZSA8 bGludXgvY3B1X3BtLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGlu dXgvaXJxZmxhZ3MuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgv cGVyY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgorI2luY2x1ZGUgPGxpbnV4L3B0 cmFjZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkL3NpZ25hbC5oPgogI2luY2x1ZGUgPGxpbnV4 L3NpZ25hbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAogI2luY2x1ZGUgPGFzbS9mcHNp bWQuaD4KICNpbmNsdWRlIDxhc20vY3B1dHlwZS5oPgogI2luY2x1ZGUgPGFzbS9zaW1kLmg+Cisj aW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4KKyNpbmNsdWRlIDxhc20vc3lzcmVnLmg+CisjaW5j bHVkZSA8YXNtL3RyYXBzLmg+CiAKICNkZWZpbmUgRlBFWENfSU9GCSgxIDw8IDApCiAjZGVmaW5l IEZQRVhDX0RaRgkoMSA8PCAxKQpAQCAtMzksNiArNDcsOCBAQAogI2RlZmluZSBGUEVYQ19JREYJ KDEgPDwgNykKIAogLyoKKyAqIChOb3RlOiBpbiB0aGlzIGRpc2N1c3Npb24sIHN0YXRlbWVudHMg YWJvdXQgRlBTSU1EIGFwcGx5IGVxdWFsbHkgdG8gU1ZFLikKKyAqCiAgKiBJbiBvcmRlciB0byBy ZWR1Y2UgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgRlBTSU1EIHN0YXRlIGlzIG5lZWRsZXNzbHkg c2F2ZWQKICAqIGFuZCByZXN0b3JlZCwgd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHR3byB0aGlu Z3M6CiAgKiAoYSkgZm9yIGVhY2ggdGFzaywgd2UgbmVlZCB0byByZW1lbWJlciB3aGljaCBDUFUg d2FzIHRoZSBsYXN0IG9uZSB0byBoYXZlCkBAIC0xMDAsNiArMTEwLDI3OSBAQAogc3RhdGljIERF RklORV9QRVJfQ1BVKHN0cnVjdCBmcHNpbWRfc3RhdGUgKiwgZnBzaW1kX2xhc3Rfc3RhdGUpOwog CiAvKgorICogQ2FsbCBfX3N2ZV9mcmVlKCkgZGlyZWN0bHkgb25seSBpZiB5b3Uga25vdyB0YXNr IGNhbid0IGJlIHNjaGVkdWxlZAorICogb3IgcHJlZW1wdGVkLgorICovCitzdGF0aWMgdm9pZCBf X3N2ZV9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKK3sKKwlrZnJlZSh0YXNrLT50aHJl YWQuc3ZlX3N0YXRlKTsKKwl0YXNrLT50aHJlYWQuc3ZlX3N0YXRlID0gTlVMTDsKK30KKworc3Rh dGljIHZvaWQgc3ZlX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQoreworCVdBUk5fT04o dGVzdF90c2tfdGhyZWFkX2ZsYWcodGFzaywgVElGX1NWRSkpOworCisJX19zdmVfZnJlZSh0YXNr KTsKK30KKworCisvKiBPZmZzZXQgb2YgRkZSIGluIHRoZSBTVkUgcmVnaXN0ZXIgZHVtcCAqLwor c3RhdGljIHNpemVfdCBzdmVfZmZyX29mZnNldChpbnQgdmwpCit7CisJcmV0dXJuIFNWRV9TSUdf RkZSX09GRlNFVChzdmVfdnFfZnJvbV92bCh2bCkpIC0gU1ZFX1NJR19SRUdTX09GRlNFVDsKK30K Kworc3RhdGljIHZvaWQgKnN2ZV9wZmZyKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKK3sKKwly ZXR1cm4gKGNoYXIgKil0YXNrLT50aHJlYWQuc3ZlX3N0YXRlICsKKwkJc3ZlX2Zmcl9vZmZzZXQo dGFzay0+dGhyZWFkLnN2ZV92bCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoYW5nZV9jcGFjcih1NjQg dmFsLCB1NjQgbWFzaykKK3sKKwl1NjQgY3BhY3IgPSByZWFkX3N5c3JlZyhDUEFDUl9FTDEpOwor CXU2NCBuZXcgPSAoY3BhY3IgJiB+bWFzaykgfCB2YWw7CisKKwlpZiAobmV3ICE9IGNwYWNyKQor CQl3cml0ZV9zeXNyZWcobmV3LCBDUEFDUl9FTDEpOworfQorCitzdGF0aWMgdm9pZCBzdmVfdXNl cl9kaXNhYmxlKHZvaWQpCit7CisJY2hhbmdlX2NwYWNyKDAsIENQQUNSX0VMMV9aRU5fRUwwRU4p OworfQorCitzdGF0aWMgdm9pZCBzdmVfdXNlcl9lbmFibGUodm9pZCkKK3sKKwljaGFuZ2VfY3Bh Y3IoQ1BBQ1JfRUwxX1pFTl9FTDBFTiwgQ1BBQ1JfRUwxX1pFTl9FTDBFTik7Cit9CisKKy8qCisg KiBUSUZfU1ZFIGNvbnRyb2xzIHdoZXRoZXIgYSB0YXNrIGNhbiB1c2UgU1ZFIHdpdGhvdXQgdHJh cHBpbmcgd2hpbGUKKyAqIGluIHVzZXJzcGFjZSwgYW5kIGFsc28gdGhlIHdheSBhIHRhc2sncyBG UFNJTUQvU1ZFIHN0YXRlIGlzIHN0b3JlZAorICogaW4gdGhyZWFkX3N0cnVjdC4KKyAqCisgKiBU aGUga2VybmVsIHVzZXMgdGhpcyBmbGFnIHRvIHRyYWNrIHdoZXRoZXIgYSB1c2VyIHRhc2sgaXMg YWN0aXZlbHkKKyAqIHVzaW5nIFNWRSwgYW5kIHRoZXJlZm9yZSB3aGV0aGVyIGZ1bGwgU1ZFIHJl Z2lzdGVyIHN0YXRlIG5lZWRzIHRvCisgKiBiZSB0cmFja2VkLiAgSWYgbm90LCB0aGUgY2hlYXBl ciBGUFNJTUQgY29udGV4dCBoYW5kbGluZyBjb2RlIGNhbgorICogYmUgdXNlZCBpbnN0ZWFkIG9m IHRoZSBtb3JlIGNvc3RseSBTVkUgZXF1aXZhbGVudHMuCisgKgorICogICogVElGX1NWRSBzZXQ6 CisgKgorICogICAgVGhlIHRhc2sgY2FuIGV4ZWN1dGUgU1ZFIGluc3RydWN0aW9ucyB3aGlsZSBp biB1c2Vyc3BhY2Ugd2l0aG91dAorICogICAgdHJhcHBpbmcgdG8gdGhlIGtlcm5lbC4KKyAqCisg KiAgICBXaGVuIHN0b3JlZCwgWjAtWjMxIChpbmNvcnBvcmF0aW5nIFZuIGluIGJpdHNbMTI3OjBd IG9yIHRoZQorICogICAgY29ycmVzcG9uZGluZyBabiksIFAwLVAxNSBhbmQgRkZSIGFyZSBlbmNv ZGVkIGluIGluCisgKiAgICB0YXNrLT50aHJlYWQuc3ZlX3N0YXRlLCBmb3JtYXR0ZWQgYXBwcm9w cmlhdGVseSBmb3IgdmVjdG9yCisgKiAgICBsZW5ndGggdGFzay0+dGhyZWFkLnN2ZV92bC4KKyAq CisgKiAgICB0YXNrLT50aHJlYWQuc3ZlX3N0YXRlIG11c3QgcG9pbnQgdG8gYSB2YWxpZCBidWZm ZXIgYXQgbGVhc3QKKyAqICAgIHN2ZV9zdGF0ZV9zaXplKHRhc2spIGJ5dGVzIGluIHNpemUuCisg KgorICogICAgRHVyaW5nIGFueSBzeXNjYWxsLCB0aGUga2VybmVsIG1heSBvcHRpb25hbGx5IGNs ZWFyIFRJRl9TVkUgYW5kCisgKiAgICBkaXNjYXJkIHRoZSB2ZWN0b3Igc3RhdGUgZXhjZXB0IGZv ciB0aGUgRlBTSU1EIHN1YnNldC4KKyAqCisgKiAgKiBUSUZfU1ZFIGNsZWFyOgorICoKKyAqICAg IEFuIGF0dGVtcHQgYnkgdGhlIHVzZXIgdGFzayB0byBleGVjdXRlIGFuIFNWRSBpbnN0cnVjdGlv biBjYXVzZXMKKyAqICAgIGRvX3N2ZV9hY2MoKSB0byBiZSBjYWxsZWQsIHdoaWNoIGRvZXMgc29t ZSBwcmVwYXJhdGlvbiBhbmQgdGhlbgorICogICAgc2V0cyBUSUZfU1ZFLgorICoKKyAqICAgIFdo ZW4gc3RvcmVkLCBGUFNJTUQgcmVnaXN0ZXJzIFYwLVYzMSBhcmUgZW5jb2RlZCBpbgorICogICAg dGFzay0+ZnBzaW1kX3N0YXRlOyBiaXRzIFttYXggOiAxMjhdIGZvciBlYWNoIG9mIFowLVozMSBh cmUKKyAqICAgIGxvZ2ljYWxseSB6ZXJvIGJ1dCBub3Qgc3RvcmVkIGFueXdoZXJlOyBQMC1QMTUg YW5kIEZGUiBhcmUgbm90CisgKiAgICBzdG9yZWQgYW5kIGhhdmUgdW5zcGVjaWZpZWQgdmFsdWVz IGZyb20gdXNlcnNwYWNlJ3MgcG9pbnQgb2YKKyAqICAgIHZpZXcuICBGb3IgaHlnaWVuZSBwdXJw b3NlcywgdGhlIGtlcm5lbCB6ZXJvZXMgdGhlbSBvbiBuZXh0IHVzZSwKKyAqICAgIGJ1dCB1c2Vy c3BhY2UgaXMgZGlzY291cmFnZWQgZnJvbSByZWx5aW5nIG9uIHRoaXMuCisgKgorICogICAgdGFz ay0+dGhyZWFkLnN2ZV9zdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG5vbi1OVUxMLCB2YWxpZCBv ciBhbnkKKyAqICAgIHBhcnRpY3VsYXIgc2l6ZTogaXQgbXVzdCBub3QgYmUgZGVyZWZlcmVuY2Vk LgorICoKKyAqICAqIEZQU1IgYW5kIEZQQ1IgYXJlIGFsd2F5cyBzdG9yZWQgaW4gdGFzay0+ZnBz aW1kX3N0YXRlIGlycmVzcGN0aXZlIG9mCisgKiAgICB3aGV0aGVyIFRJRl9TVkUgaXMgY2xlYXIg b3Igc2V0LCBzaW5jZSB0aGVzZSBhcmUgbm90IHZlY3RvciBsZW5ndGgKKyAqICAgIGRlcGVuZGVu dC4KKyAqLworCisvKgorICogVXBkYXRlIGN1cnJlbnQncyBGUFNJTUQvU1ZFIHJlZ2lzdGVycyBm cm9tIHRocmVhZF9zdHJ1Y3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk IG9ubHkgd2hlbiB0aGUgRlBTSU1EL1NWRSBzdGF0ZSBpbgorICogdGhyZWFkX3N0cnVjdCBpcyBr bm93biB0byBiZSB1cCB0byBkYXRlLCB3aGVuIHByZXBhcmluZyB0byBlbnRlcgorICogdXNlcnNw YWNlLgorICoKKyAqIFNvZnRpcnFzIChhbmQgcHJlZW1wdGlvbikgbXVzdCBiZSBkaXNhYmxlZC4K KyAqLworc3RhdGljIHZvaWQgdGFza19mcHNpbWRfbG9hZCh2b2lkKQoreworCVdBUk5fT04oIWlu X3NvZnRpcnEoKSAmJiAhaXJxc19kaXNhYmxlZCgpKTsKKworCWlmIChzeXN0ZW1fc3VwcG9ydHNf c3ZlKCkgJiYgdGVzdF90aHJlYWRfZmxhZyhUSUZfU1ZFKSkKKwkJc3ZlX2xvYWRfc3RhdGUoc3Zl X3BmZnIoY3VycmVudCksCisJCQkgICAgICAgJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRfc3RhdGUu ZnBzciwKKwkJCSAgICAgICBzdmVfdnFfZnJvbV92bChjdXJyZW50LT50aHJlYWQuc3ZlX3ZsKSAt IDEpOworCWVsc2UKKwkJZnBzaW1kX2xvYWRfc3RhdGUoJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRf c3RhdGUpOworCisJaWYgKHN5c3RlbV9zdXBwb3J0c19zdmUoKSkgeworCQkvKiBUb2dnbGUgU1ZF IHRyYXBwaW5nIGZvciB1c2Vyc3BhY2UgaWYgbmVlZGVkICovCisJCWlmICh0ZXN0X3RocmVhZF9m bGFnKFRJRl9TVkUpKQorCQkJc3ZlX3VzZXJfZW5hYmxlKCk7CisJCWVsc2UKKwkJCXN2ZV91c2Vy X2Rpc2FibGUoKTsKKworCQkvKiBTZXJpYWxpc2VkIGJ5IGV4Y2VwdGlvbiByZXR1cm4gdG8gdXNl ciAqLworCX0KK30KKworLyoKKyAqIEVuc3VyZSBjdXJyZW50J3MgRlBTSU1EL1NWRSBzdG9yYWdl IGluIHRocmVhZF9zdHJ1Y3QgaXMgdXAgdG8gZGF0ZQorICogd2l0aCByZXNwZWN0IHRvIHRoZSBD UFUgcmVnaXN0ZXJzLgorICoKKyAqIFNvZnRpcnFzIChhbmQgcHJlZW1wdGlvbikgbXVzdCBiZSBk aXNhYmxlZC4KKyAqLworc3RhdGljIHZvaWQgdGFza19mcHNpbWRfc2F2ZSh2b2lkKQoreworCVdB Uk5fT04oIWluX3NvZnRpcnEoKSAmJiAhaXJxc19kaXNhYmxlZCgpKTsKKworCWlmICghdGVzdF90 aHJlYWRfZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKSkgeworCQlpZiAoc3lzdGVtX3N1cHBvcnRz X3N2ZSgpICYmIHRlc3RfdGhyZWFkX2ZsYWcoVElGX1NWRSkpIHsKKwkJCWlmIChXQVJOX09OKHN2 ZV9nZXRfdmwoKSAhPSBjdXJyZW50LT50aHJlYWQuc3ZlX3ZsKSkgeworCQkJCS8qCisJCQkJICog Q2FuJ3Qgc2F2ZSB0aGUgdXNlciByZWdzLCBzbyBjdXJyZW50IHdvdWxkCisJCQkJICogcmUtZW50 ZXIgdXNlciB3aXRoIGNvcnJ1cHQgc3RhdGUuCisJCQkJICogVGhlcmUncyBubyB3YXkgdG8gcmVj b3Zlciwgc28ga2lsbCBpdDoKKwkJCQkgKi8KKwkJCQlmb3JjZV9zaWduYWxfaW5qZWN0KAorCQkJ CQlTSUdLSUxMLCAwLCBjdXJyZW50X3B0X3JlZ3MoKSwgMCk7CisJCQkJcmV0dXJuOworCQkJfQor CisJCQlzdmVfc2F2ZV9zdGF0ZShzdmVfcGZmcihjdXJyZW50KSwKKwkJCQkgICAgICAgJmN1cnJl bnQtPnRocmVhZC5mcHNpbWRfc3RhdGUuZnBzcik7CisJCX0gZWxzZQorCQkJZnBzaW1kX3NhdmVf c3RhdGUoJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRfc3RhdGUpOworCX0KK30KKworI2RlZmluZSBa UkVHKHN2ZV9zdGF0ZSwgdnEsIG4pICgoY2hhciAqKShzdmVfc3RhdGUpICsJCVwKKwkoU1ZFX1NJ R19aUkVHX09GRlNFVCh2cSwgbikgLSBTVkVfU0lHX1JFR1NfT0ZGU0VUKSkKKworLyoKKyAqIFRy YW5zZmVyIHRoZSBGUFNJTUQgc3RhdGUgaW4gdGFzay0+dGhyZWFkLmZwc2ltZF9zdGF0ZSB0bwor ICogdGFzay0+dGhyZWFkLnN2ZV9zdGF0ZS4KKyAqCisgKiBUYXNrIGNhbiBiZSBhIG5vbi1ydW5u YWJsZSB0YXNrLCBvciBjdXJyZW50LiAgSW4gdGhlIGxhdHRlciBjYXNlLAorICogc29mdGlycXMg KGFuZCBwcmVlbXB0aW9uKSBtdXN0IGJlIGRpc2FibGVkLgorICogdGFzay0+dGhyZWFkLnN2ZV9z dGF0ZSBtdXN0IHBvaW50IHRvIGF0IGxlYXN0IHN2ZV9zdGF0ZV9zaXplKHRhc2spCisgKiBieXRl cyBvZiBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeS4KKyAqIHRhc2stPnRocmVhZC5mcHNpbWRfc3Rh dGUgbXVzdCBiZSB1cCB0byBkYXRlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKi8K K3N0YXRpYyB2b2lkIGZwc2ltZF90b19zdmUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQorewor CXVuc2lnbmVkIGludCB2cTsKKwl2b2lkICpzc3QgPSB0YXNrLT50aHJlYWQuc3ZlX3N0YXRlOwor CXN0cnVjdCBmcHNpbWRfc3RhdGUgY29uc3QgKmZzdCA9ICZ0YXNrLT50aHJlYWQuZnBzaW1kX3N0 YXRlOworCXVuc2lnbmVkIGludCBpOworCisJaWYgKCFzeXN0ZW1fc3VwcG9ydHNfc3ZlKCkpCisJ CXJldHVybjsKKworCXZxID0gc3ZlX3ZxX2Zyb21fdmwodGFzay0+dGhyZWFkLnN2ZV92bCk7CisJ Zm9yIChpID0gMDsgaSA8IDMyOyArK2kpCisJCW1lbWNweShaUkVHKHNzdCwgdnEsIGkpLCAmZnN0 LT52cmVnc1tpXSwKKwkJICAgICAgIHNpemVvZihmc3QtPnZyZWdzW2ldKSk7Cit9CisKKyNpZmRl ZiBDT05GSUdfQVJNNjRfU1ZFCisKKy8qCisgKiBSZXR1cm4gaG93IG1hbnkgYnl0ZXMgb2YgbWVt b3J5IGFyZSByZXF1aXJlZCB0byBzdG9yZSB0aGUgZnVsbCBTVkUKKyAqIHN0YXRlIGZvciB0YXNr LCBnaXZlbiB0YXNrJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdmVjdG9yIGxlbmd0aC4KKyAqLwor c2l6ZV90IHN2ZV9zdGF0ZV9zaXplKHN0cnVjdCB0YXNrX3N0cnVjdCBjb25zdCAqdGFzaykKK3sK KwlyZXR1cm4gU1ZFX1NJR19SRUdTX1NJWkUoc3ZlX3ZxX2Zyb21fdmwodGFzay0+dGhyZWFkLnN2 ZV92bCkpOworfQorCisvKgorICogRW5zdXJlIHRoYXQgdGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSBp cyBhbGxvY2F0ZWQgYW5kIHN1ZmZpY2llbnRseSBsYXJnZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gcHJlcGFyYXRpb24gZm9yIHJlcGxhY2luZworICogdGFz ay0+dGhyZWFkLnN2ZV9zdGF0ZSB3aXRoIG5ldyBkYXRhLiAgVGhlIG1lbW9yeSBpcyBhbHdheXMg emVyb2VkCisgKiBoZXJlIHRvIHByZXZlbnQgc3RhbGUgZGF0YSBmcm9tIHNob3dpbmcgdGhyb3Vn aDogdGhpcyBpcyBkb25lIGluCisgKiB0aGUgaW50ZXJlc3Qgb2YgdGVzdGFiaWxpdHkgYW5kIHBy ZWRpY3RhYmlsaXR5OiBleGNlcHQgaW4gdGhlCisgKiBkb19zdmVfYWNjKCkgY2FzZSwgdGhlcmUg aXMgbm8gQUJJIHJlcXVpcmVtZW50IHRvIGhpZGUgc3RhbGUgZGF0YQorICogd3JpdHRlbiBwcmV2 aW91c2x5IGJlIHRhc2suCisgKi8KK3ZvaWQgc3ZlX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzaykKK3sKKwlpZiAodGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSkgeworCQltZW1zZXQodGFzay0+ dGhyZWFkLnN2ZV9zdGF0ZSwgMCwgc3ZlX3N0YXRlX3NpemUoY3VycmVudCkpOworCQlyZXR1cm47 CisJfQorCisJLyogVGhpcyBpcyBhIHNtYWxsIGFsbG9jYXRpb24gKG1heGltdW0gfjhLQikgYW5k IFNob3VsZCBOb3QgRmFpbC4gKi8KKwl0YXNrLT50aHJlYWQuc3ZlX3N0YXRlID0KKwkJa3phbGxv YyhzdmVfc3RhdGVfc2l6ZSh0YXNrKSwgR0ZQX0tFUk5FTCk7CisKKwkvKgorCSAqIElmIGZ1dHVy ZSBTVkUgcmV2aXNpb25zIGNhbiBoYXZlIGxhcmdlciB2ZWN0b3JzIHRob3VnaCwKKwkgKiB0aGlz IG1heSBjZWFzZSB0byBiZSB0cnVlOgorCSAqLworCUJVR19PTighdGFzay0+dGhyZWFkLnN2ZV9z dGF0ZSk7Cit9CisKKy8qCisgKiBDYWxsZWQgZnJvbSB0aGUgcHV0X3Rhc2tfc3RydWN0KCkgcGF0 aCwgd2hpY2ggY2Fubm90IGdldCBoZXJlCisgKiB1bmxlc3MgZGVhZF90YXNrIGlzIHJlYWxseSBk ZWFkIGFuZCBub3Qgc2NoZWR1bGFibGUuCisgKi8KK3ZvaWQgZnBzaW1kX3JlbGVhc2VfdGFzayhz dHJ1Y3QgdGFza19zdHJ1Y3QgKmRlYWRfdGFzaykKK3sKKwlfX3N2ZV9mcmVlKGRlYWRfdGFzayk7 Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfQVJNNjRfU1ZFICovCisKKy8qCisgKiBUcmFwcGVkIFNW RSBhY2Nlc3MKKyAqCisgKiBTdG9yYWdlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bGwgU1ZFIHN0 YXRlLCB0aGUgY3VycmVudCBGUFNJTUQKKyAqIHJlZ2lzdGVyIGNvbnRlbnRzIGFyZSBtaWdyYXRl ZCBhY3Jvc3MsIGFuZCBUSUZfU1ZFIGlzIHNldCBzbyB0aGF0CisgKiB0aGUgU1ZFIGFjY2VzcyB0 cmFwIHdpbGwgYmUgZGlzYWJsZWQgdGhlIG5leHQgdGltZSB0aGlzIHRhc2sKKyAqIHJlYWNoZXMg cmV0X3RvX3VzZXIuCisgKgorICogVElGX1NWRSBzaG91bGQgYmUgY2xlYXIgb24gZW50cnk6IG90 aGVyd2lzZSwgdGFza19mcHNpbWRfbG9hZCgpCisgKiB3b3VsZCBoYXZlIGRpc2FibGVkIHRoZSBT VkUgYWNjZXNzIHRyYXAgZm9yIHVzZXJzcGFjZSBkdXJpbmcKKyAqIHJldF90b191c2VyLCBtYWtp bmcgYW4gU1ZFIGFjY2VzcyB0cmFwIGltcG9zc2libGUgaW4gdGhhdCBjYXNlLgorICovCit2b2lk IGRvX3N2ZV9hY2ModW5zaWduZWQgaW50IGVzciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJ LyogRXZlbiBpZiB3ZSBjaG9zZSBub3QgdG8gdXNlIFNWRSwgdGhlIGhhcmR3YXJlIGNvdWxkIHN0 aWxsIHRyYXA6ICovCisJaWYgKHVubGlrZWx5KCFzeXN0ZW1fc3VwcG9ydHNfc3ZlKCkpIHx8IFdB Uk5fT04oaXNfY29tcGF0X3Rhc2soKSkpIHsKKwkJZm9yY2Vfc2lnbmFsX2luamVjdChTSUdJTEws IElMTF9JTExPUEMsIHJlZ3MsIDApOworCQlyZXR1cm47CisJfQorCisJc3ZlX2FsbG9jKGN1cnJl bnQpOworCisJbG9jYWxfYmhfZGlzYWJsZSgpOworCisJdGFza19mcHNpbWRfc2F2ZSgpOworCWZw c2ltZF90b19zdmUoY3VycmVudCk7CisKKwkvKiBGb3JjZSByZXRfdG9fdXNlciB0byByZWxvYWQg dGhlIHJlZ2lzdGVyczogKi8KKwlmcHNpbWRfZmx1c2hfdGFza19zdGF0ZShjdXJyZW50KTsKKwlz ZXRfdGhyZWFkX2ZsYWcoVElGX0ZPUkVJR05fRlBTVEFURSk7CisKKwlpZiAodGVzdF9hbmRfc2V0 X3RocmVhZF9mbGFnKFRJRl9TVkUpKQorCQlXQVJOX09OKDEpOyAvKiBTVkUgYWNjZXNzIHNob3Vs ZG4ndCBoYXZlIHRyYXBwZWQgKi8KKworCWxvY2FsX2JoX2VuYWJsZSgpOworfQorCisvKgogICog VHJhcHBlZCBGUC9BU0lNRCBhY2Nlc3MuCiAgKi8KIHZvaWQgZG9fZnBzaW1kX2FjYyh1bnNpZ25l ZCBpbnQgZXNyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKQEAgLTE0NCw4ICs0MjcsOCBAQCB2b2lk IGZwc2ltZF90aHJlYWRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkKIAkgKiB0aGUg cmVnaXN0ZXJzIGlzIGluIGZhY3QgdGhlIG1vc3QgcmVjZW50IHVzZXJsYW5kIEZQU0lNRCBzdGF0 ZSBvZgogCSAqICdjdXJyZW50Jy4KIAkgKi8KLQlpZiAoY3VycmVudC0+bW0gJiYgIXRlc3RfdGhy ZWFkX2ZsYWcoVElGX0ZPUkVJR05fRlBTVEFURSkpCi0JCWZwc2ltZF9zYXZlX3N0YXRlKCZjdXJy ZW50LT50aHJlYWQuZnBzaW1kX3N0YXRlKTsKKwlpZiAoY3VycmVudC0+bW0pCisJCXRhc2tfZnBz aW1kX3NhdmUoKTsKIAogCWlmIChuZXh0LT5tbSkgewogCQkvKgpAQCAtMTY3LDYgKzQ1MCw4IEBA IHZvaWQgZnBzaW1kX3RocmVhZF9zd2l0Y2goc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KQogCiB2 b2lkIGZwc2ltZF9mbHVzaF90aHJlYWQodm9pZCkKIHsKKwlpbnQgdmw7CisKIAlpZiAoIXN5c3Rl bV9zdXBwb3J0c19mcHNpbWQoKSkKIAkJcmV0dXJuOwogCkBAIC0xNzQsNiArNDU5LDMwIEBAIHZv aWQgZnBzaW1kX2ZsdXNoX3RocmVhZCh2b2lkKQogCiAJbWVtc2V0KCZjdXJyZW50LT50aHJlYWQu ZnBzaW1kX3N0YXRlLCAwLCBzaXplb2Yoc3RydWN0IGZwc2ltZF9zdGF0ZSkpOwogCWZwc2ltZF9m bHVzaF90YXNrX3N0YXRlKGN1cnJlbnQpOworCisJaWYgKHN5c3RlbV9zdXBwb3J0c19zdmUoKSkg eworCQljbGVhcl90aHJlYWRfZmxhZyhUSUZfU1ZFKTsKKwkJc3ZlX2ZyZWUoY3VycmVudCk7CisK KwkJLyoKKwkJICogUmVzZXQgdGhlIHRhc2sgdmVjdG9yIGxlbmd0aCBhcyByZXF1aXJlZC4KKwkJ ICogVGhpcyBpcyB3aGVyZSB3ZSBlbnN1cmUgdGhhdCBhbGwgdXNlciB0YXNrcyBoYXZlIGEgdmFs aWQKKwkJICogdmVjdG9yIGxlbmd0aCBjb25maWd1cmVkOiBubyBrZXJuZWwgdGFzayBjYW4gYmVj b21lIGEgdXNlcgorCQkgKiB0YXNrIHdpdGhvdXQgYW4gZXhlYyBhbmQgaGVuY2UgYSBjYWxsIHRv IHRoaXMgZnVuY3Rpb24uCisJCSAqIElmIGEgYnVnIGNhdXNlcyB0aGlzIHRvIGdvIHdyb25nLCB3 ZSBtYWtlIHNvbWUgbm9pc2UgYW5kCisJCSAqIHRyeSB0byBmdWRnZSB0aHJlYWQuc3ZlX3ZsIHRv IGEgc2FmZSB2YWx1ZSBoZXJlLgorCQkgKi8KKwkJdmwgPSBjdXJyZW50LT50aHJlYWQuc3ZlX3Zs OworCisJCWlmICh2bCA9PSAwKQorCQkJdmwgPSBTVkVfVkxfTUlOOworCisJCWlmIChXQVJOX09O KCFzdmVfdmxfdmFsaWQodmwpKSkKKwkJCXZsID0gU1ZFX1ZMX01JTjsKKworCQljdXJyZW50LT50 aHJlYWQuc3ZlX3ZsID0gdmw7CisJfQorCiAJc2V0X3RocmVhZF9mbGFnKFRJRl9GT1JFSUdOX0ZQ U1RBVEUpOwogCiAJbG9jYWxfYmhfZW5hYmxlKCk7CkBAIC0xODIsNiArNDkxLDkgQEAgdm9pZCBm cHNpbWRfZmx1c2hfdGhyZWFkKHZvaWQpCiAvKgogICogU2F2ZSB0aGUgdXNlcmxhbmQgRlBTSU1E IHN0YXRlIG9mICdjdXJyZW50JyB0byBtZW1vcnksIGJ1dCBvbmx5IGlmIHRoZSBzdGF0ZQogICog Y3VycmVudGx5IGhlbGQgaW4gdGhlIHJlZ2lzdGVycyBkb2VzIGluIGZhY3QgYmVsb25nIHRvICdj dXJyZW50JworICoKKyAqIEN1cnJlbnRseSwgU1ZFIHRhc2tzIGNhbid0IGV4aXN0LCBzbyBqdXN0 IFdBUk4gaW4gdGhhdCBjYXNlLgorICogU3Vic2VxdWVudCBwYXRjaGVzIHdpbGwgYWRkIGZ1bGwg U1ZFIHN1cHBvcnQgaGVyZS4KICAqLwogdm9pZCBmcHNpbWRfcHJlc2VydmVfY3VycmVudF9zdGF0 ZSh2b2lkKQogewpAQCAtMTkzLDYgKzUwNSw4IEBAIHZvaWQgZnBzaW1kX3ByZXNlcnZlX2N1cnJl bnRfc3RhdGUodm9pZCkKIAlpZiAoIXRlc3RfdGhyZWFkX2ZsYWcoVElGX0ZPUkVJR05fRlBTVEFU RSkpCiAJCWZwc2ltZF9zYXZlX3N0YXRlKCZjdXJyZW50LT50aHJlYWQuZnBzaW1kX3N0YXRlKTsK IAorCVdBUk5fT05fT05DRSh0ZXN0X2FuZF9jbGVhcl90aHJlYWRfZmxhZyhUSUZfU1ZFKSk7CisK IAlsb2NhbF9iaF9lbmFibGUoKTsKIH0KIApAQCAtMjExLDcgKzUyNSw3IEBAIHZvaWQgZnBzaW1k X3Jlc3RvcmVfY3VycmVudF9zdGF0ZSh2b2lkKQogCWlmICh0ZXN0X2FuZF9jbGVhcl90aHJlYWRf ZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKSkgewogCQlzdHJ1Y3QgZnBzaW1kX3N0YXRlICpzdCA9 ICZjdXJyZW50LT50aHJlYWQuZnBzaW1kX3N0YXRlOwogCi0JCWZwc2ltZF9sb2FkX3N0YXRlKHN0 KTsKKwkJdGFza19mcHNpbWRfbG9hZCgpOwogCQlfX3RoaXNfY3B1X3dyaXRlKGZwc2ltZF9sYXN0 X3N0YXRlLCBzdCk7CiAJCXN0LT5jcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAJfQpAQCAtMzgw LDggKzY5NCw4IEBAIHN0YXRpYyBpbnQgZnBzaW1kX2NwdV9wbV9ub3RpZmllcihzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgKnNlbGYsCiB7CiAJc3dpdGNoIChjbWQpIHsKIAljYXNlIENQVV9QTV9FTlRF UjoKLQkJaWYgKGN1cnJlbnQtPm1tICYmICF0ZXN0X3RocmVhZF9mbGFnKFRJRl9GT1JFSUdOX0ZQ U1RBVEUpKQotCQkJZnBzaW1kX3NhdmVfc3RhdGUoJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRfc3Rh dGUpOworCQlpZiAoY3VycmVudC0+bW0pCisJCQl0YXNrX2Zwc2ltZF9zYXZlKCk7CiAJCXRoaXNf Y3B1X3dyaXRlKGZwc2ltZF9sYXN0X3N0YXRlLCBOVUxMKTsKIAkJYnJlYWs7CiAJY2FzZSBDUFVf UE1fRVhJVDoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gv YXJtNjQva2VybmVsL3Byb2Nlc3MuYwppbmRleCAyZGMwZjg0Li45YTNjNTYxIDEwMDY0NAotLS0g YS9hcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHJv Y2Vzcy5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8bGludXgvbm90aWZpZXIuaD4KICNp bmNsdWRlIDx0cmFjZS9ldmVudHMvcG93ZXIuaD4KICNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4K KyNpbmNsdWRlIDxsaW51eC90aHJlYWRfaW5mby5oPgogCiAjaW5jbHVkZSA8YXNtL2FsdGVybmF0 aXZlLmg+CiAjaW5jbHVkZSA8YXNtL2NvbXBhdC5oPgpAQCAtMjQxLDExICsyNDIsMjcgQEAgdm9p ZCByZWxlYXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRlYWRfdGFzaykKIHsKIH0KIAor dm9pZCBhcmNoX3JlbGVhc2VfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCit7 CisJZnBzaW1kX3JlbGVhc2VfdGFzayh0c2spOworfQorCisvKgorICogc3JjIGFuZCBkc3QgbWF5 IHRlbXBvcmFyaWx5IGhhdmUgYWxpYXNlZCBzdmVfc3RhdGUgYWZ0ZXIgdGFza19zdHJ1Y3QKKyAq IGlzIGNvcGllZC4gIFdlIGNhbm5vdCBmaXggdGhpcyBwcm9wZXJseSBoZXJlLCBiZWNhdXNlIHNy YyBtYXkgaGF2ZQorICogbGl2ZSBTVkUgc3RhdGUgYW5kIGRzdCdzIHRocmVhZF9pbmZvIG1heSBu b3QgZXhpc3QgeWV0LCBzbyB0d2Vha2luZworICogZWl0aGVyIHNyYydzIG9yIGRzdCdzIFRJRl9T VkUgaXMgbm90IHNhZmUuCisgKgorICogVGhlIHVuYWxpYXNpbmcgaXMgZG9uZSBpbiBjb3B5X3Ro cmVhZCgpIGluc3RlYWQuICBUaGlzIHdvcmtzIGJlY2F1c2UKKyAqIGRzdCBpcyBub3Qgc2NoZWR1 bGFibGUgb3IgdHJhY2VhYmxlIHVudGlsIGJvdGggb2YgdGhlc2UgZnVuY3Rpb25zCisgKiBoYXZl IGJlZW4gY2FsbGVkLgorICovCiBpbnQgYXJjaF9kdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tf c3RydWN0ICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqc3JjKQogewogCWlmIChjdXJyZW50LT5t bSkKIAkJZnBzaW1kX3ByZXNlcnZlX2N1cnJlbnRfc3RhdGUoKTsKIAkqZHN0ID0gKnNyYzsKKwog CXJldHVybiAwOwogfQogCkBAIC0yNTgsNiArMjc1LDEzIEBAIGludCBjb3B5X3RocmVhZCh1bnNp Z25lZCBsb25nIGNsb25lX2ZsYWdzLCB1bnNpZ25lZCBsb25nIHN0YWNrX3N0YXJ0LAogCiAJbWVt c2V0KCZwLT50aHJlYWQuY3B1X2NvbnRleHQsIDAsIHNpemVvZihzdHJ1Y3QgY3B1X2NvbnRleHQp KTsKIAorCS8qCisJICogVW5hbGlhcyBwLT50aHJlYWQuc3ZlX3N0YXRlIChpZiBhbnkpIGZyb20g dGhlIHBhcmVudCB0YXNrCisJICogYW5kIGRpc2FibGUgZGlzY2FyZCBTVkUgc3RhdGUgZm9yIHA6 CisJICovCisJY2xlYXJfdHNrX3RocmVhZF9mbGFnKHAsIFRJRl9TVkUpOworCXAtPnRocmVhZC5z dmVfc3RhdGUgPSBOVUxMOworCiAJaWYgKGxpa2VseSghKHAtPmZsYWdzICYgUEZfS1RIUkVBRCkp KSB7CiAJCSpjaGlsZHJlZ3MgPSAqY3VycmVudF9wdF9yZWdzKCk7CiAJCWNoaWxkcmVncy0+cmVn c1swXSA9IDA7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jIGIvYXJjaC9h cm02NC9rZXJuZWwvdHJhcHMuYwppbmRleCAyMGZiZTQyLi43NzQxZGM5IDEwMDY0NAotLS0gYS9h cmNoL2FybTY0L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMK QEAgLTM2OSw4ICszNjksOCBAQCBzdGF0aWMgaW50IGNhbGxfdW5kZWZfaG9vayhzdHJ1Y3QgcHRf cmVncyAqcmVncykKIAlyZXR1cm4gZm4gPyBmbihyZWdzLCBpbnN0cikgOiAxOwogfQogCi1zdGF0 aWMgdm9pZCBmb3JjZV9zaWduYWxfaW5qZWN0KGludCBzaWduYWwsIGludCBjb2RlLCBzdHJ1Y3Qg cHRfcmVncyAqcmVncywKLQkJCQl1bnNpZ25lZCBsb25nIGFkZHJlc3MpCit2b2lkIGZvcmNlX3Np Z25hbF9pbmplY3QoaW50IHNpZ25hbCwgaW50IGNvZGUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAor CQkJIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKIHsKIAlzaWdpbmZvX3QgaW5mbzsKIAl2b2lkIF9f dXNlciAqcGMgPSAodm9pZCBfX3VzZXIgKilpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOwpAQCAt Mzg0LDcgKzM4NCw3IEBAIHN0YXRpYyB2b2lkIGZvcmNlX3NpZ25hbF9pbmplY3QoaW50IHNpZ25h bCwgaW50IGNvZGUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCQlkZXNjID0gImlsbGVnYWwgbWVt b3J5IGFjY2VzcyI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRlc2MgPSAiYmFkIG1vZGUiOwor CQlkZXNjID0gInVua25vd24gb3IgdW5yZWNvdmVyYWJsZSBlcnJvciI7CiAJCWJyZWFrOwogCX0K IAotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRw czovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo=