From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0AB528949C for ; Mon, 15 Apr 2019 12:38:06 +0000 (UTC) From: Simon Ser Date: Mon, 15 Apr 2019 15:38:15 +0300 Message-Id: <20190415123815.27258-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] lib/igt_edid: new library for generating EDIDs 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: igt-dev@lists.freedesktop.org List-ID: Rm9yIHRoZSBwdXJwb3NlcyBvZiB0ZXN0aW5nIGRpZmZlcmVudCBFRElEIGZlYXR1cmVzLCB3ZSBu ZWVkIHRvIGdlbmVyYXRlIG1vcmUKYW5kIG1vcmUgY29tcGxleCBFRElEIGJsb2JzIChlLmcuIHdp dGggYXVkaW8gc3VwcG9ydCkuIEhvd2V2ZXIgY3VycmVudGx5IElHVAp1c2VzIGEgbWFjcm8tYmFz ZWQgc3lzdGVtIHRvIGdlbmVyYXRlIEVESURzLiBUaGlzIGRvZXNuJ3Qgc2NhbGUgd2VsbCBhbmQg aXMKcHJldHR5IGluZmxleGlibGUuCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3IGxpdHRs ZSBsaWJyYXJ5IHRvIGdlbmVyYXRlIEVESURzLiBGb3Igbm93IGl0IGNhbid0CmRvIG1vcmUgdGhh biB0aGUgb2xkIG1hY3JvLiBGdXR1cmUgY29tbWl0cyB3aWxsIGV4dGVuZCB0aGUgQVBJLgoKVGhl IHN0cnVjdHVyZXMgYXJlIG1vc3RseSBiYXNlZCBvbiB0aGUgTGludXgga2VybmVsIGNvZGUgKGRy bV9lZGlkLmgpLiBTZXR0ZXJzCmhhdmUgYmVlbiBhZGRlZCBmb3IgY29udmVuaWVuY2UuCgpTaWdu ZWQtb2ZmLWJ5OiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9l ZGlkLmMgICAgICAgICAgfCAyNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogbGliL2lndF9lZGlkLmggICAgICAgICAgfCAxOTYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGxpYi9pZ3RfZWRpZF90ZW1wbGF0ZS5oIHwgIDc0IC0tLS0tLS0tLS0tCiBsaWIv aWd0X2ttcy5jICAgICAgICAgICB8IDExMyArKysrKysrKystLS0tLS0tLQogbGliL21lc29uLmJ1 aWxkICAgICAgICAgfCAgIDMgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNTIxIGluc2VydGlvbnMoKyks IDEzMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2VkaWQuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZWRpZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliL2ln dF9lZGlkX3RlbXBsYXRlLmgKCmRpZmYgLS1naXQgYS9saWIvaWd0X2VkaWQuYyBiL2xpYi9pZ3Rf ZWRpZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xNTVlYmViZQotLS0g L2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfZWRpZC5jCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICog Q29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogU2ltb24gU2VyIDxzaW1v bi5zZXJAaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg PGFzc2VydC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2lu Y2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx4Zjg2ZHJtTW9kZS5oPgorCisjaW5jbHVkZSAiaWd0 X2NvcmUuaCIKKyNpbmNsdWRlICJpZ3RfZWRpZC5oIgorCitzdGF0aWMgY29uc3QgY2hhciBlZGlk X2hlYWRlcltdID0geworCTB4MDAsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4MDAKK307CisKKy8qIHZmcmVxIGlzIGluIEh6ICovCitzdGF0aWMgdm9pZCBzdGRfdGltaW5n X3NldChzdHJ1Y3Qgc3RkX3RpbWluZyAqc3QsIGludCBoc2l6ZSwgaW50IHZmcmVxLAorCQkJICAg ZW51bSBzdGRfdGltaW5nX2FzcGVjdCBhc3BlY3QpCit7CisJYXNzZXJ0KGhzaXplID49IDI1NiAm JiBoc2l6ZSA8PSAyMjg4KTsKKwlzdC0+aHNpemUgPSBoc2l6ZSAvIDggLSAzMTsKKwlzdC0+dmZy ZXFfYXNwZWN0ID0gYXNwZWN0IDw8IDYgfCAodmZyZXEgLSA2MCk7Cit9CisKK3N0YXRpYyB2b2lk IHN0ZF90aW1pbmdfdW5zZXQoc3RydWN0IHN0ZF90aW1pbmcgKnN0KQoreworCW1lbXNldChzdCwg MHgwMSwgc2l6ZW9mKHN0cnVjdCBzdGRfdGltaW5nKSk7Cit9CisKKy8qKgorICogZGV0YWlsZWRf dGltaW5nX3NldF9tb2RlOiBmaWxsIGEgZGV0YWlsZWQgdGltaW5nIGJhc2VkIG9uIGEgbW9kZQor ICovCit2b2lkIGRldGFpbGVkX3RpbWluZ19zZXRfbW9kZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5n ICpkdCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAorCQkJICAgICAgaW50IHdpZHRoX21tLCBpbnQg aGVpZ2h0X21tKQoreworCWludCBoYWN0aXZlLCBoYmxhbmssIHZhY3RpdmUsIHZibGFuaywgaHN5 bmNfb2Zmc2V0LCBoc3luY19wdWxzZV93aWR0aCwKKwkgICAgdnN5bmNfb2Zmc2V0LCB2c3luY19w dWxzZV93aWR0aDsKKwlzdHJ1Y3QgZGV0YWlsZWRfcGl4ZWxfdGltaW5nICpwdCA9ICZkdC0+ZGF0 YS5waXhlbF9kYXRhOworCisJaGFjdGl2ZSA9IG1vZGUtPmhkaXNwbGF5OworCWhzeW5jX29mZnNl dCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN5bmNfcHVsc2Vfd2lk dGggPSBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKKwloYmxhbmsgPSBtb2Rl LT5odG90YWwgLSBtb2RlLT5oZGlzcGxheTsKKworCXZhY3RpdmUgPSBtb2RlLT52ZGlzcGxheTsK Kwl2c3luY19vZmZzZXQgPSBtb2RlLT52c3luY19zdGFydCAtIG1vZGUtPnZkaXNwbGF5OworCXZz eW5jX3B1bHNlX3dpZHRoID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7CisJ dmJsYW5rID0gbW9kZS0+dnRvdGFsIC0gbW9kZS0+dmRpc3BsYXk7CisKKwlkdC0+cGl4ZWxfY2xv Y2tbMF0gPSAobW9kZS0+Y2xvY2sgLyAxMCkgJiAweDAwRkY7CisJZHQtPnBpeGVsX2Nsb2NrWzFd ID0gKChtb2RlLT5jbG9jayAvIDEwKSAmIDB4RkYwMCkgPj4gODsKKworCWFzc2VydChoYWN0aXZl IDw9IDB4RkZGKTsKKwlhc3NlcnQoaGJsYW5rIDw9IDB4RkZGKTsKKwlwdC0+aGFjdGl2ZV9sbyA9 IGhhY3RpdmUgJiAweDBGRjsKKwlwdC0+aGJsYW5rX2xvID0gaGJsYW5rICYgMHgwRkY7CisJcHQt PmhhY3RpdmVfaGJsYW5rX2hpID0gKGhhY3RpdmUgJiAweEYwMCkgPj4gNCB8IChoYmxhbmsgJiAw eEYwMCkgPj4gODsKKworCWFzc2VydCh2YWN0aXZlIDw9IDB4RkZGKTsKKwlhc3NlcnQodmJsYW5r IDw9IDB4RkZGKTsKKwlwdC0+dmFjdGl2ZV9sbyA9IHZhY3RpdmUgJiAweDBGRjsKKwlwdC0+dmJs YW5rX2xvID0gdmJsYW5rICYgMHgwRkY7CisJcHQtPnZhY3RpdmVfdmJsYW5rX2hpID0gKHZhY3Rp dmUgJiAweEYwMCkgPj4gNCB8ICh2YmxhbmsgJiAweEYwMCkgPj4gODsKKworCWFzc2VydChoc3lu Y19vZmZzZXQgPD0gMHgzRkYpOworCWFzc2VydChoc3luY19wdWxzZV93aWR0aCA8PSAweDNGRik7 CisJYXNzZXJ0KHZzeW5jX29mZnNldCA8PSAweDNGKTsKKwlhc3NlcnQodnN5bmNfcHVsc2Vfd2lk dGggPD0gMHgzRik7CisJcHQtPmhzeW5jX29mZnNldF9sbyA9IGhzeW5jX29mZnNldCAmIDB4MEZG OworCXB0LT5oc3luY19wdWxzZV93aWR0aF9sbyA9IGhzeW5jX3B1bHNlX3dpZHRoICYgMHgwRkY7 CisJcHQtPnZzeW5jX29mZnNldF9wdWxzZV93aWR0aF9sbyA9ICh2c3luY19vZmZzZXQgJiAweEYp IDw8IDQKKwkJCQkJICB8ICh2c3luY19wdWxzZV93aWR0aCAmIDB4Rik7CisJcHQtPmhzeW5jX3Zz eW5jX29mZnNldF9wdWxzZV93aWR0aF9oaSA9IAorCQkoKGhzeW5jX29mZnNldCAmIDB4MzAwKSA+ PiAyKSB8ICgoaHN5bmNfcHVsc2Vfd2lkdGggJiAweDMwMCkgPj4gNCkKKwkJfCAoKHZzeW5jX29m ZnNldCAmIDB4MzApID4+IDIpIHwgKCh2c3luY19wdWxzZV93aWR0aCAmIDB4MzApID4+IDQpOwor CisJYXNzZXJ0KHdpZHRoX21tIDw9IDB4RkZGKTsKKwlhc3NlcnQoaGVpZ2h0X21tIDw9IDB4RkZG KTsKKwlwdC0+d2lkdGhfbW1fbG8gPSB3aWR0aF9tbSAmIDB4MEZGOworCXB0LT5oZWlnaHRfbW1f bG8gPSBoZWlnaHRfbW0gJiAweDBGRjsKKwlwdC0+d2lkdGhfaGVpZ2h0X21tX2hpID0gKHdpZHRo X21tICYgMHhGMDApID4+IDQKKwkJCQkgfCAoaGVpZ2h0X21tICYgMHhGMDApID4+IDg7CisJCisJ cHQtPm1pc2MgPSAwOworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQor CQlwdC0+bWlzYyB8PSBFRElEX1BUX0hTWU5DX1BPU0lUSVZFOworCWlmIChtb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfUFZTWU5DKQorCQlwdC0+bWlzYyB8PSBFRElEX1BUX1ZTWU5DX1BPU0lU SVZFOworfQorCisvKioKKyAqIGRldGFpbGVkX3RpbWluZ19zZXRfbW9uaXRvcl9yYW5nZV9tb2Rl OiBzZXQgYSBkZXRhaWxlZCB0aW1pbmcgdG8gYmUgYQorICogbW9uaXRvciByYW5nZSBiYXNlZCBv biBhIG1vZGUKKyAqLwordm9pZCBkZXRhaWxlZF90aW1pbmdfc2V0X21vbml0b3JfcmFuZ2VfbW9k ZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICpkdCwKKwkJCQkJICAgIGRybU1vZGVNb2RlSW5mbyAq bW9kZSkKK3sKKwlzdHJ1Y3QgZGV0YWlsZWRfbm9uX3BpeGVsICpucCA9ICZkdC0+ZGF0YS5vdGhl cl9kYXRhOworCXN0cnVjdCBkZXRhaWxlZF9kYXRhX21vbml0b3JfcmFuZ2UgKm1yID0gJm5wLT5k YXRhLnJhbmdlOworCisJZHQtPnBpeGVsX2Nsb2NrWzBdID0gZHQtPnBpeGVsX2Nsb2NrWzFdID0g MDsKKworCW5wLT50eXBlID0gRURJRF9ERVRBSUxfTU9OSVRPUl9SQU5HRTsKKworCW1yLT5taW5f dmZyZXEgPSBtb2RlLT52cmVmcmVzaCAtIDE7CisJbXItPm1heF92ZnJlcSA9IG1vZGUtPnZyZWZy ZXNoICsgMTsKKwltci0+bWluX2hmcmVxX2toeiA9IChtb2RlLT5jbG9jayAvIG1vZGUtPmh0b3Rh bCkgLSAxOworCW1yLT5tYXhfaGZyZXFfa2h6ID0gKG1vZGUtPmNsb2NrIC8gbW9kZS0+aHRvdGFs KSArIDE7CisJbXItPnBpeGVsX2Nsb2NrX21oeiA9IChtb2RlLT5jbG9jayAvIDEwMDAwKSArIDE7 CisJbXItPmZsYWdzID0gMDsKKworCXN0YXRpYyBjb25zdCBjaGFyIHBhZGRpbmdbXSA9IHsKKwkJ MHgwYSwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMAorCX07CisJbWVtY3B5KG1y LT5mb3JtdWxhLnBhZCwgcGFkZGluZywgc2l6ZW9mKHBhZGRpbmcpKTsKK30KKworLyoqCisgKiBk ZXRhaWxlZF90aW1pbmdfc2V0X3N0cmluZzogc2V0IGEgZGV0YWlsZWQgdGltaW5nIHRvIGJlIGEg c3RyaW5nCisgKi8KK3ZvaWQgZGV0YWlsZWRfdGltaW5nX3NldF9zdHJpbmcoc3RydWN0IGRldGFp bGVkX3RpbWluZyAqZHQsCisJCQkJZW51bSBkZXRhaWxlZF9ub25fcGl4ZWxfdHlwZSB0eXBlLAor CQkJCWNvbnN0IGNoYXIgKnN0cikKK3sKKwlzdHJ1Y3QgZGV0YWlsZWRfbm9uX3BpeGVsICpucCA9 ICZkdC0+ZGF0YS5vdGhlcl9kYXRhOworCXN0cnVjdCBkZXRhaWxlZF9kYXRhX3N0cmluZyAqZHMg PSAmbnAtPmRhdGEuc3RyaW5nOworCXNpemVfdCBsZW47CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwlj YXNlIEVESURfREVUQUlMX01PTklUT1JfTkFNRToKKwljYXNlIEVESURfREVUQUlMX01PTklUT1Jf U1RSSU5HOgorCWNhc2UgRURJRF9ERVRBSUxfTU9OSVRPUl9TRVJJQUw6CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCWFzc2VydCgwKTsgLyogbm90IGEgc3RyaW5nIHR5cGUgKi8KKwl9CisKKwlkdC0+ cGl4ZWxfY2xvY2tbMF0gPSBkdC0+cGl4ZWxfY2xvY2tbMV0gPSAwOworCisJbnAtPnR5cGUgPSB0 eXBlOworCisJc3RybmNweShkcy0+c3RyLCBzdHIsIHNpemVvZihkcy0+c3RyKSk7CisJbGVuID0g c3RybGVuKHN0cik7CisJaWYgKGxlbiA8IHNpemVvZihkcy0+c3RyKSkKKwkJZHMtPnN0cltsZW5d ID0gJ1xuJzsKK30KKworc3RhdGljIHZvaWQgZWRpZF9zZXRfbWZnKHN0cnVjdCBlZGlkICplZGlk LCBjaGFyIG1mZ1tzdGF0aWMgM10pCit7CisJZWRpZC0+bWZnX2lkWzBdID0gKG1mZ1swXSAtICdA JykgPDwgMiB8IChtZmdbMV0gLSAnQCcpID4+IDM7CisJZWRpZC0+bWZnX2lkWzFdID0gKG1mZ1sx XSAtICdAJykgPDwgNSB8IChtZmdbMl0gLSAnQCcpOworfQorCitzdGF0aWMgdm9pZCBlZGlkX3Nl dF9nYW1tYShzdHJ1Y3QgZWRpZCAqZWRpZCwgZmxvYXQgZ2FtbWEpCit7CisJZWRpZC0+Z2FtbWEg PSAoZ2FtbWEgKiAxMDApIC0gMTAwOworfQorCisvKioKKyAqIGVkaWRfaW5pdDogaW5pdGlhbGl6 ZSBhbiBFRElECisgKgorICogVGhlIEVESUQgd2lsbCBiZSBwcmUtZmlsbGVkIHdpdGggZXN0YWJs aXNoZWQgYW5kIHN0YW5kYXJkIHRpbWluZ3M6CisgKgorICogIC0gMTkyMHgxMDgwIDYwSHoKKyAq ICAtIDEyODB4NzIwIDYwSHoKKyAqICAtIDEwMjR4NzY4IDYwSHoKKyAqICAtIDgwMHg2MDAgNjBI egorICogIC0gNjQweDQ4MCA2MEh6CisgKi8KK3ZvaWQgZWRpZF9pbml0KHN0cnVjdCBlZGlkICpl ZGlkKQoreworCXNpemVfdCBpOworCXRpbWVfdCB0OworCXN0cnVjdCB0bSAqdG07CisKKwltZW1z ZXQoZWRpZCwgMCwgc2l6ZW9mKHN0cnVjdCBlZGlkKSk7CisKKwltZW1jcHkoZWRpZC0+aGVhZGVy LCBlZGlkX2hlYWRlciwgc2l6ZW9mKGVkaWRfaGVhZGVyKSk7CisJZWRpZF9zZXRfbWZnKGVkaWQs ICJJR1QiKTsKKwllZGlkLT52ZXJzaW9uID0gMTsKKwllZGlkLT5yZXZpc2lvbiA9IDM7CisJZWRp ZC0+aW5wdXQgPSAweDgwOworCWVkaWQtPndpZHRoX2NtID0gNTI7CisJZWRpZC0+aGVpZ2h0X2Nt ID0gMzA7CisJZWRpZF9zZXRfZ2FtbWEoZWRpZCwgMi4yMCk7CisJZWRpZC0+ZmVhdHVyZXMgPSAw eDAyOworCisJLyogWWVhciBvZiBtYW51ZmFjdHVyZSAqLworCXQgPSB0aW1lKE5VTEwpOworCXRt ID0gbG9jYWx0aW1lKCZ0KTsKKwllZGlkLT5tZmdfeWVhciA9IHRtLT50bV95ZWFyIC0gOTA7CisK KwkvKiBFc3RhYmxpc2hlZCB0aW1pbmdzOiA2NDB4NDgwIDYwSHosIDgwMHg2MDAgNjBIeiwgMTAy NHg3NjggNjBIeiAqLworCWVkaWQtPmVzdGFibGlzaGVkX3RpbWluZ3MudDEgPSAweDIxOworCWVk aWQtPmVzdGFibGlzaGVkX3RpbWluZ3MudDIgPSAweDA4OworCisJLyogU3RhbmRhcmQgdGltaW5n cyAqLworCS8qIDE5MjB4MTA4MCA2MEh6ICovCisJc3RkX3RpbWluZ19zZXQoJmVkaWQtPnN0YW5k YXJkX3RpbWluZ3NbMF0sIDE5MjAsIDYwLCBTVERfVElNSU5HXzE2XzkpOworCS8qIDEyODB4NzIw IDYwSHogKi8KKwlzdGRfdGltaW5nX3NldCgmZWRpZC0+c3RhbmRhcmRfdGltaW5nc1sxXSwgMTI4 MCwgNjAsIFNURF9USU1JTkdfMTZfOSk7CisJLyogMTAyNHg3NjggNjBIeiAqLworCXN0ZF90aW1p bmdfc2V0KCZlZGlkLT5zdGFuZGFyZF90aW1pbmdzWzJdLCAxMDI0LCA2MCwgU1REX1RJTUlOR180 XzMpOworCS8qIDgwMHg2MDAgNjBIeiAqLworCXN0ZF90aW1pbmdfc2V0KCZlZGlkLT5zdGFuZGFy ZF90aW1pbmdzWzNdLCA4MDAsIDYwLCBTVERfVElNSU5HXzRfMyk7CisJLyogNjQweDQ4MCA2MEh6 ICovCisJc3RkX3RpbWluZ19zZXQoJmVkaWQtPnN0YW5kYXJkX3RpbWluZ3NbNF0sIDY0MCwgNjAs IFNURF9USU1JTkdfNF8zKTsKKwlmb3IgKGkgPSA1OyBpIDwgU1REX1RJTUlOR1NfTEVOOyBpKysp CisJCXN0ZF90aW1pbmdfdW5zZXQoJmVkaWQtPnN0YW5kYXJkX3RpbWluZ3NbaV0pOworfQorCisv KioKKyAqIGVkaWRfaW5pdF93aXRoX21vZGU6IGluaXRpYWxpemUgYW4gRURJRCBhbmQgc2V0cyBp dHMgcHJlZmVycmVkIG1vZGUKKyAqLwordm9pZCBlZGlkX2luaXRfd2l0aF9tb2RlKHN0cnVjdCBl ZGlkICplZGlkLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCit7CisJZWRpZF9pbml0KGVkaWQpOwor CisJLyogUHJlZmVycmVkIHRpbWluZyAqLworCWRldGFpbGVkX3RpbWluZ19zZXRfbW9kZSgmZWRp ZC0+ZGV0YWlsZWRfdGltaW5nc1swXSwgbW9kZSwKKwkJCQkgZWRpZC0+d2lkdGhfY20gKiAxMCwg ZWRpZC0+aGVpZ2h0X2NtICogMTApOworCWRldGFpbGVkX3RpbWluZ19zZXRfbW9uaXRvcl9yYW5n ZV9tb2RlKCZlZGlkLT5kZXRhaWxlZF90aW1pbmdzWzFdLAorCQkJCQkgICAgICAgbW9kZSk7CisJ ZGV0YWlsZWRfdGltaW5nX3NldF9zdHJpbmcoJmVkaWQtPmRldGFpbGVkX3RpbWluZ3NbMl0sCisJ CQkJICAgRURJRF9ERVRBSUxfTU9OSVRPUl9OQU1FLCAiSUdUIik7Cit9CisKKy8qKgorICogZWRp ZF9maW5hbGl6ZTogZmluYWxpemUgYW4gRURJRCBieSBjb21wdXRpbmcgaXRzIGNoZWNrc3VtCisg Ki8KK3ZvaWQgZWRpZF9maW5hbGl6ZShzdHJ1Y3QgZWRpZCAqZWRpZCkKK3sKKwlzaXplX3QgaTsK Kwljb25zdCB1aW50OF90ICpidWYgPSAoY29uc3QgdWludDhfdCAqKSBlZGlkOworCXVpbnQ4X3Qg c3VtID0gMDsKKworCS8qIGNhbGN1bGF0ZSBjaGVja3N1bSAqLworCWZvciAoaSA9IDA7IGkgPCBz aXplb2Yoc3RydWN0IGVkaWQpIC0gMTsgaSsrKSB7CisJCXN1bSA9IHN1bSArIGJ1ZltpXTsKKwl9 CisKKwllZGlkLT5jaGVja3N1bSA9IDI1NiAtIHN1bTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf ZWRpZC5oIGIvbGliL2lndF9lZGlkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLjhjMDI3Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2lndF9lZGlkLmgKQEAgLTAsMCAr MSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3Jz OiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+CisgKi8KKworI2lmbmRlZiBJR1RfQ0hB TUVMSVVNX0gKKyNkZWZpbmUgSUdUX0NIQU1FTElVTV9ICisKKyNpbmNsdWRlICJjb25maWcuaCIK KworI2luY2x1ZGUgPHN0ZGludC5oPgorCitzdHJ1Y3QgZXN0X3RpbWluZ3MgeworCXVpbnQ4X3Qg dDE7CisJdWludDhfdCB0MjsKKwl1aW50OF90IG1mZ19yc3ZkOworfSBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKTsKKworI2RlZmluZSBTVERfVElNSU5HU19MRU4gOAorCitlbnVtIHN0ZF90aW1pbmdf YXNwZWN0IHsKKwlTVERfVElNSU5HXzE2XzEwID0gMGIwMCwKKwlTVERfVElNSU5HXzRfMyA9IDBi MDEsCisJU1REX1RJTUlOR181XzQgPSAwYjEwLAorCVNURF9USU1JTkdfMTZfOSA9IDBiMTEsCit9 OworCitzdHJ1Y3Qgc3RkX3RpbWluZyB7CisJdWludDhfdCBoc2l6ZTsKKwl1aW50OF90IHZmcmVx X2FzcGVjdDsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKyNkZWZpbmUgREVUQUlMRURf VElNSU5HU19MRU4gNAorCisjZGVmaW5lIEVESURfUFRfSFNZTkNfUE9TSVRJVkUgKDEgPDwgMSkK KyNkZWZpbmUgRURJRF9QVF9WU1lOQ19QT1NJVElWRSAoMSA8PCAyKQorI2RlZmluZSBFRElEX1BU X1NFUEFSQVRFX1NZTkMgICgzIDw8IDMpCisjZGVmaW5lIEVESURfUFRfU1RFUkVPICAgICAgICAg KDEgPDwgNSkKKyNkZWZpbmUgRURJRF9QVF9JTlRFUkxBQ0VEICAgICAoMSA8PCA3KQorCitzdHJ1 Y3QgZGV0YWlsZWRfcGl4ZWxfdGltaW5nIHsKKwl1aW50OF90IGhhY3RpdmVfbG87CisJdWludDhf dCBoYmxhbmtfbG87CisJdWludDhfdCBoYWN0aXZlX2hibGFua19oaTsKKwl1aW50OF90IHZhY3Rp dmVfbG87CisJdWludDhfdCB2YmxhbmtfbG87CisJdWludDhfdCB2YWN0aXZlX3ZibGFua19oaTsK Kwl1aW50OF90IGhzeW5jX29mZnNldF9sbzsKKwl1aW50OF90IGhzeW5jX3B1bHNlX3dpZHRoX2xv OworCXVpbnQ4X3QgdnN5bmNfb2Zmc2V0X3B1bHNlX3dpZHRoX2xvOworCXVpbnQ4X3QgaHN5bmNf dnN5bmNfb2Zmc2V0X3B1bHNlX3dpZHRoX2hpOworCXVpbnQ4X3Qgd2lkdGhfbW1fbG87CisJdWlu dDhfdCBoZWlnaHRfbW1fbG87CisJdWludDhfdCB3aWR0aF9oZWlnaHRfbW1faGk7CisJdWludDhf dCBoYm9yZGVyOworCXVpbnQ4X3QgdmJvcmRlcjsKKwl1aW50OF90IG1pc2M7Cit9IF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9zdHJpbmcgeworCWNoYXIg c3RyWzEzXTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBkZXRhaWxlZF9k YXRhX21vbml0b3JfcmFuZ2UgeworCXVpbnQ4X3QgbWluX3ZmcmVxOworCXVpbnQ4X3QgbWF4X3Zm cmVxOworCXVpbnQ4X3QgbWluX2hmcmVxX2toejsKKwl1aW50OF90IG1heF9oZnJlcV9raHo7CisJ dWludDhfdCBwaXhlbF9jbG9ja19taHo7IC8qIG5lZWQgdG8gbXVsdGlwbHkgYnkgMTAgKi8KKwl1 aW50OF90IGZsYWdzOworCXVuaW9uIHsKKwkJY2hhciBwYWRbN107CisJCXN0cnVjdCB7CisJCQl1 aW50OF90IHJlc2VydmVkOworCQkJdWludDhfdCBoZnJlcV9zdGFydF9raHo7IC8qIG5lZWQgdG8g bXVsdGlwbHkgYnkgMiAqLworCQkJdWludDhfdCBjOyAvKiBuZWVkIHRvIGRpdmlkZSBieSAyICov CisJCQl1aW50OF90IG1bMl07CisJCQl1aW50OF90IGs7CisJCQl1aW50OF90IGo7IC8qIG5lZWQg dG8gZGl2aWRlIGJ5IDIgKi8KKwkJfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBndGYyOworCQlz dHJ1Y3QgeworCQkJdWludDhfdCB2ZXJzaW9uOworCQkJdWludDhfdCBkYXRhMTsgLyogaGlnaCA2 IGJpdHM6IGV4dHJhIGNsb2NrIHJlc29sdXRpb24gKi8KKwkJCXVpbnQ4X3QgZGF0YTI7IC8qIHBs dXMgbG93IDIgb2YgYWJvdmU6IG1heCBoYWN0aXZlICovCisJCQl1aW50OF90IHN1cHBvcnRlZF9h c3BlY3RzOworCQkJdWludDhfdCBmbGFnczsgLyogcHJlZmVycmVkIGFzcGVjdCBhbmQgYmxhbmtp bmcgc3VwcG9ydCAqLworCQkJdWludDhfdCBzdXBwb3J0ZWRfc2NhbGluZ3M7CisJCQl1aW50OF90 IHByZWZlcnJlZF9yZWZyZXNoOworCQl9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIGN2dDsKKwl9 IGZvcm11bGE7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitlbnVtIGRldGFpbGVkX25v bl9waXhlbF90eXBlIHsKKwlFRElEX0RFVEFJTF9FU1RfVElNSU5HUyA9IDB4ZjcsCisJRURJRF9E RVRBSUxfQ1ZUXzNCWVRFID0gMHhmOCwKKwlFRElEX0RFVEFJTF9DT0xPUl9NR01UX0RBVEEgPSAw eGY5LAorCUVESURfREVUQUlMX1NURF9NT0RFUyA9IDB4ZmEsCisJRURJRF9ERVRBSUxfTU9OSVRP Ul9DUERBVEEgPSAweGZiLAorCUVESURfREVUQUlMX01PTklUT1JfTkFNRSA9IDB4ZmMsCisJRURJ RF9ERVRBSUxfTU9OSVRPUl9SQU5HRSA9IDB4ZmQsCisJRURJRF9ERVRBSUxfTU9OSVRPUl9TVFJJ TkcgPSAweGZlLAorCUVESURfREVUQUlMX01PTklUT1JfU0VSSUFMID0gMHhmZiwKK307CisKK3N0 cnVjdCBkZXRhaWxlZF9ub25fcGl4ZWwgeworCXVpbnQ4X3QgcGFkMTsKKwl1aW50OF90IHR5cGU7 IC8qIGVudW0gZGV0YWlsZWRfbm9uX3BpeGVsX3R5cGUgKi8KKwl1aW50OF90IHBhZDI7CisJdW5p b24geworCQlzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9zdHJpbmcgc3RyOworCQlzdHJ1Y3QgZGV0YWls ZWRfZGF0YV9tb25pdG9yX3JhbmdlIHJhbmdlOworCQlzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9zdHJp bmcgc3RyaW5nOworCQkvKiBUT0RPOiBvdGhlciB0eXBlcyAqLworCX0gZGF0YTsKK30gX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBkZXRhaWxlZF90aW1pbmcgeworCXVpbnQ4X3Qg cGl4ZWxfY2xvY2tbMl07IC8qIG5lZWQgdG8gbXVsdGlwbHkgYnkgMTAgS0h6LCB6ZXJvIGlmIG5v dCBhIHBpeGVsIHRpbWluZyAqLworCXVuaW9uIHsKKwkJc3RydWN0IGRldGFpbGVkX3BpeGVsX3Rp bWluZyBwaXhlbF9kYXRhOworCQlzdHJ1Y3QgZGV0YWlsZWRfbm9uX3BpeGVsIG90aGVyX2RhdGE7 CisJfSBkYXRhOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGVkaWQgewor CWNoYXIgaGVhZGVyWzhdOworCS8qIFZlbmRvciAmIHByb2R1Y3QgaW5mbyAqLworCXVpbnQ4X3Qg bWZnX2lkWzJdOworCXVpbnQ4X3QgcHJvZF9jb2RlWzJdOworCXVpbnQ4X3Qgc2VyaWFsWzRdOwor CXVpbnQ4X3QgbWZnX3dlZWs7CisJdWludDhfdCBtZmdfeWVhcjsKKwkvKiBFRElEIHZlcnNpb24g Ki8KKwl1aW50OF90IHZlcnNpb247CisJdWludDhfdCByZXZpc2lvbjsKKwkvKiBEaXNwbGF5IGlu Zm86ICovCisJdWludDhfdCBpbnB1dDsKKwl1aW50OF90IHdpZHRoX2NtOworCXVpbnQ4X3QgaGVp Z2h0X2NtOworCXVpbnQ4X3QgZ2FtbWE7CisJdWludDhfdCBmZWF0dXJlczsKKwkvKiBDb2xvciBj aGFyYWN0ZXJpc3RpY3MgKi8KKwl1aW50OF90IHJlZF9ncmVlbl9sbzsKKwl1aW50OF90IGJsYWNr X3doaXRlX2xvOworCXVpbnQ4X3QgcmVkX3g7CisJdWludDhfdCByZWRfeTsKKwl1aW50OF90IGdy ZWVuX3g7CisJdWludDhfdCBncmVlbl95OworCXVpbnQ4X3QgYmx1ZV94OworCXVpbnQ4X3QgYmx1 ZV95OworCXVpbnQ4X3Qgd2hpdGVfeDsKKwl1aW50OF90IHdoaXRlX3k7CisJLyogRXN0LiB0aW1p bmdzIGFuZCBtZmcgcnN2ZCB0aW1pbmdzKi8KKwlzdHJ1Y3QgZXN0X3RpbWluZ3MgZXN0YWJsaXNo ZWRfdGltaW5nczsKKwkvKiBTdGFuZGFyZCB0aW1pbmdzIDEtOCovCisJc3RydWN0IHN0ZF90aW1p bmcgc3RhbmRhcmRfdGltaW5nc1tTVERfVElNSU5HU19MRU5dOworCS8qIERldGFpbGluZyB0aW1p bmdzIDEtNCAqLworCXN0cnVjdCBkZXRhaWxlZF90aW1pbmcgZGV0YWlsZWRfdGltaW5nc1tERVRB SUxFRF9USU1JTkdTX0xFTl07CisJLyogTnVtYmVyIG9mIDEyOCBieXRlIGV4dC4gYmxvY2tzICov CisJdWludDhfdCBleHRlbnNpb25zOworCS8qIENoZWNrc3VtICovCisJdWludDhfdCBjaGVja3N1 bTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3ZvaWQgZWRpZF9pbml0KHN0cnVjdCBl ZGlkICplZGlkKTsKK3ZvaWQgZWRpZF9pbml0X3dpdGhfbW9kZShzdHJ1Y3QgZWRpZCAqZWRpZCwg ZHJtTW9kZU1vZGVJbmZvICptb2RlKTsKK3ZvaWQgZWRpZF9maW5hbGl6ZShzdHJ1Y3QgZWRpZCAq ZWRpZCk7Cit2b2lkIGRldGFpbGVkX3RpbWluZ19zZXRfbW9kZShzdHJ1Y3QgZGV0YWlsZWRfdGlt aW5nICpkdCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAorCQkJICAgICAgaW50IHdpZHRoX21tLCBp bnQgaGVpZ2h0X21tKTsKK3ZvaWQgZGV0YWlsZWRfdGltaW5nX3NldF9tb25pdG9yX3JhbmdlX21v ZGUoc3RydWN0IGRldGFpbGVkX3RpbWluZyAqZHQsCisJCQkJCSAgICBkcm1Nb2RlTW9kZUluZm8g Km1vZGUpOwordm9pZCBkZXRhaWxlZF90aW1pbmdfc2V0X3N0cmluZyhzdHJ1Y3QgZGV0YWlsZWRf dGltaW5nICpkdCwKKwkJCQllbnVtIGRldGFpbGVkX25vbl9waXhlbF90eXBlIHR5cGUsCisJCQkJ Y29uc3QgY2hhciAqc3RyKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvaWd0X2VkaWRfdGVt cGxhdGUuaCBiL2xpYi9pZ3RfZWRpZF90ZW1wbGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA4ZGJkMTljYS4uMDAwMDAwMDAKLS0tIGEvbGliL2lndF9lZGlkX3RlbXBsYXRlLmgK KysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jZGVmaW5lIEdBTU1BKHgpICgoKHgpICog MTAwKSAtIDEwMCkKLQotI2RlZmluZSBNQU5VRkFDVFVSRVJfSUQoYSwgYiwgYykgKGEgLSAnQCcp IDw8IDIgfCAoYiAtICdAJykgPj4gMywgXAotCQkJCSAoYiAtICdAJykgPDwgNSB8IChjIC0gJ0An KQotCi0KLSNkZWZpbmUgYWIoeCwgeSkgKCh4KSAmIDB4ZmYpLCAoKHkpICYgMHhmZiksICgoKHgp ICYgMHhmMDApID4+IDQpIHwgKCgoeSkgJiAweGYwMCkgPj4gOCkKLSNkZWZpbmUgb3AoaG8sIGhw LCB2bywgdnApICgoaG8pICYgMHhmZiksICgoaHApICYgMHhmZiksIFwKLQkJKCgodm8pICYgMHhm KSA8PCA0KSB8ICgodnApICYgMHhmKSwgXAotCQkoKChobykgJiAweDMwMCkgPj4gMikgfCAoKCho cCkgJiAweDMwMCkgPj4gNCkgXAotCQl8ICgoKHZvKSAmIDB4MzApID4+IDIpIHwgKCgodnApICYg MHgzMCkgPj4gNCkKLQotc3RhdGljIHVuc2lnbmVkIGNoYXIgRURJRF9OQU1FW0VESURfTEVOR1RI XSA9IHsKLQkweDAwLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAv KiBoZWFkZXIgKi8KLQlNQU5VRkFDVFVSRVJfSUQoJ0knLCAnRycsICdUJyksCi0JLyogcHJvZHVj dCBjb2RlLCBzZXJpYWwgbnVtYmVyLCB3ZWVrIGFuZCB5ZWFyIG9mIG1hbnVmYWN0dXJlICovCi0J MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLQkweDAxLCAw eDAzLCAvKiBlZGlkIHZlcnNpb24gKDEuMykgKi8KLQkvKiBiYXNpYyBkaXNwbGF5IHBhcmFtZXRl cnMgKi8KLQkvKiBkaWdpdGFsIGRpc3BsYXksIG1heGltdW0gaG9yaXpvbnRhbCBpbWFnZSBzaXpl LCBtYXhpbXVtIHZlcnRpY2FsCi0JICogaW1hZ2Ugc2l6ZSwgZ2FtbWEsIGZlYXR1cmVzOiBSR0Ig NDo0OjQsIG5hdGl2ZSBwaXhlbCBmb3JtYXQgYW5kCi0JICogcmVmcmVzaCByYXRlIGluIGRlc2Ny aXB0b3IgMSAqLwotCTB4ODAsIEhTSVpFLCBWU0laRSwgR0FNTUEoMi4yMCksIDB4MDIsCi0JLyog Y2hyb21hdGljaXR5IGNvb3JkaW5hdGVzICovCi0JMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLQkvKiBlc3RhYmxpc2hlZCB0aW1pbmdz OiA2NDB4NDgwIDYwSHosIDgwMHg2MDAgNjBIeiwgMTAyNHg3NjggNjBIeiAqLwotCTB4MjEsIDB4 MDgsIDB4MDAsCi0JLyogc3RhbmRhcmQgdGltaW5ncyAqLwotCTB4ZDEsIDB4YzAsIC8qIDE5MjB4 MTA4MCA2MEh6ICovCi0JMHg4MSwgMHhjMCwgLyogMTI4MHg3MjAgNjBIeiAqLwotCTB4NjEsIDB4 NDAsIC8qIDEwMjR4NzY4IDYwSHogKi8KLQkweDQ1LCAweDQwLCAvKiA4MDB4NjAwIDYwSHogKi8K LQkweDMxLCAweDQwLCAvKiA2NDB4NDgwIDYwSHogKi8KLQkweDAxLCAweDAxLCAweDAxLCAweDAx LCAweDAxLCAweDAxLAotCS8qIGRlc2NyaXB0b3IgMSAocHJlZmVycmVkIHRpbWluZykgKi8KLQko Q0xPQ0sgLyAxMCkgJiAweDAwZmYsICgoQ0xPQ0sgLyAxMCkgJiAweGZmMDApID4+IDgsCi0JYWIo SEFDVElWRSwgSEJMQU5LKSwgYWIoVkFDVElWRSwgVkJMQU5LKSwKLQlvcChIT0ZGU0VULCBIUFVM U0UsIFZPRkZTRVQsIFZQVUxTRSksCi0JYWIoSFNJWkUgKiAxMCwgVlNJWkUgKiAxMCksCi0JMHgw MCwgMHgwMCwgMHgwMCwKLQkvKiBkZXNjcmlwdG9yIDIgKG1vbml0b3IgcmFuZ2UgbGltaXRzKSAq LwotCTB4MDAsIDB4MDAsIDB4MDAsIDB4ZmQsIDB4MDAsCi0JVkZSRVEgLSAxLCBWRlJFUSArIDEs IC8qIG1pbmltdW0sIG1heGltdW0gdmVydGljYWwgZmllbGQgcmF0ZSAqLwotCShDTE9DSyAvIChI QUNUSVZFICsgSEJMQU5LKSkgLSAxLCAvKiBtaW5pbXVtIGhvcml6b250YWwgbGluZSByYXRlICov Ci0JKENMT0NLIC8gKEhBQ1RJVkUgKyBIQkxBTkspKSArIDEsIC8qIG1heGltdW0gaG9yaXpvbnRh bCBsaW5lIHJhdGUgKi8KLQkoQ0xPQ0sgLyAxMDAwMCkgKyAxLCAvKiBtYXhpbXVtIHBpeGVsIGNs b2NrIHJhdGUgKi8KLQkweDAwLCAweDBhLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAw eDIwLAotCS8qIGRlc2NyaXB0b3IgMyAobmFtZSBkZXNjcmlwdG9yKSAqLwotCTB4MDAsIDB4MDAs IDB4MDAsIDB4ZmMsIDB4MDAsICAnSScsICAnRycsICAnVCcsIDB4MGEsCi0JMHgyMCwgMHgyMCwg MHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKLQkvKiBkZXNjcmlwdG9y IDQgKi8KLQkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLAotCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsCi0JLyogZXh0ZW5zaW9ucywgY2hlY2tzdW0gKi8KLQkweDAwLCAweDAwCi19OwotCi0jdW5k ZWYgRURJRF9OQU1FCi0jdW5kZWYgVkZSRVEKLSN1bmRlZiBDTE9DSwotI3VuZGVmIEhBQ1RJVkUK LSN1bmRlZiBIQkxBTksKLSN1bmRlZiBWQUNUSVZFCi0jdW5kZWYgVkJMQU5LCi0jdW5kZWYgSE9G RlNFVAotI3VuZGVmIEhQVUxTRQotI3VuZGVmIFZPRkZTRVQKLSN1bmRlZiBWUFVMU0UKLSN1bmRl ZiBIU0laRQotI3VuZGVmIFZTSVpFCi0jdW5kZWYgR0FNTUEKLSN1bmRlZiBNQU5VRkFDVFVSRVJf SUQKLSN1bmRlZiBhYgotI3VuZGVmIG9wCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGli L2lndF9rbXMuYwppbmRleCBmOGIwZGFiMi4uYTI4MzJmNzUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf a21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgImRy bXRlc3QuaCIKICNpbmNsdWRlICJpZ3Rfa21zLmgiCiAjaW5jbHVkZSAiaWd0X2F1eC5oIgorI2lu Y2x1ZGUgImlndF9lZGlkLmgiCiAjaW5jbHVkZSAiaW50ZWxfY2hpcHNldC5oIgogI2luY2x1ZGUg ImlndF9kZWJ1Z2ZzLmgiCiAjaW5jbHVkZSAiaWd0X2RldmljZS5oIgpAQCAtMTAyLDIzICsxMDMs NiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZWRpZF9jc3VtKHVuc2lnbmVkIGNoYXIgKmVkaWQsIGlu dCBjZWFfcG9zKQogCWVkaWRbY2VhX3BvcyArIDEyN10gPSAyNTYgLSBzdW07CiB9CiAKLSNkZWZp bmUgVkZSRVEgNjAKLSNkZWZpbmUgQ0xPQ0sgMTQ4NTAwCi0jZGVmaW5lIEhBQ1RJVkUgMTkyMAot I2RlZmluZSBIQkxBTksgMjgwCi0jZGVmaW5lIFZBQ1RJVkUgMTA4MAotI2RlZmluZSBWQkxBTksg NDUKLSNkZWZpbmUgSE9GRlNFVCA4OAotI2RlZmluZSBIUFVMU0UgNDQKLSNkZWZpbmUgVk9GRlNF VCA0Ci0jZGVmaW5lIFZQVUxTRSA1Ci0KLSNkZWZpbmUgSFNJWkUgNTIKLSNkZWZpbmUgVlNJWkUg MzAKLQotI2RlZmluZSBFRElEX05BTUUgYmFzZV9lZGlkCi0jaW5jbHVkZSAiaWd0X2VkaWRfdGVt cGxhdGUuaCIKLQogLyoqCiAgKiBpZ3Rfa21zX2dldF9iYXNlX2VkaWQ6CiAgKgpAQCAtMTM1LDI5 ICsxMTksNjYgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2VkaWRfY3N1bSh1bnNpZ25lZCBjaGFyICpl ZGlkLCBpbnQgY2VhX3BvcykKICAqCiAgKiBSZXR1cm5zOiBhIGJhc2ljIGVkaWQgYmxvY2sKICAq LwotY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9lZGlkKHZvaWQpCitjb25z dCB1bnNpZ25lZCBjaGFyICppZ3Rfa21zX2dldF9iYXNlX2VkaWQodm9pZCkKIHsKLQl1cGRhdGVf ZWRpZF9jc3VtKGJhc2VfZWRpZCwgMCk7CisJc3RhdGljIHN0cnVjdCBlZGlkIGVkaWQ7CisJZHJt TW9kZU1vZGVJbmZvIG1vZGUgPSB7fTsKIAotCXJldHVybiBiYXNlX2VkaWQ7CisJbW9kZS5jbG9j ayA9IDE0ODUwMDsKKwltb2RlLmhkaXNwbGF5ID0gMTkyMDsKKwltb2RlLmhzeW5jX3N0YXJ0ID0g MjAwODsKKwltb2RlLmhzeW5jX2VuZCA9IDIwNTI7CisJbW9kZS5odG90YWwgPSAyMjAwOworCW1v ZGUudmRpc3BsYXkgPSAxMDgwOworCW1vZGUudnN5bmNfc3RhcnQgPSAxMDg0OworCW1vZGUudnN5 bmNfZW5kID0gMTA4OTsKKwltb2RlLnZ0b3RhbCA9IDExMjU7CisJbW9kZS52cmVmcmVzaCA9IDYw OworCisJZWRpZF9pbml0X3dpdGhfbW9kZSgmZWRpZCwgJm1vZGUpOworCWVkaWRfZmluYWxpemUo JmVkaWQpOworCisJcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZlZGlkOwogfQogCi0jZGVmaW5l IFZGUkVRIDYwCi0jZGVmaW5lIENMT0NLIDEwMTAwMAotI2RlZmluZSBIQUNUSVZFIDE0MDAKLSNk ZWZpbmUgSEJMQU5LIDE2MAotI2RlZmluZSBWQUNUSVZFIDEwNTAKLSNkZWZpbmUgVkJMQU5LIDMw Ci0jZGVmaW5lIEhPRkZTRVQgNDgKLSNkZWZpbmUgSFBVTFNFIDMyCi0jZGVmaW5lIFZPRkZTRVQg MwotI2RlZmluZSBWUFVMU0UgNAorLyoqCisgKiBpZ3Rfa21zX2dldF9hbHRfZWRpZDoKKyAqCisg KiBHZXQgYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2ssIHdoaWNoIGluY2x1ZGVzIHRoZSBmb2xsb3dp bmcgbW9kZXM6CisgKgorICogIC0gMTQwMHgxMDUwIDYwSHoKKyAqICAtIDE5MjB4MTA4MCA2MEh6 CisgKiAgLSAxMjgweDcyMCA2MEh6CisgKiAgLSAxMDI0eDc2OCA2MEh6CisgKiAgLSA4MDB4NjAw IDYwSHoKKyAqICAtIDY0MHg0ODAgNjBIegorICoKKyAqIFRoaXMgY2FuIGJlIGV4dGVuZGVkIHdp dGggZnVydGhlciBmZWF0dXJlcyB1c2luZyBmdW5jdGlvbnMgc3VjaCBhcworICogI2ttc3Rlc3Rf ZWRpZF9hZGRfM2QuCisgKgorICogUmV0dXJuczogYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2sKKyAq LworY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYWx0X2VkaWQodm9pZCkKK3sKKwlz dGF0aWMgc3RydWN0IGVkaWQgZWRpZDsKKwlkcm1Nb2RlTW9kZUluZm8gbW9kZSA9IHt9OworCisJ bW9kZS5jbG9jayA9IDEwMTAwMDsKKwltb2RlLmhkaXNwbGF5ID0gMTQwMDsKKwltb2RlLmhzeW5j X3N0YXJ0ID0gMTQ0ODsKKwltb2RlLmhzeW5jX2VuZCA9IDE0ODA7CisJbW9kZS5odG90YWwgPSAx NTYwOworCW1vZGUudmRpc3BsYXkgPSAxMDUwOworCW1vZGUudnN5bmNfc3RhcnQgPSAxMDUzOwor CW1vZGUudnN5bmNfZW5kID0gMTA1NzsKKwltb2RlLnZ0b3RhbCA9IDEwODA7CisJbW9kZS52cmVm cmVzaCA9IDYwOwogCi0jZGVmaW5lIEhTSVpFIDUyCi0jZGVmaW5lIFZTSVpFIDMwCisJZWRpZF9p bml0X3dpdGhfbW9kZSgmZWRpZCwgJm1vZGUpOworCWVkaWRfZmluYWxpemUoJmVkaWQpOwogCi0j ZGVmaW5lIEVESURfTkFNRSBhbHRfZWRpZAotI2luY2x1ZGUgImlndF9lZGlkX3RlbXBsYXRlLmgi CisJcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZlZGlkOworfQogCiBjb25zdCBjaGFyICogY29u c3QgaWd0X3BsYW5lX3Byb3BfbmFtZXNbSUdUX05VTV9QTEFORV9QUk9QU10gPSB7CiAJW0lHVF9Q TEFORV9TUkNfWF0gPSAiU1JDX1giLApAQCAtMzAxLDMwICszMjIsNiBAQCBpZ3RfZmlsbF9waXBl X3Byb3BzKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlndF9waXBlX3QgKnBpcGUsCiAJZHJtTW9k ZUZyZWVPYmplY3RQcm9wZXJ0aWVzKHByb3BzKTsKIH0KIAotLyoqCi0gKiBpZ3Rfa21zX2dldF9h bHRfZWRpZDoKLSAqCi0gKiBHZXQgYW4gYWx0ZXJuYXRlIGVkaWQgYmxvY2ssIHdoaWNoIGluY2x1 ZGVzIHRoZSBmb2xsb3dpbmcgbW9kZXM6Ci0gKgotICogIC0gMTQwMHgxMDUwIDYwSHoKLSAqICAt IDE5MjB4MTA4MCA2MEh6Ci0gKiAgLSAxMjgweDcyMCA2MEh6Ci0gKiAgLSAxMDI0eDc2OCA2MEh6 Ci0gKiAgLSA4MDB4NjAwIDYwSHoKLSAqICAtIDY0MHg0ODAgNjBIegotICoKLSAqIFRoaXMgY2Fu IGJlIGV4dGVuZGVkIHdpdGggZnVydGhlciBmZWF0dXJlcyB1c2luZyBmdW5jdGlvbnMgc3VjaCBh cwotICogI2ttc3Rlc3RfZWRpZF9hZGRfM2QuCi0gKgotICogUmV0dXJuczogYW4gYWx0ZXJuYXRl IGVkaWQgYmxvY2sKLSAqLwotY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYWx0X2Vk aWQodm9pZCkKLXsKLQl1cGRhdGVfZWRpZF9jc3VtKGFsdF9lZGlkLCAwKTsKLQotCXJldHVybiBh bHRfZWRpZDsKLX0KLQogLyoqCiAgKiBrbXN0ZXN0X3BpcGVfbmFtZToKICAqIEBwaXBlOiBkaXNw bGF5IHBpcGUKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZApp bmRleCBhODQ2MjkzMy4uMjBjMGUzZTYgMTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysg Yi9saWIvbWVzb24uYnVpbGQKQEAgLTU0LDcgKzU0LDggQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2ln dF92M2QuYycsCiAJJ2lndF92YzQuYycsCiAJJ2lndF9wc3IuYycsCi0JJ2lndF9hbWQuYycKKwkn aWd0X2FtZC5jJywKKwknaWd0X2VkaWQuYycsCiBdCiAKIGxpYl9kZXBzID0gWwotLSAKMi4yMS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=