From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 1 Nov 2019 17:10:47 -0700 From: "Stimson, Dale B" Message-ID: <20191102001047.GA42818@dbstims-dev.fm.intel.com> References: <20191021110138.16731-1-chris@chris-wilson.co.uk> <20191021110138.16731-2-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191021110138.16731-2-chris@chris-wilson.co.uk> Subject: Re: [igt-dev] [PATCH i-g-t 2/2] i915/gem_ctx_isolation: Check engine relative registers 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 List-ID: VGhlIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgdGhpcyBwYXRjaCBpcyBzb21ldGhpbmcgd2Ug d291bGQgbGlrZSB0byBoYXZlLgpXaGF0IGFyZSB0aGUgcHJvc3BlY3RzIGZvciBoYXZpbmcgaXQg bWVyZ2VkIHNvb24/CgotRGFsZQoKT24gMjAxOS0xMC0yMSAxMjowMTozOCwgQ2hyaXMgV2lsc29u IHdyb3RlOgo+IFNvbWUgb2YgdGhlIG5vbi1wcml2aWxlZ2VkIHJlZ2lzdGVycyBhcmUgYXQgdGhl IHNhbWUgb2Zmc2V0IG9uIGVhY2gKPiBlbmdpbmUuIFdlIGNhbiBpbXByb3ZlIG91ciBjb3ZlcmFn ZSBmb3IgdW5rbm93biBIVyBsYXlvdXQgYnkgdXNpbmcgdGhlCj4gcmVwb3J0ZWQgZW5naW5lLT5t bWlvX2Jhc2UgZm9yIHJlbGF0aXZlIG9mZnNldHMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIHRlc3RzL2k5MTUvZ2Vt X2N0eF9pc29sYXRpb24uYyB8IDE2MCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0K PiAgMSBmaWxlIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfaXNvbGF0aW9uLmMgYi90ZXN0cy9pOTE1 L2dlbV9jdHhfaXNvbGF0aW9uLmMKPiBpbmRleCA2YWEyNzEzM2MuLjJlZDcxZGQzNCAxMDA2NDQK PiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfaXNvbGF0aW9uLmMKPiArKysgYi90ZXN0cy9pOTE1 L2dlbV9jdHhfaXNvbGF0aW9uLmMKPiBAQCAtNzAsNiArNzAsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG5hbWVkX3JlZ2lzdGVyIHsKPiAgCXVpbnQzMl90IGlnbm9yZV9iaXRzOwo+ICAJdWludDMy X3Qgd3JpdGVfbWFzazsgLyogc29tZSByZWdpc3RlcnMgYml0cyBkbyBub3QgZXhpc3QgKi8KPiAg CWJvb2wgbWFza2VkOwo+ICsJYm9vbCByZWxhdGl2ZTsKPiAgfSBub25wcml2X3JlZ2lzdGVyc1td ID0gewo+ICAJeyAiTk9QSUQiLCBOT0NUWCwgUkNTMCwgMHgyMDk0IH0sCj4gIAl7ICJNSV9QUkVE SUNBVEVfUkVTVUxUXzIiLCBOT0NUWCwgUkNTMCwgMHgyM2JjIH0sCj4gQEAgLTE1MCw2NyArMTUx LDQ1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIgewo+ICAJeyAiSEFMRl9T TElDRV9DSElDS0VONyIsIEdFTl9SQU5HRSgxMSwgMTEpLCBSQ1MwLCAweGUxOTQsIC5tYXNrZWQg PSB0cnVlIH0sCj4gIAl7ICJTQU1QTEVSX01PREUiLCBHRU5fUkFOR0UoMTEsIDExKSwgUkNTMCwg MHhlMThjLCAubWFza2VkID0gdHJ1ZSB9LAo+ICAKPiAtCXsgIkJDU19HUFIiLCBHRU45LCBCQ1Mw LCAweDIyNjAwLCAzMiB9LAo+ICAJeyAiQkNTX1NXQ1RSTCIsIEdFTjgsIEJDUzAsIDB4MjIyMDAs IC53cml0ZV9tYXNrID0gMHgzLCAubWFza2VkID0gdHJ1ZSB9LAo+ICAKPiAgCXsgIk1GQ19WREJP WDEiLCBOT0NUWCwgVkNTMCwgMHgxMjgwMCwgNjQgfSwKPiAgCXsgIk1GQ19WREJPWDIiLCBOT0NU WCwgVkNTMSwgMHgxYzgwMCwgNjQgfSwKPiAgCj4gLQl7ICJWQ1MwX0dQUiIsIEdFTl9SQU5HRSg5 LCAxMCksIFZDUzAsIDB4MTI2MDAsIDMyIH0sCj4gLQl7ICJWQ1MxX0dQUiIsIEdFTl9SQU5HRSg5 LCAxMCksIFZDUzEsIDB4MWM2MDAsIDMyIH0sCj4gLQl7ICJWRUNTX0dQUiIsIEdFTl9SQU5HRSg5 LCAxMCksIFZFQ1MwLCAweDFhNjAwLCAzMiB9LAo+IC0KPiAtCXsgIlZDUzBfR1BSIiwgR0VOMTEs IFZDUzAsIDB4MWMwNjAwLCAzMiB9LAo+IC0JeyAiVkNTMV9HUFIiLCBHRU4xMSwgVkNTMSwgMHgx YzQ2MDAsIDMyIH0sCj4gLQl7ICJWQ1MyX0dQUiIsIEdFTjExLCBWQ1MyLCAweDFkMDYwMCwgMzIg fSwKPiAtCXsgIlZDUzNfR1BSIiwgR0VOMTEsIFZDUzMsIDB4MWQ0NjAwLCAzMiB9LAo+IC0JeyAi VkVDU19HUFIiLCBHRU4xMSwgVkVDUzAsIDB4MWM4NjAwLCAzMiB9LAo+ICsJeyAieENTX0dQUiIs IEdFTjksIEFMTCwgMHg2MDAsIDMyLCAucmVsYXRpdmUgPSB0cnVlIH0sCj4gIAo+ICAJe30KPiAg fSwgaWdub3JlX3JlZ2lzdGVyc1tdID0gewo+ICAJeyAiUkNTIHRpbWVzdGFtcCIsIEdFTjYsIH4w dSwgMHgyMzU4IH0sCj4gIAl7ICJCQ1MgdGltZXN0YW1wIiwgR0VONywgfjB1LCAweDIyMzU4IH0s Cj4gIAo+IC0JeyAiVkNTMCB0aW1lc3RhbXAiLCBHRU5fUkFOR0UoNywgMTApLCB+MHUsIDB4MTIz NTggfSwKPiAtCXsgIlZDUzEgdGltZXN0YW1wIiwgR0VOX1JBTkdFKDcsIDEwKSwgfjB1LCAweDFj MzU4IH0sCj4gLQl7ICJWRUNTIHRpbWVzdGFtcCIsIEdFTl9SQU5HRSg4LCAxMCksIH4wdSwgMHgx YTM1OCB9LAo+IC0KPiAtCXsgIlZDUzAgdGltZXN0YW1wIiwgR0VOMTEsIH4wdSwgMHgxYzAzNTgg fSwKPiAtCXsgIlZDUzEgdGltZXN0YW1wIiwgR0VOMTEsIH4wdSwgMHgxYzQzNTggfSwKPiAtCXsg IlZDUzIgdGltZXN0YW1wIiwgR0VOMTEsIH4wdSwgMHgxZDAzNTggfSwKPiAtCXsgIlZDUzMgdGlt ZXN0YW1wIiwgR0VOMTEsIH4wdSwgMHgxZDQzNTggfSwKPiAtCXsgIlZFQ1MgdGltZXN0YW1wIiwg R0VOMTEsIH4wdSwgMHgxYzgzNTggfSwKPiArCXsgInhDUyB0aW1lc3RhbXAiLCBHRU44LCBBTEws IDB4MzU4LCAucmVsYXRpdmUgPSB0cnVlIH0sCj4gIAo+ICAJLyogaHVjIHJlYWQgb25seSAqLwo+ IC0JeyAiQlNEMCAweDIwMDAiLCBHRU4xMSwgfjB1LCAweDFjMDAwMCArIDB4MjAwMCB9LAo+IC0J eyAiQlNEMCAweDIwMDAiLCBHRU4xMSwgfjB1LCAweDFjMDAwMCArIDB4MjAxNCB9LAo+IC0JeyAi QlNEMCAweDIwMDAiLCBHRU4xMSwgfjB1LCAweDFjMDAwMCArIDB4MjNiMCB9LAo+IC0KPiAtCXsg IkJTRDEgMHgyMDAwIiwgR0VOMTEsIH4wdSwgMHgxYzQwMDAgKyAweDIwMDAgfSwKPiAtCXsgIkJT RDEgMHgyMDAwIiwgR0VOMTEsIH4wdSwgMHgxYzQwMDAgKyAweDIwMTQgfSwKPiAtCXsgIkJTRDEg MHgyMDAwIiwgR0VOMTEsIH4wdSwgMHgxYzQwMDAgKyAweDIzYjAgfSwKPiAtCj4gLQl7ICJCU0Qy IDB4MjAwMCIsIEdFTjExLCB+MHUsIDB4MWQwMDAwICsgMHgyMDAwIH0sCj4gLQl7ICJCU0QyIDB4 MjAwMCIsIEdFTjExLCB+MHUsIDB4MWQwMDAwICsgMHgyMDE0IH0sCj4gLQl7ICJCU0QyIDB4MjAw MCIsIEdFTjExLCB+MHUsIDB4MWQwMDAwICsgMHgyM2IwIH0sCj4gLQo+IC0JeyAiQlNEMyAweDIw MDAiLCBHRU4xMSwgfjB1LCAweDFkNDAwMCArIDB4MjAwMCB9LAo+IC0JeyAiQlNEMyAweDIwMDAi LCBHRU4xMSwgfjB1LCAweDFkNDAwMCArIDB4MjAxNCB9LAo+IC0JeyAiQlNEMyAweDIwMDAiLCBH RU4xMSwgfjB1LCAweDFkNDAwMCArIDB4MjNiMCB9LAo+ICsJeyAiQlNEIDB4MjAwMCIsIEdFTjEx LCBBTEwsIDB4MjAwMCwgLnJlbGF0aXZlID0gdHJ1ZSB9LAo+ICsJeyAiQlNEIDB4MjAxNCIsIEdF TjExLCBBTEwsIDB4MjAxNCwgLnJlbGF0aXZlID0gdHJ1ZSB9LAo+ICsJeyAiQlNEIDB4MjNiMCIs IEdFTjExLCBBTEwsIDB4MjNiMCwgLnJlbGF0aXZlID0gdHJ1ZX0sCj4gIAo+ICAJe30KPiAgfTsK PiAgCj4gLXN0YXRpYyBjb25zdCBjaGFyICpyZWdpc3Rlcl9uYW1lKHVpbnQzMl90IG9mZnNldCwg Y2hhciAqYnVmLCBzaXplX3QgbGVuKQo+ICtzdGF0aWMgY29uc3QgY2hhciAqCj4gK3JlZ2lzdGVy X25hbWUodWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBtbWlvX2Jhc2UsIGNoYXIgKmJ1Ziwgc2l6 ZV90IGxlbikKPiAgewo+ICAJZm9yIChjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIgKnIgPSBu b25wcml2X3JlZ2lzdGVyczsgci0+bmFtZTsgcisrKSB7Cj4gIAkJdW5zaWduZWQgaW50IHdpZHRo ID0gci0+Y291bnQgPyA0KnItPmNvdW50IDogNDsKPiAtCQlpZiAob2Zmc2V0ID49IHItPm9mZnNl dCAmJiBvZmZzZXQgPCByLT5vZmZzZXQgKyB3aWR0aCkgewo+ICsJCXVpbnQzMl90IGJhc2U7Cj4g Kwo+ICsJCWJhc2UgPSByLT5vZmZzZXQ7Cj4gKwkJaWYgKHItPnJlbGF0aXZlKQo+ICsJCQliYXNl ICs9IG1taW9fYmFzZTsKPiArCj4gKwkJaWYgKG9mZnNldCA+PSBiYXNlICYmIG9mZnNldCA8IGJh c2UgKyB3aWR0aCkgewo+ICAJCQlpZiAoci0+Y291bnQgPD0gMSkKPiAgCQkJCXJldHVybiByLT5u YW1lOwo+ICAKPiAgCQkJc25wcmludGYoYnVmLCBsZW4sICIlc1slZF0iLAo+IC0JCQkJIHItPm5h bWUsIChvZmZzZXQgLSByLT5vZmZzZXQpLzQpOwo+ICsJCQkJIHItPm5hbWUsIChvZmZzZXQgLSBi YXNlKSAvIDQpOwo+ICAJCQlyZXR1cm4gYnVmOwo+ICAJCX0KPiAgCX0KPiBAQCAtMjE4LDIyICsx OTcsMzUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnJlZ2lzdGVyX25hbWUodWludDMyX3Qgb2Zmc2V0 LCBjaGFyICpidWYsIHNpemVfdCBsZW4pCj4gIAlyZXR1cm4gInVua25vd24iOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyICpsb29rdXBfcmVnaXN0ZXIodWlu dDMyX3Qgb2Zmc2V0KQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyICoKPiAr bG9va3VwX3JlZ2lzdGVyKHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbW1pb19iYXNlKQo+ICB7 Cj4gIAlmb3IgKGNvbnN0IHN0cnVjdCBuYW1lZF9yZWdpc3RlciAqciA9IG5vbnByaXZfcmVnaXN0 ZXJzOyByLT5uYW1lOyByKyspIHsKPiAgCQl1bnNpZ25lZCBpbnQgd2lkdGggPSByLT5jb3VudCA/ IDQqci0+Y291bnQgOiA0Owo+IC0JCWlmIChvZmZzZXQgPj0gci0+b2Zmc2V0ICYmIG9mZnNldCA8 IHItPm9mZnNldCArIHdpZHRoKQo+ICsJCXVpbnQzMl90IGJhc2U7Cj4gKwo+ICsJCWJhc2UgPSBy LT5vZmZzZXQ7Cj4gKwkJaWYgKHItPnJlbGF0aXZlKQo+ICsJCQliYXNlICs9IG1taW9fYmFzZTsK PiArCj4gKwkJaWYgKG9mZnNldCA+PSBiYXNlICYmIG9mZnNldCA8IGJhc2UgKyB3aWR0aCkKPiAg CQkJcmV0dXJuIHI7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiAgCj4gLXN0YXRp YyBib29sIGlnbm9yZV9yZWdpc3Rlcih1aW50MzJfdCBvZmZzZXQpCj4gK3N0YXRpYyBib29sIGln bm9yZV9yZWdpc3Rlcih1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IG1taW9fYmFzZSkKPiAgewo+ ICAJZm9yIChjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIgKnIgPSBpZ25vcmVfcmVnaXN0ZXJz OyByLT5uYW1lOyByKyspIHsKPiAgCQl1bnNpZ25lZCBpbnQgd2lkdGggPSByLT5jb3VudCA/IDQq ci0+Y291bnQgOiA0Owo+IC0JCWlmIChvZmZzZXQgPj0gci0+b2Zmc2V0ICYmIG9mZnNldCA8IHIt Pm9mZnNldCArIHdpZHRoKQo+ICsJCXVpbnQzMl90IGJhc2U7Cj4gKwo+ICsJCWJhc2UgPSByLT5v ZmZzZXQ7Cj4gKwkJaWYgKHItPnJlbGF0aXZlKQo+ICsJCQliYXNlICs9IG1taW9fYmFzZTsKPiAr Cj4gKwkJaWYgKG9mZnNldCA+PSBiYXNlICYmIG9mZnNldCA8IGJhc2UgKyB3aWR0aCkKPiAgCQkJ cmV0dXJuIHRydWU7Cj4gIAl9Cj4gIAo+IEBAIC0yNDgsNiArMjQwLDcgQEAgc3RhdGljIHZvaWQg dG1wbF9yZWdzKGludCBmZCwKPiAgewo+ICAJY29uc3QgdW5zaWduZWQgaW50IGdlbl9iaXQgPSAx IDw8IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Cj4gIAljb25zdCB1bnNpZ25l ZCBpbnQgZW5naW5lX2JpdCA9IEVOR0lORShlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwo+ICsJY29u c3QgdWludDMyX3QgbW1pb19iYXNlID0gZ2VtX2VuZ2luZV9tbWlvX2Jhc2UoZmQsIGUtPm5hbWUp Owo+ICAJdW5zaWduZWQgaW50IHJlZ3Nfc2l6ZTsKPiAgCXVpbnQzMl90ICpyZWdzOwo+ICAKPiBA QCAtMjU5LDEyICsyNTIsMjAgQEAgc3RhdGljIHZvaWQgdG1wbF9yZWdzKGludCBmZCwKPiAgCQkg ICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7Cj4gIAo+ICAJ Zm9yIChjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIgKnIgPSBub25wcml2X3JlZ2lzdGVyczsg ci0+bmFtZTsgcisrKSB7Cj4gKwkJdWludDMyX3Qgb2Zmc2V0Owo+ICsKPiAgCQlpZiAoIShyLT5l bmdpbmVfbWFzayAmIGVuZ2luZV9iaXQpKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAoIShyLT5n ZW5fbWFzayAmIGdlbl9iaXQpKQo+ICAJCQljb250aW51ZTsKPiAtCQlmb3IgKHVuc2lnbmVkIGNv dW50ID0gci0+Y291bnQgPzogMSwgb2Zmc2V0ID0gci0+b2Zmc2V0Owo+IC0JCSAgICAgY291bnQt LTsgb2Zmc2V0ICs9IDQpIHsKPiArCQlpZiAoci0+cmVsYXRpdmUgJiYgIW1taW9fYmFzZSkKPiAr CQkJY29udGludWU7Cj4gKwo+ICsJCW9mZnNldCA9IHItPm9mZnNldDsKPiArCQlpZiAoci0+cmVs YXRpdmUpCj4gKwkJCW9mZnNldCArPSBtbWlvX2Jhc2U7Cj4gKwo+ICsJCWZvciAodW5zaWduZWQg Y291bnQgPSByLT5jb3VudCA/OiAxOyBjb3VudC0tOyBvZmZzZXQgKz0gNCkgewo+ICAJCQl1aW50 MzJfdCB4ID0gdmFsdWU7Cj4gIAkJCWlmIChyLT53cml0ZV9tYXNrKQo+ICAJCQkJeCAmPSByLT53 cml0ZV9tYXNrOwo+IEBAIC0yODQsNiArMjg1LDcgQEAgc3RhdGljIHVpbnQzMl90IHJlYWRfcmVn cyhpbnQgZmQsCj4gIAljb25zdCB1bnNpZ25lZCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dl dF9kcm1fZGV2aWQoZmQpKTsKPiAgCWNvbnN0IHVuc2lnbmVkIGludCBnZW5fYml0ID0gMSA8PCBn ZW47Cj4gIAljb25zdCB1bnNpZ25lZCBpbnQgZW5naW5lX2JpdCA9IEVOR0lORShlLT5jbGFzcywg ZS0+aW5zdGFuY2UpOwo+ICsJY29uc3QgdWludDMyX3QgbW1pb19iYXNlID0gZ2VtX2VuZ2luZV9t bWlvX2Jhc2UoZmQsIGUtPm5hbWUpOwo+ICAJY29uc3QgYm9vbCByNjRiID0gZ2VuID49IDg7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jOwo+IEBAIC0zMTEsMTMgKzMxMywyMCBA QCBzdGF0aWMgdWludDMyX3QgcmVhZF9yZWdzKGludCBmZCwKPiAgCj4gIAluID0gMDsKPiAgCWZv ciAoY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyICpyID0gbm9ucHJpdl9yZWdpc3RlcnM7IHIt Pm5hbWU7IHIrKykgewo+ICsJCXVpbnQzMl90IG9mZnNldDsKPiArCj4gIAkJaWYgKCEoci0+ZW5n aW5lX21hc2sgJiBlbmdpbmVfYml0KSkKPiAgCQkJY29udGludWU7Cj4gIAkJaWYgKCEoci0+Z2Vu X21hc2sgJiBnZW5fYml0KSkKPiAgCQkJY29udGludWU7Cj4gKwkJaWYgKHItPnJlbGF0aXZlICYm ICFtbWlvX2Jhc2UpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlvZmZzZXQgPSByLT5vZmZzZXQ7 Cj4gKwkJaWYgKHItPnJlbGF0aXZlKQo+ICsJCQlvZmZzZXQgKz0gbW1pb19iYXNlOwo+ICAKPiAt CQlmb3IgKHVuc2lnbmVkIGNvdW50ID0gci0+Y291bnQgPzogMSwgb2Zmc2V0ID0gci0+b2Zmc2V0 Owo+IC0JCSAgICAgY291bnQtLTsgb2Zmc2V0ICs9IDQpIHsKPiArCQlmb3IgKHVuc2lnbmVkIGNv dW50ID0gci0+Y291bnQgPzogMTsgY291bnQtLTsgb2Zmc2V0ICs9IDQpIHsKPiAgCQkJKmIrKyA9 IDB4MjQgPDwgMjMgfCAoMSArIHI2NGIpOyAvKiBTUk0gKi8KPiAgCQkJKmIrKyA9IG9mZnNldDsK PiAgCQkJcmVsb2Nbbl0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7Cj4gQEAgLTM1Nyw2 ICszNjYsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9yZWdzKGludCBmZCwKPiAgewo+ICAJY29uc3Qg dW5zaWduZWQgaW50IGdlbl9iaXQgPSAxIDw8IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2Rldmlk KGZkKSk7Cj4gIAljb25zdCB1bnNpZ25lZCBpbnQgZW5naW5lX2JpdCA9IEVOR0lORShlLT5jbGFz cywgZS0+aW5zdGFuY2UpOwo+ICsJY29uc3QgdWludDMyX3QgbW1pb19iYXNlID0gZ2VtX2VuZ2lu ZV9tbWlvX2Jhc2UoZmQsIGUtPm5hbWUpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgb2JqOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwo+ ICAJdW5zaWduZWQgaW50IGJhdGNoX3NpemU7Cj4gQEAgLTM3MiwxMiArMzgyLDIwIEBAIHN0YXRp YyB2b2lkIHdyaXRlX3JlZ3MoaW50IGZkLAo+ICAJZ2VtX3NldF9kb21haW4oZmQsIG9iai5oYW5k bGUsCj4gIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUp Owo+ICAJZm9yIChjb25zdCBzdHJ1Y3QgbmFtZWRfcmVnaXN0ZXIgKnIgPSBub25wcml2X3JlZ2lz dGVyczsgci0+bmFtZTsgcisrKSB7Cj4gKwkJdWludDMyX3Qgb2Zmc2V0Owo+ICsKPiAgCQlpZiAo IShyLT5lbmdpbmVfbWFzayAmIGVuZ2luZV9iaXQpKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAo IShyLT5nZW5fbWFzayAmIGdlbl9iaXQpKQo+ICAJCQljb250aW51ZTsKPiAtCQlmb3IgKHVuc2ln bmVkIGNvdW50ID0gci0+Y291bnQgPzogMSwgb2Zmc2V0ID0gci0+b2Zmc2V0Owo+IC0JCSAgICAg Y291bnQtLTsgb2Zmc2V0ICs9IDQpIHsKPiArCQlpZiAoci0+cmVsYXRpdmUgJiYgIW1taW9fYmFz ZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCW9mZnNldCA9IHItPm9mZnNldDsKPiArCQlpZiAo ci0+cmVsYXRpdmUpCj4gKwkJCW9mZnNldCArPSBtbWlvX2Jhc2U7Cj4gKwo+ICsJCWZvciAodW5z aWduZWQgY291bnQgPSByLT5jb3VudCA/OiAxOyBjb3VudC0tOyBvZmZzZXQgKz0gNCkgewo+ICAJ CQl1aW50MzJfdCB4ID0gdmFsdWU7Cj4gIAkJCWlmIChyLT53cml0ZV9tYXNrKQo+ICAJCQkJeCAm PSByLT53cml0ZV9tYXNrOwo+IEBAIC00MTAsNiArNDI4LDcgQEAgc3RhdGljIHZvaWQgcmVzdG9y ZV9yZWdzKGludCBmZCwKPiAgCWNvbnN0IHVuc2lnbmVkIGludCBnZW4gPSBpbnRlbF9nZW4oaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICAJY29uc3QgdW5zaWduZWQgaW50IGdlbl9iaXQgPSAx IDw8IGdlbjsKPiAgCWNvbnN0IHVuc2lnbmVkIGludCBlbmdpbmVfYml0ID0gRU5HSU5FKGUtPmNs YXNzLCBlLT5pbnN0YW5jZSk7Cj4gKwljb25zdCB1aW50MzJfdCBtbWlvX2Jhc2UgPSBnZW1fZW5n aW5lX21taW9fYmFzZShmZCwgZS0+bmFtZSk7Cj4gIAljb25zdCBib29sIHI2NGIgPSBnZW4gPj0g ODsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsKPiAgCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiBAQCAtNDM3LDEzICs0NTYsMjAg QEAgc3RhdGljIHZvaWQgcmVzdG9yZV9yZWdzKGludCBmZCwKPiAgCj4gIAluID0gMDsKPiAgCWZv ciAoY29uc3Qgc3RydWN0IG5hbWVkX3JlZ2lzdGVyICpyID0gbm9ucHJpdl9yZWdpc3RlcnM7IHIt Pm5hbWU7IHIrKykgewo+ICsJCXVpbnQzMl90IG9mZnNldDsKPiArCj4gIAkJaWYgKCEoci0+ZW5n aW5lX21hc2sgJiBlbmdpbmVfYml0KSkKPiAgCQkJY29udGludWU7Cj4gIAkJaWYgKCEoci0+Z2Vu X21hc2sgJiBnZW5fYml0KSkKPiAgCQkJY29udGludWU7Cj4gKwkJaWYgKHItPnJlbGF0aXZlICYm ICFtbWlvX2Jhc2UpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlvZmZzZXQgPSByLT5vZmZzZXQ7 Cj4gKwkJaWYgKHItPnJlbGF0aXZlKQo+ICsJCQlvZmZzZXQgKz0gbW1pb19iYXNlOwo+ICAKPiAt CQlmb3IgKHVuc2lnbmVkIGNvdW50ID0gci0+Y291bnQgPzogMSwgb2Zmc2V0ID0gci0+b2Zmc2V0 Owo+IC0JCSAgICAgY291bnQtLTsgb2Zmc2V0ICs9IDQpIHsKPiArCQlmb3IgKHVuc2lnbmVkIGNv dW50ID0gci0+Y291bnQgPzogMTsgY291bnQtLTsgb2Zmc2V0ICs9IDQpIHsKPiAgCQkJKmIrKyA9 IDB4MjkgPDwgMjMgfCAoMSArIHI2NGIpOyAvKiBMUk0gKi8KPiAgCQkJKmIrKyA9IG9mZnNldDsK PiAgCQkJcmVsb2Nbbl0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7Cj4gQEAgLTQ3OSw2 ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3JlZ3MoaW50IGZkLAo+ICAJY29uc3QgaW50IGdl biA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Cj4gIAljb25zdCB1bnNpZ25l ZCBpbnQgZ2VuX2JpdCA9IDEgPDwgZ2VuOwo+ICAJY29uc3QgdW5zaWduZWQgaW50IGVuZ2luZV9i aXQgPSBFTkdJTkUoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKPiArCWNvbnN0IHVpbnQzMl90IG1t aW9fYmFzZSA9IGdlbV9lbmdpbmVfbW1pb19iYXNlKGZkLCBlLT5uYW1lKTsKPiAgCXVuc2lnbmVk IGludCByZWdzX3NpemU7Cj4gIAl1aW50MzJfdCAqb3V0Owo+ICAKPiBAQCAtNDg5LDI2ICs1MTYs MzYgQEAgc3RhdGljIHZvaWQgZHVtcF9yZWdzKGludCBmZCwKPiAgCWdlbV9zZXRfZG9tYWluKGZk LCByZWdzLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKPiAgCj4gIAlmb3IgKGNvbnN0IHN0cnVj dCBuYW1lZF9yZWdpc3RlciAqciA9IG5vbnByaXZfcmVnaXN0ZXJzOyByLT5uYW1lOyByKyspIHsK PiArCQl1aW50MzJfdCBvZmZzZXQ7Cj4gKwo+ICAJCWlmICghKHItPmVuZ2luZV9tYXNrICYgZW5n aW5lX2JpdCkpCj4gIAkJCWNvbnRpbnVlOwo+ICAJCWlmICghKHItPmdlbl9tYXNrICYgZ2VuX2Jp dCkpCj4gIAkJCWNvbnRpbnVlOwo+ICsJCWlmIChyLT5yZWxhdGl2ZSAmJiAhbW1pb19iYXNlKQo+ ICsJCQljb250aW51ZTsKPiArCj4gKwkJb2Zmc2V0ID0gci0+b2Zmc2V0Owo+ICsJCWlmIChyLT5y ZWxhdGl2ZSkKPiArCQkJb2Zmc2V0ICs9IG1taW9fYmFzZTsKPiAgCj4gIAkJaWYgKHItPmNvdW50 IDw9IDEpIHsKPiAgCQkJaWd0X2RlYnVnKCIweCUwNHggKCVzKTogMHglMDh4XG4iLAo+IC0JCQkJ ICByLT5vZmZzZXQsIHItPm5hbWUsIG91dFtyLT5vZmZzZXQvNF0pOwo+ICsJCQkJICBvZmZzZXQs IHItPm5hbWUsIG91dFtvZmZzZXQgLyA0XSk7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJZm9yICh1bnNp Z25lZCB4ID0gMDsgeCA8IHItPmNvdW50OyB4KyspCj4gIAkJCQlpZ3RfZGVidWcoIjB4JTA0eCAo JXNbJWRdKTogMHglMDh4XG4iLAo+IC0JCQkJCSAgci0+b2Zmc2V0KzQqeCwgci0+bmFtZSwgeCwK PiAtCQkJCQkgIG91dFtyLT5vZmZzZXQvNCArIHhdKTsKPiArCQkJCQkgIG9mZnNldCArIDQgKiB4 LCByLT5uYW1lLCB4LAo+ICsJCQkJCSAgb3V0W29mZnNldCAvIDQgKyB4XSk7Cj4gIAkJfQo+ICAJ fQo+ICAJbXVubWFwKG91dCwgcmVnc19zaXplKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgY29t cGFyZV9yZWdzKGludCBmZCwgdWludDMyX3QgQSwgdWludDMyX3QgQiwgY29uc3QgY2hhciAqd2hv KQo+ICtzdGF0aWMgdm9pZCBjb21wYXJlX3JlZ3MoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gKwkJCSB1aW50MzJfdCBBLCB1aW50MzJfdCBCLCBjb25z dCBjaGFyICp3aG8pCj4gIHsKPiArCWNvbnN0IHVpbnQzMl90IG1taW9fYmFzZSA9IGdlbV9lbmdp bmVfbW1pb19iYXNlKGZkLCBlLT5uYW1lKTsKPiAgCXVuc2lnbmVkIGludCBudW1fZXJyb3JzOwo+ ICAJdW5zaWduZWQgaW50IHJlZ3Nfc2l6ZTsKPiAgCXVpbnQzMl90ICphLCAqYjsKPiBAQCAtNTMy LDExICs1NjksMTEgQEAgc3RhdGljIHZvaWQgY29tcGFyZV9yZWdzKGludCBmZCwgdWludDMyX3Qg QSwgdWludDMyX3QgQiwgY29uc3QgY2hhciAqd2hvKQo+ICAJCWlmIChhW25dID09IGJbbl0pCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoaWdub3JlX3JlZ2lzdGVyKG9mZnNldCkpCj4gKwkJ aWYgKGlnbm9yZV9yZWdpc3RlcihvZmZzZXQsIG1taW9fYmFzZSkpCj4gIAkJCWNvbnRpbnVlOwo+ ICAKPiAgCQltYXNrID0gfjB1Owo+IC0JCXIgPSBsb29rdXBfcmVnaXN0ZXIob2Zmc2V0KTsKPiAr CQlyID0gbG9va3VwX3JlZ2lzdGVyKG9mZnNldCwgbW1pb19iYXNlKTsKPiAgCQlpZiAociAmJiBy LT5tYXNrZWQpCj4gIAkJCW1hc2sgPj49IDE2Owo+ICAJCWlmIChyICYmIHItPmlnbm9yZV9iaXRz KQo+IEBAIC01NDcsNyArNTg0LDcgQEAgc3RhdGljIHZvaWQgY29tcGFyZV9yZWdzKGludCBmZCwg dWludDMyX3QgQSwgdWludDMyX3QgQiwgY29uc3QgY2hhciAqd2hvKQo+ICAKPiAgCQlpZ3Rfd2Fy bigiUmVnaXN0ZXIgMHglMDR4ICglcyk6IEE9JTA4eCBCPSUwOHhcbiIsCj4gIAkJCSBvZmZzZXQs Cj4gLQkJCSByZWdpc3Rlcl9uYW1lKG9mZnNldCwgYnVmLCBzaXplb2YoYnVmKSksCj4gKwkJCSBy ZWdpc3Rlcl9uYW1lKG9mZnNldCwgbW1pb19iYXNlLCBidWYsIHNpemVvZihidWYpKSwKPiAgCQkJ IGFbbl0gJiBtYXNrLCBiW25dICYgbWFzayk7Cj4gIAkJbnVtX2Vycm9ycysrOwo+ICAJfQo+IEBA IC02MzgsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQgbm9ucHJpdihpbnQgZmQsCj4gIAo+ICAJCWln dF9zcGluX2ZyZWUoZmQsIHNwaW4pOwo+ICAKPiAtCQljb21wYXJlX3JlZ3MoZmQsIHRtcGwsIHJl Z3NbMV0sICJub25wcml2IHJlYWQvd3JpdGVzIik7Cj4gKwkJY29tcGFyZV9yZWdzKGZkLCBlLCB0 bXBsLCByZWdzWzFdLCAibm9ucHJpdiByZWFkL3dyaXRlcyIpOwo+ICAKPiAgCQlmb3IgKGludCBu ID0gMDsgbiA8IEFSUkFZX1NJWkUocmVncyk7IG4rKykKPiAgCQkJZ2VtX2Nsb3NlKGZkLCByZWdz W25dKTsKPiBAQCAtNzA4LDggKzc0NSw5IEBAIHN0YXRpYyB2b2lkIGlzb2xhdGlvbihpbnQgZmQs Cj4gIAkJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7Cj4gIAo+ICAJCWlmICghKGZsYWdzICYgRElS VFkxKSkKPiAtCQkJY29tcGFyZV9yZWdzKGZkLCByZWdzWzBdLCB0bXAsICJ0d28gcmVhZHMgb2Yg dGhlIHNhbWUgY3R4Iik7Cj4gLQkJY29tcGFyZV9yZWdzKGZkLCByZWdzWzBdLCByZWdzWzFdLCAi dHdvIHZpcmdpbiBjb250ZXh0cyIpOwo+ICsJCQljb21wYXJlX3JlZ3MoZmQsIGUsIHJlZ3NbMF0s IHRtcCwKPiArCQkJCSAgICAgInR3byByZWFkcyBvZiB0aGUgc2FtZSBjdHgiKTsKPiArCQljb21w YXJlX3JlZ3MoZmQsIGUsIHJlZ3NbMF0sIHJlZ3NbMV0sICJ0d28gdmlyZ2luIGNvbnRleHRzIik7 Cj4gIAo+ICAJCWZvciAoaW50IG4gPSAwOyBuIDwgQVJSQVlfU0laRShjdHgpOyBuKyspIHsKPiAg CQkJZ2VtX2Nsb3NlKGZkLCByZWdzW25dKTsKPiBAQCAtODI5LDEzICs4NjcsMTMgQEAgc3RhdGlj IHZvaWQgcHJlc2VydmF0aW9uKGludCBmZCwKPiAgCQljaGFyIGJ1Zls4MF07Cj4gIAo+ICAJCXNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJkaXJ0eSAleCBjb250ZXh0XG4iLCB2YWx1ZXNbdl0p Owo+IC0JCWNvbXBhcmVfcmVncyhmZCwgcmVnc1t2XVswXSwgcmVnc1t2XVsxXSwgYnVmKTsKPiAr CQljb21wYXJlX3JlZ3MoZmQsIGUsIHJlZ3Nbdl1bMF0sIHJlZ3Nbdl1bMV0sIGJ1Zik7Cj4gIAo+ ICAJCWdlbV9jbG9zZShmZCwgcmVnc1t2XVswXSk7Cj4gIAkJZ2VtX2Nsb3NlKGZkLCByZWdzW3Zd WzFdKTsKPiAgCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbdl0pOwo+ICAJfQo+IC0JY29t cGFyZV9yZWdzKGZkLCByZWdzW251bV92YWx1ZXNdWzBdLCByZWdzW251bV92YWx1ZXNdWzFdLCAi Y2xlYW4iKTsKPiArCWNvbXBhcmVfcmVncyhmZCwgZSwgcmVnc1tudW1fdmFsdWVzXVswXSwgcmVn c1tudW1fdmFsdWVzXVsxXSwgImNsZWFuIik7Cj4gIAlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBj dHhbbnVtX3ZhbHVlc10pOwo+ICB9Cj4gIAo+IC0tIAo+IDIuMjQuMC5yYzAKPiAKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1kZXYgbWFpbGlu ZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2