From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [PATCH v5 05/11] drm/i915: Add 'render basic' Haswell OA unit config Date: Wed, 14 Sep 2016 15:19:43 +0100 Message-ID: <20160914141949.27402-6-robert@sixbynine.org> References: <20160914141949.27402-1-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160914141949.27402-1-robert@sixbynine.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, Sourab Gupta , Daniel Vetter , Robert Bragg List-Id: dri-devel@lists.freedesktop.org QWRkcyBhIHN0YXRpYyBPQSB1bml0LCBNVVggKyBCIENvdW50ZXIgY29uZmlndXJhdGlvbiBmb3Ig YmFzaWMgcmVuZGVyCm1ldHJpY3Mgb24gSGFzd2VsbC4gVGhpcyBpcyBhdXRvIGdlbmVyYXRlZCBm cm9tIGFuIFhNTApkZXNjcmlwdGlvbiBvZiBtZXRyaWMgc2V0cywgY3VycmVudGx5IG1haW50YWlu ZWQgaW4gZ3B1dG9wLCByZWY6CgogIGh0dHBzOi8vZ2l0aHViLmNvbS9yaWIvZ3B1dG9wCiAgPiBn cHV0b3AtZGF0YS9vYS0qLnhtbAogID4gc2NyaXB0cy9pOTE1LXBlcmYta2VybmVsZ2VuLnB5Cgog ICQgbWFrZSAtQyBncHV0b3AtZGF0YSAtZiBNYWtlZmlsZS54bWwgU1lTRlM9MCBXSElURUxJU1Q9 UmVuZGVyQmFzaWMKClNpZ25lZC1vZmYtYnk6IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmlu ZS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICB8ICAgMyArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICB8ICAxNCArKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X29hX2hzdy5jIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmggfCAgMzQgKysr KysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE5MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCmluZGV4IGQ5OTE3ODEuLjZjYjI1ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCkBAIC0xMTEsNyArMTExLDggQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBcCiBpOTE1LXkg Kz0gaTkxNV92Z3B1Lm8KIAogIyBwZXJmIGNvZGUKLWk5MTUteSArPSBpOTE1X3BlcmYubworaTkx NS15ICs9IGk5MTVfcGVyZi5vIFwKKwkgIGk5MTVfb2FfaHN3Lm8KIAogaWZlcSAoJChDT05GSUdf RFJNX0k5MTVfR1ZUKSx5KQogaTkxNS15ICs9IGludGVsX2d2dC5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCAwZjVjZDhmLi41ZmFkMDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTE3NDAsNiArMTc0MCwxMSBAQCBzdHJ1Y3QgaW50ZWxfd21fY29uZmlnIHsKIAlib29sIHNwcml0 ZXNfc2NhbGVkOwogfTsKIAorc3RydWN0IGk5MTVfb2FfcmVnIHsKKwlpOTE1X3JlZ190IGFkZHI7 CisJdTMyIHZhbHVlOworfTsKKwogc3RydWN0IGk5MTVfcGVyZl9zdHJlYW07CiAKIHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtX29wcyB7CkBAIC0yMTIyLDYgKzIxMjcsMTUgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewogCQlib29sIGluaXRpYWxpemVkOwogCQlzdHJ1Y3QgbXV0ZXggbG9jazsK IAkJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOworCisJCXN0cnVjdCB7CisJCQl1MzIgbWV0cmlj c19zZXQ7CisKKwkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3M7CisJCQlpbnQg bXV4X3JlZ3NfbGVuOworCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICpiX2NvdW50ZXJfcmVn czsKKwkJCWludCBiX2NvdW50ZXJfcmVnc19sZW47CisJCX0gb2E7CiAJfSBwZXJmOwogCiAJLyog QWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBl eGVjbGlzdHMpIGF3YXkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2FfaHN3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2hzdy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWNlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2hzdy5jCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICog QXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisgKiBDb3B5cmln aHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisg KiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitl bnVtIG1ldHJpY19zZXRfaWQgeworCU1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDID0gMSwKK307 CisKK2ludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19oc3cgPSAxOworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljW10g PSB7CisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweDI1M2E0KSwgMHgw MTYwMDAwMCB9LAorCXsgX01NSU8oMHgyNTQ0MCksIDB4MDAxMDAwMDAgfSwKKwl7IF9NTUlPKDB4 MjUxMjgpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI2OTFjKSwgMHgwMDAwMDgwMCB9LAor CXsgX01NSU8oMHgyNmFhMCksIDB4MDE1MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjZiOWMpLCAweDAw MDA2MDAwIH0sCisJeyBfTU1JTygweDI3OTFjKSwgMHgwMDAwMDgwMCB9LAorCXsgX01NSU8oMHgy N2FhMCksIDB4MDE1MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjdiOWMpLCAweDAwMDA2MDAwIH0sCisJ eyBfTU1JTygweDI2NDFjKSwgMHgwMDAwMDQwMCB9LAorCXsgX01NSU8oMHgyNTM4MCksIDB4MDAw MDAwMTAgfSwKKwl7IF9NTUlPKDB4MjUzOGMpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI1 Mzg0KSwgMHgwODAwYWFhYSB9LAorCXsgX01NSU8oMHgyNTQwMCksIDB4MDAwMDAwMDQgfSwKKwl7 IF9NTUlPKDB4MjU0MGMpLCAweDA2MDI5MDAwIH0sCisJeyBfTU1JTygweDI1NDEwKSwgMHgwMDAw MDAwMiB9LAorCXsgX01NSU8oMHgyNTQwNCksIDB4NWMzMGZmZmYgfSwKKwl7IF9NTUlPKDB4MjUx MDApLCAweDAwMDAwMDE2IH0sCisJeyBfTU1JTygweDI1MTEwKSwgMHgwMDAwMDQwMCB9LAorCXsg X01NSU8oMHgyNTEwNCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjY4MDQpLCAweDAwMDAx MjExIH0sCisJeyBfTU1JTygweDI2ODg0KSwgMHgwMDAwMDEwMCB9LAorCXsgX01NSU8oMHgyNjkw MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4MjY5MDgpLCAweDAwNzAwMDAwIH0sCisJeyBf TU1JTygweDI2OTA0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNjk4NCksIDB4MDAwMDEw MjIgfSwKKwl7IF9NTUlPKDB4MjZhMDQpLCAweDAwMDAwMDExIH0sCisJeyBfTU1JTygweDI2YTgw KSwgMHgwMDAwMDAwNiB9LAorCXsgX01NSU8oMHgyNmE4OCksIDB4MDAwMDBjMDIgfSwKKwl7IF9N TUlPKDB4MjZhODQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI2YjA0KSwgMHgwMDAwMTAw MCB9LAorCXsgX01NSU8oMHgyNmI4MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4MjZiOGMp LCAweDAwMDAwMDA3IH0sCisJeyBfTU1JTygweDI2Yjg0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzgwNCksIDB4MDAwMDQ4NDQgfSwKKwl7IF9NTUlPKDB4Mjc4ODQpLCAweDAwMDAwNDAw IH0sCisJeyBfTU1JTygweDI3OTAwKSwgMHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNzkwOCks IDB4MGUwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc5MDQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3OTg0KSwgMHgwMDAwNDA4OCB9LAorCXsgX01NSU8oMHgyN2EwNCksIDB4MDAwMDAwNDQg fSwKKwl7IF9NTUlPKDB4MjdhODApLCAweDAwMDAwMDA2IH0sCisJeyBfTU1JTygweDI3YTg4KSwg MHgwMDAxODA0MCB9LAorCXsgX01NSU8oMHgyN2E4NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4MjdiMDQpLCAweDAwMDA0MDAwIH0sCisJeyBfTU1JTygweDI3YjgwKSwgMHgwMDAwMDAwMiB9 LAorCXsgX01NSU8oMHgyN2I4YyksIDB4MDAwMDAwZTAgfSwKKwl7IF9NTUlPKDB4MjdiODQpLCAw eDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI2MTA0KSwgMHgwMDAwMjIyMiB9LAorCXsgX01NSU8o MHgyNjE4NCksIDB4MGMwMDY2NjYgfSwKKwl7IF9NTUlPKDB4MjYyODQpLCAweDA0MDAwMDAwIH0s CisJeyBfTU1JTygweDI2MzA0KSwgMHgwNDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNjQwMCksIDB4 MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4MjY0MTApLCAweDAwMDAwMGEwIH0sCisJeyBfTU1JTygw eDI2NDA0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNTQyMCksIDB4MDQxMDgwMjAgfSwK Kwl7IF9NTUlPKDB4MjU0MjQpLCAweDEyODRhNDIwIH0sCisJeyBfTU1JTygweDI1NDFjKSwgMHgw MDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNTQyOCksIDB4MDAwNDIwNDkgfSwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKgorZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmln KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICBpbnQgKmxlbikKK3sK KwkqbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisJcmV0dXJuIG11 eF9jb25maWdfcmVuZGVyX2Jhc2ljOworfQorCitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3Nl dF9oc3coc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW4g PSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCisJc3dpdGNoIChkZXZfcHJpdi0+ cGVyZi5vYS5tZXRyaWNzX3NldCkgeworCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6 CisJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzID0KKwkJCWdldF9yZW5kZXJfYmFzaWNfbXV4 X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgICAmZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVuKTsKKwkJaWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgeworCQkJRFJNX0RFQlVH X0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRy aWMgc2V0Iik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0 aXNlZCBzbyB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOwor CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisKKwkJcmV0dXJuIDA7CisJZGVmYXVsdDoK KwkJcmV0dXJuIC1FTk9ERVY7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9oc3cuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxOGExZgotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmgKQEAgLTAsMCArMSwzNCBAQAor LyoKKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCisgKgorICog Q29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fSTkxNV9PQV9I U1dfSF9fCisjZGVmaW5lIF9fSTkxNV9PQV9IU1dfSF9fCisKK2V4dGVybiBpbnQgaTkxNV9vYV9u X2J1aWx0aW5fbWV0cmljX3NldHNfaHN3OworCitleHRlcm4gaW50IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfaHN3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKKyNlbmRp ZgotLSAKMi45LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=