From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vince Hsu Subject: [RESEND PATCH nouveau 3/3] volt: add support for GK20A Date: Fri, 28 Nov 2014 19:13:00 +0800 Message-ID: <1417173180-21726-3-git-send-email-vinceh@nvidia.com> References: <1417173180-21726-1-git-send-email-vinceh@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1417173180-21726-1-git-send-email-vinceh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org, thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org, bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, martin.peres-GANU6spQydw@public.gmane.org Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-tegra@vger.kernel.org VGhlIHZvbHRhZ2UgdmFsdWUgYXJlIGNhbGN1bGF0ZWQgYnkgdGhlIGhhcmR3YXJlIGNoYXJhY3Rl cml6ZWQKcmVzdWx0LgoKU2lnbmVkLW9mZi1ieTogVmluY2UgSHN1IDx2aW5jZWhAbnZpZGlhLmNv bT4KLS0tCgpSZXNlbmQgdGhpcyBwYXRjaCB3aXRoIHRoZSBmdXNlIGNoYW5nZSBhbmQgcHJvcGVy IHBhdGNoIHByZWZpeApwZXIgVGhpZXJyeSdzIHJlcXVlc3QuCgogZHJtL0tidWlsZCAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBkcm0vY29yZS9zdWJkZXYvdm9sdC9nazIwYS5jIHwgICAxICsK IG52a20vZW5naW5lL2RldmljZS9udmUwLmMgICAgfCAgIDEgKwogbnZrbS9pbmNsdWRlL3N1YmRl di92b2x0LmggICB8ICAgMSArCiBudmttL3N1YmRldi9jbG9jay9nazIwYS5jICAgIHwgIDE1ICsr KysKIG52a20vc3ViZGV2L3ZvbHQvZ2syMGEuYyAgICAgfCAyMDIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9jb3JlL3N1YmRldi92b2x0L2drMjBhLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi92b2x0L2drMjBhLmMKCmRpZmYgLS1naXQgYS9k cm0vS2J1aWxkIGIvZHJtL0tidWlsZAppbmRleCA3MjhiYzViNjZiMjkuLjdjNDllNjY1NTA2NiAx MDA2NDQKLS0tIGEvZHJtL0tidWlsZAorKysgYi9kcm0vS2J1aWxkCkBAIC0yMjUsNiArMjI1LDcg QEAgbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L3ZtL252YzAubwogbm91dmVhdS15ICs9IGNvcmUv c3ViZGV2L3ZvbHQvYmFzZS5vCiBub3V2ZWF1LXkgKz0gY29yZS9zdWJkZXYvdm9sdC9ncGlvLm8K IG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L252NDAubworbm91dmVhdS15ICs9IGNvcmUv c3ViZGV2L3ZvbHQvZ2syMGEubwogCiBub3V2ZWF1LXkgKz0gY29yZS9lbmdpbmUvZmFsY29uLm8K IG5vdXZlYXUteSArPSBjb3JlL2VuZ2luZS94dGVuc2EubwpkaWZmIC0tZ2l0IGEvZHJtL2NvcmUv c3ViZGV2L3ZvbHQvZ2syMGEuYyBiL2RybS9jb3JlL3N1YmRldi92b2x0L2drMjBhLmMKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi4yODk0ZWIxZWRlMTMKLS0tIC9kZXYv bnVsbAorKysgYi9kcm0vY29yZS9zdWJkZXYvdm9sdC9nazIwYS5jCkBAIC0wLDAgKzEgQEAKKy4u Ly4uLy4uLy4uL252a20vc3ViZGV2L3ZvbHQvZ2syMGEuYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL252a20vZW5naW5lL2RldmljZS9udmUwLmMgYi9udmttL2VuZ2lu ZS9kZXZpY2UvbnZlMC5jCmluZGV4IGIxYjJlNDg0ZWNmYS4uNjc0ZGExZjA5NWIyIDEwMDY0NAot LS0gYS9udmttL2VuZ2luZS9kZXZpY2UvbnZlMC5jCisrKyBiL252a20vZW5naW5lL2RldmljZS9u dmUwLmMKQEAgLTE3OSw2ICsxNzksNyBAQCBudmUwX2lkZW50aWZ5KHN0cnVjdCBub3V2ZWF1X2Rl dmljZSAqZGV2aWNlKQogCQlkZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVfR1IgICAgIF0gPSAg Z2syMGFfZ3JhcGhfb2NsYXNzOwogCQlkZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVfQ09QWTIg IF0gPSAmbnZlMF9jb3B5Ml9vY2xhc3M7CiAJCWRldmljZS0+b2NsYXNzW05WREVWX0VOR0lORV9Q RVJGTU9OXSA9ICZudmUwX3BlcmZtb25fb2NsYXNzOworCQlkZXZpY2UtPm9jbGFzc1tOVkRFVl9T VUJERVZfVk9MVCAgIF0gPSAmZ2syMGFfdm9sdF9vY2xhc3M7CiAJCWJyZWFrOwogCWNhc2UgMHhm MDoKIAkJZGV2aWNlLT5jbmFtZSA9ICJHSzExMCI7CmRpZmYgLS1naXQgYS9udmttL2luY2x1ZGUv c3ViZGV2L3ZvbHQuaCBiL252a20vaW5jbHVkZS9zdWJkZXYvdm9sdC5oCmluZGV4IDgyMGI2MmZm ZDc1Yi4uNjdkYjVlNTg4ODBkIDEwMDY0NAotLS0gYS9udmttL2luY2x1ZGUvc3ViZGV2L3ZvbHQu aAorKysgYi9udmttL2luY2x1ZGUvc3ViZGV2L3ZvbHQuaApAQCAtNTIsNiArNTIsNyBAQCBpbnQg IF9ub3V2ZWF1X3ZvbHRfaW5pdChzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKik7CiAjZGVmaW5lIF9u b3V2ZWF1X3ZvbHRfZmluaSBfbm91dmVhdV9zdWJkZXZfZmluaQogCiBleHRlcm4gc3RydWN0IG5v dXZlYXVfb2NsYXNzIG52NDBfdm9sdF9vY2xhc3M7CitleHRlcm4gc3RydWN0IG5vdXZlYXVfb2Ns YXNzIGdrMjBhX3ZvbHRfb2NsYXNzOwogCiBpbnQgbm91dmVhdV92b2x0Z3Bpb19pbml0KHN0cnVj dCBub3V2ZWF1X3ZvbHQgKik7CiBpbnQgbm91dmVhdV92b2x0Z3Bpb19nZXQoc3RydWN0IG5vdXZl YXVfdm9sdCAqKTsKZGlmZiAtLWdpdCBhL252a20vc3ViZGV2L2Nsb2NrL2drMjBhLmMgYi9udmtt L3N1YmRldi9jbG9jay9nazIwYS5jCmluZGV4IDgyYWJiZWEyYmUxMi4uZmI0ZmFkMzc0YmRkIDEw MDY0NAotLS0gYS9udmttL3N1YmRldi9jbG9jay9nazIwYS5jCisrKyBiL252a20vc3ViZGV2L2Ns b2NrL2drMjBhLmMKQEAgLTQ3MCw3NiArNDcwLDkxIEBAIGdrMjBhX3BzdGF0ZXNbXSA9IHsKIAl7 CiAJCS5iYXNlID0gewogCQkJLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA3MjAwMCwKKwkJCS52 b2x0YWdlID0gMCwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Ns a19zcmNfZ3BjXSA9IDEwODAwMCwKKwkJCS52b2x0YWdlID0gMSwKIAkJfSwKIAl9LAogCXsKIAkJ LmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDE4MDAwMCwKKwkJCS52b2x0 YWdlID0gMiwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19z cmNfZ3BjXSA9IDI1MjAwMCwKKwkJCS52b2x0YWdlID0gMywKIAkJfSwKIAl9LAogCXsKIAkJLmJh c2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDMyNDAwMCwKKwkJCS52b2x0YWdl ID0gNCwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNf Z3BjXSA9IDM5NjAwMCwKKwkJCS52b2x0YWdlID0gNSwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2Ug PSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDQ2ODAwMCwKKwkJCS52b2x0YWdlID0g NiwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3Bj XSA9IDU0MDAwMCwKKwkJCS52b2x0YWdlID0gNywKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7 CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDYxMjAwMCwKKwkJCS52b2x0YWdlID0gOCwK IAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9 IDY0ODAwMCwKKwkJCS52b2x0YWdlID0gOSwKIAkJfSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJ CQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDY4NDAwMCwKKwkJCS52b2x0YWdlID0gMTAsCiAJ CX0sCiAJfSwKIAl7CiAJCS5iYXNlID0gewogCQkJLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA3 MDgwMDAsCisJCQkudm9sdGFnZSA9IDExLAogCQl9LAogCX0sCiAJewogCQkuYmFzZSA9IHsKIAkJ CS5kb21haW5bbnZfY2xrX3NyY19ncGNdID0gNzU2MDAwLAorCQkJLnZvbHRhZ2UgPSAxMiwKIAkJ fSwKIAl9LAogCXsKIAkJLmJhc2UgPSB7CiAJCQkuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDgw NDAwMCwKKwkJCS52b2x0YWdlID0gMTMsCiAJCX0sCiAJfSwKIAl7CiAJCS5iYXNlID0gewogCQkJ LmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA4NTIwMDAsCisJCQkudm9sdGFnZSA9IDE0LAogCQl9 LAogCX0sCiB9OwpkaWZmIC0tZ2l0IGEvbnZrbS9zdWJkZXYvdm9sdC9nazIwYS5jIGIvbnZrbS9z dWJkZXYvdm9sdC9nazIwYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uODczODU5NjZlNjdmCi0tLSAvZGV2L251bGwKKysrIGIvbnZrbS9zdWJkZXYvdm9sdC9nazIw YS5jCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBOVklESUEg Q09SUE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5j bHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVy Lmg+CisjaW5jbHVkZSA8c29jL3RlZ3JhL2Z1c2UuaD4KKworI2luY2x1ZGUgPG5vdXZlYXVfcGxh dGZvcm0uaD4KKyNpbmNsdWRlIDxzdWJkZXYvdm9sdC5oPgorCitzdHJ1Y3QgY3ZiX2NvZWYgewor CWludCBjMDsKKwlpbnQgYzE7CisJaW50IGMyOworCWludCBjMzsKKwlpbnQgYzQ7CisJaW50IGM1 OworfTsKKworc3RydWN0IGdrMjBhX3ZvbHRfcHJpdiB7CisJc3RydWN0IG5vdXZlYXVfdm9sdCBi YXNlOworCXN0cnVjdCByZWd1bGF0b3IgKnZkZDsKK307CisKK2NvbnN0IHN0cnVjdCBjdmJfY29l ZiBnazIwYV9jdmJfY29lZltdID0geworCS8qIE1IeiwgICAgICAgIGMwLCAgICAgYzEsICAgYzIs ICAgIGMzLCAgICAgYzQsICAgYzUgKi8KKwkvKiAgNzIgKi8geyAxMjA5ODg2LCAtMzY0NjgsICA1 MTUsICAgNDE3LCAtMTMxMjMsICAyMDN9LAorCS8qIDEwOCAqLyB7IDExMzA4MDQsIC0yNzY1OSwg IDI5NiwgICAyOTgsIC0xMDgzNCwgIDIyMX0sCisJLyogMTgwICovIHsgMTE2Mjg3MSwgLTI3MTEw LCAgMjQ3LCAgIDIzOCwgLTEwNjgxLCAgMjY4fSwKKwkvKiAyNTIgKi8geyAxMjIwNDU4LCAtMjg2 NTQsICAyNDcsICAgMTc5LCAtMTAzNzYsICAyOTh9LAorCS8qIDMyNCAqLyB7IDEyODA5NTMsIC0z MDIwNCwgIDI0NywgICAxMTksICAtOTc2NiwgIDMwNH0sCisJLyogMzk2ICovIHsgMTM0NDU0Nywg LTMxNzc3LCAgMjQ3LCAgIDExOSwgIC04NTQ1LCAgMjkyfSwKKwkvKiA0NjggKi8geyAxNDIwMTY4 LCAtMzQyMjcsICAyNjksICAgIDYwLCAgLTcxNzIsICAyNTZ9LAorCS8qIDU0MCAqLyB7IDE0OTA3 NTcsIC0zNTk1NSwgIDI3NCwgICAgNjAsICAtNTE4OCwgIDE5N30sCisJLyogNjEyICovIHsgMTU5 OTExMiwgLTQyNTgzLCAgMzk4LCAgICAgMCwgIC0xODMxLCAgMTE5fSwKKwkvKiA2NDggKi8geyAx MzY2OTg2LCAtMTY0NTksIC0yNzQsICAgICAwLCAgLTMyMDQsICAgNzJ9LAorCS8qIDY4NCAqLyB7 IDEzOTE4ODQsIC0xNzA3OCwgLTI3NCwgICAtNjAsICAtMTUyNiwgICAzMH0sCisJLyogNzA4ICov IHsgMTQxNTUyMiwgLTE3NDk3LCAtMjc0LCAgIC02MCwgICAtNDU4LCAgICAwfSwKKwkvKiA3NTYg Ki8geyAxNDY0MDYxLCAtMTgzMzEsIC0yNzQsICAtMTE5LCAgIDE4MzEsICAtNzJ9LAorCS8qIDgw NCAqLyB7IDE1MjQyMjUsIC0yMDA2NCwgLTI1NCwgIC0xMTksICAgNDI3MiwgLTE1NX0sCisJLyog ODUyICovIHsgMTYwODQxOCwgLTIxNjQzLCAtMjY5LCAgICAgMCwgICAgNzYzLCAgLTQ4fSwKK307 CisKKy8qKgorICogY3ZiX212ID0gKChjMiAqIHNwZWVkbyAvIHNfc2NhbGUgKyBjMSkgKiBzcGVl ZG8gLyBzX3NjYWxlICsgYzApCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitnazIwYV92b2x0X2dl dF9jdmJfdm9sdGFnZShpbnQgc3BlZWRvLCBpbnQgc19zY2FsZSwKKwkJY29uc3Qgc3RydWN0IGN2 Yl9jb2VmICpjb2VmKQoreworCWludCBtdjsKKworCW12ID0gRElWX1JPVU5EX0NMT1NFU1QoY29l Zi0+YzIgKiBzcGVlZG8sIHNfc2NhbGUpOworCW12ID0gRElWX1JPVU5EX0NMT1NFU1QoKG12ICsg Y29lZi0+YzEpICogc3BlZWRvLCBzX3NjYWxlKSArIGNvZWYtPmMwOworCXJldHVybiBtdjsKK30K KworLyoqCisgKiBjdmJfdF9tdiA9CisgKiAoKGMyICogc3BlZWRvIC8gc19zY2FsZSArIGMxKSAq IHNwZWVkbyAvIHNfc2NhbGUgKyBjMCkgKworICogKChjMyAqIHNwZWVkbyAvIHNfc2NhbGUgKyBj NCArIGM1ICogVCAvIHRfc2NhbGUpICogVCAvIHRfc2NhbGUpCisgKi8KK3N0YXRpYyBpbmxpbmUg aW50CitnazIwYV92b2x0X2dldF9jdmJfdF92b2x0YWdlKGludCBzcGVlZG8sIGludCB0ZW1wLCBp bnQgc19zY2FsZSwgaW50IHRfc2NhbGUsCisJCWNvbnN0IHN0cnVjdCBjdmJfY29lZiAqY29lZikK K3sKKwlpbnQgY3ZiX212LCBtdjsKKworCWN2Yl9tdiA9IGdrMjBhX3ZvbHRfZ2V0X2N2Yl92b2x0 YWdlKHNwZWVkbywgc19zY2FsZSwgY29lZik7CisKKwltdiA9IERJVl9ST1VORF9DTE9TRVNUKGNv ZWYtPmMzICogc3BlZWRvLCBzX3NjYWxlKSArIGNvZWYtPmM0ICsKKwkJRElWX1JPVU5EX0NMT1NF U1QoY29lZi0+YzUgKiB0ZW1wLCB0X3NjYWxlKTsKKwltdiA9IERJVl9ST1VORF9DTE9TRVNUKG12 ICogdGVtcCwgdF9zY2FsZSkgKyBjdmJfbXY7CisJcmV0dXJuIG12OworfQorCitzdGF0aWMgaW50 CitnazIwYV92b2x0X2NhbGNfdm9sdGFnZShjb25zdCBzdHJ1Y3QgY3ZiX2NvZWYgKmNvZWYpCit7 CisJaW50IHNwZWVkbywgbXY7CisKKwlzcGVlZG8gPSB0ZWdyYV9za3VfaW5mby5ncHVfc3BlZWRv X3ZhbHVlOworCisJbXYgPSBnazIwYV92b2x0X2dldF9jdmJfdF92b2x0YWdlKHNwZWVkbywgLTEw LCAxMDAsIDEwLCBjb2VmKTsKKwltdiA9IERJVl9ST1VORF9VUChtdiwgMTAwMCk7CisKKwlyZXR1 cm4gbXYgKiAxMDAwOworfQorCitzdGF0aWMgaW50CitnazIwYV92b2x0X3ZpZF9nZXQoc3RydWN0 IG5vdXZlYXVfdm9sdCAqdm9sdCkKK3sKKwlzdHJ1Y3QgZ2syMGFfdm9sdF9wcml2ICpwcml2ID0g KHZvaWQgKil2b2x0OworCWludCBpLCB1djsKKworCXV2ID0gcmVndWxhdG9yX2dldF92b2x0YWdl KHByaXYtPnZkZCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgdm9sdC0+dmlkX25yOyBpKyspCisJCWlm ICh2b2x0LT52aWRbaV0udXYgPj0gdXYpCisJCQlyZXR1cm4gaTsKKworCXJldHVybiAtRUlOVkFM OworfQorCitzdGF0aWMgaW50CitnazIwYV92b2x0X3ZpZF9zZXQoc3RydWN0IG5vdXZlYXVfdm9s dCAqdm9sdCwgdTggdmlkKQoreworCXN0cnVjdCBnazIwYV92b2x0X3ByaXYgKnByaXYgPSAodm9p ZCAqKXZvbHQ7CisKKwludl9kZWJ1Zyh2b2x0LCAic2V0IHZvbHRhZ2UgYXMgJWR1dlxuIiwgdm9s dC0+dmlkW3ZpZF0udXYpOworCXJldHVybiByZWd1bGF0b3Jfc2V0X3ZvbHRhZ2UocHJpdi0+dmRk LCB2b2x0LT52aWRbdmlkXS51diwgMTIwMDAwMCk7Cit9CisKK3N0YXRpYyBpbnQKK2drMjBhX3Zv bHRfc2V0X2lkKHN0cnVjdCBub3V2ZWF1X3ZvbHQgKnZvbHQsIHU4IGlkLCBpbnQgY29uZGl0aW9u KQoreworCXN0cnVjdCBnazIwYV92b2x0X3ByaXYgKnByaXYgPSAodm9pZCAqKXZvbHQ7CisJaW50 IHByZXZfdXYgPSByZWd1bGF0b3JfZ2V0X3ZvbHRhZ2UocHJpdi0+dmRkKTsKKwlpbnQgdGFyZ2V0 X3V2ID0gdm9sdC0+dmlkW2lkXS51djsKKwlpbnQgcmV0OworCisJbnZfZGVidWcodm9sdCwgInBy ZXY9JWQsIHRhcmdldD0lZCwgY29uZGl0aW9uPSVkXG4iLAorCQkJcHJldl91diwgdGFyZ2V0X3V2 LCBjb25kaXRpb24pOworCWlmICghY29uZGl0aW9uIHx8CisJCShjb25kaXRpb24gPCAwICYmIHRh cmdldF91diA8IHByZXZfdXYpIHx8CisJCShjb25kaXRpb24gPiAwICYmIHRhcmdldF91diA+IHBy ZXZfdXYpKSB7CisJCXJldCA9IGdrMjBhX3ZvbHRfdmlkX3NldCh2b2x0LCB2b2x0LT52aWRbaWRd LnZpZCk7CisJfSBlbHNlIHsKKwkJcmV0ID0gMDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50CitnazIwYV92b2x0X2N0b3Ioc3RydWN0IG5vdXZlYXVfb2JqZWN0ICpwYXJlbnQs IHN0cnVjdCBub3V2ZWF1X29iamVjdCAqZW5naW5lLAorCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9v Y2xhc3MgKm9jbGFzcywgdm9pZCAqZGF0YSwgdTMyIHNpemUsCisJICAgICAgIHN0cnVjdCBub3V2 ZWF1X29iamVjdCAqKnBvYmplY3QpCit7CisJc3RydWN0IGdrMjBhX3ZvbHRfcHJpdiAqcHJpdjsK KwlzdHJ1Y3Qgbm91dmVhdV92b2x0ICp2b2x0OworCXN0cnVjdCBub3V2ZWF1X3BsYXRmb3JtX2Rl dmljZSAqcGxhdDsKKwlpbnQgaSwgcmV0LCB1djsKKworCXJldCA9IG5vdXZlYXVfdm9sdF9jcmVh dGUocGFyZW50LCBlbmdpbmUsIG9jbGFzcywgJnByaXYpOworCSpwb2JqZWN0ID0gbnZfb2JqZWN0 KHByaXYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl2b2x0ID0gJnByaXYtPmJhc2U7 CisKKwlwbGF0ID0gbnZfZGV2aWNlX3RvX3BsYXRmb3JtKG52X2RldmljZShwYXJlbnQpKTsKKwor CXV2ID0gcmVndWxhdG9yX2dldF92b2x0YWdlKHBsYXQtPmdwdS0+dmRkKTsKKwludl9pbmZvKHBy aXYsICJUaGUgZGVmYXVsdCB2b2x0YWdlIGlzICVkdVZcbiIsIHV2KTsKKworCXByaXYtPnZkZCA9 IHBsYXQtPmdwdS0+dmRkOworCXByaXYtPmJhc2UudmlkX2dldCA9IGdrMjBhX3ZvbHRfdmlkX2dl dDsKKwlwcml2LT5iYXNlLnZpZF9zZXQgPSBnazIwYV92b2x0X3ZpZF9zZXQ7CisJcHJpdi0+YmFz ZS5zZXRfaWQgPSBnazIwYV92b2x0X3NldF9pZDsKKworCXZvbHQtPnZpZF9uciA9IEFSUkFZX1NJ WkUoZ2syMGFfY3ZiX2NvZWYpOworCW52X2RlYnVnKHByaXYsICIlcyAtIHZpZF9uciA9ICVkXG4i LCBfX2Z1bmNfXywgdm9sdC0+dmlkX25yKTsKKwlmb3IgKGkgPSAwOyBpIDwgdm9sdC0+dmlkX25y OyBpKyspIHsKKwkJdm9sdC0+dmlkW2ldLnZpZCA9IGk7CisJCXZvbHQtPnZpZFtpXS51diA9IGdr MjBhX3ZvbHRfY2FsY192b2x0YWdlKCZnazIwYV9jdmJfY29lZltpXSk7CisJCW52X2RlYnVnKHBy aXYsICIlMmQ6IHZpZD0lZCwgdXY9JWRcbiIsIGksIHZvbHQtPnZpZFtpXS52aWQsCisJCQkJCXZv bHQtPnZpZFtpXS51dik7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBub3V2ZWF1X29j bGFzcworZ2syMGFfdm9sdF9vY2xhc3MgPSB7CisJLmhhbmRsZSA9IE5WX1NVQkRFVihWT0xULCAw eGVhKSwKKwkub2Z1bmNzID0gJihzdHJ1Y3Qgbm91dmVhdV9vZnVuY3MpIHsKKwkJLmN0b3IgPSBn azIwYV92b2x0X2N0b3IsCisJCS5kdG9yID0gX25vdXZlYXVfdm9sdF9kdG9yLAorCQkuaW5pdCA9 IF9ub3V2ZWF1X3ZvbHRfaW5pdCwKKwkJLmZpbmkgPSBfbm91dmVhdV92b2x0X2ZpbmksCisJfSwK K307Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK