From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: drm: WARNING in ioremap_wc Date: Mon, 29 Aug 2016 08:05:05 +0200 Message-ID: <20160829060505.GF10980@phenom.ffwll.local> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0DE846E090 for ; Mon, 29 Aug 2016 06:05:10 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id i5so8048655wmg.2 for ; Sun, 28 Aug 2016 23:05:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dmitry Vyukov Cc: LKML , dri-devel@lists.freedesktop.org, Kostya Serebryany , Ingo Molnar , Alexander Potapenko , syzkaller , Thomas Gleixner List-Id: dri-devel@lists.freedesktop.org T24gU3VuLCBBdWcgMjgsIDIwMTYgYXQgMDc6MzY6NTlQTSArMDIwMCwgRG1pdHJ5IFZ5dWtvdiB3 cm90ZToKPiBIZWxsbywKPiAKPiBUaGUgZm9sbG93aW5nIHByb2dyYW0gdHJpZ2dlcnMgV0FSTklO RyBpbiBpb3JlbWFwX3djOgoKWXVwLCB0aGF0IHNob3VsZCBhbHNvIGJlIGZpeGVkIGluIGxpbnV4 LW5leHQuIFByb2JhYmx5IGJldHRlciB0byBub3QKcmVwb3J0IG1vcmUgZm9yIDQuOC1yYyBrZXJu ZWxzIGZvciBub3cgOy0pCgpJZiB5b3UgaGF2ZSBzb21lIHRpbWUgdG8gdGVzdCwgeW91IG5lZWQg dG8gY2hlcnJ5IHBpY2sgdGhlIGZvbGxvd2luZyB0d28KcGF0Y2hlcyBJIHRoaW5rOgoKZmE1Mzg2 NDU5ZjA2ICgiZHJtOiBVc2VkIERSTV9MRUdBQ1kgZm9yIGFsbCBsZWdhY3kgZnVuY3Rpb25zIikK M2NiZjZhNWRlYjJmICgiZHJtOiBNYXJrIHVwIGxlZ2FjeS9kcmkxIGRyaXZlcnMgd2l0aCBEUk1f TEVHQUNZIikKCklmIHRoYXQncyBjb25maXJtZWQgd2UgY2FuIGNoZXJyeS1waWNrIHRoZW0gb3Zl ciB0byAtZml4ZXMuCi1EYW5pZWwKCj4gCj4gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0t LS0tLS0tCj4gTG9hZFBpbjoga2VybmVsLW1vZHVsZSBkZW5pZWQgb2JqPSIvbWVtZmQ6IChkZWxl dGVkKSIgcGlkPTEyMDYxCj4gY21kbGluZT0iL3RtcC9zeXotZXhlY3V0b3IiCj4gV0FSTklORzog Q1BVOiAxIFBJRDogMTIwNTYgYXQgYXJjaC94ODYvbW0vaW9yZW1hcC5jOjEyMVs8ICAgICAgbm9u ZQo+ICAgPl0gX19pb3JlbWFwX2NhbGxlcisweDM0OC8weDZiMCBhcmNoL3g4Ni9tbS9pb3JlbWFw LmM6MTIwCj4gTG9hZFBpbjoga2VybmVsLW1vZHVsZSBkZW5pZWQgb2JqPSIvbWVtZmQ6IChkZWxl dGVkKSIgcGlkPTEyMDYzCj4gY21kbGluZT0iL3RtcC9zeXotZXhlY3V0b3IiCj4gaW9yZW1hcCBv biBSQU0gYXQgMHgwMDAwMDAwMDIwMDY4MDAwIC0gMHgwMDAwMDAwMDIwMDY4ZmZmCj4gS2VybmVs IHBhbmljIC0gbm90IHN5bmNpbmc6IHBhbmljX29uX3dhcm4gc2V0IC4uLgo+IAo+IENQVTogMSBQ SUQ6IDEyMDU2IENvbW06IHN5ei1leGVjdXRvciBOb3QgdGFpbnRlZCA0LjguMC1yYzMrICMzMgo+ IEhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBGWCArIFBJSVgsIDE5OTYpLCBC SU9TIEJvY2hzIDAxLzAxLzIwMTEKPiAgZmZmZmZmZmY4ODRiODI4MCBmZmZmODgwMDI5NTc3N2Yw IGZmZmZmZmZmODJkMWIyMzkgZmZmZmZmZmYwMGJkNjAwMAo+ICBmZmZmZmJmZmYxMDk3MDUwIGZm ZmZmZmZmODZlOGVlYzAgZmZmZjg4MDAyOTU3NzhjOCBmZmZmZmZmZjg2ZTdhZDAwCj4gIGRmZmZm YzAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwOSBmZmZmODgwMDI5NTc3OGI4IGZmZmZmZmZmODE2 YWI0ZTMKPiBDYWxsIFRyYWNlOgo+ICBbPCAgICAgaW5saW5lICAgICA+XSBfX2R1bXBfc3RhY2sg bGliL2R1bXBfc3RhY2suYzoxNQo+ICBbPGZmZmZmZmZmODJkMWIyMzk+XSBkdW1wX3N0YWNrKzB4 MTJlLzB4MTg1IGxpYi9kdW1wX3N0YWNrLmM6NTEKPiAgWzxmZmZmZmZmZjgxNmFiNGUzPl0gcGFu aWMrMHgxZTQvMHgzZWYga2VybmVsL3BhbmljLmM6MTUzCj4gIFs8ZmZmZmZmZmY4MTM4MDhmND5d IF9fd2FybisweDFjNC8weDFlMCBrZXJuZWwvcGFuaWMuYzo1MDkKPiAgWzxmZmZmZmZmZjgxMzgw OWJjPl0gd2Fybl9zbG93cGF0aF9mbXQrMHhhYy8weGQwIGtlcm5lbC9wYW5pYy5jOjUzMgo+ICBb PGZmZmZmZmZmODEyOWExYzg+XSBfX2lvcmVtYXBfY2FsbGVyKzB4MzQ4LzB4NmIwIGFyY2gveDg2 L21tL2lvcmVtYXAuYzoxMjAKPiAgWzxmZmZmZmZmZjgxMjlhNWI2Pl0gaW9yZW1hcF93YysweDI2 LzB4MzAgYXJjaC94ODYvbW0vaW9yZW1hcC5jOjI5MAo+ICBbPGZmZmZmZmZmODMzZmY3MGU+XSBk cm1fYWRkbWFwX2NvcmUrMHhmMWUvMHgxNmMwCj4gZHJpdmVycy9ncHUvZHJtL2RybV9idWZzLmM6 MjEzCj4gIFs8ZmZmZmZmZmY4MzQwMzI3YT5dIGRybV9sZWdhY3lfYWRkbWFwX2lvY3RsKzB4MWNh LzB4MzQwCj4gZHJpdmVycy9ncHUvZHJtL2RybV9idWZzLmM6NDAzCj4gIFs8ZmZmZmZmZmY4MzQx MGE1Yz5dIGRybV9pb2N0bCsweDdiYy8weGM2MCBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6 NzI0Cj4gIFs8ICAgICBpbmxpbmUgICAgID5dIHZmc19pb2N0bCBmcy9pb2N0bC5jOjQzCj4gIFs8 ZmZmZmZmZmY4MTg2ZjFmYz5dIGRvX3Zmc19pb2N0bCsweDE4Yy8weDEwODAgZnMvaW9jdGwuYzo2 NzUKPiAgWzwgICAgIGlubGluZSAgICAgPl0gU1lTQ19pb2N0bCBmcy9pb2N0bC5jOjY5MAo+ICBb PGZmZmZmZmZmODE4NzAxN2Y+XSBTeVNfaW9jdGwrMHg4Zi8weGMwIGZzL2lvY3RsLmM6NjgxCj4g IFs8ZmZmZmZmZmY4MTAwODhmZj5dIGRvX3N5c2NhbGxfNjQrMHgxZGYvMHg2NDAgYXJjaC94ODYv ZW50cnkvY29tbW9uLmM6Mjg4Cj4gIFs8ZmZmZmZmZmY4NmMyNTU0Mz5dIGVudHJ5X1NZU0NBTEw2 NF9zbG93X3BhdGgrMHgyNS8weDI1Cj4gYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUzoyNDgKPiAK PiBPbiBjb21taXQgNjFjMDQ1NzJkZTQwNGU1MmE2NTVhMzY3NTJlNjk2YmJjYjQ4M2NmNSAoQXVn IDI1KS4KPiAKPiAKPiAvLyBhdXRvZ2VuZXJhdGVkIGJ5IHN5emthbGxlciAoaHR0cDovL2dpdGh1 Yi5jb20vZ29vZ2xlL3N5emthbGxlcikKPiAjaWZuZGVmIF9fTlJfc3l6X29wZW5fcHRzCj4gI2Rl ZmluZSBfX05SX3N5el9vcGVuX3B0cyAxMDAwMDAyCj4gI2VuZGlmCj4gI2lmbmRlZiBfX05SX21t YXAKPiAjZGVmaW5lIF9fTlJfbW1hcCA5Cj4gI2VuZGlmCj4gI2lmbmRlZiBfX05SX3N5el9vcGVu X2Rldgo+ICNkZWZpbmUgX19OUl9zeXpfb3Blbl9kZXYgMTAwMDAwMQo+ICNlbmRpZgo+ICNpZm5k ZWYgX19OUl9pb2N0bAo+ICNkZWZpbmUgX19OUl9pb2N0bCAxNgo+ICNlbmRpZgo+ICNpZm5kZWYg X19OUl9zeXpfZnVzZV9tb3VudAo+ICNkZWZpbmUgX19OUl9zeXpfZnVzZV9tb3VudCAxMDAwMDAz Cj4gI2VuZGlmCj4gI2lmbmRlZiBfX05SX3N5el9mdXNlYmxrX21vdW50Cj4gI2RlZmluZSBfX05S X3N5el9mdXNlYmxrX21vdW50IDEwMDAwMDQKPiAjZW5kaWYKPiAKPiAjaW5jbHVkZSA8ZmNudGwu aD4KPiAjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICNpbmNsdWRlIDxzZXRqbXAuaD4KPiAjaW5jbHVk ZSA8c2lnbmFsLmg+Cj4gI2luY2x1ZGUgPHN0ZGRlZi5oPgo+ICNpbmNsdWRlIDxzdGRpbnQuaD4K PiAjaW5jbHVkZSA8c3RkaW8uaD4KPiAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gI2luY2x1ZGUgPHN0 cmluZy5oPgo+ICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4K PiAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KPiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cj4gI2lu Y2x1ZGUgPHVuaXN0ZC5oPgo+IAo+IF9fdGhyZWFkIGludCBza2lwX3NlZ3Y7Cj4gX190aHJlYWQg am1wX2J1ZiBzZWd2X2VudjsKPiAKPiBzdGF0aWMgdm9pZCBzZWd2X2hhbmRsZXIoaW50IHNpZywg c2lnaW5mb190KiBpbmZvLCB2b2lkKiB1Y3R4KQo+IHsKPiAgIGlmIChfX2F0b21pY19sb2FkX24o JnNraXBfc2VndiwgX19BVE9NSUNfUkVMQVhFRCkpCj4gICAgIF9sb25nam1wKHNlZ3ZfZW52LCAx KTsKPiAgIGV4aXQoc2lnKTsKPiB9Cj4gCj4gc3RhdGljIHZvaWQgaW5zdGFsbF9zZWd2X2hhbmRs ZXIoKQo+IHsKPiAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cj4gICBtZW1zZXQoJnNhLCAwLCBzaXpl b2Yoc2EpKTsKPiAgIHNhLnNhX3NpZ2FjdGlvbiA9IHNlZ3ZfaGFuZGxlcjsKPiAgIHNhLnNhX2Zs YWdzID0gU0FfTk9ERUZFUiB8IFNBX1NJR0lORk87Cj4gICBzaWdhY3Rpb24oU0lHU0VHViwgJnNh LCBOVUxMKTsKPiAgIHNpZ2FjdGlvbihTSUdCVVMsICZzYSwgTlVMTCk7Cj4gfQo+IAo+ICNkZWZp bmUgTk9ORkFJTElORyguLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICBfX2F0b21pY19mZXRjaF9hZGQoJnNr aXBfc2VndiwgMSwgX19BVE9NSUNfU0VRX0NTVCk7ICAgICAgICAgICAgICAgXAo+ICAgICBpZiAo X3NldGptcChzZWd2X2VudikgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICAgICAgIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICBfX2F0b21p Y19mZXRjaF9zdWIoJnNraXBfc2VndiwgMSwgX19BVE9NSUNfU0VRX0NTVCk7ICAgICAgICAgICAg ICAgXAo+ICAgfQo+IAo+IHN0YXRpYyB1aW50cHRyX3Qgc3l6X29wZW5fZGV2KHVpbnRwdHJfdCBh MCwgdWludHB0cl90IGExLCB1aW50cHRyX3QgYTIpCj4gewo+ICAgaWYgKGEwID09IDB4YyB8fCBh MCA9PSAweGIpIHsKPiAgICAgY2hhciBidWZbMTI4XTsKPiAgICAgc3ByaW50ZihidWYsICIvZGV2 LyVzLyVkOiVkIiwgYTAgPT0gMHhjID8gImNoYXIiIDogImJsb2NrIiwKPiAgICAgICAgICAgICAo dWludDhfdClhMSwgKHVpbnQ4X3QpYTIpOwo+ICAgICByZXR1cm4gb3BlbihidWYsIE9fUkRXUiwg MCk7Cj4gICB9IGVsc2Ugewo+ICAgICBjaGFyIGJ1ZlsxMDI0XTsKPiAgICAgY2hhciogaGFzaDsK PiAgICAgc3RybmNweShidWYsIChjaGFyKilhMCwgc2l6ZW9mKGJ1ZikpOwo+ICAgICBidWZbc2l6 ZW9mKGJ1ZikgLSAxXSA9IDA7Cj4gICAgIHdoaWxlICgoaGFzaCA9IHN0cmNocihidWYsICcjJykp KSB7Cj4gICAgICAgKmhhc2ggPSAnMCcgKyAoY2hhcikoYTEgJSAxMCk7Cj4gICAgICAgYTEgLz0g MTA7Cj4gICAgIH0KPiAgICAgcmV0dXJuIG9wZW4oYnVmLCBhMiwgMCk7Cj4gICB9Cj4gfQo+IAo+ IHN0YXRpYyB1aW50cHRyX3Qgc3l6X29wZW5fcHRzKHVpbnRwdHJfdCBhMCwgdWludHB0cl90IGEx KQo+IHsKPiAgIGludCBwdHlubyA9IDA7Cj4gICBpZiAoaW9jdGwoYTAsIFRJT0NHUFROLCAmcHR5 bm8pKQo+ICAgICByZXR1cm4gLTE7Cj4gICBjaGFyIGJ1ZlsxMjhdOwo+ICAgc3ByaW50ZihidWYs ICIvZGV2L3B0cy8lZCIsIHB0eW5vKTsKPiAgIHJldHVybiBvcGVuKGJ1ZiwgYTEsIDApOwo+IH0K PiAKPiBzdGF0aWMgdWludHB0cl90IHN5el9mdXNlX21vdW50KHVpbnRwdHJfdCBhMCwgdWludHB0 cl90IGExLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90IGEyLCB1 aW50cHRyX3QgYTMsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3Qg YTQsIHVpbnRwdHJfdCBhNSkKPiB7Cj4gICB1aW50NjRfdCB0YXJnZXQgPSBhMDsKPiAgIHVpbnQ2 NF90IG1vZGUgPSBhMTsKPiAgIHVpbnQ2NF90IHVpZCA9IGEyOwo+ICAgdWludDY0X3QgZ2lkID0g YTM7Cj4gICB1aW50NjRfdCBtYXhyZWFkID0gYTQ7Cj4gICB1aW50NjRfdCBmbGFncyA9IGE1Owo+ IAo+ICAgaW50IGZkID0gb3BlbigiL2Rldi9mdXNlIiwgT19SRFdSKTsKPiAgIGlmIChmZCA9PSAt MSkKPiAgICAgcmV0dXJuIGZkOwo+ICAgY2hhciBidWZbMTAyNF07Cj4gICBzcHJpbnRmKGJ1Ziwg ImZkPSVkLHVzZXJfaWQ9JWxkLGdyb3VwX2lkPSVsZCxyb290bW9kZT0wJW8iLCBmZCwKPiAgICAg ICAgICAgKGxvbmcpdWlkLCAobG9uZylnaWQsICh1bnNpZ25lZCltb2RlICYgfjN1KTsKPiAgIGlm IChtYXhyZWFkICE9IDApCj4gICAgIHNwcmludGYoYnVmICsgc3RybGVuKGJ1ZiksICIsbWF4X3Jl YWQ9JWxkIiwgKGxvbmcpbWF4cmVhZCk7Cj4gICBpZiAobW9kZSAmIDEpCj4gICAgIHN0cmNhdChi dWYsICIsZGVmYXVsdF9wZXJtaXNzaW9ucyIpOwo+ICAgaWYgKG1vZGUgJiAyKQo+ICAgICBzdHJj YXQoYnVmLCAiLGFsbG93X290aGVyIik7Cj4gICBzeXNjYWxsKFNZU19tb3VudCwgIiIsIHRhcmdl dCwgImZ1c2UiLCBmbGFncywgYnVmKTsKPiAgIHJldHVybiBmZDsKPiB9Cj4gCj4gc3RhdGljIHVp bnRwdHJfdCBzeXpfZnVzZWJsa19tb3VudCh1aW50cHRyX3QgYTAsIHVpbnRwdHJfdCBhMSwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBhMiwgdWludHB0cl90 IGEzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90IGE0LCB1 aW50cHRyX3QgYTUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRy X3QgYTYsIHVpbnRwdHJfdCBhNykKPiB7Cj4gICB1aW50NjRfdCB0YXJnZXQgPSBhMDsKPiAgIHVp bnQ2NF90IGJsa2RldiA9IGExOwo+ICAgdWludDY0X3QgbW9kZSA9IGEyOwo+ICAgdWludDY0X3Qg dWlkID0gYTM7Cj4gICB1aW50NjRfdCBnaWQgPSBhNDsKPiAgIHVpbnQ2NF90IG1heHJlYWQgPSBh NTsKPiAgIHVpbnQ2NF90IGJsa3NpemUgPSBhNjsKPiAgIHVpbnQ2NF90IGZsYWdzID0gYTc7Cj4g Cj4gICBpbnQgZmQgPSBvcGVuKCIvZGV2L2Z1c2UiLCBPX1JEV1IpOwo+ICAgaWYgKGZkID09IC0x KQo+ICAgICByZXR1cm4gZmQ7Cj4gICBpZiAoc3lzY2FsbChTWVNfbWtub2RhdCwgQVRfRkRDV0Qs IGJsa2RldiwgU19JRkJMSywgbWFrZWRldig3LCAxOTkpKSkKPiAgICAgcmV0dXJuIGZkOwo+ICAg Y2hhciBidWZbMjU2XTsKPiAgIHNwcmludGYoYnVmLCAiZmQ9JWQsdXNlcl9pZD0lbGQsZ3JvdXBf aWQ9JWxkLHJvb3Rtb2RlPTAlbyIsIGZkLAo+ICAgICAgICAgICAobG9uZyl1aWQsIChsb25nKWdp ZCwgKHVuc2lnbmVkKW1vZGUgJiB+M3UpOwo+ICAgaWYgKG1heHJlYWQgIT0gMCkKPiAgICAgc3By aW50ZihidWYgKyBzdHJsZW4oYnVmKSwgIixtYXhfcmVhZD0lbGQiLCAobG9uZyltYXhyZWFkKTsK PiAgIGlmIChibGtzaXplICE9IDApCj4gICAgIHNwcmludGYoYnVmICsgc3RybGVuKGJ1ZiksICIs Ymxrc2l6ZT0lbGQiLCAobG9uZylibGtzaXplKTsKPiAgIGlmIChtb2RlICYgMSkKPiAgICAgc3Ry Y2F0KGJ1ZiwgIixkZWZhdWx0X3Blcm1pc3Npb25zIik7Cj4gICBpZiAobW9kZSAmIDIpCj4gICAg IHN0cmNhdChidWYsICIsYWxsb3dfb3RoZXIiKTsKPiAgIHN5c2NhbGwoU1lTX21vdW50LCBibGtk ZXYsIHRhcmdldCwgImZ1c2VibGsiLCBmbGFncywgYnVmKTsKPiAgIHJldHVybiBmZDsKPiB9Cj4g Cj4gc3RhdGljIHVpbnRwdHJfdCBleGVjdXRlX3N5c2NhbGwoaW50IG5yLCB1aW50cHRyX3QgYTAs IHVpbnRwdHJfdCBhMSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRy X3QgYTIsIHVpbnRwdHJfdCBhMywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50cHRyX3QgYTQsIHVpbnRwdHJfdCBhNSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50cHRyX3QgYTYsIHVpbnRwdHJfdCBhNywKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50cHRyX3QgYTgpCj4gewo+ICAgc3dpdGNoIChucikgewo+ICAgZGVmYXVs dDoKPiAgICAgcmV0dXJuIHN5c2NhbGwobnIsIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwo+ICAg Y2FzZSBfX05SX3N5el9vcGVuX2RldjoKPiAgICAgcmV0dXJuIHN5el9vcGVuX2RldihhMCwgYTEs IGEyKTsKPiAgIGNhc2UgX19OUl9zeXpfb3Blbl9wdHM6Cj4gICAgIHJldHVybiBzeXpfb3Blbl9w dHMoYTAsIGExKTsKPiAgIGNhc2UgX19OUl9zeXpfZnVzZV9tb3VudDoKPiAgICAgcmV0dXJuIHN5 el9mdXNlX21vdW50KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwo+ICAgY2FzZSBfX05SX3N5el9m dXNlYmxrX21vdW50Ogo+ICAgICByZXR1cm4gc3l6X2Z1c2VibGtfbW91bnQoYTAsIGExLCBhMiwg YTMsIGE0LCBhNSwgYTYsIGE3KTsKPiAgIH0KPiB9Cj4gCj4gbG9uZyByWzEwXTsKPiAKPiBpbnQg bWFpbigpCj4gewo+ICAgaW5zdGFsbF9zZWd2X2hhbmRsZXIoKTsKPiAgIG1lbXNldChyLCAtMSwg c2l6ZW9mKHIpKTsKPiAgIHJbMF0gPSBleGVjdXRlX3N5c2NhbGwoX19OUl9tbWFwLCAweDIwMDAw MDAwdWwsIDB4ODVhMDAwdWwsIDB4M3VsLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAweDMy dWwsIDB4ZmZmZmZmZmZmZmZmZmZmZnVsLCAweDB1bCwgMCwgMCwgMCk7Cj4gICBOT05GQUlMSU5H KG1lbWNweSgKPiAgICAgICAodm9pZCopMHgyMDAwMDAwMCwKPiAgICAgICAiXHgyZlx4NjRceDY1 XHg3Nlx4MmZceDY0XHg3Mlx4NjlceDJmXHg2M1x4NjFceDcyXHg2NFx4MjNceDAwIiwKPiAgICAg ICAxNSkpOwo+ICAgclsyXSA9IGV4ZWN1dGVfc3lzY2FsbChfX05SX3N5el9vcGVuX2RldiwgMHgy MDAwMDAwMHVsLCAweDB1bCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDB1bCwgMCwg MCwgMCwgMCwgMCwgMCk7Cj4gICBOT05GQUlMSU5HKCoodWludDY0X3QqKTB4MjA4NThmZDggPSAo dWludDY0X3QpMHgyMDA2ODAwMCk7Cj4gICBOT05GQUlMSU5HKCoodWludDY0X3QqKTB4MjA4NThm ZTAgPSAodWludDY0X3QpMHgxMDAwKTsKPiAgIE5PTkZBSUxJTkcoKih1aW50MzJfdCopMHgyMDg1 OGZlOCA9ICh1aW50MzJfdCkweDEpOwo+ICAgTk9ORkFJTElORygqKHVpbnQzMl90KikweDIwODU4 ZmVjID0gKHVpbnQzMl90KTB4MzApOwo+ICAgTk9ORkFJTElORygqKHVpbnQ2NF90KikweDIwODU4 ZmYwID0gKHVpbnQ2NF90KTB4MjAyODQwMDApOwo+ICAgTk9ORkFJTElORygqKHVpbnQzMl90Kikw eDIwODU4ZmY4ID0gKHVpbnQzMl90KTB4MSk7Cj4gICByWzldID0gZXhlY3V0ZV9zeXNjYWxsKF9f TlJfaW9jdGwsIHJbMl0sIDB4YzAyODY0MTV1bCwgMHgyMDg1OGZkOHVsLAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKPiAgIHJldHVybiAwOwo+IH0KPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5p ZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxv Zy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK