From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DA44C433E0 for ; Wed, 24 Jun 2020 23:03:50 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E49342076E for ; Wed, 24 Jun 2020 23:03:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EPEtDiTA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E49342076E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 527B46E12C; Wed, 24 Jun 2020 23:03:49 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id C68816E27F for ; Wed, 24 Jun 2020 23:03:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593039824; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Hq1N8ryINKC77ee1ckBmLAjzov+DIfHIImbKwxyc3dA=; b=EPEtDiTAgDQ2iVTaeHA1QZrzAYF43VowBF0NhTIc+/3P8iiXC+wZdb3SD7uPZ+XqmEofly NfvLWu3mM1LYw2h9MjG/xYsaVgquTenpvk5B2HzQ6EQyuVFGxauUp4Ld0gvSS6UAblx9Md PbQSHrTXc6h1VCoLYlD6BsjVCHkxrh0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-252-wiQ_I4PnO3u3ojv9_sI_oA-1; Wed, 24 Jun 2020 19:03:41 -0400 X-MC-Unique: wiQ_I4PnO3u3ojv9_sI_oA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 85CB2802ED4; Wed, 24 Jun 2020 23:03:37 +0000 (UTC) Received: from Whitewolf.redhat.com (ovpn-115-214.rdu2.redhat.com [10.10.115.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id D84AA1001B07; Wed, 24 Jun 2020 23:03:35 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Subject: [RFC v7 03/11] drm/vblank: Add vblank works Date: Wed, 24 Jun 2020 19:03:10 -0400 Message-Id: <20200624230318.126256-4-lyude@redhat.com> In-Reply-To: <20200624230318.126256-1-lyude@redhat.com> References: <20200624230318.126256-1-lyude@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Zimmermann , Jonathan Corbet , David Airlie , "open list:DOCUMENTATION" , open list , Tejun Heo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIHNvbWUga2luZCBvZiB2Ymxhbmsgd29ya2Vycy4gVGhlIGludGVyZmFjZSBpcyBzaW1pbGFy IHRvIHJlZ3VsYXIKZGVsYXllZCB3b3JrcywgYW5kIGlzIG1vc3RseSBiYXNlZCBvZmYga3RocmVh ZF93b3JrLiBJdCBhbGxvd3MgZm9yCnNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyB0aGF0IGV4ZWN1 dGUgb25jZSBhIHBhcnRpY3VsYXIgdmJsYW5rIHNlcXVlbmNlCmhhcyBwYXNzZWQuIEl0IGFsc28g YWxsb3dzIGZvciBhY2N1cmF0ZSBmbHVzaGluZyBvZiBzY2hlZHVsZWQgdmJsYW5rCndvcmtzIC0g aW4gdGhhdCBmbHVzaGluZyB3YWl0cyBmb3IgYm90aCB0aGUgdmJsYW5rIHNlcXVlbmNlIGFuZCBq b2IKZXhlY3V0aW9uIHRvIGNvbXBsZXRlLCBvciBmb3IgdGhlIHdvcmsgdG8gZ2V0IGNhbmNlbGxl ZCAtIHdoaWNoZXZlcgpjb21lcyBmaXJzdC4KCldoYXRldmVyIGhhcmR3YXJlIHByb2dyYW1taW5n IHdlIGRvIGluIHRoZSB3b3JrIG11c3QgYmUgZmFzdCAobXVzdCBhdApsZWFzdCBjb21wbGV0ZSBk dXJpbmcgdGhlIHZibGFuayBvciBzY2Fub3V0IHBlcmlvZCwgc29tZXRpbWVzIGR1cmluZyB0aGUK Zmlyc3QgZmV3IHNjYW5saW5lcyBvZiB0aGUgdmJsYW5rKS4gQXMgc3VjaCB3ZSB1c2UgYSBoaWdo LXByaW9yaXR5CnBlci1DUlRDIHRocmVhZCB0byBhY2NvbXBsaXNoIHRoaXMuCgpDaGFuZ2VzIHNp bmNlIHY2OgoqIEdldCByaWQgb2YgLT5wZW5kaW5nIGFuZCBzZXFjb3VudHMsIGFuZCBpbXBsZW1l bnQgZmx1c2hpbmcgdGhyb3VnaAogIHNpbXBsZXIgbWVhbnMgLSBkYW52ZXQKKiBHZXQgcmlkIG9m IHdvcmtfbG9jaywganVzdCB1c2UgZHJtX2RldmljZS0+ZXZlbnRfbG9jawoqIE1vdmUgZHJtX3Zi bGFua193b3JrIGl0ZW0gY2xlYW51cCBpbnRvIGRybV9jcnRjX3ZibGFua19vZmYoKSBzbyB0aGF0 CiAgd2UgZW5zdXJlIHRoYXQgYWxsIHZibGFuayB3b3JrIGhhcyBmaW5pc2hlZCBiZWZvcmUgZGlz YWJsaW5nIHZibGFua3MKKiBBZGQgY2hlY2tzIGludG8gZHJtX2NydGNfdmJsYW5rX3Jlc2V0KCkg c28gd2UgeWVsbCBpZiBpdCBnZXRzIGNhbGxlZAogIHdoaWxlIHRoZXJlJ3MgdmJsYW5rIHdvcmtl cnMgYWN0aXZlCiogR3JhYiBldmVudF9sb2NrIGluIGJvdGggZHJtX2NydGNfdmJsYW5rX29uKCkv ZHJtX2NydGNfdmJsYW5rX29mZigpLAogIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcyBpcyBzbyB0 aGF0IG90aGVyIHRocmVhZHMgY2FsbGluZwogIGRybV92Ymxhbmtfd29ya19zY2hlZHVsZSgpIGFy ZSBibG9ja2VkIGZyb20gYXR0ZW1wdGluZyB0byBzY2hlZHVsZQogIHdoaWxlIHdlJ3JlIGluIHRo ZSBtaWRkbGUgb2YgZW5hYmxpbmcvZGlzYWJsaW5nIHZibGFua3MuCiogTW92ZSBkcm1faGFuZGxl X3ZibGFua193b3JrcygpIGNhbGwgYmVsb3cgZHJtX2hhbmRsZV92YmxhbmtfZXZlbnRzKCkKKiBT aW1wbGlmeSBkcm1fdmJsYW5rX3dvcmtfY2FuY2VsX3N5bmMoKQoqIEZpeCBkcm1fdmJsYW5rX3dv cmtfY2FuY2VsX3N5bmMoKSBkb2N1bWVudGF0aW9uCiogTW92ZSB3YWtlX3VwX2FsbCgpIGNhbGxz IG91dCBvZiBzcGlubG9jayB3aGVyZSB3ZSBjYW4uIFRoZSBvbmx5IG9uZSBJCiAgbGVmdCB3YXMg dGhlIGNhbGwgdG8gd2FrZV91cF9hbGwoKSBpbiBkcm1fdmJsYW5rX2hhbmRsZV93b3JrcygpIGFz CiAgdGhpcyBzZWVtZWQgbGlrZSBpdCBtYWRlIG1vcmUgc2Vuc2UganVzdCBsaXZpbmcgaW4gdGhh dCBmdW5jdGlvbgogICh3aGljaCBpcyBhbGwgdGVjaG5pY2FsbHkgdW5kZXIgbG9jaykKKiBNb3Zl IGRybV92Ymxhbmtfd29yayByZWxhdGVkIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBzb3VyY2Ug ZmlsZXMKKiBBZGQgZHJtX3ZibGFua19pbnRlcm5hbC5oIHNvIHdlIGNhbiBleHBvcnQgc29tZSBm dW5jdGlvbnMgd2UgZG9uJ3QKICB3YW50IGRyaXZlcnMgdXNpbmcsIGJ1dCB0aGF0IHdlIGRvIG5l ZWQgdG8gdXNlIGluIGRybV92Ymxhbmtfd29yay5jCiogQWRkIGEgYnVuY2ggb2YgZG9jdW1lbnRh dGlvbgpDaGFuZ2VzIHNpbmNlIHY0OgoqIEdldCByaWQgb2Yga3RocmVhZCBpbnRlcmZhY2VzIHdl IHRyaWVkIGFkZGluZyBhbmQgbW92ZSBhbGwgb2YgdGhlCiAgbG9ja2luZyBpbnRvIGRybV92Ymxh bmsuYy4gRm9yIGltcGxlbWVudGluZyBkcm1fdmJsYW5rX3dvcmtfZmx1c2goKSwKICB3ZSBub3cg dXNlIGEgd2FpdF9xdWV1ZSBhbmQgc2VxdWVuY2UgY291bnRlcnMgaW4gb3JkZXIgdG8KICBkaWZm ZXJlbnRpYXRlIGJldHdlZW4gbXVsdGlwbGUgd29yayBpdGVtIGV4ZWN1dGlvbnMuCiogR2V0IHJp ZCBvZiBkcm1fdmJsYW5rX3dvcmtfY2FuY2VsKCkgLSB0aGlzIHdvdWxkIGhhdmUgYmVlbiBwcmV0 dHkKICBkaWZmaWN1bHQgdG8gYWN0dWFsbHkgcmVpbXBsZW1lbnQgYW5kIGl0IG9jY3VycmVkIHRv IG1lIHRoYXQgbmVpdGhlcgogIG5vdXZlYXUgb3IgaTkxNSBhcmUgZXZlbiBwbGFubmluZyB0byB1 c2UgdGhpcyBmdW5jdGlvbi4gU2luY2UgdGhlcmUncwogIGFsc28gbm8gYXN5bmMgY2FuY2VsIGZ1 bmN0aW9uIGZvciBtb3N0IG9mIHRoZSB3b3JrIGludGVyZmFjZXMgaW4gdGhlCiAga2VybmVsLCBp dCBzZWVtcyBhIGJpdCB1bm5lY2Vzc2FyeSBhbnl3YXkuCiogR2V0IHJpZCBvZiB0b19kcm1fdmJs YW5rX3dvcmsoKSBzaW5jZSB3ZSBub3cgYXJlIGFsc28gYWJsZSB0byBqdXN0CiAgcGFzcyB0aGUg c3RydWN0IGRybV92Ymxhbmtfd29yayB0byB3b3JrIGl0ZW0gY2FsbGJhY2tzIGFueXdheQpDaGFu Z2VzIHNpbmNlIHYzOgoqIFVzZSBvdXIgb3duIHNwaW5sb2NrcywgZG9uJ3QgaW50ZWdyYXRlIHNv IHRpZ2h0bHkgd2l0aCBrdGhyZWFkX3dvcmtzCkNoYW5nZXMgc2luY2UgdjI6CiogVXNlIGt0aHJl YWRfd29ya2VycyBpbnN0ZWFkIG9mIHJlaW52ZW50aW5nIHRoZSB3aGVlbC4KCkNjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+CkNjOiBUZWp1biBIZW8gPHRqQGtlcm5lbC5vcmc+CkNj OiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBub3V2ZWF1QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpDby1kZXZlbG9wZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhh dC5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QgICAgICAgICAgICAgIHwg IDE1ICsrCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgICAgICAgICAgICAgICB8ICA1NSArKyst LQogZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmtfaW50ZXJuYWwuaCAgICAgIHwgIDE5ICsrCiBk cml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFua193b3JrLmMgICAgICAgICAgfCAyNTkgKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFua193b3JrX2ludGVybmFsLmgg fCAgMjQgKysKIGluY2x1ZGUvZHJtL2RybV92YmxhbmsuaCAgICAgICAgICAgICAgICAgICB8ICAy MCArKwogaW5jbHVkZS9kcm0vZHJtX3ZibGFua193b3JrLmggICAgICAgICAgICAgIHwgIDcxICsr KysrKwogOCBmaWxlcyBjaGFuZ2VkLCA0NDcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmtfaW50ZXJuYWwu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rX3dvcmsuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rX3dvcmtfaW50ZXJu YWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV92Ymxhbmtfd29yay5oCgpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QgYi9Eb2N1bWVudGF0aW9u L2dwdS9kcm0ta21zLnJzdAppbmRleCA5NzVjZmViOGEzNTMyLi4zYzVhZTRmNmRmZDIzIDEwMDY0 NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdAorKysgYi9Eb2N1bWVudGF0aW9u L2dwdS9kcm0ta21zLnJzdApAQCAtNTQzLDMgKzU0MywxOCBAQCBWZXJ0aWNhbCBCbGFua2luZyBh bmQgSW50ZXJydXB0IEhhbmRsaW5nIEZ1bmN0aW9ucyBSZWZlcmVuY2UKIAogLi4ga2VybmVsLWRv Yzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKICAgIDpleHBvcnQ6CisKK1ZlcnRpY2Fs IEJsYW5rIFdvcmsKKz09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZl cnMvZ3B1L2RybS9kcm1fdmJsYW5rX3dvcmsuYworICAgOmRvYzogdmJsYW5rIHdvcmtzCisKK1Zl cnRpY2FsIEJsYW5rIFdvcmsgRnVuY3Rpb25zIFJlZmVyZW5jZQorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1f dmJsYW5rX3dvcmsuaAorICAgOmludGVybmFsOgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9n cHUvZHJtL2RybV92Ymxhbmtfd29yay5jCisgICA6ZXhwb3J0OgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDJjMGU1 YTdlNTk1MzYuLjAyZWU1ZmFmMWE5MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTE4LDcgKzE4LDcgQEAgZHJt LXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1fY2FjaGUubyBcCiAJCWRybV9kdW1iX2J1ZmZlcnMu byBkcm1fbW9kZV9jb25maWcubyBkcm1fdmJsYW5rLm8gXAogCQlkcm1fc3luY29iai5vIGRybV9s ZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAogCQlkcm1fY2xpZW50X21vZGVz ZXQubyBkcm1fYXRvbWljX3VhcGkubyBkcm1faGRjcC5vIFwKLQkJZHJtX21hbmFnZWQubworCQlk cm1fbWFuYWdlZC5vIGRybV92Ymxhbmtfd29yay5vCiAKIGRybS0kKENPTkZJR19EUk1fTEVHQUNZ KSArPSBkcm1fbGVnYWN5X21pc2MubyBkcm1fYnVmcy5vIGRybV9jb250ZXh0Lm8gZHJtX2RtYS5v IGRybV9zY2F0dGVyLm8gZHJtX2xvY2subwogZHJtLSQoQ09ORklHX0RSTV9MSUJfUkFORE9NKSAr PSBsaWIvZHJtX3JhbmRvbS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFu ay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBlODk1ZjUzMzFmZGI0Li5i MzUzYmM4MzI4NDE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTI1LDYgKzI1LDcgQEAKICAqLwog CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgog I2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KQEAgLTM3LDYgKzM4LDggQEAKIAogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogI2luY2x1 ZGUgImRybV90cmFjZS5oIgorI2luY2x1ZGUgImRybV92YmxhbmtfaW50ZXJuYWwuaCIKKyNpbmNs dWRlICJkcm1fdmJsYW5rX3dvcmtfaW50ZXJuYWwuaCIKIAogLyoqCiAgKiBET0M6IHZibGFuayBo YW5kbGluZwpAQCAtMzYzLDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5r X2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCXN0b3Jl X3ZibGFuayhkZXYsIHBpcGUsIGRpZmYsIHRfdmJsYW5rLCBjdXJfdmJsYW5rKTsKIH0KIAotc3Rh dGljIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlKQordTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHBpcGUpCiB7CiAJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0g JmRldi0+dmJsYW5rW3BpcGVdOwogCXU2NCBjb3VudDsKQEAgLTQ5Nyw2ICs1MDAsNyBAQCBzdGF0 aWMgdm9pZCBkcm1fdmJsYW5rX2luaXRfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpwdHIpCiAJZHJtX1dBUk5fT04oZGV2LCBSRUFEX09OQ0UodmJsYW5rLT5lbmFibGVkKSAm JgogCQkgICAgZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSk7CiAK Kwlkcm1fdmJsYW5rX2Rlc3Ryb3lfd29ya2VyKHZibGFuayk7CiAJZGVsX3RpbWVyX3N5bmMoJnZi bGFuay0+ZGlzYWJsZV90aW1lcik7CiB9CiAKQEAgLTUzOSw2ICs1NDMsMTAgQEAgaW50IGRybV92 YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnVtX2NydGNz KQogCQkJCQkgICAgICAgdmJsYW5rKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CisKKwkJ cmV0ID0gZHJtX3ZibGFua193b3JrZXJfaW5pdCh2YmxhbmspOworCQlpZiAocmV0KQorCQkJcmV0 dXJuIHJldDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTExMzUsNyArMTE0Myw3IEBAIHN0YXRpYyBp bnQgZHJtX3ZibGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBkcm1fdmJsYW5rX2dldChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKK2ludCBkcm1fdmJsYW5rX2dl dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKIAlzdHJ1Y3Qg ZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07CiAJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKQEAgLTExNzgsNyArMTE4Niw3IEBAIGludCBkcm1fY3J0Y192Ymxhbmtf Z2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJs YW5rX2dldCk7CiAKLXN0YXRpYyB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQordm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKIAlzdHJ1Y3QgZHJtX3ZibGFua19j cnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07CiAKQEAgLTEyODEsMTMgKzEyODksMTYg QEAgdm9pZCBkcm1fY3J0Y192Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl1bnNp Z25lZCBpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpOwogCXN0cnVjdCBkcm1fdmJsYW5r X2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKIAlzdHJ1Y3QgZHJtX3BlbmRpbmdf dmJsYW5rX2V2ZW50ICplLCAqdDsKLQogCWt0aW1lX3Qgbm93OwogCXU2NCBzZXE7CiAKIAlpZiAo ZHJtX1dBUk5fT04oZGV2LCBwaXBlID49IGRldi0+bnVtX2NydGNzKSkKIAkJcmV0dXJuOwogCisJ LyoKKwkgKiBHcmFiIGV2ZW50X2xvY2sgZWFybHkgdG8gcHJldmVudCB2Ymxhbmsgd29yayBmcm9t IGJlaW5nIHNjaGVkdWxlZAorCSAqIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2Ygc2h1dHRp bmcgZG93biB2YmxhbmsgaW50ZXJydXB0cworCSAqLwogCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZl bnRfbG9jayk7CiAKIAlzcGluX2xvY2soJmRldi0+dmJsX2xvY2spOwpAQCAtMTMyNCwxMSArMTMz NSwxOCBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19vZmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQog CQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwogCQlzZW5kX3ZibGFua19ldmVudChkZXYsIGUs IHNlcSwgbm93KTsKIAl9CisKKwkvKiBDYW5jZWwgYW55IGxlZnRvdmVyIHBlbmRpbmcgdmJsYW5r IHdvcmsgKi8KKwlkcm1fdmJsYW5rX2NhbmNlbF9wZW5kaW5nX3dvcmtzKHZibGFuayk7CisKIAlz cGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CiAKIAkvKiBXaWxsIGJlIHJlc2V0IGJ5 IHRoZSBtb2Rlc2V0IGhlbHBlcnMgd2hlbiByZS1lbmFibGluZyB0aGUgY3J0YyBieQogCSAqIGNh bGxpbmcgZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0YW50cygpLiAqLwogCXZibGFuay0+aHdt b2RlLmNydGNfY2xvY2sgPSAwOworCisJLyogV2FpdCBmb3IgYW55IHZibGFuayB3b3JrIHRoYXQn cyBzdGlsbCBleGVjdXRpbmcgdG8gZmluaXNoICovCisJZHJtX3ZibGFua19mbHVzaF93b3JrZXIo dmJsYW5rKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX29mZik7CiAKQEAgLTEz NjMsNiArMTM4MSw3IEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3Jlc2V0KHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFn cyk7CiAKIAlkcm1fV0FSTl9PTihkZXYsICFsaXN0X2VtcHR5KCZkZXYtPnZibGFua19ldmVudF9s aXN0KSk7CisJZHJtX1dBUk5fT04oZGV2LCAhbGlzdF9lbXB0eSgmdmJsYW5rLT5wZW5kaW5nX3dv cmspKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3Jlc2V0KTsKIApAQCAtMTQx Nyw3ICsxNDM2LDEwIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX29uKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAlpZiAoZHJtX1dBUk5fT04oZGV2LCBwaXBlID49IGRldi0+bnVtX2NydGNzKSkKIAkJ cmV0dXJuOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsK KwkvKiBTbyB2Ymxhbmsgd29ya3MgY2FuJ3QgYmUgc2NoZWR1bGVkIHVudGlsIHdlJ3ZlIGZpbmlz aGVkICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwor CisJc3Bpbl9sb2NrKCZkZXYtPnZibF9sb2NrKTsKIAlkcm1fZGJnX3ZibChkZXYsICJjcnRjICVk LCB2YmxhbmsgZW5hYmxlZCAlZCwgaW5tb2Rlc2V0ICVkXG4iLAogCQkgICAgcGlwZSwgdmJsYW5r LT5lbmFibGVkLCB2YmxhbmstPmlubW9kZXNldCk7CiAKQEAgLTE0MzUsNyArMTQ1Nyw5IEBAIHZv aWQgZHJtX2NydGNfdmJsYW5rX29uKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkgKi8KIAlpZiAo YXRvbWljX3JlYWQoJnZibGFuay0+cmVmY291bnQpICE9IDAgfHwgZHJtX3ZibGFua19vZmZkZWxh eSA9PSAwKQogCQlkcm1fV0FSTl9PTihkZXYsIGRybV92YmxhbmtfZW5hYmxlKGRldiwgcGlwZSkp OwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKKwor CXNwaW5fdW5sb2NrKCZkZXYtPnZibF9sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXYtPmV2ZW50X2xvY2ssIGlycWZsYWdzKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJs YW5rX29uKTsKIApAQCAtMTU4OSwxMSArMTYxMyw2IEBAIGludCBkcm1fbGVnYWN5X21vZGVzZXRf Y3RsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB2YmxhbmtfcGFzc2VkKHU2NCBzZXEsIHU2NCByZWYp Ci17Ci0JcmV0dXJuIChzZXEgLSByZWYpIDw9ICgxIDw8IDIzKTsKLX0KLQogc3RhdGljIGludCBk cm1fcXVldWVfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBwaXBlLAogCQkJCSAgdTY0IHJlcV9zZXEsCiAJCQkJICB1bmlvbiBkcm1fd2FpdF92Ymxhbmsg KnZibHdhaXQsCkBAIC0xNjUwLDcgKzE2NjksNyBAQCBzdGF0aWMgaW50IGRybV9xdWV1ZV92Ymxh bmtfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJdHJh Y2VfZHJtX3ZibGFua19ldmVudF9xdWV1ZWQoZmlsZV9wcml2LCBwaXBlLCByZXFfc2VxKTsKIAog CWUtPnNlcXVlbmNlID0gcmVxX3NlcTsKLQlpZiAodmJsYW5rX3Bhc3NlZChzZXEsIHJlcV9zZXEp KSB7CisJaWYgKGRybV92YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkpIHsKIAkJZHJtX3ZibGFu a19wdXQoZGV2LCBwaXBlKTsKIAkJc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBlLCBzZXEsIG5vdyk7 CiAJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gc2VxOwpAQCAtMTgwNSw3ICsxODI0LDcgQEAg aW50IGRybV93YWl0X3ZibGFua19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCX0KIAogCWlmICgoZmxhZ3MgJiBfRFJNX1ZCTEFOS19ORVhUT05NSVNTKSAmJgotCSAg ICB2YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkpIHsKKwkgICAgZHJtX3ZibGFua19wYXNzZWQo c2VxLCByZXFfc2VxKSkgewogCQlyZXFfc2VxID0gc2VxICsgMTsKIAkJdmJsd2FpdC0+cmVxdWVz dC50eXBlICY9IH5fRFJNX1ZCTEFOS19ORVhUT05NSVNTOwogCQl2Ymx3YWl0LT5yZXF1ZXN0LnNl cXVlbmNlID0gcmVxX3NlcTsKQEAgLTE4MjQsNyArMTg0Myw3IEBAIGludCBkcm1fd2FpdF92Ymxh bmtfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZHJtX2RiZ19j b3JlKGRldiwgIndhaXRpbmcgb24gdmJsYW5rIGNvdW50ICVsbHUsIGNydGMgJXVcbiIsCiAJCQkg ICAgIHJlcV9zZXEsIHBpcGUpOwogCQl3YWl0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3Rp bWVvdXQodmJsYW5rLT5xdWV1ZSwKLQkJCXZibGFua19wYXNzZWQoZHJtX3ZibGFua19jb3VudChk ZXYsIHBpcGUpLCByZXFfc2VxKSB8fAorCQkJZHJtX3ZibGFua19wYXNzZWQoZHJtX3ZibGFua19j b3VudChkZXYsIHBpcGUpLCByZXFfc2VxKSB8fAogCQkJCSAgICAgICFSRUFEX09OQ0UodmJsYW5r LT5lbmFibGVkKSwKIAkJCW1zZWNzX3RvX2ppZmZpZXMoMzAwMCkpOwogCkBAIC0xODczLDcgKzE4 OTIsNyBAQCBzdGF0aWMgdm9pZCBkcm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZl KGUsIHQsICZkZXYtPnZibGFua19ldmVudF9saXN0LCBiYXNlLmxpbmspIHsKIAkJaWYgKGUtPnBp cGUgIT0gcGlwZSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoIXZibGFua19wYXNzZWQoc2VxLCBlLT5z ZXF1ZW5jZSkpCisJCWlmICghZHJtX3ZibGFua19wYXNzZWQoc2VxLCBlLT5zZXF1ZW5jZSkpCiAJ CQljb250aW51ZTsKIAogCQlkcm1fZGJnX2NvcmUoZGV2LCAidmJsYW5rIGV2ZW50IG9uICVsbHUs IGN1cnJlbnQgJWxsdVxuIiwKQEAgLTE5NDMsNiArMTk2Miw3IEBAIGJvb2wgZHJtX2hhbmRsZV92 Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJCSAgICAg ICAhYXRvbWljX3JlYWQoJnZibGFuay0+cmVmY291bnQpKTsKIAogCWRybV9oYW5kbGVfdmJsYW5r X2V2ZW50cyhkZXYsIHBpcGUpOworCWRybV9oYW5kbGVfdmJsYW5rX3dvcmtzKHZibGFuayk7CiAK IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGlycWZsYWdzKTsKIApA QCAtMjA5Niw3ICsyMTE2LDcgQEAgaW50IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKGZsYWdzICYgRFJNX0NSVENf U0VRVUVOQ0VfUkVMQVRJVkUpCiAJCXJlcV9zZXEgKz0gc2VxOwogCi0JaWYgKChmbGFncyAmIERS TV9DUlRDX1NFUVVFTkNFX05FWFRfT05fTUlTUykgJiYgdmJsYW5rX3Bhc3NlZChzZXEsIHJlcV9z ZXEpKQorCWlmICgoZmxhZ3MgJiBEUk1fQ1JUQ19TRVFVRU5DRV9ORVhUX09OX01JU1MpICYmIGRy bV92YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkpCiAJCXJlcV9zZXEgPSBzZXEgKyAxOwogCiAJ ZS0+cGlwZSA9IHBpcGU7CkBAIC0yMTI1LDcgKzIxNDUsNyBAQCBpbnQgZHJtX2NydGNfcXVldWVf c2VxdWVuY2VfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCWUt PnNlcXVlbmNlID0gcmVxX3NlcTsKIAotCWlmICh2YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkp IHsKKwlpZiAoZHJtX3ZibGFua19wYXNzZWQoc2VxLCByZXFfc2VxKSkgewogCQlkcm1fY3J0Y192 YmxhbmtfcHV0KGNydGMpOwogCQlzZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgbm93KTsK IAkJcXVldWVfc2VxLT5zZXF1ZW5jZSA9IHNlcTsKQEAgLTIxNDUsMyArMjE2NSw0IEBAIGludCBk cm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCWtmcmVlKGUpOwogCXJldHVybiByZXQ7CiB9CisKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fdmJsYW5rX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Zi bGFua19pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LjIxN2FlNTQ0MmRkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Zi bGFua19pbnRlcm5hbC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQKKworI2lmbmRlZiBEUk1fVkJMQU5LX0lOVEVSTkFMX0gKKyNkZWZpbmUgRFJNX1ZC TEFOS19JTlRFUk5BTF9ICisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjaW5jbHVkZSA8 ZHJtL2RybV9kZXZpY2UuaD4KKworc3RhdGljIGlubGluZSBib29sIGRybV92YmxhbmtfcGFzc2Vk KHU2NCBzZXEsIHU2NCByZWYpCit7CisJcmV0dXJuIChzZXEgLSByZWYpIDw9ICgxIDw8IDIzKTsK K30KKworaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlKTsKK3ZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHBpcGUpOwordTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOworCisjZW5kaWYgLyogIURSTV9WQkxBTktfSU5U RVJOQUxfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92Ymxhbmtfd29yay5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV92Ymxhbmtfd29yay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAuLjA3NjJhZDM0Y2RjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFua193b3JrLmMKQEAgLTAsMCArMSwyNTkgQEAKKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKworI2luY2x1ZGUgPHVhcGkvbGludXgvc2NoZWQv dHlwZXMuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X3ZibGFuay5oPgorI2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rX3dvcmsuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2NydGMuaD4KKworI2luY2x1ZGUgImRybV92YmxhbmtfaW50ZXJuYWwuaCIKKyNpbmNs dWRlICJkcm1fdmJsYW5rX3dvcmtfaW50ZXJuYWwuaCIKKworLyoqCisgKiBET0M6IHZibGFuayB3 b3JrcworICoKKyAqIE1hbnkgRFJNIGRyaXZlcnMgbmVlZCB0byBwcm9ncmFtIGhhcmR3YXJlIGlu IGEgdGltZS1zZW5zaXRpdmUgbWFubmVyLCBtYW55CisgKiB0aW1lcyB3aXRoIGEgZGVhZGxpbmUg b2Ygc3RhcnRpbmcgYW5kIGZpbmlzaGluZyB3aXRoaW4gYSBjZXJ0YWluIHJlZ2lvbiBvZgorICog dGhlIHNjYW5vdXQuIE1vc3Qgb2YgdGhlIHRpbWUgdGhlIHNhZmVzdCB3YXkgdG8gYWNjb21wbGlz aCB0aGlzIGlzIHRvCisgKiBzaW1wbHkgZG8gc2FpZCB0aW1lLXNlbnNpdGl2ZSBwcm9ncmFtbWlu ZyBpbiB0aGUgZHJpdmVyJ3MgSVJRIGhhbmRsZXIsCisgKiB3aGljaCBhbGxvd3MgZHJpdmVycyB0 byBhdm9pZCBiZWluZyBwcmVlbXB0ZWQgZHVyaW5nIHRoZXNlIGNyaXRpY2FsCisgKiByZWdpb25z LiBPciBldmVuIGJldHRlciwgdGhlIGhhcmR3YXJlIG1heSBldmVuIGhhbmRsZSBhcHBseWluZyBz dWNoCisgKiB0aW1lLWNyaXRpY2FsIHByb2dyYW1taW5nIGluZGVwZW5kZW50bHkgb2YgdGhlIENQ VS4KKyAqCisgKiBXaGlsZSB0aGVyZSdzIGEgZGVjZW50IGFtb3VudCBvZiBoYXJkd2FyZSB0aGF0 J3MgZGVzaWduZWQgc28gdGhhdCB0aGUgQ1BVCisgKiBkb2Vzbid0IG5lZWQgdG8gYmUgY29uY2Vy bmVkIHdpdGggZXh0cmVtZWx5IHRpbWUtc2Vuc2l0aXZlIHByb2dyYW1taW5nLAorICogdGhlcmUn cyBhIGZldyBzaXR1YXRpb25zIHdoZXJlIGl0IGNhbid0IGJlIGhlbHBlZC4gU29tZSB1bmZvcmdp dmluZworICogaGFyZHdhcmUgbWF5IHJlcXVpcmUgdGhhdCBjZXJ0YWluIHRpbWUtc2Vuc2l0aXZl IHByb2dyYW1taW5nIGJlIGhhbmRsZWQKKyAqIGNvbXBsZXRlbHkgYnkgdGhlIENQVSwgYW5kIHNh aWQgcHJvZ3JhbW1pbmcgbWF5IGV2ZW4gdGFrZSB0b28gbG9uZyB0bworICogaGFuZGxlIGluIGFu IElSUSBoYW5kbGVyLiBBbm90aGVyIHN1Y2ggc2l0dWF0aW9uIHdvdWxkIGJlIHdoZXJlIHRoZSBk cml2ZXIKKyAqIG5lZWRzIHRvIHBlcmZvcm0gYSB0YXNrIHRoYXQgbmVlZHMgdG8gY29tcGxldGUg d2l0aGluIGEgc3BlY2lmaWMgc2Nhbm91dAorICogcGVyaW9kLCBidXQgbWlnaHQgcG9zc2libHkg YmxvY2sgYW5kIHRodXMgY2Fubm90IGJlIGhhbmRsZWQgaW4gYW4gSVJRCisgKiBjb250ZXh0LiBC b3RoIG9mIHRoZXNlIHNpdHVhdGlvbnMgY2FuJ3QgYmUgc29sdmVkIHBlcmZlY3RseSBpbiBMaW51 eCBzaW5jZQorICogd2UncmUgbm90IGEgcmVhbHRpbWUga2VybmVsLCBhbmQgdGh1cyB0aGUgc2No ZWR1bGVyIG1heSBjYXVzZSB1cyB0byBtaXNzCisgKiBvdXIgZGVhZGxpbmUgaWYgaXQgZGVjaWRl cyB0byBwcmVlbXB0IHVzLiBCdXQgZm9yIHNvbWUgZHJpdmVycywgaXQncyBnb29kCisgKiBlbm91 Z2ggaWYgd2UgY2FuIGxvd2VyIG91ciBjaGFuY2Ugb2YgYmVpbmcgcHJlZW1wdGVkIHRvIGFuIGFi c29sdXRlCisgKiBtaW5pbXVtLgorICoKKyAqIFRoaXMgaXMgd2hlcmUgJmRybV92Ymxhbmtfd29y ayBjb21lcyBpbi4gJmRybV92Ymxhbmtfd29yayBwcm92aWRlcyBhIHNpbXBsZQorICogZ2VuZXJp YyBkZWxheWVkIHdvcmsgaW1wbGVtZW50YXRpb24gd2hpY2ggZGVsYXlzIHdvcmsgZXhlY3V0aW9u IHVudGlsIGEKKyAqIHBhcnRpY3VsYXIgdmJsYW5rIGhhcyBwYXNzZWQsIGFuZCB0aGVuIGV4ZWN1 dGVzIHRoZSB3b3JrIGF0IHJlYWx0aW1lCisgKiBwcmlvcml0eS4gVGhpcyBwcm92aWRlcyB0aGUg YmVzdCBwb3NzaWJsZSBjaGFuY2UgYXQgcGVyZm9ybWluZworICogdGltZS1zZW5zaXRpdmUgaGFy ZHdhcmUgcHJvZ3JhbW1pbmcgb24gdGltZSwgZXZlbiB3aGVuIHRoZSBzeXN0ZW0gaXMgdW5kZXIK KyAqIGhlYXZ5IGxvYWQuICZkcm1fdmJsYW5rX3dvcmsgYWxzbyBzdXBwb3J0cyByZXNjaGVkdWxp bmcsIHNvIHRoYXQgc2VsZgorICogcmUtYXJtaW5nIHdvcmsgaXRlbXMgY2FuIGJlIGVhc2lseSBp bXBsZW1lbnRlZC4KKyAqLworCit2b2lkIGRybV9oYW5kbGVfdmJsYW5rX3dvcmtzKHN0cnVjdCBk cm1fdmJsYW5rX2NydGMgKnZibGFuaykKK3sKKwlzdHJ1Y3QgZHJtX3ZibGFua193b3JrICp3b3Jr LCAqbmV4dDsKKwl1NjQgY291bnQgPSBhdG9taWM2NF9yZWFkKCZ2YmxhbmstPmNvdW50KTsKKwli b29sIHdha2UgPSBmYWxzZTsKKworCWFzc2VydF9zcGluX2xvY2tlZCgmdmJsYW5rLT5kZXYtPmV2 ZW50X2xvY2spOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHdvcmssIG5leHQsICZ2Ymxh bmstPnBlbmRpbmdfd29yaywgbm9kZSkgeworCQlpZiAoIWRybV92YmxhbmtfcGFzc2VkKGNvdW50 LCB3b3JrLT5jb3VudCkpCisJCQljb250aW51ZTsKKworCQlsaXN0X2RlbF9pbml0KCZ3b3JrLT5u b2RlKTsKKwkJZHJtX3ZibGFua19wdXQodmJsYW5rLT5kZXYsIHZibGFuay0+cGlwZSk7CisJCWt0 aHJlYWRfcXVldWVfd29yayh2YmxhbmstPndvcmtlciwgJndvcmstPmJhc2UpOworCQl3YWtlID0g dHJ1ZTsKKwl9CisJaWYgKHdha2UpCisJCXdha2VfdXBfYWxsKCZ2YmxhbmstPndvcmtfd2FpdF9x dWV1ZSk7Cit9CisKKy8qIEhhbmRsZSBjYW5jZWxsaW5nIGFueSBwZW5kaW5nIHZibGFuayB3b3Jr IGl0ZW1zIGFuZCBkcm9wIHJlc3BlY3RpdmUgdmJsYW5rCisgKiByZWZlcmVuY2VzIGluIHJlc3Bv bnNlIHRvIHZibGFuayBpbnRlcnJ1cHRzIGJlaW5nIGRpc2FibGVkLgorICovCit2b2lkIGRybV92 YmxhbmtfY2FuY2VsX3BlbmRpbmdfd29ya3Moc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r KQoreworCXN0cnVjdCBkcm1fdmJsYW5rX3dvcmsgKndvcmssICpuZXh0OworCisJYXNzZXJ0X3Nw aW5fbG9ja2VkKCZ2YmxhbmstPmRldi0+ZXZlbnRfbG9jayk7CisKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUod29yaywgbmV4dCwgJnZibGFuay0+cGVuZGluZ193b3JrLCBub2RlKSB7CisJCWxp c3RfZGVsX2luaXQoJndvcmstPm5vZGUpOworCQlkcm1fdmJsYW5rX3B1dCh2YmxhbmstPmRldiwg dmJsYW5rLT5waXBlKTsKKwl9CisKKwl3YWtlX3VwX2FsbCgmdmJsYW5rLT53b3JrX3dhaXRfcXVl dWUpOworfQorCisvKioKKyAqIGRybV92Ymxhbmtfd29ya19zY2hlZHVsZSAtIHNjaGVkdWxlIGEg dmJsYW5rIHdvcmsKKyAqIEB3b3JrOiB2Ymxhbmsgd29yayB0byBzY2hlZHVsZQorICogQGNvdW50 OiB0YXJnZXQgdmJsYW5rIGNvdW50CisgKiBAbmV4dG9ubWlzczogZGVmZXIgdW50aWwgdGhlIG5l eHQgdmJsYW5rIGlmIHRhcmdldCB2Ymxhbmsgd2FzIG1pc3NlZAorICoKKyAqIFNjaGVkdWxlIEB3 b3JrIGZvciBleGVjdXRpb24gb25jZSB0aGUgY3J0YyB2YmxhbmsgY291bnQgcmVhY2hlcyBAY291 bnQuCisgKgorICogSWYgdGhlIGNydGMgdmJsYW5rIGNvdW50IGhhcyBhbHJlYWR5IHJlYWNoZWQg QGNvdW50IGFuZCBAbmV4dG9ubWlzcyBpcworICogJWZhbHNlIHRoZSB3b3JrIHN0YXJ0cyB0byBl eGVjdXRlIGltbWVkaWF0ZWx5LgorICoKKyAqIElmIHRoZSBjcnRjIHZibGFuayBjb3VudCBoYXMg YWxyZWFkeSByZWFjaGVkIEBjb3VudCBhbmQgQG5leHRvbm1pc3MgaXMKKyAqICV0cnVlIHRoZSB3 b3JrIGlzIGRlZmVycmVkIHVudGlsIHRoZSBuZXh0IHZibGFuayAoYXMgaWYgQGNvdW50IGhhcyBi ZWVuCisgKiBzcGVjaWZpZWQgYXMgY3J0YyB2YmxhbmsgY291bnQgKyAxKS4KKyAqCisgKiBJZiBA d29yayBpcyBhbHJlYWR5IHNjaGVkdWxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJlc2NoZWR1bGUg c2FpZCB3b3JrCisgKiB1c2luZyB0aGUgbmV3IEBjb3VudC4KKyAqCisgKiBSZXR1cm5zOgorICog MCBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fdmJsYW5r X3dvcmtfc2NoZWR1bGUoc3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaywKKwkJCSAgICAgdTY0 IGNvdW50LCBib29sIG5leHRvbm1pc3MpCit7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJs YW5rID0gd29yay0+dmJsYW5rOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2YmxhbmstPmRl djsKKwl1NjQgY3VyX3ZibDsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWJvb2wgcGFzc2Vk LCByZXNjaGVkdWxpbmcgPSBmYWxzZSwgd2FrZSA9IGZhbHNlOworCWludCByZXQgPSAwOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOworCWlmICghdmJs YW5rLT53b3JrZXIgfHwgdmJsYW5rLT5pbm1vZGVzZXQgfHwgd29yay0+Y2FuY2VsbGluZykKKwkJ Z290byBvdXQ7CisKKwlpZiAobGlzdF9lbXB0eSgmd29yay0+bm9kZSkpIHsKKwkJcmV0ID0gZHJt X3ZibGFua19nZXQoZGV2LCB2YmxhbmstPnBpcGUpOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8g b3V0OworCX0gZWxzZSBpZiAod29yay0+Y291bnQgPT0gY291bnQpIHsKKwkJLyogQWxyZWFkeSBz Y2hlZHVsZWQgdy8gc2FtZSB2YmwgY291bnQgKi8KKwkJZ290byBvdXQ7CisJfSBlbHNlIHsKKwkJ cmVzY2hlZHVsaW5nID0gdHJ1ZTsKKwl9CisKKwl3b3JrLT5jb3VudCA9IGNvdW50OworCWN1cl92 YmwgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgdmJsYW5rLT5waXBlKTsKKwlwYXNzZWQgPSBkcm1f dmJsYW5rX3Bhc3NlZChjdXJfdmJsLCBjb3VudCk7CisJaWYgKHBhc3NlZCkKKwkJRFJNX0RFVl9F UlJPUihkZXYtPmRldiwKKwkJCSAgICAgICJjcnRjICVkIHZibGFuayAlbGx1IGFscmVhZHkgcGFz c2VkIChjdXJyZW50ICVsbHUpXG4iLAorCQkJICAgICAgdmJsYW5rLT5waXBlLCBjb3VudCwgY3Vy X3ZibCk7CisKKwlpZiAoIW5leHRvbm1pc3MgJiYgcGFzc2VkKSB7CisJCWRybV92YmxhbmtfcHV0 KGRldiwgdmJsYW5rLT5waXBlKTsKKwkJa3RocmVhZF9xdWV1ZV93b3JrKHZibGFuay0+d29ya2Vy LCAmd29yay0+YmFzZSk7CisKKwkJaWYgKHJlc2NoZWR1bGluZykgeworCQkJbGlzdF9kZWxfaW5p dCgmd29yay0+bm9kZSk7CisJCQl3YWtlID0gdHJ1ZTsKKwkJfQorCX0gZWxzZSBpZiAoIXJlc2No ZWR1bGluZykgeworCQlsaXN0X2FkZF90YWlsKCZ3b3JrLT5ub2RlLCAmdmJsYW5rLT5wZW5kaW5n X3dvcmspOworCX0KKworb3V0OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRf bG9jaywgaXJxZmxhZ3MpOworCWlmICh3YWtlKQorCQl3YWtlX3VwX2FsbCgmdmJsYW5rLT53b3Jr X3dhaXRfcXVldWUpOworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGRybV92Ymxhbmtf d29ya19zY2hlZHVsZSk7CisKKy8qKgorICogZHJtX3ZibGFua193b3JrX2NhbmNlbF9zeW5jIC0g Y2FuY2VsIGEgdmJsYW5rIHdvcmsgYW5kIHdhaXQgZm9yIGl0IHRvCisgKiBmaW5pc2ggZXhlY3V0 aW5nCisgKiBAd29yazogdmJsYW5rIHdvcmsgdG8gY2FuY2VsCisgKgorICogQ2FuY2VsIGFuIGFs cmVhZHkgc2NoZWR1bGVkIHZibGFuayB3b3JrIGFuZCB3YWl0IGZvciBpdHMKKyAqIGV4ZWN1dGlv biB0byBmaW5pc2guCisgKgorICogT24gcmV0dXJuLCBAd29yayBpcyBndWFyYW50ZWVkIHRvIG5v IGxvbmdlciBiZSBzY2hlZHVsZWQgb3IgcnVubmluZywgZXZlbgorICogaWYgaXQncyBzZWxmLWFy bWluZy4KKyAqCisgKiBSZXR1cm5zOgorICogJVRydWUgaWYgdGhlIHdvcmsgd2FzIGNhbmNlbGxl ZCBiZWZvcmUgaXQgc3RhcnRlZCB0byBleGVjdXRlLCAlZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAq LworYm9vbCBkcm1fdmJsYW5rX3dvcmtfY2FuY2VsX3N5bmMoc3RydWN0IGRybV92Ymxhbmtfd29y ayAqd29yaykKK3sKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSB3b3JrLT52Ymxh bms7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZibGFuay0+ZGV2OworCWJvb2wgcmV0ID0g ZmFsc2U7CisKKwlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOworCWlmICghbGlzdF9l bXB0eSgmd29yay0+bm9kZSkpIHsKKwkJbGlzdF9kZWxfaW5pdCgmd29yay0+bm9kZSk7CisJCWRy bV92YmxhbmtfcHV0KHZibGFuay0+ZGV2LCB2YmxhbmstPnBpcGUpOworCQlyZXQgPSB0cnVlOwor CX0KKworCXdvcmstPmNhbmNlbGxpbmcrKzsKKwlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRf bG9jayk7CisKKwl3YWtlX3VwX2FsbCgmdmJsYW5rLT53b3JrX3dhaXRfcXVldWUpOworCisJaWYg KGt0aHJlYWRfY2FuY2VsX3dvcmtfc3luYygmd29yay0+YmFzZSkpCisJCXJldCA9IHRydWU7CisK KwlzcGluX2xvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOworCXdvcmstPmNhbmNlbGxpbmctLTsK KwlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CisKKwlyZXR1cm4gcmV0OworfQor RVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX3dvcmtfY2FuY2VsX3N5bmMpOworCisvKioKKyAqIGRy bV92Ymxhbmtfd29ya19mbHVzaCAtIHdhaXQgZm9yIGEgc2NoZWR1bGVkIHZibGFuayB3b3JrIHRv IGZpbmlzaAorICogZXhlY3V0aW5nCisgKiBAd29yazogdmJsYW5rIHdvcmsgdG8gZmx1c2gKKyAq CisgKiBXYWl0IHVudGlsIEB3b3JrIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcgb25jZS4KKyAqLwor dm9pZCBkcm1fdmJsYW5rX3dvcmtfZmx1c2goc3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaykK K3sKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSB3b3JrLT52Ymxhbms7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHZibGFuay0+ZGV2OworCisJc3Bpbl9sb2NrX2lycSgmZGV2 LT5ldmVudF9sb2NrKTsKKwl3YWl0X2V2ZW50X2xvY2tfaXJxKHZibGFuay0+d29ya193YWl0X3F1 ZXVlLCBsaXN0X2VtcHR5KCZ3b3JrLT5ub2RlKSwKKwkJCSAgICBkZXYtPmV2ZW50X2xvY2spOwor CXNwaW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKKworCWt0aHJlYWRfZmx1c2hfd29y aygmd29yay0+YmFzZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV92Ymxhbmtfd29ya19mbHVzaCk7 CisKKy8qKgorICogZHJtX3ZibGFua193b3JrX2luaXQgLSBpbml0aWFsaXplIGEgdmJsYW5rIHdv cmsgaXRlbQorICogQHdvcms6IHZibGFuayB3b3JrIGl0ZW0KKyAqIEBjcnRjOiBDUlRDIHdob3Nl IHZibGFuayB3aWxsIHRyaWdnZXIgdGhlIHdvcmsgZXhlY3V0aW9uCisgKiBAZnVuYzogd29yayBm dW5jdGlvbiB0byBiZSBleGVjdXRlZAorICoKKyAqIEluaXRpYWxpemUgYSB2Ymxhbmsgd29yayBp dGVtIGZvciBhIHNwZWNpZmljIGNydGMuCisgKi8KK3ZvaWQgZHJtX3ZibGFua193b3JrX2luaXQo c3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaywgc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJ ICB2b2lkICgqZnVuYykoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykpCit7CisJa3RocmVhZF9p bml0X3dvcmsoJndvcmstPmJhc2UsIGZ1bmMpOworCUlOSVRfTElTVF9IRUFEKCZ3b3JrLT5ub2Rl KTsKKwl3b3JrLT52YmxhbmsgPSAmY3J0Yy0+ZGV2LT52YmxhbmtbZHJtX2NydGNfaW5kZXgoY3J0 YyldOworfQorRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX3dvcmtfaW5pdCk7CisKK2ludCBkcm1f dmJsYW5rX3dvcmtlcl9pbml0KHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuaykKK3sKKwlz dHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW0gPSB7CisJCS5zY2hlZF9wcmlvcml0eSA9IE1BWF9SVF9Q UklPIC0gMSwKKwl9OworCXN0cnVjdCBrdGhyZWFkX3dvcmtlciAqd29ya2VyOworCisJSU5JVF9M SVNUX0hFQUQoJnZibGFuay0+cGVuZGluZ193b3JrKTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2 YmxhbmstPndvcmtfd2FpdF9xdWV1ZSk7CisJd29ya2VyID0ga3RocmVhZF9jcmVhdGVfd29ya2Vy KDAsICJjYXJkJWQtY3J0YyVkIiwKKwkJCQkgICAgICAgdmJsYW5rLT5kZXYtPnByaW1hcnktPmlu ZGV4LAorCQkJCSAgICAgICB2YmxhbmstPnBpcGUpOworCWlmIChJU19FUlIod29ya2VyKSkKKwkJ cmV0dXJuIFBUUl9FUlIod29ya2VyKTsKKworCXZibGFuay0+d29ya2VyID0gd29ya2VyOworCisJ cmV0dXJuIHNjaGVkX3NldHNjaGVkdWxlcih2YmxhbmstPndvcmtlci0+dGFzaywgU0NIRURfRklG TywgJnBhcmFtKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rX3dv cmtfaW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rX3dvcmtfaW50ZXJuYWwu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wYTRhYmJjNGFiMjk1 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92Ymxhbmtfd29ya19pbnRl cm5hbC5oCkBAIC0wLDAgKzEsMjQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQK KworI2lmbmRlZiBfRFJNX1ZCTEFOS19XT1JLX0lOVEVSTkFMX0hfCisjZGVmaW5lIF9EUk1fVkJM QU5LX1dPUktfSU5URVJOQUxfSF8KKworI2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rLmg+CisKK2lu dCBkcm1fdmJsYW5rX3dvcmtlcl9pbml0KHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayk7 Cit2b2lkIGRybV92YmxhbmtfY2FuY2VsX3BlbmRpbmdfd29ya3Moc3RydWN0IGRybV92Ymxhbmtf Y3J0YyAqdmJsYW5rKTsKK3ZvaWQgZHJtX2hhbmRsZV92Ymxhbmtfd29ya3Moc3RydWN0IGRybV92 YmxhbmtfY3J0YyAqdmJsYW5rKTsKKworc3RhdGljIGlubGluZSB2b2lkIGRybV92YmxhbmtfZmx1 c2hfd29ya2VyKHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuaykKK3sKKwlpZiAodmJsYW5r LT53b3JrZXIpCisJCWt0aHJlYWRfZmx1c2hfd29ya2VyKHZibGFuay0+d29ya2VyKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGRybV92YmxhbmtfZGVzdHJveV93b3JrZXIoc3RydWN0IGRybV92 YmxhbmtfY3J0YyAqdmJsYW5rKQoreworCWlmICh2YmxhbmstPndvcmtlcikKKwkJa3RocmVhZF9k ZXN0cm95X3dvcmtlcih2YmxhbmstPndvcmtlcik7Cit9CisKKyNlbmRpZiAvKiAhX0RSTV9WQkxB TktfV09SS19JTlRFUk5BTF9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFu ay5oIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCmluZGV4IGRkOWY1YjllNTZlNGUuLmRkMTI1 ZjhjNzY2Y2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV92YmxhbmsuaAorKysgYi9pbmNs dWRlL2RybS9kcm1fdmJsYW5rLmgKQEAgLTI3LDEyICsyNywxNCBAQAogI2luY2x1ZGUgPGxpbnV4 L3NlcWxvY2suaD4KICNpbmNsdWRlIDxsaW51eC9pZHIuaD4KICNpbmNsdWRlIDxsaW51eC9wb2xs Lmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9maWxl Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgogCiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0 cnVjdCBkcm1fY3J0YzsKK3N0cnVjdCBkcm1fdmJsYW5rX3dvcms7CiAKIC8qKgogICogc3RydWN0 IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAtIHBlbmRpbmcgdmJsYW5rIGV2ZW50IHRyYWNraW5n CkBAIC0yMDMsNiArMjA1LDI0IEBAIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgewogCSAqIGRpc2Fi bGluZyBmdW5jdGlvbnMgbXVsdGlwbGUgdGltZXMuCiAJICovCiAJYm9vbCBlbmFibGVkOworCisJ LyoqCisJICogQHdvcmtlcjogVGhlICZrdGhyZWFkX3dvcmtlciB1c2VkIGZvciBleGVjdXRpbmcg dmJsYW5rIHdvcmtzLgorCSAqLworCXN0cnVjdCBrdGhyZWFkX3dvcmtlciAqd29ya2VyOworCisJ LyoqCisJICogQHBlbmRpbmdfd29yazogQSBsaXN0IG9mIHNjaGVkdWxlZCAmZHJtX3ZibGFua193 b3JrIGl0ZW1zIHRoYXQgYXJlCisJICogd2FpdGluZyBmb3IgYSBmdXR1cmUgdmJsYW5rLgorCSAq LworCXN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ193b3JrOworCisJLyoqCisJICogQHdvcmtfd2Fp dF9xdWV1ZTogVGhlIHdhaXQgcXVldWUgdXNlZCBmb3Igc2lnbmFsaW5nIHRoYXQgYQorCSAqICZk cm1fdmJsYW5rX3dvcmsgaXRlbSBoYXMgZWl0aGVyIGZpbmlzaGVkIGV4ZWN1dGluZywgb3Igd2Fz CisJICogY2FuY2VsbGVkLgorCSAqLworCXdhaXRfcXVldWVfaGVhZF90IHdvcmtfd2FpdF9xdWV1 ZTsKIH07CiAKIGludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IG51bV9jcnRjcyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fdmJsYW5r X3dvcmsuaCBiL2luY2x1ZGUvZHJtL2RybV92Ymxhbmtfd29yay5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYwNDM5YzAzOWY3Y2UKLS0tIC9kZXYvbnVsbAorKysg Yi9pbmNsdWRlL2RybS9kcm1fdmJsYW5rX3dvcmsuaApAQCAtMCwwICsxLDcxIEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisKKyNpZm5kZWYgX0RSTV9WQkxBTktfV09SS19IXwor I2RlZmluZSBfRFJNX1ZCTEFOS19XT1JLX0hfCisKKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+ CisKK3N0cnVjdCBkcm1fY3J0YzsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX3ZibGFua193b3JrIC0g QSBkZWxheWVkIHdvcmsgaXRlbSB3aGljaCBkZWxheXMgdW50aWwgYSB0YXJnZXQKKyAqIHZibGFu ayBwYXNzZXMsIGFuZCB0aGVuIGV4ZWN1dGVzIGF0IHJlYWx0aW1lIHByaW9yaXR5IG91dHNpZGUg b2YgSVJRCisgKiBjb250ZXh0LgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX3ZibGFua193b3Jr X3NjaGVkdWxlKCkKKyAqIGRybV92Ymxhbmtfd29ya19pbml0KCkKKyAqIGRybV92Ymxhbmtfd29y a19jYW5jZWxfc3luYygpCisgKiBkcm1fdmJsYW5rX3dvcmtfZmx1c2goKQorICovCitzdHJ1Y3Qg ZHJtX3ZibGFua193b3JrIHsKKwkvKioKKwkgKiBAYmFzZTogVGhlIGJhc2UgJmt0aHJlYWRfd29y ayBpdGVtIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYnkKKwkgKiAmZHJtX3ZibGFua19jcnRjLndv cmtlci4gRHJpdmVycyBzaG91bGQgbm90IGludGVyYWN0IHdpdGggdGhpcworCSAqIGRpcmVjdGx5 LCBhbmQgaW5zdGVhZCByZWx5IG9uIGRybV92Ymxhbmtfd29ya19pbml0KCkgdG8gaW5pdGlhbGl6 ZQorCSAqIHRoaXMuCisJICovCisJc3RydWN0IGt0aHJlYWRfd29yayBiYXNlOworCisJLyoqCisJ ICogQHZibGFuazogQSBwb2ludGVyIHRvICZkcm1fdmJsYW5rX2NydGMgdGhpcyB3b3JrIGl0ZW0g YmVsb25ncyB0by4KKwkgKi8KKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2Ymxhbms7CisKKwkv KioKKwkgKiBAY291bnQ6IFRoZSB0YXJnZXQgdmJsYW5rIHRoaXMgd29yayB3aWxsIGV4ZWN1dGUg b24uIERyaXZlcnMgc2hvdWxkCisJICogbm90IG1vZGlmeSB0aGlzIHZhbHVlIGRpcmVjdGx5LCBh bmQgaW5zdGVhZCB1c2UKKwkgKiBkcm1fdmJsYW5rX3dvcmtfc2NoZWR1bGUoKQorCSAqLworCXU2 NCBjb3VudDsKKworCS8qKgorCSAqIEBjYW5jZWxsaW5nOiBUaGUgbnVtYmVyIG9mIGRybV92Ymxh bmtfd29ya19jYW5jZWxfc3luYygpIGNhbGxzIHRoYXQKKwkgKiBhcmUgY3VycmVudGx5IHJ1bm5p bmcuIEEgd29yayBpdGVtIGNhbm5vdCBiZSByZXNjaGVkdWxlZCB1bnRpbCBhbGwKKwkgKiBjYWxs cyBoYXZlIGZpbmlzaGVkLgorCSAqLworCWludCBjYW5jZWxsaW5nOworCisJLyoqCisJICogQG5v ZGU6IFRoZSBwb3NpdGlvbiBvZiB0aGlzIHdvcmsgaXRlbSBpbgorCSAqICZkcm1fdmJsYW5rX2Ny dGMucGVuZGluZ193b3JrLgorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKK307CisKKy8q KgorICogdG9fZHJtX3ZibGFua193b3JrIC0gUmV0cmlldmUgdGhlIHJlc3BlY3RpdmUgJmRybV92 Ymxhbmtfd29yayBpdGVtIGZyb20gYQorICogJmt0aHJlYWRfd29yaworICogQF93b3JrOiBUaGUg Jmt0aHJlYWRfd29yayBlbWJlZGRlZCBpbnNpZGUgYSAmZHJtX3ZibGFua193b3JrCisgKi8KKyNk ZWZpbmUgdG9fZHJtX3ZibGFua193b3JrKF93b3JrKSBcCisJY29udGFpbmVyX29mKChfd29yayks IHN0cnVjdCBkcm1fdmJsYW5rX3dvcmssIGJhc2UpCisKK2ludCBkcm1fdmJsYW5rX3dvcmtfc2No ZWR1bGUoc3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaywKKwkJCSAgICAgdTY0IGNvdW50LCBi b29sIG5leHRvbm1pc3MpOwordm9pZCBkcm1fdmJsYW5rX3dvcmtfaW5pdChzdHJ1Y3QgZHJtX3Zi bGFua193b3JrICp3b3JrLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgIHZvaWQgKCpmdW5j KShzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKSk7Citib29sIGRybV92Ymxhbmtfd29ya19jYW5j ZWxfc3luYyhzdHJ1Y3QgZHJtX3ZibGFua193b3JrICp3b3JrKTsKK3ZvaWQgZHJtX3ZibGFua193 b3JrX2ZsdXNoKHN0cnVjdCBkcm1fdmJsYW5rX3dvcmsgKndvcmspOworCisjZW5kaWYgLyogIV9E Uk1fVkJMQU5LX1dPUktfSF8gKi8KLS0gCjIuMjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==