From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v3] drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) Date: Thu, 14 Jul 2016 08:04:19 +0100 Message-ID: <1468479859-16767-1-git-send-email-chris@chris-wilson.co.uk> References: <20160713202921.GE2565@joana> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160713202921.GE2565@joana> 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 Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, Zach Reizner , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org dkdFTSBidWZmZXJzIGFyZSB1c2VmdWwgZm9yIHBhc3NpbmcgZGF0YSBiZXR3ZWVuIHNvZnR3YXJl IGNsaWVudHMgYW5kCmhhcmR3YXJlIHJlbmRlcnMuIEJ5IGFsbG93aW5nIHRoZSB1c2VyIHRvIGNy ZWF0ZSBhbmQgYXR0YWNoIGZlbmNlcyB0bwp0aGUgZXhwb3J0ZWQgdkdFTSBidWZmZXJzIChvbiB0 aGUgZG1hLWJ1ZiksIHRoZSB1c2VyIGNhbiBpbXBsZW1lbnQgYQpkZWZlcnJlZCByZW5kZXJlciBh bmQgcXVldWUgaGFyZHdhcmUgb3BlcmF0aW9ucyBsaWtlIGZsaXBwaW5nIGFuZCB0aGVuCnNpZ25h bCB0aGUgYnVmZmVyIHJlYWRpbmVzcyAoaS5lLiB0aGlzIGFsbG93cyB0aGUgdXNlciB0byBzY2hl ZHVsZQpvcGVyYXRpb25zIG91dC1vZi1vcmRlciwgYnV0IGhhdmUgdGhlbSBjb21wbGV0ZSBpbi1v cmRlcikuCgpUaGlzIGFsc28gbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd3JpdGUgdGlnaHRseSBj b250cm9sbGVkIHRlc3RjYXNlcyBmb3IKZG1hLWJ1ZiBmZW5jaW5nIGFuZCBzaWduYWxpbmcgYmV0 d2VlbiBoYXJkd2FyZSBkcml2ZXJzLgoKdjI6IERvbid0IHByZXRlbmQgdGhlIGZlbmNlcyBleGlz dCBpbiBhbiBvcmRlcmVkIHRpbWVsaW5lLCBidXQgYWxsb2NhdGUKYSBzZXBhcmF0ZSBmZW5jZS1j b250ZXh0IGZvciBlYWNoIGZlbmNlIHNvIHRoYXQgdGhlIGZlbmNlcyBhcmUKdW5vcmRlcmVkLgp2 MzogTWFrZSB0aGUgZGVidWcgb3V0cHV0IG1vcmUgaW50ZXJlc3RpbmcsIGFuZCBzbyB0aGUgc2ln bmFsZWQgc3RhdHVzLgoKVGVzdGNhc2U6IGlndC92Z2VtX2Jhc2ljL2RtYWJ1Zi1mZW5jZQpTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFNl YW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpDYzogWmFjaCBSZWl6bmVyIDx6YWNockBn b29nbGUuY29tPgpDYzogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3Jh LmNvLnVrPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQWNrZWQt Ynk6IFphY2ggUmVpem5lciA8emFjaHJAZ29vZ2xlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v dmdlbS9NYWtlZmlsZSAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2 LmMgICB8ICAzNCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oICAgfCAg MTYgKysrCiBkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMgfCAyMDcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vdmdlbV9kcm0u aCAgICAgICB8ICA2MiArKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2ZlbmNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvZHJtL3Zn ZW1fZHJtLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlCmluZGV4IDNmNGM3Yjg0MjAyOC4uYmZjZGVhMTMz MGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZQpAQCAtMSw0ICsxLDQgQEAKIGNjZmxhZ3MteSA6PSAt SWluY2x1ZGUvZHJtCi12Z2VtLXkgOj0gdmdlbV9kcnYubwordmdlbS15IDo9IHZnZW1fZHJ2Lm8g dmdlbV9mZW5jZS5vCiAKIG9iai0kKENPTkZJR19EUk1fVkdFTSkJKz0gdmdlbS5vCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9kcnYuYwppbmRleCAyOWMyYWFiM2MxYTcuLmMxNWJhZmIwNjY2NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2Rydi5jCkBAIC04Myw2ICs4MywzNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZt X29wZXJhdGlvbnNfc3RydWN0IHZnZW1fZ2VtX3ZtX29wcyA9IHsKIAkuY2xvc2UgPSBkcm1fZ2Vt X3ZtX2Nsb3NlLAogfTsKIAorc3RhdGljIGludCB2Z2VtX29wZW4oc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxl OworCWludCByZXQ7CisKKwl2ZmlsZSA9IGt6YWxsb2Moc2l6ZW9mKCp2ZmlsZSksIEdGUF9LRVJO RUwpOworCWlmICghdmZpbGUpCisJCXJldHVybiAtRU5PTUVNOworCisJZmlsZS0+ZHJpdmVyX3By aXYgPSB2ZmlsZTsKKworCXJldCA9IHZnZW1fZmVuY2Vfb3Blbih2ZmlsZSk7CisJaWYgKHJldCkg eworCQlrZnJlZSh2ZmlsZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIHZnZW1fcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJp dmVyX3ByaXY7CisKKwl2Z2VtX2ZlbmNlX2Nsb3NlKHZmaWxlKTsKKwlrZnJlZSh2ZmlsZSk7Cit9 CisKIC8qIGlvY3RscyAqLwogCiBzdGF0aWMgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2Z2VtX2dl bV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTE2NCw2ICsxOTIsOCBAQCB1bnJl ZjoKIH0KIAogc3RhdGljIHN0cnVjdCBkcm1faW9jdGxfZGVzYyB2Z2VtX2lvY3Rsc1tdID0gewor CURSTV9JT0NUTF9ERUZfRFJWKFZHRU1fRkVOQ0VfQVRUQUNILCB2Z2VtX2ZlbmNlX2F0dGFjaF9p b2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9EUlYoVkdF TV9GRU5DRV9TSUdOQUwsIHZnZW1fZmVuY2Vfc2lnbmFsX2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVO REVSX0FMTE9XKSwKIH07CiAKIHN0YXRpYyBpbnQgdmdlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxw LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKQEAgLTI3MSw5ICszMDEsMTIgQEAgc3RhdGlj IGludCB2Z2VtX3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAKIHN0YXRp YyBzdHJ1Y3QgZHJtX2RyaXZlciB2Z2VtX2RyaXZlciA9IHsKIAkuZHJpdmVyX2ZlYXR1cmVzCQk9 IERSSVZFUl9HRU0gfCBEUklWRVJfUFJJTUUsCisJLm9wZW4JCQkJPSB2Z2VtX29wZW4sCisJLnBy ZWNsb3NlCQkJPSB2Z2VtX3ByZWNsb3NlLAogCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQJPSB2 Z2VtX2dlbV9mcmVlX29iamVjdCwKIAkuZ2VtX3ZtX29wcwkJCT0gJnZnZW1fZ2VtX3ZtX29wcywK IAkuaW9jdGxzCQkJCT0gdmdlbV9pb2N0bHMsCisJLm51bV9pb2N0bHMgCQkJPSBBUlJBWV9TSVpF KHZnZW1faW9jdGxzKSwKIAkuZm9wcwkJCQk9ICZ2Z2VtX2RyaXZlcl9mb3BzLAogCiAJLmR1bWJf Y3JlYXRlCQkJPSB2Z2VtX2dlbV9kdW1iX2NyZWF0ZSwKQEAgLTMyOCw1ICszNjEsNiBAQCBtb2R1 bGVfaW5pdCh2Z2VtX2luaXQpOwogbW9kdWxlX2V4aXQodmdlbV9leGl0KTsKIAogTU9EVUxFX0FV VEhPUigiUmVkIEhhdCwgSW5jLiIpOworTU9EVUxFX0FVVEhPUigiSW50ZWwgQ29ycG9yYXRpb24i KTsKIE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CiBNT0RVTEVfTElDRU5TRSgiR1BM IGFuZCBhZGRpdGlvbmFsIHJpZ2h0cyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmgKaW5kZXggOTg4 Y2JhYWU3NTg4Li4xZjg3OThhZDMyOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2Vt L3ZnZW1fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaApAQCAtMzIs OSArMzIsMjUgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2Vt Lmg+CiAKKyNpbmNsdWRlIDx1YXBpL2RybS92Z2VtX2RybS5oPgorCitzdHJ1Y3QgdmdlbV9maWxl IHsKKwlzdHJ1Y3QgaWRyIGZlbmNlX2lkcjsKKwlzdHJ1Y3QgbXV0ZXggZmVuY2VfbXV0ZXg7Cit9 OworCiAjZGVmaW5lIHRvX3ZnZW1fYm8oeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fdmdl bV9nZW1fb2JqZWN0LCBiYXNlKQogc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgewogCXN0cnVj dCBkcm1fZ2VtX29iamVjdCBiYXNlOwogfTsKIAoraW50IHZnZW1fZmVuY2Vfb3BlbihzdHJ1Y3Qg dmdlbV9maWxlICpmaWxlKTsKK2ludCB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAorCQkJICAgIHZvaWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxl ICpmaWxlKTsKK2ludCB2Z2VtX2ZlbmNlX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAorCQkJICAgIHZvaWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsK K3ZvaWQgdmdlbV9mZW5jZV9jbG9zZShzdHJ1Y3QgdmdlbV9maWxlICpmaWxlKTsKKwogI2VuZGlm CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMgYi9kcml2ZXJz L2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5iN2RhMTE0MTlhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vdmdlbS92Z2VtX2ZlbmNlLmMKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg MjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpCisgKiB0byBkZWFsIGluIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiBvbiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViCisgKiBsaWNlbnNl LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbQorICogdGhlbSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5USUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRI T1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTLCBPUiBPVEhFUiBMSUFCSUxJVFks IFdIRVRIRVIKKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCwgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9u Lmg+CisKKyNpbmNsdWRlICJ2Z2VtX2Rydi5oIgorCitzdHJ1Y3QgdmdlbV9mZW5jZSB7CisJc3Ry dWN0IGZlbmNlIGJhc2U7CisJc3RydWN0IHNwaW5sb2NrIGxvY2s7Cit9OworCitzdGF0aWMgY29u c3QgY2hhciAqdmdlbV9mZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkK K3sKKwlyZXR1cm4gInZnZW0iOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdmdlbV9mZW5jZV9n ZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQoreworCXJldHVybiAidW5ib3Vu ZCI7Cit9CisKK3N0YXRpYyBib29sIHZnZW1fZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpm ZW5jZSkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHZnZW1fZmVuY2VfZW5h YmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKmZlbmNlKQoreworCXJldHVybiB0cnVlOworfQor CitzdGF0aWMgdm9pZCB2Z2VtX2ZlbmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBj aGFyICpzdHIsIGludCBzaXplKQoreworCXNucHJpbnRmKHN0ciwgc2l6ZSwgIiV1IiwgZmVuY2Ut PnNlcW5vKTsKK30KKworc3RhdGljIHZvaWQgdmdlbV9mZW5jZV90aW1lbGluZV92YWx1ZV9zdHIo c3RydWN0IGZlbmNlICpmZW5jZSwgY2hhciAqc3RyLAorCQkJCQkgIGludCBzaXplKQoreworCXNu cHJpbnRmKHN0ciwgc2l6ZSwgIiV1IiwgZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpID8gZmVuY2Ut PnNlcW5vIDogMCk7Cit9CisKK2NvbnN0IHN0cnVjdCBmZW5jZV9vcHMgdmdlbV9mZW5jZV9vcHMg PSB7CisJLmdldF9kcml2ZXJfbmFtZSA9IHZnZW1fZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAorCS5n ZXRfdGltZWxpbmVfbmFtZSA9IHZnZW1fZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCisJLmVuYWJs ZV9zaWduYWxpbmcgPSB2Z2VtX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcsCisJLnNpZ25hbGVkID0g dmdlbV9mZW5jZV9zaWduYWxlZCwKKwkud2FpdCA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKKwkuZmVu Y2VfdmFsdWVfc3RyID0gdmdlbV9mZW5jZV92YWx1ZV9zdHIsCisJLnRpbWVsaW5lX3ZhbHVlX3N0 ciA9IHZnZW1fZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyLAorfTsKKworc3RhdGljIHN0cnVjdCBm ZW5jZSAqdmdlbV9mZW5jZV9jcmVhdGUoc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUpCit7CisJc3Ry dWN0IHZnZW1fZmVuY2UgKmZlbmNlOworCisJZmVuY2UgPSBremFsbG9jKHNpemVvZigqZmVuY2Up LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4gTlVMTDsKKworCXNwaW5fbG9j a19pbml0KCZmZW5jZS0+bG9jayk7CisJZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsICZ2Z2VtX2Zl bmNlX29wcywgJmZlbmNlLT5sb2NrLAorCQkgICBmZW5jZV9jb250ZXh0X2FsbG9jKDEpLCAxKTsK KworCXJldHVybiAmZmVuY2UtPmJhc2U7Cit9CisKK3N0YXRpYyBpbnQgYXR0YWNoX2RtYWJ1Zihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQor eworCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7CisKKwlpZiAob2JqLT5kbWFfYnVmKQorCQlyZXR1 cm4gMDsKKworCWRtYWJ1ZiA9IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfZXhwb3J0KGRldiwgb2Jq LCAwKTsKKwlpZiAoSVNfRVJSKGRtYWJ1ZikpCisJCXJldHVybiBQVFJfRVJSKGRtYWJ1Zik7CisK KwlvYmotPmRtYV9idWYgPSBkbWFidWY7CisJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7 CisJcmV0dXJuIDA7Cit9CisKK2ludCB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAorCQkJICAgIHZvaWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxl ICpmaWxlKQoreworCXN0cnVjdCBkcm1fdmdlbV9mZW5jZV9hdHRhY2ggKmFyZyA9IGRhdGE7CisJ c3RydWN0IHZnZW1fZmlsZSAqdmZpbGUgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0ICpyZXN2OworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0 cnVjdCBmZW5jZSAqZmVuY2U7CisJaW50IHJldDsKKworCWlmIChhcmctPmZsYWdzICYgflZHRU1f RkVOQ0VfV1JJVEUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGFyZy0+cGFkKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmctPmhh bmRsZSk7CisJaWYgKCFvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0ID0gYXR0YWNoX2Rt YWJ1ZihkZXYsIG9iaik7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlmZW5jZSA9IHZnZW1f ZmVuY2VfY3JlYXRlKHZmaWxlKTsKKwlpZiAoIWZlbmNlKSB7CisJCXJldCA9IC1FTk9NRU07CisJ CWdvdG8gb3V0OworCX0KKworCXJldCA9IDA7CisJcmVzdiA9IG9iai0+ZG1hX2J1Zi0+cmVzdjsK KwltdXRleF9sb2NrKCZyZXN2LT5sb2NrLmJhc2UpOworCWlmIChhcmctPmZsYWdzICYgVkdFTV9G RU5DRV9XUklURSkKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKHJlc3YsIGZl bmNlKTsKKwllbHNlIGlmICgocmV0ID0gcmVzZXJ2YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hhcmVk KHJlc3YpKSA9PSAwKQorCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZShyZXN2 LCBmZW5jZSk7CisJbXV0ZXhfdW5sb2NrKCZyZXN2LT5sb2NrLmJhc2UpOworCisJaWYgKHJldCA9 PSAwKSB7CisJCW11dGV4X2xvY2soJnZmaWxlLT5mZW5jZV9tdXRleCk7CisJCXJldCA9IGlkcl9h bGxvYygmdmZpbGUtPmZlbmNlX2lkciwgZmVuY2UsIDEsIDAsIEdGUF9LRVJORUwpOworCQltdXRl eF91bmxvY2soJnZmaWxlLT5mZW5jZV9tdXRleCk7CisJCWlmIChyZXQgPiAwKSB7CisJCQlhcmct Pm91dF9mZW5jZSA9IHJldDsKKwkJCXJldCA9IDA7CisJCX0KKwl9CisJaWYgKHJldCkgeworCQlm ZW5jZV9zaWduYWwoZmVuY2UpOworCQlmZW5jZV9wdXQoZmVuY2UpOworCX0KK291dDoKKwlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCXJldHVybiByZXQ7Cit9CisK K2ludCB2Z2VtX2ZlbmNlX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJ ICAgIHZvaWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVj dCB2Z2VtX2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IGRybV92Z2Vt X2ZlbmNlX3NpZ25hbCAqYXJnID0gZGF0YTsKKwlzdHJ1Y3QgZmVuY2UgKmZlbmNlOworCisJaWYg KGFyZy0+ZmxhZ3MpCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmdmZpbGUtPmZl bmNlX211dGV4KTsKKwlmZW5jZSA9IGlkcl9yZXBsYWNlKCZ2ZmlsZS0+ZmVuY2VfaWRyLCBOVUxM LCBhcmctPmZlbmNlKTsKKwltdXRleF91bmxvY2soJnZmaWxlLT5mZW5jZV9tdXRleCk7CisJaWYg KCFmZW5jZSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisJaWYgKElTX0VSUihmZW5jZSkpCisJCXJldHVy biBQVFJfRVJSKGZlbmNlKTsKKworCWZlbmNlX3NpZ25hbChmZW5jZSk7CisJZmVuY2VfcHV0KGZl bmNlKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHZnZW1fZmVuY2Vfb3BlbihzdHJ1Y3QgdmdlbV9m aWxlICp2ZmlsZSkKK3sKKwltdXRleF9pbml0KCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCWlkcl9p bml0KCZ2ZmlsZS0+ZmVuY2VfaWRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9f dmdlbV9mZW5jZV9pZHJfZmluaShpbnQgaWQsIHZvaWQgKnAsIHZvaWQgKmRhdGEpCit7CisJZmVu Y2Vfc2lnbmFsKHApOworCWZlbmNlX3B1dChwKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCB2Z2Vt X2ZlbmNlX2Nsb3NlKHN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlKQoreworCWlkcl9mb3JfZWFjaCgm dmZpbGUtPmZlbmNlX2lkciwgX192Z2VtX2ZlbmNlX2lkcl9maW5pLCB2ZmlsZSk7CisJaWRyX2Rl c3Ryb3koJnZmaWxlLT5mZW5jZV9pZHIpOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2Ry bS92Z2VtX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS92Z2VtX2RybS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzUyZDJmYWU4ZGU5Ci0tLSAvZGV2L251bGwKKysr IGIvaW5jbHVkZS91YXBpL2RybS92Z2VtX2RybS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD b3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICogd2l0aG91 dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgKiB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0 aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKyAqIE9SIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJ TElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1F TlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUVU5HU1RFTiBHUkFQSElDUyBBTkQvT1IgSVRTIFNV UFBMSUVSUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisg KiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKi8KKworI2lmbmRlZiBfVUFQSV9WR0VNX0RSTV9IXworI2RlZmluZSBfVUFQSV9WR0VN X0RSTV9IXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogUGxlYXNlIG5vdGUgdGhhdCBtb2RpZmljYXRpb25z IHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUKKyAqIHN1YmplY3QgdG8gYmFja3dhcmRz LWNvbXBhdGliaWxpdHkgY29uc3RyYWludHMuCisgKi8KKyNkZWZpbmUgRFJNX1ZHRU1fRkVOQ0Vf QVRUQUNICTB4MQorI2RlZmluZSBEUk1fVkdFTV9GRU5DRV9TSUdOQUwJMHgyCisKKyNkZWZpbmUg RFJNX0lPQ1RMX1ZHRU1fRkVOQ0VfQVRUQUNICURSTV9JT1dSKCBEUk1fQ09NTUFORF9CQVNFICsg RFJNX1ZHRU1fRkVOQ0VfQVRUQUNILCBzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2VfYXR0YWNoKQorI2Rl ZmluZSBEUk1fSU9DVExfVkdFTV9GRU5DRV9TSUdOQUwJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFT RSArIERSTV9WR0VNX0ZFTkNFX1NJR05BTCwgc3RydWN0IGRybV92Z2VtX2ZlbmNlX3NpZ25hbCkK Kworc3RydWN0IGRybV92Z2VtX2ZlbmNlX2F0dGFjaCB7CisJX191MzIgaGFuZGxlOworCV9fdTMy IGZsYWdzOworI2RlZmluZSBWR0VNX0ZFTkNFX1dSSVRFIDB4MQorCV9fdTMyIG91dF9mZW5jZTsK KwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2Vfc2lnbmFsIHsKKwlfX3Uz MiBmZW5jZTsKKwlfX3UzMiBmbGFnczsKK307CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor fQorI2VuZGlmCisKKyNlbmRpZiAvKiBfVUFQSV9WR0VNX0RSTV9IXyAqLwotLSAKMi44LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=