From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH v2 1/3] drm: Add SCDC helpers Date: Fri, 2 Dec 2016 20:24:13 +0100 Message-ID: <20161202192415.16110-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F94A6E9DD for ; Fri, 2 Dec 2016 19:24:20 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id e9so8666080pgc.1 for ; Fri, 02 Dec 2016 11:24:20 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Jose Abreu List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlh LmNvbT4KLS0tCkNoYW5nZXMgaW4gdjI6Ci0gaW5kZW50IHJlZ2lzdGVyIGZpZWxkIGRlZmluaXRp b25zIGZvciByZWFkYWJpbGl0eSAoVmlsbGUgU3lyasOkbMOkKQotIHVzZSBHRlBfVEVNUE9SQVJZ IGZvciB0ZW1wb3JhcnkgYnVmZmVyIGFsbG9jYXRpb24gKEphbmkgTmlrdWxhKQoKIERvY3VtZW50 YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwogZHJpdmVycy9ncHUvZHJt L0tjb25maWcgICAgICAgICAgICAgICB8ICAgNCArKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMg ICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9z Y2RjX2hlbHBlci5oICAgICAgICAgfCAxMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNjAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVs cGVycy5yc3QKaW5kZXggMDMwNDBhYTE0ZmU4Li43NTkyNzU2MjlmY2YgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLWttcy1oZWxwZXJzLnJzdApAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBG dW5jdGlvbnMgUmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9l ZGlkLmMKICAgIDpleHBvcnQ6CiAKK1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMv Z3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYworICAgOmRvYzogc2NkYyBoZWxwZXJzCisKKy4uIGtl cm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAorICAgOmludGVybmFsOgor CisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCisgICA6 ZXhwb3J0OgorCiBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5jZQogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCA5NWZjMDQxMGUxMjkuLmQwMDMxZmU0NWJhYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKQEAgLTg0LDYgKzg0LDEwIEBAIGNvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OCiAK IAkgIElmIGluIGRvdWJ0LCBzYXkgIlkiLgogCitjb25maWcgRFJNX1NDREMKKwlib29sCisJZGVw ZW5kcyBvbiBEUk1fS01TX0hFTFBFUgorCiBjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FSRQog CWJvb2wgIkFsbG93IHRvIHNwZWNpZnkgYW4gRURJRCBkYXRhIHNldCBpbnN0ZWFkIG9mIHByb2Jp bmcgZm9yIGl0IgogCWRlcGVuZHMgb24gRFJNX0tNU19IRUxQRVIKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCA4ODNm M2U3NWNmYmMuLjcxYzM4YjZkZDU0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtMzEsNiArMzEsNyBAQCBkcm1f a21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJv YmVfaGVscGVyLm8gXAogCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2Rl X2hlbHBlci5vIFwKIAkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVy Lm8KIAorZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1NDREMpICs9IGRybV9zY2RjX2hlbHBl ci5vCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBk cm1fZWRpZF9sb2FkLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJ T04pICs9IGRybV9mYl9oZWxwZXIubwogZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0tNU19D TUFfSEVMUEVSKSArPSBkcm1fZmJfY21hX2hlbHBlci5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVy LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZTBlMTIxMWU4NzMK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKQEAg LTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBu ZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1 ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KKworLyoqCisgKiBET0M6IHNjZGMgaGVscGVycwor ICoKKyAqIFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFu aXNtIGludHJvZHVjZWQgYnkgdGhlCisgKiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uLiBJdCBpcyBh IHBvaW50LXRvLXBvaW50IHByb3RvY29sIHRoYXQgYWxsb3dzIHRoZQorICogSERNSSBzb3VyY2Ug YW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50ZXJmYWNlIHRo YXQKKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVj aGFuaXNtIGZvciBTQ0RDLgorICovCisKKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAw eDU0CisKKy8qKgorICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20g U0NEQworICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZz ZXQgb2YgYmxvY2sgdG8gcmVhZAorICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUg YmxvY2sgdG8gcmVhZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJlYWQKKyAqCisg KiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9m ZnNldC4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20g U0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBk cm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lk ICpidWZmZXIsCisJCSAgICAgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZ3Nb Ml0gPSB7CisJCXsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKKwkJCS5mbGFn cyA9IDAsCisJCQkubGVuID0gMSwKKwkJCS5idWYgPSAmb2Zmc2V0LAorCQl9LCB7CisJCQkuYWRk ciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3MgPSBJMkNfTV9SRCwKKwkJCS5s ZW4gPSBzaXplLAorCQkJLmJ1ZiA9IGJ1ZmZlciwKKwkJfQorCX07CisKKwlyZXR1cm4gaTJjX3Ry YW5zZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOworfQorRVhQT1JUX1NZTUJP TChkcm1fc2NkY19yZWFkKTsKKworLyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxv Y2sgb2YgZGF0YSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZz ZXQ6IHN0YXJ0IG9mZnNldCBvZiBibG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjogYmxvY2sgb2Yg ZGF0YSB0byB3cml0ZQorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdyaXRlCisgKgor ICogV3JpdGVzIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9m ZnNldC4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRv IFNDREMgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3Qg ZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJ CSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNf bXNnIG1zZyA9IHsKKwkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAorCQkuZmxhZ3Mg PSAwLAorCQkubGVuID0gMSArIHNpemUsCisJCS5idWYgPSBOVUxMLAorCX07CisJdm9pZCAqZGF0 YTsKKwlpbnQgZXJyOworCisJZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkp OworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltc2cuYnVmID0gZGF0YTsKKwor CW1lbWNweShkYXRhLCAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7CisJbWVtY3B5KGRhdGEgKyAx LCBidWZmZXIsIHNpemUpOworCisJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEp OworCisJa2ZyZWUoZGF0YSk7CisKKwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZTUJPTChkcm1f c2NkY193cml0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBi L2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uOTNiMDdiY2YwMjkxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9k cm0vZHJtX3NjZGNfaGVscGVyLmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg KGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBE Uk1fU0NEQ19IRUxQRVJfSAorI2RlZmluZSBEUk1fU0NEQ19IRUxQRVJfSAorCisjaW5jbHVkZSA8 bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2RlZmluZSBTQ0RDX1NJ TktfVkVSU0lPTiAweDAxCisKKyNkZWZpbmUgU0NEQ19TT1VSQ0VfVkVSU0lPTiAweDAyCisKKyNk ZWZpbmUgU0NEQ19VUERBVEVfMCAweDEwCisjZGVmaW5lICBTQ0RDX1JFQURfUkVRVUVTVF9URVNU ICgxIDw8IDIpCisjZGVmaW5lICBTQ0RDX0NFRF9VUERBVEUgKDEgPDwgMSkKKyNkZWZpbmUgIFND RENfU1RBVFVTX1VQREFURSAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENfVVBEQVRFXzEgMHgxMQor CisjZGVmaW5lIFNDRENfVE1EU19DT05GSUcgMHgyMAorI2RlZmluZSAgU0NEQ19UTURTX0JJVF9D TE9DS19SQVRJT19CWV80MCAoMSA8PCAxKQorI2RlZmluZSAgU0NEQ19UTURTX0JJVF9DTE9DS19S QVRJT19CWV8xMCAoMCA8PCAxKQorI2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX0VOQUJMRSAoMSA8 PCAwKQorCisjZGVmaW5lIFNDRENfU0NSQU1CTEVSX1NUQVRVUyAweDIxCisjZGVmaW5lICBTQ0RD X1NDUkFNQkxJTkdfU1RBVFVTICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19DT05GSUdfMCAweDMw CisjZGVmaW5lICBTQ0RDX1JFQURfUkVRVUVTVF9FTkFCTEUgKDEgPDwgMCkKKworI2RlZmluZSBT Q0RDX1NUQVRVU19GTEFHU18wIDB4NDAKKyNkZWZpbmUgIFNDRENfQ0gyX0xPQ0sgKDEgPCAzKQor I2RlZmluZSAgU0NEQ19DSDFfTE9DSyAoMSA8IDIpCisjZGVmaW5lICBTQ0RDX0NIMF9MT0NLICgx IDwgMSkKKyNkZWZpbmUgIFNDRENfQ0hfTE9DS19NQVNLIChTQ0RDX0NIMl9MT0NLIHwgU0NEQ19D SDFfTE9DSyB8IFNDRENfQ0gwX0xPQ0spCisjZGVmaW5lICBTQ0RDX0NMT0NLX0RFVEVDVCAoMSA8 PCAwKQorCisjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzEgMHg0MQorCisjZGVmaW5lIFNDRENf RVJSX0RFVF8wX0wgMHg1MAorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9IIDB4NTEKKyNkZWZpbmUg U0NEQ19FUlJfREVUXzFfTCAweDUyCisjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0ggMHg1MworI2Rl ZmluZSBTQ0RDX0VSUl9ERVRfMl9MIDB4NTQKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzJfSCAweDU1 CisjZGVmaW5lICBTQ0RDX0NIQU5ORUxfVkFMSUQgKDEgPDwgNykKKworI2RlZmluZSBTQ0RDX0VS Ul9ERVRfQ0hFQ0tTVU0gMHg1NgorCisjZGVmaW5lIFNDRENfVEVTVF9DT05GSUdfMCAweGMwCisj ZGVmaW5lICBTQ0RDX1RFU1RfUkVBRF9SRVFVRVNUICgxIDw8IDcpCisjZGVmaW5lICBTQ0RDX1RF U1RfUkVBRF9SRVFVRVNUX0RFTEFZKHgpICgoeCkgJiAweDdmKQorCisjZGVmaW5lIFNDRENfTUFO VUZBQ1RVUkVSX0lFRUVfT1VJIDB4ZDAKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9P VUlfU0laRSAzCisKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSUQgMHhkMworI2RlZmluZSBTQ0RDX0RF VklDRV9JRF9TSVpFIDgKKworI2RlZmluZSBTQ0RDX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTiAw eGRiCisjZGVmaW5lICBTQ0RDX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTl9NQUpPUih4KSAoKCh4 KSA+PiA0KSAmIDB4ZikKKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01J Tk9SKHgpICgoKHgpID4+IDApICYgMHhmKQorCisjZGVmaW5lIFNDRENfREVWSUNFX1NPRlRXQVJF X01BSk9SX1JFVklTSU9OIDB4ZGMKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUlOT1Jf UkVWSVNJT04gMHhkZAorCisjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklDIDB4ZGUK KyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUNfU0laRSAzNAorCitzc2l6ZV90IGRy bV9zY2RjX3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQg KmJ1ZmZlciwKKwkJICAgICAgc2l6ZV90IHNpemUpOworc3NpemVfdCBkcm1fc2NkY193cml0ZShz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJICAgICAgIGNvbnN0IHZv aWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOworCisvKioKKyAqIGRybV9zY2RjX3JlYWRiIC0gcmVh ZCBhIHNpbmdsZSBieXRlIGZyb20gU0NEQworICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyCisgKiBA b2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIgdG8gcmVhZAorICogQHZhbHVlOiByZXR1cm4gbG9j YXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQorICoKKyAqIFJlYWRzIGEgc2luZ2xlIGJ5dGUg ZnJvbSBTQ0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCisgKiBk cm1fc2NkY19yZWFkKCkgZnVuY3Rpb24uCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vz cyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGlubGlu ZSBpbnQgZHJtX3NjZGNfcmVhZGIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZz ZXQsCisJCQkJIHU4ICp2YWx1ZSkKK3sKKwlyZXR1cm4gZHJtX3NjZGNfcmVhZChhZGFwdGVyLCBv ZmZzZXQsIHZhbHVlLCBzaXplb2YoKnZhbHVlKSk7Cit9CisKKy8qKgorICogZHJtX3NjZGNfd3Jp dGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGFkYXB0 ZXIKKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiByZWdpc3RlciB0byByZWFkCisgKiBAdmFsdWU6IHJl dHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlCisgKgorICogV3JpdGVzIGEgc2lu Z2xlIGJ5dGUgdG8gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRo ZQorICogZHJtX3NjZGNfd3JpdGUoKSBmdW5jdGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzdGF0 aWMgaW5saW5lIGludCBkcm1fc2NkY193cml0ZWIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy LCB1OCBvZmZzZXQsCisJCQkJICB1OCB2YWx1ZSkKK3sKKwlyZXR1cm4gZHJtX3NjZGNfd3JpdGUo YWRhcHRlciwgb2Zmc2V0LCAmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworfQorCisjZW5kaWYKLS0g CjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==