From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Siqueira Subject: [RFC] drm/vkms: Add writeback support Date: Sun, 10 Mar 2019 18:20:34 -0300 Message-ID: <20190310212034.mf5ymeadwledswtg@smtp.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by gabe.freedesktop.org (Postfix) with ESMTPS id 45D6D89ACD for ; Sun, 10 Mar 2019 21:20:39 +0000 (UTC) Received: by mail-qk1-x742.google.com with SMTP id b74so1549535qkg.9 for ; Sun, 10 Mar 2019 14:20:39 -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: Brian Starkey , Liviu Dudau , Daniel Vetter Cc: Simon Ser , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGksCgpJbiB0aGUgbGFzdCBmZXcgd2Vla3MsIEkgd2FzIGZvY3VzZWQgb24gaW1wbGVtZW50aW5n IHRoZSB3cml0ZWJhY2sgb24KVktNUyBieSB1c2luZyB0aGUgZmVlZGJhY2sgdGhhdCBJIGdvdCBm cm9tIEJyaWFuIFN0YXJrZXkgYW5kIERhbmllbApWZXR0ZXIgaW4gbXkgcHJldmlvdXMgYXR0ZW1w dCBbMV0uIEZvciB0ZXN0aW5nL2d1aWRpbmcgbXkKaW1wbGVtZW50YXRpb24sIEnigJltIHVzaW5n IGEgcGF0Y2hzZXQgbWFkZSBieSBMaXZpdSBhbmQgQnJpYW4gdGhhdCBhZGRzCndyaXRlYmFjayB0 ZXN0cyB0byBJR1QgWzJdLiBUaGlzIHBhdGNoLCBhbHJlYWR5IHBhc3MgdGhlIGJhc2ljCnJlcXVp cmVtZW50cyBhbmQgc29tZSBvZiB0aGUgb3RoZXIgdGVzdHMuCgpTbywgaW4gdGhpcyBpbXBsZW1l bnRhdGlvbiBJIGFkb3B0ZWQgdGhlIGZvbGxvd2luZyBkZXNpZ246IHlvdSBjYW4gdXNlCndyaXRl YmFja19jb25uZWN0b3IsIG9yIHlvdSBjYW4gaGF2ZSBhIHZpcnR1YWwgY29ubmVjdG9yLCBidXQg eW91IGNhbm5vdApoYXZlIGJvdGguIFNob3VsZCBJIGtlZXAgdGhlIHZpcnR1YWwgY29ubmVjdG9y IGFsd2F5cyBhdmFpbGFibGUgYW5kIG1ha2UKaXQgcG9zc2libGUgdG8gYWRkIHdyaXRlYmFjayBj b25uZWN0b3IgYXMgdGhlIHNlY29uZGFyeSBjb25uZWN0b3I/IElmCnNvLCB0aGVyZSdzIGFueSBJ R1QgdGVzdCBmb3IgdGhpcz8KClNlY29uZGx5LCBJ4oCZbSBmYWNpbmcgcHJvYmxlbXMgcmVsYXRl ZCB0bwrigJhkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCnigJksIGZvciBzb21lIHJl YXNvbiB0aGF0IEkgZGlkIG5vdCBrbm93CnlldCBJIGNvbnRpbnVvdXNseSBnZXQgdGhlIGZvbGxv d2luZyBlcnJvciBpbiBhIGxvb3A6CgpbICArMC4wMDAwNjBdIENQVTogMyBQSUQ6IDAgQ29tbTog c3dhcHBlci8zIFRhaW50ZWQ6IEcgICAgICBEIFcgICAgICAgICA1LjAuMC1WS01TICMxMDIKWyAg KzAuMDAwMDA0XSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlY LCAxOTk2KSwgQklPUyAxLjEyLjAtMjAxODExMjZfMTQyMTM1LWFuYXRvbCAwNC8wMS8yMDE0Clsg ICswLjAwMDAzM10gUklQOiAwMDEwOmRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24rMHgx MGMvMHgxMzAgW2RybV0KWyAgKzAuMDAwMDA2XSBDb2RlOiAwMSAwMCAwMCA0OCA4OSA0MyBlOCA0 OCA4OSA0MyBmMCA0OCA4YiAzNSAzYyA2NyBiMyBlNCA1YiA1ZCA0MSA1YyA0MSA1ZCA0MSA1ZSBl OSAwZiA3ZCBhYSBlMyA0YyA4OSBlZSA0YyA4OSBlNyBlOCBhNCA0ZSAxOCBlNCA8MGY+IDBiIDVi IDVkIDQxIDVjIDQxIDVkIDQxIDVlIGMzIGU4IDU0IDJmIGY4IGUzIGViIDlhIDBmIDBiIGU5IDYw ClsgICswLjAwMDAwNF0gUlNQOiAwMDE4OmZmZmY5ODU5M2NiODNlYzAgRUZMQUdTOiAwMDAxMDA4 MgpbICArMC4wMDAwMDZdIFJBWDogMDAwMDAwMDA4MDAxMDAwMiBSQlg6IGZmZmY5ODU5M2JiYjU0 YjAgUkNYOiAwMDAwMDAwMDAwMDAwMDAwClsgICswLjAwMDAwNV0gUkRYOiAwMDAwMDAwMDAwMDAw MDAxIFJTSTogMDAwMDAwMDAwMDAwMDA4MiBSREk6IDAwMDAwMDAwZmZmZmZmZmYKWyAgKzAuMDAw MDA0XSBSQlA6IGZmZmY5ODU5M2JiYjU0YjAgUjA4OiAwMDAwMDAwMDAwMDAwMDAwIFIwOTogZmZm Zjk4NTkzY2I4M2UyMApbICArMC4wMDAwMDRdIFIxMDogZmZmZjk4NTkzYTA3ZDYwMCBSMTE6IDAw MDAwMDAwMDAwMDAwMDAgUjEyOiBmZmZmOTg1OTNiYmI1NGE4ClsgICswLjAwMDAwNF0gUjEzOiAw MDAwMDAwMDAwMDAwMDgyIFIxNDogMDAwMDAwMDAwMDAwMDAwMCBSMTU6IGZmZmY5ODU5M2NiOWNk MzgKWyAgKzAuMDAwMDA2XSBGUzogIDAwMDAwMDAwMDAwMDAwMDAoMDAwMCkgR1M6ZmZmZjk4NTkz Y2I4MDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwClsgICswLjAwMDAwNF0gQ1M6ICAw MDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpbICArMC4wMDAwMDVd IENSMjogMDAwMDdmM2NlYTJlODAwMCBDUjM6IDAwMDAwMDAwYmE2ZWMwMDAgQ1I0OiAwMDAwMDAw MDAwMDAwNmUwClsgICswLjAwMDAxMF0gQ2FsbCBUcmFjZToKWyAgKzAuMDAwMDA3XSAgPElSUT4K WyAgKzAuMDAwMDEzXSAgPyB2a21zX2Rpc2FibGVfdmJsYW5rKzB4MjAvMHgyMCBbdmttc10KWyAg KzAuMDAwMDA4XSAgdmttc192Ymxhbmtfc2ltdWxhdGUrMHhlZi8weDExMCBbdmttc10KWyAgKzAu MDAwMDA4XSAgPyB2a21zX2Rpc2FibGVfdmJsYW5rKzB4MjAvMHgyMCBbdmttc10KWyAgKzAuMDAw MDA3XSAgX19ocnRpbWVyX3J1bl9xdWV1ZXMrMHgxMDAvMHgyZDAKWyAgKzAuMDAwMDA4XSAgaHJ0 aW1lcl9pbnRlcnJ1cHQrMHgxMGEvMHgyMjAKWyAgKzAuMDAwMDA4XSAgPyBrdm1fc2NoZWRfY2xv Y2tfcmVhZCsweDUvMHgxMApbICArMC4wMDAwMTBdICBzbXBfYXBpY190aW1lcl9pbnRlcnJ1cHQr MHg2OS8weDE2MApbICArMC4wMDAwMDddICBhcGljX3RpbWVyX2ludGVycnVwdCsweGYvMHgyMApb ICArMC4wMDAwMDRdICA8L0lSUT4KWyAgKzAuMDAwMDA4XSBSSVA6IDAwMTA6bmF0aXZlX3NhZmVf aGFsdCsweDIvMHgxMApbICArMC4wMDAwMDVdIENvZGU6IDViIGZmIGZmIGZmIDdmIDViIGMzIDY1 IDQ4IDhiIDA0IDI1IDAwIDVjIDAxIDAwIGYwIDgwIDQ4IDAyIDIwIDQ4IDhiIDAwIGE4IDA4IDc1 IGMzIGViIDhiIDkwIDkwIDkwIDkwIDkwIDkwIDkwIDkwIDkwIDkwIGZiIGY0IDxjMz4gNjYgNjYg MmUgMGYgMWYgODQgMDAgMDAgMDAgMDAgMDAgNjYgOTAgZjQgYzMgOTAgOTAgOTAgOTAgOTAgOTAK WyAgKzAuMDAwMDA1XSBSU1A6IDAwMTg6ZmZmZmI5MzdjMDZiM2ViOCBFRkxBR1M6IDAwMDAwMjAy IE9SSUdfUkFYOiBmZmZmZmZmZmZmZmZmZjEzClsgICswLjAwMDAwNV0gUkFYOiAwMDAwMDAwMDAw MDAwMDAzIFJCWDogMDAwMDAwMDAwMDAwMDAwMyBSQ1g6IDAwMDAwMDAwMDAwMDAwMDEKWyAgKzAu MDAwMDA0XSBSRFg6IDAwMDAwMDAwMDAwMDAwMDEgUlNJOiBmZmZmZmZmZmE0ZTZkYTNlIFJESTog ZmZmZmZmZmZhNGU2ZGQzMApbICArMC4wMDAwMDVdIFJCUDogZmZmZmZmZmZhNTEyNTJlMCBSMDg6 IGZmZmZmZmZmYTU1ZTc0MzggUjA5OiAwMDAwMDAwMDAwMDAwMDAwClsgICswLjAwMDAwM10gUjEw OiAwMDAwMDAwMDAwMDAwMDAwIFIxMTogZmZmZmZmZmZhNTA0OWZiOCBSMTI6IDAwMDAwMDAwMDAw MDAwMDAKWyAgKzAuMDAwMDA0XSBSMTM6IDAwMDAwMDAwMDAwMDAwMDAgUjE0OiAwMDAwMDAwMDAw MDAwMDAwIFIxNTogMDAwMDAwMDAwMDAwMDAwMApbICArMC4wMDAwMTJdICBkZWZhdWx0X2lkbGUr MHgxYS8weDE3MApbICArMC4wMDAwMTBdICBkb19pZGxlKzB4MWQ1LzB4MjUwClsgICswLjAwMDAw N10gIGNwdV9zdGFydHVwX2VudHJ5KzB4MTkvMHgyMApbICArMC4wMDAwMDddICBzdGFydF9zZWNv bmRhcnkrMHgxYWEvMHgyMDAKWyAgKzAuMDAwMDA4XSAgc2Vjb25kYXJ5X3N0YXJ0dXBfNjQrMHhh NC8weGIwClsgICswLjAwMDAwOF0gLS0tWyBlbmQgdHJhY2UgZWMxMjY2NmU0ZWNiOTZmNyBdLS0t CgpBbnkgaWRlYXM/IE9yIGFueSBjb21tZW50cz8KClRoYW5rcwpCZXN0IFJlZ2FyZHMKCjEuIGh0 dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yNTc3NzEvP3Nlcmllcz01MTMy NSZyZXY9MQoyLiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2VyaWVzLzM5MjI5 LwoKLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYyAgIHwgICAzICsKIGRyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgICAgfCAgIDggKysKIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfZHJ2LmggICAgfCAgMjEgKysrKwogZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19v dXRwdXQuYyB8IDE3NiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19wbGFuZS5jICB8ICAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5z ZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwppbmRl eCA4YTlhZWIwYTllYTguLmQ5OTQ4MjA4ZThlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMK QEAgLTE5LDYgKzE5LDkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJsYW5r X3NpbXVsYXRlKHN0cnVjdCBocnRpbWVyICp0aW1lcikKIAlpZiAoIXJldCkKIAkJRFJNX0VSUk9S KCJ2a21zIGZhaWx1cmUgb24gaGFuZGxpbmcgdmJsYW5rIik7CiAKKwlpZiAob3V0cHV0LT53cml0 ZWJhY2tfZW5hYmxlZCkKKwkJZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigmb3V0cHV0 LT5td19jb25uZWN0b3IsIDApOworCiAJaWYgKHN0YXRlICYmIG91dHB1dC0+Y3JjX2VuYWJsZWQp IHsKIAkJdTY0IGZyYW1lID0gZHJtX2NydGNfYWNjdXJhdGVfdmJsYW5rX2NvdW50KGNydGMpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19kcnYuYwppbmRleCA3MzhkZDYyMDZkODUuLmUwZDdmOTRlMzk3MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2Rydi5jCkBAIC0yOSw2ICsyOSwxMCBAQCBib29sIGVuYWJsZV9j dXJzb3I7CiBtb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxlX2N1cnNvciwgZW5hYmxlX2N1cnNvciwg Ym9vbCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGVuYWJsZV9jdXJzb3IsICJFbmFibGUvRGlz YWJsZSBjdXJzb3Igc3VwcG9ydCIpOwogCitpbnQgZW5hYmxlX3dyaXRlYmFjazsKK21vZHVsZV9w YXJhbV9uYW1lZChlbmFibGVfd3JpdGViYWNrLCBlbmFibGVfd3JpdGViYWNrLCBpbnQsIDA0NDQp OworTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfd3JpdGViYWNrLCAiRW5hYmxlL0Rpc2FibGUgd3Jp dGViYWNrIGNvbm5lY3RvciIpOworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9u cyB2a21zX2RyaXZlcl9mb3BzID0gewogCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAkub3BlbgkJ PSBkcm1fb3BlbiwKQEAgLTEyMyw2ICsxMjcsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdmttc19p bml0KHZvaWQpCiAJCWdvdG8gb3V0X2Zpbmk7CiAJfQogCisJdmttc19kZXZpY2UtPm91dHB1dC53 cml0ZWJhY2tfZW5hYmxlZCA9IGVuYWJsZV93cml0ZWJhY2s7CisJaWYgKGVuYWJsZV93cml0ZWJh Y2spCisJCURSTV9JTkZPKCJXcml0ZWJhY2sgY29ubmVjdG9yIGVuYWJsZWQiKTsKKwogCXJldCA9 IHZrbXNfbW9kZXNldF9pbml0KHZrbXNfZGV2aWNlKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF9m aW5pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKaW5kZXggODFmMWNmYmViOTM2Li4yYzI2ZmU2ODZi OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaApAQCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlIDxk cm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgogI2luY2x1ZGUgPGxp bnV4L2hydGltZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPgogCiAjZGVmaW5l IFhSRVNfTUlOICAgIDIwCiAjZGVmaW5lIFlSRVNfTUlOICAgIDIwCkBAIC00Niw2ICs0NywxNiBA QCBzdHJ1Y3Qgdmttc19wbGFuZV9zdGF0ZSB7CiAJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19k YXRhOwogfTsKIAorLyoqCisgKiB2a21zX2Nvbm5lY3Rvcl9zdGF0ZSAtIERyaXZlciBjb25uZWN0 b3Igc3BlY2lmaWMgc3RhdGUKKyAqIEBiYXNlOiBiYXNlIGNvbm5lY3RvciBzdGF0ZQorICogQHdy aXRlYmFja192YWRkcjoga2VlcCB0cmFjayBmb3Igd3JpdGViYWNrIGZyYW1lYnVmZmVyIGRlc3Rp bmF0aW9uCisgKi8KK3N0cnVjdCB2a21zX2Nvbm5lY3Rvcl9zdGF0ZSB7CisJc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgYmFzZTsKKwl2b2lkICp3cml0ZWJhY2tfdmFkZHI7Cit9OworCiAvKioK ICAqIHZrbXNfY3J0Y19zdGF0ZSAtIERyaXZlciBzcGVjaWZpYyBDUlRDIHN0YXRlCiAgKiBAYmFz ZTogYmFzZSBDUlRDIHN0YXRlCkBAIC02NCwxMCArNzUsMTIgQEAgc3RydWN0IHZrbXNfb3V0cHV0 IHsKIAlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsK IAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7CisJc3RydWN0IGRybV93cml0ZWJhY2tf Y29ubmVjdG9yIG13X2Nvbm5lY3RvcjsKIAlzdHJ1Y3QgaHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsK IAlrdGltZV90IHBlcmlvZF9uczsKIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpl dmVudDsKIAlib29sIGNyY19lbmFibGVkOworCWludCB3cml0ZWJhY2tfZW5hYmxlZDsKIAkvKiBv cmRlcmVkIHdxIGZvciBjcmNfd29yayAqLwogCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpjcmNf d29ya3E7CiAJLyogcHJvdGVjdHMgY29uY3VycmVudCBhY2Nlc3MgdG8gY3JjX2RhdGEgKi8KQEAg LTkzLDYgKzEwNiwxMiBAQCBzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0IHsKICNkZWZpbmUgZHJtX2Ny dGNfdG9fdmttc19vdXRwdXQodGFyZ2V0KSBcCiAJY29udGFpbmVyX29mKHRhcmdldCwgc3RydWN0 IHZrbXNfb3V0cHV0LCBjcnRjKQogCisjZGVmaW5lIGRybV9jb25uZWN0b3JfdG9fd2JfY29ubmVj dG9yKHRhcmdldCkgXAorCWNvbnRhaW5lcl9vZih0YXJnZXQsIHN0cnVjdCBkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciwgYmFzZSkKKworI2RlZmluZSBkcm1fd2JfdG9fdmttc19vdXRwdXQodGFyZ2V0 KSBcCisJY29udGFpbmVyX29mKHRhcmdldCwgc3RydWN0IHZrbXNfb3V0cHV0LCBtd19jb25uZWN0 b3IpCisKICNkZWZpbmUgZHJtX2RldmljZV90b192a21zX2RldmljZSh0YXJnZXQpIFwKIAljb250 YWluZXJfb2YodGFyZ2V0LCBzdHJ1Y3Qgdmttc19kZXZpY2UsIGRybSkKIApAQCAtMTA1LDYgKzEy NCw4IEBAIHN0cnVjdCB2a21zX2dlbV9vYmplY3QgewogI2RlZmluZSB0b192a21zX3BsYW5lX3N0 YXRlKHRhcmdldClcCiAJY29udGFpbmVyX29mKHRhcmdldCwgc3RydWN0IHZrbXNfcGxhbmVfc3Rh dGUsIGJhc2UpCiAKKyNkZWZpbmUgdG9fd2Jfc3RhdGUoX3N0YXRlKSAoc3RydWN0IHZrbXNfY29u bmVjdG9yX3N0YXRlICopKF9zdGF0ZSkKKwogLyogQ1JUQyAqLwogaW50IHZrbXNfY3J0Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJICAgc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMgYi9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX291dHB1dC5jCmluZGV4IDNiMTYyYjI1MzEyZS4uMGU1NWU3Mjk5ZDJlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX291dHB1dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMKQEAgLTMsNiArMyw4IEBACiAjaW5jbHVkZSAi dmttc19kcnYuaCIKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRl IDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+CiAKIHN0YXRpYyB2 b2lkIHZrbXNfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKIHsKQEAgLTEwLDE0ICsxMiw5MiBAQCBzdGF0aWMgdm9pZCB2a21zX2Nvbm5lY3Rvcl9kZXN0 cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJZHJtX2Nvbm5lY3Rvcl9jbGVh bnVwKGNvbm5lY3Rvcik7CiB9CiAKK3N0YXRpYyB2b2lkIHZrbXNfY29ubmVjdG9yX3Jlc2V0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IHZrbXNfY29ubmVjdG9y X3N0YXRlICptd19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiID0g ZHJtX2Nvbm5lY3Rvcl90b193Yl9jb25uZWN0b3IoY29ubmVjdG9yKTsKKwlzdHJ1Y3Qgdmttc19v dXRwdXQgKm91dHB1dCA9IGRybV93Yl90b192a21zX291dHB1dCh3Yik7CisKKwlpZiAoIW91dHB1 dC0+d3JpdGViYWNrX2VuYWJsZWQpCisJCXJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfcmVzZXQoY29ubmVjdG9yKTsKKworCW13X3N0YXRlID0ga3phbGxvYyhzaXplb2YoKm13X3N0 YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtd19zdGF0ZSkgeworCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbm5lY3RvciBzdGF0ZSIpOworCQlyZXR1cm47CisJ fQorCisJaWYgKGNvbm5lY3Rvci0+c3RhdGUpCisJCV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2Rlc3Ryb3lfc3RhdGUoY29ubmVjdG9yLT5zdGF0ZSk7CisKKwlrZnJlZShjb25uZWN0b3It PnN0YXRlKTsKKwlfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldChjb25uZWN0b3Is ICZtd19zdGF0ZS0+YmFzZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqCit2a21zX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3Qgdmttc19jb25uZWN0b3Jfc3RhdGUgKm13X3N0YXRlLCAq bXdfY3VycmVudF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiID0g ZHJtX2Nvbm5lY3Rvcl90b193Yl9jb25uZWN0b3IoY29ubmVjdG9yKTsKKwlzdHJ1Y3Qgdmttc19v dXRwdXQgKm91dHB1dCA9IGRybV93Yl90b192a21zX291dHB1dCh3Yik7CisKKwlpZiAoIW91dHB1 dC0+d3JpdGViYWNrX2VuYWJsZWQpCisJCXJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfZHVwbGljYXRlX3N0YXRlKGNvbm5lY3Rvcik7CisKKwlpZiAoV0FSTl9PTighY29ubmVjdG9y LT5zdGF0ZSkpCisJCXJldHVybiBOVUxMOworCisJbXdfc3RhdGUgPSBremFsbG9jKHNpemVvZigq bXdfc3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW13X3N0YXRlKQorCQlyZXR1cm4gTlVMTDsK KworCW13X2N1cnJlbnRfc3RhdGUgPSB0b193Yl9zdGF0ZShjb25uZWN0b3ItPnN0YXRlKTsKKwlt d19zdGF0ZS0+d3JpdGViYWNrX3ZhZGRyID0gbXdfY3VycmVudF9zdGF0ZS0+d3JpdGViYWNrX3Zh ZGRyOworCisJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKGNv bm5lY3RvciwgJm13X3N0YXRlLT5iYXNlKTsKKworCXJldHVybiAmbXdfc3RhdGUtPmJhc2U7Cit9 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB2a21zX2Nvbm5lY3Rv cl9mdW5jcyA9IHsKIAkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5l Y3Rvcl9tb2RlcywKIAkuZGVzdHJveSA9IHZrbXNfY29ubmVjdG9yX2Rlc3Ryb3ksCi0JLnJlc2V0 ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAotCS5hdG9taWNfZHVwbGljYXRl X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwku cmVzZXQgPSB2a21zX2Nvbm5lY3Rvcl9yZXNldCwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9 IHZrbXNfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKIH07CiAKK3N0YXRp YyBpbnQgdmttc19td19lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCisJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmI7CisKKwlpZiAoIWNvbm5fc3RhdGUtPndyaXRlYmFja19qb2IgfHwgIWNvbm5f c3RhdGUtPndyaXRlYmFja19qb2ItPmZiKQorCQlyZXR1cm4gMDsKKworCWZiID0gY29ubl9zdGF0 ZS0+d3JpdGViYWNrX2pvYi0+ZmI7CisJaWYgKGZiLT53aWR0aCAhPSBjcnRjX3N0YXRlLT5tb2Rl LmhkaXNwbGF5IHx8CisJICAgIGZiLT5oZWlnaHQgIT0gY3J0Y19zdGF0ZS0+bW9kZS52ZGlzcGxh eSkgeworCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIGZyYW1lYnVmZmVyIHNpemUgJXV4JXVcbiIs CisJCQkgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ICE9IERSTV9GT1JNQVRfWFJHQjg4ODgpIHsKKwkJ c3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CisKKwkJRFJNX0RFQlVHX0tN UygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsCisJCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9u YW1lKGZiLT5mb3JtYXQtPmZvcm1hdCwKKwkJCQkJCSAgJmZvcm1hdF9uYW1lKSk7CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCS8vIFRPRE86IERvIHdlIG5lZWQgdG8gdmFsaWRhdGUgZWFjaCBw bGFuZT8KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVy X2Z1bmNzIHZrbXNfZW5jb2Rlcl9mdW5jcyA9IHsKIAkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2Ns ZWFudXAsCiB9OwpAQCAtMzIsOCArMTEyLDU3IEBAIHN0YXRpYyBpbnQgdmttc19jb25uX2dldF9t b2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldHVybiBjb3VudDsKIH0K IAorc3RhdGljIHZvaWQgdmttc19td19hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uLAorCQkJCSAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlKQoreworCXN0 cnVjdCB2a21zX2RldmljZSAqdmttc2RldiA9IGRybV9kZXZpY2VfdG9fdmttc19kZXZpY2UoY29u bi0+ZGV2KTsKKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dHB1dCA9ICZ2a21zZGV2LT5vdXRwdXQ7 CisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICptd19jb25uID0gJm91dHB1dC0+bXdf Y29ubmVjdG9yOworCisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUgPSBt d19jb25uLT5iYXNlLnN0YXRlOworCisJc3RydWN0IHZrbXNfY29ubmVjdG9yX3N0YXRlICp2a21z X2Nvbm4gPSB0b193Yl9zdGF0ZShjb25uX3N0YXRlKTsKKwlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAq cHJpbWFyeV9wbGFuZSA9IE5VTEw7CisJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CisKKwlpZiAo IWNvbm5fc3RhdGUpCisJCXJldHVybjsKKworCWlmIChjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i ICYmIGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZiKSB7CisJCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmI7CisJCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7CisJCXN0cnVj dCB2a21zX2dlbV9vYmplY3QgKnZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShnZW1fb2Jq KTsKKworCQl2a21zX2Nvbm4tPndyaXRlYmFja192YWRkciA9IGt6YWxsb2Modmttc19vYmotPmdl bS5zaXplLCBHRlBfS0VSTkVMKTsKKworCQlkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYihtd19jb25u LCBjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKTsKKwkJY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pv YiA9IE5VTEw7CisKKwkJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBjb25uLT5kZXYpIHsKKwkJ CXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2cGxhbmVfc3RhdGU7CisJCQlzdHJ1Y3Qgdmttc19j cmNfZGF0YSAqY3JjX2RhdGE7CisKKwkJCXZwbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3Rh dGUocGxhbmUtPnN0YXRlKTsKKwkJCWNyY19kYXRhID0gdnBsYW5lX3N0YXRlLT5jcmNfZGF0YTsK KworCQkJaWYgKGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3JlZmNvdW50KCZjcmNfZGF0YS0+ZmIpID09 IDApCisJCQkJY29udGludWU7CisKKwkJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKQorCQkJCXByaW1hcnlfcGxhbmUgPSBjcmNfZGF0YTsKKwkJfQorCisJCW1lbWNw eSh2a21zX2Nvbm4tPndyaXRlYmFja192YWRkciwgdmttc19vYmotPnZhZGRyLCB2a21zX29iai0+ Z2VtLnNpemUpOworCX0KK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hl bHBlcl9mdW5jcyB2a21zX2Nvbm5faGVscGVyX2Z1bmNzID0gewogCS5nZXRfbW9kZXMgICAgPSB2 a21zX2Nvbm5fZ2V0X21vZGVzLAorCS5hdG9taWNfY29tbWl0ID0gdmttc19td19hdG9taWNfY29t bWl0LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mg dmttc19lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2NoZWNrID0gdmttc19td19l bmNvZGVyX2F0b21pY19jaGVjaywKIH07CiAKIGludCB2a21zX291dHB1dF9pbml0KHN0cnVjdCB2 a21zX2RldmljZSAqdmttc2RldikKQEAgLTYyLDggKzE5MSwyNCBAQCBpbnQgdmttc19vdXRwdXRf aW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpCiAJaWYgKHJldCkKIAkJZ290byBlcnJf Y3J0YzsKIAotCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3RvciwgJnZrbXNf Y29ubmVjdG9yX2Z1bmNzLAotCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCk7CisJaWYg KHZrbXNkZXYtPm91dHB1dC53cml0ZWJhY2tfZW5hYmxlZCkgeworCQljb25zdCB1MzIgKmZvcm1h dHMgPSB2a21zX2Zvcm1hdHM7CisJCWludCBuX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHZrbXNfZm9y bWF0cyk7CisJCXN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yOwor CisJCXZrbXNkZXYtPm91dHB1dC5td19jb25uZWN0b3IuZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9 IDE7CisKKwkJd2JfY29ubmVjdG9yID0gJnZrbXNkZXYtPm91dHB1dC5td19jb25uZWN0b3I7CisJ CWNvbm5lY3RvciA9ICZ3Yl9jb25uZWN0b3ItPmJhc2U7CisJCXJldCA9IGRybV93cml0ZWJhY2tf Y29ubmVjdG9yX2luaXQoZGV2LCB3Yl9jb25uZWN0b3IsCisJCQkJCQkgICAmdmttc19jb25uZWN0 b3JfZnVuY3MsCisJCQkJCQkgICAmdmttc19lbmNvZGVyX2hlbHBlcl9mdW5jcywKKwkJCQkJCSAg IGZvcm1hdHMsIG5fZm9ybWF0cyk7CisJfSBlbHNlIHsKKwkJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9p bml0KGRldiwgY29ubmVjdG9yLCAmdmttc19jb25uZWN0b3JfZnVuY3MsCisJCQkJCSBEUk1fTU9E RV9DT05ORUNUT1JfVklSVFVBTCk7CisJfQorCiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoIkZh aWxlZCB0byBpbml0IGNvbm5lY3RvclxuIik7CiAJCWdvdG8gZXJyX2Nvbm5lY3RvcjsKQEAgLTc3 LDE4ICsyMjIsMjEgQEAgaW50IHZrbXNfb3V0cHV0X2luaXQoc3RydWN0IHZrbXNfZGV2aWNlICp2 a21zZGV2KQogCQlnb3RvIGVycl9jb25uZWN0b3JfcmVnaXN0ZXI7CiAJfQogCi0JcmV0ID0gZHJt X2VuY29kZXJfaW5pdChkZXYsIGVuY29kZXIsICZ2a21zX2VuY29kZXJfZnVuY3MsCi0JCQkgICAg ICAgRFJNX01PREVfRU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9F UlJPUigiRmFpbGVkIHRvIGluaXQgZW5jb2RlclxuIik7Ci0JCWdvdG8gZXJyX2VuY29kZXI7Ci0J fQogCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKIAotCXJldCA9IGRybV9jb25uZWN0b3Jf YXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9F UlJPUigiRmFpbGVkIHRvIGF0dGFjaCBjb25uZWN0b3IgdG8gZW5jb2RlclxuIik7Ci0JCWdvdG8g ZXJyX2F0dGFjaDsKKwlpZiAoIXZrbXNkZXYtPm91dHB1dC53cml0ZWJhY2tfZW5hYmxlZCkgewor CQlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwgJnZrbXNfZW5jb2Rlcl9mdW5j cywKKwkJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKKwkJaWYgKHJl dCkgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdCBlbmNvZGVyXG4iKTsKKwkJCWdvdG8g ZXJyX2VuY29kZXI7CisJCX0KKworCQlyZXQgPSBkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVy KGNvbm5lY3RvciwgZW5jb2Rlcik7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigiRmFpbGVk IHRvIGF0dGFjaCBjb25uZWN0b3IgdG8gZW5jb2RlclxuIik7CisJCQlnb3RvIGVycl9hdHRhY2g7 CisJCX0KIAl9CiAKIAlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfcGxhbmUuYwppbmRleCAwZTY3ZDJkNDJmMGMuLjE0MjU5ZmZlNDdkOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0cnVjdCBkcm1fcGxhbmUgKnZr bXNfcGxhbmVfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYsCiAJCWZ1bmNzID0gJnZr bXNfcHJpbWFyeV9oZWxwZXJfZnVuY3M7CiAJfQogCi0JcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFu ZV9pbml0KGRldiwgcGxhbmUsIDAsCisJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRl diwgcGxhbmUsIDEsCiAJCQkJICAgICAgICZ2a21zX3BsYW5lX2Z1bmNzLAogCQkJCSAgICAgICBm b3JtYXRzLCBuZm9ybWF0cywKIAkJCQkgICAgICAgTlVMTCwgdHlwZSwgTlVMTCk7Ci0tIAoyLjIx LjAKCgotLSAKUm9kcmlnbyBTaXF1ZWlyYQpodHRwczovL3NpcXVlaXJhLnRlY2gKR3JhZHVhdGUg U3R1ZGVudApEZXBhcnRtZW50IG9mIENvbXB1dGVyIFNjaWVuY2UKVW5pdmVyc2l0eSBvZiBTw6Nv IFBhdWxvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==