From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH] drm: use seqlocks for vblank time/count Date: Mon, 9 May 2016 17:08:43 +0100 Message-ID: <1462810123-28493-1-git-send-email-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhaW1zIHRvIHJlcGxhY2UgdGhlIHJvbGwteW91ci1vd24gc2VxbG9jayBpbXBs ZW1lbnRhdGlvbiB3aXRoCmZ1bGwtYmxvd24gc2VxbG9jaycuIFdlIGFsc28gcmVtb3ZlIHRoZSB0 aW1lc3RhbXAgcmluZy1idWZmZXIgaW4gZmF2b3VyCm9mIHNpbmdsZSB0aW1lc3RhbXAvY291bnQg cGFpciBwcm90ZWN0ZWQgYnkgYSBzZXFsb2NrLiBJbiB0dXJuIHRoaXMKbWVhbnMgd2UgY2FuIG5v dyBpbmNyZW1lbnQgdGhlIHZibGFuayBmcmVlbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IKY2xhbXBp bmcuCgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2lycS5jIHwgMTExICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIGluY2x1ZGUvZHJtL2RybVAuaCAgICAgICAgfCAgMTQgKystLS0tCiAyIGZpbGVz IGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEwMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwpp bmRleCAzYzFhNmYxLi5iZmM2YThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKQEAgLTQyLDEwICs0Miw2IEBACiAj aW5jbHVkZSA8bGludXgvdmdhYXJiLmg+CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CiAKLS8q IEFjY2VzcyBtYWNybyBmb3Igc2xvdHMgaW4gdmJsYW5rIHRpbWVzdGFtcCByaW5nYnVmZmVyLiAq LwotI2RlZmluZSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCBjb3VudCkgXAotCSgoZGV2KS0+ dmJsYW5rW3BpcGVdLnRpbWVbKGNvdW50KSAlIERSTV9WQkxBTktUSU1FX1JCU0laRV0pCi0KIC8q IFJldHJ5IHRpbWVzdGFtcCBjYWxjdWxhdGlvbiB1cCB0byAzIHRpbWVzIHRvIHNhdGlzZnkKICAq IGRybV90aW1lc3RhbXBfcHJlY2lzaW9uIGJlZm9yZSBnaXZpbmcgdXAuCiAgKi8KQEAgLTgyLDI5 ICs3OCwxMyBAQCBzdGF0aWMgdm9pZCBzdG9yZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHBpcGUsCiAJCQkgc3RydWN0IHRpbWV2YWwgKnRfdmJsYW5rLCB1MzIg bGFzdCkKIHsKIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52Ymxhbmtb cGlwZV07Ci0JdTMyIHRzbG90OwogCi0JYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXYtPnZibGFua190 aW1lX2xvY2spOworCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2LT52Ymxhbmtfc2VxbG9jay5sb2Nr KTsKIAogCXZibGFuay0+bGFzdCA9IGxhc3Q7CiAKLQkvKiBBbGwgd3JpdGVycyBob2xkIHRoZSBz cGlubG9jaywgYnV0IHJlYWRlcnMgYXJlIHNlcmlhbGl6ZWQgYnkKLQkgKiB0aGUgbGF0Y2hpbmcg b2YgdmJsYW5rLT5jb3VudCBiZWxvdy4KLQkgKi8KLQl0c2xvdCA9IHZibGFuay0+Y291bnQgKyB2 YmxhbmtfY291bnRfaW5jOwotCXZibGFua3RpbWVzdGFtcChkZXYsIHBpcGUsIHRzbG90KSA9ICp0 X3ZibGFuazsKLQotCS8qCi0JICogdmJsYW5rIHRpbWVzdGFtcCB1cGRhdGVzIGFyZSBwcm90ZWN0 ZWQgb24gdGhlIHdyaXRlIHNpZGUgd2l0aAotCSAqIHZibGFua190aW1lX2xvY2ssIGJ1dCBvbiB0 aGUgcmVhZCBzaWRlIGRvbmUgbG9ja2xlc3NseSB1c2luZyBhCi0JICogc2VxdWVuY2UtbG9jayBv biB0aGUgdmJsYW5rIGNvdW50ZXIuIEVuc3VyZSBjb3JyZWN0IG9yZGVyaW5nIHVzaW5nCi0JICog bWVtb3J5IGJhcnJyaWVycy4gV2UgbmVlZCB0aGUgYmFycmllciBib3RoIGJlZm9yZSBhbmQgYWxz byBhZnRlciB0aGUKLQkgKiBjb3VudGVyIHVwZGF0ZSB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBu ZXh0IHRpbWVzdGFtcCB3cml0ZS4KLQkgKiBUaGUgcmVhZC1zaWRlIGJhcnJpZXJzIGZvciB0aGlz IGFyZSBpbiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lLgotCSAqLwotCXNtcF93bWIoKTsKKwl2 YmxhbmstPnRpbWUgPSAqdF92Ymxhbms7CiAJdmJsYW5rLT5jb3VudCArPSB2YmxhbmtfY291bnRf aW5jOwotCXNtcF93bWIoKTsKIH0KIAogLyoqCkBAIC0xMjcsNyArMTA3LDcgQEAgc3RhdGljIHZv aWQgZHJtX3Jlc2V0X3ZibGFua190aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUKIAlzdHJ1Y3QgdGltZXZhbCB0X3ZibGFuazsKIAlpbnQgY291bnQgPSBE Uk1fVElNRVNUQU1QX01BWFJFVFJJRVM7CiAKLQlzcGluX2xvY2soJmRldi0+dmJsYW5rX3RpbWVf bG9jayk7CisJd3JpdGVfc2VxbG9jaygmZGV2LT52Ymxhbmtfc2VxbG9jayk7CiAKIAkvKgogCSAq IHNhbXBsZSB0aGUgY3VycmVudCBjb3VudGVyIHRvIGF2b2lkIHJhbmRvbSBqdW1wcwpAQCAtMTUy LDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGRybV9yZXNldF92YmxhbmtfdGltZXN0YW1wKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlCiAJICovCiAJc3RvcmVfdmJsYW5r KGRldiwgcGlwZSwgMSwgJnRfdmJsYW5rLCBjdXJfdmJsYW5rKTsKIAotCXNwaW5fdW5sb2NrKCZk ZXYtPnZibGFua190aW1lX2xvY2spOworCXdyaXRlX3NlcXVubG9jaygmZGV2LT52Ymxhbmtfc2Vx bG9jayk7CiB9CiAKIC8qKgpAQCAtMjA1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIGRybV91cGRh dGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBl LAogCQljb25zdCBzdHJ1Y3QgdGltZXZhbCAqdF9vbGQ7CiAJCXU2NCBkaWZmX25zOwogCi0JCXRf b2xkID0gJnZibGFua3RpbWVzdGFtcChkZXYsIHBpcGUsIHZibGFuay0+Y291bnQpOworCQl0X29s ZCA9ICZ2YmxhbmstPnRpbWU7CiAJCWRpZmZfbnMgPSB0aW1ldmFsX3RvX25zKCZ0X3ZibGFuaykg LSB0aW1ldmFsX3RvX25zKHRfb2xkKTsKIAogCQkvKgpAQCAtMjM5LDQ5ICsyMTksNiBAQCBzdGF0 aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZSwKIAkJZGlmZiA9IDE7CiAJfQogCi0JLyoKLQkgKiBGSU1YRTogTmVl ZCB0byByZXBsYWNlIHRoaXMgaGFjayB3aXRoIHByb3BlciBzZXFsb2Nrcy4KLQkgKgotCSAqIFJl c3RyaWN0IHRoZSBidW1wIG9mIHRoZSBzb2Z0d2FyZSB2YmxhbmsgY291bnRlciB0byBhIHNhZmUg bWF4aW11bQotCSAqIHZhbHVlIG9mICsxIHdoZW5ldmVyIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0 eSB0aGF0IGNvbmN1cnJlbnQgcmVhZGVycwotCSAqIG9mIHZibGFuayB0aW1lc3RhbXBzIGNvdWxk IGJlIGFjdGl2ZSBhdCB0aGUgbW9tZW50LCBhcyB0aGUgY3VycmVudAotCSAqIGltcGxlbWVudGF0 aW9uIG9mIHRoZSB0aW1lc3RhbXAgY2FjaGluZyBhbmQgdXBkYXRpbmcgaXMgbm90IHNhZmUKLQkg KiBhZ2FpbnN0IGNvbmN1cnJlbnQgcmVhZGVycyBmb3IgY2FsbHMgdG8gc3RvcmVfdmJsYW5rKCkg d2l0aCBhIGJ1bXAKLQkgKiBvZiBhbnl0aGluZyBidXQgKzEuIEEgYnVtcCAhPSAxIHdvdWxkIHZl cnkgbGlrZWx5IHJldHVybiBjb3JydXB0ZWQKLQkgKiB0aW1lc3RhbXBzIHRvIHVzZXJzcGFjZSwg YmVjYXVzZSB0aGUgc2FtZSBzbG90IGluIHRoZSBjYWNoZSBjb3VsZAotCSAqIGJlIGNvbmN1cnJl bnRseSB3cml0dGVuIGJ5IHN0b3JlX3ZibGFuaygpIGFuZCByZWFkIGJ5IG9uZSBvZiB0aG9zZQot CSAqIHJlYWRlcnMgd2l0aG91dCB0aGUgcmVhZC1yZXRyeSBsb2dpYyBkZXRlY3RpbmcgdGhlIGNv bGxpc2lvbi4KLQkgKgotCSAqIENvbmN1cnJlbnQgcmVhZGVycyBjYW4gZXhpc3Qgd2hlbiB3ZSBh cmUgY2FsbGVkIGZyb20gdGhlCi0JICogZHJtX3ZibGFua19vZmYoKSBvciBkcm1fdmJsYW5rX29u KCkgZnVuY3Rpb25zIGFuZCBvdGhlciBub24tdmJsYW5rLQotCSAqIGlycSBjYWxsZXJzLiBIb3dl dmVyLCBhbGwgdGhvc2UgY2FsbHMgdG8gdXMgYXJlIGhhcHBlbmluZyB3aXRoIHRoZQotCSAqIHZi bF9sb2NrIGxvY2tlZCB0byBwcmV2ZW50IGRybV92YmxhbmtfZ2V0KCksIHNvIHRoZSB2Ymxhbmsg cmVmY291bnQKLQkgKiBjYW4ndCBpbmNyZWFzZSB3aGlsZSB3ZSBhcmUgZXhlY3V0aW5nLiBUaGVy ZWZvcmUgYSB6ZXJvIHJlZmNvdW50IGF0Ci0JICogdGhpcyBwb2ludCBpcyBzYWZlIGZvciBhcmJp dHJhcnkgY291bnRlciBidW1wcyBpZiB3ZSBhcmUgY2FsbGVkCi0JICogb3V0c2lkZSB2Ymxhbmsg aXJxLCBhIG5vbi16ZXJvIGNvdW50IGlzIG5vdCAxMDAlIHNhZmUuIFVuZm9ydHVuYXRlbHkKLQkg KiB3ZSBtdXN0IGFsc28gYWNjZXB0IGEgcmVmY291bnQgb2YgMSwgYXMgd2hlbmV2ZXIgd2UgYXJl IGNhbGxlZCBmcm9tCi0JICogZHJtX3ZibGFua19nZXQoKSAtPiBkcm1fdmJsYW5rX2VuYWJsZSgp IHRoZSByZWZjb3VudCB3aWxsIGJlIDEgYW5kCi0JICogd2UgbXVzdCBsZXQgdGhhdCBvbmUgcGFz cyB0aHJvdWdoIGluIG9yZGVyIHRvIG5vdCBsb3NlIHZibGFuayBjb3VudHMKLQkgKiBkdXJpbmcg dmJsYW5rIGlycSBvZmYgLSB3aGljaCB3b3VsZCBjb21wbGV0ZWx5IGRlZmVhdCB0aGUgd2hvbGUK LQkgKiBwb2ludCBvZiB0aGlzIHJvdXRpbmUuCi0JICoKLQkgKiBXaGVuZXZlciB3ZSBhcmUgY2Fs bGVkIGZyb20gdmJsYW5rIGlycSwgd2UgaGF2ZSB0byBhc3N1bWUgY29uY3VycmVudAotCSAqIHJl YWRlcnMgZXhpc3Qgb3IgY2FuIHNob3cgdXAgYW55IHRpbWUgZHVyaW5nIG91ciBleGVjdXRpb24s IGV2ZW4gaWYKLQkgKiB0aGUgcmVmY291bnQgaXMgY3VycmVudGx5IHplcm8sIGFzIHZibGFuayBp cnFzIGFyZSB1c3VhbGx5IG9ubHkKLQkgKiBlbmFibGVkIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2Yg cmVhZGVycywgYW5kIGJlY2F1c2Ugd2hlbiB3ZSBhcmUgY2FsbGVkCi0JICogZnJvbSB2Ymxhbmsg aXJxIHdlIGNhbid0IGhvbGQgdGhlIHZibF9sb2NrIHRvIHByb3RlY3QgdXMgZnJvbSBzdWRkZW4K LQkgKiBidW1wcyBpbiB2YmxhbmsgcmVmY291bnQuIFRoZXJlZm9yZSBhbHNvIHJlc3RyaWN0IGJ1 bXBzIHRvICsxIHdoZW4KLQkgKiBjYWxsZWQgZnJvbSB2YmxhbmsgaXJxLgotCSAqLwotCWlmICgo ZGlmZiA+IDEpICYmIChhdG9taWNfcmVhZCgmdmJsYW5rLT5yZWZjb3VudCkgPiAxIHx8Ci0JICAg IChmbGFncyAmIERSTV9DQUxMRURfRlJPTV9WQkxJUlEpKSkgewotCQlEUk1fREVCVUdfVkJMKCJj bGFtcGluZyB2YmxhbmsgYnVtcCB0byAxIG9uIGNydGMgJXU6IGRpZmZyPSV1ICIKLQkJCSAgICAg ICJyZWZjb3VudCAldSwgdmJsaXJxICV1XG4iLCBwaXBlLCBkaWZmLAotCQkJICAgICAgYXRvbWlj X3JlYWQoJnZibGFuay0+cmVmY291bnQpLAotCQkJICAgICAgKGZsYWdzICYgRFJNX0NBTExFRF9G Uk9NX1ZCTElSUSkgIT0gMCk7Ci0JCWRpZmYgPSAxOwotCX0KLQogCURSTV9ERUJVR19WQkwoInVw ZGF0aW5nIHZibGFuayBjb3VudCBvbiBjcnRjICV1OiIKIAkJICAgICAgIiBjdXJyZW50PSV1LCBk aWZmPSV1LCBodz0ldSBod19sYXN0PSV1XG4iLAogCQkgICAgICBwaXBlLCB2YmxhbmstPmNvdW50 LCBkaWZmLCBjdXJfdmJsYW5rLCB2YmxhbmstPmxhc3QpOwpAQCAtMzE4LDcgKzI1NSw3IEBAIHN0 YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlKQogCSAqIHNvIG5vIHVwZGF0ZXMgb2YgdGltZXN0YW1wcyBvciBj b3VudCBjYW4gaGFwcGVuIGFmdGVyIHdlJ3ZlCiAJICogZGlzYWJsZWQuIE5lZWRlZCB0byBwcmV2 ZW50IHJhY2VzIGluIGNhc2Ugb2YgZGVsYXllZCBpcnEncy4KIAkgKi8KLQlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2LT52YmxhbmtfdGltZV9sb2NrLCBpcnFmbGFncyk7CisJd3JpdGVfc2VxbG9ja19p cnFzYXZlKCZkZXYtPnZibGFua19zZXFsb2NrLCBpcnFmbGFncyk7CiAKIAkvKgogCSAqIE9ubHkg ZGlzYWJsZSB2YmxhbmsgaW50ZXJydXB0cyBpZiB0aGV5J3JlIGVuYWJsZWQuIFRoaXMgYXZvaWRz CkBAIC0zMzgsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJICovCiAJZHJtX3Vw ZGF0ZV92YmxhbmtfY291bnQoZGV2LCBwaXBlLCAwKTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldi0+dmJsYW5rX3RpbWVfbG9jaywgaXJxZmxhZ3MpOworCXdyaXRlX3NlcXVubG9ja19p cnFyZXN0b3JlKCZkZXYtPnZibGFua19zZXFsb2NrLCBpcnFmbGFncyk7CiB9CiAKIHN0YXRpYyB2 b2lkIHZibGFua19kaXNhYmxlX2ZuKHVuc2lnbmVkIGxvbmcgYXJnKQpAQCAtNDA0LDcgKzM0MSw3 IEBAIGludCBkcm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQg aW50IG51bV9jcnRjcykKIAl1bnNpZ25lZCBpbnQgaTsKIAogCXNwaW5fbG9ja19pbml0KCZkZXYt PnZibF9sb2NrKTsKLQlzcGluX2xvY2tfaW5pdCgmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKKwlz ZXFsb2NrX2luaXQoJmRldi0+dmJsYW5rX3NlcWxvY2spOwogCiAJZGV2LT5udW1fY3J0Y3MgPSBu dW1fY3J0Y3M7CiAKQEAgLTk5MSwyNSArOTI4LDE5IEBAIHUzMiBkcm1fdmJsYW5rX2NvdW50X2Fu ZF90aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJICAg ICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3RpbWUpCiB7CiAJc3RydWN0IGRybV92YmxhbmtfY3J0 YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwotCWludCBjb3VudCA9IERSTV9USU1FU1RB TVBfTUFYUkVUUklFUzsKLQl1MzIgY3VyX3ZibGFuazsKKwl1MzIgdmJsYW5rX2NvdW50OworCXVu c2lnbmVkIGludCBzZXE7CiAKIAlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkK IAkJcmV0dXJuIDA7CiAKLQkvKgotCSAqIFZibGFuayB0aW1lc3RhbXBzIGFyZSByZWFkIGxvY2ts ZXNzLiBUbyBlbnN1cmUgY29uc2lzdGVuY3kgdGhlIHZibGFuawotCSAqIGNvdW50ZXIgaXMgcmVj aGVja2VkIGFuZCBvcmRlcmluZyBpcyBlbnN1cmVkIHVzaW5nIG1lbW9yeSBiYXJyaWVycy4KLQkg KiBUaGlzIHdvcmtzIGxpa2UgYSBzZXFsb2NrLiBUaGUgd3JpdGUtc2lkZSBiYXJyaWVycyBhcmUg aW4gc3RvcmVfdmJsYW5rLgotCSAqLwogCWRvIHsKLQkJY3VyX3ZibGFuayA9IHZibGFuay0+Y291 bnQ7Ci0JCXNtcF9ybWIoKTsKLQkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBw aXBlLCBjdXJfdmJsYW5rKTsKLQkJc21wX3JtYigpOwotCX0gd2hpbGUgKGN1cl92YmxhbmsgIT0g dmJsYW5rLT5jb3VudCAmJiAtLWNvdW50ID4gMCk7CisJCXNlcSA9IHJlYWRfc2VxYmVnaW4oJmRl di0+dmJsYW5rX3NlcWxvY2spOworCQl2YmxhbmtfY291bnQgPSB2YmxhbmstPmNvdW50OworCQkq dmJsYW5rdGltZSA9IHZibGFuay0+dGltZTsKKwl9IHdoaWxlIChyZWFkX3NlcXJldHJ5KCZkZXYt PnZibGFua19zZXFsb2NrLCBzZXEpKTsKIAotCXJldHVybiBjdXJfdmJsYW5rOworCXJldHVybiB2 YmxhbmtfY291bnQ7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUp OwogCkBAIC0xMTYwLDExICsxMDkxLDExIEBAIHN0YXRpYyBpbnQgZHJtX3ZibGFua19lbmFibGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAKIAlhc3NlcnRfc3Bp bl9sb2NrZWQoJmRldi0+dmJsX2xvY2spOwogCi0Jc3Bpbl9sb2NrKCZkZXYtPnZibGFua190aW1l X2xvY2spOworCXdyaXRlX3NlcWxvY2soJmRldi0+dmJsYW5rX3NlcWxvY2spOwogCiAJaWYgKCF2 YmxhbmstPmVuYWJsZWQpIHsKIAkJLyoKLQkJICogRW5hYmxlIHZibGFuayBpcnFzIHVuZGVyIHZi bGFua190aW1lX2xvY2sgcHJvdGVjdGlvbi4KKwkJICogRW5hYmxlIHZibGFuayBpcnFzIHVuZGVy IHZibGFua19zZXFsb2NrIHByb3RlY3Rpb24uCiAJCSAqIEFsbCB2YmxhbmsgY291bnQgJiB0aW1l c3RhbXAgdXBkYXRlcyBhcmUgaGVsZCBvZmYKIAkJICogdW50aWwgd2UgYXJlIGRvbmUgcmVpbml0 aWFsaXppbmcgbWFzdGVyIGNvdW50ZXIgYW5kCiAJCSAqIHRpbWVzdGFtcHMuIEZpbHRlcmNvZGUg aW4gZHJtX2hhbmRsZV92YmxhbmsoKSB3aWxsCkBAIC0xMTgwLDcgKzExMTEsNyBAQCBzdGF0aWMg aW50IGRybV92YmxhbmtfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBwaXBlKQogCQl9CiAJfQogCi0Jc3Bpbl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVfbG9jayk7 CisJd3JpdGVfc2VxdW5sb2NrKCZkZXYtPnZibGFua19zZXFsb2NrKTsKIAogCXJldHVybiByZXQ7 CiB9CkBAIC0xODgwLDE4ICsxODExLDE4IEBAIGJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJICogdmJsYW5rIGVuYWJsZS9k aXNhYmxlLCBhcyB0aGlzIHdvdWxkIGNhdXNlIGluY29uc2lzdGVudAogCSAqIG9yIGNvcnJ1cHRl ZCB0aW1lc3RhbXBzIGFuZCB2YmxhbmsgY291bnRzLgogCSAqLwotCXNwaW5fbG9jaygmZGV2LT52 YmxhbmtfdGltZV9sb2NrKTsKKwl3cml0ZV9zZXFsb2NrKCZkZXYtPnZibGFua19zZXFsb2NrKTsK IAogCS8qIFZibGFuayBpcnEgaGFuZGxpbmcgZGlzYWJsZWQuIE5vdGhpbmcgdG8gZG8uICovCiAJ aWYgKCF2YmxhbmstPmVuYWJsZWQpIHsKLQkJc3Bpbl91bmxvY2soJmRldi0+dmJsYW5rX3RpbWVf bG9jayk7CisJCXdyaXRlX3NlcXVubG9jaygmZGV2LT52Ymxhbmtfc2VxbG9jayk7CiAJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCiAJZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoZGV2LCBwaXBlLCBEUk1fQ0FM TEVEX0ZST01fVkJMSVJRKTsKIAotCXNwaW5fdW5sb2NrKCZkZXYtPnZibGFua190aW1lX2xvY2sp OworCXdyaXRlX3NlcXVubG9jaygmZGV2LT52Ymxhbmtfc2VxbG9jayk7CiAKIAl3YWtlX3VwKCZ2 YmxhbmstPnF1ZXVlKTsKIAlkcm1faGFuZGxlX3ZibGFua19ldmVudHMoZGV2LCBwaXBlKTsKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCAz NjBiMmE3Li44YmVlNDI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5j bHVkZS9kcm0vZHJtUC5oCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8bGludXgvcG9sbC5o PgogI2luY2x1ZGUgPGxpbnV4L3JhdGVsaW1pdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+ CisjaW5jbHVkZSA8bGludXgvc2VxbG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KQEAgLTM5 MiwxMSArMzkzLDYgQEAgc3RydWN0IGRybV9tYXN0ZXIgewogCXZvaWQgKmRyaXZlcl9wcml2Owog fTsKIAotLyogU2l6ZSBvZiByaW5nYnVmZmVyIGZvciB2YmxhbmsgdGltZXN0YW1wcy4gSnVzdCBk b3VibGUtYnVmZmVyCi0gKiBpbiBpbml0aWFsIGltcGxlbWVudGF0aW9uLgotICovCi0jZGVmaW5l IERSTV9WQkxBTktUSU1FX1JCU0laRSAyCi0KIC8qIEZsYWdzIGFuZCByZXR1cm4gY29kZXMgZm9y IGdldF92YmxhbmtfdGltZXN0YW1wKCkgZHJpdmVyIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBEUk1f Q0FMTEVEX0ZST01fVkJMSVJRIDEKICNkZWZpbmUgRFJNX1ZCTEFOS1RJTUVfU0NBTk9VVFBPU19N RVRIT0QgKDEgPDwgMCkKQEAgLTcyNSwxMCArNzIxLDggQEAgc3RydWN0IGRybV92YmxhbmtfY3J0 YyB7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgcXVldWU7CS8qKjwgVkJMQU5LIHdhaXQgcXVldWUgKi8K IAlzdHJ1Y3QgdGltZXJfbGlzdCBkaXNhYmxlX3RpbWVyOwkJLyogZGVsYXllZCBkaXNhYmxlIHRp bWVyICovCiAKLQkvKiB2YmxhbmsgY291bnRlciwgcHJvdGVjdGVkIGJ5IGRldi0+dmJsYW5rX3Rp bWVfbG9jayBmb3Igd3JpdGVzICovCi0JdTMyIGNvdW50OwotCS8qIHZibGFuayB0aW1lc3RhbXBz LCBwcm90ZWN0ZWQgYnkgZGV2LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KLQlzdHJ1 Y3QgdGltZXZhbCB0aW1lW0RSTV9WQkxBTktUSU1FX1JCU0laRV07CisJdTMyIGNvdW50OwkJCS8q IHZibGFuayBjb3VudGVyLCBwcm90ZWN0ZWQgYnkgZGV2LT52Ymxhbmtfc2VxbG9jayAqLworCXN0 cnVjdCB0aW1ldmFsIHRpbWU7CQkvKiB2YmxhbmsgdGltZXN0YW1wLCBwcm90ZWN0ZWQgYnkgZGV2 LT52Ymxhbmtfc2VxbG9jayAqLwogCiAJYXRvbWljX3QgcmVmY291bnQ7CQkvKiBudW1iZXIgb2Yg dXNlcnMgb2YgdmJsYW5rIGludGVycnVwdHNwZXIgY3J0YyAqLwogCXUzMiBsYXN0OwkJCS8qIHBy b3RlY3RlZCBieSBkZXYtPnZibF9sb2NrLCB1c2VkICovCkBAIC04MzUsNyArODI5LDcgQEAgc3Ry dWN0IGRybV9kZXZpY2UgewogCS8qIGFycmF5IG9mIHNpemUgbnVtX2NydGNzICovCiAJc3RydWN0 IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rOwogCi0Jc3BpbmxvY2tfdCB2YmxhbmtfdGltZV9sb2Nr OyAgICAvKio8IFByb3RlY3RzIHZibGFuayBjb3VudCBhbmQgdGltZSB1cGRhdGVzIGR1cmluZyB2 YmxhbmsgZW5hYmxlL2Rpc2FibGUgKi8KKwlzZXFsb2NrX3QgdmJsYW5rX3NlcWxvY2s7CS8qKjwg UHJvdGVjdHMgdmJsYW5rIGNvdW50IGFuZCB0aW1lIHVwZGF0ZXMgZHVyaW5nIHZibGFuayBlbmFi bGUvZGlzYWJsZSAqLwogCXNwaW5sb2NrX3QgdmJsX2xvY2s7CiAKIAl1MzIgbWF4X3ZibGFua19j b3VudDsgICAgICAgICAgIC8qKjwgc2l6ZSBvZiB2YmxhbmsgY291bnRlciByZWdpc3RlciAqLwot LSAKMi40LjExCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK