From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [PATCH v9 05/11] drm/i915: Add 'render basic' Haswell OA unit config Date: Mon, 7 Nov 2016 19:49:51 +0000 Message-ID: <20161107194957.3385-6-robert@sixbynine.org> References: <20161107194957.3385-1-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161107194957.3385-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, Matthew Auld , Sourab Gupta , Daniel Vetter , Robert Bragg List-Id: dri-devel@lists.freedesktop.org QWRkcyBhIHN0YXRpYyBPQSB1bml0LCBNVVggKyBCIENvdW50ZXIgY29uZmlndXJhdGlvbiBmb3Ig YmFzaWMgcmVuZGVyCm1ldHJpY3Mgb24gSGFzd2VsbC4gVGhpcyBpcyBhdXRvIGdlbmVyYXRlZCBm cm9tIGFuIFhNTApkZXNjcmlwdGlvbiBvZiBtZXRyaWMgc2V0cywgY3VycmVudGx5IG1haW50YWlu ZWQgaW4gZ3B1dG9wLCByZWY6CgogIGh0dHBzOi8vZ2l0aHViLmNvbS9yaWIvZ3B1dG9wCiAgPiBn cHV0b3AtZGF0YS9vYS0qLnhtbAogID4gc2NyaXB0cy9pOTE1LXBlcmYta2VybmVsZ2VuLnB5Cgog ICQgbWFrZSAtQyBncHV0b3AtZGF0YSAtZiBNYWtlZmlsZS54bWwgU1lTRlM9MCBXSElURUxJU1Q9 UmVuZGVyQmFzaWMKClNpZ25lZC1vZmYtYnk6IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmlu ZS5vcmc+ClJldmlld2VkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICB8ICAgMyArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICB8ICAxNCArKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X29hX2hzdy5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmggfCAgMzQgKysrKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmgKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCmluZGV4IDA4YjQzYWYuLjdlOWU2ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBA IC0xMTcsNyArMTE3LDggQEAgaTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSAr PSBpOTE1X2dwdV9lcnJvci5vCiBpOTE1LXkgKz0gaTkxNV92Z3B1Lm8KIAogIyBwZXJmIGNvZGUK LWk5MTUteSArPSBpOTE1X3BlcmYubworaTkxNS15ICs9IGk5MTVfcGVyZi5vIFwKKwkgIGk5MTVf b2FfaHN3Lm8KIAogaWZlcSAoJChDT05GSUdfRFJNX0k5MTVfR1ZUKSx5KQogaTkxNS15ICs9IGlu dGVsX2d2dC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBlNGNkMzIyLi5iZGViYjY2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE3ODUsNiArMTc4NSwxMSBAQCBzdHJ1Y3QgaW50 ZWxfd21fY29uZmlnIHsKIAlib29sIHNwcml0ZXNfc2NhbGVkOwogfTsKIAorc3RydWN0IGk5MTVf b2FfcmVnIHsKKwlpOTE1X3JlZ190IGFkZHI7CisJdTMyIHZhbHVlOworfTsKKwogc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW07CiAKIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtX29wcyB7CkBAIC0yMTY4 LDYgKzIxNzMsMTUgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQlib29sIGluaXRpYWxp emVkOwogCQlzdHJ1Y3QgbXV0ZXggbG9jazsKIAkJc3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOwor CisJCXN0cnVjdCB7CisJCQl1MzIgbWV0cmljc19zZXQ7CisKKwkJCWNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqbXV4X3JlZ3M7CisJCQlpbnQgbXV4X3JlZ3NfbGVuOworCQkJY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnICpiX2NvdW50ZXJfcmVnczsKKwkJCWludCBiX2NvdW50ZXJfcmVnc19sZW47 CisJCX0gb2E7CiAJfSBwZXJmOwogCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFu aXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X29hX2hzdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDYz ODAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2hzdy5j CkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJ VCBtYW51YWxseSEKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisK KyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImk5MTVfb2FfaHN3LmgiCisKK2VudW0g bWV0cmljX3NldF9pZCB7CisJTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAorfTsKKwor aW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2hzdyA9IDE7CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsK Kwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAw MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjcx MCksIDB4MDAwMDAwMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4MjUzYTQpLCAweDAxNjAw MDAwIH0sCisJeyBfTU1JTygweDI1NDQwKSwgMHgwMDEwMDAwMCB9LAorCXsgX01NSU8oMHgyNTEy OCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjY5MWMpLCAweDAwMDAwODAwIH0sCisJeyBf TU1JTygweDI2YWEwKSwgMHgwMTUwMDAwMCB9LAorCXsgX01NSU8oMHgyNmI5YyksIDB4MDAwMDYw MDAgfSwKKwl7IF9NTUlPKDB4Mjc5MWMpLCAweDAwMDAwODAwIH0sCisJeyBfTU1JTygweDI3YWEw KSwgMHgwMTUwMDAwMCB9LAorCXsgX01NSU8oMHgyN2I5YyksIDB4MDAwMDYwMDAgfSwKKwl7IF9N TUlPKDB4MjY0MWMpLCAweDAwMDAwNDAwIH0sCisJeyBfTU1JTygweDI1MzgwKSwgMHgwMDAwMDAx MCB9LAorCXsgX01NSU8oMHgyNTM4YyksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjUzODQp LCAweDA4MDBhYWFhIH0sCisJeyBfTU1JTygweDI1NDAwKSwgMHgwMDAwMDAwNCB9LAorCXsgX01N SU8oMHgyNTQwYyksIDB4MDYwMjkwMDAgfSwKKwl7IF9NTUlPKDB4MjU0MTApLCAweDAwMDAwMDAy IH0sCisJeyBfTU1JTygweDI1NDA0KSwgMHg1YzMwZmZmZiB9LAorCXsgX01NSU8oMHgyNTEwMCks IDB4MDAwMDAwMTYgfSwKKwl7IF9NTUlPKDB4MjUxMTApLCAweDAwMDAwNDAwIH0sCisJeyBfTU1J TygweDI1MTA0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNjgwNCksIDB4MDAwMDEyMTEg fSwKKwl7IF9NTUlPKDB4MjY4ODQpLCAweDAwMDAwMTAwIH0sCisJeyBfTU1JTygweDI2OTAwKSwg MHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNjkwOCksIDB4MDA3MDAwMDAgfSwKKwl7IF9NTUlP KDB4MjY5MDQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI2OTg0KSwgMHgwMDAwMTAyMiB9 LAorCXsgX01NSU8oMHgyNmEwNCksIDB4MDAwMDAwMTEgfSwKKwl7IF9NTUlPKDB4MjZhODApLCAw eDAwMDAwMDA2IH0sCisJeyBfTU1JTygweDI2YTg4KSwgMHgwMDAwMGMwMiB9LAorCXsgX01NSU8o MHgyNmE4NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjZiMDQpLCAweDAwMDAxMDAwIH0s CisJeyBfTU1JTygweDI2YjgwKSwgMHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNmI4YyksIDB4 MDAwMDAwMDcgfSwKKwl7IF9NTUlPKDB4MjZiODQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3ODA0KSwgMHgwMDAwNDg0NCB9LAorCXsgX01NSU8oMHgyNzg4NCksIDB4MDAwMDA0MDAgfSwK Kwl7IF9NTUlPKDB4Mjc5MDApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3OTA4KSwgMHgw ZTAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzkwNCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4 Mjc5ODQpLCAweDAwMDA0MDg4IH0sCisJeyBfTU1JTygweDI3YTA0KSwgMHgwMDAwMDA0NCB9LAor CXsgX01NSU8oMHgyN2E4MCksIDB4MDAwMDAwMDYgfSwKKwl7IF9NTUlPKDB4MjdhODgpLCAweDAw MDE4MDQwIH0sCisJeyBfTU1JTygweDI3YTg0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgy N2IwNCksIDB4MDAwMDQwMDAgfSwKKwl7IF9NTUlPKDB4MjdiODApLCAweDAwMDAwMDAyIH0sCisJ eyBfTU1JTygweDI3YjhjKSwgMHgwMDAwMDBlMCB9LAorCXsgX01NSU8oMHgyN2I4NCksIDB4MDAw MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjYxMDQpLCAweDAwMDAyMjIyIH0sCisJeyBfTU1JTygweDI2 MTg0KSwgMHgwYzAwNjY2NiB9LAorCXsgX01NSU8oMHgyNjI4NCksIDB4MDQwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4MjYzMDQpLCAweDA0MDAwMDAwIH0sCisJeyBfTU1JTygweDI2NDAwKSwgMHgwMDAw MDAwMiB9LAorCXsgX01NSU8oMHgyNjQxMCksIDB4MDAwMDAwYTAgfSwKKwl7IF9NTUlPKDB4MjY0 MDQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI1NDIwKSwgMHgwNDEwODAyMCB9LAorCXsg X01NSU8oMHgyNTQyNCksIDB4MTI4NGE0MjAgfSwKKwl7IF9NTUlPKDB4MjU0MWMpLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI1NDI4KSwgMHgwMDA0MjA0OSB9LAorfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqCitnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbGVuKQoreworCSps ZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKwlyZXR1cm4gbXV4X2Nv bmZpZ19yZW5kZXJfYmFzaWM7Cit9CisKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2hz dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbiA9IDA7 CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7CisKKwlzd2l0Y2ggKGRldl9wcml2LT5wZXJm Lm9hLm1ldHJpY3Nfc2V0KSB7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQzoKKwkJ ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MgPQorCQkJZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29u ZmlnKGRldl9wcml2LAorCQkJCQkJICAgICZkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW4p OworCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSB7CisJCQlEUk1fREVCVUdfRFJJ VkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9CQVNJQ1wiIG1ldHJpYyBz ZXQiKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2Vk IHNvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVk CisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKworCQlyZXR1cm4gMDsKKwlkZWZhdWx0OgorCQly ZXR1cm4gLUVOT0RFVjsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X29hX2hzdy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjE4YTFmCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuaApAQCAtMCwwICsxLDM0IEBACisvKgor ICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgX19JOTE1X09BX0hTV19I X18KKyNkZWZpbmUgX19JOTE1X09BX0hTV19IX18KKworZXh0ZXJuIGludCBpOTE1X29hX25fYnVp bHRpbl9tZXRyaWNfc2V0c19oc3c7CisKK2V4dGVybiBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmlj X3NldF9oc3coc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworI2VuZGlmCi0t IAoyLjEwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=