From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v4] drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) Date: Fri, 15 Jul 2016 09:31:11 +0100 Message-ID: <1468571471-12610-1-git-send-email-chris@chris-wilson.co.uk> References: <1468479859-16767-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: In-Reply-To: <1468479859-16767-1-git-send-email-chris@chris-wilson.co.uk> 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 MzogTWFrZSB0aGUgZGVidWcgb3V0cHV0IG1vcmUgaW50ZXJlc3RpbmcsIGFuZCBzaG93IHRoZSBz aWduYWxlZCBzdGF0dXMuCnY0OiBBdXRvbWF0aWNhbGx5IHNpZ25hbCB0aGUgZmVuY2UgdG8gcHJl dmVudCB1c2Vyc3BhY2UgZnJvbQppbmRlZmluaXRlbHkgaGFuZ2luZyBkcml2ZXJzLgoKVGVzdGNh c2U6IGlndC92Z2VtX2Jhc2ljL2RtYWJ1Zi1mZW5jZQpUZXN0Y2FzZTogaWd0L3ZnZW1fc2xvdy9u b2hhbmcKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+CkNjOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KQ2M6IFphY2ggUmVpem5l ciA8emFjaHJAZ29vZ2xlLmNvbT4KQ2M6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFu QGNvbGxhYm9yYS5jby51az4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwu Y2g+CkFja2VkLWJ5OiBaYWNoIFJlaXpuZXIgPHphY2hyQGdvb2dsZS5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL3ZnZW0vTWFrZWZpbGUgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vdmdl bS92Z2VtX2Rydi5jICAgfCAgMzQgKysrKysKIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2 LmggICB8ICAxNiArKysKIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyB8IDI4MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2RybS92 Z2VtX2RybS5oICAgICAgIHwgIDYyICsrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzOTYgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9k cm0vdmdlbV9kcm0uaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vTWFrZWZpbGUKaW5kZXggM2Y0YzdiODQyMDI4Li5iZmNk ZWExMzMwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlCkBAIC0xLDQgKzEsNCBAQAogY2NmbGFncy15 IDo9IC1JaW5jbHVkZS9kcm0KLXZnZW0teSA6PSB2Z2VtX2Rydi5vCit2Z2VtLXkgOj0gdmdlbV9k cnYubyB2Z2VtX2ZlbmNlLm8KIAogb2JqLSQoQ09ORklHX0RSTV9WR0VNKQkrPSB2Z2VtLm8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9k cm0vdmdlbS92Z2VtX2Rydi5jCmluZGV4IDI5YzJhYWIzYzFhNy4uYzE1YmFmYjA2NjY1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92Z2VtL3ZnZW1fZHJ2LmMKQEAgLTgzLDYgKzgzLDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgdmdlbV9nZW1fdm1fb3BzID0gewogCS5jbG9zZSA9IGRy bV9nZW1fdm1fY2xvc2UsCiB9OwogCitzdGF0aWMgaW50IHZnZW1fb3BlbihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IHZnZW1fZmlsZSAq dmZpbGU7CisJaW50IHJldDsKKworCXZmaWxlID0ga3phbGxvYyhzaXplb2YoKnZmaWxlKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCF2ZmlsZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmaWxlLT5kcml2 ZXJfcHJpdiA9IHZmaWxlOworCisJcmV0ID0gdmdlbV9mZW5jZV9vcGVuKHZmaWxlKTsKKwlpZiAo cmV0KSB7CisJCWtmcmVlKHZmaWxlKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgdmdlbV9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUgPSBmaWxl LT5kcml2ZXJfcHJpdjsKKworCXZnZW1fZmVuY2VfY2xvc2UodmZpbGUpOworCWtmcmVlKHZmaWxl KTsKK30KKwogLyogaW9jdGxzICovCiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnZn ZW1fZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtMTY0LDYgKzE5Miw4IEBA IHVucmVmOgogfQogCiBzdGF0aWMgc3RydWN0IGRybV9pb2N0bF9kZXNjIHZnZW1faW9jdGxzW10g PSB7CisJRFJNX0lPQ1RMX0RFRl9EUlYoVkdFTV9GRU5DRV9BVFRBQ0gsIHZnZW1fZmVuY2VfYXR0 YWNoX2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RS VihWR0VNX0ZFTkNFX1NJR05BTCwgdmdlbV9mZW5jZV9zaWduYWxfaW9jdGwsIERSTV9BVVRIfERS TV9SRU5ERVJfQUxMT1cpLAogfTsKIAogc3RhdGljIGludCB2Z2VtX21tYXAoc3RydWN0IGZpbGUg KmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQpAQCAtMjcxLDkgKzMwMSwxMiBAQCBz dGF0aWMgaW50IHZnZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAog c3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZnZW1fZHJpdmVyID0gewogCS5kcml2ZXJfZmVhdHVy ZXMJCT0gRFJJVkVSX0dFTSB8IERSSVZFUl9QUklNRSwKKwkub3BlbgkJCQk9IHZnZW1fb3BlbiwK KwkucHJlY2xvc2UJCQk9IHZnZW1fcHJlY2xvc2UsCiAJLmdlbV9mcmVlX29iamVjdF91bmxvY2tl ZAk9IHZnZW1fZ2VtX2ZyZWVfb2JqZWN0LAogCS5nZW1fdm1fb3BzCQkJPSAmdmdlbV9nZW1fdm1f b3BzLAogCS5pb2N0bHMJCQkJPSB2Z2VtX2lvY3RscywKKwkubnVtX2lvY3RscyAJCQk9IEFSUkFZ X1NJWkUodmdlbV9pb2N0bHMpLAogCS5mb3BzCQkJCT0gJnZnZW1fZHJpdmVyX2ZvcHMsCiAKIAku ZHVtYl9jcmVhdGUJCQk9IHZnZW1fZ2VtX2R1bWJfY3JlYXRlLApAQCAtMzI4LDUgKzM2MSw2IEBA IG1vZHVsZV9pbml0KHZnZW1faW5pdCk7CiBtb2R1bGVfZXhpdCh2Z2VtX2V4aXQpOwogCiBNT0RV TEVfQVVUSE9SKCJSZWQgSGF0LCBJbmMuIik7CitNT0RVTEVfQVVUSE9SKCJJbnRlbCBDb3Jwb3Jh dGlvbiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKIE1PRFVMRV9MSUNFTlNF KCJHUEwgYW5kIGFkZGl0aW9uYWwgcmlnaHRzIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmdlbS92Z2VtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaAppbmRl eCA5ODhjYmFhZTc1ODguLjFmODc5OGFkMzI5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3ZnZW0vdmdlbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oCkBA IC0zMiw5ICszMiwyNSBAQAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9nZW0uaD4KIAorI2luY2x1ZGUgPHVhcGkvZHJtL3ZnZW1fZHJtLmg+CisKK3N0cnVjdCB2Z2Vt X2ZpbGUgeworCXN0cnVjdCBpZHIgZmVuY2VfaWRyOworCXN0cnVjdCBtdXRleCBmZW5jZV9tdXRl eDsKK307CisKICNkZWZpbmUgdG9fdmdlbV9ibyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRy bV92Z2VtX2dlbV9vYmplY3QsIGJhc2UpCiBzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCB7CiAJ c3RydWN0IGRybV9nZW1fb2JqZWN0IGJhc2U7CiB9OwogCitpbnQgdmdlbV9mZW5jZV9vcGVuKHN0 cnVjdCB2Z2VtX2ZpbGUgKmZpbGUpOworaW50IHZnZW1fZmVuY2VfYXR0YWNoX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCisJCQkgICAgdm9pZCAqZGF0YSwKKwkJCSAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpOworaW50IHZnZW1fZmVuY2Vfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkgICAgdm9pZCAqZGF0YSwKKwkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwordm9pZCB2Z2VtX2ZlbmNlX2Nsb3NlKHN0cnVjdCB2Z2VtX2ZpbGUgKmZpbGUpOworCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyBiL2Ry aXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmU3N2I1MjIwODY5OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwpAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHly aWdodCAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIikKKyAqIHRvIGRlYWwgaW4gdGhlIHNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIG9uIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIKKyAqIGxp Y2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tCisgKiB0aGVtIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRJQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMsIE9SIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUgorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JULCBPUiBPVEhF UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCisgKiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICovCisKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2 YXRpb24uaD4KKworI2luY2x1ZGUgInZnZW1fZHJ2LmgiCisKKyNkZWZpbmUgVkdFTV9GRU5DRV9U SU1FT1VUICgxMCpIWikKKworc3RydWN0IHZnZW1fZmVuY2UgeworCXN0cnVjdCBmZW5jZSBiYXNl OworCXN0cnVjdCBzcGlubG9jayBsb2NrOworCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOworfTsK Kworc3RhdGljIGNvbnN0IGNoYXIgKnZnZW1fZmVuY2VfZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBm ZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuICJ2Z2VtIjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIg KnZnZW1fZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwly ZXR1cm4gInVuYm91bmQiOworfQorCitzdGF0aWMgYm9vbCB2Z2VtX2ZlbmNlX3NpZ25hbGVkKHN0 cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCB2 Z2VtX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwlyZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgdmdlbV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBmZW5j ZSAqYmFzZSkKK3sKKwlzdHJ1Y3QgdmdlbV9mZW5jZSAqZmVuY2UgPSBjb250YWluZXJfb2YoYmFz ZSwgdHlwZW9mKCpmZW5jZSksIGJhc2UpOworCisJZGVsX3RpbWVyX3N5bmMoJmZlbmNlLT50aW1l cik7CisJZmVuY2VfZnJlZSgmZmVuY2UtPmJhc2UpOworfQorCitzdGF0aWMgdm9pZCB2Z2VtX2Zl bmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpzdHIsIGludCBzaXplKQor eworCXNucHJpbnRmKHN0ciwgc2l6ZSwgIiV1IiwgZmVuY2UtPnNlcW5vKTsKK30KKworc3RhdGlj IHZvaWQgdmdlbV9mZW5jZV90aW1lbGluZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwg Y2hhciAqc3RyLAorCQkJCQkgIGludCBzaXplKQoreworCXNucHJpbnRmKHN0ciwgc2l6ZSwgIiV1 IiwgZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpID8gZmVuY2UtPnNlcW5vIDogMCk7Cit9CisKK2Nv bnN0IHN0cnVjdCBmZW5jZV9vcHMgdmdlbV9mZW5jZV9vcHMgPSB7CisJLmdldF9kcml2ZXJfbmFt ZSA9IHZnZW1fZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAorCS5nZXRfdGltZWxpbmVfbmFtZSA9IHZn ZW1fZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCisJLmVuYWJsZV9zaWduYWxpbmcgPSB2Z2VtX2Zl bmNlX2VuYWJsZV9zaWduYWxpbmcsCisJLnNpZ25hbGVkID0gdmdlbV9mZW5jZV9zaWduYWxlZCwK Kwkud2FpdCA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKKwkucmVsZWFzZSA9IHZnZW1fZmVuY2VfcmVs ZWFzZSwKKworCS5mZW5jZV92YWx1ZV9zdHIgPSB2Z2VtX2ZlbmNlX3ZhbHVlX3N0ciwKKwkudGlt ZWxpbmVfdmFsdWVfc3RyID0gdmdlbV9mZW5jZV90aW1lbGluZV92YWx1ZV9zdHIsCit9OworCitz dGF0aWMgdm9pZCB2Z2VtX2ZlbmNlX3RpbWVvdXQodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0 cnVjdCB2Z2VtX2ZlbmNlICpmZW5jZSA9IChzdHJ1Y3QgdmdlbV9mZW5jZSAqKWRhdGE7CisKKwlm ZW5jZV9zaWduYWwoJmZlbmNlLT5iYXNlKTsKK30KKworc3RhdGljIHN0cnVjdCBmZW5jZSAqdmdl bV9mZW5jZV9jcmVhdGUoc3RydWN0IHZnZW1fZmlsZSAqdmZpbGUsCisJCQkJICAgICAgIHVuc2ln bmVkIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgdmdlbV9mZW5jZSAqZmVuY2U7CisKKwlmZW5jZSA9 IGt6YWxsb2Moc2l6ZW9mKCpmZW5jZSksIEdGUF9LRVJORUwpOworCWlmICghZmVuY2UpCisJCXJl dHVybiBOVUxMOworCisJc3Bpbl9sb2NrX2luaXQoJmZlbmNlLT5sb2NrKTsKKwlmZW5jZV9pbml0 KCZmZW5jZS0+YmFzZSwgJnZnZW1fZmVuY2Vfb3BzLCAmZmVuY2UtPmxvY2ssCisJCSAgIGZlbmNl X2NvbnRleHRfYWxsb2MoMSksIDEpOworCisJc2V0dXBfdGltZXIoJmZlbmNlLT50aW1lciwgdmdl bV9mZW5jZV90aW1lb3V0LCAodW5zaWduZWQgbG9uZylmZW5jZSk7CisKKwkvKiBXZSBmb3JjZSB0 aGUgZmVuY2UgdG8gZXhwaXJlIHdpdGhpbiAxMHMgdG8gcHJldmVudCBkcml2ZXIgaGFuZ3MgKi8K Kwltb2RfdGltZXIoJmZlbmNlLT50aW1lciwgVkdFTV9GRU5DRV9USU1FT1VUKTsKKworCXJldHVy biAmZmVuY2UtPmJhc2U7Cit9CisKK3N0YXRpYyBpbnQgYXR0YWNoX2RtYWJ1ZihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAorCQkJIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVj dCBkbWFfYnVmICpkbWFidWY7CisKKwlpZiAob2JqLT5kbWFfYnVmKQorCQlyZXR1cm4gMDsKKwor CWRtYWJ1ZiA9IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfZXhwb3J0KGRldiwgb2JqLCAwKTsKKwlp ZiAoSVNfRVJSKGRtYWJ1ZikpCisJCXJldHVybiBQVFJfRVJSKGRtYWJ1Zik7CisKKwlvYmotPmRt YV9idWYgPSBkbWFidWY7CisJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7CisJcmV0dXJu IDA7Cit9CisKKy8qCisgKiB2Z2VtX2ZlbmNlX2F0dGFjaF9pb2N0bCAoRFJNX0lPQ1RMX1ZHRU1f RkVOQ0VfQVRUQUNIKToKKyAqCisgKiBDcmVhdGUgYW5kIGF0dGFjaCBhIGZlbmNlIHRvIHRoZSB2 R0VNIGhhbmRsZS4gVGhpcyBmZW5jZSBpcyB0aGVuIGV4cG9zZWQKKyAqIHZpYSB0aGUgZG1hLWJ1 ZiByZXNlcnZhdGlvbiBvYmplY3QgYW5kIHZpc2libGUgdG8gY29uc3VtZXJzIG9mIHRoZSBleHBv cnRlZAorICogZG1hLWJ1Zi4gSWYgdGhlIGZsYWdzIGNvbnRhaW4gVkdFTV9GRU5DRV9XUklURSwg dGhlIGZlbmNlIGluZGljYXRlcyB0aGUKKyAqIHZHRU0gYnVmZmVyIGlzIGJlaW5nIHdyaXR0ZW4g dG8gYnkgdGhlIGNsaWVudCBhbmQgaXMgZXhwb3NlZCBhcyBhbiBleGNsdXNpdmUKKyAqIGZlbmNl LCBvdGhlcndpc2UgdGhlIGZlbmNlIGluZGljYXRlcyB0aGUgY2xpZW50IGlzIGN1cnJlbnQgcmVh ZGluZyBmcm9tIHRoZQorICogYnVmZmVyIGFuZCBhbGwgZnV0dXJlIHdyaXRlcyBzaG91bGQgd2Fp dCBmb3IgdGhlIGNsaWVudCB0byBzaWduYWwgaXRzCisgKiBjb21wbGV0aW9uLiBOb3RlIHRoYXQg aWYgYSBjb25mbGljdGluZyBmZW5jZSBpcyBhbHJlYWR5IG9uIHRoZSBkbWEtYnVmIChpLmUuCisg KiBhbiBleGNsdXNpdmUgZmVuY2Ugd2hlbiBhZGRpbmcgYSByZWFkLCBvciBhbnkgZmVuY2Ugd2hl biBhZGRpbmcgYSB3cml0ZSksCisgKiAtRUJVU1kgaXMgcmVwb3J0ZWQuIFNlcmlhbGlzYXRpb24g YmV0d2VlbiBvcGVyYXRpb25zIHNob3VsZCBiZSBoYW5kbGVkCisgKiBieSB3YWl0aW5nIHVwb24g dGhlIGRtYS1idWYuCisgKgorICogVGhpcyByZXR1cm5zIHRoZSBoYW5kbGUgZm9yIHRoZSBuZXcg ZmVuY2UgdGhhdCBtdXN0IGJlIHNpZ25hbGVkIHdpdGhpbiAxMAorICogc2Vjb25kcyAob3Igb3Ro ZXJ3aXNlIGl0IHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUpLiBTZWUKKyAqIHZnZW1fZmVuY2Vf c2lnbmFsX2lvY3RsIChEUk1fSU9DVExfVkdFTV9GRU5DRV9TSUdOQUwpLgorICoKKyAqIElmIHRo ZSB2R0VNIGhhbmRsZSBkb2VzIG5vdCBleGlzdCwgdmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwgcmV0 dXJucyAtRU5PRU5ULgorICovCitpbnQgdmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKKwkJCSAgICB2b2lkICpkYXRhLAorCQkJICAgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJtX3ZnZW1fZmVuY2VfYXR0YWNoICphcmcgPSBkYXRhOwor CXN0cnVjdCB2Z2VtX2ZpbGUgKnZmaWxlID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IHJl c2VydmF0aW9uX29iamVjdCAqcmVzdjsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlz dHJ1Y3QgZmVuY2UgKmZlbmNlOworCWludCByZXQ7CisKKwlpZiAoYXJnLT5mbGFncyAmIH5WR0VN X0ZFTkNFX1dSSVRFKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChhcmctPnBhZCkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJnLT5o YW5kbGUpOworCWlmICghb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXJldCA9IGF0dGFjaF9k bWFidWYoZGV2LCBvYmopOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCisJZmVuY2UgPSB2Z2Vt X2ZlbmNlX2NyZWF0ZSh2ZmlsZSwgYXJnLT5mbGFncyk7CisJaWYgKCFmZW5jZSkgeworCQlyZXQg PSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwkvKiBDaGVjayBmb3IgYSBjb25mbGljdGlu ZyBmZW5jZSAqLworCXJlc3YgPSBvYmotPmRtYV9idWYtPnJlc3Y7CisJaWYgKCFyZXNlcnZhdGlv bl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3UocmVzdiwKKwkJCQkJCSAgYXJnLT5mbGFncyAmIFZH RU1fRkVOQ0VfV1JJVEUpKSB7CisJCXJldCA9IC1FQlVTWTsKKwkJZ290byBlcnJfZmVuY2U7CisJ fQorCisJLyogRXhwb3NlIHRoZSBmZW5jZSB2aWEgdGhlIGRtYS1idWYgKi8KKwlyZXQgPSAwOwor CW11dGV4X2xvY2soJnJlc3YtPmxvY2suYmFzZSk7CisJaWYgKGFyZy0+ZmxhZ3MgJiBWR0VNX0ZF TkNFX1dSSVRFKQorCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UocmVzdiwgZmVu Y2UpOworCWVsc2UgaWYgKChyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQo cmVzdikpID09IDApCisJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX2ZlbmNlKHJlc3Ys IGZlbmNlKTsKKwltdXRleF91bmxvY2soJnJlc3YtPmxvY2suYmFzZSk7CisKKwkvKiBSZWNvcmQg dGhlIGZlbmNlIGluIG91ciBpZHIgZm9yIGxhdGVyIHNpZ25hbGluZyAqLworCWlmIChyZXQgPT0g MCkgeworCQltdXRleF9sb2NrKCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCQlyZXQgPSBpZHJfYWxs b2MoJnZmaWxlLT5mZW5jZV9pZHIsIGZlbmNlLCAxLCAwLCBHRlBfS0VSTkVMKTsKKwkJbXV0ZXhf dW5sb2NrKCZ2ZmlsZS0+ZmVuY2VfbXV0ZXgpOworCQlpZiAocmV0ID4gMCkgeworCQkJYXJnLT5v dXRfZmVuY2UgPSByZXQ7CisJCQlyZXQgPSAwOworCQl9CisJfQorZXJyX2ZlbmNlOgorCWlmIChy ZXQpIHsKKwkJZmVuY2Vfc2lnbmFsKGZlbmNlKTsKKwkJZmVuY2VfcHV0KGZlbmNlKTsKKwl9Citl cnI6CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogdmdlbV9mZW5jZV9zaWduYWxfaW9jdGwgKERSTV9JT0NUTF9WR0VN X0ZFTkNFX1NJR05BTCk6CisgKgorICogU2lnbmFsIGFuZCBjb25zdW1lIGEgZmVuY2UgZWFsaWVy IGF0dGFjaGVkIHRvIGEgdkdFTSBoYW5kbGUgdXNpbmcKKyAqIHZnZW1fZmVuY2VfYXR0YWNoX2lv Y3RsIChEUk1fSU9DVExfVkdFTV9GRU5DRV9BVFRBQ0gpLgorICoKKyAqIEFsbCBmZW5jZXMgbXVz dCBiZSBzaWduYWxlZCB3aXRoaW4gMTBzIG9mIGF0dGFjaG1lbnQgb3Igb3RoZXJ3aXNlIHRoZXkK KyAqIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgKGFuZCBhIHZnZW1fZmVuY2Vfc2lnbmFsX2lv Y3RsIHJldHVybnMgLUVUSU1FRE9VVCkuCisgKgorICogU2lnbmFsaW5nIGEgZmVuY2UgaW5kaWNh dGVzIHRvIGFsbCBjb25zdW1lcnMgb2YgdGhlIGRtYS1idWYgdGhhdCB0aGUKKyAqIGNsaWVudCBo YXMgY29tcGxldGVkIHRoZSBvcGVyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmZW5jZSwgYW5k IHRoYXQgdGhlCisgKiBidWZmZXIgaXMgdGhlbiByZWFkeSBmb3IgY29uc3VtcHRpb24uCisgKgor ICogSWYgdGhlIGZlbmNlIGRvZXMgbm90IGV4aXN0IChvciBoYXMgYWxyZWFkeSBiZWVuIHNpZ25h bGVkIGJ5IHRoZSBjbGllbnQpLAorICogdmdlbV9mZW5jZV9zaWduYWxfaW9jdGwgcmV0dXJucyAt RU5PRU5ULgorICovCitpbnQgdmdlbV9mZW5jZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKKwkJCSAgICB2b2lkICpkYXRhLAorCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKK3sKKwlzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZSA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0 cnVjdCBkcm1fdmdlbV9mZW5jZV9zaWduYWwgKmFyZyA9IGRhdGE7CisJc3RydWN0IGZlbmNlICpm ZW5jZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZy0+ZmxhZ3MpCisJCXJldHVybiAtRUlOVkFMOwor CisJbXV0ZXhfbG9jaygmdmZpbGUtPmZlbmNlX211dGV4KTsKKwlmZW5jZSA9IGlkcl9yZXBsYWNl KCZ2ZmlsZS0+ZmVuY2VfaWRyLCBOVUxMLCBhcmctPmZlbmNlKTsKKwltdXRleF91bmxvY2soJnZm aWxlLT5mZW5jZV9tdXRleCk7CisJaWYgKCFmZW5jZSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisJaWYg KElTX0VSUihmZW5jZSkpCisJCXJldHVybiBQVFJfRVJSKGZlbmNlKTsKKworCWlmIChmZW5jZV9p c19zaWduYWxlZChmZW5jZSkpCisJCXJldCA9IC1FVElNRURPVVQ7CisKKwlmZW5jZV9zaWduYWwo ZmVuY2UpOworCWZlbmNlX3B1dChmZW5jZSk7CisJcmV0dXJuIHJldDsKK30KKworaW50IHZnZW1f ZmVuY2Vfb3BlbihzdHJ1Y3QgdmdlbV9maWxlICp2ZmlsZSkKK3sKKwltdXRleF9pbml0KCZ2Zmls ZS0+ZmVuY2VfbXV0ZXgpOworCWlkcl9pbml0KCZ2ZmlsZS0+ZmVuY2VfaWRyKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IF9fdmdlbV9mZW5jZV9pZHJfZmluaShpbnQgaWQsIHZvaWQg KnAsIHZvaWQgKmRhdGEpCit7CisJZmVuY2Vfc2lnbmFsKHApOworCWZlbmNlX3B1dChwKTsKKwly ZXR1cm4gMDsKK30KKwordm9pZCB2Z2VtX2ZlbmNlX2Nsb3NlKHN0cnVjdCB2Z2VtX2ZpbGUgKnZm aWxlKQoreworCWlkcl9mb3JfZWFjaCgmdmZpbGUtPmZlbmNlX2lkciwgX192Z2VtX2ZlbmNlX2lk cl9maW5pLCB2ZmlsZSk7CisJaWRyX2Rlc3Ryb3koJnZmaWxlLT5mZW5jZV9pZHIpOworfQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS92Z2VtX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS92 Z2VtX2RybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmY2NmY1 ZGI2ZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91YXBpL2RybS92Z2VtX2RybS5oCkBA IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgor ICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQor ICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZworICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICogZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2Us IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworICogcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAq IG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MKKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUVU5HU1RF TiBHUkFQSElDUyBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwKKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfVUFQSV9WR0VNX0RS TV9IXworI2RlZmluZSBfVUFQSV9WR0VNX0RSTV9IXworCisjaW5jbHVkZSAiZHJtLmgiCisKKyNp ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogUGxlYXNl IG5vdGUgdGhhdCBtb2RpZmljYXRpb25zIHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUK KyAqIHN1YmplY3QgdG8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29uc3RyYWludHMuCisgKi8K KyNkZWZpbmUgRFJNX1ZHRU1fRkVOQ0VfQVRUQUNICTB4MQorI2RlZmluZSBEUk1fVkdFTV9GRU5D RV9TSUdOQUwJMHgyCisKKyNkZWZpbmUgRFJNX0lPQ1RMX1ZHRU1fRkVOQ0VfQVRUQUNICURSTV9J T1dSKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX1ZHRU1fRkVOQ0VfQVRUQUNILCBzdHJ1Y3QgZHJt X3ZnZW1fZmVuY2VfYXR0YWNoKQorI2RlZmluZSBEUk1fSU9DVExfVkdFTV9GRU5DRV9TSUdOQUwJ RFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9WR0VNX0ZFTkNFX1NJR05BTCwgc3RydWN0 IGRybV92Z2VtX2ZlbmNlX3NpZ25hbCkKKworc3RydWN0IGRybV92Z2VtX2ZlbmNlX2F0dGFjaCB7 CisJX191MzIgaGFuZGxlOworCV9fdTMyIGZsYWdzOworI2RlZmluZSBWR0VNX0ZFTkNFX1dSSVRF CTB4MQorCV9fdTMyIG91dF9mZW5jZTsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJtX3Zn ZW1fZmVuY2Vfc2lnbmFsIHsKKwlfX3UzMiBmZW5jZTsKKwlfX3UzMiBmbGFnczsKK307CisKKyNp ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfVUFQSV9WR0VN X0RSTV9IXyAqLwotLSAKMi44LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=