From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konstantin Khlebnikov Subject: [PATCH RFC] openvswitch: add support for netpoll Date: Thu, 23 Apr 2015 18:01:27 +0300 Message-ID: <20150423150127.12697.83460.stgit@buzz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "David S. Miller" To: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org, Pravin Shelar Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org VGhpcyBwYXRjaCBzaW1wbHkgZm9yd2FyZHMgdW5pY2FzdCBuZXRwb2xsIHBhY2tldHMgdmlhIG9u ZSBvZiBwaHlzaWNhbAppbnRlcmZhY2UgaW4gZGF0YXBhdGggZGVwZW5kaW5nIG9uIHNvdXJjZSBt YWMgYWRkcmVzcyBmcm9tIHRoZSBza2IuCgpJdCBzZWVtcyBwb3NzaWJsZSB0byB1c2UgY29tbW9u IG5ldCBmbG93IGNsYXNzaWZpY2F0aW9uIGZvciBuZXRwb2xsIGJ1dAp0aGVyZSBpcyBubyB3YXkg dG8gZ3VhcmFudGVlIHByZXNlbmNlIG9mIHJpZ2h0IGZsb3cgaW4ga2VybmVsIGNhY2hlLgoKU2ln bmVkLW9mZi1ieTogS29uc3RhbnRpbiBLaGxlYm5pa292IDxraGxlYm5pa292QHlhbmRleC10ZWFt LnJ1PgotLS0KIG5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYyB8ICAgNzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5l dGRldi5jICAgICAgIHwgICA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogbmV0L29w ZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5oICAgICAgIHwgICAxNSArKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDE0OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25l dC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYyBiL25ldC9vcGVudnN3aXRjaC92cG9y dC1pbnRlcm5hbF9kZXYuYwppbmRleCA2YTU1ZjcxMDU1MDUuLmQxZWIwOWFjMDllOCAxMDA2NDQK LS0tIGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jCisrKyBiL25ldC9vcGVu dnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg PGxpbnV4L2V0aGVyZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogI2luY2x1 ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L25ldHBvbGwuaD4KIAogI2luY2x1 ZGUgPG5ldC9kc3QuaD4KICNpbmNsdWRlIDxuZXQveGZybS5oPgpAQCAtNjYsMTEgKzY3LDc3IEBA IHN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKmludGVybmFsX2Rldl9nZXRfc3RhdHMo c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRlCiAJcmV0dXJuIHN0YXRzOwogfQogCisjaWZkZWYgQ09O RklHX05FVF9QT0xMX0NPTlRST0xMRVIKKworc3RhdGljIHZvaWQgaW50ZXJuYWxfZGV2X3BvbGxf Y29udHJvbGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworfQorCitzdGF0aWMgc3RydWN0 IG5ldGRldl92cG9ydCAqZ2V0X2xvY2FsX25ldGRldl92cG9ydChzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2KQoreworCXN0cnVjdCBkYXRhcGF0aCAqZHAgPSBpbnRlcm5hbF9kZXZfcHJpdihkZXYpLT52 cG9ydC0+ZHA7CisKKwlyZXR1cm4gbmV0ZGV2X3Zwb3J0X3ByaXYob3ZzX2xvb2t1cF92cG9ydChk cCwgT1ZTUF9MT0NBTCkpOworfQorCitzdGF0aWMgaW50IGludGVybmFsX2Rldl9uZXRwb2xsX3Nl dHVwKHN0cnVjdCBuZXRfZGV2aWNlICppbnRlcm5hbF9kZXYsCisJCQkJICAgICAgc3RydWN0IG5l dHBvbGxfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgbmV0ZGV2X3Zwb3J0ICpsb2NhbCA9IGdldF9s b2NhbF9uZXRkZXZfdnBvcnQoaW50ZXJuYWxfZGV2KTsKKwlzdHJ1Y3QgbmV0ZGV2X3Zwb3J0ICps b3dlcjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOworCWludCByZXQgPSAtRU9QTk9UU1VQUDsK KworCUFTU0VSVF9SVE5MKCk7CisJLyogc3VjY2VlZCBpZiBhdCBsZWFzdCBvbmUgbG93ZXIgZGV2 aWNlIGNhbiBoYW5kbGUgbmV0cG9sbCAqLworCW5ldGRldl9mb3JfZWFjaF9sb3dlcl9wcml2YXRl KGxvY2FsLT5kZXYsIGxvd2VyLCBpdGVyKQorCQlpZiAoIW92c19uZXRkZXZfbmV0cG9sbF9lbmFi bGUobG93ZXIpKQorCQkJcmV0ID0gMDsKKwkvKiBlbmFibGUgbmV0cG9sbCBvbiBsb2NhbCBkZXZp Y2UgYXMgbWFyayBmb3IgbmV3IGRldmljZXMgKi8KKwlpZiAoIXJldCAmJiBsb2NhbC0+ZGV2ICE9 IGludGVybmFsX2RldikKKwkJb3ZzX25ldGRldl9uZXRwb2xsX2VuYWJsZShsb2NhbCk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgaW50ZXJuYWxfZGV2X25ldHBvbGxfY2xlYW51cChz dHJ1Y3QgbmV0X2RldmljZSAqaW50ZXJuYWxfZGV2KQoreworCXN0cnVjdCBuZXRkZXZfdnBvcnQg KmxvY2FsID0gZ2V0X2xvY2FsX25ldGRldl92cG9ydChpbnRlcm5hbF9kZXYpOworCXN0cnVjdCBu ZXRkZXZfdnBvcnQgKmxvd2VyOworCXN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7CisKKwkvKiBGSVhN RSBuZWVkcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIG1vcmUgdGhhbiBvbmUgbmV0cG9sbCBpbiBk cCAqLworCisJQVNTRVJUX1JUTkwoKTsKKwluZXRkZXZfZm9yX2VhY2hfbG93ZXJfcHJpdmF0ZShs b2NhbC0+ZGV2LCBsb3dlciwgaXRlcikKKwkJb3ZzX25ldGRldl9uZXRwb2xsX2Rpc2FibGUobG93 ZXIpOworCW92c19uZXRkZXZfbmV0cG9sbF9kaXNhYmxlKGxvY2FsKTsKK30KKworc3RhdGljIHZv aWQgaW50ZXJuYWxfZGV2X25ldHBvbGxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCSAg ICAgIHN0cnVjdCBuZXRfZGV2aWNlICppbnRlcm5hbF9kZXYpCit7CisJc3RydWN0IG5ldGRldl92 cG9ydCAqbG9jYWwgPSBnZXRfbG9jYWxfbmV0ZGV2X3Zwb3J0KGludGVybmFsX2Rldik7CisJc3Ry dWN0IG5ldGRldl92cG9ydCAqbG93ZXI7CisJc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKKworCW5l dGRldl9mb3JfZWFjaF9sb3dlcl9wcml2YXRlX3JjdShsb2NhbC0+ZGV2LCBsb3dlciwgaXRlcikK KwkJaWYgKCFvdnNfbmV0ZGV2X25ldHBvbGxfc2VuZChsb3dlciwgc2tiKSkKKwkJCXJldHVybjsg LyogVW5pY2FzdCBvbmx5LCBmaXJzdCBnZXRzIGFsbC4gKi8KKwlkZXZfa2ZyZWVfc2tiX2lycShz a2IpOworfQorCisjZW5kaWYgLyogQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVIgKi8KKwogLyog Q2FsbGVkIHdpdGggcmN1X3JlYWRfbG9ja19iaC4gKi8KIHN0YXRpYyBpbnQgaW50ZXJuYWxfZGV2 X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKIHsK IAlyY3VfcmVhZF9sb2NrKCk7Ci0Jb3ZzX3Zwb3J0X3JlY2VpdmUoaW50ZXJuYWxfZGV2X3ByaXYo bmV0ZGV2KS0+dnBvcnQsIHNrYiwgTlVMTCk7CisjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRS T0xMRVIKKwlpZiAodW5saWtlbHkobmV0cG9sbF90eF9ydW5uaW5nKG5ldGRldikpKQorCQlpbnRl cm5hbF9kZXZfbmV0cG9sbF94bWl0KHNrYiwgbmV0ZGV2KTsKKwllbHNlCisjZW5kaWYKKwkJb3Zz X3Zwb3J0X3JlY2VpdmUoaW50ZXJuYWxfZGV2X3ByaXYobmV0ZGV2KS0+dnBvcnQsIHNrYiwgTlVM TCk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIDA7CiB9CkBAIC0xMjIsNiArMTg5LDEx IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaW50ZXJuYWxfZGV2X25ldGRl dl9vcHMgPSB7CiAJLm5kb19zZXRfbWFjX2FkZHJlc3MgPSBldGhfbWFjX2FkZHIsCiAJLm5kb19j aGFuZ2VfbXR1ID0gaW50ZXJuYWxfZGV2X2NoYW5nZV9tdHUsCiAJLm5kb19nZXRfc3RhdHM2NCA9 IGludGVybmFsX2Rldl9nZXRfc3RhdHMsCisjaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xM RVIKKwkubmRvX3BvbGxfY29udHJvbGxlciA9IGludGVybmFsX2Rldl9wb2xsX2NvbnRyb2xsZXIs CisJLm5kb19uZXRwb2xsX3NldHVwID0gaW50ZXJuYWxfZGV2X25ldHBvbGxfc2V0dXAsCisJLm5k b19uZXRwb2xsX2NsZWFudXAgPSBpbnRlcm5hbF9kZXZfbmV0cG9sbF9jbGVhbnVwLAorI2VuZGlm CiB9OwogCiBzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaW50ZXJuYWxfZGV2X2xpbmtfb3Bz IF9fcmVhZF9tb3N0bHkgPSB7CmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0 ZGV2LmMgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMKaW5kZXggNDc3NjI4MmM2NDE3 Li4zMjRmYjA3OGQzMmEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYu YworKysgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMKQEAgLTI2LDYgKzI2LDcgQEAK ICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KICNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4K ICNpbmNsdWRlIDxsaW51eC9vcGVudnN3aXRjaC5oPgorI2luY2x1ZGUgPGxpbnV4L25ldHBvbGwu aD4KIAogI2luY2x1ZGUgPG5ldC9sbGMuaD4KIApAQCAtODYsMTAgKzg3LDU5IEBAIHN0YXRpYyBz dHJ1Y3QgbmV0X2RldmljZSAqZ2V0X2RwZGV2KGNvbnN0IHN0cnVjdCBkYXRhcGF0aCAqZHApCiAJ cmV0dXJuIG5ldGRldl92cG9ydF9wcml2KGxvY2FsKS0+ZGV2OwogfQogCisjaWZkZWYgQ09ORklH X05FVF9QT0xMX0NPTlRST0xMRVIKK2ludCBvdnNfbmV0ZGV2X25ldHBvbGxfZW5hYmxlKHN0cnVj dCBuZXRkZXZfdnBvcnQgKm5ldGRldl92cG9ydCkKK3sKKwlzdHJ1Y3QgbmV0cG9sbCAqbnA7CisJ aW50IGVycjsKKworCWlmIChuZXRkZXZfdnBvcnQtPm5wKQorCQlyZXR1cm4gMDsKKworCW5wID0g a3phbGxvYyhzaXplb2YoKm5wKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFucCkKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwllcnIgPSBfX25ldHBvbGxfc2V0dXAobnAsIG5ldGRldl92cG9ydC0+ZGV2KTsK KwlpZiAoZXJyKQorCQlrZnJlZShucCk7CisJZWxzZQorCQluZXRkZXZfdnBvcnQtPm5wID0gbnA7 CisJcmV0dXJuIGVycjsKK30KKwordm9pZCBvdnNfbmV0ZGV2X25ldHBvbGxfZGlzYWJsZShzdHJ1 Y3QgbmV0ZGV2X3Zwb3J0ICpuZXRkZXZfdnBvcnQpCit7CisJc3RydWN0IG5ldHBvbGwgKm5wID0g bmV0ZGV2X3Zwb3J0LT5ucDsKKworCWlmIChucCkgeworCQluZXRkZXZfdnBvcnQtPm5wID0gTlVM TDsKKwkJX19uZXRwb2xsX2ZyZWVfYXN5bmMobnApOworCX0KK30KKworaW50IG92c19uZXRkZXZf bmV0cG9sbF9zZW5kKHN0cnVjdCBuZXRkZXZfdnBvcnQgKm5ldGRldl92cG9ydCwKKwkJCSAgICBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCBldGhoZHIgKmV0aCA9IChzdHJ1Y3QgZXRo aGRyICopc2tiLT5kYXRhOworCisJaWYgKCFuZXRkZXZfdnBvcnQtPm5wKQorCQlyZXR1cm4gLUVP UE5PVFNVUFA7CisKKwlpZiAoIWV0aGVyX2FkZHJfZXF1YWwoZXRoLT5oX3NvdXJjZSwgbmV0ZGV2 X3Zwb3J0LT5kZXYtPmRldl9hZGRyKSkKKwkJcmV0dXJuIC1FWERFVjsgIC8qIE5vdCBvdXJzICov CisKKwlza2ItPmRldiA9IG5ldGRldl92cG9ydC0+ZGV2OworCW5ldHBvbGxfc2VuZF9za2Jfb25f ZGV2KG5ldGRldl92cG9ydC0+bnAsIHNrYiwgbmV0ZGV2X3Zwb3J0LT5kZXYpOworCXJldHVybiAw OworfQorI2VuZGlmIC8qIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSICovCisKIHN0YXRpYyBz dHJ1Y3QgdnBvcnQgKm5ldGRldl9jcmVhdGUoY29uc3Qgc3RydWN0IHZwb3J0X3Bhcm1zICpwYXJt cykKIHsKIAlzdHJ1Y3QgdnBvcnQgKnZwb3J0OwogCXN0cnVjdCBuZXRkZXZfdnBvcnQgKm5ldGRl dl92cG9ydDsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqZHBkZXY7CiAJaW50IGVycjsKIAogCXZwb3J0 ID0gb3ZzX3Zwb3J0X2FsbG9jKHNpemVvZihzdHJ1Y3QgbmV0ZGV2X3Zwb3J0KSwKQEAgLTExNSwx MSArMTY1LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgdnBvcnQgKm5ldGRldl9jcmVhdGUoY29uc3Qgc3Ry dWN0IHZwb3J0X3Bhcm1zICpwYXJtcykKIAl9CiAKIAlydG5sX2xvY2soKTsKLQllcnIgPSBuZXRk ZXZfbWFzdGVyX3VwcGVyX2Rldl9saW5rKG5ldGRldl92cG9ydC0+ZGV2LAotCQkJCQkgICBnZXRf ZHBkZXYodnBvcnQtPmRwKSk7CisJY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9KT0lO LCBuZXRkZXZfdnBvcnQtPmRldik7CisJZHBkZXYgPSBnZXRfZHBkZXYodnBvcnQtPmRwKTsKKwll cnIgPSBuZXRkZXZfbWFzdGVyX3VwcGVyX2Rldl9saW5rX3ByaXZhdGUobmV0ZGV2X3Zwb3J0LT5k ZXYsCisJCQkJCQkgICBkcGRldiwgbmV0ZGV2X3Zwb3J0KTsKIAlpZiAoZXJyKQogCQlnb3RvIGVy cm9yX3VubG9jazsKIAorCWlmIChkcGRldi0+bnBpbmZvKQorCQlvdnNfbmV0ZGV2X25ldHBvbGxf ZW5hYmxlKG5ldGRldl92cG9ydCk7CisKIAllcnIgPSBuZXRkZXZfcnhfaGFuZGxlcl9yZWdpc3Rl cihuZXRkZXZfdnBvcnQtPmRldiwgbmV0ZGV2X2ZyYW1lX2hvb2ssCiAJCQkJCSB2cG9ydCk7CiAJ aWYgKGVycikKQEAgLTEzMiw3ICsxODcsOCBAQCBzdGF0aWMgc3RydWN0IHZwb3J0ICpuZXRkZXZf Y3JlYXRlKGNvbnN0IHN0cnVjdCB2cG9ydF9wYXJtcyAqcGFybXMpCiAJcmV0dXJuIHZwb3J0Owog CiBlcnJvcl9tYXN0ZXJfdXBwZXJfZGV2X3VubGluazoKLQluZXRkZXZfdXBwZXJfZGV2X3VubGlu ayhuZXRkZXZfdnBvcnQtPmRldiwgZ2V0X2RwZGV2KHZwb3J0LT5kcCkpOworCW92c19uZXRkZXZf bmV0cG9sbF9kaXNhYmxlKG5ldGRldl92cG9ydCk7CisJbmV0ZGV2X3VwcGVyX2Rldl91bmxpbmso bmV0ZGV2X3Zwb3J0LT5kZXYsIGRwZGV2KTsKIGVycm9yX3VubG9jazoKIAlydG5sX3VubG9jaygp OwogZXJyb3JfcHV0OgpAQCAtMTU5LDYgKzIxNSw3IEBAIHZvaWQgb3ZzX25ldGRldl9kZXRhY2hf ZGV2KHN0cnVjdCB2cG9ydCAqdnBvcnQpCiAJQVNTRVJUX1JUTkwoKTsKIAluZXRkZXZfdnBvcnQt PmRldi0+cHJpdl9mbGFncyAmPSB+SUZGX09WU19EQVRBUEFUSDsKIAluZXRkZXZfcnhfaGFuZGxl cl91bnJlZ2lzdGVyKG5ldGRldl92cG9ydC0+ZGV2KTsKKwlvdnNfbmV0ZGV2X25ldHBvbGxfZGlz YWJsZShuZXRkZXZfdnBvcnQpOwogCW5ldGRldl91cHBlcl9kZXZfdW5saW5rKG5ldGRldl92cG9y dC0+ZGV2LAogCQkJCW5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2dldChuZXRkZXZfdnBvcnQtPmRl dikpOwogCWRldl9zZXRfcHJvbWlzY3VpdHkobmV0ZGV2X3Zwb3J0LT5kZXYsIC0xKTsKZGlmZiAt LWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuaCBiL25ldC9vcGVudnN3aXRjaC92 cG9ydC1uZXRkZXYuaAppbmRleCA2ZjcwMzhlNzljNTIuLmE5MDg1NTIyZDczYyAxMDA2NDQKLS0t IGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5oCisrKyBiL25ldC9vcGVudnN3aXRjaC92 cG9ydC1uZXRkZXYuaApAQCAtMzAsNiArMzAsOSBAQCBzdHJ1Y3QgbmV0ZGV2X3Zwb3J0IHsKIAlz dHJ1Y3QgcmN1X2hlYWQgcmN1OwogCiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKKyNpZmRlZiBD T05GSUdfTkVUX1BPTExfQ09OVFJPTExFUgorCXN0cnVjdCBuZXRwb2xsICpucDsKKyNlbmRpZgog fTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0ZGV2X3Zwb3J0ICoKQEAgLTQ0LDQgKzQ3LDE2 IEBAIHZvaWQgb3ZzX25ldGRldl9kZXRhY2hfZGV2KHN0cnVjdCB2cG9ydCAqKTsKIGludCBfX2lu aXQgb3ZzX25ldGRldl9pbml0KHZvaWQpOwogdm9pZCBvdnNfbmV0ZGV2X2V4aXQodm9pZCk7CiAK KyNpZmRlZiBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUgoraW50IG92c19uZXRkZXZfbmV0cG9s bF9lbmFibGUoc3RydWN0IG5ldGRldl92cG9ydCAqKTsKK3ZvaWQgb3ZzX25ldGRldl9uZXRwb2xs X2Rpc2FibGUoc3RydWN0IG5ldGRldl92cG9ydCAqKTsKK2ludCBvdnNfbmV0ZGV2X25ldHBvbGxf c2VuZChzdHJ1Y3QgbmV0ZGV2X3Zwb3J0ICosIHN0cnVjdCBza19idWZmICopOworI2Vsc2UKK3N0 YXRpYyBpbmxpbmUgaW50IG92c19uZXRkZXZfbmV0cG9sbF9lbmFibGUoc3RydWN0IG5ldGRldl92 cG9ydCAqbnYpCit7CisJcmV0dXJuIC1FT1BOT1RTVVBQOworfQorc3RhdGljIGlubGluZSB2b2lk IG92c19uZXRkZXZfbmV0cG9sbF9kaXNhYmxlKHN0cnVjdCBuZXRkZXZfdnBvcnQgKm52KSB7IH0K KyNlbmRpZgorCiAjZW5kaWYgLyogdnBvcnRfbmV0ZGV2LmggKi8KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldiBtYWlsaW5nIGxpc3QKZGV2QG9wZW52 c3dpdGNoLm9yZwpodHRwOi8vb3BlbnZzd2l0Y2gub3JnL21haWxtYW4vbGlzdGluZm8vZGV2Cg==