Patch to cyberfb.c to drive Aurora 64 V+

Brent Baccala (baccala@vger.freesoft.org)
Wed, 2 Jul 2003 15:57:15 -0400 (EDT)


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-16285-1057176269-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi -

I'm attaching a patch to 2.4.20's drivers/video/cyberfb.c to drive the
S3 Aurora 64 V+ chip

cyberfb.c is a fairly generic S3 driver, so half of this patch is
byte-ordering and probing on the PCI bus as well as the Zorro bus.

Unfortunately, the machine I was developing this on died, and the
patch really isn't finished yet. It works, but it has some problems
(if you try to start a 16-color X server, you'll see; 256-color works
fine, though, full color had some kind of problem, I recall). It
also has some "#if 0"s that really should be better conditionals.

But, the machine is dead, and barring a resurrection, I won't be
doing any more work on this code. It's a good starting point for
anyone try to get an S3 Aurora V+ running with the kernel framebuffer
code, and, I dare say, anyone with another kind of S3 or S3-compatible
card should find it a good start.

Sorry about the half-finished code, but "release early, release often",
so maybe somebody else can get some good from it.

--

-bwb Brent Baccala baccala@freesoft.org

--=_courier-16285-1057176269-0001-2 Content-Type: text/plain; charset=us-ascii; name="cyberfb.patch" Content-Transfer-Encoding: base64 Content-ID: <Pine.LNX.4.44.0307021557150.14229@vger.freesoft.org> Content-Description: Content-Disposition: attachment; filename="cyberfb.patch"

