From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH 1/3] drm: Widen vblank UAPI to 64 bits. Change vblank time to ktime_t [v2] Date: Tue, 10 Oct 2017 17:45:12 -0700 Message-ID: <20171011004514.9500-2-keithp@keithp.com> References: <20171011004514.9500-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from elaine.keithp.com (home.keithp.com [63.227.221.253]) by gabe.freedesktop.org (Postfix) with ESMTP id B16C86E5B8 for ; Wed, 11 Oct 2017 00:45:20 +0000 (UTC) In-Reply-To: <20171011004514.9500-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, Dave Airlie , Daniel Vetter Cc: Keith Packard , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBtb2RpZmllcyB0aGUgZGF0YXR5cGVzIHVzZWQgYnkgdGhlIHZibGFuayBjb2RlIHRvIHBy b3ZpZGUgYm90aCA2NApiaXRzIG9mIHZibGFuayBjb3VudCBhbmQgc3dpdGNoIHRvIHVzaW5nIGt0 aW1lX3QgZm9yIHRpbWVzdGFtcHMgdG8KaW5jcmVhc2UgcmVzb2x1dGlvbiBmcm9tIG1pY3Jvc2Vj b25kcyB0byBuYW5vc2Vjb25kcy4KClRoZSBkcml2ZXIgaW50ZXJmYWNlcyBoYXZlIGJlZW4gbGVm dCB1c2luZyAzMiBiaXRzIG9mIHZibGFuayBjb3VudDsKYWxsIG9mIHRoZSBjb2RlIG5lY2Vzc2Fy eSB0byB3aWRlbiB0aGF0IHZhbHVlIGZvciB0aGUgdXNlciBBUEkgd2FzCmFscmVhZHkgaW5jbHVk ZWQgdG8gaGFuZGxlIGRldmljZXMgcmV0dXJuaW5nIGZld2VyIHRoYW4gMzItYml0cy4KClRoaXMg d2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGF0YXR5cGVzIGZvciB0aGUgVnVsa2FuIEFQSS4K CnYyOgoKICogUmUtd3JpdGUgd2FpdF92YmxhbmsgaW9jdGwgdG8gQUJTT0xVVEUgc2VxdWVuY2UK CglXaGVuIGFuIGFwcGxpY2F0aW9uIHVzZXMgdGhlIFdBSVRfVkJMQU5LIGlvY3RsIHdpdGggUkVM QVRJVkUKCW9yIE5FWFRPTk1JU1MgYml0cyBzZXQsIHRoZSB0YXJnZXQgdmJsYW5rIGludGVydmFs IGlzIHVwZGF0ZWQKCXdpdGhpbiB0aGUga2VybmVsLiBXZSBuZWVkIHRvIHdyaXRlIHRoYXQgdGFy Z2V0IGJhY2sgdG8gdGhlCglpb2N0bCBidWZmZXIgYW5kIHVwZGF0ZSB0aGUgZmxhZ3MgYml0cyBz byB0aGF0IGlmIHRoZSB3YWl0IGlzCglpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgd2hlbiBpdCBp cyByZS1zdGFydGVkLCBpdCB3aWxsIHRhcmdldAoJcHJlY2lzZWx5IHRoZSBzYW1lIHZibGFuayBj b3VudCBhcyBiZWZvcmUuCgogKiBMZWF2ZSBkcml2ZXIgQVBJIHdpdGggMzItYml0IHZibGFuayBj b3VudAoKU3VnZ2VzdGVkLWJ5OiAgTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD4K U3VnZ2VzdGVkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ClNpZ25lZC1vZmYt Ynk6IEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fdmJsYW5rLmMgfCAyMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQogaW5jbHVkZS9kcm0vZHJtX2Rydi5oICAgICAgICB8ICAgMiArLQogaW5jbHVkZS9k cm0vZHJtX3ZibGFuay5oICAgICB8ICAxNiArKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNl cnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCA3MGYyYjk1 OTNlZGMuLjhjM2YyZmRkODIxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92Ymxh bmsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC03OCw3ICs3OCw3IEBA CiAKIHN0YXRpYyBib29sCiBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAotCQkJICBzdHJ1Y3QgdGltZXZhbCAqdHZibGFu aywgYm9vbCBpbl92YmxhbmtfaXJxKTsKKwkJCSAga3RpbWVfdCAqdHZibGFuaywgYm9vbCBpbl92 YmxhbmtfaXJxKTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBkcm1fdGltZXN0YW1wX3ByZWNpc2lv biA9IDIwOyAgLyogRGVmYXVsdCB0byAyMCB1c2Vjcy4gKi8KIApAQCAtOTksNyArOTksNyBAQCBN T0RVTEVfUEFSTV9ERVNDKHRpbWVzdGFtcF9tb25vdG9uaWMsICJVc2UgbW9ub3RvbmljIHRpbWVz dGFtcHMiKTsKIAogc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJIHUzMiB2YmxhbmtfY291bnRfaW5jLAotCQkJIHN0 cnVjdCB0aW1ldmFsICp0X3ZibGFuaywgdTMyIGxhc3QpCisJCQkga3RpbWVfdCB0X3ZibGFuaywg dTMyIGxhc3QpCiB7CiAJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW3BpcGVdOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5r KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCXZibGFuay0+bGFz dCA9IGxhc3Q7CiAKIAl3cml0ZV9zZXFsb2NrKCZ2YmxhbmstPnNlcWxvY2spOwotCXZibGFuay0+ dGltZSA9ICp0X3ZibGFuazsKKwl2YmxhbmstPnRpbWUgPSB0X3ZibGFuazsKIAl2YmxhbmstPmNv dW50ICs9IHZibGFua19jb3VudF9pbmM7CiAJd3JpdGVfc2VxdW5sb2NrKCZ2YmxhbmstPnNlcWxv Y2spOwogfQpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIGRybV9yZXNldF92Ymxhbmtf dGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlCiB7CiAJ dTMyIGN1cl92Ymxhbms7CiAJYm9vbCByYzsKLQlzdHJ1Y3QgdGltZXZhbCB0X3ZibGFuazsKKwlr dGltZV90IHRfdmJsYW5rOwogCWludCBjb3VudCA9IERSTV9USU1FU1RBTVBfTUFYUkVUUklFUzsK IAogCXNwaW5fbG9jaygmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKQEAgLTE3MSwxMyArMTcxLDEz IEBAIHN0YXRpYyB2b2lkIGRybV9yZXNldF92YmxhbmtfdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlCiAJICogaW50ZXJydXB0IGFuZCBhc3NpZ24gMCBm b3Igbm93LCB0byBtYXJrIHRoZSB2Ymxhbmt0aW1lc3RhbXAgYXMgaW52YWxpZC4KIAkgKi8KIAlp ZiAoIXJjKQotCQl0X3ZibGFuayA9IChzdHJ1Y3QgdGltZXZhbCkgezAsIDB9OworCQl0X3ZibGFu ayA9IDA7CiAKIAkvKgogCSAqICsxIHRvIG1ha2Ugc3VyZSB1c2VyIHdpbGwgbmV2ZXIgc2VlIHRo ZSBzYW1lCiAJICogdmJsYW5rIGNvdW50ZXIgdmFsdWUgYmVmb3JlIGFuZCBhZnRlciBhIG1vZGVz ZXQKIAkgKi8KLQlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCAxLCAmdF92YmxhbmssIGN1cl92Ymxh bmspOworCXN0b3JlX3ZibGFuayhkZXYsIHBpcGUsIDEsIHRfdmJsYW5rLCBjdXJfdmJsYW5rKTsK IAogCXNwaW5fdW5sb2NrKCZkZXYtPnZibGFua190aW1lX2xvY2spOwogfQpAQCAtMjAwLDcgKzIw MCw3IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZi bGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKIAl1MzIgY3VyX3ZibGFuaywgZGlmZjsKIAlib29s IHJjOwotCXN0cnVjdCB0aW1ldmFsIHRfdmJsYW5rOworCWt0aW1lX3QgdF92Ymxhbms7CiAJaW50 IGNvdW50ID0gRFJNX1RJTUVTVEFNUF9NQVhSRVRSSUVTOwogCWludCBmcmFtZWR1cl9ucyA9IHZi bGFuay0+ZnJhbWVkdXJfbnM7CiAKQEAgLTIyNSwxMSArMjI1LDkgQEAgc3RhdGljIHZvaWQgZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUsCiAJCS8qIHRydXN0IHRoZSBodyBjb3VudGVyIHdoZW4gaXQncyBhcm91bmQgKi8KIAkJ ZGlmZiA9IChjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0KSAmIGRldi0+bWF4X3ZibGFua19jb3Vu dDsKIAl9IGVsc2UgaWYgKHJjICYmIGZyYW1lZHVyX25zKSB7Ci0JCWNvbnN0IHN0cnVjdCB0aW1l dmFsICp0X29sZDsKLQkJdTY0IGRpZmZfbnM7CisJCWt0aW1lX3QgZGlmZl9uczsKIAotCQl0X29s ZCA9ICZ2YmxhbmstPnRpbWU7Ci0JCWRpZmZfbnMgPSB0aW1ldmFsX3RvX25zKCZ0X3ZibGFuaykg LSB0aW1ldmFsX3RvX25zKHRfb2xkKTsKKwkJZGlmZl9ucyA9IHRfdmJsYW5rIC0gdmJsYW5rLT50 aW1lOwogCiAJCS8qCiAJCSAqIEZpZ3VyZSBvdXQgaG93IG1hbnkgdmJsYW5rcyB3ZSd2ZSBtaXNz ZWQgYmFzZWQKQEAgLTI2Myw3ICsyNjEsNyBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFu a19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKIAl9CiAK IAlEUk1fREVCVUdfVkJMKCJ1cGRhdGluZyB2YmxhbmsgY291bnQgb24gY3J0YyAldToiCi0JCSAg ICAgICIgY3VycmVudD0ldSwgZGlmZj0ldSwgaHc9JXUgaHdfbGFzdD0ldVxuIiwKKwkJICAgICAg IiBjdXJyZW50PSVsbHUsIGRpZmY9JXUsIGh3PSV1IGh3X2xhc3Q9JXVcbiIsCiAJCSAgICAgIHBp cGUsIHZibGFuay0+Y291bnQsIGRpZmYsIGN1cl92YmxhbmssIHZibGFuay0+bGFzdCk7CiAKIAlp ZiAoZGlmZiA9PSAwKSB7CkBAIC0yNzgsOSArMjc2LDkgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0 ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUs CiAJICogZm9yIG5vdywgdG8gbWFyayB0aGUgdmJsYW5rdGltZXN0YW1wIGFzIGludmFsaWQuCiAJ ICovCiAJaWYgKCFyYyAmJiAhaW5fdmJsYW5rX2lycSkKLQkJdF92YmxhbmsgPSAoc3RydWN0IHRp bWV2YWwpIHswLCAwfTsKKwkJdF92YmxhbmsgPSAwOwogCi0Jc3RvcmVfdmJsYW5rKGRldiwgcGlw ZSwgZGlmZiwgJnRfdmJsYW5rLCBjdXJfdmJsYW5rKTsKKwlzdG9yZV92YmxhbmsoZGV2LCBwaXBl LCBkaWZmLCB0X3ZibGFuaywgY3VyX3ZibGFuayk7CiB9CiAKIHN0YXRpYyB1MzIgZHJtX3ZibGFu a19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKQEAgLTU4 NCwxMCArNTgyLDEwIEBAIEVYUE9SVF9TWU1CT0woZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0 YW50cyk7CiBib29sIGRybV9jYWxjX3ZibHRpbWVzdGFtcF9mcm9tX3NjYW5vdXRwb3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgdW5zaWduZWQgaW50IHBpcGUsCiAJCQkJCSAgIGlu dCAqbWF4X2Vycm9yLAotCQkJCQkgICBzdHJ1Y3QgdGltZXZhbCAqdmJsYW5rX3RpbWUsCisJCQkJ CSAgIGt0aW1lX3QgKnZibGFua190aW1lLAogCQkJCQkgICBib29sIGluX3ZibGFua19pcnEpCiB7 Ci0Jc3RydWN0IHRpbWV2YWwgdHZfZXRpbWU7CisJa3RpbWVfdCBwcmV2X2V0aW1lOwogCWt0aW1l X3Qgc3RpbWUsIGV0aW1lOwogCWJvb2wgdmJsX3N0YXR1czsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7CkBAIC02ODAsMjkgKzY3OCwyNiBAQCBib29sIGRybV9jYWxjX3ZibHRpbWVzdGFtcF9mcm9t X3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZXRpbWUgPSBrdGltZV9tb25v X3RvX3JlYWwoZXRpbWUpOwogCiAJLyogc2F2ZSB0aGlzIG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJw b3NlcyAqLwotCXR2X2V0aW1lID0ga3RpbWVfdG9fdGltZXZhbChldGltZSk7CisJcHJldl9ldGlt ZSA9IGV0aW1lOwogCS8qIFN1YnRyYWN0IHRpbWUgZGVsdGEgZnJvbSByYXcgdGltZXN0YW1wIHRv IGdldCBmaW5hbAogCSAqIHZibGFua190aW1lIHRpbWVzdGFtcCBmb3IgZW5kIG9mIHZibGFuay4K IAkgKi8KIAlldGltZSA9IGt0aW1lX3N1Yl9ucyhldGltZSwgZGVsdGFfbnMpOwotCSp2Ymxhbmtf dGltZSA9IGt0aW1lX3RvX3RpbWV2YWwoZXRpbWUpOworCSp2YmxhbmtfdGltZSA9IGV0aW1lOwog Ci0JRFJNX0RFQlVHX1ZCTCgiY3J0YyAldSA6IHYgcCglZCwlZClAICVsZC4lbGQgLT4gJWxkLiVs ZCBbZSAlZCB1cywgJWQgcmVwXVxuIiwKKwlEUk1fREVCVUdfVkJMKCJjcnRjICV1IDogdiBwKCVk LCVkKUAgJWxsZCAtPiAlbGxkIFtlICVkIHVzLCAlZCByZXBdXG4iLAogCQkgICAgICBwaXBlLCBo cG9zLCB2cG9zLAotCQkgICAgICAobG9uZyl0dl9ldGltZS50dl9zZWMsIChsb25nKXR2X2V0aW1l LnR2X3VzZWMsCi0JCSAgICAgIChsb25nKXZibGFua190aW1lLT50dl9zZWMsIChsb25nKXZibGFu a190aW1lLT50dl91c2VjLAorCQkgICAgICAobG9uZyBsb25nKSBwcmV2X2V0aW1lLAorCQkgICAg ICAobG9uZyBsb25nKSBldGltZSwKIAkJICAgICAgZHVyYXRpb25fbnMvMTAwMCwgaSk7CiAKIAly ZXR1cm4gdHJ1ZTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NhbGNfdmJsdGltZXN0YW1wX2Zyb21f c2Nhbm91dHBvcyk7CiAKLXN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBnZXRfZHJtX3RpbWVzdGFtcCh2 b2lkKQorc3RhdGljIGt0aW1lX3QgZ2V0X2RybV90aW1lc3RhbXAodm9pZCkKIHsKLQlrdGltZV90 IG5vdzsKLQotCW5vdyA9IGRybV90aW1lc3RhbXBfbW9ub3RvbmljID8ga3RpbWVfZ2V0KCkgOiBr dGltZV9nZXRfcmVhbCgpOwotCXJldHVybiBrdGltZV90b190aW1ldmFsKG5vdyk7CisJcmV0dXJu IGRybV90aW1lc3RhbXBfbW9ub3RvbmljID8ga3RpbWVfZ2V0KCkgOiBrdGltZV9nZXRfcmVhbCgp OwogfQogCiAvKioKQEAgLTcyOCw3ICs3MjMsNyBAQCBzdGF0aWMgc3RydWN0IHRpbWV2YWwgZ2V0 X2RybV90aW1lc3RhbXAodm9pZCkKICAqLwogc3RhdGljIGJvb2wKIGRybV9nZXRfbGFzdF92Ymx0 aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCi0JCQkg IHN0cnVjdCB0aW1ldmFsICp0dmJsYW5rLCBib29sIGluX3ZibGFua19pcnEpCisJCQkgIGt0aW1l X3QgKnR2YmxhbmssIGJvb2wgaW5fdmJsYW5rX2lycSkKIHsKIAlib29sIHJldCA9IGZhbHNlOwog CkBAIC03NjIsMjEgKzc1NywzNSBAQCBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogICogUmV0dXJuczoKICAqIFRoZSBz b2Z0d2FyZSB2YmxhbmsgY291bnRlci4KICAqLwotdTMyIGRybV9jcnRjX3ZibGFua19jb3VudChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCit1NjQgZHJtX2NydGNfdmJsYW5rX2NvdW50KHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIHsKIAlyZXR1cm4gZHJtX3ZibGFua19jb3VudChjcnRjLT5kZXYsIGRy bV9jcnRjX2luZGV4KGNydGMpKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX2Nv dW50KTsKIAotc3RhdGljIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAotCQkJCSAgICAgc3RydWN0IHRpbWV2YWwg KnZibGFua3RpbWUpCisvKioKKyAqIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUgLSByZXRyaWV2 ZSAiY29va2VkIiB2YmxhbmsgY291bnRlciB2YWx1ZSBhbmQgdGhlCisgKiAgICAgc3lzdGVtIHRp bWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoYXQgdmJsYW5rIGNvdW50ZXIgdmFsdWUuCisgKiBA ZGV2OiBEUk0gZGV2aWNlCisgKiBAcGlwZTogaW5kZXggb2YgQ1JUQyB3aG9zZSBjb3VudGVyIHRv IHJldHJpZXZlCisgKiBAdmJsYW5rdGltZTogUG9pbnRlciB0byBzdHJ1Y3QgdGltZXZhbCB0byBy ZWNlaXZlIHRoZSB2YmxhbmsgdGltZXN0YW1wLgorICoKKyAqIEZldGNoZXMgdGhlICJjb29rZWQi IHZibGFuayBjb3VudCB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlIG51bWJlciBvZgorICogdmJs YW5rIGV2ZW50cyBzaW5jZSB0aGUgc3lzdGVtIHdhcyBib290ZWQsIGluY2x1ZGluZyBsb3N0IGV2 ZW50cyBkdWUgdG8KKyAqIG1vZGVzZXR0aW5nIGFjdGl2aXR5LiBSZXR1cm5zIGNvcnJlc3BvbmRp bmcgc3lzdGVtIHRpbWVzdGFtcCBvZiB0aGUgdGltZQorICogb2YgdGhlIHZibGFuayBpbnRlcnZh bCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHZibGFuayBjb3VudGVyIHZhbHVlLgor ICoKKyAqIFRoaXMgaXMgdGhlIGxlZ2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX3ZibGFua19jb3Vu dF9hbmRfdGltZSgpLgorICovCitzdGF0aWMgdTY0IGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCisJCQkJICAgICBrdGlt ZV90ICp2Ymxhbmt0aW1lKQogewogCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZk ZXYtPnZibGFua1twaXBlXTsKLQl1MzIgdmJsYW5rX2NvdW50OworCXU2NCB2YmxhbmtfY291bnQ7 CiAJdW5zaWduZWQgaW50IHNlcTsKIAogCWlmIChXQVJOX09OKHBpcGUgPj0gZGV2LT5udW1fY3J0 Y3MpKSB7Ci0JCSp2Ymxhbmt0aW1lID0gKHN0cnVjdCB0aW1ldmFsKSB7IDAgfTsKKwkJKnZibGFu a3RpbWUgPSAwOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTgwMCw4ICs4MDksOCBAQCBzdGF0aWMg dTMyIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUsCiAgKiBtb2Rlc2V0dGluZyBhY3Rpdml0eS4gUmV0dXJucyBjb3JyZXNw b25kaW5nIHN5c3RlbSB0aW1lc3RhbXAgb2YgdGhlIHRpbWUKICAqIG9mIHRoZSB2YmxhbmsgaW50 ZXJ2YWwgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCB2YmxhbmsgY291bnRlciB2YWx1 ZS4KICAqLwotdTMyIGRybV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCi0JCQkJICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3RpbWUpCit1NjQgZHJtX2Ny dGNfdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICBr dGltZV90ICp2Ymxhbmt0aW1lKQogewogCXJldHVybiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1l KGNydGMtPmRldiwgZHJtX2NydGNfaW5kZXgoY3J0YyksCiAJCQkJCSB2Ymxhbmt0aW1lKTsKQEAg LTgxMCwxMSArODE5LDE0IEBAIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX2NvdW50X2Fu ZF90aW1lKTsKIAogc3RhdGljIHZvaWQgc2VuZF92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSwKLQkJdW5zaWdu ZWQgbG9uZyBzZXEsIHN0cnVjdCB0aW1ldmFsICpub3cpCisJCXU2NCBzZXEsIGt0aW1lX3Qgbm93 KQogeworCXN0cnVjdCB0aW1ldmFsIHR2OworCisJdHYgPSBrdGltZV90b190aW1ldmFsKG5vdyk7 CiAJZS0+ZXZlbnQuc2VxdWVuY2UgPSBzZXE7Ci0JZS0+ZXZlbnQudHZfc2VjID0gbm93LT50dl9z ZWM7Ci0JZS0+ZXZlbnQudHZfdXNlYyA9IG5vdy0+dHZfdXNlYzsKKwllLT5ldmVudC50dl9zZWMg PSB0di50dl9zZWM7CisJZS0+ZXZlbnQudHZfdXNlYyA9IHR2LnR2X3VzZWM7CiAKIAl0cmFjZV9k cm1fdmJsYW5rX2V2ZW50X2RlbGl2ZXJlZChlLT5iYXNlLmZpbGVfcHJpdiwgZS0+cGlwZSwKIAkJ CQkJIGUtPmV2ZW50LnNlcXVlbmNlKTsKQEAgLTg2OSw3ICs4ODEsNyBAQCB2b2lkIGRybV9jcnRj X2FybV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWFzc2VydF9zcGluX2xv Y2tlZCgmZGV2LT5ldmVudF9sb2NrKTsKIAogCWUtPnBpcGUgPSBwaXBlOwotCWUtPmV2ZW50LnNl cXVlbmNlID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpOworCWUtPnNlcXVlbmNlID0gZHJt X3ZibGFua19jb3VudChkZXYsIHBpcGUpOwogCWUtPmV2ZW50LmNydGNfaWQgPSBjcnRjLT5iYXNl LmlkOwogCWxpc3RfYWRkX3RhaWwoJmUtPmJhc2UubGluaywgJmRldi0+dmJsYW5rX2V2ZW50X2xp c3QpOwogfQpAQCAtODkwLDE5ICs5MDIsMTkgQEAgdm9pZCBkcm1fY3J0Y19zZW5kX3ZibGFua19l dmVudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFu a19ldmVudCAqZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXVu c2lnbmVkIGludCBzZXEsIHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgdGlt ZXZhbCBub3c7CisJdTY0IHNlcTsKKwl1bnNpZ25lZCBpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4 KGNydGMpOworCWt0aW1lX3Qgbm93OwogCiAJaWYgKGRldi0+bnVtX2NydGNzID4gMCkgewogCQlz ZXEgPSBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRldiwgcGlwZSwgJm5vdyk7CiAJfSBlbHNl IHsKIAkJc2VxID0gMDsKLQogCQlub3cgPSBnZXRfZHJtX3RpbWVzdGFtcCgpOwogCX0KIAllLT5w aXBlID0gcGlwZTsKIAllLT5ldmVudC5jcnRjX2lkID0gY3J0Yy0+YmFzZS5pZDsKLQlzZW5kX3Zi bGFua19ldmVudChkZXYsIGUsIHNlcSwgJm5vdyk7CisJc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBl LCBzZXEsIG5vdyk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50 KTsKIApAQCAtMTEwMCw5ICsxMTEyLDkgQEAgdm9pZCBkcm1fY3J0Y192Ymxhbmtfb2ZmKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKIAl1bnNpZ25lZCBpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNy dGMpOwogCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBl XTsKIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplLCAqdDsKLQlzdHJ1Y3QgdGlt ZXZhbCBub3c7CisJa3RpbWVfdCBub3c7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKLQl1bnNp Z25lZCBpbnQgc2VxOworCXU2NCBzZXE7CiAKIAlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVt X2NydGNzKSkKIAkJcmV0dXJuOwpAQCAtMTEzNywxMSArMTE0OSwxMSBAQCB2b2lkIGRybV9jcnRj X3ZibGFua19vZmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQlpZiAoZS0+cGlwZSAhPSBwaXBl KQogCQkJY29udGludWU7CiAJCURSTV9ERUJVRygiU2VuZGluZyBwcmVtYXR1cmUgdmJsYW5rIGV2 ZW50IG9uIGRpc2FibGU6ICIKLQkJCSAgIndhbnRlZCAldSwgY3VycmVudCAldVxuIiwKLQkJCSAg ZS0+ZXZlbnQuc2VxdWVuY2UsIHNlcSk7CisJCQkgICJ3YW50ZWQgJWxsdSBjdXJyZW50ICVsbHVc biIsCisJCQkgIGUtPnNlcXVlbmNlLCBzZXEpOwogCQlsaXN0X2RlbCgmZS0+YmFzZS5saW5rKTsK IAkJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKLQkJc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBl LCBzZXEsICZub3cpOworCQlzZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgbm93KTsKIAl9 CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBpcnFmbGFncyk7CiAK QEAgLTEzMTAsMjAgKzEzMjIsMjEgQEAgaW50IGRybV9sZWdhY3lfbW9kZXNldF9jdGxfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGlubGluZSBib29sIHZibGFua19wYXNzZWQodTMyIHNlcSwgdTMyIHJlZikKK3N0YXRpYyBp bmxpbmUgYm9vbCB2YmxhbmtfcGFzc2VkKHU2NCBzZXEsIHU2NCByZWYpCiB7CiAJcmV0dXJuIChz ZXEgLSByZWYpIDw9ICgxIDw8IDIzKTsKIH0KIAogc3RhdGljIGludCBkcm1fcXVldWVfdmJsYW5r X2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAorCQkJCSAg dTY0IHJlcV9zZXEsCiAJCQkJICB1bmlvbiBkcm1fd2FpdF92YmxhbmsgKnZibHdhaXQsCiAJCQkJ ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIHsKIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRj ICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFu a19ldmVudCAqZTsKLQlzdHJ1Y3QgdGltZXZhbCBub3c7CisJa3RpbWVfdCBub3c7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKLQl1bnNpZ25lZCBpbnQgc2VxOworCXU2NCBzZXE7CiAJaW50IHJldDsK IAogCWUgPSBremFsbG9jKHNpemVvZigqZSksIEdGUF9LRVJORUwpOwpAQCAtMTM1OCwyMSArMTM3 MSwyMCBAQCBzdGF0aWMgaW50IGRybV9xdWV1ZV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAKIAlzZXEgPSBkcm1fdmJsYW5rX2NvdW50X2Fu ZF90aW1lKGRldiwgcGlwZSwgJm5vdyk7CiAKLQlEUk1fREVCVUcoImV2ZW50IG9uIHZibGFuayBj b3VudCAldSwgY3VycmVudCAldSwgY3J0YyAldVxuIiwKLQkJICB2Ymx3YWl0LT5yZXF1ZXN0LnNl cXVlbmNlLCBzZXEsIHBpcGUpOworCURSTV9ERUJVRygiZXZlbnQgb24gdmJsYW5rIGNvdW50ICVs bHUsIGN1cnJlbnQgJWxsdSwgY3J0YyAldVxuIiwKKwkJICByZXFfc2VxLCBzZXEsIHBpcGUpOwog Ci0JdHJhY2VfZHJtX3ZibGFua19ldmVudF9xdWV1ZWQoZmlsZV9wcml2LCBwaXBlLAotCQkJCSAg ICAgIHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UpOworCXRyYWNlX2RybV92YmxhbmtfZXZlbnRf cXVldWVkKGZpbGVfcHJpdiwgcGlwZSwgcmVxX3NlcSk7CiAKLQllLT5ldmVudC5zZXF1ZW5jZSA9 IHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2U7Ci0JaWYgKHZibGFua19wYXNzZWQoc2VxLCB2Ymx3 YWl0LT5yZXF1ZXN0LnNlcXVlbmNlKSkgeworCWUtPnNlcXVlbmNlID0gcmVxX3NlcTsKKwlpZiAo dmJsYW5rX3Bhc3NlZChzZXEsIHJlcV9zZXEpKSB7CiAJCWRybV92YmxhbmtfcHV0KGRldiwgcGlw ZSk7Ci0JCXNlbmRfdmJsYW5rX2V2ZW50KGRldiwgZSwgc2VxLCAmbm93KTsKKwkJc2VuZF92Ymxh bmtfZXZlbnQoZGV2LCBlLCBzZXEsIG5vdyk7CiAJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0g c2VxOwogCX0gZWxzZSB7CiAJCS8qIGRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyB3aWxsIGNhbGwg ZHJtX3ZibGFua19wdXQgKi8KIAkJbGlzdF9hZGRfdGFpbCgmZS0+YmFzZS5saW5rLCAmZGV2LT52 YmxhbmtfZXZlbnRfbGlzdCk7Ci0JCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gdmJsd2FpdC0+ cmVxdWVzdC5zZXF1ZW5jZTsKKwkJdmJsd2FpdC0+cmVwbHkuc2VxdWVuY2UgPSByZXFfc2VxOwog CX0KIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwpA QCAtMTM5OCwxMiArMTQxMCw0OCBAQCBzdGF0aWMgYm9vbCBkcm1fd2FpdF92YmxhbmtfaXNfcXVl cnkodW5pb24gZHJtX3dhaXRfdmJsYW5rICp2Ymx3YWl0KQogCQkJCQkgIF9EUk1fVkJMQU5LX05F WFRPTk1JU1MpKTsKIH0KIAorLyoKKyAqIFdpZGVuIGEgMzItYml0IHBhcmFtIHRvIDY0LWJpdHMu CisgKgorICogXHBhcmFtIG5hcnJvdyAzMi1iaXQgdmFsdWUgKG1pc3NpbmcgdXBwZXIgMzIgYml0 cykKKyAqIFxwYXJhbSBuZWFyIDY0LWJpdCB2YWx1ZSB0aGF0IHNob3VsZCBiZSAnY2xvc2UnIHRv IG5lYXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSA2NC1iaXQgdmFsdWUgdXNpbmcg dGhlIGxvd2VyIDMyLWJpdHMgZnJvbQorICogJ25hcnJvdycgYW5kIGNvbnN0cnVjdGluZyB0aGUg dXBwZXIgMzItYml0cyBzbyB0aGF0IHRoZSByZXN1bHQgaXMKKyAqIGFzIGNsb3NlIGFzIHBvc3Np YmxlIHRvICduZWFyJy4KKyAqLworIAorc3RhdGljIHU2NCB3aWRlbl8zMl90b182NCh1MzIgbmFy cm93LCB1NjQgbmVhcikKK3sKKwl1NjQgd2lkZSA9IG5hcnJvdyB8IChuZWFyICYgMHhmZmZmZmZm ZjAwMDAwMDAwVUxMKTsKKwlpZiAoKGludDY0X3QpICh3aWRlIC0gbmVhcikgPiAweDgwMDAwMDAw TEwpCisJCXdpZGUgLT0gMHgxMDAwMDAwMDBVTEw7CisJZWxzZSBpZiAoKGludDY0X3QpIChuZWFy IC0gd2lkZSkgPiAweDgwMDAwMDAwTEwpCisJCXdpZGUgKz0gMHgxMDAwMDAwMDBVTEw7CisJcmV0 dXJuIHdpZGU7Cit9CisKKy8qCisgKiBXYWl0IGZvciBWQkxBTksuCisgKgorICogXHBhcmFtIGlu b2RlIGRldmljZSBpbm9kZS4KKyAqIFxwYXJhbSBmaWxlX3ByaXYgRFJNIGZpbGUgcHJpdmF0ZS4K KyAqIFxwYXJhbSBjbWQgY29tbWFuZC4KKyAqIFxwYXJhbSBkYXRhIHVzZXIgYXJndW1lbnQsIHBv aW50aW5nIHRvIGEgZHJtX3dhaXRfdmJsYW5rIHN0cnVjdHVyZS4KKyAqIFxyZXR1cm4gemVybyBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgbnVtYmVyIG9uIGZhaWx1cmUuCisgKgorICogVGhpcyBm dW5jdGlvbiBlbmFibGVzIHRoZSB2YmxhbmsgaW50ZXJydXB0IG9uIHRoZSBwaXBlIHJlcXVlc3Rl ZCwgdGhlbgorICogc2xlZXBzIHdhaXRpbmcgZm9yIHRoZSByZXF1ZXN0ZWQgc2VxdWVuY2UgbnVt YmVyIHRvIG9jY3VyLCBhbmQgZHJvcHMKKyAqIHRoZSB2YmxhbmsgaW50ZXJydXB0IHJlZmNvdW50 IGFmdGVyd2FyZHMuICh2YmxhbmsgSVJRIGRpc2FibGUgZm9sbG93cyB0aGF0CisgKiBhZnRlciBh IHRpbWVvdXQgd2l0aCBubyBmdXJ0aGVyIHZibGFuayB3YWl0cyBzY2hlZHVsZWQpLgorICovCiBp bnQgZHJtX3dhaXRfdmJsYW5rX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCBkcm1fdmJs YW5rX2NydGMgKnZibGFuazsKIAl1bmlvbiBkcm1fd2FpdF92YmxhbmsgKnZibHdhaXQgPSBkYXRh OwogCWludCByZXQ7CisJdTY0IHJlcV9zZXE7CiAJdW5zaWduZWQgaW50IGZsYWdzLCBzZXEsIHBp cGUsIGhpZ2hfcGlwZTsKIAogCWlmICghZGV2LT5pcnFfZW5hYmxlZCkKQEAgLTE0MzksMTIgKzE0 ODcsMTQgQEAgaW50IGRybV93YWl0X3ZibGFua19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCWlmIChkZXYtPnZibGFua19kaXNhYmxlX2ltbWVkaWF0ZSAmJgogCSAg ICBkcm1fd2FpdF92YmxhbmtfaXNfcXVlcnkodmJsd2FpdCkgJiYKIAkgICAgUkVBRF9PTkNFKHZi bGFuay0+ZW5hYmxlZCkpIHsKLQkJc3RydWN0IHRpbWV2YWwgbm93OworCQlrdGltZV90IG5vdzsK KwkJc3RydWN0IHRpbWV2YWwgdHY7CiAKIAkJdmJsd2FpdC0+cmVwbHkuc2VxdWVuY2UgPQogCQkJ ZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShkZXYsIHBpcGUsICZub3cpOwotCQl2Ymx3YWl0LT5y ZXBseS50dmFsX3NlYyA9IG5vdy50dl9zZWM7Ci0JCXZibHdhaXQtPnJlcGx5LnR2YWxfdXNlYyA9 IG5vdy50dl91c2VjOworCQl0diA9IGt0aW1lX3RvX3RpbWV2YWwobm93KTsKKwkJdmJsd2FpdC0+ cmVwbHkudHZhbF9zZWMgPSB0di50dl9zZWM7CisJCXZibHdhaXQtPnJlcGx5LnR2YWxfdXNlYyA9 IHR2LnR2X3VzZWM7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTQ1Nyw5ICsxNTA3LDEyIEBAIGlu dCBkcm1fd2FpdF92YmxhbmtfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAogCXN3aXRjaCAodmJsd2FpdC0+cmVxdWVzdC50eXBlICYgX0RSTV9WQkxBTktfVFlQRVNf TUFTSykgewogCWNhc2UgX0RSTV9WQkxBTktfUkVMQVRJVkU6Ci0JCXZibHdhaXQtPnJlcXVlc3Qu c2VxdWVuY2UgKz0gc2VxOworCQlyZXFfc2VxID0gc2VxICsgdmJsd2FpdC0+cmVxdWVzdC5zZXF1 ZW5jZTsKIAkJdmJsd2FpdC0+cmVxdWVzdC50eXBlICY9IH5fRFJNX1ZCTEFOS19SRUxBVElWRTsK KwkJdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSA9IHJlcV9zZXE7CisJCWJyZWFrOwogCWNhc2Ug X0RSTV9WQkxBTktfQUJTT0xVVEU6CisJCXJlcV9zZXEgPSB3aWRlbl8zMl90b182NCh2Ymx3YWl0 LT5yZXF1ZXN0LnNlcXVlbmNlLCBzZXEpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAt RUlOVkFMOwpAQCAtMTQ2NywzMSArMTUyMCwzNiBAQCBpbnQgZHJtX3dhaXRfdmJsYW5rX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJfQogCiAJaWYgKChmbGFncyAm IF9EUk1fVkJMQU5LX05FWFRPTk1JU1MpICYmCi0JICAgIHZibGFua19wYXNzZWQoc2VxLCB2Ymx3 YWl0LT5yZXF1ZXN0LnNlcXVlbmNlKSkKLQkJdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSA9IHNl cSArIDE7CisJICAgIHZibGFua19wYXNzZWQoc2VxLCByZXFfc2VxKSkgeworCQlyZXFfc2VxID0g c2VxICsgMTsKKwkJdmJsd2FpdC0+cmVxdWVzdC50eXBlICY9IH5fRFJNX1ZCTEFOS19ORVhUT05N SVNTOworCQl2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlID0gcmVxX3NlcTsKKwl9CiAKIAlpZiAo ZmxhZ3MgJiBfRFJNX1ZCTEFOS19FVkVOVCkgewogCQkvKiBtdXN0IGhvbGQgb24gdG8gdGhlIHZi bGFuayByZWYgdW50aWwgdGhlIGV2ZW50IGZpcmVzCiAJCSAqIGRybV92YmxhbmtfcHV0IHdpbGwg YmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5CiAJCSAqLwotCQlyZXR1cm4gZHJtX3F1ZXVlX3ZibGFu a19ldmVudChkZXYsIHBpcGUsIHZibHdhaXQsIGZpbGVfcHJpdik7CisJCXJldHVybiBkcm1fcXVl dWVfdmJsYW5rX2V2ZW50KGRldiwgcGlwZSwgcmVxX3NlcSwgdmJsd2FpdCwgZmlsZV9wcml2KTsK IAl9CiAKLQlpZiAodmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSAhPSBzZXEpIHsKLQkJRFJNX0RF QlVHKCJ3YWl0aW5nIG9uIHZibGFuayBjb3VudCAldSwgY3J0YyAldVxuIiwKLQkJCSAgdmJsd2Fp dC0+cmVxdWVzdC5zZXF1ZW5jZSwgcGlwZSk7CisJaWYgKHJlcV9zZXEgIT0gc2VxKSB7CisJCURS TV9ERUJVRygid2FpdGluZyBvbiB2YmxhbmsgY291bnQgJWxsdSwgY3J0YyAldVxuIiwKKwkJCSAg cmVxX3NlcSwgcGlwZSk7CiAJCURSTV9XQUlUX09OKHJldCwgdmJsYW5rLT5xdWV1ZSwgMyAqIEha LAogCQkJICAgIHZibGFua19wYXNzZWQoZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLAotCQkJ CQkgIHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UpIHx8CisJCQkJCSAgcmVxX3NlcSkgfHwKIAkJ CSAgICAhUkVBRF9PTkNFKHZibGFuay0+ZW5hYmxlZCkpOwogCX0KIAogCWlmIChyZXQgIT0gLUVJ TlRSKSB7Ci0JCXN0cnVjdCB0aW1ldmFsIG5vdzsKKwkJa3RpbWVfdCBub3c7CisJCXN0cnVjdCB0 aW1ldmFsIHR2OwogCiAJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gZHJtX3ZibGFua19jb3Vu dF9hbmRfdGltZShkZXYsIHBpcGUsICZub3cpOwotCQl2Ymx3YWl0LT5yZXBseS50dmFsX3NlYyA9 IG5vdy50dl9zZWM7Ci0JCXZibHdhaXQtPnJlcGx5LnR2YWxfdXNlYyA9IG5vdy50dl91c2VjOwor CQl0diA9IGt0aW1lX3RvX3RpbWV2YWwobm93KTsKKwkJdmJsd2FpdC0+cmVwbHkudHZhbF9zZWMg PSB0di50dl9zZWM7CisJCXZibHdhaXQtPnJlcGx5LnR2YWxfdXNlYyA9IHR2LnR2X3VzZWM7CiAK IAkJRFJNX0RFQlVHKCJjcnRjICVkIHJldHVybmluZyAldSB0byBjbGllbnRcbiIsCiAJCQkgIHBp cGUsIHZibHdhaXQtPnJlcGx5LnNlcXVlbmNlKTsKQEAgLTE1MDcsOCArMTU2NSw4IEBAIGludCBk cm1fd2FpdF92YmxhbmtfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IHN0YXRpYyB2b2lkIGRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKIHsKIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2 ZW50ICplLCAqdDsKLQlzdHJ1Y3QgdGltZXZhbCBub3c7Ci0JdW5zaWduZWQgaW50IHNlcTsKKwlr dGltZV90IG5vdzsKKwl1NjQgc2VxOwogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXYtPmV2ZW50 X2xvY2spOwogCkBAIC0xNTE3LDE1ICsxNTc1LDE1IEBAIHN0YXRpYyB2b2lkIGRybV9oYW5kbGVf dmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkK IAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgdCwgJmRldi0+dmJsYW5rX2V2ZW50X2xpc3Qs IGJhc2UubGluaykgewogCQlpZiAoZS0+cGlwZSAhPSBwaXBlKQogCQkJY29udGludWU7Ci0JCWlm ICghdmJsYW5rX3Bhc3NlZChzZXEsIGUtPmV2ZW50LnNlcXVlbmNlKSkKKwkJaWYgKCF2Ymxhbmtf cGFzc2VkKHNlcSwgZS0+c2VxdWVuY2UpKQogCQkJY29udGludWU7CiAKLQkJRFJNX0RFQlVHKCJ2 YmxhbmsgZXZlbnQgb24gJXUsIGN1cnJlbnQgJXVcbiIsCi0JCQkgIGUtPmV2ZW50LnNlcXVlbmNl LCBzZXEpOworCQlEUk1fREVCVUcoInZibGFuayBldmVudCBvbiAlbGx1LCBjdXJyZW50ICVsbHVc biIsCisJCQkgIGUtPnNlcXVlbmNlLCBzZXEpOwogCiAJCWxpc3RfZGVsKCZlLT5iYXNlLmxpbmsp OwogCQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwotCQlzZW5kX3ZibGFua19ldmVudChkZXYs IGUsIHNlcSwgJm5vdyk7CisJCXNlbmRfdmJsYW5rX2V2ZW50KGRldiwgZSwgc2VxLCBub3cpOwog CX0KIAogCXRyYWNlX2RybV92YmxhbmtfZXZlbnQocGlwZSwgc2VxKTsKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9kcnYuaCBiL2luY2x1ZGUvZHJtL2RybV9kcnYuaAppbmRleCBlZTA2ZWNk NmMwMWYuLjQxMmU4M2E0ZDNkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCisr KyBiL2luY2x1ZGUvZHJtL2RybV9kcnYuaApAQCAtMzI0LDcgKzMyNCw3IEBAIHN0cnVjdCBkcm1f ZHJpdmVyIHsKIAkgKi8KIAlib29sICgqZ2V0X3ZibGFua190aW1lc3RhbXApIChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKIAkJCQkgICAgIGludCAqbWF4X2Vycm9y LAotCQkJCSAgICAgc3RydWN0IHRpbWV2YWwgKnZibGFua190aW1lLAorCQkJCSAgICAga3RpbWVf dCAqdmJsYW5rX3RpbWUsCiAJCQkJICAgICBib29sIGluX3ZibGFua19pcnEpOwogCiAJLyoqCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmggYi9pbmNsdWRlL2RybS9kcm1fdmJs YW5rLmgKaW5kZXggN2ZiYTllZmU0OTUxLi5jY2U1MzEzMDUxMGYgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZHJtL2RybV92YmxhbmsuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fdmJsYW5rLmgKQEAgLTQ4 LDYgKzQ4LDEwIEBAIHN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgewogCSAqLwogCXVu c2lnbmVkIGludCBwaXBlOwogCS8qKgorCSAqIEBzZXF1ZW5jZTogZnJhbWUgZXZlbnQgc2hvdWxk IGJlIHRyaWdnZXJlZCBhdAorCSAqLworCXU2NCBzZXF1ZW5jZTsKKwkvKioKIAkgKiBAZXZlbnQ6 IEFjdHVhbCBldmVudCB3aGljaCB3aWxsIGJlIHNlbnQgdG8gdXNlcnNwYWNlLgogCSAqLwogCXN0 cnVjdCBkcm1fZXZlbnRfdmJsYW5rIGV2ZW50OwpAQCAtODgsMTEgKzkyLDExIEBAIHN0cnVjdCBk cm1fdmJsYW5rX2NydGMgewogCS8qKgogCSAqIEBjb3VudDogQ3VycmVudCBzb2Z0d2FyZSB2Ymxh bmsgY291bnRlci4KIAkgKi8KLQl1MzIgY291bnQ7CisJdTY0IGNvdW50OwogCS8qKgogCSAqIEB0 aW1lOiBWYmxhbmsgdGltZXN0YW1wIGNvcnJlc3BvbmRpbmcgdG8gQGNvdW50LgogCSAqLwotCXN0 cnVjdCB0aW1ldmFsIHRpbWU7CisJa3RpbWVfdCB0aW1lOwogCiAJLyoqCiAJICogQHJlZmNvdW50 OiBOdW1iZXIgb2YgdXNlcnMvd2FpdGVycyBvZiB0aGUgdmJsYW5rIGludGVycnVwdC4gT25seSB3 aGVuCkBAIC0xNTIsOSArMTU2LDkgQEAgc3RydWN0IGRybV92YmxhbmtfY3J0YyB7CiB9OwogCiBp bnQgZHJtX3ZibGFua19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBu dW1fY3J0Y3MpOwotdTMyIGRybV9jcnRjX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwotdTMyIGRybV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCi0JCQkJICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3RpbWUpOwordTY0IGRybV9jcnRj X3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwordTY0IGRybV9jcnRjX3ZibGFu a19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICAga3RpbWVfdCAq dmJsYW5rdGltZSk7CiB2b2lkIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpl KTsKIHZvaWQgZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CkBAIC0xNzIsNyArMTc2LDcgQEAgdTMyIGRybV9jcnRjX2FjY3VyYXRlX3ZibGFua19jb3VudChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogCiBib29sIGRybV9jYWxjX3ZibHRpbWVzdGFtcF9mcm9t X3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgdW5zaWduZWQgaW50 IHBpcGUsIGludCAqbWF4X2Vycm9yLAotCQkJCQkgICBzdHJ1Y3QgdGltZXZhbCAqdmJsYW5rX3Rp bWUsCisJCQkJCSAgIGt0aW1lX3QgKnZibGFua190aW1lLAogCQkJCQkgICBib29sIGluX3ZibGFu a19pcnEpOwogdm9pZCBkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl KTsKLS0gCjIuMTMuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==