From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44047) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1anGbG-0004e6-T0 for qemu-devel@nongnu.org; Mon, 04 Apr 2016 22:20:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1anGbC-0003Ql-Ic for qemu-devel@nongnu.org; Mon, 04 Apr 2016 22:20:14 -0400 Message-ID: <1459822790.20087.65.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Tue, 05 Apr 2016 12:19:50 +1000 In-Reply-To: <1459822643-4770-2-git-send-email-david@gibson.dropbear.id.au> References: <1459822643-4770-1-git-send-email-david@gibson.dropbear.id.au> <1459822643-4770-2-git-send-email-david@gibson.dropbear.id.au> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [PULL 1/3] ppc: Rework POWER7 & POWER8 exception model List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson , peter.maydell@linaro.org Cc: qemu-devel@nongnu.org, aik@ozlabs.ru, agraf@suse.de, mdroth@linux.vnet.ibm.com, clg@fr.ibm.com, qemu-ppc@nongnu.org, pbonzini@redhat.com T24gVHVlLCAyMDE2LTA0LTA1IGF0IDEyOjE3ICsxMDAwLCBEYXZpZCBHaWJzb24gd3JvdGU6 DQo+IEZyb206IEPDqWRyaWMgTGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4NCj4gDQo+IEZy b206IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4N Cj4gDQo+IFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGN1cnJlbnQgQUlMIGltcGxlbWVudGF0aW9u IGZvciBQT1dFUjguIFRoZQ0KPiBpbnRlcnJ1cHQgdmVjdG9yIGFkZHJlc3MgY2FuIGJlIGNh bGN1bGF0ZWQgZGlyZWN0bHkgZnJvbSBMUENSIHdoZW4NCj4gdGhlDQo+IGV4Y2VwdGlvbiBp cyBoYW5kbGVkLiBUaGUgZXhjcF9wcmVmaXggdXBkYXRlIGJlY29tZXMgdXNlbGVzcyBhbmQg d2UNCj4gY2FuIGNsZWFudXAgdGhlIEhfU0VUX01PREUgaGNhbGwuDQoNCkJld2FyZSwgaWly YywgdGhpcyBkZXBlbmRzIG9uIHRoZSBuZXcgY3B1X3NldF9wYXByKCkgc3R1ZmYgSSBkaWQg c28gd2UNCmdldCB0aGUgcmlnaHQgTFBDUiB2YWx1ZXMgaW4gUEFQUiBtb2RlLg0KDQpDaGVl cnMsDQpCZW4uDQoNCj4gU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gSGVycmVuc2NobWlkdCA8 YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPg0KPiBbY2xnOiBSZW1vdmVkIExQRVMwLzEgaGFu ZGxpbmcgZm9yIEhWIHZzLiAhSFYNCj4gwqDCoMKgwqDCoMKgRml4ZWQgTFBDUl9JTEUgY2Fz ZSBmb3IgUE9XRVJQQ19FWENQX1BPV0VSOCBdDQo+IFNpZ25lZC1vZmYtYnk6IEPDqWRyaWMg TGUgR29hdGVyIDxjbGdAZnIuaWJtLmNvbT4NCj4gW2R3ZzogVGhpcyB3YXMgd3JpdHRlbiBh cyBhIGNsZWFudXAsIGJ1dCBpdCBhbHNvIGZpeGVzIGEgcmVhbCBidWcNCj4gwqDCoMKgwqDC oMKgd2hlcmUgc2V0dGluZyBhbiBhbHRlcm5hdGl2ZSBpbnRlcnJ1cHQgbG9jYXRpb24gd291 bGQgbm90IGJlDQo+IMKgwqDCoMKgwqDCoGNvcnJlY3RseSBtaWdyYXRlZF0NCj4gU2lnbmVk LW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+DQo+ IC0tLQ0KPiDCoGh3L3BwYy9zcGFwcl9oY2FsbC5jwqDCoMKgwqDCoMKgwqDCoHwgMTYgKy0t LS0tLS0tLS0tLS0tDQo+IMKgaW5jbHVkZS9ody9wcGMvc3BhcHIuaMKgwqDCoMKgwqDCoHzC oMKgNSAtLS0tLQ0KPiDCoHRhcmdldC1wcGMvY3B1LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8IDEwICsrKysrKysrKw0KPiDCoHRhcmdldC1wcGMvZXhjcF9oZWxwZXIuY8KgwqDCoMKg fCA0OQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0N Cj4gwqB0YXJnZXQtcHBjL3RyYW5zbGF0ZV9pbml0LmMgfMKgwqAyICstDQo+IMKgNSBmaWxl cyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS9ody9wcGMvc3BhcHJfaGNhbGwuYyBiL2h3L3BwYy9zcGFwcl9oY2FsbC5j DQo+IGluZGV4IDJkY2I2NzYuLjhmNDA2MDIgMTAwNjQ0DQo+IC0tLSBhL2h3L3BwYy9zcGFw cl9oY2FsbC5jDQo+ICsrKyBiL2h3L3BwYy9zcGFwcl9oY2FsbC5jDQo+IEBAIC04MjQsNyAr ODI0LDYgQEAgc3RhdGljIHRhcmdldF91bG9uZw0KPiBoX3NldF9tb2RlX3Jlc291cmNlX2Fk ZHJfdHJhbnNfbW9kZShQb3dlclBDQ1BVICpjcHUsDQo+IMKgew0KPiDCoMKgwqDCoMKgQ1BV U3RhdGUgKmNzOw0KPiDCoMKgwqDCoMKgUG93ZXJQQ0NQVUNsYXNzICpwY2MgPSBQT1dFUlBD X0NQVV9HRVRfQ0xBU1MoY3B1KTsNCj4gLcKgwqDCoMKgdGFyZ2V0X3Vsb25nIHByZWZpeDsN Cj4gwqANCj4gwqDCoMKgwqDCoGlmICghKHBjYy0+aW5zbnNfZmxhZ3MyICYgUFBDMl9JU0Ey MDdTKSkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gSF9QMjsNCj4gQEAgLTgzNiwy NSArODM1LDEyIEBAIHN0YXRpYyB0YXJnZXRfdWxvbmcNCj4gaF9zZXRfbW9kZV9yZXNvdXJj ZV9hZGRyX3RyYW5zX21vZGUoUG93ZXJQQ0NQVSAqY3B1LA0KPiDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gSF9QNDsNCj4gwqDCoMKgwqDCoH0NCj4gwqANCj4gLcKgwqDCoMKgc3dpdGNo IChtZmxhZ3MpIHsNCj4gLcKgwqDCoMKgY2FzZSBIX1NFVF9NT0RFX0FERFJfVFJBTlNfTk9O RToNCj4gLcKgwqDCoMKgwqDCoMKgwqBwcmVmaXggPSAwOw0KPiAtwqDCoMKgwqDCoMKgwqDC oGJyZWFrOw0KPiAtwqDCoMKgwqBjYXNlIEhfU0VUX01PREVfQUREUl9UUkFOU18wMDAxXzgw MDA6DQo+IC3CoMKgwqDCoMKgwqDCoMKgcHJlZml4ID0gMHgxODAwMDsNCj4gLcKgwqDCoMKg wqDCoMKgwqBicmVhazsNCj4gLcKgwqDCoMKgY2FzZSBIX1NFVF9NT0RFX0FERFJfVFJBTlNf QzAwMF8wMDAwXzAwMDBfNDAwMDoNCj4gLcKgwqDCoMKgwqDCoMKgwqBwcmVmaXggPSAweEMw MDAwMDAwMDAwMDQwMDBVTEw7DQo+IC3CoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+IC3CoMKg wqDCoGRlZmF1bHQ6DQo+ICvCoMKgwqDCoGlmIChtZmxhZ3MgPT0gQUlMX1JFU0VSVkVEKSB7 DQo+IMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBIX1VOU1VQUE9SVEVEX0ZMQUc7DQo+IMKg wqDCoMKgwqB9DQo+IMKgDQo+IMKgwqDCoMKgwqBDUFVfRk9SRUFDSChjcykgew0KPiAtwqDC oMKgwqDCoMKgwqDCoENQVVBQQ1N0YXRlICplbnYgPSAmUE9XRVJQQ19DUFUoY3B1KS0+ZW52 Ow0KPiAtDQo+IMKgwqDCoMKgwqDCoMKgwqDCoHNldF9zcHIoY3MsIFNQUl9MUENSLCBtZmxh Z3MgPDwgTFBDUl9BSUxfU0hJRlQsIExQQ1JfQUlMKTsNCj4gLcKgwqDCoMKgwqDCoMKgwqBl bnYtPmV4Y3BfcHJlZml4ID0gcHJlZml4Ow0KPiDCoMKgwqDCoMKgfQ0KPiDCoA0KPiDCoMKg wqDCoMKgcmV0dXJuIEhfU1VDQ0VTUzsNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvcHBj L3NwYXByLmggYi9pbmNsdWRlL2h3L3BwYy9zcGFwci5oDQo+IGluZGV4IDA5OGQ4NWQuLjgx NWQ1ZWUgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvaHcvcHBjL3NwYXByLmgNCj4gKysrIGIv aW5jbHVkZS9ody9wcGMvc3BhcHIuaA0KPiBAQCAtMjA0LDExICsyMDQsNiBAQCBzdHJ1Y3Qg c1BBUFJNYWNoaW5lU3RhdGUgew0KPiDCoCNkZWZpbmUgSF9TRVRfTU9ERV9FTkRJQU5fQklH wqDCoMKgwqAwDQo+IMKgI2RlZmluZSBIX1NFVF9NT0RFX0VORElBTl9MSVRUTEUgMQ0KPiDC oA0KPiAtLyogRmxhZ3MgZm9yIEhfU0VUX01PREVfUkVTT1VSQ0VfQUREUl9UUkFOU19NT0RF ICovDQo+IC0jZGVmaW5lIEhfU0VUX01PREVfQUREUl9UUkFOU19OT05FwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMA0KPiAtI2RlZmluZSBIX1NFVF9NT0RFX0FERFJf VFJBTlNfMDAwMV84MDAwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAyDQo+IC0jZGVmaW5l IEhfU0VUX01PREVfQUREUl9UUkFOU19DMDAwXzAwMDBfMDAwMF80MDAwwqDCoMKgMw0KPiAt DQo+IMKgLyogVkFTSSBTdGF0ZXMgKi8NCj4gwqAjZGVmaW5lIEhfVkFTSV9JTlZBTElEwqDC oMKgwqAwDQo+IMKgI2RlZmluZSBIX1ZBU0lfRU5BQkxFRMKgwqDCoMKgMQ0KPiBkaWZmIC0t Z2l0IGEvdGFyZ2V0LXBwYy9jcHUuaCBiL3RhcmdldC1wcGMvY3B1LmgNCj4gaW5kZXggNjc2 MDgxZS4uOWQ0ZTQzYyAxMDA2NDQNCj4gLS0tIGEvdGFyZ2V0LXBwYy9jcHUuaA0KPiArKysg Yi90YXJnZXQtcHBjL2NwdS5oDQo+IEBAIC0xNjcsNiArMTY3LDggQEAgZW51bSBwb3dlcnBj X2V4Y3BfdCB7DQo+IMKgwqDCoMKgwqBQT1dFUlBDX0VYQ1BfOTcwLA0KPiDCoMKgwqDCoMKg LyogUE9XRVI3IGV4Y2VwdGlvbiBtb2RlbMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqLw0KPiDC oMKgwqDCoMKgUE9XRVJQQ19FWENQX1BPV0VSNywNCj4gK8KgwqDCoMKgLyogUE9XRVI4IGV4 Y2VwdGlvbiBtb2RlbMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqLw0KPiArwqDCoMKgwqBQT1dF UlBDX0VYQ1BfUE9XRVI4LA0KPiDCoCNlbmRpZiAvKiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkg Ki8NCj4gwqB9Ow0KPiDCoA0KPiBAQCAtMjI3Nyw2ICsyMjc5LDE0IEBAIGVudW0gew0KPiDC oMKgwqDCoMKgSE1FUl9YU0NPTV9TVEFUVVNfTFNIwqDCoMKgwqDCoMKgwqA9ICg2MyAtIDIz KSwNCj4gwqB9Ow0KPiDCoA0KPiArLyogQWx0ZXJuYXRlIEludGVycnVwdCBMb2NhdGlvbiAo QUlMKSAqLw0KPiArZW51bSB7DQo+ICvCoMKgwqDCoEFJTF9OT05FwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqA9IDAsDQo+ICvCoMKgwqDCoEFJTF9SRVNFUlZFRMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoD0gMSwNCj4gK8KgwqDCoMKgQUlMXzAwMDFfODAwMMKgwqDCoMKg wqDCoMKgwqDCoMKgwqA9IDIsDQo+ICvCoMKgwqDCoEFJTF9DMDAwXzAwMDBfMDAwMF80MDAw ID0gMywNCj4gK307DQo+ICsNCj4gwqAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqLw0K PiDCoA0KPiDCoHN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGNwdV9yZWFkX3hlcihDUFVQ UENTdGF0ZSAqZW52KQ0KPiBkaWZmIC0tZ2l0IGEvdGFyZ2V0LXBwYy9leGNwX2hlbHBlci5j IGIvdGFyZ2V0LXBwYy9leGNwX2hlbHBlci5jDQo+IGluZGV4IGM4OTA4NTMuLmNhNGZmZTgg MTAwNjQ0DQo+IC0tLSBhL3RhcmdldC1wcGMvZXhjcF9oZWxwZXIuYw0KPiArKysgYi90YXJn ZXQtcHBjL2V4Y3BfaGVscGVyLmMNCj4gQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGlubGlu ZSB2b2lkIHBvd2VycGNfZXhjcChQb3dlclBDQ1BVICpjcHUsDQo+IGludCBleGNwX21vZGVs LCBpbnQgZXhjcCkNCj4gwqDCoMKgwqDCoENQVVBQQ1N0YXRlICplbnYgPSAmY3B1LT5lbnY7 DQo+IMKgwqDCoMKgwqB0YXJnZXRfdWxvbmcgbXNyLCBuZXdfbXNyLCB2ZWN0b3I7DQo+IMKg wqDCoMKgwqBpbnQgc3JyMCwgc3JyMSwgYXNycjAsIGFzcnIxOw0KPiAtwqDCoMKgwqBpbnQg bHBlczAsIGxwZXMxLCBsZXY7DQo+ICvCoMKgwqDCoGludCBscGVzMCwgbHBlczEsIGxldiwg YWlsOw0KPiDCoA0KPiDCoMKgwqDCoMKgaWYgKDApIHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg LyogWFhYOiBmaW5kIGEgc3VpdGFibGUgY29uZGl0aW9uIHRvIGVuYWJsZSB0aGUgaHlwZXJ2 aXNvcg0KPiBtb2RlICovDQo+IEBAIC0xMDgsNiArMTA4LDI1IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBwb3dlcnBjX2V4Y3AoUG93ZXJQQ0NQVSAqY3B1LA0KPiBpbnQgZXhjcF9tb2RlbCwg aW50IGV4Y3ApDQo+IMKgwqDCoMKgwqBhc3JyMCA9IC0xOw0KPiDCoMKgwqDCoMKgYXNycjEg PSAtMTsNCj4gwqANCj4gK8KgwqDCoMKgLyogRXhjZXB0aW9uIHRhcmdldHRpbmcgbW9kaWZp ZXJzDQo+ICvCoMKgwqDCoMKgKg0KPiArwqDCoMKgwqDCoCogQUlMIGlzIGluaXRpYWxpemVk IGhlcmUgYnV0IGNhbiBiZSBjbGVhcmVkIGJ5DQo+ICvCoMKgwqDCoMKgKiBzZWxlY3RlZCBl eGNlcHRpb25zDQo+ICvCoMKgwqDCoMKgKi8NCj4gKyNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2 NCkNCj4gK8KgwqDCoMKgaWYgKGV4Y3BfbW9kZWwgPT0gUE9XRVJQQ19FWENQX1BPV0VSNyB8 fA0KPiArwqDCoMKgwqDCoMKgwqDCoGV4Y3BfbW9kZWwgPT0gUE9XRVJQQ19FWENQX1BPV0VS OCkgew0KPiArwqDCoMKgwqDCoMKgwqDCoGlmIChleGNwX21vZGVsID09IFBPV0VSUENfRVhD UF9QT1dFUjgpIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFpbCA9IChlbnYtPnNw cltTUFJfTFBDUl0gJiBMUENSX0FJTCkgPj4gTFBDUl9BSUxfU0hJRlQ7DQo+ICvCoMKgwqDC oMKgwqDCoMKgfSBlbHNlIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFpbCA9IDA7 DQo+ICvCoMKgwqDCoMKgwqDCoMKgfQ0KPiArwqDCoMKgwqB9IGVsc2UNCj4gKyNlbmRpZiAv KiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkgKi8NCj4gK8KgwqDCoMKgew0KPiArwqDCoMKgwqDC oMKgwqDCoGFpbCA9IDA7DQo+ICvCoMKgwqDCoH0NCj4gKw0KPiDCoMKgwqDCoMKgc3dpdGNo IChleGNwKSB7DQo+IMKgwqDCoMKgwqBjYXNlIFBPV0VSUENfRVhDUF9OT05FOg0KPiDCoMKg wqDCoMKgwqDCoMKgwqAvKiBTaG91bGQgbmV2ZXIgaGFwcGVuICovDQo+IEBAIC0xNDYsNiAr MTY1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvd2VycGNfZXhjcChQb3dlclBDQ1BVICpj cHUsDQo+IGludCBleGNwX21vZGVsLCBpbnQgZXhjcCkNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBYWFg6IGZpbmQgYSBzdWl0YWJsZSBjb25kaXRpb24gdG8gZW5hYmxlIHRo ZQ0KPiBoeXBlcnZpc29yIG1vZGUgKi8NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu ZXdfbXNyIHw9ICh0YXJnZXRfdWxvbmcpTVNSX0hWQjsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg fQ0KPiArwqDCoMKgwqDCoMKgwqDCoGFpbCA9IDA7DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKg wqDCoC8qIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9ucyBkb24ndCBoYXZlIE1FIHNldCAqLw0K PiDCoMKgwqDCoMKgwqDCoMKgwqBuZXdfbXNyICY9IH4oKHRhcmdldF91bG9uZykxIDw8IE1T Ul9NRSk7DQo+IEBAIC0zNDQsNiArMzY0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvd2Vy cGNfZXhjcChQb3dlclBDQ1BVICpjcHUsDQo+IGludCBleGNwX21vZGVsLCBpbnQgZXhjcCkN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYWFg6IGZpbmQgYSBzdWl0YWJsZSBj b25kaXRpb24gdG8gZW5hYmxlIHRoZQ0KPiBoeXBlcnZpc29yIG1vZGUgKi8NCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBuZXdfbXNyIHw9ICh0YXJnZXRfdWxvbmcpTVNSX0hWQjsN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiArwqDCoMKgwqDCoMKgwqDCoGFpbCA9IDA7DQo+ IMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gc3RvcmVfbmV4dDsNCj4gwqDCoMKgwqDCoGNhc2Ug UE9XRVJQQ19FWENQX0RTRUc6wqDCoMKgwqDCoMKgLyogRGF0YSBzZWdtZW50DQo+IGV4Y2Vw dGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKi8NCj4gwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGxwZXMxID09IDApIHsNCj4gQEAgLTYzMCw3ICs2NTEsOCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgcG93ZXJwY19leGNwKFBvd2VyUENDUFUgKmNwdSwNCj4gaW50 IGV4Y3BfbW9kZWwsIGludCBleGNwKQ0KPiDCoMKgwqDCoMKgfQ0KPiDCoA0KPiDCoCNpZmRl ZiBUQVJHRVRfUFBDNjQNCj4gLcKgwqDCoMKgaWYgKGV4Y3BfbW9kZWwgPT0gUE9XRVJQQ19F WENQX1BPV0VSNykgew0KPiArwqDCoMKgwqBpZiAoZXhjcF9tb2RlbCA9PSBQT1dFUlBDX0VY Q1BfUE9XRVI3IHx8DQo+ICvCoMKgwqDCoMKgwqDCoMKgZXhjcF9tb2RlbCA9PSBQT1dFUlBD X0VYQ1BfUE9XRVI4KSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlbnYtPnNwcltTUFJf TFBDUl0gJiBMUENSX0lMRSkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ld19t c3IgfD0gKHRhcmdldF91bG9uZykxIDw8IE1TUl9MRTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg fQ0KPiBAQCAtNjUwLDYgKzY3MiwyOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG93ZXJwY19l eGNwKFBvd2VyUENDUFUgKmNwdSwNCj4gaW50IGV4Y3BfbW9kZWwsIGludCBleGNwKQ0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4Y3ApOw0KPiDCoMKgwqDC oMKgfQ0KPiDCoMKgwqDCoMKgdmVjdG9yIHw9IGVudi0+ZXhjcF9wcmVmaXg7DQo+ICsNCj4g K8KgwqDCoMKgLyogQUlMIG9ubHkgd29ya3MgaWYgdGhlcmUgaXMgbm8gSFYgdHJhbnNpdGlv biBhbmQgd2UgYXJlDQo+IHJ1bm5pbmcgd2l0aA0KPiArwqDCoMKgwqDCoCogdHJhbnNsYXRp b25zIGVuYWJsZWQNCj4gK8KgwqDCoMKgwqAqLw0KPiArwqDCoMKgwqBpZiAoISgobXNyID4+ IE1TUl9JUikgJiAxKSB8fCAhKChtc3IgPj4gTVNSX0RSKSAmIDEpKSB7DQo+ICvCoMKgwqDC oMKgwqDCoMKgYWlsID0gMDsNCj4gK8KgwqDCoMKgfQ0KPiArwqDCoMKgwqAvKiBIYW5kbGUg QUlMICovDQo+ICvCoMKgwqDCoGlmIChhaWwpIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqBuZXdf bXNyIHw9ICgxIDw8IE1TUl9JUikgfCAoMSA8PCBNU1JfRFIpOw0KPiArwqDCoMKgwqDCoMKg wqDCoHN3aXRjaChhaWwpIHsNCj4gK8KgwqDCoMKgwqDCoMKgwqBjYXNlIEFJTF8wMDAxXzgw MDA6DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ZWN0b3IgfD0gMHgxODAwMDsNCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPiArwqDCoMKgwqDCoMKgwqDCoGNh c2UgQUlMX0MwMDBfMDAwMF8wMDAwXzQwMDA6DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB2ZWN0b3IgfD0gMHhjMDAwMDAwMDAwMDA0MDAwdWxsOw0KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYnJlYWs7DQo+ICvCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdDoNCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNwdV9hYm9ydChjcywgIkludmFsaWQgQUlMIGNvbWJpbmF0 aW9uICVkXG4iLCBhaWwpOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ ICvCoMKgwqDCoMKgwqDCoMKgfQ0KPiArwqDCoMKgwqB9DQo+ICsNCj4gwqAjaWYgZGVmaW5l ZChUQVJHRVRfUFBDNjQpDQo+IMKgwqDCoMKgwqBpZiAoZXhjcF9tb2RlbCA9PSBQT1dFUlBD X0VYQ1BfQk9PS0UpIHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVudi0+c3ByW1NQUl9C T09LRV9FUENSXSAmIEVQQ1JfSUNNKSB7DQo+IGRpZmYgLS1naXQgYS90YXJnZXQtcHBjL3Ry YW5zbGF0ZV9pbml0LmMgYi90YXJnZXQtDQo+IHBwYy90cmFuc2xhdGVfaW5pdC5jDQo+IGlu ZGV4IDBhMzM1OTcuLmY1MTU3MjUgMTAwNjQ0DQo+IC0tLSBhL3RhcmdldC1wcGMvdHJhbnNs YXRlX2luaXQuYw0KPiArKysgYi90YXJnZXQtcHBjL3RyYW5zbGF0ZV9pbml0LmMNCj4gQEAg LTg0ODcsNyArODQ4Nyw3IEBAIFBPV0VSUENfRkFNSUxZKFBPV0VSOCkoT2JqZWN0Q2xhc3Mg Km9jLCB2b2lkDQo+ICpkYXRhKQ0KPiDCoMKgwqDCoMKgcGNjLT5oYW5kbGVfbW11X2ZhdWx0 ID0gcHBjX2hhc2g2NF9oYW5kbGVfbW11X2ZhdWx0Ow0KPiDCoMKgwqDCoMKgcGNjLT5zcHMg PSAmUE9XRVI3X1BPV0VSOF9zcHM7DQo+IMKgI2VuZGlmDQo+IC3CoMKgwqDCoHBjYy0+ZXhj cF9tb2RlbCA9IFBPV0VSUENfRVhDUF9QT1dFUjc7DQo+ICvCoMKgwqDCoHBjYy0+ZXhjcF9t b2RlbCA9IFBPV0VSUENfRVhDUF9QT1dFUjg7DQo+IMKgwqDCoMKgwqBwY2MtPmJ1c19tb2Rl bCA9IFBQQ19GTEFHU19JTlBVVF9QT1dFUjc7DQo+IMKgwqDCoMKgwqBwY2MtPmJmZF9tYWNo ID0gYmZkX21hY2hfcHBjNjQ7DQo+IMKgwqDCoMKgwqBwY2MtPmZsYWdzID0gUE9XRVJQQ19G TEFHX1ZSRSB8IFBPV0VSUENfRkxBR19TRSB8DQo=