DQoJcGF0Y2ggdG8gY3liZXJmYi5jIHRvIGhhbmRsZSBTMyBBdXJvcmEgNjQg VisgKHVzZWQgaW4gVGhpbmtwYWQgODYwKQ0KCWN5YmVyZmIuYyBpcyBhIGZh aXJseSBnZW5lcmljIFMzIGZiY29uIGRyaXZlcg0KCWhhbGYgb2YgdGhpcyBw YXRjaCBpcyBieXRlIG9yZGVyaW5nIGFuZCBQQ0kgYnVzIHByb2JpbmcNCglz dGlsbCBkb2Vzbid0IHdvcmsgY29tcGxldGVseSByaWdodCAtIFhGODZfVkdB MTYgb24gZmJjb24gYnJlYWtzIGl0DQoNCi0tLSAvcG93ZXJwYy9kaXN0LTIu NC4yMC9kcml2ZXJzL3ZpZGVvL0NvbmZpZy5pbglTdW4gQXByIDIwIDEyOjA0 OjM1IDIwMDMNCisrKyAvcG93ZXJwYy9saW51eC0yLjQuMjAvZHJpdmVycy92 aWRlby9Db25maWcuaW4JTW9uIEFwciAyMSAwOToxMjo1MyAyMDAzDQpAQCAt NTEsOCArNTEsOCBAQA0KIAkgYm9vbCAnICAgIEFtaWdhIEFHQSBjaGlwc2V0 IHN1cHBvcnQnIENPTkZJR19GQl9BTUlHQV9BR0ENCiAgICAgICBmaQ0KICAg IGZpDQorICAgdHJpc3RhdGUgJyAgUzMgVHJpbyAoQW1pZ2EgQ3liZXJWaXNp b24pIHN1cHBvcnQnIENPTkZJR19GQl9DWUJFUg0KICAgIGlmIFsgIiRDT05G SUdfWk9SUk8iID0gInkiIF07IHRoZW4NCi0gICAgICB0cmlzdGF0ZSAnICBB bWlnYSBDeWJlclZpc2lvbiBzdXBwb3J0JyBDT05GSUdfRkJfQ1lCRVINCiAg ICAgICBpZiBbICIkQ09ORklHX0VYUEVSSU1FTlRBTCIgPSAieSIgXTsgdGhl bg0KIAkgYm9vbCAnICBBbWlnYSBDeWJlclZpc2lvbjNEIHN1cHBvcnQgKEVY UEVSSU1FTlRBTCknIENPTkZJR19GQl9WSVJHRQ0KIAkgdHJpc3RhdGUgJyAg QW1pZ2EgUmV0aW5hWjMgc3VwcG9ydCAoRVhQRVJJTUVOVEFMKScgQ09ORklH X0ZCX1JFVElOQVozDQotLS0gL3Bvd2VycGMvZGlzdC0yLjQuMjAvZHJpdmVy cy92aWRlby9jeWJlcmZiLmMJV2VkIE5vdiAxNCAxNzo1MjoyMCAyMDAxDQor KysgL3Bvd2VycGMvbGludXgtMi40LjIwL2RyaXZlcnMvdmlkZW8vY3liZXJm Yi5jCVR1ZSBBcHIgMTUgMTg6MzU6MDcgMjAwMw0KQEAgLTg1LDYgKzg1LDcg QEANCiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KICNpbmNsdWRlIDxsaW51 eC9kZWxheS5oPg0KICNpbmNsdWRlIDxsaW51eC96b3Jyby5oPg0KKyNpbmNs dWRlIDxsaW51eC9wY2kuaD4NCiAjaW5jbHVkZSA8bGludXgvZmIuaD4NCiAj aW5jbHVkZSA8bGludXgvaW5pdC5oPg0KICNpbmNsdWRlIDxhc20vdWFjY2Vz cy5oPg0KQEAgLTk5LDcgKzEwMCw3IEBADQogI2luY2x1ZGUgPHZpZGVvL2Zi Y29uLWNmYjguaD4NCiAjaW5jbHVkZSA8dmlkZW8vZmJjb24tY2ZiMTYuaD4N CiANCi0vKiNkZWZpbmUgQ1lCRVJGQkRFQlVHKi8NCisvKiAjZGVmaW5lIENZ QkVSRkJERUJVRyAqLw0KICNpZmRlZiBDWUJFUkZCREVCVUcNCiAjZGVmaW5l IERQUklOVEsoZm10LCBhcmdzLi4uKSBwcmludGsoS0VSTl9ERUJVRyAiJXM6 ICIgZm10LCBfX0ZVTkNUSU9OX18gLCAjIyBhcmdzKQ0KIHN0YXRpYyB2b2lk IGN2NjRfZHVtcCh2b2lkKTsNCkBAIC0xMTAsNyArMTExLDI2IEBADQogI2Rl ZmluZSB3Yl82NChyZWdzLHJlZyxkYXQpICgqKCgodm9sYXRpbGUgdW5zaWdu ZWQgY2hhciAqKXJlZ3MpICsgcmVnKSA9IGRhdCkNCiAjZGVmaW5lIHJiXzY0 KHJlZ3MsIHJlZykgKCooKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopcmVn cykgKyByZWcpKQ0KIA0KLSNkZWZpbmUgd3dfNjQocmVncyxyZWcsZGF0KSAo Kigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikocmVncyArIHJlZykgPSBk YXQpDQorI2lmIDANCisNCisjZGVmaW5lIHd3XzY0KHJlZ3MscmVnLGRhdCkg KCooKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKHJlZ3MgKyByZWcpKSA9 IGRhdCkNCisjZGVmaW5lIHJ3XzY0KHJlZ3MscmVnKSAgICAgKCooKHZvbGF0 aWxlIHVuc2lnbmVkIHNob3J0ICopKHJlZ3MgKyByZWcpKSkNCisNCisjZGVm aW5lIHdsXzY0KHJlZ3MscmVnLGRhdCkgKCooKHZvbGF0aWxlIHVuc2lnbmVk IGxvbmcgKikocmVncyArIHJlZykpID0gZGF0KQ0KKyNkZWZpbmUgcmxfNjQo cmVncyxyZWcpICAgICAoKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKShy ZWdzICsgcmVnKSkpDQorDQorI2Vsc2UNCisNCisjZGVmaW5lIHd3XzY0KHJl Z3MscmVnLGRhdCkgc3RfbGUxNigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg KikocmVncyArIHJlZyksIGRhdCkNCisjZGVmaW5lIHJ3XzY0KHJlZ3MscmVn KSAgICAgbGRfbGUxNigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikocmVn cyArIHJlZykpDQorDQorI2RlZmluZSB3bF82NChyZWdzLHJlZyxkYXQpIHN0 X2xlMzIoKHZvbGF0aWxlIHVuc2lnbmVkICopKHJlZ3MgKyByZWcpLCBkYXQp DQorI2RlZmluZSBybF82NChyZWdzLHJlZykgICAgIGxkX2xlMzIoKHZvbGF0 aWxlIHVuc2lnbmVkICopKHJlZ3MgKyByZWcpKQ0KKw0KKyNlbmRpZg0KKw0K Ky8qIFdyaXRlIDE2IEJpdCBWR0EgcmVnaXN0ZXIgKi8NCisjZGVmaW5lIHZn YXcxNihiYSwgcmVnLCB2YWwpIHd3XzY0KGJhLCByZWcsIHZhbCkNCiANCiBz dHJ1Y3QgY3liZXJmYl9wYXIgew0KIAlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmlu Zm8gdmFyOw0KQEAgLTE0OCw2ICsxNjgsMTAgQEANCiBzdGF0aWMgdW5zaWdu ZWQgbG9uZyBDeWJlck1lbV9waHlzOw0KIHN0YXRpYyB1bnNpZ25lZCBsb25n IEN5YmVyUmVnc19waHlzOw0KIA0KK3N0YXRpYyBpbnQgZGlzYWJsZWQgPSAw Ow0KKw0KKyNkZWZpbmUgQVVST1JBIChDeWJlckJhc2UgPT0gTlVMTCkNCisN CiAvKg0KICAqICAgIFByZWRlZmluZWQgVmlkZW8gTW9kZXMNCiAgKi8NCkBA IC00MzgsNiArNDYyLDggQEANCiAJcGFyLT52YXIueXJlc192aXJ0dWFsID0g dmFyLT55cmVzX3ZpcnR1YWw7DQogCXBhci0+dmFyLnhvZmZzZXQgPSB2YXIt PnhvZmZzZXQ7DQogCXBhci0+dmFyLnlvZmZzZXQgPSB2YXItPnlvZmZzZXQ7 DQorCWlmICh2YXItPmJpdHNfcGVyX3BpeGVsICE9IDggJiYgdmFyLT5iaXRz X3Blcl9waXhlbCAhPSAxNikNCisJCXJldHVybiAtRUlOVkFMOw0KIAlwYXIt PnZhci5iaXRzX3Blcl9waXhlbCA9IHZhci0+Yml0c19wZXJfcGl4ZWw7DQog CXBhci0+dmFyLmdyYXlzY2FsZSA9IHZhci0+Z3JheXNjYWxlOw0KIAlwYXIt PnZhci5yZWQgPSB2YXItPnJlZDsNCkBAIC02MjEsNyArNjQ3LDcgQEANCiAN CiAJRFBSSU5USygiRU5URVJcbiIpOw0KIAlkbyB7DQotCQlzdGF0dXMgPSAq KCh1X3Nob3J0IHZvbGF0aWxlICopKEN5YmVyUmVncyArIFMzX0dQX1NUQVQp KTsNCisJCXN0YXR1cyA9IHJ3XzY0KEN5YmVyUmVncywgUzNfR1BfU1RBVCk7 DQogCX0gd2hpbGUgKHN0YXR1cyAmIGZpZm8pOw0KIAlEUFJJTlRLKCJFWElU XG4iKTsNCiB9DQpAQCAtNjM1LDcgKzY2MSw3IEBADQogDQogCURQUklOVEso IkVOVEVSXG4iKTsNCiAJZG8gew0KLQkJc3RhdHVzID0gKigodV9zaG9ydCB2 b2xhdGlsZSAqKShDeWJlclJlZ3MgKyBTM19HUF9TVEFUKSk7DQorCQlzdGF0 dXMgPSByd182NChDeWJlclJlZ3MsIFMzX0dQX1NUQVQpOw0KIAl9IHdoaWxl IChzdGF0dXMgJiBTM19IRFdfQlVTWSk7DQogCURQUklOVEsoIkVYSVRcbiIp Ow0KIH0NCkBAIC02NjksMTkgKzY5NSwxOSBAQA0KIA0KIAlDeWJlcl9XYWl0 UXVldWUgKDB4ODAwMCk7DQogDQotCSooKHVfc2hvcnQgdm9sYXRpbGUgKiko cmVncyArIFMzX1BJWEVMX0NOVEwpKSA9IDB4YTAwMDsNCi0JKigodV9zaG9y dCB2b2xhdGlsZSAqKShyZWdzICsgUzNfRlJHRF9NSVgpKSA9ICgweDAwNjAg fCBtb2RlKTsNCisJd3dfNjQocmVncywgUzNfUElYRUxfQ05UTCwgMHhhMDAw KTsNCisJd3dfNjQocmVncywgUzNfRlJHRF9NSVgsICgweDAwNjAgfCBtb2Rl KSk7DQogDQotCSooKHVfc2hvcnQgdm9sYXRpbGUgKikocmVncyArIFMzX0NV Ul9YKSkgPSBjdXJ4Ow0KLQkqKCh1X3Nob3J0IHZvbGF0aWxlICopKHJlZ3Mg KyBTM19DVVJfWSkpID0gY3VyeTsNCisJd3dfNjQocmVncywgUzNfQ1VSX1gs IGN1cngpOw0KKwl3d182NChyZWdzLCBTM19DVVJfWSwgY3VyeSk7DQogDQot CSooKHVfc2hvcnQgdm9sYXRpbGUgKikocmVncyArIFMzX0RFU1RYX0RJQVNU UCkpID0gZGVzdHg7DQotCSooKHVfc2hvcnQgdm9sYXRpbGUgKikocmVncyAr IFMzX0RFU1RZX0FYU1RQKSkgPSBkZXN0eTsNCisJd3dfNjQocmVncywgUzNf REVTVFhfRElBU1RQLCBkZXN0eCk7DQorCXd3XzY0KHJlZ3MsIFMzX0RFU1RZ X0FYU1RQLCBkZXN0eSk7DQogDQotCSooKHVfc2hvcnQgdm9sYXRpbGUgKiko cmVncyArIFMzX01JTl9BWElTX1BDTlQpKSA9IGhlaWdodCAtIDE7DQotCSoo KHVfc2hvcnQgdm9sYXRpbGUgKikocmVncyArIFMzX01BSl9BWElTX1BDTlQp KSA9IHdpZHRoICAtIDE7DQorCXd3XzY0KHJlZ3MsIFMzX01JTl9BWElTX1BD TlQsIGhlaWdodCAtIDEpOw0KKwl3d182NChyZWdzLCBTM19NQUpfQVhJU19Q Q05ULCB3aWR0aCAgLSAxKTsNCiANCi0JKigodV9zaG9ydCB2b2xhdGlsZSAq KShyZWdzICsgUzNfQ01EKSkgPSBibGl0Y21kOw0KKwl3d182NChyZWdzLCBT M19DTUQsIGJsaXRjbWQpOw0KIAlEUFJJTlRLKCJFWElUXG4iKTsNCiB9DQog DQpAQCAtNjk3LDE5ICs3MjMsMTkgQEANCiAJRFBSSU5USygiRU5URVJcbiIp Ow0KIAlDeWJlcl9XYWl0UXVldWUgKDB4ODAwMCk7DQogDQotCSooKHVfc2hv cnQgdm9sYXRpbGUgKikocmVncyArIFMzX1BJWEVMX0NOVEwpKSA9IDB4YTAw MDsNCi0JKigodV9zaG9ydCB2b2xhdGlsZSAqKShyZWdzICsgUzNfRlJHRF9N SVgpKSA9ICgweDAwMjAgfCBtb2RlKTsNCisJd3dfNjQocmVncywgUzNfUElY RUxfQ05UTCwgMHhhMDAwKTsNCisJd3dfNjQocmVncywgUzNfRlJHRF9NSVgs ICgweDAwMjAgfCBtb2RlKSk7DQogDQotCSooKHVfc2hvcnQgdm9sYXRpbGUg KikocmVncyArIFMzX01VTFRfTUlTQykpID0gMHhlMDAwOw0KLQkqKCh1X3No b3J0IHZvbGF0aWxlICopKHJlZ3MgKyBTM19GUkdEX0NPTE9SKSkgPSBjb2xv cjsNCisJd3dfNjQocmVncywgUzNfTVVMVF9NSVNDLCAweGUwMDApOw0KKwl3 d182NChyZWdzLCBTM19GUkdEX0NPTE9SLCBjb2xvcik7DQogDQotCSooKHVf c2hvcnQgdm9sYXRpbGUgKikocmVncyArIFMzX0NVUl9YKSkgPSB4Ow0KLQkq KCh1X3Nob3J0IHZvbGF0aWxlICopKHJlZ3MgKyBTM19DVVJfWSkpID0geTsN CisJd3dfNjQocmVncywgUzNfQ1VSX1gsIHgpOw0KKwl3d182NChyZWdzLCBT M19DVVJfWSwgeSk7DQogDQotCSooKHVfc2hvcnQgdm9sYXRpbGUgKikocmVn cyArIFMzX01JTl9BWElTX1BDTlQpKSA9IGhlaWdodCAtIDE7DQotCSooKHVf c2hvcnQgdm9sYXRpbGUgKikocmVncyArIFMzX01BSl9BWElTX1BDTlQpKSA9 IHdpZHRoICAtIDE7DQorCXd3XzY0KHJlZ3MsIFMzX01JTl9BWElTX1BDTlQs IGhlaWdodCAtIDEpOw0KKwl3d182NChyZWdzLCBTM19NQUpfQVhJU19QQ05U LCB3aWR0aCAgLSAxKTsNCiANCi0JKigodV9zaG9ydCB2b2xhdGlsZSAqKShy ZWdzICsgUzNfQ01EKSkgPSBibGl0Y21kOw0KKwl3d182NChyZWdzLCBTM19D TUQsIGJsaXRjbWQpOw0KIAlEUFJJTlRLKCJFWElUXG4iKTsNCiB9DQogDQpA QCAtMTA1MSw3ICsxMDc3LDU3IEBADQogICogICAgSW5pdGlhbGl6YXRpb24N CiAgKi8NCiANCi1pbnQgX19pbml0IGN5YmVyZmJfaW5pdCh2b2lkKQ0KK2lu dCBfX2luaXQgY3liZXJmYl9pbml0X2RldmljZSh2b2lkKQ0KK3sNCisJc3Ry dWN0IGN5YmVyZmJfcGFyIHBhcjsNCisJRFBSSU5USygiRU5URVJcbiIpOw0K Kw0KKwlEUFJJTlRLKCJDeWJlckJhc2U9JTA4bHggQ3liZXJSZWdzPSUwOGx4 IEN5YmVyTWVtPSUwOGx4XG4iLA0KKwkJQ3liZXJCYXNlLCAobG9uZyB1bnNp Z25lZCBpbnQpQ3liZXJSZWdzLCBDeWJlck1lbSk7DQorDQorI2lmZGVmIENZ QkVSRkJERUJVRw0KKwlEUFJJTlRLKCJSZWdpc3RlciBzdGF0ZSBqdXN0IGFm dGVyIG1hcHBpbmcgbWVtb3J5XG4iKTsNCisJY3Y2NF9kdW1wKCk7DQorI2Vu ZGlmDQorDQorCXN0cmNweShmYl9pbmZvLm1vZGVuYW1lLCBjeWJlcmZiX25h bWUpOw0KKwlmYl9pbmZvLmNoYW5nZXZhciA9IE5VTEw7DQorCWZiX2luZm8u bm9kZSA9IC0xOw0KKwlmYl9pbmZvLmZib3BzID0gJmN5YmVyZmJfb3BzOw0K KwlmYl9pbmZvLmRpc3AgPSAmZGlzcDsNCisJZmJfaW5mby5zd2l0Y2hfY29u ID0gJkN5YmVyZmJfc3dpdGNoOw0KKwlmYl9pbmZvLnVwZGF0ZXZhciA9ICZD eWJlcmZiX3VwZGF0ZXZhcjsNCisJZmJfaW5mby5ibGFuayA9ICZDeWJlcmZi X2JsYW5rOw0KKw0KKwlDeWJlcl9pbml0KCk7DQorCS8qICsrQW5kcmU6IHNl dCBjeWJlcmZiIGRlZmF1bHQgbW9kZSAqLw0KKwlpZiAoIWN5YmVyZmJfdXNl cm1vZGUpIHsNCisJCWN5YmVyZmJfZGVmYXVsdCA9IGN5YmVyZmJfcHJlZGVm aW5lZFtDWUJFUjhfREVGTU9ERV0udmFyOw0KKwkJRFBSSU5USygiVXNlIGRl ZmF1bHQgY3liZXI4IG1vZGVcbiIpOw0KKwl9DQorCUN5YmVyX2RlY29kZV92 YXIoJmN5YmVyZmJfZGVmYXVsdCwgJnBhcik7DQorCUN5YmVyX2VuY29kZV92 YXIoJmN5YmVyZmJfZGVmYXVsdCwgJnBhcik7DQorDQorCWRvX2ZiX3NldF92 YXIoJmN5YmVyZmJfZGVmYXVsdCwgMSk7DQorCWN5YmVyZmJfZ2V0X3Zhcigm ZmJfZGlzcGxheVswXS52YXIsIC0xLCAmZmJfaW5mbyk7DQorCWN5YmVyZmJf c2V0X2Rpc3AoLTEsICZmYl9pbmZvKTsNCisJZG9faW5zdGFsbF9jbWFwKDAs ICZmYl9pbmZvKTsNCisNCisJaWYgKHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCZm Yl9pbmZvKSA8IDApIHsNCisJCURQUklOVEsoIkVYSVQgLSByZWdpc3Rlcl9m cmFtZWJ1ZmZlciBmYWlsZWRcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQor DQorCXByaW50aygiZmIlZDogJXMgZnJhbWUgYnVmZmVyIGRldmljZSwgdXNp bmcgJWxkSyBvZiB2aWRlbyBtZW1vcnlcbiIsDQorCSAgICAgICBHRVRfRkJf SURYKGZiX2luZm8ubm9kZSksIGZiX2luZm8ubW9kZW5hbWUsIEN5YmVyU2l6 ZT4+MTApOw0KKw0KKwlEUFJJTlRLKCJFWElUXG4iKTsNCisJcmV0dXJuIDA7 DQorfQ0KKw0KKw0KKyNpZmRlZiBDT05GSUdfWk9SUk8NCitpbnQgX19pbml0 IGN5YmVyZmJfaW5pdF96b3Jybyh2b2lkKQ0KIHsNCiAJdW5zaWduZWQgbG9u ZyBib2FyZF9hZGRyLCBib2FyZF9zaXplOw0KIAlzdHJ1Y3QgY3liZXJmYl9w YXIgcGFyOw0KQEAgLTEwNTksNzAgKzExMzUsMTA1IEBADQogCURQUklOVEso IkVOVEVSXG4iKTsNCiANCiAJd2hpbGUgKCh6ID0gem9ycm9fZmluZF9kZXZp Y2UoWk9SUk9fUFJPRF9QSEFTRTVfQ1lCRVJWSVNJT042NCwgeikpKSB7DQot CSAgICBib2FyZF9hZGRyID0gei0+cmVzb3VyY2Uuc3RhcnQ7DQotCSAgICBi b2FyZF9zaXplID0gei0+cmVzb3VyY2UuZW5kLXotPnJlc291cmNlLnN0YXJ0 KzE7DQotCSAgICBDeWJlck1lbV9waHlzID0gYm9hcmRfYWRkciArIDB4MDE0 MDAwMDA7DQotCSAgICBDeWJlclJlZ3NfcGh5cyA9IEN5YmVyTWVtX3BoeXMg KyAweDAwYzAwMDAwOw0KLQkgICAgaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24o Q3liZXJSZWdzX3BoeXMsIDB4MTAwMDAsICJTMyBUcmlvNjQiKSkNCi0JCWNv bnRpbnVlOw0KLQkgICAgaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24oQ3liZXJN ZW1fcGh5cywgMHg0MDAwMDAsICJSQU0iKSkgew0KLQkJcmVsZWFzZV9tZW1f cmVnaW9uKEN5YmVyUmVnc19waHlzLCAweDEwMDAwKTsNCi0JCWNvbnRpbnVl Ow0KLQkgICAgfQ0KLQkgICAgRFBSSU5USygiYm9hcmRfYWRkcj0lMDhseFxu IiwgYm9hcmRfYWRkcik7DQotCSAgICBEUFJJTlRLKCJib2FyZF9zaXplPSUw OGx4XG4iLCBib2FyZF9zaXplKTsNCi0NCi0JICAgIEN5YmVyQmFzZSA9IGlv cmVtYXAoYm9hcmRfYWRkciwgYm9hcmRfc2l6ZSk7DQotCSAgICBDeWJlclJl Z3MgPSBDeWJlckJhc2UgKyAweDAyMDAwMDAwOw0KLQkgICAgQ3liZXJNZW0g PSBDeWJlckJhc2UgKyAweDAxNDAwMDAwOw0KLQkgICAgRFBSSU5USygiQ3li ZXJCYXNlPSUwOGx4IEN5YmVyUmVncz0lMDhseCBDeWJlck1lbT0lMDhseFxu IiwNCi0JCSAgICBDeWJlckJhc2UsIChsb25nIHVuc2lnbmVkIGludClDeWJl clJlZ3MsIEN5YmVyTWVtKTsNCisJCWJvYXJkX2FkZHIgPSB6LT5yZXNvdXJj ZS5zdGFydDsNCisJCWJvYXJkX3NpemUgPSB6LT5yZXNvdXJjZS5lbmQtei0+ cmVzb3VyY2Uuc3RhcnQrMTsNCisJCUN5YmVyTWVtX3BoeXMgPSBib2FyZF9h ZGRyICsgMHgwMTQwMDAwMDsNCisJCUN5YmVyUmVnc19waHlzID0gQ3liZXJN ZW1fcGh5cyArIDB4MDBjMDAwMDA7DQorCQlpZiAoIXJlcXVlc3RfbWVtX3Jl Z2lvbihDeWJlclJlZ3NfcGh5cywgMHgxMDAwMCwgIlMzIFRyaW82NCIpKQ0K KwkJCWNvbnRpbnVlOw0KKwkJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24oQ3li ZXJNZW1fcGh5cywgMHg0MDAwMDAsICJSQU0iKSkgew0KKwkJCXJlbGVhc2Vf bWVtX3JlZ2lvbihDeWJlclJlZ3NfcGh5cywgMHgxMDAwMCk7DQorCQkJY29u dGludWU7DQorCQl9DQorCQlEUFJJTlRLKCJib2FyZF9hZGRyPSUwOGx4XG4i LCBib2FyZF9hZGRyKTsNCisJCURQUklOVEsoImJvYXJkX3NpemU9JTA4bHhc biIsIGJvYXJkX3NpemUpOw0KIA0KLSNpZmRlZiBDWUJFUkZCREVCVUcNCi0J ICAgIERQUklOVEsoIlJlZ2lzdGVyIHN0YXRlIGp1c3QgYWZ0ZXIgbWFwcGlu ZyBtZW1vcnlcbiIpOw0KLQkgICAgY3Y2NF9kdW1wKCk7DQotI2VuZGlmDQor CQlDeWJlckJhc2UgPSBpb3JlbWFwKGJvYXJkX2FkZHIsIGJvYXJkX3NpemUp Ow0KKwkJQ3liZXJSZWdzID0gQ3liZXJCYXNlICsgMHgwMjAwMDAwMDsNCisJ CUN5YmVyTWVtID0gQ3liZXJCYXNlICsgMHgwMTQwMDAwMDsNCisJCURQUklO VEsoIkN5YmVyQmFzZT0lMDhseCBDeWJlclJlZ3M9JTA4bHggQ3liZXJNZW09 JTA4bHhcbiIsDQorCQkJQ3liZXJCYXNlLCAobG9uZyB1bnNpZ25lZCBpbnQp Q3liZXJSZWdzLCBDeWJlck1lbSk7DQorDQorCQlpZiAoY3liZXJmYl9pbml0 X2RldmljZSgpIDwgMCkgew0KKwkJCURQUklOVEsoIkVYSVQgLSBjeWJlcmZi X2luaXRfZGV2aWNlIGZhaWxlZFxuIik7DQorCQkJcmVsZWFzZV9tZW1fcmVn aW9uKEN5YmVyTWVtX3BoeXMsIDB4NDAwMDAwKTsNCisJCQlyZWxlYXNlX21l bV9yZWdpb24oQ3liZXJSZWdzX3BoeXMsIDB4MTAwMDApOw0KKwkJCXJldHVy biAtRUlOVkFMOw0KKwkJfQ0KIA0KLQkgICAgc3RyY3B5KGZiX2luZm8ubW9k ZW5hbWUsIGN5YmVyZmJfbmFtZSk7DQotCSAgICBmYl9pbmZvLmNoYW5nZXZh ciA9IE5VTEw7DQotCSAgICBmYl9pbmZvLm5vZGUgPSAtMTsNCi0JICAgIGZi X2luZm8uZmJvcHMgPSAmY3liZXJmYl9vcHM7DQotCSAgICBmYl9pbmZvLmRp c3AgPSAmZGlzcDsNCi0JICAgIGZiX2luZm8uc3dpdGNoX2NvbiA9ICZDeWJl cmZiX3N3aXRjaDsNCi0JICAgIGZiX2luZm8udXBkYXRldmFyID0gJkN5YmVy ZmJfdXBkYXRldmFyOw0KLQkgICAgZmJfaW5mby5ibGFuayA9ICZDeWJlcmZi X2JsYW5rOw0KLQ0KLQkgICAgQ3liZXJfaW5pdCgpOw0KLQkgICAgLyogKytB bmRyZTogc2V0IGN5YmVyZmIgZGVmYXVsdCBtb2RlICovDQotCSAgICBpZiAo IWN5YmVyZmJfdXNlcm1vZGUpIHsNCi0JCSAgICBjeWJlcmZiX2RlZmF1bHQg PSBjeWJlcmZiX3ByZWRlZmluZWRbQ1lCRVI4X0RFRk1PREVdLnZhcjsNCi0J CSAgICBEUFJJTlRLKCJVc2UgZGVmYXVsdCBjeWJlcjggbW9kZVxuIik7DQot CSAgICB9DQotCSAgICBDeWJlcl9kZWNvZGVfdmFyKCZjeWJlcmZiX2RlZmF1 bHQsICZwYXIpOw0KLQkgICAgQ3liZXJfZW5jb2RlX3ZhcigmY3liZXJmYl9k ZWZhdWx0LCAmcGFyKTsNCi0NCi0JICAgIGRvX2ZiX3NldF92YXIoJmN5YmVy ZmJfZGVmYXVsdCwgMSk7DQotCSAgICBjeWJlcmZiX2dldF92YXIoJmZiX2Rp c3BsYXlbMF0udmFyLCAtMSwgJmZiX2luZm8pOw0KLQkgICAgY3liZXJmYl9z ZXRfZGlzcCgtMSwgJmZiX2luZm8pOw0KLQkgICAgZG9faW5zdGFsbF9jbWFw KDAsICZmYl9pbmZvKTsNCi0NCi0JICAgIGlmIChyZWdpc3Rlcl9mcmFtZWJ1 ZmZlcigmZmJfaW5mbykgPCAwKSB7DQotCQkgICAgRFBSSU5USygiRVhJVCAt IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyIGZhaWxlZFxuIik7DQotCQkgICAgcmVs ZWFzZV9tZW1fcmVnaW9uKEN5YmVyTWVtX3BoeXMsIDB4NDAwMDAwKTsNCi0J CSAgICByZWxlYXNlX21lbV9yZWdpb24oQ3liZXJSZWdzX3BoeXMsIDB4MTAw MDApOw0KLQkJICAgIHJldHVybiAtRUlOVkFMOw0KLQkgICAgfQ0KLQ0KLQkg ICAgcHJpbnRrKCJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2aWNlLCB1c2lu ZyAlbGRLIG9mIHZpZGVvIG1lbW9yeVxuIiwNCi0JCSAgIEdFVF9GQl9JRFgo ZmJfaW5mby5ub2RlKSwgZmJfaW5mby5tb2RlbmFtZSwgQ3liZXJTaXplPj4x MCk7DQotDQotCSAgICAvKiBUT0RPOiBUaGlzIGRyaXZlciBjYW5ub3QgYmUg dW5sb2FkZWQgeWV0ICovDQotCSAgICBNT0RfSU5DX1VTRV9DT1VOVDsNCi0J ICAgIERQUklOVEsoIkVYSVRcbiIpOw0KLQkgICAgcmV0dXJuIDA7DQorCQlE UFJJTlRLKCJFWElUXG4iKTsNCisJCXJldHVybiAwOw0KIAl9DQogCXJldHVy biAtRU5YSU87DQogfQ0KKyNlbmRpZg0KKw0KK2ludCBfX2luaXQgY3liZXJm Yl9pbml0X3BjaSh2b2lkKQ0KK3sNCisJc3RydWN0IHBjaV9kZXYgKmRwID0g TlVMTDsNCisJdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBzaXplOw0KKw0KKwlp ZiAoZGlzYWJsZWQpDQorCQlyZXR1cm4gLUVOWElPOw0KKw0KKwlkcCA9IHBj aV9maW5kX2RldmljZShQQ0lfVkVORE9SX0lEX1MzLCBQQ0lfREVWSUNFX0lE X1MzX1RSSU8sIGRwKTsNCisJaWYgKCFkcCkNCisJCWRwID0gcGNpX2ZpbmRf ZGV2aWNlKFBDSV9WRU5ET1JfSURfUzMsIFBDSV9ERVZJQ0VfSURfUzNfQVVS T1JBNjRWUCwgZHApOw0KKw0KKwlpZiAoKGRwICE9IDApICYmICgoZHAtPmNs YXNzID4+IDE2KSA9PSBQQ0lfQkFTRV9DTEFTU19ESVNQTEFZKSkgew0KKw0K KwkJaWYgKHBjaV9lbmFibGVfZGV2aWNlKGRwKSkgew0KKwkJCXByaW50ayhL RVJOX0VSUiAiY3liZXJmYjogZmFpbGVkIHRvIGVuYWJsZSBQQ0kgZGV2aWNl XG4iKTsNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisJCX0NCisNCisJCS8qIFRo ZXJlIGlzIG9ubHkgb25lIG1lbW9yeSByZWdpb24gYW5kIGl0IGNvdmVycyB0 aGUgbW1pbyBhbmQgZmIgYXJlYXMgKi8NCisJCWFkZHJlc3MgPSBwY2lfcmVz b3VyY2Vfc3RhcnQoZHAsIDApOw0KKwkJc2l6ZSAgICA9IHBjaV9yZXNvdXJj ZV9sZW4oZHAsIDApOyAvKiBzaXplID0gNjQqMTAyNCoxMDI0OyAqLw0KKwkJ aWYgKCFyZXF1ZXN0X21lbV9yZWdpb24oYWRkcmVzcywgc2l6ZSwgIlMzIFRy aW8iKSkgew0KKwkJCXByaW50aygiY3liZXJmYjogZmFpbGVkIHRvIGFsbG9j YXRlIG1lbW9yeSByZWdpb25cbiIpOw0KKwkJCXJldHVybiAtRUlOVkFMOw0K KwkJfQ0KKw0KKwkJQ3liZXJCYXNlID0gTlVMTDsNCisJCUN5YmVyTWVtID0g aW9yZW1hcChhZGRyZXNzLCBzaXplKTsNCisJCS8qIFhYWCB0aGlzIG1lbW9y eSBtYXBwaW5nIHNjaGVtZSB3b3JrcyBvbmx5IG9uIHBvd2VycGMgKi8NCisJ CUN5YmVyUmVncyA9ICh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopIF9JT19C QVNFOw0KKw0KKwkJQ3liZXJNZW1fcGh5cyA9IGFkZHJlc3M7DQorCQkvKiBY WFggd3JvbmcsIGJ1dCBpcyB0aGlzIChtbWlvX3N0YXJ0KSByZWFsbHkgdXNl ZD8gKi8NCisJCUN5YmVyUmVnc19waHlzID0gMDsNCisNCisJCWlmIChjeWJl cmZiX2luaXRfZGV2aWNlKCkgPCAwKSB7DQorCQkJRFBSSU5USygiRVhJVCAt IGN5YmVyZmJfaW5pdF9kZXZpY2UgZmFpbGVkXG4iKTsNCisJCQlyZWxlYXNl X21lbV9yZWdpb24oYWRkcmVzcywgc2l6ZSk7DQorCQkJcmV0dXJuIC1FSU5W QUw7DQorCQl9DQorDQorCQlyZXR1cm4gMDsNCisJfSBlbHNlDQorCQlyZXR1 cm4gLUVOT0RFVjsNCit9DQorDQoraW50IF9faW5pdCBjeWJlcmZiX2luaXQo dm9pZCkNCit7DQorCWludCByZXR2YWwgPSAtRU5YSU87DQorDQorI2lmZGVm IENPTkZJR19aT1JSTw0KKwlyZXR2YWwgPSBjeWJlcmZiX2luaXRfem9ycm8o KTsNCisjZW5kaWYNCisNCisJaWYgKHJldHZhbCA9PSAtRU5YSU8pIHsNCisJ CXJldHZhbCA9IGN5YmVyZmJfaW5pdF9wY2koKTsNCisJfQ0KKw0KKwlpZiAo cmV0dmFsID09IDApIHsNCisJCS8qIFRPRE86IFRoaXMgZHJpdmVyIGNhbm5v dCBiZSB1bmxvYWRlZCB5ZXQgKi8NCisJCU1PRF9JTkNfVVNFX0NPVU5UOw0K Kwl9DQorDQorCXJldHVybiByZXR2YWw7DQorfQ0KIA0KIA0KIHN0YXRpYyBp bnQgQ3liZXJmYl9zd2l0Y2goaW50IGNvbiwgc3RydWN0IGZiX2luZm8gKmlu Zm8pDQpAQCAtMTU4MywyMiArMTY5NCwyOCBAQA0KIAkvKg0KIAkgKiBTcGVj aWFsIEN5YmVyVmlzaW9uIDY0IGJvYXJkIG9wZXJhdGlvbnMNCiAJICovDQot CS8qIFJlc2V0IGJvYXJkICovDQotCWZvciAoaSA9IDA7IGkgPCA2OyBpKysp IHsNCi0JCWN2NjRfd3JpdGVfcG9ydCAoMHhmZiwgQ3liZXJCYXNlKTsNCisN CisJaWYgKCEgQVVST1JBKSB7DQorCQkvKiBSZXNldCBib2FyZCAqLw0KKwkJ Zm9yIChpID0gMDsgaSA8IDY7IGkrKykgew0KKwkJCWN2NjRfd3JpdGVfcG9y dCAoMHhmZiwgQ3liZXJCYXNlKTsNCisJCX0NCisJCS8qIFJldHVybiB0byBv cGVyYXRpb25hbCBtb2RlICovDQorCQljdjY0X3dyaXRlX3BvcnQgKDB4ODAw NCwgQ3liZXJCYXNlKTsNCiAJfQ0KLQkvKiBSZXR1cm4gdG8gb3BlcmF0aW9u YWwgbW9kZSAqLw0KLQljdjY0X3dyaXRlX3BvcnQgKDB4ODAwNCwgQ3liZXJC YXNlKTsNCiAJDQogCS8qDQogCSAqIEdlbmVyaWMgKD8pIFMzIGNoaXAgd2Fr ZXVwDQogCSAqLw0KLQkvKiBEaXNhYmxlIEkvTyAmIG1lbW9yeSBkZWNvZGVy cywgdmlkZW8gaW4gc2V0dXAgbW9kZSAqLw0KLQl3Yl82NCAocmVncywgU1JF R19WSURFT19TVUJTX0VOQUJMRSwgMHgxMCk7DQotCS8qIFZpZGVvIHJlc3Bv bmRzIHRvIGNtZHMsIGFkZHJzICYgZGF0YSAqLw0KLQl3Yl82NCAocmVncywg U1JFR19PUFRJT05fU0VMRUNULCAweDEpOw0KLQkvKiBFbmFibGUgSS9PICYg bWVtb3J5IGRlY29kZXJzLCB2aWRlbyBpbiBvcGVyYXRpb25hbCBtb2RlICov DQotCXdiXzY0IChyZWdzLCBTUkVHX1ZJREVPX1NVQlNfRU5BQkxFLCAweDgp Ow0KKw0KKwlpZiAoISBBVVJPUkEpIHsNCisJCS8qIERpc2FibGUgSS9PICYg bWVtb3J5IGRlY29kZXJzLCB2aWRlbyBpbiBzZXR1cCBtb2RlICovDQorCQl3 Yl82NCAocmVncywgU1JFR19WSURFT19TVUJTX0VOQUJMRSwgMHgxMCk7DQor CQkvKiBWaWRlbyByZXNwb25kcyB0byBjbWRzLCBhZGRycyAmIGRhdGEgKi8N CisJCXdiXzY0IChyZWdzLCBTUkVHX09QVElPTl9TRUxFQ1QsIDB4MSk7DQor CQkvKiBFbmFibGUgSS9PICYgbWVtb3J5IGRlY29kZXJzLCB2aWRlbyBpbiBv cGVyYXRpb25hbCBtb2RlICovDQorCQl3Yl82NCAocmVncywgU1JFR19WSURF T19TVUJTX0VOQUJMRSwgMHg4KTsNCisJfQ0KIAkvKiBWR0EgY29sb3IgZW11 bGF0aW9uLCBlbmFibGUgY3B1IGFjY2VzcyB0byBkaXNwbGF5IG1lbSAqLyAN CiAJd2JfNjQgKHJlZ3MsIEdSRUdfTUlTQ19PVVRQVVRfVywgMHgwMyk7DQog CS8qIFVubG9jayBTMyBWR0EgcmVncyAqLw0KQEAgLTE2MTUsOSArMTczMiwx MyBAQA0KIAkgKiBiaXQgMD0xOiBFbmFibGUgZW5oYWNlZCBtb2RlIGZ1bmN0 aW9ucw0KIAkgKiBiaXQgMj0wOiBFbmhhbmNlZCBtb2RlIDgrIGJpdHMvcGl4 ZWwNCiAJICogYml0IDQ9MTogRW5hYmxlIGxpbmVhciBhZGRyZXNzaW5nDQot CSAqIGJpdCA1PTE6IEVuYWJsZSBNTUlPDQorCSAqIGJpdCA1PTE6IEVuYWJs ZSBNTUlPIChleGNlcHQgb24gQXVyb3JhIDY0VispDQogCSAqLw0KIAl3Yl82 NCAocmVncywgRUNSX0FEVl9GVU5DX0NOVEwsIDB4MzEpOw0KKwlpZiAoQVVS T1JBKSB7DQorCQkvKiBFbmFibGUgbmV3LXN0eWxlIE1NSU8gb24gQXVyb3Jh IDY0VisgKi8NCisJCVdDcnQocmVncywgQ1JUX0lEX0VYVF9NRU1fQ05UTF8x LCAweDA4KTsNCisJfQ0KIAkvKg0KIAkgKiBiaXQgMD0xOiBDb2xvciBlbXVs YXRpb24NCiAJICogYml0IDE9MTogRW5hYmxlIENQVSBhY2Nlc3MgdG8gZGlz cGxheSBtZW1vcnkNCkBAIC0xNjQyLDEyICsxNzYzLDE1IEBADQogCS8qIFVu bG9jayBTMyBleHRlbnNpb25zIHRvIFZHQSBTZXF1ZW5jZXIgcmVncyAqLw0K IAlXU2VxIChyZWdzLCBTRVFfSURfVU5MT0NLX0VYVCwgMHg2KTsNCiAJDQot CS8qIEVuYWJsZSA0TUIgZmFzdCBwYWdlIG1vZGUgKi8NCi0JdGVzdCA9IFJT ZXEgKHJlZ3MsIFNFUV9JRF9CVVNfUkVRX0NOVEwpOw0KLQl0ZXN0ID0gdGVz dCB8IDEgPDwgNjsNCi0JV1NlcSAocmVncywgU0VRX0lEX0JVU19SRVFfQ05U TCwgdGVzdCk7DQorCWlmICghIEFVUk9SQSkgew0KKwkJLyogRW5hYmxlIDRN QiBmYXN0IHBhZ2UgbW9kZSAqLw0KKwkJdGVzdCA9IFJTZXEgKHJlZ3MsIFNF UV9JRF9CVVNfUkVRX0NOVEwpOw0KKwkJdGVzdCA9IHRlc3QgfCAxIDw8IDY7 DQorCQlXU2VxIChyZWdzLCBTRVFfSURfQlVTX1JFUV9DTlRMLCB0ZXN0KTsN CisJfQ0KIAkNCiAJLyogRmFzdGVyIExVVCB3cml0ZTogMSBEQ0xLIExVVCB3 cml0ZSBjeWNsZSwgUkFNREFDIGNsayBkb3VibGVkICovDQorCS8qIFhYWCBt YXkgYmUgYWJsZSB0byBwb3dlcmRvd24gUkFNREFDIG9uIEF1cm9yYSA2NFYr IGlmIG5vIENSVCAqLw0KIAlXU2VxIChyZWdzLCBTRVFfSURfUkFNREFDX0NO VEwsIDB4QzApOw0KIA0KIAkvKiBDbGVhciBpbW1lZGlhdGUgY2xvY2sgbG9h ZCBiaXQgKi8NCkBAIC0xNzUwLDggKzE4NzQsOCBAQA0KIA0KIAl3Yl82NCAo cmVncywgVkRBQ19NQVNLLCAweEZGKTsNCiANCi0JKigodW5zaWduZWQgbG9u ZyAqKSAocmVncyArIEVDUl9GUkdEX0NPTE9SKSkgPSAweEZGOw0KLQkqKCh1 bnNpZ25lZCBsb25nICopIChyZWdzICsgRUNSX0JLR0RfQ09MT1IpKSA9IDA7 DQorCXdsXzY0IChyZWdzLCBFQ1JfRlJHRF9DT0xPUiwgMHhGRik7DQorCXds XzY0IChyZWdzLCBFQ1JfQktHRF9DT0xPUiwgMCk7DQogDQogCS8qIENvbG9y cyBpbml0aWFsbHkgc2V0IHRvIGdyYXlzY2FsZSAqLw0KIA0KQEAgLTE4MjMs NyArMTk0Nyw3IEBADQogCWdmeF9vbl9vZmYgKDAsIHJlZ3MpOw0KIA0KIAkv KiBQYXNzLXRocm91Z2ggKi8NCi0JY3ZzY3JlZW4gKDAsIEN5YmVyQmFzZSk7 DQorCWlmICghIEFVUk9SQSkgY3ZzY3JlZW4gKDAsIEN5YmVyQmFzZSk7DQog DQogCURQUklOVEsoIkVYSVRcbiIpOw0KIH0NCkBAIC0yMDYwLDkgKzIxODQs MTEgQEANCiAgIHRlc3QgPSBSQ3J0IChyZWdzLCBDUlRfSURfRVhUX01JU0Nf Q05UTF8yKTsNCiAgIHRlc3QgJj0gMHhEOw0KIAkNCi0gIC8qIENsZWFyIHJv eHhsZXIgYnl0ZS1zd2FwcGluZy4uLiAqLw0KLSAgY3Y2NF93cml0ZV9wb3J0 ICgweDAwNDAsIEN5YmVyQmFzZSk7DQotICBjdjY0X3dyaXRlX3BvcnQgKDB4 MDAyMCwgQ3liZXJCYXNlKTsNCisgIGlmICghIEFVUk9SQSkgew0KKwkgIC8q IENsZWFyIHJveHhsZXIgYnl0ZS1zd2FwcGluZy4uLiAqLw0KKwkgIGN2NjRf d3JpdGVfcG9ydCAoMHgwMDQwLCBDeWJlckJhc2UpOw0KKwkgIGN2NjRfd3Jp dGVfcG9ydCAoMHgwMDIwLCBDeWJlckJhc2UpOw0KKyAgfQ0KIAkNCiAgIHN3 aXRjaCAodmlkZW9fbW9kZS0+Yml0c19wZXJfcGl4ZWwpIHsNCiAgIGNhc2Ug MToNCkBAIC0yMDgxLDE0ICsyMjA3LDE0IEBADQogICAgIGJyZWFrOw0KIAkJ DQogICBjYXNlIDE1Og0KLSAgICBjdjY0X3dyaXRlX3BvcnQgKDB4ODAyMCwg Q3liZXJCYXNlKTsNCisgICAgaWYgKCEgQVVST1JBKSBjdjY0X3dyaXRlX3Bv cnQgKDB4ODAyMCwgQ3liZXJCYXNlKTsNCiAgICAgY2xvY2tfbW9kZSA9IDB4 MzA7DQogICAgIEhERSA9IHZpZGVvX21vZGUtPnhyZXMgLyA0Ow0KICAgICBj cjUwIHw9IDB4MTA7DQogICAgIGJyZWFrOw0KIAkJDQogICBjYXNlIDE2Og0K LSAgICBjdjY0X3dyaXRlX3BvcnQgKDB4ODAyMCwgQ3liZXJCYXNlKTsNCisg ICAgaWYgKCEgQVVST1JBKSBjdjY0X3dyaXRlX3BvcnQgKDB4ODAyMCwgQ3li ZXJCYXNlKTsNCiAgICAgY2xvY2tfbW9kZSA9IDB4NTA7DQogICAgIEhERSA9 IHZpZGVvX21vZGUtPnhyZXMgLyA0Ow0KICAgICBjcjUwIHw9IDB4MTA7DQpA QCAtMjA5Niw3ICsyMjIyLDcgQEANCiAJCQ0KICAgY2FzZSAyNDoNCiAgIGNh c2UgMzI6DQotICAgIGN2NjRfd3JpdGVfcG9ydCAoMHg4MDQwLCBDeWJlckJh c2UpOw0KKyAgICBpZiAoISBBVVJPUkEpIGN2NjRfd3JpdGVfcG9ydCAoMHg4 MDQwLCBDeWJlckJhc2UpOw0KICAgICBjbG9ja19tb2RlID0gMHhEMDsNCiAg ICAgSERFID0gdmlkZW9fbW9kZS0+eHJlcyAvIDI7DQogICAgIGNyNTAgfD0g MHgzMDsNCkBAIC0yMjA3LDcgKzIzMzMsNyBAQA0KICAgZ2Z4X29uX29mZiAo MCwgKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgcmVncyk7DQogCQ0KICAg LyogUGFzcy10aHJvdWdoICovDQotICBjdnNjcmVlbiAoMCwgQ3liZXJCYXNl KTsNCisgIGlmICghIEFVUk9SQSkgY3ZzY3JlZW4gKDAsIEN5YmVyQmFzZSk7 DQogDQogRFBSSU5USygiRVhJVFxuIik7DQogfQ0KLS0tIC9wb3dlcnBjL2Rp c3QtMi40LjIwL2RyaXZlcnMvdmlkZW8vY3liZXJmYi5oCVdlZCBBdWcgMTUg MDQ6MjI6MTYgMjAwMQ0KKysrIC9wb3dlcnBjL2xpbnV4LTIuNC4yMC9kcml2 ZXJzL3ZpZGVvL2N5YmVyZmIuaAlUdWUgQXByIDE1IDEwOjA3OjA3IDIwMDMN CkBAIC0xMjAsMTAgKzEyMCw2IEBADQogI2RlZmluZSBHUkZCQk9Qc2V0CQkw eGYJLyogMSAqLw0KIA0KIA0KLS8qIFdyaXRlIDE2IEJpdCBWR0EgcmVnaXN0 ZXIgKi8NCi0jZGVmaW5lIHZnYXcxNihiYSwgcmVnLCB2YWwpIFwNCi0qKCh1 bnNpZ25lZCBzaG9ydCAqKSAgKCgodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq KWJhKStyZWcpKSA9IHZhbA0KLQ0KIC8qDQogICogRGVmaW5lcyBmb3IgdGhl IHVzZWQgcmVnaXN0ZXIgYWRkcmVzc2VzIChtdykNCiAgKg0K --=_courier-16285-1057176269-0001-2--