From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANHRXvi225794 for ; Wed, 23 Nov 2011 11:27:33 -0600 Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F34DC1D2EBEC for ; Wed, 23 Nov 2011 09:27:29 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id vdnXXS4i3fUSJ5h3 for ; Wed, 23 Nov 2011 09:27:29 -0800 (PST) Received: by bkaq10 with SMTP id q10so2014879bka.26 for ; Wed, 23 Nov 2011 09:27:28 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= Subject: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Date: Wed, 23 Nov 2011 18:27:24 +0100 References: <20111115210953.GA6670@infradead.org> <201111180944.10048.arekm@maven.pl> <20111122224620.GA20107@infradead.org> In-Reply-To: <20111122224620.GA20107@infradead.org> MIME-Version: 1.0 Message-Id: <201111231827.24601.arekm@maven.pl> List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: Christoph Hellwig Cc: xfs@oss.sgi.com T24gVHVlc2RheSAyMiBvZiBOb3ZlbWJlciAyMDExLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToK PiBPbiBGcmksIE5vdiAxOCwgMjAxMSBhdCAwOTo0NDowOUFNICswMTAwLCBBcmthZGl1c3ogTWk/ P2tpZXdpY3ogd3JvdGU6Cj4gPiBPbiBUdWVzZGF5IDE1IG9mIE5vdmVtYmVyIDIwMTEsIENocmlz dG9waCBIZWxsd2lnIHdyb3RlOgo+ID4gPiBCb3RoIHRoZSBwcmVmZXRjaCB0aHJlYWRzIGFuZCBh Y3R1YWwgcmVwYWlyIHByb2Nlc3NpbmcgdGhyZWFkcyBjYW4gaGF2ZQo+ID4gPiBtdWx0aXBsZSBi dWZmZXJzIGF0IGEgdGltZSBsb2NrZWQsIGJ1dCB0aGV5IGRvIG5vIHVzZSBhIGNvbW1vbiBsb2Nr ZXIKPiA+ID4gb3JkZXIsIHdoaWNoIGNhbiBsZWFkIHRvIEFCQkEgZGVhZGxvY2tzIHdoaWxlIHRy eWluZyB0byBsb2NrIHRoZQo+ID4gPiBidWZmZXJzLgo+ID4gCj4gPiBUaGVyZSBpcyBzdGlsbCBz b21lIGlzc3VlIHdpdGggZGVhZGxvY2tpbmcuCj4gPiAKPiA+IFRoZSBsYXN0IHByaW50ZWQgbWVz c2FnZXM6Cj4gPiBiPz8/P2RuYSBsaWN6YmEgbWFnaWN6bmEgMHg0MTQyNTQ0MyB3IGJsb2t1IGlu b2J0IDIvMTQzODA5OQo+ID4gYj8/Pz9kbmEgbGljemJhIG1hZ2ljem5hIDB4NDE0MjU0NDMgdyBi bG9rdSBpbm9idCAyLzE0MzgxOTYKPiA+IGI/Pz8/ZG5hIGxpY3piYSBtYWdpY3puYSAweDQxNDI1 NDQzIHcgYmxva3UgaW5vYnQgMi8xNDM4NzMyCj4gPiAoaW52YWxpZCBtYWdpYyBudW1iZXIgLi4u IGluIGJsb2NrIGlub2J0IC4uLikKPiAKPiBJdCBsb29rcyBsaWtlIHlvdSBoYXZlIGEgY2lyY3Vs YXIgbG9vcCBpbiB0aGUgaW5vYnQgdHJlZSwgYW5kIHJlcGFpcgo+IGRlYWRsb2NrcyB0cnlpbmcg dG8gcmVhZCB0aGUgc2FtZSBub2RlIGFnYWluLiAgQmVsb3cgaXMgYSBwYXRjaCB3b3JraW5nCj4g YXJvdW5kIHRoYXQgYnkgYWxsb3dpbmcgcmVjdXJzaXZlIGxvY2tpbmcgZm9yIHRoZSBidWZmZXIg bG9jayBhbmQgdGhlbgo+IGxldHRpbmcgdGhlIG5vcm1hbCB0d28gc3RyaWtlcyBhbmQgb3V0IHBv bGljeSBhcHBseS4gIEknbSBub3Qgb3Zlcmx5Cj4gcHJvdWQgb2YgdGhlIHBhdGNoLCBidXQgaW4g dGhlIHNob3J0IHRlcm0gSSBjYW4ndCB0aGluayBvZiBhbnl0aGluZwo+IGJldHRlci4KClNlZW1z IHN0aWxsIGRlYWRsb2NraW5nCgpMYXN0IGxpbmVzIG9uIGNvbnNvbGU6CmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgMTM2NTU0OTM1NDQgKGJyYWsgd3Bpc3UgZGFueWNoKTogcHJ6 ZWJ1ZG93YW5vCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDEzNjU1NDkzNTQ0CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgMTM2NTU1MDk0NTUgKGJyYWsgd3Bpc3UgZGFueWNo KTogcHJ6ZWJ1ZG93YW5vCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDEzNjU1NTA5NDU1CgoK Cltyb290QGJlcnRhIH5dIyBnZGIgLi94ZnNfcmVwYWlyX3RjbWFsbG9jIDIzNzAxCkdOVSBnZGIg KEdEQikgNy4zLjEtMSAoUExEIExpbnV4KQpDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCkxpY2Vuc2UgR1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBs YXRlciA8aHR0cDovL2dudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWw+ClRoaXMgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5nZSBhbmQgcmVkaXN0cmlidXRlIGl0LgpUaGVyZSBp cyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LiAgVHlwZSAic2hv dyBjb3B5aW5nIgphbmQgInNob3cgd2FycmFudHkiIGZvciBkZXRhaWxzLgpUaGlzIEdEQiB3YXMg Y29uZmlndXJlZCBhcyAieDg2XzY0LXBsZC1saW51eCIuCkZvciBidWcgcmVwb3J0aW5nIGluc3Ry dWN0aW9ucywgcGxlYXNlIHNlZToKPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvYnVn cy8+Li4uClJlYWRpbmcgc3ltYm9scyBmcm9tIC9yb290L3hmc19yZXBhaXJfdGNtYWxsb2MuLi5k b25lLgpBdHRhY2hpbmcgdG8gcHJvZ3JhbTogL3Jvb3QveGZzX3JlcGFpcl90Y21hbGxvYywgcHJv Y2VzcyAyMzcwMQpSZWFkaW5nIHN5bWJvbHMgZnJvbSAvbGliNjQvbGlidXVpZC5zby4xLi4uKG5v IGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kKS4uLmRvbmUuCkxvYWRlZCBzeW1ib2xzIGZvciAvbGli NjQvbGlidXVpZC5zby4xClJlYWRpbmcgc3ltYm9scyBmcm9tIC9saWI2NC9saWJydC5zby4xLi4u KG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kKS4uLmRvbmUuCkxvYWRlZCBzeW1ib2xzIGZvciAv bGliNjQvbGlicnQuc28uMQpSZWFkaW5nIHN5bWJvbHMgZnJvbSAvbGliNjQvbGlidGNtYWxsb2Nf bWluaW1hbC5zby4wLi4uKG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kKS4uLmRvbmUuCkxvYWRl ZCBzeW1ib2xzIGZvciAvbGliNjQvbGlidGNtYWxsb2NfbWluaW1hbC5zby4wClJlYWRpbmcgc3lt Ym9scyBmcm9tIC9saWI2NC9saWJwdGhyZWFkLnNvLjAuLi4obm8gZGVidWdnaW5nIHN5bWJvbHMg Zm91bmQpLi4uZG9uZS4KW1RocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJs ZWRdCltOZXcgVGhyZWFkIDB4N2ZhYjAxNzk4NzAwIChMV1AgNTEzNCldCltOZXcgVGhyZWFkIDB4 N2ZhYjAwZjk3NzAwIChMV1AgNTEzMyldCltOZXcgVGhyZWFkIDB4N2ZhYjAyNzlhNzAwIChMV1Ag NTEzMildCltOZXcgVGhyZWFkIDB4N2ZhYjAxZjk5NzAwIChMV1AgNTEzMSldCltOZXcgVGhyZWFk IDB4N2ZhYjAyZjliNzAwIChMV1AgNTEzMCldCkxvYWRlZCBzeW1ib2xzIGZvciAvbGliNjQvbGli cHRocmVhZC5zby4wClJlYWRpbmcgc3ltYm9scyBmcm9tIC91c3IvbGliNjQvbGlic3RkYysrLnNv LjYuLi4obm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpLi4uZG9uZS4KTG9hZGVkIHN5bWJvbHMg Zm9yIC91c3IvbGliNjQvbGlic3RkYysrLnNvLjYKUmVhZGluZyBzeW1ib2xzIGZyb20gL2xpYjY0 L2xpYm0uc28uNi4uLihubyBkZWJ1Z2dpbmcgc3ltYm9scyBmb3VuZCkuLi5kb25lLgpMb2FkZWQg c3ltYm9scyBmb3IgL2xpYjY0L2xpYm0uc28uNgpSZWFkaW5nIHN5bWJvbHMgZnJvbSAvbGliNjQv bGliYy5zby42Li4uKG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kKS4uLmRvbmUuCkxvYWRlZCBz eW1ib2xzIGZvciAvbGliNjQvbGliYy5zby42ClJlYWRpbmcgc3ltYm9scyBmcm9tIC9saWI2NC9s ZC1saW51eC14ODYtNjQuc28uMi4uLihubyBkZWJ1Z2dpbmcgc3ltYm9scyBmb3VuZCkuLi5kb25l LgpMb2FkZWQgc3ltYm9scyBmb3IgL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yClJlYWRpbmcg c3ltYm9scyBmcm9tIC9saWI2NC9saWJnY2Nfcy5zby4xLi4uKG5vIGRlYnVnZ2luZyBzeW1ib2xz IGZvdW5kKS4uLmRvbmUuCkxvYWRlZCBzeW1ib2xzIGZvciAvbGliNjQvbGliZ2NjX3Muc28uMQow eDAwMDA3ZmFiMGE3ZWQ4ZTQgaW4gX19sbGxfbG9ja193YWl0ICgpIGZyb20gL2xpYjY0L2xpYnB0 aHJlYWQuc28uMAooZ2RiKSBidAojMCAgMHgwMDAwN2ZhYjBhN2VkOGU0IGluIF9fbGxsX2xvY2tf d2FpdCAoKSBmcm9tIC9saWI2NC9saWJwdGhyZWFkLnNvLjAKIzEgIDB4MDAwMDdmYWIwYTdlOTFi NSBpbiBfTF9sb2NrXzg4MyAoKSBmcm9tIC9saWI2NC9saWJwdGhyZWFkLnNvLjAKIzIgIDB4MDAw MDdmYWIwYTdlOTAwYSBpbiBwdGhyZWFkX211dGV4X2xvY2sgKCkgZnJvbSAvbGliNjQvbGlicHRo cmVhZC5zby4wCiMzICAweDAwMDAwMDAwMDA0MzM0ZjggaW4gbGlieGZzX2dldGJ1Zl9mbGFncyAo ZGV2aWNlPTxvcHRpbWl6ZWQgb3V0PiwgYmxrbm89PG9wdGltaXplZCBvdXQ+LCBsZW49PG9wdGlt aXplZCBvdXQ+LCBmbGFncz08b3B0aW1pemVkIG91dD4pIGF0IHJkd3IuYzo0MjgKIzQgIDB4MDAw MDAwMDAwMDQzMzdjZSBpbiBsaWJ4ZnNfcmVhZGJ1ZiAoZGV2PTY1MDI0LCBibGtubz02ODI3Nzcz NTA0LCBsZW49OCwgZmxhZ3M9MCkgYXQgcmR3ci5jOjU0NwojNSAgMHgwMDAwMDAwMDAwNDM0MzY5 IGluIGxpYnhmc190cmFuc19yZWFkX2J1ZiAobXA9PG9wdGltaXplZCBvdXQ+LCB0cD0weDAsIGRl dj02NTAyNCwgYmxrbm89NjgyNzc3MzUwNCwgbGVuPTgsIGZsYWdzPTAsIGJwcD0weDdmZmY3NTEw ZWRkOCkgYXQgdHJhbnMuYzo0ODUKIzYgIDB4MDAwMDAwMDAwMDQ0MzE0NyBpbiB4ZnNfZGFfZG9f YnVmICh0cmFucz0weDAsIGRwPTxvcHRpbWl6ZWQgb3V0PiwgYm5vPTxvcHRpbWl6ZWQgb3V0Piwg bWFwcGVkYm5vcD0weDdmZmY3NTEwZWU0OCwgYnBwPTB4MTI5MjJmYWE4LCAKICAgIHdoaWNoZm9y az08b3B0aW1pemVkIG91dD4sIGNhbGxlcj0yLCByYT0weDQyMjM1NCkgYXQgeGZzX2RhX2J0cmVl LmM6MjAxNgojNyAgMHgwMDAwMDAwMDAwNDM1NGY0IGluIGxpYnhmc19kYV9yZWFkX2J1ZnIgKHRy YW5zPTxvcHRpbWl6ZWQgb3V0PiwgZHA9PG9wdGltaXplZCBvdXQ+LCBibm89PG9wdGltaXplZCBv dXQ+LCBtYXBwZWRibm89NjgyNzc3MzUwNCwgYnBwPTxvcHRpbWl6ZWQgb3V0PiwgCiAgICB3aGlj aGZvcms9PG9wdGltaXplZCBvdXQ+KSBhdCB1dGlsLmM6NjM1CiM4ICAweDAwMDAwMDAwMDA0MjIz NTQgaW4gbG9uZ2Zvcm1fZGlyMl9lbnRyeV9jaGVjayAobXA9MHg3ZmZmNzUxMGYzMDAsIGlubz0x MzY1NTU0NzE2NiwgaXA9MHg5YTFhN2EyMCwgbnVtX2lsbGVnYWw9MHg3ZmZmNzUxMGYyNTgsIAog ICAgbmVlZF9kb3Q9MHg3ZmZmNzUxMGYyNGMsIGlyZWM9MHhhY2ZlZmMwLCBpbm9fb2Zmc2V0PTMw LCBoYXNodGFiPTB4YTAwMjg5MDApIGF0IHBoYXNlNi5jOjI1MTcKIzkgIDB4MDAwMDAwMDAwMDQy NDM1OCBpbiBwcm9jZXNzX2Rpcl9pbm9kZSAobXA9MHg3ZmZmNzUxMGYzMDAsIGFnbm89PG9wdGlt aXplZCBvdXQ+LCBpcmVjPTB4YWNmZWZjMCwgaW5vX29mZnNldD0zMCkgYXQgcGhhc2U2LmM6MzMw NwojMTAgMHgwMDAwMDAwMDAwNDI2ZjY0IGluIHRyYXZlcnNlX2Z1bmN0aW9uIChhcmc9MHgxMmEw NmMzNjAsIGFnbm89Mywgd3E9PG9wdGltaXplZCBvdXQ+KSBhdCBwaGFzZTYuYzozNjIyCiMxMSB0 cmF2ZXJzZV9hZ3MgKG1wPTB4N2ZmZjc1MTBmMzAwKSBhdCBwaGFzZTYuYzozNjY0CiMxMiBwaGFz ZTYgKG1wPTB4N2ZmZjc1MTBmMzAwKSBhdCBwaGFzZTYuYzozNzU2CiMxMyAweDAwMDAwMDAwMDA0 MDJjNjkgaW4gbWFpbiAoYXJnYz08b3B0aW1pemVkIG91dD4sIGFyZ3Y9PG9wdGltaXplZCBvdXQ+ KSBhdCB4ZnNfcmVwYWlyLmM6NzcyCihnZGIpIGluZm8gdGhyZWFkcwogIElkICAgVGFyZ2V0IElk ICAgICAgICAgRnJhbWUgCiAgNiAgICBUaHJlYWQgMHg3ZmFiMDJmOWI3MDAgKExXUCA1MTMwKSAi eGZzX3JlcGFpcl90Y21hIiAweDAwMDA3ZmFiMGE3ZWQwMTAgaW4gc2VtX3dhaXQgKCkgZnJvbSAv bGliNjQvbGlicHRocmVhZC5zby4wCiAgNSAgICBUaHJlYWQgMHg3ZmFiMDFmOTk3MDAgKExXUCA1 MTMxKSAieGZzX3JlcGFpcl90Y21hIiAweDAwMDA3ZmFiMGE3ZWFlNmMgaW4gcHRocmVhZF9jb25k X3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAogIDQgICAg VGhyZWFkIDB4N2ZhYjAyNzlhNzAwIChMV1AgNTEzMikgInhmc19yZXBhaXJfdGNtYSIgMHgwMDAw N2ZhYjBhN2VhZTZjIGluIHB0aHJlYWRfY29uZF93YWl0QEBHTElCQ18yLjMuMiAoKSBmcm9tIC9s aWI2NC9saWJwdGhyZWFkLnNvLjAKICAzICAgIFRocmVhZCAweDdmYWIwMGY5NzcwMCAoTFdQIDUx MzMpICJ4ZnNfcmVwYWlyX3RjbWEiIDB4MDAwMDdmYWIwYTdlYWU2YyBpbiBwdGhyZWFkX2NvbmRf d2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGliNjQvbGlicHRocmVhZC5zby4wCiAgMiAgICBU aHJlYWQgMHg3ZmFiMDE3OTg3MDAgKExXUCA1MTM0KSAieGZzX3JlcGFpcl90Y21hIiAweDAwMDA3 ZmFiMGE3ZWFlNmMgaW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xp YjY0L2xpYnB0aHJlYWQuc28uMAoqIDEgICAgVGhyZWFkIDB4N2ZhYjBiMGUwNzYwIChMV1AgMjM3 MDEpICJ4ZnNfcmVwYWlyX3RjbWEiIDB4MDAwMDdmYWIwYTdlZDhlNCBpbiBfX2xsbF9sb2NrX3dh aXQgKCkgZnJvbSAvbGliNjQvbGlicHRocmVhZC5zby4wCihnZGIpIHRocmVhZCAyCltTd2l0Y2hp bmcgdG8gdGhyZWFkIDIgKFRocmVhZCAweDdmYWIwMTc5ODcwMCAoTFdQIDUxMzQpKV0KIzAgIDB4 MDAwMDdmYWIwYTdlYWU2YyBpbiBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJv bSAvbGliNjQvbGlicHRocmVhZC5zby4wCihnZGIpIGJ0CiMwICAweDAwMDA3ZmFiMGE3ZWFlNmMg aW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYjY0L2xpYnB0aHJl YWQuc28uMAojMSAgMHgwMDAwMDAwMDAwNDI5N2IzIGluIHBmX2lvX3dvcmtlciAocGFyYW09MHgx MmEwNmMzNjApIGF0IHByZWZldGNoLmM6NTY1CiMyICAweDAwMDA3ZmFiMGE3ZTZlZDUgaW4gc3Rh cnRfdGhyZWFkICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMyAgMHgwMDAwN2ZhYjA5 ZmEzZTVkIGluIGNsb25lICgpIGZyb20gL2xpYjY0L2xpYmMuc28uNgojNCAgMHgwMDAwMDAwMDAw MDAwMDAwIGluID8/ICgpCihnZGIpIHRocmVhZCAzCltTd2l0Y2hpbmcgdG8gdGhyZWFkIDMgKFRo cmVhZCAweDdmYWIwMGY5NzcwMCAoTFdQIDUxMzMpKV0KIzAgIDB4MDAwMDdmYWIwYTdlYWU2YyBp biBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGliNjQvbGlicHRocmVh ZC5zby4wCihnZGIpIGJ0CiMwICAweDAwMDA3ZmFiMGE3ZWFlNmMgaW4gcHRocmVhZF9jb25kX3dh aXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMSAgMHgwMDAw MDAwMDAwNDI5N2IzIGluIHBmX2lvX3dvcmtlciAocGFyYW09MHgxMmEwNmMzNjApIGF0IHByZWZl dGNoLmM6NTY1CiMyICAweDAwMDA3ZmFiMGE3ZTZlZDUgaW4gc3RhcnRfdGhyZWFkICgpIGZyb20g L2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMyAgMHgwMDAwN2ZhYjA5ZmEzZTVkIGluIGNsb25lICgp IGZyb20gL2xpYjY0L2xpYmMuc28uNgojNCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCihn ZGIpIHRocmVhZCA0CltTd2l0Y2hpbmcgdG8gdGhyZWFkIDQgKFRocmVhZCAweDdmYWIwMjc5YTcw MCAoTFdQIDUxMzIpKV0KIzAgIDB4MDAwMDdmYWIwYTdlYWU2YyBpbiBwdGhyZWFkX2NvbmRfd2Fp dEBAR0xJQkNfMi4zLjIgKCkgZnJvbSAvbGliNjQvbGlicHRocmVhZC5zby4wCihnZGIpIGJ0CiMw ICAweDAwMDA3ZmFiMGE3ZWFlNmMgaW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgp IGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMSAgMHgwMDAwMDAwMDAwNDI5N2IzIGluIHBm X2lvX3dvcmtlciAocGFyYW09MHgxMmEwNmMzNjApIGF0IHByZWZldGNoLmM6NTY1CiMyICAweDAw MDA3ZmFiMGE3ZTZlZDUgaW4gc3RhcnRfdGhyZWFkICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQu c28uMAojMyAgMHgwMDAwN2ZhYjA5ZmEzZTVkIGluIGNsb25lICgpIGZyb20gL2xpYjY0L2xpYmMu c28uNgojNCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCihnZGIpIHRocmVhZCA1CltTd2l0 Y2hpbmcgdG8gdGhyZWFkIDUgKFRocmVhZCAweDdmYWIwMWY5OTcwMCAoTFdQIDUxMzEpKV0KIzAg IDB4MDAwMDdmYWIwYTdlYWU2YyBpbiBwdGhyZWFkX2NvbmRfd2FpdEBAR0xJQkNfMi4zLjIgKCkg ZnJvbSAvbGliNjQvbGlicHRocmVhZC5zby4wCihnZGIpIGJ0CiMwICAweDAwMDA3ZmFiMGE3ZWFl NmMgaW4gcHRocmVhZF9jb25kX3dhaXRAQEdMSUJDXzIuMy4yICgpIGZyb20gL2xpYjY0L2xpYnB0 aHJlYWQuc28uMAojMSAgMHgwMDAwMDAwMDAwNDI5N2IzIGluIHBmX2lvX3dvcmtlciAocGFyYW09 MHgxMmEwNmMzNjApIGF0IHByZWZldGNoLmM6NTY1CiMyICAweDAwMDA3ZmFiMGE3ZTZlZDUgaW4g c3RhcnRfdGhyZWFkICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMyAgMHgwMDAwN2Zh YjA5ZmEzZTVkIGluIGNsb25lICgpIGZyb20gL2xpYjY0L2xpYmMuc28uNgojNCAgMHgwMDAwMDAw MDAwMDAwMDAwIGluID8/ICgpCihnZGIpIHRocmVhZCA2CltTd2l0Y2hpbmcgdG8gdGhyZWFkIDYg KFRocmVhZCAweDdmYWIwMmY5YjcwMCAoTFdQIDUxMzApKV0KIzAgIDB4MDAwMDdmYWIwYTdlZDAx MCBpbiBzZW1fd2FpdCAoKSBmcm9tIC9saWI2NC9saWJwdGhyZWFkLnNvLjAKKGdkYikgYnQKIzAg IDB4MDAwMDdmYWIwYTdlZDAxMCBpbiBzZW1fd2FpdCAoKSBmcm9tIC9saWI2NC9saWJwdGhyZWFk LnNvLjAKIzEgIDB4MDAwMDAwMDAwMDQyOWM3MiBpbiBwZl9xdWV1aW5nX3dvcmtlciAocGFyYW09 MHgxMmEwNmMzNjApIGF0IHByZWZldGNoLmM6NjQ0CiMyICAweDAwMDA3ZmFiMGE3ZTZlZDUgaW4g c3RhcnRfdGhyZWFkICgpIGZyb20gL2xpYjY0L2xpYnB0aHJlYWQuc28uMAojMyAgMHgwMDAwN2Zh YjA5ZmEzZTVkIGluIGNsb25lICgpIGZyb20gL2xpYjY0L2xpYmMuc28uNgojNCAgMHgwMDAwMDAw MDAwMDAwMDAwIGluID8/ICgpCihnZGIpCgoKPiAKPiAKPiBJbmRleDogeGZzcHJvZ3MtZGV2L2lu Y2x1ZGUvbGlieGZzLmgKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gLS0tIHhmc3Byb2dzLWRldi5vcmlnL2luY2x1 ZGUvbGlieGZzLmgJMjAxMS0xMS0yMiAyMjoyODoyMy4wMDAwMDAwMDAgKzAwMDAKPiArKysgeGZz cHJvZ3MtZGV2L2luY2x1ZGUvbGlieGZzLmgJMjAxMS0xMS0yMiAyMjozNDoyNy4wMDAwMDAwMDAg KzAwMDAKPiBAQCAtMjI2LDYgKzIyNiw4IEBAIHR5cGVkZWYgc3RydWN0IHhmc19idWYgewo+ICAJ dW5zaWduZWQJCWJfYmNvdW50Owo+ICAJZGV2X3QJCQliX2RldjsKPiAgCXB0aHJlYWRfbXV0ZXhf dAkJYl9sb2NrOwo+ICsJcHRocmVhZF90CQliX2hvbGRlcjsKPiArCXVuc2lnbmVkIGludAkJYl9y ZWN1cjsKPiAgCXZvaWQJCQkqYl9mc3ByaXZhdGU7Cj4gIAl2b2lkCQkJKmJfZnNwcml2YXRlMjsK PiAgCXZvaWQJCQkqYl9mc3ByaXZhdGUzOwo+IEluZGV4OiB4ZnNwcm9ncy1kZXYvbGlieGZzL3Jk d3IuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KPiAtLS0geGZzcHJvZ3MtZGV2Lm9yaWcvbGlieGZzL3Jkd3IuYwky MDExLTExLTIyIDIyOjI4OjIzLjAwMDAwMDAwMCArMDAwMAo+ICsrKyB4ZnNwcm9ncy1kZXYvbGli eGZzL3Jkd3IuYwkyMDExLTExLTIyIDIyOjQwOjAxLjAwMDAwMDAwMCArMDAwMAo+IEBAIC0zNDIs NiArMzQyLDggQEAgbGlieGZzX2luaXRidWYoeGZzX2J1Zl90ICpicCwgZGV2X3QgZGV2aQo+ICAJ bGlzdF9oZWFkX2luaXQoJmJwLT5iX2xvY2tfbGlzdCk7Cj4gICNlbmRpZgo+ICAJcHRocmVhZF9t dXRleF9pbml0KCZicC0+Yl9sb2NrLCBOVUxMKTsKPiArCWJwLT5iX2hvbGRlciA9IDA7Cj4gKwli cC0+Yl9yZWN1ciA9IDA7Cj4gIH0KPiAKPiAgeGZzX2J1Zl90ICoKPiBAQCAtNDEwLDE4ICs0MTIs MjQgQEAgbGlieGZzX2dldGJ1Zl9mbGFncyhkZXZfdCBkZXZpY2UsIHhmc19kYQo+ICAJCXJldHVy biBOVUxMOwo+IAo+ICAJaWYgKHVzZV94ZnNfYnVmX2xvY2spIHsKPiAtCQlpZiAoZmxhZ3MgJiBM SUJYRlNfR0VUQlVGX1RSWUxPQ0spIHsKPiAtCQkJaW50IHJldDsKPiArCQlpbnQgcmV0Owo+IAo+ IC0JCQlyZXQgPSBwdGhyZWFkX211dGV4X3RyeWxvY2soJmJwLT5iX2xvY2spOwo+IC0JCQlpZiAo cmV0KSB7Cj4gLQkJCQlBU1NFUlQocmV0ID09IEVBR0FJTik7Cj4gLQkJCQljYWNoZV9ub2RlX3B1 dChsaWJ4ZnNfYmNhY2hlLCAoc3RydWN0IGNhY2hlX25vZGUgKilicCk7Cj4gLQkJCQlyZXR1cm4g TlVMTDsKPiArCQlyZXQgPSBwdGhyZWFkX211dGV4X3RyeWxvY2soJmJwLT5iX2xvY2spOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJQVNTRVJUKHJldCA9PSBFQUdBSU4pOwo+ICsJCQlpZiAoZmxhZ3Mg JiBMSUJYRlNfR0VUQlVGX1RSWUxPQ0spCj4gKwkJCQlnb3RvIG91dF9wdXQ7Cj4gKwo+ICsJCQlp ZiAocHRocmVhZF9lcXVhbChicC0+Yl9ob2xkZXIsIHB0aHJlYWRfc2VsZigpKSkgewo+ICsJCQkJ ZnByaW50ZihzdGRlcnIsCj4gKwlfKCJyZWN1cnNpdmUgYnVmZmVyIGxvY2tpbmcgZGV0ZWN0ZWRc biIpKTsKPiArCQkJCWJwLT5iX3JlY3VyKys7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQlwdGhyZWFk X211dGV4X2xvY2soJmJwLT5iX2xvY2spOwo+ICAJCQl9Cj4gLQkJfSBlbHNlIHsKPiAtCQkJcHRo cmVhZF9tdXRleF9sb2NrKCZicC0+Yl9sb2NrKTsKPiAgCQl9Cj4gKwo+ICsJCWJwLT5iX2hvbGRl ciA9IHB0aHJlYWRfc2VsZigpOwo+ICAJfQo+IAo+ICAJY2FjaGVfbm9kZV9zZXRfcHJpb3JpdHko bGlieGZzX2JjYWNoZSwgKHN0cnVjdCBjYWNoZV9ub2RlICopYnAsCj4gQEAgLTQ0MCw2ICs0NDgs OSBAQCBsaWJ4ZnNfZ2V0YnVmX2ZsYWdzKGRldl90IGRldmljZSwgeGZzX2RhCj4gICNlbmRpZgo+ IAo+ICAJcmV0dXJuIGJwOwo+ICtvdXRfcHV0Ogo+ICsJY2FjaGVfbm9kZV9wdXQobGlieGZzX2Jj YWNoZSwgKHN0cnVjdCBjYWNoZV9ub2RlICopYnApOwo+ICsJcmV0dXJuIE5VTEw7Cj4gIH0KPiAK PiAgc3RydWN0IHhmc19idWYgKgo+IEBAIC00NTgsOCArNDY5LDE0IEBAIGxpYnhmc19wdXRidWYo eGZzX2J1Zl90ICpicCkKPiAgCWxpc3RfZGVsX2luaXQoJmJwLT5iX2xvY2tfbGlzdCk7Cj4gIAlw dGhyZWFkX211dGV4X3VubG9jaygmbGlieGZzX2JjYWNoZS0+Y19tdXRleCk7Cj4gICNlbmRpZgo+ IC0JaWYgKHVzZV94ZnNfYnVmX2xvY2spCj4gLQkJcHRocmVhZF9tdXRleF91bmxvY2soJmJwLT5i X2xvY2spOwo+ICsJaWYgKHVzZV94ZnNfYnVmX2xvY2spIHsKPiArCQlpZiAoYnAtPmJfcmVjdXIp IHsKPiArCQkJYnAtPmJfcmVjdXItLTsKPiArCQl9IGVsc2Ugewo+ICsJCQlicC0+Yl9ob2xkZXIg PSAwOwo+ICsJCQlwdGhyZWFkX211dGV4X3VubG9jaygmYnAtPmJfbG9jayk7Cj4gKwkJfQo+ICsJ fQo+ICAJY2FjaGVfbm9kZV9wdXQobGlieGZzX2JjYWNoZSwgKHN0cnVjdCBjYWNoZV9ub2RlICop YnApOwo+ICB9CgoKLS0gCkFya2FkaXVzeiBNacWba2lld2ljeiAgICAgICAgUExEL0xpbnV4IFRl YW0KYXJla20gLyBtYXZlbi5wbCAgICAgICAgICAgIGh0dHA6Ly9mdHAucGxkLWxpbnV4Lm9yZy8K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBtYWls aW5nIGxpc3QKeGZzQG9zcy5zZ2kuY29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3Rp bmZvL3hmcwo=