From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH] drm/vblank: Fixup and document timestamp update/read barriers Date: Wed, 15 Apr 2015 23:26:37 +0200 Message-ID: <552ED78D.7060004@gmail.com> References: <1429093934-7535-1-git-send-email-daniel.vetter@ffwll.ch> <1429119283-11215-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1429119283-11215-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Intel Graphics Development , DRI Development Cc: Daniel Vetter , =?UTF-8?B?TWljaGVsIETDpG56ZXI=?= , Peter Hurley List-Id: intel-gfx@lists.freedesktop.org QSBjb3VwbGUgb2YgcXVlc3Rpb25zIHRvIGVkdWNhdGUgbWUgYW5kIG9uZSByZXZpZXcgY29tbWVu dC4KCk9uIDA0LzE1LzIwMTUgMDc6MzQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gVGhpcyB3 YXMgYSBiaXQgdG9vIG11Y2ggY2FyZ28tY3VsdGVkLCBzbyBsZXRzIG1ha2UgaXQgc29saWQ6Cj4g LSB2YmxhbmstPmNvdW50IGRvZXNuJ3QgbmVlZCB0byBiZSBhbiBhdG9taWMsIHdyaXRlcyBhcmUg YWx3YXlzIGRvbmUKPiAgICB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiBkZXYtPnZibGFua190aW1l X2xvY2suIFN3aXRjaCB0byBhbiB1bnNpZ25lZAo+ICAgIGxvbmcgaW5zdGVhZCBhbmQgdXBkYXRl IGNvbW1lbnRzLiBOb3RlIHRoYXQgYXRvbWljX3JlYWQgaXMganVzdCBhCj4gICAgbm9ybWFsIHJl YWQgb2YgYSB2b2xhdGlsZSB2YXJpYWJsZSwgc28gbm8gbmVlZCB0byBhdWRpdCBhbGwgdGhlCj4g ICAgcmVhZC1zaWRlIGFjY2VzcyBzcGVjaWZpY2FsbHkuCj4KPiAtIFRoZSBiYXJyaWVycyBmb3Ig dGhlIHZibGFuayBjb3VudGVyIHNlcWxvY2sgd2VyZW4ndCBjb21wbGV0ZTogVGhlCj4gICAgcmVh ZC1zaWRlIHdhcyBtaXNzaW5nIHRoZSBmaXJzdCBiYXJyaWVyIGJldHdlZW4gdGhlIGNvdW50ZXIg cmVhZCBhbmQKPiAgICB0aGUgdGltZXN0YW1wIHJlYWQsIGl0IG9ubHkgaGFkIGEgYmFycmllciBi ZXR3ZWVuIHRoZSB0cyBhbmQgdGhlCj4gICAgY291bnRlciByZWFkLiBXZSBuZWVkIGJvdGguCj4K PiAtIEJhcnJpZXJzIHdlcmVuJ3QgcHJvcGVybHkgZG9jdW1lbnRlZC4gU2luY2UgYmFycmllcnMg b25seSB3b3JrIGlmCj4gICAgeW91IGhhdmUgdGhlbSBvbiBib3RocyBzaWRlcyBvZiB0aGUgdHJh bnNhY3Rpb24gaXQncyBwcnVkZW50IHRvCj4gICAgcmVmZXJlbmNlIHdoZXJlIHRoZSBvdGhlciBz aWRlIGlzLiBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUKPiAgICB3cml0ZS1zaWRlIGNvbW1lbnQg MyB0aW1lcyBleHRyYWN0IGEgbGl0dGxlIHN0b3JlX3ZibGFuaygpIGhlbHBlci4KPiAgICBJbiB0 aGF0IGhlbHBlciBhbHNvIGFzc2VydCB0aGF0IHdlIGRvIGluZGVlZCBob2xkCj4gICAgZGV2LT52 YmxhbmtfdGltZV9sb2NrLCBzaW5jZSBpbiBzb21lIGNhc2VzIHRoZSBsb2NrIGlzIGFjcXVpcmVk IGEKPiAgICBmZXcgZnVuY3Rpb25zIHVwIGluIHRoZSBjYWxsY2hhaW4uCj4KPiBTcG90dGVkIHdo aWxlIHJldmlld2luZyBhIHBhdGNoIGZyb20gQ2hyaXMgV2lsc29uIHRvIGFkZCBhIGZhc3RwYXRo IHRvCj4gdGhlIHZibGFua193YWl0IGlvY3RsLgo+Cj4gdjI6IEFkZCBjb21tZW50IHRvIGJldHRl ciBleHBsYWluIGhvdyBzdG9yZV92Ymxhbmsgd29ya3MsIHN1Z2dlc3RlZCBieQo+IENocmlzLgo+ Cj4gdjM6IFBldGVyIG5vdGljZWQgdGhhdCBhcy1pcyB0aGUgMm5kIHNtcF93bWIgaXMgcmVkdW5k YW50IHdpdGggdGhlCj4gaW1wbGljaXQgYmFycmllciBpbiB0aGUgc3Bpbl91bmxvY2suIEJ1dCB0 aGF0IGNhbiBvbmx5IGJlIHByb3ZlbiBieQo+IGF1ZGl0aW5nIGFsbCBjYWxsZXJzIGFuZCBteSBw b2ludCBpbiBleHRyYWN0aW5nIHRoaXMgbGl0dGxlIGhlbHBlciB3YXMKPiB0byBsb2NhbGl6ZSBh bGwgdGhlIGxvY2tpbmcgaW50byBqdXN0IG9uZSBwbGFjZS4gSGVuY2UgSSB0aGluayB0aGF0Cj4g YWRkaXRpb25hbCBvcHRpbWl6YXRpb24gaXMgdG9vIHJpc2t5Lgo+Cj4gQ2M6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNYXJpbyBLbGVpbmVyIDxtYXJpby5r bGVpbmVyLmRlQGdtYWlsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiBDYzogTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5l dD4KPiBDYzogUGV0ZXIgSHVybGV5IDxwZXRlckBodXJsZXlzb2Z0d2FyZS5jb20+Cj4gU2lnbmVk LW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gLS0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jIHwgOTUgKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGluY2x1ZGUvZHJtL2RybVAuaCAgICAgICAgfCAg OCArKystCj4gICAyIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2lycS5jCj4gaW5kZXggYzhhMzQ0NzY1NzBhLi44Njk0Yjc3ZDAwMDIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1faXJxLmMKPiBAQCAtNzQsNiArNzQsMzYgQEAgbW9kdWxlX3BhcmFtX25hbWVkKHZi bGFua29mZmRlbGF5LCBkcm1fdmJsYW5rX29mZmRlbGF5LCBpbnQsIDA2MDApOwo+ICAgbW9kdWxl X3BhcmFtX25hbWVkKHRpbWVzdGFtcF9wcmVjaXNpb25fdXNlYywgZHJtX3RpbWVzdGFtcF9wcmVj aXNpb24sIGludCwgMDYwMCk7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQodGltZXN0YW1wX21vbm90 b25pYywgZHJtX3RpbWVzdGFtcF9tb25vdG9uaWMsIGludCwgMDYwMCk7Cj4KPiArc3RhdGljIHZv aWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAo+ICsJCQkg dW5zaWduZWQgdmJsYW5rX2NvdW50X2luYywKPiArCQkJIHN0cnVjdCB0aW1ldmFsICp0X3ZibGFu aykKPiArewo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5r W2NydGNdOwo+ICsJdTMyIHRzbG90Owo+ICsKPiArCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2LT52 YmxhbmtfdGltZV9sb2NrKTsKPiArCj4gKwlpZiAodF92YmxhbmspIHsKPiArCQkvKiBBbGwgd3Jp dGVycyBob2xkIHRoZSBzcGlubG9jaywgYnV0IHJlYWRlcnMgYXJlIHNlcmlhbGl6ZWQgYnkKPiAr CQkgKiB0aGUgbGF0Y2hpbmcgb2YgdmJsYW5rLT5jb3VudCBiZWxvdy4KPiArCQkgKi8KPiArCQl0 c2xvdCA9IHZibGFuay0+Y291bnQgKyB2YmxhbmtfY291bnRfaW5jOwo+ICsJCXZibGFua3RpbWVz dGFtcChkZXYsIGNydGMsIHRzbG90KSA9ICp0X3ZibGFuazsKPiArCX0KPiArCj4gKwkvKgo+ICsJ ICogdmJsYW5rIHRpbWVzdGFtcCB1cGRhdGVzIGFyZSBwcm90ZWN0ZWQgb24gdGhlIHdyaXRlIHNp ZGUgd2l0aAo+ICsJICogdmJsYW5rX3RpbWVfbG9jaywgYnV0IG9uIHRoZSByZWFkIHNpZGUgZG9u ZSBsb2NrbGVzc2x5IHVzaW5nIGEKPiArCSAqIHNlcXVlbmNlLWxvY2sgb24gdGhlIHZibGFuayBj b3VudGVyLiBFbnN1cmUgY29ycmVjdCBvcmRlcmluZyB1c2luZwo+ICsJICogbWVtb3J5IGJhcnJy aWVycy4gV2UgbmVlZCB0aGUgYmFycmllciBib3RoIGJlZm9yZSBhbmQgYWxzbyBhZnRlciB0aGUK PiArCSAqIGNvdW50ZXIgdXBkYXRlIHRvIHN5bmNocm9uaXplIHdpdGggdGhlIG5leHQgdGltZXN0 YW1wIHdyaXRlLgo+ICsJICogVGhlIHJlYWQtc2lkZSBiYXJyaWVycyBmb3IgdGhpcyBhcmUgaW4g ZHJtX3ZibGFua19jb3VudF9hbmRfdGltZS4KPiArCSAqLwo+ICsJc21wX3dtYigpOwo+ICsJdmJs YW5rLT5jb3VudCArPSB2YmxhbmtfY291bnRfaW5jOwo+ICsJc21wX3dtYigpOwo+ICt9Cj4gKwo+ ICAgLyoqCj4gICAgKiBkcm1fdXBkYXRlX3ZibGFua19jb3VudCAtIHVwZGF0ZSB0aGUgbWFzdGVy IHZibGFuayBjb3VudGVyCj4gICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gQEAgLTkzLDcgKzEyMyw3 IEBAIG1vZHVsZV9wYXJhbV9uYW1lZCh0aW1lc3RhbXBfbW9ub3RvbmljLCBkcm1fdGltZXN0YW1w X21vbm90b25pYywgaW50LCAwNjAwKTsKPiAgIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5r X2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICAgewo+ICAgCXN0cnVj dCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPiAtCXUzMiBj dXJfdmJsYW5rLCBkaWZmLCB0c2xvdDsKPiArCXUzMiBjdXJfdmJsYW5rLCBkaWZmOwo+ICAgCWJv b2wgcmM7Cj4gICAJc3RydWN0IHRpbWV2YWwgdF92Ymxhbms7Cj4KPiBAQCAtMTI5LDE4ICsxNTks MTIgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGNydGMpCj4gICAJaWYgKGRpZmYgPT0gMCkKPiAgIAkJcmV0dXJuOwo+Cj4g LQkvKiBSZWluaXRpYWxpemUgY29ycmVzcG9uZGluZyB2YmxhbmsgdGltZXN0YW1wIGlmIGhpZ2gt cHJlY2lzaW9uIHF1ZXJ5Cj4gLQkgKiBhdmFpbGFibGUuIFNraXAgdGhpcyBzdGVwIGlmIHF1ZXJ5 IHVuc3VwcG9ydGVkIG9yIGZhaWxlZC4gV2lsbAo+IC0JICogcmVpbml0aWFsaXplIGRlbGF5ZWQg YXQgbmV4dCB2YmxhbmsgaW50ZXJydXB0IGluIHRoYXQgY2FzZS4KPiArCS8qCj4gKwkgKiBPbmx5 IHJlaW5pdGlhbGl6ZSBjb3JyZXNwb25kaW5nIHZibGFuayB0aW1lc3RhbXAgaWYgaGlnaC1wcmVj aXNpb24gcXVlcnkKPiArCSAqIGF2YWlsYWJsZSBhbmQgZGlkbid0IGZhaWwuIFdpbGwgcmVpbml0 aWFsaXplIGRlbGF5ZWQgYXQgbmV4dCB2YmxhbmsKPiArCSAqIGludGVycnVwdCBpbiB0aGF0IGNh c2UuCj4gICAJICovCj4gLQlpZiAocmMpIHsKPiAtCQl0c2xvdCA9IGF0b21pY19yZWFkKCZ2Ymxh bmstPmNvdW50KSArIGRpZmY7Cj4gLQkJdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgdHNsb3Qp ID0gdF92Ymxhbms7Cj4gLQl9Cj4gLQo+IC0Jc21wX21iX19iZWZvcmVfYXRvbWljKCk7Cj4gLQlh dG9taWNfYWRkKGRpZmYsICZ2YmxhbmstPmNvdW50KTsKPiAtCXNtcF9tYl9fYWZ0ZXJfYXRvbWlj KCk7Cj4gKwlzdG9yZV92YmxhbmsoZGV2LCBjcnRjLCBkaWZmLCByYyA/ICZ0X3ZibGFuayA6IE5V TEwpOwo+ICAgfQo+Cj4gICAvKgo+IEBAIC0yMTgsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdmJs YW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4g ICAJLyogQ29tcHV0ZSB0aW1lIGRpZmZlcmVuY2UgdG8gc3RvcmVkIHRpbWVzdGFtcCBvZiBsYXN0 IHZibGFuawo+ICAgCSAqIGFzIHVwZGF0ZWQgYnkgbGFzdCBpbnZvY2F0aW9uIG9mIGRybV9oYW5k bGVfdmJsYW5rKCkgaW4gdmJsYW5rIGlycS4KPiAgIAkgKi8KPiAtCXZibGNvdW50ID0gYXRvbWlj X3JlYWQoJnZibGFuay0+Y291bnQpOwo+ICsJdmJsY291bnQgPSB2YmxhbmstPmNvdW50Owo+ICAg CWRpZmZfbnMgPSB0aW1ldmFsX3RvX25zKCZ0dmJsYW5rKSAtCj4gICAJCSAgdGltZXZhbF90b19u cygmdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgdmJsY291bnQpKTsKPgo+IEBAIC0yMzQsMTcg KzI1OCw4IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICAgCSAqIGF2YWlsYWJsZS4gSW4gdGhhdCBjYXNlIHdl IGNhbid0IGFjY291bnQgZm9yIHRoaXMgYW5kIGp1c3QKPiAgIAkgKiBob3BlIGZvciB0aGUgYmVz dC4KPiAgIAkgKi8KPiAtCWlmICh2YmxyYyAmJiAoYWJzNjQoZGlmZl9ucykgPiAxMDAwMDAwKSkg ewo+IC0JCS8qIFN0b3JlIG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZlci4gKi8KPiAtCQl2Ymxh bmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB2Ymxjb3VudCArIDEpID0gdHZibGFuazsKPiAtCj4gLQkJ LyogSW5jcmVtZW50IGNvb2tlZCB2YmxhbmsgY291bnQuIFRoaXMgYWxzbyBhdG9taWNhbGx5IGNv bW1pdHMKPiAtCQkgKiB0aGUgdGltZXN0YW1wIGNvbXB1dGVkIGFib3ZlLgo+IC0JCSAqLwo+IC0J CXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwo+IC0JCWF0b21pY19pbmMoJnZibGFuay0+Y291bnQp Owo+IC0JCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gLQl9Cj4gKwlpZiAodmJscmMgJiYgKGFi czY0KGRpZmZfbnMpID4gMTAwMDAwMCkpCj4gKwkJc3RvcmVfdmJsYW5rKGRldiwgY3J0YywgMSwg JnR2YmxhbmspOwo+Cj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxhbmtfdGlt ZV9sb2NrLCBpcnFmbGFncyk7Cj4gICB9Cj4gQEAgLTg1Miw3ICs4NjcsNyBAQCB1MzIgZHJtX3Zi bGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPgo+ICAgCWlmIChX QVJOX09OKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpKQo+ICAgCQlyZXR1cm4gMDsKPiAtCXJldHVy biBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4gKwlyZXR1cm4gdmJsYW5rLT5jb3VudDsK Ckkgd3JvbmdseSBhc3N1bWVkIGF0b21pY19yZWFkIHdvdWxkIGd1YXJhbnRlZSBtb3JlIHRoYW4g aXQgYWN0dWFsbHkgCmRvZXMsIHNvIHBsZWFzZSBoZWxwIG1lIHRvIGxlYXJuIHNvbWV0aGluZy4g V2h5IGRvbid0IHdlIG5lZWQgc29tZSAKc21wX3JtYigpIGhlcmUgYmVmb3JlIHJldHVybmluZyB2 YmxhbmstPmNvdW50PyBXaGF0IGd1YXJhbnRlZXMgdGhhdCAKZHJtX3ZibGFua19jb3VudCgpIGRv ZXMgcmV0dXJuIHRoZSBsYXRlc3QgdmFsdWUgYXNzaWduZWQgdG8gCnZibGFuay0+Y291bnQgaW4g c3RvcmVfdmJsYW5rKCk/IEluIHN0b3JlX3ZibGFuaygpIHRoZXJlIGlzIGEgc21wX3dtYigpLCAK YnV0IHdoeSBkb24ndCB3ZSBuZWVkIGEgbWF0Y2hpbmcgc21wX3JtYigpIGhlcmUgdG8gYmVuZWZp dCBmcm9tIGl0PwoKPiAgIH0KPiAgIEVYUE9SVF9TWU1CT0woZHJtX3ZibGFua19jb3VudCk7Cj4K PiBAQCAtODk3LDE2ICs5MTIsMTcgQEAgdTMyIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMsCj4gICAJaWYgKFdBUk5fT04oY3J0YyA+PSBk ZXYtPm51bV9jcnRjcykpCj4gICAJCXJldHVybiAwOwo+Cj4gLQkvKiBSZWFkIHRpbWVzdGFtcCBm cm9tIHNsb3Qgb2YgX3ZibGFua190aW1lIHJpbmdidWZmZXIKPiAtCSAqIHRoYXQgY29ycmVzcG9u ZHMgdG8gY3VycmVudCB2YmxhbmsgY291bnQuIFJldHJ5IGlmCj4gLQkgKiBjb3VudCBoYXMgaW5j cmVtZW50ZWQgZHVyaW5nIHJlYWRvdXQuIFRoaXMgd29ya3MgbGlrZQo+IC0JICogYSBzZXFsb2Nr Lgo+ICsJLyoKPiArCSAqIFZibGFuayB0aW1lc3RhbXBzIGFyZSByZWFkIGxvY2tsZXNzLiBUbyBl bnN1cmUgY29uc2lzdGVuY3kgdGhlIHZibGFuawo+ICsJICogY291bnRlciBpcyByZWNoZWNrZWQg YW5kIG9yZGVyaW5nIGlzIGVuc3VyZWQgdXNpbmcgbWVtb3J5IGJhcnJpZXJzLgo+ICsJICogVGhp cyB3b3JrcyBsaWtlIGEgc2VxbG9jay4gVGhlIHdyaXRlLXNpZGUgYmFycmllcnMgYXJlIGluIHN0 b3JlX3ZibGFuay4KPiAgIAkgKi8KPiAgIAlkbyB7Cj4gLQkJY3VyX3ZibGFuayA9IGF0b21pY19y ZWFkKCZ2YmxhbmstPmNvdW50KTsKPiArCQljdXJfdmJsYW5rID0gdmJsYW5rLT5jb3VudDsKPiAr CQlzbXBfcm1iKCk7Cj4gICAJCSp2Ymxhbmt0aW1lID0gdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0 YywgY3VyX3ZibGFuayk7Cj4gICAJCXNtcF9ybWIoKTsKPiAtCX0gd2hpbGUgKGN1cl92Ymxhbmsg IT0gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQpKTsKPiArCX0gd2hpbGUgKGN1cl92Ymxhbmsg IT0gdmJsYW5rLT5jb3VudCk7Cj4KClNpbWlsYXIgcXVlc3Rpb24gYXMgYWJvdmUuIFdlIGhhdmUg YSBuZXcgc21wX3JtYigpIGFmdGVyIHRoZSBjdXJfdmJsYW5rIAphc3NpZ25tZW50IGFuZCB0aGVu IGFmdGVyICp2Ymxhbmt0aW1lIGFzc2lnbm1lbnQuIE15IG9yaWdpbmFsIHdyb25nIAphc3N1bXB0 aW9uIHdhcyB0aGF0IHRoZSBmaXJzdCBzbXBfcm1iKCkgd291bGRuJ3QgYmUgbmVlZGVkIGJlY2F1 c2UgCmF0b21pY19yZWFkKCkgd291bGQgaW1wbHkgdGhhdCwgYW5kIHRoYXQgdGhlIGNvbXBpbGVy L2NwdSBjb3VsZG4ndCAKcmVvcmRlciBhbnl0aGluZyBoZXJlIGJlY2F1c2UgdGhlICp2Ymxhbmt0 aW1lIGFzc2lnbm1lbnQgZGVwZW5kcyBvbiAKY3VyX3ZibGFuayBmcm9tIHRoZSBwcmVjZWVkaW5n IGF0b21pY19yZWFkLgoKQnV0IHdoeSBjYW4gd2Ugbm93IGRvIHRoZSBjb21wYXJpc29uIHdoaWxl KGN1cl92YmxhbmsgIT0gdmJsYW5rLT5jb3VudCkgCndpdGhvdXQgbmVlZGluZyBzb21ldGhpbmcg bGlrZQoKCW5ld192YmxhbmsgPSB2YmxhbmstPmNvdW50OwoJc21wX3JtYigpOwogICAgfSB3aGls ZSAoY3VyX3ZibGFuayAhPSBuZXdfdmJsYW5rKTsKCnRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgZnJv bSB0aGUgMm5kIHZibGFuay0+Y291bnQgcmVhZCBpc24ndCBzdGFsZSB3cnQuIAp0byBwb3RlbnRp YWwgdXBkYXRlcyBmcm9tIHN0b3JlX3ZibGFuaygpPwoKQW5vdGhlciBxdWVzdGlvbiBpcyB3aHkg dGhlIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoKSBjb2RlIGV2ZXIgd29ya2VkIAp3aXRob3V0 IHRyaWdnZXJpbmcgYW55IG9mIG15IG93biB0ZXN0cyBhbmQgY29uc2lzdGVuY3kgY2hlY2tzIGlu IG15IApzb2Z0d2FyZSwgb3IgYW55IG9mIHlvdXIgaWd0IHRlc3RzPyBJIHJ1biBteSB0ZXN0cyB2 ZXJ5IG9mdGVuLCBidXQgb25seSAKb24gSW50ZWwgYXJjaGl0ZWN0dXJlIGNwdXMuIEkgYXNzdW1l IHRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBpZ3QgdGVzdHM/IApJcyB0aGVyZSBhbnl0aGluZyBz cGVjaWZpYyBhYm91dCBJbnRlbCBjcHUncyB0aGF0IG1ha2VzIHRoaXMgc3RpbGwgd29yayAKb3Ig dmVyeSB1bmxpa2VseSB0byBicmVhaz8gT3IgYXJlIHRoZSB0ZXN0cyBpbnN1ZmZpY2llbnQgdG8g Y2F0Y2ggdGhpcz8gCk9yIGp1c3QgbHVjaz8KCkkgbG9va2VkIHRocm91Z2gga2VybmVscyBiYWNr IHRvIDMuMTYgYW5kIG1vc3QgdXNlcyBvZiB0aGUgZnVuY3Rpb24gCndvdWxkIGJlIHNhZmUgZnJv bSByYWNlcyBkdWUgdG8gdGhlIGxvY2tpbmcgYXJvdW5kIGl0LCBob2xkaW5nIG9mIHZibGFuayAK cmVmY291bnRzLCBvciB0aGUgcGxhY2UgYW5kIG9yZGVyIG9mIGV4ZWN1dGlvbiwgZS5nLiwgZnJv bSB3aXRoaW4gCmRybV9oYW5kbGVfdmJsYW5rKCkuIEJ1dCBpbiBzb21lIHRpZ2h0IHRlc3QgbG9v cCBqdXN0IGNhbGxpbmcgdGhlIApkcm1XYWl0VmJsYW5rIGlvY3RsIHRvIHF1ZXJ5IGN1cnJlbnQg dmFsdWVzIGknZCBleHBlY3QgaXQgdG8gYXQgbGVhc3QgCm9jY2Fzc2lvbmFsbHkgcmV0dXJuIGNv cnJ1cHRlZCB0aW1lc3RhbXBzLCBlLmcuLCB0aW1lIGp1bXBpbmcgZm9yd2FyZCBvciAKYmFja3dh cmQsIGV0Yy4/Cgo+ICAgCXJldHVybiBjdXJfdmJsYW5rOwo+ICAgfQo+IEBAIC0xNzE1LDcgKzE3 MzEsNyBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjcnRjKQo+ICAgCSAqLwo+Cj4gICAJLyogR2V0IGN1cnJlbnQgdGltZXN0YW1wIGFuZCBjb3Vu dC4gKi8KPiAtCXZibGNvdW50ID0gYXRvbWljX3JlYWQoJnZibGFuay0+Y291bnQpOwo+ICsJdmJs Y291bnQgPSB2YmxhbmstPmNvdW50Owo+ICAgCWRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2 LCBjcnRjLCAmdHZibGFuaywgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSk7Cj4KPiAgIAkvKiBDb21w dXRlIHRpbWUgZGlmZmVyZW5jZSB0byB0aW1lc3RhbXAgb2YgbGFzdCB2YmxhbmsgKi8KPiBAQCAt MTczMSwyMCArMTc0NywxMSBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjKQo+ICAgCSAqIGUuZy4sIGR1ZSB0byBzcHVyaW91cyB2Ymxhbmsg aW50ZXJydXB0cy4gV2UgbmVlZCB0bwo+ICAgCSAqIGlnbm9yZSB0aG9zZSBmb3IgYWNjb3VudGlu Zy4KPiAgIAkgKi8KPiAtCWlmIChhYnM2NChkaWZmX25zKSA+IERSTV9SRURVTkRBTlRfVkJMSVJR X1RIUkVTSF9OUykgewo+IC0JCS8qIFN0b3JlIG5ldyB0aW1lc3RhbXAgaW4gcmluZ2J1ZmZlci4g Ki8KPiAtCQl2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB2Ymxjb3VudCArIDEpID0gdHZibGFu azsKPiAtCj4gLQkJLyogSW5jcmVtZW50IGNvb2tlZCB2YmxhbmsgY291bnQuIFRoaXMgYWxzbyBh dG9taWNhbGx5IGNvbW1pdHMKPiAtCQkgKiB0aGUgdGltZXN0YW1wIGNvbXB1dGVkIGFib3ZlLgo+ IC0JCSAqLwo+IC0JCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwo+IC0JCWF0b21pY19pbmMoJnZi bGFuay0+Y291bnQpOwo+IC0JCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4gLQl9IGVsc2Ugewo+ ICsJaWYgKGFiczY0KGRpZmZfbnMpID4gRFJNX1JFRFVOREFOVF9WQkxJUlFfVEhSRVNIX05TKQo+ ICsJCXN0b3JlX3ZibGFuayhkZXYsIGNydGMsIDEsICZ0dmJsYW5rKTsKPiArCWVsc2UKPiAgIAkJ RFJNX0RFQlVHKCJjcnRjICVkOiBSZWR1bmRhbnQgdmJsaXJxIGlnbm9yZWQuIGRpZmZfbnMgPSAl ZFxuIiwKPiAgIAkJCSAgY3J0YywgKGludCkgZGlmZl9ucyk7Cj4gLQl9Cj4KPiAgIAlzcGluX3Vu bG9jaygmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1QLmggYi9pbmNsdWRlL2RybS9kcm1QLmgKPiBpbmRleCA2MmM0MDc3N2MwMDkuLjRjMzFh MmNjNWEzMyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKPiArKysgYi9pbmNsdWRl L2RybS9kcm1QLmgKPiBAQCAtNjg2LDkgKzY4NiwxMyBAQCBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50IHsKPiAgIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgewo+ICAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXY7CQkvKiBwb2ludGVyIHRvIHRoZSBkcm1fZGV2aWNlICovCj4gICAJd2FpdF9x dWV1ZV9oZWFkX3QgcXVldWU7CS8qKjwgVkJMQU5LIHdhaXQgcXVldWUgKi8KPiAtCXN0cnVjdCB0 aW1ldmFsIHRpbWVbRFJNX1ZCTEFOS1RJTUVfUkJTSVpFXTsJLyoqPCB0aW1lc3RhbXAgb2YgY3Vy cmVudCBjb3VudCAqLwo+ICAgCXN0cnVjdCB0aW1lcl9saXN0IGRpc2FibGVfdGltZXI7CQkvKiBk ZWxheWVkIGRpc2FibGUgdGltZXIgKi8KPiAtCWF0b21pY190IGNvdW50OwkJCS8qKjwgbnVtYmVy IG9mIFZCTEFOSyBpbnRlcnJ1cHRzICovCj4gKwo+ICsJLyogdmJsYW5rIGNvdW50ZXIsIHByb3Rl Y3RlZCBieSBkZXYtPnZibGFua190aW1lX2xvY2sgZm9yIHdyaXRlcyAqLwo+ICsJdW5zaWduZWQg bG9uZyBjb3VudDsKCldoeSBpcyBjb3VudCBhbiB1bnNpZ25lZCBsb25nICg9IDY0IGJpdCBvbiA2 NC1iaXQga2VybmVscykgaW5zdGVhZCBvZiAKdTMyIHdoZW4gYWxsIHVzZXJzIG9mIGNvdW50IGFy ZSB1MzI/IElzIHRoaXMgaW50ZW50aW9uYWw/CgoKPiArCS8qIHZibGFuayB0aW1lc3RhbXBzLCBw cm90ZWN0ZWQgYnkgZGV2LT52YmxhbmtfdGltZV9sb2NrIGZvciB3cml0ZXMgKi8KPiArCXN0cnVj dCB0aW1ldmFsIHRpbWVbRFJNX1ZCTEFOS1RJTUVfUkJTSVpFXTsKPiArCj4gICAJYXRvbWljX3Qg cmVmY291bnQ7CQkvKiBudW1iZXIgb2YgdXNlcnMgb2YgdmJsYW5rIGludGVycnVwdHNwZXIgY3J0 YyAqLwo+ICAgCXUzMiBsYXN0OwkJCS8qIHByb3RlY3RlZCBieSBkZXYtPnZibF9sb2NrLCB1c2Vk ICovCj4gICAJCQkJCS8qIGZvciB3cmFwYXJvdW5kIGhhbmRsaW5nICovCj4KClRoYW5rcywKLW1h cmlvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==