From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: [RFC 1/1] drm: allow to use mmuless SoC Date: Wed, 30 Nov 2016 12:21:24 +0100 Message-ID: <1480504884-22638-2-git-send-email-benjamin.gaignard@linaro.org> References: <1480504884-22638-1-git-send-email-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22e.google.com (mail-wm0-x22e.google.com [IPv6:2a00:1450:400c:c09::22e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 96DBF6E2C2 for ; Wed, 30 Nov 2016 11:22:31 +0000 (UTC) Received: by mail-wm0-x22e.google.com with SMTP id t79so215705286wmt.0 for ; Wed, 30 Nov 2016 03:22:31 -0800 (PST) In-Reply-To: <1480504884-22638-1-git-send-email-benjamin.gaignard@linaro.org> 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, airlied@redhat.com, daniel@ffwll.ch, robdclark@gmail.com, laurent.pinchart@ideasonboard.com Cc: yannick.fertre@st.com, linaro-kernel@lists.linaro.org, philippe.cornu@st.com List-Id: dri-devel@lists.freedesktop.org U29tZSBwbGF0Zm9ybXMgd2l0aG91dCBNTVUgaGF2ZSBkaXNwbGF5IGRyaXZlcnMgd2hlcmUgYSBk cm0va21zIGRyaXZlcgpjb3VsZCBiZSBpbXBsZW1lbnRlZC4KQmVmb3JlIGRvaW5nIHN1Y2gga2lu ZCBvZiB0aGluZyBkcm0va21zIG11c3QgYWxsb3cgdG8gdXNlIG1tdWxlc3MKZGV2aWNlcy4KVGhp cyBwYXRjaCBwcm9wb3NlcyB0byByZW1vdmUgTU1VIGNvbmZpZ3VyYXRpb24gZmxhZyBhbmQgYWRk IHNvbWUKY21hIGhlbHBlcnMgZnVuY3Rpb25zIHRvIGhlbHAgaW1wbGVtZW50aW5nIG1tdWxlc3Mg ZGlzcGxheSBkcml2ZXIKClNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1p bi5nYWlnbmFyZEBsaW5hcm8ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAg ICAgICAgICB8ICA0ICstLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgIHwg MjAgKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMgfCA2 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9k cm1fdm0uYyAgICAgICAgICAgICB8ICA0ICsrKwogZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2Zi bWVtLmMgICAgIHwgIDggKysrKysKIGluY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oICAg ICB8ICA2ICsrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZwppbmRleCA4ZDljZjczLi4zNmMxMDJiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtNiw3ICs2 LDcgQEAKICMKIG1lbnVjb25maWcgRFJNCiAJdHJpc3RhdGUgIkRpcmVjdCBSZW5kZXJpbmcgTWFu YWdlciAoWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyIERSSSBzdXBwb3J0KSIKLQlkZXBlbmRzIG9u IChBR1AgfHwgQUdQPW4pICYmICFFTVVMQVRFRF9DTVBYQ0hHICYmIE1NVSAmJiBIQVNfRE1BCisJ ZGVwZW5kcyBvbiAoQUdQIHx8IEFHUD1uKSAmJiAhRU1VTEFURURfQ01QWENIRyAmJiBIQVNfRE1B CiAJc2VsZWN0IEhETUkKIAlzZWxlY3QgRkJfQ01ETElORQogCXNlbGVjdCBJMkMKQEAgLTk4LDcg Kzk4LDcgQEAgY29uZmlnIERSTV9MT0FEX0VESURfRklSTVdBUkUKIAogY29uZmlnIERSTV9UVE0K IAl0cmlzdGF0ZQotCWRlcGVuZHMgb24gRFJNCisJZGVwZW5kcyBvbiBEUk0gJiYgTU1VCiAJaGVs cAogCSAgR1BVIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBmb3IgZGV2aWNlcyB3aXRoIG11 bHRpcGxlCiAJICBHUFUgbWVtb3J5IHR5cGVzLiBXaWxsIGJlIGVuYWJsZWQgYXV0b21hdGljYWxs eSBpZiBhIGRldmljZSBkcml2ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf Y21hX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKaW5kZXgg ODFiMzU1OC4uYTNjZWY3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFf aGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKQEAgLTM0 MywxMCArMzQzLDMwIEBAIGludCBkcm1fZmJfY21hX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmFyZykKIAogc3RhdGljIGludCBkcm1fZmJfY21hX21tYXAoc3RydWN0IGZi X2luZm8gKmluZm8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogeworI2lmZGVmIENPTkZJ R19NTVUKIAlyZXR1cm4gZG1hX21tYXBfd3JpdGVjb21iaW5lKGluZm8tPmRldmljZSwgdm1hLCBp bmZvLT5zY3JlZW5fYmFzZSwKIAkJCQkgICAgIGluZm8tPmZpeC5zbWVtX3N0YXJ0LCBpbmZvLT5m aXguc21lbV9sZW4pOworI2Vsc2UKKwlyZXR1cm4gdm1faW9tYXBfbWVtb3J5KHZtYSwgdm1hLT52 bV9zdGFydCwgaW5mby0+Zml4LnNtZW1fbGVuKTsKKyNlbmRpZgogfQogCisjaWZkZWYgSEFWRV9B UkNIX0ZCX1VOTUFQUEVEX0FSRUEKK3Vuc2lnbmVkIGxvbmcgZ2V0X2ZiX3VubWFwcGVkX2FyZWEo c3RydWN0IGZpbGUgKmZpbHAsCisJCQkJICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBs b25nIGxlbiwKKwkJCQkgICB1bnNpZ25lZCBsb25nIHBnb2ZmLCB1bnNpZ25lZCBsb25nIGZsYWdz KQoreworCXN0cnVjdCBmYl9pbmZvICogY29uc3QgaW5mbyA9IGZpbHAtPnByaXZhdGVfZGF0YTsK Kwl1bnNpZ25lZCBsb25nIGZiX3NpemUgPSBQQUdFX0FMSUdOKGluZm8tPmZpeC5zbWVtX2xlbik7 CisKKwlpZiAocGdvZmYgPiBmYl9zaXplIHx8IGxlbiA+IGZiX3NpemUgLSBwZ29mZikKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpaW5mby0+c2NyZWVuX2Jhc2Ug KyBwZ29mZjsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGdldF9mYl91bm1hcHBlZF9hcmVhKTsKKyNl bmRpZgorCiBzdGF0aWMgc3RydWN0IGZiX29wcyBkcm1fZmJkZXZfY21hX29wcyA9IHsKIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCiAJRFJNX0ZCX0hFTFBFUl9ERUZBVUxUX09QUywKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZ2VtX2NtYV9oZWxwZXIuYwppbmRleCAxZDZjMzM1Li5kZTEzNTM1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fY21hX2hlbHBlci5jCkBAIC0zMTgsMTEgKzMxOCwxNiBAQCBzdGF0aWMgaW50 IGRybV9nZW1fY21hX21tYXBfb2JqKHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmos CiAJdm1hLT52bV9mbGFncyAmPSB+Vk1fUEZOTUFQOwogCXZtYS0+dm1fcGdvZmYgPSAwOwogCisj aWZkZWYgQ09ORklHX01NVQogCXJldCA9IGRtYV9tbWFwX3djKGNtYV9vYmotPmJhc2UuZGV2LT5k ZXYsIHZtYSwgY21hX29iai0+dmFkZHIsCiAJCQkgIGNtYV9vYmotPnBhZGRyLCB2bWEtPnZtX2Vu ZCAtIHZtYS0+dm1fc3RhcnQpOwogCWlmIChyZXQpCiAJCWRybV9nZW1fdm1fY2xvc2Uodm1hKTsK IAorI2Vsc2UKKwlyZXQgPSB2bV9pb21hcF9tZW1vcnkodm1hLCB2bWEtPnZtX3N0YXJ0LAorCQkJ ICAgICAgKHZtYS0+dm1fZW5kIC0gdm1hLT52bV9zdGFydCkpOworI2VuZGlmCiAJcmV0dXJuIHJl dDsKIH0KIApAQCAtMzU4LDYgKzM2Myw2MyBAQCBpbnQgZHJtX2dlbV9jbWFfbW1hcChzdHJ1Y3Qg ZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiB9CiBFWFBPUlRfU1lNQk9M X0dQTChkcm1fZ2VtX2NtYV9tbWFwKTsKIAorI2lmZGVmIENPTkZJR19NTVUKKyNkZWZpbmUgZHJt X2dlbV9jbWFfZ2V0X3VubWFwcGVkX2FyZWEgTlVMTAorI2Vsc2UKK3Vuc2lnbmVkIGxvbmcgZHJt X2dlbV9jbWFfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbHAsCisJCQkJCSAgICB1 bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGxlbiwKKwkJCQkJICAg IHVuc2lnbmVkIGxvbmcgcGdvZmYsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGZsYWdzKQorewor CXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmo7CisJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmogPSBOVUxMOworCXN0cnVjdCBkcm1fZmlsZSAqcHJpdiA9IGZpbHAtPnByaXZhdGVf ZGF0YTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcHJpdi0+bWlub3ItPmRldjsKKwlzdHJ1 Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZTsKKworCWlmIChkcm1fZGV2aWNlX2lzX3VucGx1 Z2dlZChkZXYpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWRybV92bWFfb2Zmc2V0X2xvY2tfbG9v a3VwKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyKTsKKwlub2RlID0gZHJtX3ZtYV9vZmZzZXRfZXhh Y3RfbG9va3VwX2xvY2tlZChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlciwKKwkJCQkJCSAgcGdvZmYs CisJCQkJCQkgIGxlbiA+PiBQQUdFX1NISUZUKTsKKwlpZiAobGlrZWx5KG5vZGUpKSB7CisJCW9i aiA9IGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QsIHZtYV9ub2RlKTsK KwkJLyoKKwkJICogV2hlbiB0aGUgb2JqZWN0IGlzIGJlaW5nIGZyZWVkLCBhZnRlciBpdCBoaXRz IDAtcmVmY250IGl0CisJCSAqIHByb2NlZWRzIHRvIHRlYXIgZG93biB0aGUgb2JqZWN0LiBJbiB0 aGUgcHJvY2VzcyBpdCB3aWxsCisJCSAqIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBWTUEgb2Zmc2V0 IGFuZCBzbyBhY3F1aXJlIHRoaXMKKwkJICogbWdyLT52bV9sb2NrLiAgVGhlcmVmb3JlIGlmIHdl IGZpbmQgYW4gb2JqZWN0IHdpdGggYSAwLXJlZmNudAorCQkgKiB0aGF0IG1hdGNoZXMgb3VyIHJh bmdlLCB3ZSBrbm93IGl0IGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nCisJCSAqIGRlc3Ryb3ll ZCBhbmQgd2lsbCBiZSBmcmVlZCBhcyBzb29uIGFzIHdlIHJlbGVhc2UgdGhlIGxvY2sgLQorCQkg KiBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciB0aGUgMC1yZWZjbnRlZCBvYmplY3QgYW5kIHRyZWF0 IGl0IGFzCisJCSAqIGludmFsaWQuCisJCSAqLworCQlpZiAoIWtyZWZfZ2V0X3VubGVzc196ZXJv KCZvYmotPnJlZmNvdW50KSkKKwkJCW9iaiA9IE5VTEw7CisJfQorCisJZHJtX3ZtYV9vZmZzZXRf dW5sb2NrX2xvb2t1cChkZXYtPnZtYV9vZmZzZXRfbWFuYWdlcik7CisKKwlpZiAoIW9iaikKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWRybV92bWFfbm9kZV9pc19hbGxvd2VkKG5vZGUsIHBy aXYpKSB7CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7CisJCXJl dHVybiAtRUFDQ0VTOworCX0KKworCWNtYV9vYmogPSB0b19kcm1fZ2VtX2NtYV9vYmoob2JqKTsK KworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7CisKKwlyZXR1cm4g Y21hX29iai0+dmFkZHIgPyAodW5zaWduZWQgbG9uZyljbWFfb2JqLT52YWRkciA6IC1FSU5WQUw7 Cit9CisjZW5kaWYKK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fY21hX2dldF91bm1hcHBlZF9h cmVhKTsKKwogI2lmZGVmIENPTkZJR19ERUJVR19GUwogLyoqCiAgKiBkcm1fZ2VtX2NtYV9kZXNj cmliZSAtIGRlc2NyaWJlIGEgQ01BIEdFTSBvYmplY3QgZm9yIGRlYnVnZnMKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdm0uYwppbmRl eCBjYWE0ZTRjLi45NzRlMDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZtLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92bS5jCkBAIC00ODksNiArNDg5LDcgQEAgc3RhdGlj IGludCBkcm1fbW1hcF9kbWEoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hKQogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKIAkJ cGdwcm90X3ZhbCh2bWEtPnZtX3BhZ2VfcHJvdCkgJj0gfl9QQUdFX1JXOwogI2Vsc2UKKyNpZmRl ZiBDT05GSUdfTU1VCiAJCS8qIFllIGdhZHMgdGhpcyBpcyB1Z2x5LiAgV2l0aCBtb3JlIHRob3Vn aHQKIAkJICAgd2UgY291bGQgbW92ZSB0aGlzIHVwIGhpZ2hlciBhbmQgdXNlCiAJCSAgIGBwcm90 ZWN0aW9uX21hcCcgaW5zdGVhZC4gICovCkBAIC00OTcsNiArNDk4LDcgQEAgc3RhdGljIGludCBk cm1fbW1hcF9kbWEoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KQogCQkJICAgICAocHRlX3dycHJvdGVjdAogCQkJICAgICAgKF9fcHRlKHBncHJvdF92YWwodm1h LT52bV9wYWdlX3Byb3QpKSkpKTsKICNlbmRpZgorI2VuZGlmCiAJfQogCiAJdm1hLT52bV9vcHMg PSAmZHJtX3ZtX2RtYV9vcHM7CkBAIC01NzMsNiArNTc1LDcgQEAgc3RhdGljIGludCBkcm1fbW1h cF9sb2NrZWQoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQog I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKIAkJcGdwcm90X3Zh bCh2bWEtPnZtX3BhZ2VfcHJvdCkgJj0gfl9QQUdFX1JXOwogI2Vsc2UKKyNpZmRlZiBDT05GSUdf TU1VCiAJCS8qIFllIGdhZHMgdGhpcyBpcyB1Z2x5LiAgV2l0aCBtb3JlIHRob3VnaHQKIAkJICAg d2UgY291bGQgbW92ZSB0aGlzIHVwIGhpZ2hlciBhbmQgdXNlCiAJCSAgIGBwcm90ZWN0aW9uX21h cCcgaW5zdGVhZC4gICovCkBAIC01ODEsNiArNTg0LDcgQEAgc3RhdGljIGludCBkcm1fbW1hcF9s b2NrZWQoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQkJ ICAgICAocHRlX3dycHJvdGVjdAogCQkJICAgICAgKF9fcHRlKHBncHJvdF92YWwodm1hLT52bV9w YWdlX3Byb3QpKSkpKTsKICNlbmRpZgorI2VuZGlmCiAJfQogCiAJc3dpdGNoIChtYXAtPnR5cGUp IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jIGIvZHJpdmVy cy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKaW5kZXggNzZjMWFkOS4uZDZhODNiZCAxMDA2NDQK LS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKKysrIGIvZHJpdmVycy92aWRl by9mYmRldi9jb3JlL2ZibWVtLmMKQEAgLTE0OTIsNiArMTQ5MiwxNCBAQCBzdGF0aWMgbG9uZyBm Yl9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCiAJcmV0 dXJuIDA7CiB9CiAKKyNpZmRlZiBIQVZFX0FSQ0hfRkJfVU5NQVBQRURfQVJFQQorZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZ2V0X2ZiX3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbHAsCisJCQkJ CSAgdW5zaWduZWQgbG9uZyBhZGRyLAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgbGVuLAorCQkJCQkg IHVuc2lnbmVkIGxvbmcgcGdvZmYsCisJCQkJCSAgdW5zaWduZWQgbG9uZyBmbGFncyk7CisjZW5k aWYKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmJfZm9wcyA9IHsKIAku b3duZXIgPQlUSElTX01PRFVMRSwKIAkucmVhZCA9CQlmYl9yZWFkLApkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9o ZWxwZXIuaAppbmRleCBhY2Q2YWY4Li43OWU5ZGJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9k cm1fZ2VtX2NtYV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aApAQCAtNTEsNiArNTEsMTIgQEAgaW50IGRybV9nZW1fY21hX2R1bWJfbWFwX29mZnNldChzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmRybV9n ZW1fY21hX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAogCQkJCQkgICAgICBzaXplX3Qg c2l6ZSk7CiAKK3Vuc2lnbmVkIGxvbmcgZHJtX2dlbV9jbWFfZ2V0X3VubWFwcGVkX2FyZWEoc3Ry dWN0IGZpbGUgKmZpbHAsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkJCSAgICB1 bnNpZ25lZCBsb25nIGxlbiwKKwkJCQkJICAgIHVuc2lnbmVkIGxvbmcgcGdvZmYsCisJCQkJCSAg ICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKKwogZXh0ZXJuIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRp b25zX3N0cnVjdCBkcm1fZ2VtX2NtYV92bV9vcHM7CiAKICNpZmRlZiBDT05GSUdfREVCVUdfRlMK LS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK