From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 11/46] drm/i915: Mock a GGTT for self-testing Date: Thu, 2 Feb 2017 09:08:30 +0000 Message-ID: <20170202090905.29028-12-chris@chris-wilson.co.uk> References: <20170202090905.29028-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wj0-x244.google.com (mail-wj0-x244.google.com [IPv6:2a00:1450:400c:c01::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id C549D6E95F for ; Thu, 2 Feb 2017 09:09:21 +0000 (UTC) Received: by mail-wj0-x244.google.com with SMTP id ip10so211265wjb.1 for ; Thu, 02 Feb 2017 01:09:21 -0800 (PST) In-Reply-To: <20170202090905.29028-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QSB2ZXJ5IHNpbXBsZSBtb2NrZXJ5LCBqdXN0IGEgcmFuZG9tIG1hbmFnZXIgYW5kIHRpbWVsaW5l LiBVc2VmdWwgZm9yCmluc2VydGluZyBvYmplY3RzIGFuZCBvcmRlcmluZyByZXRpcmVtZW50OyBh bmQgbm90IG11Y2ggZWxzZS4KCnYyOiBtb2NrX2ZpbmlfZ2d0dCgpIHRvIGNvbXBsZW1lbnQgbW9j a19pbml0X2dndHQoKS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAg ICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMgfCAgMzEgKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0 dC5jICAgICAgICB8IDEzOCArKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmggICAgICAgIHwgIDM1ICsrKysrKwogNCBmaWxlcyBj aGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCmluZGV4IDY1NDI1ZTcxZjNhNS4uYWZkYjI4NTliZTA1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMzc1MSwzICszNzUxLDcgQEAgaW50IGk5MTVfZ2VtX2d0 dF9pbnNlcnQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJCSAgIHNpemUsIGFs aWdubWVudCwgY29sb3IsCiAJCQkJCSAgIHN0YXJ0LCBlbmQsIERSTV9NTV9JTlNFUlRfRVZJQ1Qp OwogfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCisjaW5jbHVk ZSAic2VsZnRlc3RzL21vY2tfZ3R0LmMiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwppbmRleCAxNWQwYTdjY2M5ZDEuLmRiZDMy YjEyNWQxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf Z2VtX2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dl bV9kZXZpY2UuYwpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNl LmgiCiAjaW5jbHVkZSAibW9ja19nZW1fb2JqZWN0LmgiCisjaW5jbHVkZSAibW9ja19ndHQuaCIK IAogc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogewpAQCAtMzMsNiArMzQsMTIgQEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJaTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhp OTE1KTsKIAorCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCW1vY2tfZmlu aV9nZ3R0KGk5MTUpOworCWk5MTVfZ2VtX3RpbWVsaW5lX2ZpbmkoJmk5MTUtPmd0Lmdsb2JhbF90 aW1lbGluZSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWtt ZW1fY2FjaGVfZGVzdHJveShpOTE1LT52bWFzKTsKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+ b2JqZWN0cyk7CiAKIAlkcm1fZGV2X2ZpbmkoJmk5MTUtPmRybSk7CkBAIC04NCwxOSArOTEsNDMg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQogCWk5MTUt PmRybS5wZGV2ID0gcGRldjsKIAlpOTE1LT5kcm0uZGV2X3ByaXZhdGUgPSBpOTE1OwogCisJLyog VXNpbmcgdGhlIGdsb2JhbCBHVFQgbWF5IGFzayBxdWVzdGlvbnMgYWJvdXQgS01TIHVzZXJzLCBz byBwcmVwYXJlICovCisJZHJtX21vZGVfY29uZmlnX2luaXQoJmk5MTUtPmRybSk7CisKIAlta3dy aXRlX2RldmljZV9pbmZvKGk5MTUpLT5nZW4gPSAtMTsKIAogCXNwaW5fbG9ja19pbml0KCZpOTE1 LT5tbS5vYmplY3Rfc3RhdF9sb2NrKTsKIAogCUlOSVRfV09SSygmaTkxNS0+bW0uZnJlZV93b3Jr LCBfX2k5MTVfZ2VtX2ZyZWVfd29yayk7CiAJaW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5tbS5mcmVl X2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5tbS51bmJvdW5kX2xpc3QpOworCUlOSVRf TElTVF9IRUFEKCZpOTE1LT5tbS5ib3VuZF9saXN0KTsKIAogCWk5MTUtPm9iamVjdHMgPSBLTUVN X0NBQ0hFKG1vY2tfb2JqZWN0LCBTTEFCX0hXQ0FDSEVfQUxJR04pOwogCWlmICghaTkxNS0+b2Jq ZWN0cykKIAkJZ290byBwdXRfZGV2aWNlOwogCisJaTkxNS0+dm1hcyA9IEtNRU1fQ0FDSEUoaTkx NV92bWEsIFNMQUJfSFdDQUNIRV9BTElHTik7CisJaWYgKCFpOTE1LT52bWFzKQorCQlnb3RvIGVy cl9vYmplY3RzOworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJSU5J VF9MSVNUX0hFQUQoJmk5MTUtPmd0LnRpbWVsaW5lcyk7CisJZXJyID0gaTkxNV9nZW1fdGltZWxp bmVfaW5pdF9fZ2xvYmFsKGk5MTUpOworCWlmIChlcnIpIHsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKwkJZ290byBlcnJfdm1hczsKKwl9CisKKwltb2NrX2luaXRf Z2d0dChpOTE1KTsKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCiAJ cmV0dXJuIGk5MTU7CiAKK2Vycl92bWFzOgorCWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT52bWFz KTsKK2Vycl9vYmplY3RzOgorCWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT5vYmplY3RzKTsKIHB1 dF9kZXZpY2U6CiAJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKIGVycjoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5hNjEzMDljN2NiM2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19ndHQuYwpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENv cHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSAibW9ja19ndHQuaCIK Kworc3RhdGljIHZvaWQgbW9ja19pbnNlcnRfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKKwkJCSAgICAgZG1hX2FkZHJfdCBhZGRyLAorCQkJICAgICB1NjQgb2Zmc2V0LAorCQkJ ICAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsCisJCQkgICAgIHUzMiBmbGFncykKK3sK K30KKworc3RhdGljIHZvaWQgbW9ja19pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKKwkJCQlzdHJ1Y3Qgc2dfdGFibGUgKnN0LAorCQkJCXU2NCBzdGFydCwKKwkJ CQllbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsIHUzMiBmbGFncykKK3sKK30KKworc3RhdGlj IGludCBtb2NrX2JpbmRfcHBndHQoc3RydWN0IGk5MTVfdm1hICp2bWEsCisJCQkgICBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCisJCQkgICB1MzIgZmxhZ3MpCit7CisJR0VNX0JV R19PTihmbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKTsKKwl2bWEtPnBhZ2VzID0gdm1hLT5v YmotPm1tLnBhZ2VzOworCXZtYS0+ZmxhZ3MgfD0gSTkxNV9WTUFfTE9DQUxfQklORDsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgbW9ja191bmJpbmRfcHBndHQoc3RydWN0IGk5MTVfdm1h ICp2bWEpCit7Cit9CisKK3N0YXRpYyB2b2lkIG1vY2tfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKK3sKK30KKworc3RydWN0IGk5MTVfaHdfcHBndHQgKgorbW9ja19wcGd0 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICBjb25zdCBjaGFyICpuYW1lKQor eworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKKworCXBwZ3R0ID0ga3phbGxvYyhzaXpl b2YoKnBwZ3R0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcGd0dCkKKwkJcmV0dXJuIE5VTEw7CisK KwlrcmVmX2luaXQoJnBwZ3R0LT5yZWYpOworCXBwZ3R0LT5iYXNlLmk5MTUgPSBpOTE1OworCXBw Z3R0LT5iYXNlLnRvdGFsID0gcm91bmRfZG93bihVNjRfTUFYLCBQQUdFX1NJWkUpOworCXBwZ3R0 LT5iYXNlLmZpbGUgPSBFUlJfUFRSKC1FTk9ERVYpOworCisJSU5JVF9MSVNUX0hFQUQoJnBwZ3R0 LT5iYXNlLmFjdGl2ZV9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmcHBndHQtPmJhc2UuaW5hY3Rp dmVfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJnBwZ3R0LT5iYXNlLnVuYm91bmRfbGlzdCk7CisK KwlJTklUX0xJU1RfSEVBRCgmcHBndHQtPmJhc2UuZ2xvYmFsX2xpbmspOworCWRybV9tbV9pbml0 KCZwcGd0dC0+YmFzZS5tbSwgMCwgcHBndHQtPmJhc2UudG90YWwpOworCWk5MTVfZ2VtX3RpbWVs aW5lX2luaXQoaTkxNSwgJnBwZ3R0LT5iYXNlLnRpbWVsaW5lLCBuYW1lKTsKKworCXBwZ3R0LT5i YXNlLmNsZWFyX3JhbmdlID0gbm9wX2NsZWFyX3JhbmdlOworCXBwZ3R0LT5iYXNlLmluc2VydF9w YWdlID0gbW9ja19pbnNlcnRfcGFnZTsKKwlwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IG1v Y2tfaW5zZXJ0X2VudHJpZXM7CisJcHBndHQtPmJhc2UuYmluZF92bWEgPSBtb2NrX2JpbmRfcHBn dHQ7CisJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IG1vY2tfdW5iaW5kX3BwZ3R0OworCXBwZ3R0 LT5iYXNlLmNsZWFudXAgPSBtb2NrX2NsZWFudXA7CisKKwlyZXR1cm4gcHBndHQ7Cit9CisKK3N0 YXRpYyBpbnQgbW9ja19iaW5kX2dndHQoc3RydWN0IGk5MTVfdm1hICp2bWEsCisJCQkgIGVudW0g aTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKKwkJCSAgdTMyIGZsYWdzKQoreworCWludCBl cnI7CisKKwllcnIgPSBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyh2bWEpOworCWlmIChlcnIpCisJ CXJldHVybiBlcnI7CisKKwl2bWEtPmZsYWdzIHw9IEk5MTVfVk1BX0dMT0JBTF9CSU5EIHwgSTkx NV9WTUFfTE9DQUxfQklORDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbW9ja191bmJp bmRfZ2d0dChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK3sKK30KKwordm9pZCBtb2NrX2luaXRfZ2d0 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgaTkxNV9nZ3R0ICpn Z3R0ID0gJmk5MTUtPmdndHQ7CisKKwlJTklUX0xJU1RfSEVBRCgmaTkxNS0+dm1fbGlzdCk7CisK KwlnZ3R0LT5iYXNlLmk5MTUgPSBpOTE1OworCisJZ2d0dC0+bWFwcGFibGVfYmFzZSA9IDA7CisJ Z2d0dC0+bWFwcGFibGVfZW5kID0gMjA0OCAqIFBBR0VfU0laRTsKKwlnZ3R0LT5iYXNlLnRvdGFs ID0gNDA5NiAqIFBBR0VfU0laRTsKKworCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBub3BfY2xl YXJfcmFuZ2U7CisJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSA9IG1vY2tfaW5zZXJ0X3BhZ2U7CisJ Z2d0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IG1vY2tfaW5zZXJ0X2VudHJpZXM7CisJZ2d0dC0+ YmFzZS5iaW5kX3ZtYSA9IG1vY2tfYmluZF9nZ3R0OworCWdndHQtPmJhc2UudW5iaW5kX3ZtYSA9 IG1vY2tfdW5iaW5kX2dndHQ7CisJZ2d0dC0+YmFzZS5jbGVhbnVwID0gbW9ja19jbGVhbnVwOwor CisJaTkxNV9hZGRyZXNzX3NwYWNlX2luaXQoJmdndHQtPmJhc2UsIGk5MTUsICJnbG9iYWwiKTsK K30KKwordm9pZCBtb2NrX2ZpbmlfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK K3sKKwlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmk5MTUtPmdndHQ7CisKKwlpOTE1X2FkZHJl c3Nfc3BhY2VfZmluaSgmZ2d0dC0+YmFzZSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX2d0dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u OWEwYTgzM2JiNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ3R0LmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAy MDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhF IFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fTU9DS19HVFRfSAorI2RlZmluZSBfX01P Q0tfR1RUX0gKKwordm9pZCBtb2NrX2luaXRfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cit2b2lkIG1vY2tfZmluaV9nZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKKworc3RydWN0IGk5MTVfaHdfcHBndHQgKgorbW9ja19wcGd0dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKKwkgICBjb25zdCBjaGFyICpuYW1lKTsKKworI2VuZGlmIC8qICFfX01P Q0tfR1RUX0ggKi8KLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==