From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) Date: Tue, 12 Jul 2016 13:46:21 +0100 Message-ID: <1468327581-9579-1-git-send-email-chris@chris-wilson.co.uk> 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, Zach Reizner , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org dkdFTSBidWZmZXJzIGFyZSB1c2VmdWwgZm9yIHBhc3NpbmcgZGF0YSBiZXR3ZWVuIHNvZnR3YXJl IGNsaWVudHMgYW5kCmhhcmR3YXJlIHJlbmRlcnMuIEJ5IGFsbG93aW5nIHRoZSB1c2VyIHRvIGNy ZWF0ZSBhbmQgYXR0YWNoIGZlbmNlcyB0bwp0aGUgZXhwb3J0ZWQgdkdFTSBidWZmZXJzIChvbiB0 aGUgZG1hLWJ1ZiksIHRoZSB1c2VyIGNhbiBpbXBsZW1lbnQgYQpkZWZlcnJlZCByZW5kZXJlciBh bmQgcXVldWUgaGFyZHdhcmUgb3BlcmF0aW9ucyBsaWtlIGZsaXBwaW5nIGFuZCB0aGVuCnNpZ25h bCB0aGUgYnVmZmVyIHJlYWRpbmVzcyAoaS5lLiB0aGlzIGFsbG93cyB0aGUgdXNlciB0byBzY2hl ZHVsZQpvcGVyYXRpb25zIG91dC1vZi1vcmRlciwgYnV0IGhhdmUgdGhlbSBjb21wbGV0ZSBpbi1v cmRlcikuCgpUaGlzIGFsc28gbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd3JpdGUgdGlnaHRseSBj b250cm9sbGVkIHRlc3RjYXNlcyBmb3IKZG1hLWJ1ZiBmZW5jaW5nIGFuZCBzaWduYWxpbmcgYmV0 d2VlbiBoYXJkd2FyZSBkcml2ZXJzLgoKdjI6IERvbid0IHByZXRlbmQgdGhlIGZlbmNlcyBleGlz dCBpbiBhbiBvcmRlcmVkIHRpbWVsaW5lLCBidXQgYWxsb2NhdGUKYSBzZXBhcmF0ZSBmZW5jZS1j b250ZXh0IGZvciBlYWNoIGZlbmNlIHNvIHRoYXQgdGhlIGZlbmNlcyBhcmUKdW5vcmRlcmVkLgoK VGVzdGNhc2U6IGlndC92Z2VtX2Jhc2ljL2RtYWJ1Zi1mZW5jZQpTaWduZWQtb2ZmLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFNlYW4gUGF1bCA8c2VhbnBh dWxAY2hyb21pdW0ub3JnPgpDYzogWmFjaCBSZWl6bmVyIDx6YWNockBnb29nbGUuY29tPgpDYzog R3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgpDYzogRGFu aWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQWNrZWQtYnk6IFphY2ggUmVpem5l ciA8emFjaHJAZ29vZ2xlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZSAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMgICB8ICAzNCArKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oICAgfCAgMTYgKysrCiBkcml2ZXJz L2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMgfCAyMDcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vdmdlbV9kcm0uaCAgICAgICB8ICA2MiAr KysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNl LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvZHJtL3ZnZW1fZHJtLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92 Z2VtL01ha2VmaWxlCmluZGV4IDNmNGM3Yjg0MjAyOC4uYmZjZGVhMTMzMGU2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmdlbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdl bS9NYWtlZmlsZQpAQCAtMSw0ICsxLDQgQEAKIGNjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCi12 Z2VtLXkgOj0gdmdlbV9kcnYubwordmdlbS15IDo9IHZnZW1fZHJ2Lm8gdmdlbV9mZW5jZS5vCiAK IG9iai0kKENPTkZJR19EUk1fVkdFTSkJKz0gdmdlbS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdmdlbS92Z2VtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwpp bmRleCAyOWMyYWFiM2MxYTcuLmMxNWJhZmIwNjY2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZnZW0vdmdlbV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5j CkBAIC04Myw2ICs4MywzNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3Ry dWN0IHZnZW1fZ2VtX3ZtX29wcyA9IHsKIAkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Nsb3NlLAogfTsK IAorc3RhdGljIGludCB2Z2VtX29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9maWxlICpmaWxlKQoreworCXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlOworCWludCByZXQ7CisK Kwl2ZmlsZSA9IGt6YWxsb2Moc2l6ZW9mKCp2ZmlsZSksIEdGUF9LRVJORUwpOworCWlmICghdmZp bGUpCisJCXJldHVybiAtRU5PTUVNOworCisJZmlsZS0+ZHJpdmVyX3ByaXYgPSB2ZmlsZTsKKwor CXJldCA9IHZnZW1fZmVuY2Vfb3Blbih2ZmlsZSk7CisJaWYgKHJldCkgeworCQlrZnJlZSh2Zmls ZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHZn ZW1fcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxl KQoreworCXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisKKwl2 Z2VtX2ZlbmNlX2Nsb3NlKHZmaWxlKTsKKwlrZnJlZSh2ZmlsZSk7Cit9CisKIC8qIGlvY3RscyAq LwogCiBzdGF0aWMgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2Z2VtX2dlbV9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKQEAgLTE2NCw2ICsxOTIsOCBAQCB1bnJlZjoKIH0KIAogc3RhdGlj IHN0cnVjdCBkcm1faW9jdGxfZGVzYyB2Z2VtX2lvY3Rsc1tdID0geworCURSTV9JT0NUTF9ERUZf RFJWKFZHRU1fRkVOQ0VfQVRUQUNILCB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bCwgRFJNX0FVVEh8 RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9EUlYoVkdFTV9GRU5DRV9TSUdOQUws IHZnZW1fZmVuY2Vfc2lnbmFsX2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKIH07 CiAKIHN0YXRpYyBpbnQgdmdlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSkKQEAgLTI3MSw5ICszMDEsMTIgQEAgc3RhdGljIGludCB2Z2VtX3ByaW1l X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2Ry aXZlciB2Z2VtX2RyaXZlciA9IHsKIAkuZHJpdmVyX2ZlYXR1cmVzCQk9IERSSVZFUl9HRU0gfCBE UklWRVJfUFJJTUUsCisJLm9wZW4JCQkJPSB2Z2VtX29wZW4sCisJLnByZWNsb3NlCQkJPSB2Z2Vt X3ByZWNsb3NlLAogCS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQJPSB2Z2VtX2dlbV9mcmVlX29i amVjdCwKIAkuZ2VtX3ZtX29wcwkJCT0gJnZnZW1fZ2VtX3ZtX29wcywKIAkuaW9jdGxzCQkJCT0g dmdlbV9pb2N0bHMsCisJLm51bV9pb2N0bHMgCQkJPSBBUlJBWV9TSVpFKHZnZW1faW9jdGxzKSwK IAkuZm9wcwkJCQk9ICZ2Z2VtX2RyaXZlcl9mb3BzLAogCiAJLmR1bWJfY3JlYXRlCQkJPSB2Z2Vt X2dlbV9kdW1iX2NyZWF0ZSwKQEAgLTMyOCw1ICszNjEsNiBAQCBtb2R1bGVfaW5pdCh2Z2VtX2lu aXQpOwogbW9kdWxlX2V4aXQodmdlbV9leGl0KTsKIAogTU9EVUxFX0FVVEhPUigiUmVkIEhhdCwg SW5jLiIpOworTU9EVUxFX0FVVEhPUigiSW50ZWwgQ29ycG9yYXRpb24iKTsKIE1PRFVMRV9ERVND UklQVElPTihEUklWRVJfREVTQyk7CiBNT0RVTEVfTElDRU5TRSgiR1BMIGFuZCBhZGRpdGlvbmFs IHJpZ2h0cyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmgKaW5kZXggOTg4Y2JhYWU3NTg4Li4xZjg3 OThhZDMyOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaApAQCAtMzIsOSArMzIsMjUgQEAKICNp bmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+CiAKKyNpbmNsdWRl IDx1YXBpL2RybS92Z2VtX2RybS5oPgorCitzdHJ1Y3QgdmdlbV9maWxlIHsKKwlzdHJ1Y3QgaWRy IGZlbmNlX2lkcjsKKwlzdHJ1Y3QgbXV0ZXggZmVuY2VfbXV0ZXg7Cit9OworCiAjZGVmaW5lIHRv X3ZnZW1fYm8oeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0LCBi YXNlKQogc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgewogCXN0cnVjdCBkcm1fZ2VtX29iamVj dCBiYXNlOwogfTsKIAoraW50IHZnZW1fZmVuY2Vfb3BlbihzdHJ1Y3QgdmdlbV9maWxlICpmaWxl KTsKK2ludCB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQkJICAgIHZvaWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKK2ludCB2 Z2VtX2ZlbmNlX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICAgIHZv aWQgKmRhdGEsCisJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKK3ZvaWQgdmdlbV9mZW5j ZV9jbG9zZShzdHJ1Y3QgdmdlbV9maWxlICpmaWxlKTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92 Z2VtX2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MzA5 NTMzMWM0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Zl bmNlLmMKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpCisgKiB0 byBkZWFsIGluIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiBvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViCisgKiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQorICog dGhlbSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U SUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTLCBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKKyAqIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCwgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s IE9VVCBPRiBPUiBJTgorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8bGlu dXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CisKKyNpbmNsdWRl ICJ2Z2VtX2Rydi5oIgorCitzdHJ1Y3QgdmdlbV9mZW5jZSB7CisJc3RydWN0IGZlbmNlIGJhc2U7 CisJc3RydWN0IHNwaW5sb2NrIGxvY2s7Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqdmdlbV9m ZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwlyZXR1cm4gInZn ZW0iOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdmdlbV9mZW5jZV9nZXRfdGltZWxpbmVfbmFt ZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQoreworCXJldHVybiAidW5ib3VuZCI7Cit9CisKK3N0YXRp YyBib29sIHZnZW1fZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwlyZXR1 cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHZnZW1fZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhz dHJ1Y3QgZmVuY2UgKmZlbmNlKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCB2 Z2VtX2ZlbmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpzdHIsIGludCBz aXplKQoreworCXNucHJpbnRmKHN0ciwgc2l6ZSwgIiV1IiwgMCk7Cit9CisKK3N0YXRpYyB2b2lk IHZnZW1fZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqZmVuY2UsIGNoYXIg KnN0ciwKKwkJCQkJICBpbnQgc2l6ZSkKK3sKKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIDAp OworfQorCitjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIHZnZW1fZmVuY2Vfb3BzID0geworCS5nZXRf ZHJpdmVyX25hbWUgPSB2Z2VtX2ZlbmNlX2dldF9kcml2ZXJfbmFtZSwKKwkuZ2V0X3RpbWVsaW5l X25hbWUgPSB2Z2VtX2ZlbmNlX2dldF90aW1lbGluZV9uYW1lLAorCS5lbmFibGVfc2lnbmFsaW5n ID0gdmdlbV9mZW5jZV9lbmFibGVfc2lnbmFsaW5nLAorCS5zaWduYWxlZCA9IHZnZW1fZmVuY2Vf c2lnbmFsZWQsCisJLndhaXQgPSBmZW5jZV9kZWZhdWx0X3dhaXQsCisJLmZlbmNlX3ZhbHVlX3N0 ciA9IHZnZW1fZmVuY2VfdmFsdWVfc3RyLAorCS50aW1lbGluZV92YWx1ZV9zdHIgPSB2Z2VtX2Zl bmNlX3RpbWVsaW5lX3ZhbHVlX3N0ciwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmVuY2UgKnZnZW1f ZmVuY2VfY3JlYXRlKHN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlKQoreworCXN0cnVjdCB2Z2VtX2Zl bmNlICpmZW5jZTsKKworCWZlbmNlID0ga3phbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFmZW5jZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlzcGluX2xvY2tfaW5pdCgmZmVu Y2UtPmxvY2spOworCWZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLCAmdmdlbV9mZW5jZV9vcHMsICZm ZW5jZS0+bG9jaywKKwkJICAgZmVuY2VfY29udGV4dF9hbGxvYygxKSwgMCk7CisKKwlyZXR1cm4g JmZlbmNlLT5iYXNlOworfQorCitzdGF0aWMgaW50IGF0dGFjaF9kbWFidWYoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmOworCisJaWYgKG9iai0+ZG1hX2J1ZikKKwkJcmV0dXJuIDA7CisKKwlk bWFidWYgPSBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX2V4cG9ydChkZXYsIG9iaiwgMCk7CisJaWYg KElTX0VSUihkbWFidWYpKQorCQlyZXR1cm4gUFRSX0VSUihkbWFidWYpOworCisJb2JqLT5kbWFf YnVmID0gZG1hYnVmOworCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShvYmopOworCXJldHVybiAw OworfQorCitpbnQgdmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJCSAgICB2b2lkICpkYXRhLAorCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sK KwlzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2VfYXR0YWNoICphcmcgPSBkYXRhOworCXN0cnVjdCB2Z2Vt X2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCAqcmVzdjsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgZmVuY2Ug KmZlbmNlOworCWludCByZXQ7CisKKwlpZiAoYXJnLT5mbGFncyAmIH5WR0VNX0ZFTkNFX1dSSVRF KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChhcmctPnBhZCkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJnLT5oYW5kbGUpOworCWlm ICghb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXJldCA9IGF0dGFjaF9kbWFidWYoZGV2LCBv YmopOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJZmVuY2UgPSB2Z2VtX2ZlbmNlX2NyZWF0 ZSh2ZmlsZSk7CisJaWYgKCFmZW5jZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsK Kwl9CisKKwlyZXQgPSAwOworCXJlc3YgPSBvYmotPmRtYV9idWYtPnJlc3Y7CisJbXV0ZXhfbG9j aygmcmVzdi0+bG9jay5iYXNlKTsKKwlpZiAoYXJnLT5mbGFncyAmIFZHRU1fRkVOQ0VfV1JJVEUp CisJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShyZXN2LCBmZW5jZSk7CisJZWxz ZSBpZiAoKHJldCA9IHJlc2VydmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZChyZXN2KSkgPT0g MCkKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UocmVzdiwgZmVuY2UpOwor CW11dGV4X3VubG9jaygmcmVzdi0+bG9jay5iYXNlKTsKKworCWlmIChyZXQgPT0gMCkgeworCQlt dXRleF9sb2NrKCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCQlyZXQgPSBpZHJfYWxsb2MoJnZmaWxl LT5mZW5jZV9pZHIsIGZlbmNlLCAxLCAwLCBHRlBfS0VSTkVMKTsKKwkJbXV0ZXhfdW5sb2NrKCZ2 ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCQlpZiAocmV0ID4gMCkgeworCQkJYXJnLT5vdXRfZmVuY2Ug PSByZXQ7CisJCQlyZXQgPSAwOworCQl9CisJfQorCWlmIChyZXQpIHsKKwkJZmVuY2Vfc2lnbmFs KGZlbmNlKTsKKwkJZmVuY2VfcHV0KGZlbmNlKTsKKwl9CitvdXQ6CisJZHJtX2dlbV9vYmplY3Rf dW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgdmdlbV9m ZW5jZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICB2b2lkICpk YXRhLAorCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgdmdlbV9maWxl ICp2ZmlsZSA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1fdmdlbV9mZW5jZV9zaWdu YWwgKmFyZyA9IGRhdGE7CisJc3RydWN0IGZlbmNlICpmZW5jZTsKKworCWlmIChhcmctPmZsYWdz KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJnZmaWxlLT5mZW5jZV9tdXRleCk7 CisJZmVuY2UgPSBpZHJfcmVwbGFjZSgmdmZpbGUtPmZlbmNlX2lkciwgTlVMTCwgYXJnLT5mZW5j ZSk7CisJbXV0ZXhfdW5sb2NrKCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCWlmICghZmVuY2UpCisJ CXJldHVybiAtRU5PRU5UOworCWlmIChJU19FUlIoZmVuY2UpKQorCQlyZXR1cm4gUFRSX0VSUihm ZW5jZSk7CisKKwlmZW5jZV9zaWduYWwoZmVuY2UpOworCWZlbmNlX3B1dChmZW5jZSk7CisJcmV0 dXJuIDA7Cit9CisKK2ludCB2Z2VtX2ZlbmNlX29wZW4oc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUp Cit7CisJbXV0ZXhfaW5pdCgmdmZpbGUtPmZlbmNlX211dGV4KTsKKwlpZHJfaW5pdCgmdmZpbGUt PmZlbmNlX2lkcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX3ZnZW1fZmVuY2Vf aWRyX2ZpbmkoaW50IGlkLCB2b2lkICpwLCB2b2lkICpkYXRhKQoreworCWZlbmNlX3NpZ25hbChw KTsKKwlmZW5jZV9wdXQocCk7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgdmdlbV9mZW5jZV9jbG9z ZShzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZSkKK3sKKwlpZHJfZm9yX2VhY2goJnZmaWxlLT5mZW5j ZV9pZHIsIF9fdmdlbV9mZW5jZV9pZHJfZmluaSwgdmZpbGUpOworCWlkcl9kZXN0cm95KCZ2Zmls ZS0+ZmVuY2VfaWRyKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vdmdlbV9kcm0u aCBiL2luY2x1ZGUvdWFwaS9kcm0vdmdlbV9kcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjM1MmQyZmFlOGRlOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv dWFwaS9kcm0vdmdlbV9kcm0uaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IDIw MTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUKKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAqIHdpdGhvdXQgbGltaXRhdGlv biB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyAqIGRp c3RyaWJ1dGUsIHN1YiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCisgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULgorICogSU4g Tk8gRVZFTlQgU0hBTEwgVFVOR1NURU4gR1JBUEhJQ1MgQU5EL09SIElUUyBTVVBQTElFUlMgQkUg TElBQkxFIEZPUgorICogQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQorICogU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisK KyNpZm5kZWYgX1VBUElfVkdFTV9EUk1fSF8KKyNkZWZpbmUgX1VBUElfVkdFTV9EUk1fSF8KKwor I2luY2x1ZGUgImRybS5oIgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIg eworI2VuZGlmCisKKy8qIFBsZWFzZSBub3RlIHRoYXQgbW9kaWZpY2F0aW9ucyB0byBhbGwgc3Ry dWN0cyBkZWZpbmVkIGhlcmUgYXJlCisgKiBzdWJqZWN0IHRvIGJhY2t3YXJkcy1jb21wYXRpYmls aXR5IGNvbnN0cmFpbnRzLgorICovCisjZGVmaW5lIERSTV9WR0VNX0ZFTkNFX0FUVEFDSAkweDEK KyNkZWZpbmUgRFJNX1ZHRU1fRkVOQ0VfU0lHTkFMCTB4MgorCisjZGVmaW5lIERSTV9JT0NUTF9W R0VNX0ZFTkNFX0FUVEFDSAlEUk1fSU9XUiggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WR0VNX0ZF TkNFX0FUVEFDSCwgc3RydWN0IGRybV92Z2VtX2ZlbmNlX2F0dGFjaCkKKyNkZWZpbmUgRFJNX0lP Q1RMX1ZHRU1fRkVOQ0VfU0lHTkFMCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fVkdF TV9GRU5DRV9TSUdOQUwsIHN0cnVjdCBkcm1fdmdlbV9mZW5jZV9zaWduYWwpCisKK3N0cnVjdCBk cm1fdmdlbV9mZW5jZV9hdHRhY2ggeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBmbGFnczsKKyNk ZWZpbmUgVkdFTV9GRU5DRV9XUklURSAweDEKKwlfX3UzMiBvdXRfZmVuY2U7CisJX191MzIgcGFk OworfTsKKworc3RydWN0IGRybV92Z2VtX2ZlbmNlX3NpZ25hbCB7CisJX191MzIgZmVuY2U7CisJ X191MzIgZmxhZ3M7Cit9OworCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgor CisjZW5kaWYgLyogX1VBUElfVkdFTV9EUk1fSF8gKi8KLS0gCjIuOC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK