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 2A6CEC433E1 for ; Mon, 22 Jun 2020 20:08:09 +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 F39E12075A for ; Mon, 22 Jun 2020 20:08:08 +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="W7G1WHvJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F39E12075A 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 B8B176E8FC; Mon, 22 Jun 2020 20:08:05 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id B75846E8F1 for ; Mon, 22 Jun 2020 20:08:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592856482; 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=NgQjDm8/kZfx4WO8HaUv51ziwWACe5zT151qo/rP4Ms=; b=W7G1WHvJWiCXQB6083ND6cP+Xh22qh4pOa8KlYuwKPovZobMMmLDp3H1D7RDVZRqQ+f13x pR4tiiewlVceq6M1MB4cQv8ux279xRrU2D5IYyJAax/zgFrvUws+VlsYxPE1c+qoOSt6q5 8U6B+9X7nfEUQx2cTqspxsrBL1pFtJg= 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-291-Vt2xni4vNauTokuGIb8dHg-1; Mon, 22 Jun 2020 16:08:00 -0400 X-MC-Unique: Vt2xni4vNauTokuGIb8dHg-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EC7F8107ACF2; Mon, 22 Jun 2020 20:07:58 +0000 (UTC) Received: from Whitewolf.redhat.com (ovpn-117-166.rdu2.redhat.com [10.10.117.166]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3B8C65C1BD; Mon, 22 Jun 2020 20:07:57 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Subject: [RFC v5 02/10] drm/vblank: Add vblank works Date: Mon, 22 Jun 2020 16:07:22 -0400 Message-Id: <20200622200730.120716-3-lyude@redhat.com> In-Reply-To: <20200622200730.120716-1-lyude@redhat.com> References: <20200622200730.120716-1-lyude@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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: David Airlie , open list , Thomas Zimmermann , 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 LXByaW9yaXR5CnBlci1DUlRDIHRocmVhZCB0byBhY2NvbXBsaXNoIHRoaXMuCgpbYmFzZWQgb2Zm IHBhdGNoZXMgZnJvbSBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPiwKY2hhbmdlIGJlbG93IHRvIHNpZ25vZmYgbGF0ZXJdCgpDaGFuZ2VzIHNpbmNlIHY0Ogoq IEdldCByaWQgb2Yga3RocmVhZCBpbnRlcmZhY2VzIHdlIHRyaWVkIGFkZGluZyBhbmQgbW92ZSBh bGwgb2YgdGhlCiAgbG9ja2luZyBpbnRvIGRybV92YmxhbmsuYy4gRm9yIGltcGxlbWVudGluZyBk cm1fdmJsYW5rX3dvcmtfZmx1c2goKSwKICB3ZSBub3cgdXNlIGEgd2FpdF9xdWV1ZSBhbmQgc2Vx dWVuY2UgY291bnRlcnMgaW4gb3JkZXIgdG8KICBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbXVsdGlw bGUgd29yayBpdGVtIGV4ZWN1dGlvbnMuCiogR2V0IHJpZCBvZiBkcm1fdmJsYW5rX3dvcmtfY2Fu Y2VsKCkgLSB0aGlzIHdvdWxkIGhhdmUgYmVlbiBwcmV0dHkKICBkaWZmaWN1bHQgdG8gYWN0dWFs bHkgcmVpbXBsZW1lbnQgYW5kIGl0IG9jY3VycmVkIHRvIG1lIHRoYXQgbmVpdGhlcgogIG5vdXZl YXUgb3IgaTkxNSBhcmUgZXZlbiBwbGFubmluZyB0byB1c2UgdGhpcyBmdW5jdGlvbi4gU2luY2Ug dGhlcmUncwogIGFsc28gbm8gYXN5bmMgY2FuY2VsIGZ1bmN0aW9uIGZvciBtb3N0IG9mIHRoZSB3 b3JrIGludGVyZmFjZXMgaW4gdGhlCiAga2VybmVsLCBpdCBzZWVtcyBhIGJpdCB1bm5lY2Vzc2Fy eSBhbnl3YXkuCiogR2V0IHJpZCBvZiB0b19kcm1fdmJsYW5rX3dvcmsoKSBzaW5jZSB3ZSBub3cg YXJlIGFsc28gYWJsZSB0byBqdXN0CiAgcGFzcyB0aGUgc3RydWN0IGRybV92Ymxhbmtfd29yayB0 byB3b3JrIGl0ZW0gY2FsbGJhY2tzIGFueXdheQpDaGFuZ2VzIHNpbmNlIHYzOgoqIFVzZSBvdXIg b3duIHNwaW5sb2NrcywgZG9uJ3QgaW50ZWdyYXRlIHNvIHRpZ2h0bHkgd2l0aCBrdGhyZWFkX3dv cmtzCkNoYW5nZXMgc2luY2UgdjI6CiogVXNlIGt0aHJlYWRfd29ya2VycyBpbnN0ZWFkIG9mIHJl aW52ZW50aW5nIHRoZSB3aGVlbC4KCkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ CkNjOiBUZWp1biBIZW8gPHRqQGtlcm5lbC5vcmc+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKU2lnbmVkLW9mZi1ieTogTHl1 ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFu ay5jIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2Ry bS9kcm1fdmJsYW5rLmggICAgIHwgIDQ5ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzE1IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCBjZTVjMWUxZDI5OTYzLi40ZDc2ZWIy ZmVkNWU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKQEAgLTI1LDcgKzI1LDkgQEAKICAqLwogCiAjaW5j bHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1 ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSA8dWFwaS9saW51eC9zY2hlZC90eXBl cy5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kcnYu aD4KQEAgLTE1NSw2ICsxNTcsOCBAQAogc3RhdGljIGJvb2wKIGRybV9nZXRfbGFzdF92Ymx0aW1l c3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJCQkgIGt0 aW1lX3QgKnR2YmxhbmssIGJvb2wgaW5fdmJsYW5rX2lycSk7CitzdGF0aWMgaW50IGRybV92Ymxh bmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKK3N0YXRp YyB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBwaXBlKTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBkcm1fdGltZXN0YW1wX3ByZWNpc2lvbiA9 IDIwOyAgLyogRGVmYXVsdCB0byAyMCB1c2Vjcy4gKi8KIApAQCAtNDkwLDYgKzQ5NCwzNSBAQCBz dGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CiB9CiAKK3N0YXRp YyB2b2lkIGRybV92Ymxhbmtfd29ya19yZWxlYXNlKHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZi bGFuaykKK3sKKwlzdHJ1Y3Qga3RocmVhZF93b3JrZXIgKndvcmtlciA9IHZibGFuay0+d29ya2Vy OworCXN0cnVjdCBkcm1fdmJsYW5rX3dvcmsgKndvcmssICp0bXA7CisJYm9vbCB3YWtlID0gZmFs c2U7CisKKwlpZiAoIXdvcmtlcikKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycSgmdmJsYW5r LT53b3JrX2xvY2spOworCXZibGFuay0+d29ya2VyID0gTlVMTDsKKworCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZSh3b3JrLCB0bXAsICZ2YmxhbmstPnBlbmRpbmdfd29yaywgbm9kZSkgeworCQlk cm1fdmJsYW5rX3B1dCh2YmxhbmstPmRldiwgdmJsYW5rLT5waXBlKTsKKwkJbGlzdF9kZWwoJndv cmstPm5vZGUpOworCisJCWlmICghLS13b3JrLT5wZW5kaW5nKSB7CisJCQl3cml0ZV9zZXFjb3Vu dF9pbnZhbGlkYXRlKCZ3b3JrLT5zZXFjb3VudCk7CisJCQl3YWtlID0gdHJ1ZTsKKwkJfQorCX0K KworCXNwaW5fdW5sb2NrX2lycSgmdmJsYW5rLT53b3JrX2xvY2spOworCisJaWYgKHdha2UpCisJ CXdha2VfdXBfYWxsKCZ2YmxhbmstPndvcmtfd2FpdF9xdWV1ZSk7CisJa3RocmVhZF9kZXN0cm95 X3dvcmtlcih3b3JrZXIpOworfQorCiBzdGF0aWMgdm9pZCBkcm1fdmJsYW5rX2luaXRfcmVsZWFz ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpwdHIpCiB7CiAJc3RydWN0IGRybV92Ymxh bmtfY3J0YyAqdmJsYW5rID0gcHRyOwpAQCAtNDk3LDkgKzUzMCw2NiBAQCBzdGF0aWMgdm9pZCBk cm1fdmJsYW5rX2luaXRfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpwdHIp CiAJZHJtX1dBUk5fT04oZGV2LCBSRUFEX09OQ0UodmJsYW5rLT5lbmFibGVkKSAmJgogCQkgICAg ZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSk7CiAKKwlkcm1fdmJs YW5rX3dvcmtfcmVsZWFzZSh2YmxhbmspOwogCWRlbF90aW1lcl9zeW5jKCZ2YmxhbmstPmRpc2Fi bGVfdGltZXIpOwogfQogCitzdGF0aWMgdm9pZCB2Ymxhbmtfd29ya19mbihzdHJ1Y3Qga3RocmVh ZF93b3JrICpiYXNlKQoreworCXN0cnVjdCBkcm1fdmJsYW5rX3dvcmsgKndvcmsgPQorCQljb250 YWluZXJfb2YoYmFzZSwgc3RydWN0IGRybV92Ymxhbmtfd29yaywgYmFzZSk7CisJc3RydWN0IGRy bV92YmxhbmtfY3J0YyAqdmJsYW5rID0gd29yay0+dmJsYW5rOworCisJd29yay0+ZnVuYyh3b3Jr KTsKKworCXNwaW5fbG9ja19pcnEoJnZibGFuay0+d29ya19sb2NrKTsKKwl3b3JrLT5wZW5kaW5n LS07CisKKwl3cml0ZV9zZXFjb3VudF9pbnZhbGlkYXRlKCZ3b3JrLT5zZXFjb3VudCk7CisJd2Fr ZV91cF9hbGwoJnZibGFuay0+d29ya193YWl0X3F1ZXVlKTsKKwlzcGluX3VubG9ja19pcnEoJnZi bGFuay0+d29ya19sb2NrKTsKK30KKworLyoqCisgKiBkcm1fdmJsYW5rX3dvcmtfaW5pdCAtIGlu aXRpYWxpemUgYSB2Ymxhbmsgd29yayBpdGVtCisgKiBAd29yazogdmJsYW5rIHdvcmsgaXRlbQor ICogQGNydGM6IENSVEMgd2hvc2UgdmJsYW5rIHdpbGwgdHJpZ2dlciB0aGUgd29yayBleGVjdXRp b24KKyAqIEBmdW5jOiB3b3JrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkCisgKgorICogSW5pdGlh bGl6ZSBhIHZibGFuayB3b3JrIGl0ZW0gZm9yIGEgc3BlY2lmaWMgY3J0Yy4KKyAqLwordm9pZCBk cm1fdmJsYW5rX3dvcmtfaW5pdChzdHJ1Y3QgZHJtX3ZibGFua193b3JrICp3b3JrLCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCisJCQkgIHZvaWQgKCpmdW5jKShzdHJ1Y3QgZHJtX3ZibGFua193b3Jr ICp3b3JrKSkKK3sKKwlrdGhyZWFkX2luaXRfd29yaygmd29yay0+YmFzZSwgdmJsYW5rX3dvcmtf Zm4pOworCXdvcmstPmZ1bmMgPSBmdW5jOworCUlOSVRfTElTVF9IRUFEKCZ3b3JrLT5ub2RlKTsK KwlzZXFjb3VudF9pbml0KCZ3b3JrLT5zZXFjb3VudCk7CisJd29yay0+dmJsYW5rID0gJmNydGMt PmRldi0+dmJsYW5rW2RybV9jcnRjX2luZGV4KGNydGMpXTsKK30KK0VYUE9SVF9TWU1CT0woZHJt X3ZibGFua193b3JrX2luaXQpOworCitzdGF0aWMgaW50IHZibGFua193b3JrZXJfaW5pdChzdHJ1 Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmspCit7CisJc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFt ID0geworCQkuc2NoZWRfcHJpb3JpdHkgPSBNQVhfUlRfUFJJTyAtIDEsCisJfTsKKwlzdHJ1Y3Qg a3RocmVhZF93b3JrZXIgKndvcmtlcjsKKworCUlOSVRfTElTVF9IRUFEKCZ2YmxhbmstPnBlbmRp bmdfd29yayk7CisJc3Bpbl9sb2NrX2luaXQoJnZibGFuay0+d29ya19sb2NrKTsKKwlpbml0X3dh aXRxdWV1ZV9oZWFkKCZ2YmxhbmstPndvcmtfd2FpdF9xdWV1ZSk7CisJd29ya2VyID0ga3RocmVh ZF9jcmVhdGVfd29ya2VyKDAsICJjYXJkJWQtY3J0YyVkIiwKKwkJCQkgICAgICAgdmJsYW5rLT5k ZXYtPnByaW1hcnktPmluZGV4LAorCQkJCSAgICAgICB2YmxhbmstPnBpcGUpOworCWlmIChJU19F UlIod29ya2VyKSkKKwkJcmV0dXJuIFBUUl9FUlIod29ya2VyKTsKKworCXZibGFuay0+d29ya2Vy ID0gd29ya2VyOworCisJcmV0dXJuIHNjaGVkX3NldHNjaGVkdWxlcih2YmxhbmstPndvcmtlci0+ dGFzaywgU0NIRURfRklGTywgJnBhcmFtKTsKK30KKwogLyoqCiAgKiBkcm1fdmJsYW5rX2luaXQg LSBpbml0aWFsaXplIHZibGFuayBzdXBwb3J0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC01Mzks NiArNjI5LDEwIEBAIGludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IG51bV9jcnRjcykKIAkJCQkJICAgICAgIHZibGFuayk7CiAJCWlmIChyZXQp CiAJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IHZibGFua193b3JrZXJfaW5pdCh2YmxhbmspOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE4OTEsNiAr MTk4NSwyNCBAQCBzdGF0aWMgdm9pZCBkcm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJdHJhY2VfZHJtX3ZibGFua19ldmVu dChwaXBlLCBzZXEsIG5vdywgaGlnaF9wcmVjKTsKIH0KIAorc3RhdGljIHZvaWQgZHJtX2hhbmRs ZV92Ymxhbmtfd29ya3Moc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKQoreworCXN0cnVj dCBkcm1fdmJsYW5rX3dvcmsgKndvcmssICpuZXh0OworCXU2NCBjb3VudCA9IGF0b21pYzY0X3Jl YWQoJnZibGFuay0+Y291bnQpOworCisJc3Bpbl9sb2NrKCZ2YmxhbmstPndvcmtfbG9jayk7CisJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHdvcmssIG5leHQsICZ2YmxhbmstPnBlbmRpbmdfd29y aywgbm9kZSkgeworCQlpZiAoIXZibGFua19wYXNzZWQoY291bnQsIHdvcmstPmNvdW50KSkKKwkJ CWNvbnRpbnVlOworCisJCWxpc3RfZGVsX2luaXQoJndvcmstPm5vZGUpOworCQlkcm1fdmJsYW5r X3B1dCh2YmxhbmstPmRldiwgdmJsYW5rLT5waXBlKTsKKwkJaWYgKCFrdGhyZWFkX3F1ZXVlX3dv cmsodmJsYW5rLT53b3JrZXIsICZ3b3JrLT5iYXNlKSkKKwkJCXdvcmstPnBlbmRpbmctLTsKKwl9 CisJc3Bpbl91bmxvY2soJnZibGFuay0+d29ya19sb2NrKTsKK30KKwogLyoqCiAgKiBkcm1faGFu ZGxlX3ZibGFuayAtIGhhbmRsZSBhIHZibGFuayBldmVudAogICogQGRldjogRFJNIGRldmljZQpA QCAtMTkzMiw2ICsyMDQ0LDcgQEAgYm9vbCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIAogCXNwaW5fdW5sb2NrKCZkZXYtPnZibGFu a190aW1lX2xvY2spOwogCisJZHJtX2hhbmRsZV92Ymxhbmtfd29ya3ModmJsYW5rKTsKIAl3YWtl X3VwKCZ2YmxhbmstPnF1ZXVlKTsKIAogCS8qIFdpdGggaW5zdGFudC1vZmYsIHdlIGRlZmVyIGRp c2FibGluZyB0aGUgaW50ZXJydXB0IHVudGlsIGFmdGVyCkBAIC0yMTQ2LDMgKzIyNTksMTU2IEBA IGludCBkcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCWtmcmVlKGUpOwogCXJldHVybiByZXQ7CiB9CisKKy8qKgorICogZHJt X3ZibGFua193b3JrX3NjaGVkdWxlIC0gc2NoZWR1bGUgYSB2Ymxhbmsgd29yaworICogQHdvcms6 IHZibGFuayB3b3JrIHRvIHNjaGVkdWxlCisgKiBAY291bnQ6IHRhcmdldCB2YmxhbmsgY291bnQK KyAqIEBuZXh0b25taXNzOiBkZWZlciB1bnRpbCB0aGUgbmV4dCB2YmxhbmsgaWYgdGFyZ2V0IHZi bGFuayB3YXMgbWlzc2VkCisgKgorICogU2NoZWR1bGUgQHdvcmsgZm9yIGV4ZWN1dGlvbiBvbmNl IHRoZSBjcnRjIHZibGFuayBjb3VudCByZWFjaGVzIEBjb3VudC4KKyAqCisgKiBJZiB0aGUgY3J0 YyB2YmxhbmsgY291bnQgaGFzIGFscmVhZHkgcmVhY2hlZCBAY291bnQgYW5kIEBuZXh0b25taXNz IGlzCisgKiAlZmFsc2UgdGhlIHdvcmsgc3RhcnRzIHRvIGV4ZWN1dGUgaW1tZWRpYXRlbHkuCisg KgorICogSWYgdGhlIGNydGMgdmJsYW5rIGNvdW50IGhhcyBhbHJlYWR5IHJlYWNoZWQgQGNvdW50 IGFuZCBAbmV4dG9ubWlzcyBpcworICogJXRydWUgdGhlIHdvcmsgaXMgZGVmZXJyZWQgdW50aWwg dGhlIG5leHQgdmJsYW5rIChhcyBpZiBAY291bnQgaGFzIGJlZW4KKyAqIHNwZWNpZmllZCBhcyBj cnRjIHZibGFuayBjb3VudCArIDEpLgorICoKKyAqIElmIEB3b3JrIGlzIGFscmVhZHkgc2NoZWR1 bGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVzY2hlZHVsZSBzYWlkIHdvcmsKKyAqIHVzaW5nIHRo ZSBuZXcgQGNvdW50LgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3MsIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRybV92Ymxhbmtfd29ya19zY2hlZHVsZShzdHJ1Y3Qg ZHJtX3ZibGFua193b3JrICp3b3JrLAorCQkJICAgICB1NjQgY291bnQsIGJvb2wgbmV4dG9ubWlz cykKK3sKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSB3b3JrLT52Ymxhbms7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZibGFuay0+ZGV2OworCXU2NCBjdXJfdmJsOworCXVu c2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJYm9vbCBwYXNzZWQsIHJlc2NoZWR1bGluZyA9IGZhbHNl OworCWludCByZXQgPSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnZibGFuay0+d29ya19sb2Nr LCBpcnFmbGFncyk7CisJaWYgKCF2YmxhbmstPndvcmtlciB8fCB3b3JrLT5jYW5jZWxsaW5nKQor CQlnb3RvIG91dDsKKworCWlmIChsaXN0X2VtcHR5KCZ3b3JrLT5ub2RlKSkgeworCQlyZXQgPSBk cm1fdmJsYW5rX2dldChkZXYsIHZibGFuay0+cGlwZSk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290 byBvdXQ7CisJfSBlbHNlIGlmICh3b3JrLT5jb3VudCA9PSBjb3VudCkgeworCQkvKiBBbHJlYWR5 IHNjaGVkdWxlZCB3LyBzYW1lIHZibCBjb3VudCAqLworCQlnb3RvIG91dDsKKwl9IGVsc2Ugewor CQlyZXNjaGVkdWxpbmcgPSB0cnVlOworCX0KKworCXdvcmstPmNvdW50ID0gY291bnQ7CisJY3Vy X3ZibCA9IGRybV92YmxhbmtfY291bnQoZGV2LCB2YmxhbmstPnBpcGUpOworCXBhc3NlZCA9IHZi bGFua19wYXNzZWQoY3VyX3ZibCwgY291bnQpOworCWlmIChwYXNzZWQpCisJCURSTV9FUlJPUigi Y3J0YyAlZCB2YmxhbmsgJWxsdSBhbHJlYWR5IHBhc3NlZCAoY3VycmVudCAlbGx1KVxuIiwKKwkJ CSAgdmJsYW5rLT5waXBlLCBjb3VudCwgY3VyX3ZibCk7CisKKwlpZiAoIW5leHRvbm1pc3MgJiYg cGFzc2VkKSB7CisJCWRybV92YmxhbmtfcHV0KGRldiwgdmJsYW5rLT5waXBlKTsKKwkJd29yay0+ cGVuZGluZyArPSBrdGhyZWFkX3F1ZXVlX3dvcmsodmJsYW5rLT53b3JrZXIsCisJCQkJCQkgICAg JndvcmstPmJhc2UpOworCQlpZiAocmVzY2hlZHVsaW5nKSB7CisJCQlsaXN0X2RlbF9pbml0KCZ3 b3JrLT5ub2RlKTsKKwkJCXdvcmstPnBlbmRpbmctLTsKKwkJfQorCX0gZWxzZSBpZiAocmVzY2hl ZHVsaW5nKSB7CisJCWxpc3RfbW92ZV90YWlsKCZ3b3JrLT5ub2RlLCAmdmJsYW5rLT5wZW5kaW5n X3dvcmspOworCX0gZWxzZSB7CisJCWxpc3RfYWRkX3RhaWwoJndvcmstPm5vZGUsICZ2Ymxhbmst PnBlbmRpbmdfd29yayk7CisJCXdvcmstPnBlbmRpbmcrKzsKKwl9CisKKyBvdXQ6CisJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdmJsYW5rLT53b3JrX2xvY2ssIGlycWZsYWdzKTsKKwlyZXR1cm4g cmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX3dvcmtfc2NoZWR1bGUpOworCisvKioK KyAqIGRybV92Ymxhbmtfd29ya19jYW5jZWxfc3luYyAtIGNhbmNlbCBhIHZibGFuayB3b3JrIGFu ZCB3YWl0IGZvciBpdCB0bworICogZmluaXNoIGV4ZWN1dGluZworICogQHdvcms6IHZibGFuayB3 b3JrIHRvIGNhbmNlbAorICoKKyAqIENhbmNlbCBhbiBhbHJlYWR5IHNjaGVkdWxlZCB2Ymxhbmsg d29yayBhbmQgd2FpdCBmb3IgaXRzCisgKiBleGVjdXRpb24gdG8gZmluaXNoLgorICoKKyAqIE9u IHJldHVybiBAd29yayBpcyBubyBsb25nZXIgZ3VhcmFuZWVkIHRvIGJlIGV4ZWN1dGluZy4KKyAq CisgKiBSZXR1cm5zOgorICogJVRydWUgaWYgdGhlIHdvcmsgd2FzIGNhbmNlbGxlZCBiZWZvcmUg aXQgc3RhcnRlZCB0byBleGVjdXRlLCAlZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAqLworYm9vbCBk cm1fdmJsYW5rX3dvcmtfY2FuY2VsX3N5bmMoc3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaykK K3sKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSB3b3JrLT52Ymxhbms7CisJYm9v bCByZXQgPSBmYWxzZSwgY2FuY2VsbGVkLCBxdWV1ZWQ7CisKKwlzcGluX2xvY2tfaXJxKCZ2Ymxh bmstPndvcmtfbG9jayk7CisKKwlpZiAoIWxpc3RfZW1wdHkoJndvcmstPm5vZGUpKSB7CisJCWxp c3RfZGVsX2luaXQoJndvcmstPm5vZGUpOworCQlkcm1fdmJsYW5rX3B1dCh2YmxhbmstPmRldiwg dmJsYW5rLT5waXBlKTsKKwkJd29yay0+cGVuZGluZy0tOworCQlyZXQgPSB0cnVlOworCX0KKwor CXF1ZXVlZCA9IHdvcmstPnBlbmRpbmc7CisJaWYgKHF1ZXVlZCkKKwkJd29yay0+Y2FuY2VsbGlu ZysrOworCXNwaW5fdW5sb2NrX2lycSgmdmJsYW5rLT53b3JrX2xvY2spOworCisJaWYgKCFxdWV1 ZWQpCisJCXJldHVybiBmYWxzZTsKKworCWNhbmNlbGxlZCA9IGt0aHJlYWRfY2FuY2VsX3dvcmtf c3luYygmd29yay0+YmFzZSk7CisKKwlzcGluX2xvY2tfaXJxKCZ2YmxhbmstPndvcmtfbG9jayk7 CisJaWYgKGNhbmNlbGxlZCkgeworCQlyZXQgPSB0cnVlOworCQl3b3JrLT5wZW5kaW5nLS07CisJ fQorCisJd3JpdGVfc2VxY291bnRfaW52YWxpZGF0ZSgmd29yay0+c2VxY291bnQpOworCXdha2Vf dXBfYWxsKCZ2YmxhbmstPndvcmtfd2FpdF9xdWV1ZSk7CisKKwl3b3JrLT5jYW5jZWxsaW5nLS07 CisJZHJtX1dBUk5fT05fT05DRSh2YmxhbmstPmRldiwgd29yay0+cGVuZGluZyk7CisJc3Bpbl91 bmxvY2tfaXJxKCZ2YmxhbmstPndvcmtfbG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorRVhQT1JU X1NZTUJPTChkcm1fdmJsYW5rX3dvcmtfY2FuY2VsX3N5bmMpOworCisvKioKKyAqIGRybV92Ymxh bmtfd29ya19mbHVzaCAtIHdhaXQgZm9yIGEgc2NoZWR1bGVkIHZibGFuayB3b3JrIHRvIGZpbmlz aAorICogZXhlY3V0aW5nCisgKiBAd29yazogdmJsYW5rIHdvcmsgdG8gZmx1c2gKKyAqCisgKiBX YWl0IHVudGlsIEB3b3JrIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcgb25jZS4KKyAqLwordm9pZCBk cm1fdmJsYW5rX3dvcmtfZmx1c2goc3RydWN0IGRybV92Ymxhbmtfd29yayAqd29yaykKK3sKKwlz dHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSB3b3JrLT52Ymxhbms7CisJdW5zaWduZWQg aW50IHNlcTsKKworCXNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJndvcmstPnNlcWNvdW50KTsK KwlpZiAoIXdvcmstPnBlbmRpbmcpCisJCXJldHVybjsKKworCS8qIE9uY2UgdGhlIHNlcXVlbmNl IGNvdW50ZXIgaGFzIGNoYW5nZWQsIG91ciB3b3JrIGluc3RhbmNlIGhhcworCSAqIGZpbmlzaGVk CisJICovCisJd2FpdF9ldmVudCh2YmxhbmstPndvcmtfd2FpdF9xdWV1ZSwKKwkJICAgcmVhZF9z ZXFjb3VudF9yZXRyeSgmd29yay0+c2VxY291bnQsIHNlcSkpOworfQorRVhQT1JUX1NZTUJPTChk cm1fdmJsYW5rX3dvcmtfZmx1c2gpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFu ay5oIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCmluZGV4IGRkOWY1YjllNTZlNGUuLmIxY2Q2 ZWU5ZjViNjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV92YmxhbmsuaAorKysgYi9pbmNs dWRlL2RybS9kcm1fdmJsYW5rLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDxsaW51eC9z ZXFsb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvaWRyLmg+CiAjaW5jbHVkZSA8bGludXgvcG9sbC5o PgorI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5o PgogI2luY2x1ZGUgPGRybS9kcm1fbW9kZXMuaD4KQEAgLTIwMyw4ICsyMDQsNTYgQEAgc3RydWN0 IGRybV92YmxhbmtfY3J0YyB7CiAJICogZGlzYWJsaW5nIGZ1bmN0aW9ucyBtdWx0aXBsZSB0aW1l cy4KIAkgKi8KIAlib29sIGVuYWJsZWQ7CisKKwkvKioKKwkgKiBAd29ya2VyOiBUaGUgJmt0aHJl YWRfd29ya2VyIHVzZWQgZm9yIGV4ZWN1dGluZyB2Ymxhbmsgd29ya3MuCisJICovCisJc3RydWN0 IGt0aHJlYWRfd29ya2VyICp3b3JrZXI7CisKKwkvKioKKwkgKiBAd29ya19sb2NrOiBUaGUgc3Bp bmxvY2sgdGhhdCBwcm90ZWN0cyBAcGVuZGluZ193b3JrLCBhbG9uZyB3aXRoCisJICogYW55IG1v ZGlmaWNhdGlvbnMgdG8gJmRybV92Ymxhbmtfd29yayBpdGVtcworCSAqLworCXNwaW5sb2NrX3Qg d29ya19sb2NrOworCisJLyoqCisJICogQHBlbmRpbmdfd29yazogQSBsaXN0IG9mIHNjaGVkdWxl ZCAmZHJtX3ZibGFua193b3JrIGl0ZW1zIHRoYXQgYXJlCisJICogd2FpdGluZyBmb3IgYSBmdXR1 cmUgdmJsYW5rLgorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ193b3JrOworCisJLyoq CisJICogQHdvcmtfd2FpdF9xdWV1ZTogVGhlIHdhaXQgcXVldWUgdXNlZCBmb3Igc2lnbmFsaW5n IHRoYXQgYQorCSAqICZkcm1fdmJsYW5rX3dvcmsgaXRlbSBoYXMgZWl0aGVyIGZpbmlzaGVkIGV4 ZWN1dGluZywgb3Igd2FzCisJICogY2FuY2VsbGVkLgorCSAqLworCXdhaXRfcXVldWVfaGVhZF90 IHdvcmtfd2FpdF9xdWV1ZTsKIH07CiAKK3N0cnVjdCBkcm1fdmJsYW5rX3dvcmsgeworCXN0cnVj dCBrdGhyZWFkX3dvcmsgYmFzZTsKKwl2b2lkICgqZnVuYykoc3RydWN0IGRybV92Ymxhbmtfd29y ayAqd29yayk7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rOworCXU2NCBjb3VudDsK KworCWludCBjYW5jZWxsaW5nOyAvKiBUaGUgbnVtYmVyIG9mIGNhbmNlbGxpbmcgY2FsbHMgY3Vy cmVudGx5IHJ1bm5pbmcgKi8KKwl1OCBwZW5kaW5nOyAvKiBIb3cgbWFueSBpbnN0YW5jZXMgb2Yg dGhpcyB3b3JrIGl0ZW0gYXJlIHBlbmRpbmcgKi8KKworCS8qIFVwZGF0ZWQgZXZlcnkgdGltZSB0 aGlzIHdvcmsgaXRlbSBmaW5pc2hlcyBleGVjdXRpbmcgb3IgaXMKKwkgKiBjYW5jZWxsZWQuCisJ ICovCisJc2VxY291bnRfdCBzZXFjb3VudDsKKworCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKK307 CisKK2ludCBkcm1fdmJsYW5rX3dvcmtfc2NoZWR1bGUoc3RydWN0IGRybV92Ymxhbmtfd29yayAq d29yaywKKwkJCSAgICAgdTY0IGNvdW50LCBib29sIG5leHRvbm1pc3MpOwordm9pZCBkcm1fdmJs YW5rX3dvcmtfaW5pdChzdHJ1Y3QgZHJtX3ZibGFua193b3JrICp3b3JrLCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCisJCQkgIHZvaWQgKCpmdW5jKShzdHJ1Y3QgZHJtX3ZibGFua193b3JrICp3b3Jr KSk7Citib29sIGRybV92Ymxhbmtfd29ya19jYW5jZWxfc3luYyhzdHJ1Y3QgZHJtX3ZibGFua193 b3JrICp3b3JrKTsKK3ZvaWQgZHJtX3ZibGFua193b3JrX2ZsdXNoKHN0cnVjdCBkcm1fdmJsYW5r X3dvcmsgKndvcmspOworCiBpbnQgZHJtX3ZibGFua19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBudW1fY3J0Y3MpOwogYm9vbCBkcm1fZGV2X2hhc192YmxhbmsoY29u c3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB1NjQgZHJtX2NydGNfdmJsYW5rX2NvdW50KHN0 cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci0tIAoyLjI2LjIKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=