From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Siqueira Subject: [RFC] drm/vkms: Add writeback support Date: Mon, 22 Oct 2018 09:27:18 -0300 Message-ID: <20181022122718.girdp4ybkw3wrsmn@smtp.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1893889E5B for ; Mon, 22 Oct 2018 12:27:23 +0000 (UTC) Received: by mail-qt1-x843.google.com with SMTP id l9-v6so990257qtj.12 for ; Mon, 22 Oct 2018 05:27:23 -0700 (PDT) Content-Disposition: inline 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: Simon Ser List-Id: dri-devel@lists.freedesktop.org SGksCgpJIHN0YXJ0ZWQgdG8gd29yayBmb3IgYWRkIHRoZSB3cml0ZWJhY2sgZmVhdHVyZSBpbnRv IHRoZSBWS01TLCBhbmQgdGhpcwpSRkMgcmVwcmVzZW50cyBteSBmaXJzdCBkcmFmdC4gQXMgYSBy ZXN1bHQsIEkgaGF2ZSBzb21lIHF1ZXN0aW9ucyB3aGljaApJIGxpc3QgYmVsb3cuCgoxLiBJbiB0 aGlzIHBhdGNoLCBJIHJlcGxhY2VkIHRoZSB2aXJ0dWFsIGNvbm5lY3RvciBieSB0aGUgd3JpdGVi YWNrCmNvbm5lY3Rvci4gSXMgaXQgYSBnb29kIGlkZWE/IE9yIHNob3VsZCBJIGtlZXAgYm90aCBj b25uZWN0b3JzPyBJZiBJCmtlZXAgYm90aCBjb25uZWN0b3JzLCBzaG91bGQgSSBhZGQgYSBtb2R1 bGUgcGFyYW1ldGVyIHRvIGVuYWJsZSB0aGUKd3JpdGViYWNrPwoKMi4gV2hlbiBJIGFkZGVkIHRo ZSB3cml0ZWJhY2sgY29ubmVjdG9yIChpbgpkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KCkp LCBJIG5vdGljZWQgdGhhdCBJIGhhZCB0byBpbmRpY2F0ZSB0aGUKc3RydWN0IGRybV9lbmNvZGVy X2hlbHBlcl9mdW5jcy4gSG93ZXZlciwgSSB0aGluayB0aGF0IFZLTVMgZG9lcyBub3QKbmVlZCBh bnl0aGluZyBzb3BoaXN0aWNhdGVkIHJlbGF0ZWQgdG8gZW5jb2RlcnMgYXQgdGhlIHdyaXRlYmFj awpwZXJzcGVjdGl2ZS4gQW0gSSByaWdodD8gT3IgZGlkIEkgbWlzc2VkIHNvbWV0aGluZz8KCjMu IEkganVzdCBkaXNjb3ZlcmVkIHRoYXQgdGhlIHdyaXRlYmFjayBjb25uZWN0b3JzIGFyZSBub3Qg ZXhwb3NlZCBhcyBhCmNvbm5lY3RvciBmb3IgdGhlIHVzZXJzcGFjZSwgYXMgYSByZXN1bHQsIElH VCB0ZXN0cyBkbyBub3Qgd29yayBhbmQKV2F5bGFuZCBpcyB1bmFibGUgdG8gcnVuIGFzIHdlbGwu IFNpbW9uIFNlciBhbmQgRGFuaWVsIFN0b25lLCBleHBsYWluZWQKdG8gbWUgdGhhdCBJIGhhdmUg dG8gdXBkYXRlIHRoZSBjb21wb3NpdG9yIChpbiBteSBjYXNlIFdlc3RvbikgdG8gc2V0CkRSTV9D TElFTlRfQ0FQX1dSSVRFQkFDS19DT05ORUNUT1JTIHZpYSBkcm1TZXRDbGllbnRDYXAoKS4gU2lu Y2UgSSBkbwpub3QgaGF2ZSBleHBlcmllbmNlIHdpdGggdXNlcnNwYWNlLCBhbnlvbmUgY2FuIHBv aW50IG1lIG91dCBhbm90aGVyCmFzcGVjdCB0aGF0IEkgaGF2ZSB0byB0YWtlIGEgbG9vayB0byBt YWtlIHRoZSB3cml0ZWJhY2sgd29yayBpbiB0aGUgdXNlcgpzcGFjZT8gQWxzbywgSXMgaXQgcG9z c2libGUgdG8gdXBkYXRlIHRoZSBJR1QgdGVzdCBvciBkbyBJIG5lZWQgdG8KY3JlYXRlIGEgbmV3 IHNldCBvZiB0ZXN0cz8KClRoYW5rcyEKClNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gU2lxdWVpcmEg PHJvZHJpZ29zaXF1ZWlyYW1lbG9AZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfY3JjLmMgICAgfCAgIDkgKystCiBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMu YyAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICAgfCAgIDMgKy0K IGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMgfCAxMDcgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMzIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKaW5kZXggOWQ5ZTgxNDZkYjkwLi41ZDlh YzQ1ZTAwZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwpAQCAtMTA5LDcgKzEwOSw4IEBAIHN0 YXRpYyB2b2lkIGNvbXBvc2VfY3Vyc29yKHN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3Jj LAogfQogCiBzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0 YSAqcHJpbWFyeV9jcmMsCi0JCQkgICAgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3Vyc29yX2Ny YykKKwkJCSAgICAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3JjLAorCQkJICAgICAg c3RydWN0IHZrbXNfb3V0cHV0ICpvdXQpCiB7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSAmcHJpbWFyeV9jcmMtPmZiOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9IGRy bV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7CkBAIC0xMzAsNiArMTMxLDEwIEBAIHN0YXRpYyB1aW50 MzJfdCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYywKIAl9 CiAKIAltZW1jcHkodmFkZHJfb3V0LCB2a21zX29iai0+dmFkZHIsIHZrbXNfb2JqLT5nZW0uc2l6 ZSk7CisJLy8gVE9ETzogUmVtb3ZlIHRoaXMgY29weSBmcm9tIGNyYywgYW5kIG1ha2UgdGhpcyBz b3J0IG9mIG9wZXJhdGlvbgorCS8vIGdlbmVyaWMgc2luY2Ugd2UgY2FuIHVzZSBpbiBkaWZmZXJl bnQgcGxhY2VzCisJbWVtY3B5KG91dC0+Y29ubmVjdG9yLmJhc2Uuc3RhdGUtPndyaXRlYmFja19q b2ItPmZiLAorCSAgICAgICB2a21zX29iai0+dmFkZHIsIHZrbXNfb2JqLT5nZW0uc2l6ZSk7CiAJ bXV0ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7CiAKIAlpZiAoY3Vyc29yX2NyYykK QEAgLTE5Myw3ICsxOTgsNyBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIAl9CiAKIAlpZiAocHJpbWFyeV9jcmMpCi0JCWNyYzMyID0gX3ZrbXNf Z2V0X2NyYyhwcmltYXJ5X2NyYywgY3Vyc29yX2NyYyk7CisJCWNyYzMyID0gX3ZrbXNfZ2V0X2Ny YyhwcmltYXJ5X2NyYywgY3Vyc29yX2NyYywgb3V0KTsKIAogCWZyYW1lX2VuZCA9IGRybV9jcnRj X2FjY3VyYXRlX3ZibGFua19jb3VudChjcnRjKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwpp bmRleCAxNzdiYmNiMzgzMDYuLmQzM2RkY2M0MGEyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRj LmMKQEAgLTQ4LDYgKzQ4LDggQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJs YW5rX3NpbXVsYXRlKHN0cnVjdCBocnRpbWVyICp0aW1lcikKIAogCV92YmxhbmtfaGFuZGxlKG91 dHB1dCk7CiAKKwlkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCZvdXRwdXQtPmNvbm5l Y3RvciwgMCk7CisKIAlyZXRfb3ZlcnJ1biA9IGhydGltZXJfZm9yd2FyZF9ub3coJm91dHB1dC0+ dmJsYW5rX2hydGltZXIsCiAJCQkJCSAgb3V0cHV0LT5wZXJpb2RfbnMpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuaAppbmRleCAxYzkzOTkwNjkzZTMuLjFlODE4NGFkODcyZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2Rydi5oCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPGRybS9kcm0uaD4KICNpbmNs dWRlIDxkcm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgorI2luY2x1 ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+CiAjaW5jbHVkZSA8bGludXgvaHJ0aW1lci5oPgogCiAj ZGVmaW5lIFhSRVNfTUlOICAgIDIwCkBAIC02MSw3ICs2Miw3IEBAIHN0cnVjdCB2a21zX2NydGNf c3RhdGUgewogc3RydWN0IHZrbXNfb3V0cHV0IHsKIAlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKIAlz dHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0 b3I7CisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIGNvbm5lY3RvcjsKIAlzdHJ1Y3Qg aHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsKIAlrdGltZV90IHBlcmlvZF9uczsKIAlzdHJ1Y3QgZHJt X3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfb3V0cHV0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX291dHB1dC5j CmluZGV4IDI3MWEwZWI5MDQyYy4uNDY2MjJkMDEyMTA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX291dHB1dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNf b3V0cHV0LmMKQEAgLTksNiArOSwxMyBAQAogI2luY2x1ZGUgInZrbXNfZHJ2LmgiCiAjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBl ci5oPgorI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+CisKKyNkZWZpbmUgdG9fd2Jfc3Rh dGUoX3N0YXRlKSAoc3RydWN0IHZrbXNfd3JpdGViYWNrX2Nvbm5lY3Rvcl9zdGF0ZSAqKShfc3Rh dGUpCisKK3N0cnVjdCB2a21zX3dyaXRlYmFja19jb25uZWN0b3Jfc3RhdGUgeworCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlIGJhc2U7Cit9OwogCiBzdGF0aWMgdm9pZCB2a21zX2Nvbm5lY3Rv cl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7CkBAIC0xNiwxMSAr MjMsNDggQEAgc3RhdGljIHZvaWQgdmttc19jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQogCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOwog fQogCitzdGF0aWMgdm9pZCB2a21zX2Nvbm5lY3Rvcl9yZXNldChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQoreworCXN0cnVjdCB2a21zX3dyaXRlYmFja19jb25uZWN0b3Jfc3RhdGUg KndiX3N0YXRlID0KKwkJa3phbGxvYyhzaXplb2YoKndiX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisK KwlpZiAoY29ubmVjdG9yLT5zdGF0ZSkKKwkJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZShjb25uZWN0b3ItPnN0YXRlKTsKKworCWtmcmVlKGNvbm5lY3Rvci0+c3Rh dGUpOworCV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0KGNvbm5lY3RvciwgJndi X3N0YXRlLT5iYXNlKTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICoK K3ZrbXNfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQoreworCXN0cnVjdCB2a21zX3dyaXRlYmFja19jb25uZWN0b3Jfc3RhdGUgKndiX3N0 YXRlOworCisJaWYgKFdBUk5fT04oIWNvbm5lY3Rvci0+c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsK KworCXdiX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKndiX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCF3Yl9zdGF0ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlfX2RybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoY29ubmVjdG9yLAorCQkJCQkJICAgICAgJndiX3N0YXRl LT5iYXNlKTsKKworCXJldHVybiAmd2Jfc3RhdGUtPmJhc2U7Cit9CisKK3N0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzCit2a21zX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQ7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5j cyB2a21zX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkucmVzZXQgPSB2a21zX2Nvbm5lY3Rvcl9yZXNl dCwKKwkuZGV0ZWN0ID0gdmttc19jb25uZWN0b3JfZGV0ZWN0LAogCS5maWxsX21vZGVzID0gZHJt X2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAogCS5kZXN0cm95ID0gdmttc19j b25uZWN0b3JfZGVzdHJveSwKLQkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf cmVzZXQsCi0JLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gdmttc19j b25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAogfTsKIApAQCAtNDIsMTIgKzg2 LDM1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgdmtt c19jb25uX2hlbHBlcl9mdW5jcyA9IHsKIAkuZ2V0X21vZGVzICAgID0gdmttc19jb25uX2dldF9t b2RlcywKIH07CiAKK3N0YXRpYyBpbnQgdmttc19lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKK3sKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKworCWlmICghY29ubl9zdGF0ZS0+ d3JpdGViYWNrX2pvYiB8fCAhY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIpCisJCXJldHVy biAwOworCisJZmIgPSBjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iLT5mYjsKKwlpZiAoZmItPndp ZHRoICE9IGNydGNfc3RhdGUtPm1vZGUuaGRpc3BsYXkgfHwKKwkgICAgZmItPmhlaWdodCAhPSBj cnRjX3N0YXRlLT5tb2RlLnZkaXNwbGF5KSB7CisJCURSTV9ERUJVR19LTVMoIkludmFsaWQgZnJh bWVidWZmZXIgc2l6ZSAldXgldVxuIiwKKwkJCSAgICAgIGZiLT53aWR0aCwgZmItPmhlaWdodCk7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyB2a21zX2VuY29kZXJfaGVscGVyX2Z1bmNz ID0geworCS5hdG9taWNfY2hlY2sgPSB2a21zX2VuY29kZXJfYXRvbWljX2NoZWNrLAorfTsKKwog aW50IHZrbXNfb3V0cHV0X2luaXQoc3RydWN0IHZrbXNfZGV2aWNlICp2a21zZGV2KQogewogCXN0 cnVjdCB2a21zX291dHB1dCAqb3V0cHV0ID0gJnZrbXNkZXYtPm91dHB1dDsKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gJnZrbXNkZXYtPmRybTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gJm91dHB1dC0+Y29ubmVjdG9yOwotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciA9ICZvdXRwdXQtPmVuY29kZXI7CisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpj b25uZWN0b3IgPSAmb3V0cHV0LT5jb25uZWN0b3I7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0g Jm91dHB1dC0+Y3J0YzsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCAqY3Vyc29yID0gTlVM TDsKIAlpbnQgcmV0OwpAQCAtNjgsNDcgKzEzNSwyOSBAQCBpbnQgdmttc19vdXRwdXRfaW5pdChz dHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfY3J0YzsK IAotCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwgJnZrbXNfY29ubmVj dG9yX2Z1bmNzLAotCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCk7CisJcmV0ID0gZHJt X3dyaXRlYmFja19jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwKKwkJCQkJICAgJnZrbXNf Y29ubmVjdG9yX2Z1bmNzLAorCQkJCQkgICAmdmttc19lbmNvZGVyX2hlbHBlcl9mdW5jcywKKwkJ CQkJICAgdmttc19mb3JtYXRzLCAxKTsKIAlpZiAocmV0KSB7CiAJCURSTV9FUlJPUigiRmFpbGVk IHRvIGluaXQgY29ubmVjdG9yXG4iKTsKIAkJZ290byBlcnJfY29ubmVjdG9yOwogCX0KIAotCWRy bV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZ2a21zX2Nvbm5faGVscGVyX2Z1bmNz KTsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJmNvbm5lY3Rvci0+YmFzZSwgJnZrbXNfY29u bl9oZWxwZXJfZnVuY3MpOwogCi0JcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0 b3IpOworCXJldCA9IGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoJmNvbm5lY3Rvci0+YmFzZSk7CiAJ aWYgKHJldCkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBjb25uZWN0b3JcbiIp OwogCQlnb3RvIGVycl9jb25uZWN0b3JfcmVnaXN0ZXI7CiAJfQogCi0JcmV0ID0gZHJtX2VuY29k ZXJfaW5pdChkZXYsIGVuY29kZXIsICZ2a21zX2VuY29kZXJfZnVuY3MsCi0JCQkgICAgICAgRFJN X01PREVfRU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigi RmFpbGVkIHRvIGluaXQgZW5jb2RlclxuIik7Ci0JCWdvdG8gZXJyX2VuY29kZXI7Ci0JfQotCWVu Y29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKLQotCXJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNo X2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigi RmFpbGVkIHRvIGF0dGFjaCBjb25uZWN0b3IgdG8gZW5jb2RlclxuIik7Ci0JCWdvdG8gZXJyX2F0 dGFjaDsKLQl9Ci0KIAlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKIAogCXJldHVybiAwOwog Ci1lcnJfYXR0YWNoOgotCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Ci0KLWVycl9lbmNv ZGVyOgotCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwotCiBlcnJfY29ubmVj dG9yX3JlZ2lzdGVyOgotCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworCWRybV9j b25uZWN0b3JfY2xlYW51cCgmY29ubmVjdG9yLT5iYXNlKTsKIAogZXJyX2Nvbm5lY3RvcjoKIAlk cm1fY3J0Y19jbGVhbnVwKGNydGMpOwotLSAKMi4xOS4xCgoKLS0gClJvZHJpZ28gU2lxdWVpcmEK aHR0cHM6Ly9zaXF1ZWlyYS50ZWNoCmh0dHBzOi8vdHdpdHRlci5jb20vc2lxdWVpcmFqb3JkYW8K R3JhZHVhdGUgU3R1ZGVudApEZXBhcnRtZW50IG9mIENvbXB1dGVyIFNjaWVuY2UKVW5pdmVyc2l0 eSBvZiBTw6NvIFBhdWxvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=