From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: [PATCH] drm/vc4: Implement precise vblank timestamping. Date: Thu, 23 Jun 2016 08:17:50 +0200 Message-ID: <1466662670-9884-2-git-send-email-mario.kleiner.de@gmail.com> References: <1466662670-9884-1-git-send-email-mario.kleiner.de@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id E01426E8A3 for ; Thu, 23 Jun 2016 06:18:35 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id c82so7901964wme.3 for ; Wed, 22 Jun 2016 23:18:35 -0700 (PDT) In-Reply-To: <1466662670-9884-1-git-send-email-mario.kleiner.de@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UHJlY2lzZSB2YmxhbmsgdGltZXN0YW1waW5nIGlzIGltcGxlbWVudGVkIHZpYSB0aGUKdXN1YWwg c2Nhbm91dCBwb3NpdGlvbiBiYXNlZCBtZXRob2QuIE9uIFZDNCB0aGUKcGl4ZWx2YWx2ZXMgUFYg ZG8gbm90IGhhdmUgYSBzY2Fub3V0IHBvc2l0aW9uCnJlZ2lzdGVyLiBPbmx5IHRoZSBoYXJkd2Fy ZSB2aWRlbyBzY2FsZXIgSFZTIGhhcyBhCnNpbWlsYXIgcmVnaXN0ZXIgd2hpY2ggZGVzY3JpYmVz IHdoaWNoIHNjYW5saW5lIGZvcgp0aGUgb3V0cHV0IGlzIGN1cnJlbnRseSBjb21wb3NpdGVkIGFu ZCBzdG9yZWQgaW4gdGhlCkhWUyBmaWZvIGZvciBsYXRlciBjb25zdW1wdGlvbiBieSB0aGUgUFYu CgpUaGlzIGNhdXNlcyBhIHByb2JsZW0gaW4gdGhhdCB0aGUgSFZTIHJ1bnMgYXQgYSBtdWNoCmZh c3RlciBjbG9jayAoc3lzdGVtIGNsb2NrIC8gYXVkaW8gZ2F0ZSkgdGhhbiB0aGUgUFYKd2hpY2gg cnVucyBhdCB2aWRlbyBtb2RlIGRvdCBjbG9jaywgc28gdGhlIHVubGVzcyB0aGUKZmlmbyBiZXR3 ZWVuIEhWUyBhbmQgUFYgaXMgZnVsbCwgdGhlIEhWUyB3aWxsIHByb2dyZXNzCmZhc3RlciBpbiBp dHMgb2JzZXJ2YWJsZSByZWFkIGxpbmUgcG9zaXRpb24gdGhhbiB2aWRlbwpzY2FuIHJhdGUsIHNv IHRoZSBIVlMgcG9zaXRpb24gcmVhZGluZyBjYW4ndCBiZSBkaXJlY3RseQp0cmFuc2xhdGVkIGlu dG8gYSBzY2Fub3V0IHBvc2l0aW9uIGZvciB0aW1lc3RhbXAgY29ycmVjdGlvbi4KCkFkZGl0aW9u YWxseSB3aGVuIHRoZSBQViBpcyBpbiB2YmxhbmssIGl0IGRvZXNuJ3QgY29uc3VtZQpmcm9tIHRo ZSBmaWZvLCBzbyB0aGUgZmlmbyBnZXRzIGZ1bGwgdmVyeSBxdWlja2x5IGFuZCB0aGVuCnRoZSBI VlMgc3RvcHMgY29tcG9zaXRpbmcgdW50aWwgdGhlIFBWIGVudGVycyBhY3RpdmUgc2Nhbm91dAph bmQgc3RhcnRzIGNvbnN1bWluZyBzY2FubGluZXMgZnJvbSB0aGUgZmlmbyBhZ2FpbiwgbWFraW5n Cm5ldyBzcGFjZSBmb3IgdGhlIEhWUyB0byBjb21wb3NpdGUuCgpUaGVyZWZvcmUgYSBzaW1wbGUg dHJhbnNsYXRpb24gb2YgSFZTIHJlYWQgcG9zaXRpb24gaW50bwplbGFwc2VkIHRpbWUgc2luY2Ug KG9yIHRvKSBzdGFydCBvZiBhY3RpdmUgc2Nhbm91dCBkb2VzCm5vdCB3b3JrLCBidXQgZm9yIHRo ZSBtb3N0IGludGVyZXN0aW5nIGNhc2VzIHdlIGNhbiBzdGlsbApnZXQgdXNlZnVsIGFuZCBzdWZm aWNpZW50bHkgYWNjdXJhdGUgcmVzdWx0czoKCjEuIFRoZSBQViBlbnRlcnMgYWN0aXZlIHNjYW5v dXQgb2YgYSBuZXcgZnJhbWUgd2l0aCB0aGUKICAgZmlmbyBvZiB0aGUgSFZTIGNvbXBsZXRlbHkg ZnVsbCwgYW5kIHRoZSBIVlMgY2FuIHJlZmlsbAogICBhbnkgZmlmbyBsaW5lIHdoaWNoIGdldHMg Y29uc3VtZWQgYW5kIHRoZXJlYnkgZnJlZWQgdXAgYnkKICAgdGhlIFBWIGR1cmluZyBhY3RpdmUg c2Nhbm91dCB2ZXJ5IHF1aWNrbHkuIFRoZXJlZm9yZSB0aGUKICAgUFYgYW5kIEhWUyB3b3JrIGVm ZmVjdGl2ZWx5IGluIGxvY2stc3RlcCBkdXJpbmcgYWN0aXZlCiAgIHNjYW5vdXQgd2l0aCB0aGUg ZmlmbyBuZXZlciBoYXZpbmcgbW9yZSB0aGFuIDEgc2NhbmxpbmUKICAgZnJlZWQgdXAgYnkgdGhl IFBWIGJlZm9yZSBpdCBnZXRzIHJlZmlsbGVkLiBUaGUgUFYncwogICByZWFsIHNjYW5vdXQgcG9z aXRpb24gaXMgdGhlcmVmb3JlIHRyYWlsaW5nIHRoZSBIVlMKICAgY29tcG9zaXRpbmcgcG9zaXRp b24gYXMgc2Nhbm91dHBvcyA9IGh2c3BvcyAtIGZpZm9zaXplCiAgIGFuZCB3ZSBjYW4gZ2V0IHRo ZSB0cnVlIHNjYW5vdXRwb3MgYXMgSFZTIHJlYWRwb3MgbWludXMKICAgZmlmbyBzaXplLCBzbyBw cmVjaXNlIHRpbWVzdGFtcGluZyB3b3JrcyB3aGlsZSBpbiBhY3RpdmUKICAgc2Nhbm91dCwgZXhj ZXB0IGZvciB0aGUgbGFzdCBmZXcgc2NhbmxpbmVzIG9mIHRoZSBmcmFtZSwKICAgd2hlbiB0aGUg SFZTIHJlYWNoZXMgZW5kIG9mIGZyYW1lLCBzdG9wcyBjb21wb3NpdGluZyBhbmQKICAgdGhlIFBW IGNhdGNoZXMgdXAgYW5kIGRyYWlucyB0aGUgZmlmby4gVGhpcyBzcGVjaWFsIGNhc2UKICAgd291 bGQgb25seSBpbnRyb2R1Y2UgbWlub3IgZXJyb3JzIHRob3VnaC4KCjIuIElmIHdlIGFyZSBpbiB2 YmxhbmssIHRoZW4gd2UgY2FuIG9ubHkgZ3Vlc3Mgc29tZXRoaW5nCiAgIHJlYXNvbmFibGUuIElm IGNhbGxlZCBmcm9tIHZibGFuayBpcnEsIHdlIGFzc3VtZSB0aGUgaXJxIGlzCiAgIHVzdWFsbHkg ZGlzcGF0Y2hlZCB3aXRoIG1pbmltdW0gZGVsYXksIHNvIHdlIGNhbiB0YWtlIGEKICAgdGltZXN0 YW1wIHRha2VuIGF0IGVudHJ5IGludG8gdGhlIHZibGFuayBpcnEgaGFuZGxlciBhcyBhCiAgIGJh c2VsaW5lIGFuZCB0aGVuIGFkZCBhIGZ1bGwgdmJsYW5rIGR1cmF0aW9uIHVudGlsIHRoZQogICBn dWVzc2VkIHN0YXJ0IG9mIGFjdGl2ZSBzY2Fub3V0LiBBcyBpcnEgZGlzcGF0Y2ggaXMgdXN1YWxs eQogICBwcmV0dHkgbG93IGxhdGVuY3kgdGhpcyB3b3JrcyB3aXRoIHJlbGF0aXZlbHkgbG93IGpp dHRlciBhbmQKICAgZ29vZCByZXN1bHRzLgoKICAgSWYgd2UgYXJlbid0IGNhbGxlZCBmcm9tIHZi bGFuayB0aGVuIHdlIGNvdWxkIGJlIGFueXdoZXJlCiAgIHdpdGhpbiB0aGUgdmJsYW5rIGludGVy dmFsLCBzbyB3ZSByZXR1cm4gYSBuZXV0cmFsIHJlc3VsdCwKICAgc2ltcGx5IHRoZSBjdXJyZW50 IHN5c3RlbSB0aW1lc3RhbXAsIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KCk1lYXN1cmVtZW50IHNo b3dzIHRoZSBnZW5lcmF0ZWQgdGltZXN0YW1wcyB0byBiZSByYXRoZXIgcHJlY2lzZSwKYW5kIGF0 IGxlYXN0IG5ldmVyIG9mZiBtb3JlIHRoYW4gMSB2YmxhbmsgZHVyYXRpb24gd29yc3QtY2FzZS4K CkxpbWl0YXRpb25zOiBEb2Vzbid0IHdvcmsgd2VsbCB5ZXQgZm9yIGludGVybGFjZWQgdmlkZW8g bW9kZXMsCiAgICAgICAgICAgICB0aGVyZWZvcmUgZGlzYWJsZWQgaW4gaW50ZXJsYWNlZCBtb2Rl IGZvciBub3cuCgpTaWduZWQtb2ZmLWJ5OiBNYXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRl QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMgfCAxNDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2Rydi5jICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCAgfCAg IDcgKysKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaCB8ICAgNCArKwogNCBmaWxlcyBj aGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYwppbmRleCBjODJk NDY4Li5jNzUxNjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5jCkBAIC00Niw2ICs0Niw5IEBAIHN0 cnVjdCB2YzRfY3J0YyB7CiAJY29uc3Qgc3RydWN0IHZjNF9jcnRjX2RhdGEgKmRhdGE7CiAJdm9p ZCBfX2lvbWVtICpyZWdzOwogCisJLyogVGltZXN0YW1wIGF0IHN0YXJ0IG9mIHZibGFuayBpcnEg LSB1bmFmZmVjdGVkIGJ5IGxvY2sgZGVsYXlzLiAqLworCWt0aW1lX3QgdF92Ymxhbms7CisKIAkv KiBXaGljaCBIVlMgY2hhbm5lbCB3ZSdyZSB1c2luZyBmb3Igb3VyIENSVEMuICovCiAJaW50IGNo YW5uZWw7CiAKQEAgLTE0Niw2ICsxNDksMTQ1IEBAIGludCB2YzRfY3J0Y19kZWJ1Z2ZzX3JlZ3Mo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB9CiAjZW5kaWYKIAoraW50IHZjNF9j cnRjX2dldF9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBj cnRjX2lkLAorCQkJICAgIHVuc2lnbmVkIGludCBmbGFncywgaW50ICp2cG9zLCBpbnQgKmhwb3Ms CisJCQkgICAga3RpbWVfdCAqc3RpbWUsIGt0aW1lX3QgKmV0aW1lLAorCQkJICAgIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0 b192YzRfZGV2KGRldik7CisJc3RydWN0IHZjNF9jcnRjICp2YzRfY3J0YyA9IHZjNC0+Y3J0Y1tj cnRjX2lkXTsKKwl1MzIgdmFsOworCWludCBmaWZvX2xpbmVzOworCWludCB2YmxhbmtfbGluZXM7 CisJaW50IHJldCA9IDA7CisKKwkvKgorCSAqIFhYWCBEb2Vzbid0IHdvcmsgd2VsbCBpbiBpbnRl cmxhY2VkIG1vZGUgeWV0LCBwYXJ0aWFsbHkgZHVlCisJICogdG8gcHJvYmxlbXMgaW4gdmM0IGtt cyBvciBkcm0gY29yZSBpbnRlcmxhY2VkIG1vZGUgaGFuZGxpbmcsCisJICogc28gZGlzYWJsZSBm b3Igbm93IGluIGludGVybGFjZWQgbW9kZS4KKwkgKi8KKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX0lOVEVSTEFDRSkKKwkJcmV0dXJuIHJldDsKKworCS8qIHByZWVtcHRfZGlzYWJs ZV9ydCgpIHNob3VsZCBnbyByaWdodCBoZXJlIGluIFBSRUVNUFRfUlQgcGF0Y2hzZXQuICovCisK KwkvKiBHZXQgb3B0aW9uYWwgc3lzdGVtIHRpbWVzdGFtcCBiZWZvcmUgcXVlcnkuICovCisJaWYg KHN0aW1lKQorCQkqc3RpbWUgPSBrdGltZV9nZXQoKTsKKworCS8qCisJICogUmVhZCB2ZXJ0aWNh bCBzY2FubGluZSB3aGljaCBpcyBjdXJyZW50bHkgY29tcG9zZWQgZm9yIG91cgorCSAqIHBpeGVs dmFsdmUgYnkgdGhlIEhWUywgYW5kIGFsc28gdGhlIHNjYWxlciBzdGF0dXMuCisJICovCisJdmFs ID0gSFZTX1JFQUQoU0NBTEVSX0RJU1BTVEFUWCh2YzRfY3J0Yy0+Y2hhbm5lbCkpOworCisJLyog R2V0IG9wdGlvbmFsIHN5c3RlbSB0aW1lc3RhbXAgYWZ0ZXIgcXVlcnkuICovCisJaWYgKGV0aW1l KQorCQkqZXRpbWUgPSBrdGltZV9nZXQoKTsKKworCS8qIHByZWVtcHRfZW5hYmxlX3J0KCkgc2hv dWxkIGdvIHJpZ2h0IGhlcmUgaW4gUFJFRU1QVF9SVCBwYXRjaHNldC4gKi8KKworCS8qIFZlcnRp Y2FsIHBvc2l0aW9uIG9mIGh2cyBjb21wb3NlZCBzY2FubGluZS4gKi8KKwkqdnBvcyA9IFZDNF9H RVRfRklFTEQodmFsLCBTQ0FMRVJfRElTUFNUQVRYX0xJTkUpOworCisJLyogTm8gaHBvcyBpbmZv IGF2YWlsYWJsZS4gKi8KKwlpZiAoaHBvcykKKwkJKmhwb3MgPSAwOworCisJLyogVGhpcyBpcyB0 aGUgb2Zmc2V0IHdlIG5lZWQgZm9yIHRyYW5zbGF0aW5nIGh2cyAtPiBwdiBzY2Fub3V0IHBvcy4g Ki8KKwkvKiBYWFggRmluZCBwcm9wZXIgZm9ybXVsYSBmcm9tIGh3IGRvY3MgaW5zdGVhZCBvZiBn dWVzc3RpbWF0aW5nPyAqLworCWZpZm9fbGluZXMgPSAyMDQ4ICogNyAvIG1vZGUtPmNydGNfaGRp c3BsYXk7CisKKwlpZiAoZmlmb19saW5lcyA+IDApCisJCXJldCB8PSBEUk1fU0NBTk9VVFBPU19W QUxJRDsKKworCS8qIEhWUyBtb3JlIHRoYW4gZmlmb19saW5lcyBpbnRvIGZyYW1lIGZvciBjb21w b3NpdGluZz8gKi8KKwlpZiAoKnZwb3MgPiBmaWZvX2xpbmVzKSB7CisJCS8qCisJCSAqIFdlIGFy ZSBpbiBhY3RpdmUgc2Nhbm91dCBhbmQgY2FuIGdldCBzb21lIG1lYW5pbmdmdWwgcmVzdWx0cwor CQkgKiBmcm9tIEhWUy4gVGhlIGFjdHVhbCBQViBzY2Fub3V0IGNhbiBub3QgdHJhaWwgYmVoaW5k IG1vcmUKKwkJICogdGhhbiBmaWZvX2xpbmVzIGFzIHRoYXQgaXMgdGhlIGZpZm8ncyBjYXBhY2l0 eS4gQXNzdW1lIHRoYXQKKwkJICogaW4gYWN0aXZlIHNjYW5vdXQgdGhlIEhWUyBhbmQgUFYgd29y ayBpbiBsb2Nrc3RlcCB3cnQuIEhWUworCQkgKiByZWZpbGxpbmcgdGhlIGZpZm8gYW5kIFBWIGNv bnN1bWluZyBmcm9tIHRoZSBmaWZvLCBpZS4KKwkJICogd2hlbmV2ZXIgdGhlIFBWIGNvbnN1bWVz IGFuZCBmcmVlcyB1cCBhIHNjYW5saW5lIGluIHRoZQorCQkgKiBmaWZvLCB0aGUgSFZTIHdpbGwg aW1tZWRpYXRlbHkgcmVmaWxsIGl0LCB0aGVyZWZvcmUKKwkJICogaW5jcmVtZW50aW5nIHZwb3Mu IFRoZXJlZm9yZSB3ZSBjaG9vc2UgSFZTIHJlYWQgcG9zaXRpb24gLQorCQkgKiBmaWZvIHNpemUg aW4gc2NhbmxpbmVzIGFzIGEgZXN0aW1hdGUgb2YgdGhlIHJlYWwgc2Nhbm91dAorCQkgKiBwb3Np dGlvbiBvZiB0aGUgUFYuCisJCSAqLworCQkqdnBvcyAtPSBmaWZvX2xpbmVzICsgMTsKKwkJaWYg KG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJCQkqdnBvcyAvPSAyOwor CisJCXJldCB8PSBEUk1fU0NBTk9VVFBPU19BQ0NVUkFURTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwkvKgorCSAqIExlc3M6IFRoaXMgaGFwcGVucyB3aGVuIHdlIGFyZSBpbiB2YmxhbmsgYW5kIHRo ZSBIVlMsIGFmdGVyIGdldHRpbmcKKwkgKiB0aGUgVlNUQVJUIHJlc3RhcnQgc2lnbmFsIGZyb20g dGhlIFBWLCBqdXN0IHN0YXJ0ZWQgcmVmaWxsaW5nIGl0cworCSAqIGZpZm8gd2l0aCBuZXcgbGlu ZXMgZnJvbSB0aGUgdG9wLW1vc3QgbGluZXMgb2YgdGhlIG5ldyBmcmFtZWJ1ZmZlcnMuCisJICog VGhlIFBWIGRvZXMgbm90IHNjYW4gb3V0IGluIHZibGFuaywgc28gZG9lcyBub3QgcmVtb3ZlIGxp bmVzIGZyb20KKwkgKiB0aGUgZmlmbywgc28gdGhlIGZpZm8gd2lsbCBiZSBmdWxsIHF1aWNrbHkg YW5kIHRoZSBIVlMgaGFzIHRvIHBhdXNlLgorCSAqIFdlIGNhbid0IGdldCBtZWFuaW5nZnVsIHJl YWRpbmdzIHdydC4gc2NhbmxpbmUgcG9zaXRpb24gb2YgdGhlIFBWCisJICogYW5kIG5lZWQgdG8g bWFrZSB0aGluZ3MgdXAgaW4gYSBhcHByb3hpbWF0aXZlIGJ1dCBjb25zaXN0ZW50IHdheS4KKwkg Ki8KKwlyZXQgfD0gRFJNX1NDQU5PVVRQT1NfSU5fVkJMQU5LOworCXZibGFua19saW5lcyA9IG1v ZGUtPmNydGNfdnRvdGFsIC0gbW9kZS0+Y3J0Y192ZGlzcGxheTsKKworCWlmIChmbGFncyAmIERS TV9DQUxMRURfRlJPTV9WQkxJUlEpIHsKKwkJLyoKKwkJICogQXNzdW1lIHRoZSBpcnEgaGFuZGxl ciBnb3QgY2FsbGVkIGNsb3NlIHRvIGZpcnN0CisJCSAqIGxpbmUgb2YgdmJsYW5rLCBzbyBQViBo YXMgYWJvdXQgYSBmdWxsIHZibGFuaworCQkgKiBzY2FubGluZXMgdG8gZ28sIGFuZCBhcyBhIGJh c2UgdGltZXN0YW1wIHVzZSB0aGUKKwkJICogb25lIHRha2VuIGF0IGVudHJ5IGludG8gdmJsYW5r IGlycSBoYW5kbGVyLCBzbyBpdAorCQkgKiBpcyBub3QgYWZmZWN0ZWQgYnkgcmFuZG9tIGRlbGF5 cyBkdWUgdG8gbG9jaworCQkgKiBjb250ZW50aW9uIG9uIGV2ZW50X2xvY2sgb3IgdmJsYW5rX3Rp bWUgbG9jayBpbgorCQkgKiB0aGUgY29yZS4KKwkJICovCisJCSp2cG9zID0gLXZibGFua19saW5l czsKKworCQlpZiAoc3RpbWUpCisJCQkqc3RpbWUgPSB2YzRfY3J0Yy0+dF92Ymxhbms7CisJCWlm IChldGltZSkKKwkJCSpldGltZSA9IHZjNF9jcnRjLT50X3ZibGFuazsKKworCQkvKgorCQkgKiBJ ZiB0aGUgSFZTIGZpZm8gaXMgbm90IHlldCBmdWxsIHRoZW4gd2Uga25vdyBmb3IgY2VydGFpbgor CQkgKiB3ZSBhcmUgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHZibGFuaywgYXMgdGhlIGh2cyBq dXN0CisJCSAqIHN0YXJ0ZWQgcmVmaWxsaW5nLCBhbmQgdGhlIHN0aW1lIGFuZCBldGltZSB0aW1l c3RhbXBzCisJCSAqIHRydWx5IGNvcnJlc3BvbmQgdG8gc3RhcnQgb2YgdmJsYW5rLgorCQkgKi8K KwkJaWYgKCh2YWwgJiBTQ0FMRVJfRElTUFNUQVRYX0ZVTEwpICE9IFNDQUxFUl9ESVNQU1RBVFhf RlVMTCkKKwkJCXJldCB8PSBEUk1fU0NBTk9VVFBPU19BQ0NVUkFURTsKKwl9IGVsc2UgeworCQkv KgorCQkgKiBObyBjbHVlIHdoZXJlIHdlIGFyZSBpbnNpZGUgdmJsYW5rLiBSZXR1cm4gYSB2cG9z IG9mIHplcm8sCisJCSAqIHdoaWNoIHdpbGwgY2F1c2UgY2FsbGluZyBjb2RlIHRvIGp1c3QgcmV0 dXJuIHRoZSBldGltZQorCQkgKiB0aW1lc3RhbXAgdW5jb3JyZWN0ZWQuIEF0IGxlYXN0IHRoaXMg aXMgbm8gd29yc2UgdGhhbiB0aGUKKwkJICogc3RhbmRhcmQgZmFsbGJhY2suCisJCSAqLworCQkq dnBvcyA9IDA7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworaW50IHZjNF9jcnRjX2dldF92Ymxh bmtfdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRjX2lk LAorCQkJCSAgaW50ICptYXhfZXJyb3IsIHN0cnVjdCB0aW1ldmFsICp2YmxhbmtfdGltZSwKKwkJ CQkgIHVuc2lnbmVkIGZsYWdzKQoreworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2 KGRldik7CisJc3RydWN0IHZjNF9jcnRjICp2YzRfY3J0YyA9IHZjNC0+Y3J0Y1tjcnRjX2lkXTsK KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmdmM0X2NydGMtPmJhc2U7CisJc3RydWN0IGRybV9j cnRjX3N0YXRlICpzdGF0ZSA9IGNydGMtPnN0YXRlOworCisJLyogSGVscGVyIHJvdXRpbmUgaW4g RFJNIGNvcmUgZG9lcyBhbGwgdGhlIHdvcms6ICovCisJcmV0dXJuIGRybV9jYWxjX3ZibHRpbWVz dGFtcF9mcm9tX3NjYW5vdXRwb3MoZGV2LCBjcnRjX2lkLCBtYXhfZXJyb3IsCisJCQkJCQkgICAg IHZibGFua190aW1lLCBmbGFncywKKwkJCQkJCSAgICAgJnN0YXRlLT5hZGp1c3RlZF9tb2RlKTsK K30KKwogc3RhdGljIHZvaWQgdmM0X2NydGNfZGVzdHJveShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiB7CiAJZHJtX2NydGNfY2xlYW51cChjcnRjKTsKQEAgLTUxOSw2ICs2NjEsNyBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgdmM0X2NydGNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKIAlp cnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsKIAogCWlmIChzdGF0ICYgUFZfSU5UX1ZGUF9TVEFS VCkgeworCQl2YzRfY3J0Yy0+dF92YmxhbmsgPSBrdGltZV9nZXQoKTsKIAkJQ1JUQ19XUklURShQ Vl9JTlRTVEFULCBQVl9JTlRfVkZQX1NUQVJUKTsKIAkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygm dmM0X2NydGMtPmJhc2UpOwogCQl2YzRfY3J0Y19oYW5kbGVfcGFnZV9mbGlwKHZjNF9jcnRjKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZHJ2LmMKaW5kZXggMTVhNGY2Yy4uNGEwOWJlZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf ZHJ2LmMKQEAgLTkyLDYgKzkyLDggQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZjNF9kcm1f ZHJpdmVyID0gewogCS5lbmFibGVfdmJsYW5rID0gdmM0X2VuYWJsZV92YmxhbmssCiAJLmRpc2Fi bGVfdmJsYW5rID0gdmM0X2Rpc2FibGVfdmJsYW5rLAogCS5nZXRfdmJsYW5rX2NvdW50ZXIgPSBk cm1fdmJsYW5rX25vX2h3X2NvdW50ZXIsCisJLmdldF9zY2Fub3V0X3Bvc2l0aW9uID0gdmM0X2Ny dGNfZ2V0X3NjYW5vdXRwb3MsCisJLmdldF92YmxhbmtfdGltZXN0YW1wID0gdmM0X2NydGNfZ2V0 X3ZibGFua190aW1lc3RhbXAsCiAKICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKIAkuZGVi dWdmc19pbml0ID0gdmM0X2RlYnVnZnNfaW5pdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKaW5kZXggYzc5 OWJhYS4uOGUzYjg0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKQEAgLTQxNSw2ICs0MTUsMTMgQEAg ZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdmM0X2NydGNfZHJpdmVyOwogaW50IHZjNF9l bmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRjX2lk KTsKIHZvaWQgdmM0X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2ln bmVkIGludCBjcnRjX2lkKTsKIGludCB2YzRfY3J0Y19kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICphcmcpOworaW50IHZjNF9jcnRjX2dldF9zY2Fub3V0cG9zKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRjX2lkLAorCQkJICAgIHVuc2lnbmVkIGlu dCBmbGFncywgaW50ICp2cG9zLCBpbnQgKmhwb3MsCisJCQkgICAga3RpbWVfdCAqc3RpbWUsIGt0 aW1lX3QgKmV0aW1lLAorCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl KTsKK2ludCB2YzRfY3J0Y19nZXRfdmJsYW5rX3RpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgY3J0Y19pZCwKKwkJCQkgIGludCAqbWF4X2Vycm9yLCBzdHJ1Y3Qg dGltZXZhbCAqdmJsYW5rX3RpbWUsCisJCQkJICB1bnNpZ25lZCBmbGFncyk7CiAKIC8qIHZjNF9k ZWJ1Z2ZzLmMgKi8KIGludCB2YzRfZGVidWdmc19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9y KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaCBiL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X3JlZ3MuaAppbmRleCBmOTllZWNlLi42M2NkYzI4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfcmVncy5oCkBAIC0zNzUsNiArMzc1LDEwIEBACiAjIGRlZmluZSBTQ0FMRVJfRElTUFNU QVRYX01PREVfRU9GCQkzCiAjIGRlZmluZSBTQ0FMRVJfRElTUFNUQVRYX0ZVTEwJCQlCSVQoMjkp CiAjIGRlZmluZSBTQ0FMRVJfRElTUFNUQVRYX0VNUFRZCQkJQklUKDI4KQorIyBkZWZpbmUgU0NB TEVSX0RJU1BTVEFUWF9GUkFNRV9DT1VOVF9NQVNLCVZDNF9NQVNLKDE3LCAxMikKKyMgZGVmaW5l IFNDQUxFUl9ESVNQU1RBVFhfRlJBTUVfQ09VTlRfU0hJRlQJMTIKKyMgZGVmaW5lIFNDQUxFUl9E SVNQU1RBVFhfTElORV9NQVNLCQlWQzRfTUFTSygxMSwgMCkKKyMgZGVmaW5lIFNDQUxFUl9ESVNQ U1RBVFhfTElORV9TSElGVAkJMAogI2RlZmluZSBTQ0FMRVJfRElTUENUUkwxICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDAwMDA1MAogI2RlZmluZSBTQ0FMRVJfRElTUEJLR05EMSAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDAwMDA1NAogI2RlZmluZSBTQ0FMRVJfRElTUEJLR05EWCh4KQkJ CShTQ0FMRVJfRElTUEJLR05EMCArICAgICAgICBcCi0tIAoyLjcuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==