From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 1 Mar 2019 16:53:44 -0800 From: Dale B Stimson Message-ID: <20190302005344.GB148065@dbstims-dev.fm.intel.com> References: <20190222123959.3850-1-chris@chris-wilson.co.uk> <20190301081919.9196-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190301081919.9196-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: UmV2aWV3ZWQtQnk6IERhbGUgQiBTdGltc29uIDxkYWxlLmIuc3RpbXNvbkBpbnRlbC5jb20+CgpP biBGcmksIE1hciAwMSwgMjAxOSBhdCAwODoxOToxOUFNICswMDAwLCBDaHJpcyBXaWxzb24gd3Jv dGU6Cj4gVmVyaWZ5IHRoYXQgb3VyIGxpc3Qgb2Ygbm9ucHJpdiByZWdpc3RlcnMgZXhpc3QgYW5k IGFyZSB3cml0YWJsZS4KPiAKPiB2MjogVERfQ1RMIGhhcyBhIHdyaXRlX21hc2sgb2YgMHhmZmZm IGluc3RlYWQgb2YgYmVpbmcgYSBtYXNrZWQKPiByZWdpc3Rlci4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogRGFsZSBCIFN0 aW1zb24gPGRhbGUuYi5zdGltc29uQGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFo dGluZW5AbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICB0ZXN0cy9pOTE1L2dlbV9jdHhfaXNvbGF0 aW9uLmMgfCAxNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4gIDEgZmlsZSBj aGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9pc29sYXRpb24uYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9p c29sYXRpb24uYwo+IGluZGV4IDgzOWQ0OWFkZS4uZTUwY2M5YTcyIDEwMDY0NAo+IC0tLSBhL3Rl c3RzL2k5MTUvZ2VtX2N0eF9pc29sYXRpb24uYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9p c29sYXRpb24uYwo+IEBAIC01OSwxNiArNTksMjMgQEAgZW51bSB7Cj4gIAo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyIHsKPiAgCWNvbnN0IGNoYXIgKm5hbWU7Cj4gLQl1bnNp Z25lZCBpbnQgZ2VuX21hc2s7Cj4gLQl1bnNpZ25lZCBpbnQgZW5naW5lX21hc2s7Cj4gLQl1aW50 MzJfdCBvZmZzZXQ7Cj4gKwl1bnNpZ25lZCBpbnQgZ2VuX21hc2s7IC8qIG9uIHdoaWNoIGdlbiB0 aGUgcmVnaXN0ZXIgZXhpc3RzICovCj4gKwl1bnNpZ25lZCBpbnQgZW5naW5lX21hc2s7IC8qIHBy ZWZlcnJlZCBlbmdpbmUgLyBwb3dlcndlbGwgKi8KPiArCXVpbnQzMl90IG9mZnNldDsgLyogYWRk cmVzcyBvZiByZWdpc3RlciwgZnJvbSBib3R0b20gb2YgbW1pbyBiYXIgKi8KPiAgCXVpbnQzMl90 IGNvdW50Owo+ICAJdWludDMyX3QgaWdub3JlX2JpdHM7Cj4gKwl1aW50MzJfdCB3cml0ZV9tYXNr OyAvKiBzb21lIHJlZ2lzdGVycyBiaXRzIGRvIG5vdCBleGlzdCAqLwo+ICAJYm9vbCBtYXNrZWQ7 Cj4gIH0gbm9ucHJpdl9yZWdpc3RlcnNbXSA9IHsKPiAgCXsgIk5PUElEIiwgTk9DVFgsIFJDUzAs IDB4MjA5NCB9LAo+ICAJeyAiTUlfUFJFRElDQVRFX1JFU1VMVF8yIiwgTk9DVFgsIFJDUzAsIDB4 MjNiYyB9LAo+IC0JeyAiSU5TVFBNIiwgR0VONiwgUkNTMCwgMHgyMGMwLCAxLCBCSVQoOCkgLyog cm8gY291bnRlciAqLywgdHJ1ZSB9LAo+ICsJewo+ICsJCSJJTlNUUE0iLAo+ICsJCUdFTjYsIFJD UzAsIDB4MjBjMCwKPiArCQkuaWdub3JlX2JpdHMgPSBCSVQoOCkgLyogcm8gY291bnRlciAqLywK PiArCQkud3JpdGVfbWFzayA9IEJJVCg4KSAvKiByc3ZkIHZhcmllcyBiZXR3ZWVuIGdlbiAqLywK PiArCQkubWFza2VkID0gdHJ1ZSwKPiArCX0sCj4gIAl7ICJJQV9WRVJUSUNFU19DT1VOVCIsIEdF TjQsIFJDUzAsIDB4MjMxMCwgMiB9LAo+ICAJeyAiSUFfUFJJTUlUSVZFU19DT1VOVCIsIEdFTjQs IFJDUzAsIDB4MjMxOCwgMiB9LAo+ICAJeyAiVlNfSU5WT0NBVElPTl9DT1VOVCIsIEdFTjQsIFJD UzAsIDB4MjMyMCwgMiB9LAo+IEBAIC03OCw3ICs4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg bmFtZWRfcmVnaXN0ZXIgewo+ICAJeyAiR1NfUFJJTUlUSVZFU19DT1VOVCIsIEdFTjQsIFJDUzAs IDB4MjMzMCwgMiB9LAo+ICAJeyAiQ0xfSU5WT0NBVElPTl9DT1VOVCIsIEdFTjQsIFJDUzAsIDB4 MjMzOCwgMiB9LAo+ICAJeyAiQ0xfUFJJTUlUSVZFU19DT1VOVCIsIEdFTjQsIFJDUzAsIDB4MjM0 MCwgMiB9LAo+IC0JeyAiUFNfSU5WT0NBVElPTl9DT1VOVF8wIiwgR0VONCwgUkNTMCwgMHgyMmM4 LCAyIH0sCj4gKwl7ICJQU19JTlZPQ0FUSU9OX0NPVU5UXzAiLCBHRU40LCBSQ1MwLCAweDIyYzgs IDIsIC53cml0ZV9tYXNrID0gfjB4MyB9LAo+ICAJeyAiUFNfREVQVEhfQ09VTlRfMCIsIEdFTjQs IFJDUzAsIDB4MjJkOCwgMiB9LAo+ICAJeyAiR1BVR1BVX0RJU1BBVENIRElNWCIsIEdFTjgsIFJD UzAsIDB4MjUwMCB9LAo+ICAJeyAiR1BVR1BVX0RJU1BBVENIRElNWSIsIEdFTjgsIFJDUzAsIDB4 MjUwNCB9LAo+IEBAIC04Niw3ICs5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZWRfcmVn aXN0ZXIgewo+ICAJeyAiTUlfUFJFRElDQVRFX1NSQzAiLCBHRU44LCBSQ1MwLCAweDI0MDAsIDIg fSwKPiAgCXsgIk1JX1BSRURJQ0FURV9TUkMxIiwgR0VOOCwgUkNTMCwgMHgyNDA4LCAyIH0sCj4g IAl7ICJNSV9QUkVESUNBVEVfREFUQSIsIEdFTjgsIFJDUzAsIDB4MjQxMCwgMiB9LAo+IC0JeyAi TUlfUFJFRF9SRVNVTFQiLCBHRU44LCBSQ1MwLCAweDI0MTggfSwKPiArCXsgIk1JX1BSRURfUkVT VUxUIiwgR0VOOCwgUkNTMCwgMHgyNDE4LCAud3JpdGVfbWFzayA9IDB4MSB9LAo+ICAJeyAiM0RQ UklNX0VORF9PRkZTRVQiLCBHRU42LCBSQ1MwLCAweDI0MjAgfSwKPiAgCXsgIjNEUFJJTV9TVEFS VF9WRVJURVgiLCBHRU42LCBSQ1MwLCAweDI0MzAgfSwKPiAgCXsgIjNEUFJJTV9WRVJURVhfQ09V TlQiLCBHRU42LCBSQ1MwLCAweDI0MzQgfSwKPiBAQCAtOTQsNDUgKzEwMSw0NSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyIHsKPiAgCXsgIjNEUFJJTV9TVEFSVF9JTlNUQU5D RSIsIEdFTjYsIFJDUzAsIDB4MjQzYyB9LAo+ICAJeyAiM0RQUklNX0JBU0VfVkVSVEVYIiwgR0VO NiwgUkNTMCwgMHgyNDQwIH0sCj4gIAl7ICJHUEdQVV9USFJFQURTX0RJU1BBVENIRUQiLCBHRU44 LCBSQ1MwLCAweDIyOTAsIDIgfSwKPiAtCXsgIlBTX0lOVk9DQVRJT05fQ09VTlRfMSIsIEdFTjgs IFJDUzAsIDB4MjJmMCwgMiB9LAo+ICsJeyAiUFNfSU5WT0NBVElPTl9DT1VOVF8xIiwgR0VOOCwg UkNTMCwgMHgyMmYwLCAyLCAud3JpdGVfbWFzayA9IH4weDMgfSwKPiAgCXsgIlBTX0RFUFRIX0NP VU5UXzEiLCBHRU44LCBSQ1MwLCAweDIyZjgsIDIgfSwKPiAgCXsgIkJCX09GRlNFVCIsIEdFTjgs IFJDUzAsIDB4MjE1OCwgLmlnbm9yZV9iaXRzID0gMHg0IH0sCj4gIAl7ICJNSV9QUkVESUNBVEVf UkVTVUxUXzEiLCBHRU44LCBSQ1MwLCAweDI0MWMgfSwKPiAgCXsgIkNTX0dQUiIsIEdFTjgsIFJD UzAsIDB4MjYwMCwgMzIgfSwKPiAgCXsgIk9BX0NUWF9DT05UUk9MIiwgR0VOOCwgUkNTMCwgMHgy MzYwIH0sCj4gIAl7ICJPQUNUWElEIiwgR0VOOCwgUkNTMCwgMHgyMzY0IH0sCj4gLQl7ICJQU19J TlZPQ0FUSU9OX0NPVU5UXzIiLCBHRU44LCBSQ1MwLCAweDI0NDgsIDIgfSwKPiArCXsgIlBTX0lO Vk9DQVRJT05fQ09VTlRfMiIsIEdFTjgsIFJDUzAsIDB4MjQ0OCwgMiwgLndyaXRlX21hc2sgPSB+ MHgzIH0sCj4gIAl7ICJQU19ERVBUSF9DT1VOVF8yIiwgR0VOOCwgUkNTMCwgMHgyNDUwLCAyIH0s Cj4gLQl7ICJDYWNoZV9Nb2RlXzAiLCBHRU43LCBSQ1MwLCAweDcwMDAgfSwKPiAtCXsgIkNhY2hl X01vZGVfMSIsIEdFTjcsIFJDUzAsIDB4NzAwNCB9LAo+IC0JeyAiR1RfTU9ERSIsIEdFTjgsIFJD UzAsIDB4NzAwOCB9LAo+IC0JeyAiTDNfQ29uZmlnIiwgR0VONywgUkNTMCwgMHg3MDM0IH0sCj4g LQl7ICJURF9DVEwiLCBHRU44LCBSQ1MwLCAweGU0MDAgfSwKPiArCXsgIkNhY2hlX01vZGVfMCIs IEdFTjcsIFJDUzAsIDB4NzAwMCwgLm1hc2tlZCA9IHRydWUgfSwKPiArCXsgIkNhY2hlX01vZGVf MSIsIEdFTjcsIFJDUzAsIDB4NzAwNCwgLm1hc2tlZCA9IHRydWUgfSwKPiArCXsgIkdUX01PREUi LCBHRU44LCBSQ1MwLCAweDcwMDgsIC5tYXNrZWQgPSB0cnVlIH0sCj4gKwl7ICJMM19Db25maWci LCBHRU44LCBSQ1MwLCAweDcwMzQgfSwKPiArCXsgIlREX0NUTCIsIEdFTjgsIFJDUzAsIDB4ZTQw MCwgLndyaXRlX21hc2sgPSAweGZmZmYgfSwKPiAgCXsgIlREX0NUTDIiLCBHRU44LCBSQ1MwLCAw eGU0MDQgfSwKPiAtCXsgIlNPX05VTV9QUklNU19XUklURU4wIiwgR0VONiwgUkNTMCwgMHg1MjAw LCAyIH0sCj4gLQl7ICJTT19OVU1fUFJJTVNfV1JJVEVOMSIsIEdFTjYsIFJDUzAsIDB4NTIwOCwg MiB9LAo+IC0JeyAiU09fTlVNX1BSSU1TX1dSSVRFTjIiLCBHRU42LCBSQ1MwLCAweDUyMTAsIDIg fSwKPiAtCXsgIlNPX05VTV9QUklNU19XUklURU4zIiwgR0VONiwgUkNTMCwgMHg1MjE4LCAyIH0s Cj4gKwl7ICJTT19OVU1fUFJJTVNfV1JJVFRFTjAiLCBHRU42LCBSQ1MwLCAweDUyMDAsIDIgfSwK PiArCXsgIlNPX05VTV9QUklNU19XUklUVEVOMSIsIEdFTjYsIFJDUzAsIDB4NTIwOCwgMiB9LAo+ ICsJeyAiU09fTlVNX1BSSU1TX1dSSVRURU4yIiwgR0VONiwgUkNTMCwgMHg1MjEwLCAyIH0sCj4g Kwl7ICJTT19OVU1fUFJJTVNfV1JJVFRFTjMiLCBHRU42LCBSQ1MwLCAweDUyMTgsIDIgfSwKPiAg CXsgIlNPX1BSSU1fU1RPUkFHRV9ORUVERUQwIiwgR0VONiwgUkNTMCwgMHg1MjQwLCAyIH0sCj4g IAl7ICJTT19QUklNX1NUT1JBR0VfTkVFREVEMSIsIEdFTjYsIFJDUzAsIDB4NTI0OCwgMiB9LAo+ ICAJeyAiU09fUFJJTV9TVE9SQUdFX05FRURFRDIiLCBHRU42LCBSQ1MwLCAweDUyNTAsIDIgfSwK PiAgCXsgIlNPX1BSSU1fU1RPUkFHRV9ORUVERUQzIiwgR0VONiwgUkNTMCwgMHg1MjU4LCAyIH0s Cj4gLQl7ICJTT19XUklURV9PRkZTRVQwIiwgR0VONywgUkNTMCwgMHg1MjgwIH0sCj4gLQl7ICJT T19XUklURV9PRkZTRVQxIiwgR0VONywgUkNTMCwgMHg1Mjg0IH0sCj4gLQl7ICJTT19XUklURV9P RkZTRVQyIiwgR0VONywgUkNTMCwgMHg1Mjg4IH0sCj4gLQl7ICJTT19XUklURV9PRkZTRVQzIiwg R0VONywgUkNTMCwgMHg1MjhjIH0sCj4gKwl7ICJTT19XUklURV9PRkZTRVQwIiwgR0VONywgUkNT MCwgMHg1MjgwLCAud3JpdGVfbWFzayA9IH4weDMgfSwKPiArCXsgIlNPX1dSSVRFX09GRlNFVDEi LCBHRU43LCBSQ1MwLCAweDUyODQsIC53cml0ZV9tYXNrID0gfjB4MyB9LAo+ICsJeyAiU09fV1JJ VEVfT0ZGU0VUMiIsIEdFTjcsIFJDUzAsIDB4NTI4OCwgLndyaXRlX21hc2sgPSB+MHgzIH0sCj4g Kwl7ICJTT19XUklURV9PRkZTRVQzIiwgR0VONywgUkNTMCwgMHg1MjhjLCAud3JpdGVfbWFzayA9 IH4weDMgfSwKPiAgCXsgIk9BX0NPTlRST0wiLCBOT0NUWCwgUkNTMCwgMHgyYjAwIH0sCj4gIAl7 ICJQRVJGX0NOVF8xIiwgTk9DVFgsIFJDUzAsIDB4OTFiOCwgMiB9LAo+ICAJeyAiUEVSRl9DTlRf MiIsIE5PQ1RYLCBSQ1MwLCAweDkxYzAsIDIgfSwKPiAgCj4gIAkvKiBQcml2aWxlZ2VkIChlbmFi bGVkIGJ5IHcvYSArIEZPUkNFX1RPX05PTlBSSVYpICovCj4gIAl7ICJDVFhfUFJFRU1QVCIsIE5P Q1RYIC8qIEdFTl9SQU5HRSg5LCAxMCkgKi8sIFJDUzAsIDB4MjI0OCB9LAo+IC0JeyAiQ1NfQ0hJ Q0tFTjEiLCBHRU5fUkFOR0UoOSwgMTApLCBSQ1MwLCAweDI1ODAgfSwKPiAtCXsgIkhEQ19DSElD S0VOMSIsIEdFTl9SQU5HRSg5LCAxMCksIFJDUzAsIDB4NzMwNCB9LAo+IC0JeyAiTDNTUVJFRzEi LCBHRU44LCBSQ1MwLCAweGIwMTAgfSwKPiArCXsgIkNTX0NISUNLRU4xIiwgR0VOX1JBTkdFKDks IDEwKSwgUkNTMCwgMHgyNTgwLCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJeyAiSERDX0NISUNLRU4x IiwgR0VOX1JBTkdFKDksIDEwKSwgUkNTMCwgMHg3MzA0LCAubWFza2VkID0gdHJ1ZSB9LAo+ICsJ eyAiTDNTUVJFRzQiLCBOT0NUWCAvKiBHRU45OnNrbCxrYmwgKi8sIFJDUzAsIDB4YjExOCwgLndy aXRlX21hc2sgPSB+MHgxZmZmZjAgfSwKPiAgCj4gIAl7ICJCQ1NfR1BSIiwgR0VOOSwgQkNTMCwg MHgyMjYwMCwgMzIgfSwKPiAtCXsgIkJDU19TV0NUUkwiLCBHRU44LCBCQ1MwLCAweDIyMjAwIH0s Cj4gKwl7ICJCQ1NfU1dDVFJMIiwgR0VOOCwgQkNTMCwgMHgyMjIwMCwgLndyaXRlX21hc2sgPSAw eDMsIC5tYXNrZWQgPSB0cnVlIH0sCj4gIAo+ICAJeyAiVkNTMF9HUFIiLCBHRU45LCBWQ1MwLCAw eDEyNjAwLCAzMiB9LAo+ICAJeyAiTUZDX1ZEQk9YMSIsIE5PQ1RYLCBWQ1MwLCAweDEyODAwLCA2 NCB9LAo+IEBAIC0xOTEsNiArMTk4LDQyIEBAIHN0YXRpYyBib29sIGlnbm9yZV9yZWdpc3Rlcih1 aW50MzJfdCBvZmZzZXQpCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lk IHRtcGxfcmVncyhpbnQgZmQsCj4gKwkJICAgICAgdWludDMyX3QgY3R4LAo+ICsJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiArCQkgICAgICB1aW50MzJf dCBoYW5kbGUsCj4gKwkJICAgICAgdWludDMyX3QgdmFsdWUpCj4gK3sKPiArCWNvbnN0IHVuc2ln bmVkIGludCBnZW5fYml0ID0gMSA8PCBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkp Owo+ICsJY29uc3QgdW5zaWduZWQgaW50IGVuZ2luZV9iaXQgPSBFTkdJTkUoZS0+Y2xhc3MsIGUt Pmluc3RhbmNlKTsKPiArCXVuc2lnbmVkIGludCByZWdzX3NpemU7Cj4gKwl1aW50MzJfdCAqcmVn czsKPiArCj4gKwlyZWdzX3NpemUgPSBOVU1fUkVHUyAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwly ZWdzX3NpemUgPSBQQUdFX0FMSUdOKHJlZ3Nfc2l6ZSk7Cj4gKwo+ICsJcmVncyA9IGdlbV9tbWFw X19jcHUoZmQsIGhhbmRsZSwgMCwgcmVnc19zaXplLCBQUk9UX1dSSVRFKTsKPiArCWdlbV9zZXRf ZG9tYWluKGZkLCBoYW5kbGUsCj4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVf R0VNX0RPTUFJTl9DUFUpOwo+ICsKPiArCWZvciAoY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVy ICpyID0gbm9ucHJpdl9yZWdpc3RlcnM7IHItPm5hbWU7IHIrKykgewo+ICsJCWlmICghKHItPmVu Z2luZV9tYXNrICYgZW5naW5lX2JpdCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmICghKHItPmdl bl9tYXNrICYgZ2VuX2JpdCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWZvciAodW5zaWduZWQgY291 bnQgPSByLT5jb3VudCA/OiAxLCBvZmZzZXQgPSByLT5vZmZzZXQ7Cj4gKwkJICAgICBjb3VudC0t OyBvZmZzZXQgKz0gNCkgewo+ICsJCQl1aW50MzJfdCB4ID0gdmFsdWU7Cj4gKwkJCWlmIChyLT53 cml0ZV9tYXNrKQo+ICsJCQkJeCAmPSByLT53cml0ZV9tYXNrOwo+ICsJCQlpZiAoci0+bWFza2Vk KQo+ICsJCQkJeCAmPSAweGZmZmY7Cj4gKwkJCXJlZ3Nbb2Zmc2V0L3NpemVvZigqcmVncyldID0g eDsKPiArCQl9Cj4gKwl9Cj4gKwltdW5tYXAocmVncywgcmVnc19zaXplKTsKPiArfQo+ICsKPiAg c3RhdGljIHVpbnQzMl90IHJlYWRfcmVncyhpbnQgZmQsCj4gIAkJCSAgdWludDMyX3QgY3R4LAo+ ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiBAQCAtMjk0 LDEyICszMzcsMTUgQEAgc3RhdGljIHZvaWQgd3JpdGVfcmVncyhpbnQgZmQsCj4gIAkJCWNvbnRp bnVlOwo+ICAJCWZvciAodW5zaWduZWQgY291bnQgPSByLT5jb3VudCA/OiAxLCBvZmZzZXQgPSBy LT5vZmZzZXQ7Cj4gIAkJICAgICBjb3VudC0tOyBvZmZzZXQgKz0gNCkgewo+ICsJCQl1aW50MzJf dCB4ID0gdmFsdWU7Cj4gKwkJCWlmIChyLT53cml0ZV9tYXNrKQo+ICsJCQkJeCAmPSByLT53cml0 ZV9tYXNrOwo+ICsJCQlpZiAoci0+bWFza2VkKQo+ICsJCQkJeCB8PSAweGZmZmZ1IDw8IDE2Owo+ ICsKPiAgCQkJKmIrKyA9IDB4MjIgPDwgMjMgfCAxOyAvKiBMUkkgKi8KPiAgCQkJKmIrKyA9IG9m ZnNldDsKPiAtCQkJaWYgKHItPm1hc2tlZCkKPiAtCQkJCSpiKysgPSB2YWx1ZSB8IDB4ZmZmZnUg PDwgMTY7Cj4gLQkJCWVsc2UKPiAtCQkJCSpiKysgPSB2YWx1ZTsKPiArCQkJKmIrKyA9IHg7Cj4g IAkJfQo+ICAJfQo+ICAJKmIrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gQEAgLTQ3NCw2ICs1 MjAsNjYgQEAgc3RhdGljIHZvaWQgY29tcGFyZV9yZWdzKGludCBmZCwgdWludDMyX3QgQSwgdWlu dDMyX3QgQiwgY29uc3QgY2hhciAqd2hvKQo+ICAJCSAgICAgbnVtX2Vycm9ycywgd2hvKTsKPiAg fQo+ICAKPiArc3RhdGljIHZvaWQgbm9ucHJpdihpbnQgZmQsCj4gKwkJICAgIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiArCQkgICAgdW5zaWduZWQgaW50IGZsYWdz KQo+ICt7Cj4gKwlzdGF0aWMgY29uc3QgdWludDMyX3QgdmFsdWVzW10gPSB7Cj4gKwkJMHgwLAo+ ICsJCTB4ZmZmZmZmZmYsCj4gKwkJMHhjY2NjY2NjYywKPiArCQkweDMzMzMzMzMzLAo+ICsJCTB4 NTU1NTU1NTUsCj4gKwkJMHhhYWFhYWFhYSwKPiArCQkweGYwZjAwZjBmLAo+ICsJCTB4YTBhMDAz MDMsCj4gKwkJMHgwNTA1YzBjMCwKPiArCQkweGRlYWRiZWVmCj4gKwl9Owo+ICsJdW5zaWduZWQg aW50IGVuZ2luZSA9Cj4gKwkJZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLCBlLT5j bGFzcywgZS0+aW5zdGFuY2UpOwo+ICsJdW5zaWduZWQgaW50IG51bV92YWx1ZXMgPSBBUlJBWV9T SVpFKHZhbHVlcyk7Cj4gKwo+ICsJLyogU2lnaCAtLSBoc3c6IHdlIG5lZWQgY21kcGFyc2VyIGFj Y2VzcyB0byBvdXIgb3duIHJlZ2lzdGVycyEgKi8KPiArCWlndF9za2lwX29uKGludGVsX2dlbihp bnRlbF9nZXRfZHJtX2RldmlkKGZkKSkgPCA4KTsKPiArCj4gKwlnZW1fcXVpZXNjZW50X2dwdShm ZCk7Cj4gKwo+ICsJZm9yIChpbnQgdiA9IDA7IHYgPCBudW1fdmFsdWVzOyB2KyspIHsKPiArCQlp Z3Rfc3Bpbl90ICpzcGluID0gTlVMTDsKPiArCQl1aW50MzJfdCBjdHgsIHJlZ3NbMl0sIHRtcGw7 Cj4gKwo+ICsJCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gKwkJdG1wbCA9IHJlYWRf cmVncyhmZCwgY3R4LCBlLCBmbGFncyk7Cj4gKwkJcmVnc1swXSA9IHJlYWRfcmVncyhmZCwgY3R4 LCBlLCBmbGFncyk7Cj4gKwo+ICsJCXRtcGxfcmVncyhmZCwgY3R4LCBlLCB0bXBsLCB2YWx1ZXNb dl0pOwo+ICsKPiArCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCAuY3R4ID0gY3R4LCAu ZW5naW5lID0gZW5naW5lKTsKPiArCj4gKwkJaWd0X2RlYnVnKCIlc1slZF06IFNldHRpbmcgYWxs IHJlZ2lzdGVycyB0byAweCUwOHhcbiIsCj4gKwkJCSAgX19mdW5jX18sIHYsIHZhbHVlc1t2XSk7 Cj4gKwkJd3JpdGVfcmVncyhmZCwgY3R4LCBlLCBmbGFncywgdmFsdWVzW3ZdKTsKPiArCj4gKwkJ cmVnc1sxXSA9IHJlYWRfcmVncyhmZCwgY3R4LCBlLCBmbGFncyk7Cj4gKwo+ICsJCS8qCj4gKwkJ ICogUmVzdG9yZSB0aGUgb3JpZ2luYWwgcmVnaXN0ZXIgdmFsdWVzIGJlZm9yZSB0aGUgSFcgaWRs ZXMuCj4gKwkJICogT3IgZWxzZSBpdCBtYXkgbmV2ZXIgcmVzdGFydCEKPiArCQkgKi8KPiArCQly ZXN0b3JlX3JlZ3MoZmQsIGN0eCwgZSwgZmxhZ3MsIHJlZ3NbMF0pOwo+ICsKPiArCQlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKPiArCj4gKwkJY29tcGFyZV9yZWdzKGZkLCB0bXBsLCBy ZWdzWzFdLCAibm9ucHJpdiByZWFkL3dyaXRlcyIpOwo+ICsKPiArCQlmb3IgKGludCBuID0gMDsg biA8IEFSUkFZX1NJWkUocmVncyk7IG4rKykKPiArCQkJZ2VtX2Nsb3NlKGZkLCByZWdzW25dKTsK PiArCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHgpOwo+ICsJCWdlbV9jbG9zZShmZCwgdG1w bCk7Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGlzb2xhdGlvbihpbnQgZmQsCj4gIAkJ ICAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAo+ICAJCSAgICAg IHVuc2lnbmVkIGludCBmbGFncykKPiBAQCAtNzE1LDYgKzgyMSw5IEBAIGlndF9tYWluCj4gIAkJ CQlpZ3RfZm9ya19oYW5nX2RldGVjdG9yKGZkKTsKPiAgCQkJfQo+ICAKPiArCQkJaWd0X3N1YnRl c3RfZigiJXMtbm9ucHJpdiIsIGUtPm5hbWUpCj4gKwkJCQlub25wcml2KGZkLCBlLCAwKTsKPiAr Cj4gIAkJCWlndF9zdWJ0ZXN0X2YoIiVzLWNsZWFuIiwgZS0+bmFtZSkKPiAgCQkJCWlzb2xhdGlv bihmZCwgZSwgMCk7Cj4gIAkJCWlndF9zdWJ0ZXN0X2YoIiVzLWRpcnR5LWNyZWF0ZSIsIGUtPm5h bWUpCj4gLS0gCj4gMi4yMC4xCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==