From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 28 Feb 2019 16:36:10 -0800 From: Dale B Stimson Message-ID: <20190301003610.GA148065@dbstims-dev.fm.intel.com> References: <20190222231031.24289.63194@emeril.freedesktop.org> <20190223094510.20113-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190223094510.20113-1-chris@chris-wilson.co.uk> Subject: Re: [igt-dev] [PATCH i-g-t] i915/gem_ctx_isolation: Sanitycheck nonpriv access List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: T24gU2F0LCBGZWIgMjMsIDIwMTkgYXQgMDk6NDU6MTBBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFZlcmlmeSB0aGF0IG91ciBsaXN0IG9mIG5vbnByaXYgcmVnaXN0ZXJzIGV4aXN0IGFu ZCBhcmUgd3JpdGFibGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IERhbGUgQiBTdGltc29uIDxkYWxlLmIuc3RpbXNvbkBp bnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K PiAtLS0KPiAgdGVzdHMvaTkxNS9nZW1fY3R4X2lzb2xhdGlvbi5jIHwgMTY0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMo KyksIDI5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhf aXNvbGF0aW9uLmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfaXNvbGF0aW9uLmMKPiBpbmRleCA4Mzlk NDlhZC4uOTkxYTk5N2YgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fY3R4X2lzb2xhdGlv bi5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fY3R4X2lzb2xhdGlvbi5jCj4gQEAgLTU5LDE2ICs1 OSwyMyBAQCBlbnVtIHsKPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIg ewo+ICAJY29uc3QgY2hhciAqbmFtZTsKPiAtCXVuc2lnbmVkIGludCBnZW5fbWFzazsKPiAtCXVu c2lnbmVkIGludCBlbmdpbmVfbWFzazsKPiAtCXVpbnQzMl90IG9mZnNldDsKPiArCXVuc2lnbmVk IGludCBnZW5fbWFzazsgLyogb24gd2hpY2ggZ2VuIHRoZSByZWdpc3RlciBleGlzdHMgKi8KPiAr CXVuc2lnbmVkIGludCBlbmdpbmVfbWFzazsgLyogcHJlZmVycmVkIGVuZ2luZSAvIHBvd2Vyd2Vs bCAqLwo+ICsJdWludDMyX3Qgb2Zmc2V0OyAvKiBhZGRyZXNzIG9mIHJlZ2lzdGVyLCBmcm9tIGJv dHRvbSBvZiBtbWlvIGJhciAqLwo+ICAJdWludDMyX3QgY291bnQ7Cj4gIAl1aW50MzJfdCBpZ25v cmVfYml0czsKPiArCXVpbnQzMl90IHdyaXRlX21hc2s7IC8qIHNvbWUgcmVnaXN0ZXJzIGJpdHMg ZG8gbm90IGV4aXN0ICovCj4gIAlib29sIG1hc2tlZDsKPiAgfSBub25wcml2X3JlZ2lzdGVyc1td ID0gewo+ICAJeyAiTk9QSUQiLCBOT0NUWCwgUkNTMCwgMHgyMDk0IH0sCj4gIAl7ICJNSV9QUkVE SUNBVEVfUkVTVUxUXzIiLCBOT0NUWCwgUkNTMCwgMHgyM2JjIH0sCj4gLQl7ICJJTlNUUE0iLCBH RU42LCBSQ1MwLCAweDIwYzAsIDEsIEJJVCg4KSAvKiBybyBjb3VudGVyICovLCB0cnVlIH0sCj4g Kwl7Cj4gKwkJIklOU1RQTSIsCj4gKwkJR0VONiwgUkNTMCwgMHgyMGMwLAo+ICsJCS5pZ25vcmVf Yml0cyA9IEJJVCg4KSAvKiBybyBjb3VudGVyICovLAo+ICsJCS53cml0ZV9tYXNrID0gQklUKDgp IC8qIHJzdmQgdmFyaWVzIGJldHdlZW4gZ2VuICovLAo+ICsJCS5tYXNrZWQgPSB0cnVlLAo+ICsJ fSwKPiAgCXsgIklBX1ZFUlRJQ0VTX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzEwLCAyIH0sCj4g IAl7ICJJQV9QUklNSVRJVkVTX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzE4LCAyIH0sCj4gIAl7 ICJWU19JTlZPQ0FUSU9OX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzIwLCAyIH0sCj4gQEAgLTc4 LDcgKzg1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuYW1lZF9yZWdpc3RlciB7Cj4gIAl7ICJH U19QUklNSVRJVkVTX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzMwLCAyIH0sCj4gIAl7ICJDTF9J TlZPQ0FUSU9OX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzM4LCAyIH0sCj4gIAl7ICJDTF9QUklN SVRJVkVTX0NPVU5UIiwgR0VONCwgUkNTMCwgMHgyMzQwLCAyIH0sCj4gLQl7ICJQU19JTlZPQ0FU SU9OX0NPVU5UXzAiLCBHRU40LCBSQ1MwLCAweDIyYzgsIDIgfSwKPiArCXsgIlBTX0lOVk9DQVRJ T05fQ09VTlRfMCIsIEdFTjQsIFJDUzAsIDB4MjJjOCwgMiwgLndyaXRlX21hc2sgPSB+MHgzIH0s CgpJIGNhbid0IGZpbmQgYSByZWFzb24gZm9yIGFkZGluZyAiLndyaXRlX21hc2sgPSB+MHgzIi4K CkFtb25nIG90aGVyIHBsYWNlcywgSSd2ZSBsb29rZWQgaW46Cmh0dHBzOi8vMDEub3JnL3NpdGVz L2RlZmF1bHQvZmlsZXMvZG9jdW1lbnRhdGlvbi9pbnRlbC1nZngtcHJtLW9zcmMta2JsLXZvbDAy Yy1jb21tYW5kcmVmZXJlbmNlLXJlZ2lzdGVycy1wYXJ0Ml8wLnBkZgoKPiAgCXsgIlBTX0RFUFRI X0NPVU5UXzAiLCBHRU40LCBSQ1MwLCAweDIyZDgsIDIgfSwKPiAgCXsgIkdQVUdQVV9ESVNQQVRD SERJTVgiLCBHRU44LCBSQ1MwLCAweDI1MDAgfSwKPiAgCXsgIkdQVUdQVV9ESVNQQVRDSERJTVki LCBHRU44LCBSQ1MwLCAweDI1MDQgfSwKPiBAQCAtODYsNyArOTMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IG5hbWVkX3JlZ2lzdGVyIHsKPiAgCXsgIk1JX1BSRURJQ0FURV9TUkMwIiwgR0VOOCwg UkNTMCwgMHgyNDAwLCAyIH0sCj4gIAl7ICJNSV9QUkVESUNBVEVfU1JDMSIsIEdFTjgsIFJDUzAs IDB4MjQwOCwgMiB9LAo+ICAJeyAiTUlfUFJFRElDQVRFX0RBVEEiLCBHRU44LCBSQ1MwLCAweDI0 MTAsIDIgfSwKPiAtCXsgIk1JX1BSRURfUkVTVUxUIiwgR0VOOCwgUkNTMCwgMHgyNDE4IH0sCj4g Kwl7ICJNSV9QUkVEX1JFU1VMVCIsIEdFTjgsIFJDUzAsIDB4MjQxOCwgLndyaXRlX21hc2sgPSAw eDEgfSwKPiAgCXsgIjNEUFJJTV9FTkRfT0ZGU0VUIiwgR0VONiwgUkNTMCwgMHgyNDIwIH0sCj4g IAl7ICIzRFBSSU1fU1RBUlRfVkVSVEVYIiwgR0VONiwgUkNTMCwgMHgyNDMwIH0sCj4gIAl7ICIz RFBSSU1fVkVSVEVYX0NPVU5UIiwgR0VONiwgUkNTMCwgMHgyNDM0IH0sCj4gQEAgLTk0LDQ1ICsx MDEsNDUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuYW1lZF9yZWdpc3RlciB7Cj4gIAl7ICIzRFBS SU1fU1RBUlRfSU5TVEFOQ0UiLCBHRU42LCBSQ1MwLCAweDI0M2MgfSwKPiAgCXsgIjNEUFJJTV9C QVNFX1ZFUlRFWCIsIEdFTjYsIFJDUzAsIDB4MjQ0MCB9LAo+ICAJeyAiR1BHUFVfVEhSRUFEU19E SVNQQVRDSEVEIiwgR0VOOCwgUkNTMCwgMHgyMjkwLCAyIH0sCj4gLQl7ICJQU19JTlZPQ0FUSU9O X0NPVU5UXzEiLCBHRU44LCBSQ1MwLCAweDIyZjAsIDIgfSwKPiArCXsgIlBTX0lOVk9DQVRJT05f Q09VTlRfMSIsIEdFTjgsIFJDUzAsIDB4MjJmMCwgMiwgLndyaXRlX21hc2sgPSB+MHgzIH0sCgpT YW1lIGNvbW1lbnQgYXMgZm9yICJQU19JTlZPQ0FUSU9OX0NPVU5UXzAiIGFib3ZlLgoKPiAgCXsg IlBTX0RFUFRIX0NPVU5UXzEiLCBHRU44LCBSQ1MwLCAweDIyZjgsIDIgfSwKPiAgCXsgIkJCX09G RlNFVCIsIEdFTjgsIFJDUzAsIDB4MjE1OCwgLmlnbm9yZV9iaXRzID0gMHg0IH0sCj4gIAl7ICJN SV9QUkVESUNBVEVfUkVTVUxUXzEiLCBHRU44LCBSQ1MwLCAweDI0MWMgfSwKPiAgCXsgIkNTX0dQ UiIsIEdFTjgsIFJDUzAsIDB4MjYwMCwgMzIgfSwKPiAgCXsgIk9BX0NUWF9DT05UUk9MIiwgR0VO OCwgUkNTMCwgMHgyMzYwIH0sCj4gIAl7ICJPQUNUWElEIiwgR0VOOCwgUkNTMCwgMHgyMzY0IH0s Cj4gLQl7ICJQU19JTlZPQ0FUSU9OX0NPVU5UXzIiLCBHRU44LCBSQ1MwLCAweDI0NDgsIDIgfSwK PiArCXsgIlBTX0lOVk9DQVRJT05fQ09VTlRfMiIsIEdFTjgsIFJDUzAsIDB4MjQ0OCwgMiwgLndy aXRlX21hc2sgPSB+MHgzIH0sCgpTYW1lIGNvbW1lbnQgYXMgZm9yICJQU19JTlZPQ0FUSU9OX0NP VU5UXzAiIGFib3ZlLgoKPiAgCXsgIlBTX0RFUFRIX0NPVU5UXzIiLCBHRU44LCBSQ1MwLCAweDI0 NTAsIDIgfSwKPiAtCXsgIkNhY2hlX01vZGVfMCIsIEdFTjcsIFJDUzAsIDB4NzAwMCB9LAo+IC0J eyAiQ2FjaGVfTW9kZV8xIiwgR0VONywgUkNTMCwgMHg3MDA0IH0sCj4gLQl7ICJHVF9NT0RFIiwg R0VOOCwgUkNTMCwgMHg3MDA4IH0sCj4gLQl7ICJMM19Db25maWciLCBHRU43LCBSQ1MwLCAweDcw MzQgfSwKPiAtCXsgIlREX0NUTCIsIEdFTjgsIFJDUzAsIDB4ZTQwMCB9LAo+ICsJeyAiQ2FjaGVf TW9kZV8wIiwgR0VONywgUkNTMCwgMHg3MDAwLCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJeyAiQ2Fj aGVfTW9kZV8xIiwgR0VONywgUkNTMCwgMHg3MDA0LCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJeyAi R1RfTU9ERSIsIEdFTjgsIFJDUzAsIDB4NzAwOCwgLm1hc2tlZCA9IHRydWUgfSwKPiArCXsgIkwz X0NvbmZpZyIsIEdFTjgsIFJDUzAsIDB4NzAzNCB9LAo+ICsJeyAiVERfQ1RMIiwgR0VOOCwgUkNT MCwgMHhlNDAwLCAubWFza2VkID0gdHJ1ZSB9LAoKSXQgbG9va3MgdG8gbWUgbGlrZSBURF9DVEwg c2hvdWxkIG5vdCBiZSAiLm1hc2tlZCA9IHRydWUiLCBhcyBkb2NzIHN0YXRlCiJyZXNlcnZlZCIg YW5kICIzMToxNiBNQloiLgoKPiAgCXsgIlREX0NUTDIiLCBHRU44LCBSQ1MwLCAweGU0MDQgfSwK PiAtCXsgIlNPX05VTV9QUklNU19XUklURU4wIiwgR0VONiwgUkNTMCwgMHg1MjAwLCAyIH0sCj4g LQl7ICJTT19OVU1fUFJJTVNfV1JJVEVOMSIsIEdFTjYsIFJDUzAsIDB4NTIwOCwgMiB9LAo+IC0J eyAiU09fTlVNX1BSSU1TX1dSSVRFTjIiLCBHRU42LCBSQ1MwLCAweDUyMTAsIDIgfSwKPiAtCXsg IlNPX05VTV9QUklNU19XUklURU4zIiwgR0VONiwgUkNTMCwgMHg1MjE4LCAyIH0sCj4gKwl7ICJT T19OVU1fUFJJTVNfV1JJVFRFTjAiLCBHRU42LCBSQ1MwLCAweDUyMDAsIDIgfSwKPiArCXsgIlNP X05VTV9QUklNU19XUklUVEVOMSIsIEdFTjYsIFJDUzAsIDB4NTIwOCwgMiB9LAo+ICsJeyAiU09f TlVNX1BSSU1TX1dSSVRURU4yIiwgR0VONiwgUkNTMCwgMHg1MjEwLCAyIH0sCj4gKwl7ICJTT19O VU1fUFJJTVNfV1JJVFRFTjMiLCBHRU42LCBSQ1MwLCAweDUyMTgsIDIgfSwKPiAgCXsgIlNPX1BS SU1fU1RPUkFHRV9ORUVERUQwIiwgR0VONiwgUkNTMCwgMHg1MjQwLCAyIH0sCj4gIAl7ICJTT19Q UklNX1NUT1JBR0VfTkVFREVEMSIsIEdFTjYsIFJDUzAsIDB4NTI0OCwgMiB9LAo+ICAJeyAiU09f UFJJTV9TVE9SQUdFX05FRURFRDIiLCBHRU42LCBSQ1MwLCAweDUyNTAsIDIgfSwKPiAgCXsgIlNP X1BSSU1fU1RPUkFHRV9ORUVERUQzIiwgR0VONiwgUkNTMCwgMHg1MjU4LCAyIH0sCj4gLQl7ICJT T19XUklURV9PRkZTRVQwIiwgR0VONywgUkNTMCwgMHg1MjgwIH0sCj4gLQl7ICJTT19XUklURV9P RkZTRVQxIiwgR0VONywgUkNTMCwgMHg1Mjg0IH0sCj4gLQl7ICJTT19XUklURV9PRkZTRVQyIiwg R0VONywgUkNTMCwgMHg1Mjg4IH0sCj4gLQl7ICJTT19XUklURV9PRkZTRVQzIiwgR0VONywgUkNT MCwgMHg1MjhjIH0sCj4gKwl7ICJTT19XUklURV9PRkZTRVQwIiwgR0VONywgUkNTMCwgMHg1Mjgw LCAud3JpdGVfbWFzayA9IH4weDMgfSwKPiArCXsgIlNPX1dSSVRFX09GRlNFVDEiLCBHRU43LCBS Q1MwLCAweDUyODQsIC53cml0ZV9tYXNrID0gfjB4MyB9LAo+ICsJeyAiU09fV1JJVEVfT0ZGU0VU MiIsIEdFTjcsIFJDUzAsIDB4NTI4OCwgLndyaXRlX21hc2sgPSB+MHgzIH0sCj4gKwl7ICJTT19X UklURV9PRkZTRVQzIiwgR0VONywgUkNTMCwgMHg1MjhjLCAud3JpdGVfbWFzayA9IH4weDMgfSwK PiAgCXsgIk9BX0NPTlRST0wiLCBOT0NUWCwgUkNTMCwgMHgyYjAwIH0sCj4gIAl7ICJQRVJGX0NO VF8xIiwgTk9DVFgsIFJDUzAsIDB4OTFiOCwgMiB9LAo+ICAJeyAiUEVSRl9DTlRfMiIsIE5PQ1RY LCBSQ1MwLCAweDkxYzAsIDIgfSwKPiAgCj4gIAkvKiBQcml2aWxlZ2VkIChlbmFibGVkIGJ5IHcv YSArIEZPUkNFX1RPX05PTlBSSVYpICovCj4gIAl7ICJDVFhfUFJFRU1QVCIsIE5PQ1RYIC8qIEdF Tl9SQU5HRSg5LCAxMCkgKi8sIFJDUzAsIDB4MjI0OCB9LAo+IC0JeyAiQ1NfQ0hJQ0tFTjEiLCBH RU5fUkFOR0UoOSwgMTApLCBSQ1MwLCAweDI1ODAgfSwKPiAtCXsgIkhEQ19DSElDS0VOMSIsIEdF Tl9SQU5HRSg5LCAxMCksIFJDUzAsIDB4NzMwNCB9LAo+IC0JeyAiTDNTUVJFRzEiLCBHRU44LCBS Q1MwLCAweGIwMTAgfSwKPiArCXsgIkNTX0NISUNLRU4xIiwgR0VOX1JBTkdFKDksIDEwKSwgUkNT MCwgMHgyNTgwLCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJeyAiSERDX0NISUNLRU4xIiwgR0VOX1JB TkdFKDksIDEwKSwgUkNTMCwgMHg3MzA0LCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJeyAiTDNTUVJF RzQiLCBOT0NUWCAvKiBHRU45OnNrbCxrYmwgKi8sIFJDUzAsIDB4YjExOCwgLndyaXRlX21hc2sg PSB+MHgxZmZmZjAgfSwKPiAgCj4gIAl7ICJCQ1NfR1BSIiwgR0VOOSwgQkNTMCwgMHgyMjYwMCwg MzIgfSwKPiAtCXsgIkJDU19TV0NUUkwiLCBHRU44LCBCQ1MwLCAweDIyMjAwIH0sCj4gKwl7ICJC Q1NfU1dDVFJMIiwgR0VOOCwgQkNTMCwgMHgyMjIwMCwgLndyaXRlX21hc2sgPSAweDMsIC5tYXNr ZWQgPSB0cnVlIH0sCj4gIAo+ICAJeyAiVkNTMF9HUFIiLCBHRU45LCBWQ1MwLCAweDEyNjAwLCAz MiB9LAo+ICAJeyAiTUZDX1ZEQk9YMSIsIE5PQ1RYLCBWQ1MwLCAweDEyODAwLCA2NCB9LAo+IEBA IC0xOTEsNiArMTk4LDQyIEBAIHN0YXRpYyBib29sIGlnbm9yZV9yZWdpc3Rlcih1aW50MzJfdCBv ZmZzZXQpCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHRtcGxfcmVn cyhpbnQgZmQsCj4gKwkJICAgICAgdWludDMyX3QgY3R4LAo+ICsJCSAgICAgIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiArCQkgICAgICB1aW50MzJfdCBoYW5kbGUs Cj4gKwkJICAgICAgdWludDMyX3QgdmFsdWUpCj4gK3sKPiArCWNvbnN0IHVuc2lnbmVkIGludCBn ZW5fYml0ID0gMSA8PCBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICsJY29u c3QgdW5zaWduZWQgaW50IGVuZ2luZV9iaXQgPSBFTkdJTkUoZS0+Y2xhc3MsIGUtPmluc3RhbmNl KTsKPiArCXVuc2lnbmVkIGludCByZWdzX3NpemU7Cj4gKwl1aW50MzJfdCAqcmVnczsKPiArCj4g KwlyZWdzX3NpemUgPSBOVU1fUkVHUyAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwlyZWdzX3NpemUg PSBQQUdFX0FMSUdOKHJlZ3Nfc2l6ZSk7Cj4gKwo+ICsJcmVncyA9IGdlbV9tbWFwX19jcHUoZmQs IGhhbmRsZSwgMCwgcmVnc19zaXplLCBQUk9UX1dSSVRFKTsKPiArCWdlbV9zZXRfZG9tYWluKGZk LCBoYW5kbGUsCj4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVfR0VNX0RPTUFJ Tl9DUFUpOwo+ICsKPiArCWZvciAoY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyICpyID0gbm9u cHJpdl9yZWdpc3RlcnM7IHItPm5hbWU7IHIrKykgewo+ICsJCWlmICghKHItPmVuZ2luZV9tYXNr ICYgZW5naW5lX2JpdCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmICghKHItPmdlbl9tYXNrICYg Z2VuX2JpdCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWZvciAodW5zaWduZWQgY291bnQgPSByLT5j b3VudCA/OiAxLCBvZmZzZXQgPSByLT5vZmZzZXQ7Cj4gKwkJICAgICBjb3VudC0tOyBvZmZzZXQg Kz0gNCkgewo+ICsJCQl1aW50MzJfdCB4ID0gdmFsdWU7Cj4gKwkJCWlmIChyLT53cml0ZV9tYXNr KQo+ICsJCQkJeCAmPSByLT53cml0ZV9tYXNrOwo+ICsJCQlpZiAoci0+bWFza2VkKQo+ICsJCQkJ eCAmPSAweGZmZmY7Cj4gKwkJCXJlZ3Nbb2Zmc2V0L3NpemVvZigqcmVncyldID0geDsKPiArCQl9 Cj4gKwl9Cj4gKwltdW5tYXAocmVncywgcmVnc19zaXplKTsKPiArfQo+ICsKPiAgc3RhdGljIHVp bnQzMl90IHJlYWRfcmVncyhpbnQgZmQsCj4gIAkJCSAgdWludDMyX3QgY3R4LAo+ICAJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiBAQCAtMjk0LDEyICszMzcs MTUgQEAgc3RhdGljIHZvaWQgd3JpdGVfcmVncyhpbnQgZmQsCj4gIAkJCWNvbnRpbnVlOwo+ICAJ CWZvciAodW5zaWduZWQgY291bnQgPSByLT5jb3VudCA/OiAxLCBvZmZzZXQgPSByLT5vZmZzZXQ7 Cj4gIAkJICAgICBjb3VudC0tOyBvZmZzZXQgKz0gNCkgewo+ICsJCQl1aW50MzJfdCB4ID0gdmFs dWU7Cj4gKwkJCWlmIChyLT53cml0ZV9tYXNrKQo+ICsJCQkJeCAmPSByLT53cml0ZV9tYXNrOwo+ ICsJCQlpZiAoci0+bWFza2VkKQo+ICsJCQkJeCB8PSAweGZmZmZ1IDw8IDE2Owo+ICsKPiAgCQkJ KmIrKyA9IDB4MjIgPDwgMjMgfCAxOyAvKiBMUkkgKi8KPiAgCQkJKmIrKyA9IG9mZnNldDsKPiAt CQkJaWYgKHItPm1hc2tlZCkKPiAtCQkJCSpiKysgPSB2YWx1ZSB8IDB4ZmZmZnUgPDwgMTY7Cj4g LQkJCWVsc2UKPiAtCQkJCSpiKysgPSB2YWx1ZTsKPiArCQkJKmIrKyA9IHg7Cj4gIAkJfQo+ICAJ fQo+ICAJKmIrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gQEAgLTQ3NCw2ICs1MjAsNjMgQEAg c3RhdGljIHZvaWQgY29tcGFyZV9yZWdzKGludCBmZCwgdWludDMyX3QgQSwgdWludDMyX3QgQiwg Y29uc3QgY2hhciAqd2hvKQo+ICAJCSAgICAgbnVtX2Vycm9ycywgd2hvKTsKPiAgfQo+ICAKPiAr c3RhdGljIHZvaWQgbm9ucHJpdihpbnQgZmQsCj4gKwkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwKPiArCQkgICAgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4g KwlzdGF0aWMgY29uc3QgdWludDMyX3QgdmFsdWVzW10gPSB7Cj4gKwkJMHgwLAo+ICsJCTB4ZmZm ZmZmZmYsCj4gKwkJMHhjY2NjY2NjYywKPiArCQkweDMzMzMzMzMzLAo+ICsJCTB4NTU1NTU1NTUs Cj4gKwkJMHhhYWFhYWFhYSwKPiArCQkweGRlYWRiZWVmCj4gKwl9Owo+ICsJdW5zaWduZWQgaW50 IGVuZ2luZSA9Cj4gKwkJZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLCBlLT5jbGFz cywgZS0+aW5zdGFuY2UpOwo+ICsJdW5zaWduZWQgaW50IG51bV92YWx1ZXMgPSBBUlJBWV9TSVpF KHZhbHVlcyk7Cj4gKwo+ICsJLyogU2lnaCAtLSB3ZSBuZWVkIGNtZHBhcnNlciBhY2Nlc3MgdG8g b3VyIG93biByZWdpc3RlcnMhICovCj4gKwlpZ3Rfc2tpcF9vbihpbnRlbF9nZW4oaW50ZWxfZ2V0 X2RybV9kZXZpZChmZCkpIDwgOCk7Cj4gKwo+ICsJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICsK PiArCWZvciAoaW50IHYgPSAwOyB2IDwgbnVtX3ZhbHVlczsgdisrKSB7Cj4gKwkJaWd0X3NwaW5f dCAqc3BpbiA9IE5VTEw7Cj4gKwkJdWludDMyX3QgY3R4LCByZWdzWzJdLCB0bXBsOwo+ICsKPiAr CQljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ICsJCXRtcGwgPSByZWFkX3JlZ3MoZmQs IGN0eCwgZSwgZmxhZ3MpOwo+ICsJCXJlZ3NbMF0gPSByZWFkX3JlZ3MoZmQsIGN0eCwgZSwgZmxh Z3MpOwo+ICsKPiArCQl0bXBsX3JlZ3MoZmQsIGN0eCwgZSwgdG1wbCwgdmFsdWVzW3ZdKTsKPiAr Cj4gKwkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmN0eCA9IGN0eCwgLmVuZ2luZSA9 IGVuZ2luZSk7Cj4gKwo+ICsJCWlndF9kZWJ1ZygiJXNbJWRdOiBTZXR0aW5nIGFsbCByZWdpc3Rl cnMgdG8gMHglMDh4XG4iLAo+ICsJCQkgIF9fZnVuY19fLCB2LCB2YWx1ZXNbdl0pOwo+ICsJCXdy aXRlX3JlZ3MoZmQsIGN0eCwgZSwgZmxhZ3MsIHZhbHVlc1t2XSk7Cj4gKwo+ICsJCXJlZ3NbMV0g PSByZWFkX3JlZ3MoZmQsIGN0eCwgZSwgZmxhZ3MpOwo+ICsKPiArCQkvKgo+ICsJCSAqIFJlc3Rv cmUgdGhlIG9yaWdpbmFsIHJlZ2lzdGVyIHZhbHVlcyBiZWZvcmUgdGhlIEhXIGlkbGVzLgo+ICsJ CSAqIE9yIGVsc2UgaXQgbWF5IG5ldmVyIHJlc3RhcnQhCj4gKwkJICovCj4gKwkJcmVzdG9yZV9y ZWdzKGZkLCBjdHgsIGUsIGZsYWdzLCByZWdzWzBdKTsKPiArCj4gKwkJaWd0X3NwaW5fYmF0Y2hf ZnJlZShmZCwgc3Bpbik7Cj4gKwo+ICsJCWNvbXBhcmVfcmVncyhmZCwgdG1wbCwgcmVnc1sxXSwg Im5vbnByaXYgcmVhZC93cml0ZXMiKTsKPiArCj4gKwkJZm9yIChpbnQgbiA9IDA7IG4gPCBBUlJB WV9TSVpFKHJlZ3MpOyBuKyspCj4gKwkJCWdlbV9jbG9zZShmZCwgcmVnc1tuXSk7Cj4gKwkJZ2Vt X2NvbnRleHRfZGVzdHJveShmZCwgY3R4KTsKPiArCQlnZW1fY2xvc2UoZmQsIHRtcGwpOwo+ICsJ fQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpc29sYXRpb24oaW50IGZkLAo+ICAJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiAgCQkgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpCj4gQEAgLTcxNSw2ICs4MTgsOSBAQCBpZ3RfbWFpbgo+ICAJCQkJaWd0X2Zv cmtfaGFuZ19kZXRlY3RvcihmZCk7Cj4gIAkJCX0KPiAgCj4gKwkJCWlndF9zdWJ0ZXN0X2YoIiVz LW5vbnByaXYiLCBlLT5uYW1lKQo+ICsJCQkJbm9ucHJpdihmZCwgZSwgMCk7Cj4gKwo+ICAJCQlp Z3Rfc3VidGVzdF9mKCIlcy1jbGVhbiIsIGUtPm5hbWUpCj4gIAkJCQlpc29sYXRpb24oZmQsIGUs IDApOwo+ICAJCQlpZ3Rfc3VidGVzdF9mKCIlcy1kaXJ0eS1jcmVhdGUiLCBlLT5uYW1lKQo+IC0t IAo+IDIuMjEuMAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=