From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno Alvisio Subject: [PATCH RFC 15/16] Save/Restore Support: Add suspend/restore support for netfront Date: Tue, 19 Dec 2017 15:42:10 -0800 Message-ID: <1513726931-7516-16-git-send-email-bruno.alvisio@gmail.com> References: <1513726931-7516-1-git-send-email-bruno.alvisio@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eRRYk-0005Kd-JU for xen-devel@lists.xenproject.org; Tue, 19 Dec 2017 23:44:30 +0000 In-Reply-To: <1513726931-7516-1-git-send-email-bruno.alvisio@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, samuel.thibault@ens-lyon.org, wei.liu2@citrix.com, Bruno Alvisio List-Id: xen-devel@lists.xenproject.org UGVyZm9ybWVkIGFuIGFkZGl0aW9uYWwgY2xlYW51cCB0byBtYWtlIHRoZSBmaWxlIG1vcmUgc3lu dGFjdGljYWxseSBjb25zaXN0ZW50LgoKU2lnbmVkLW9mZi1ieTogQnJ1bm8gQWx2aXNpbyA8YnJ1 bm8uYWx2aXNpb0BnbWFpbC5jb20+Ci0tLQogaW5jbHVkZS9uZXRmcm9udC5oIHwgICA4ICstCiBr ZXJuZWwuYyAgICAgICAgICAgfCAgIDggKysKIG5ldGZyb250LmMgICAgICAgICB8IDI0MiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9uZXRmcm9udC5oIGIvaW5jbHVkZS9uZXRmcm9udC5oCmluZGV4IDJiOTVkYTku LjExNjRkNTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0ZnJvbnQuaAorKysgYi9pbmNsdWRlL25l dGZyb250LmgKQEAgLTMsOSArMywxNSBAQAogI2luY2x1ZGUgPGx3aXAvbmV0aWYuaD4KICNlbmRp Zgogc3RydWN0IG5ldGZyb250X2RldjsKLXN0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0ZnJv bnQoY2hhciAqbm9kZW5hbWUsIHZvaWQgKCpuZXRpZl9yeCkodW5zaWduZWQgY2hhciAqZGF0YSwg aW50IGxlbiksIHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLCBjaGFyICoqaXApOworc3RydWN0IG5l dGZyb250X2RldiAqaW5pdF9uZXRmcm9udChjaGFyICpub2RlbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm5ldGlmX3J4KSh1bnNpZ25lZCBjaGFyICpkYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBsZW4sIHZvaWQqIGFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgcmF3bWFjWzZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICoqaXApOwogdm9pZCBuZXRmcm9udF94bWl0KHN0cnVjdCBuZXRmcm9udF9kZXYgKmRl diwgdW5zaWduZWQgY2hhciogZGF0YSxpbnQgbGVuKTsKIHZvaWQgc2h1dGRvd25fbmV0ZnJvbnQo c3RydWN0IG5ldGZyb250X2RldiAqZGV2KTsKK3ZvaWQgc3VzcGVuZF9uZXRmcm9udCh2b2lkKTsK K3ZvaWQgcmVzdW1lX25ldGZyb250KHZvaWQpOwogI2lmZGVmIEhBVkVfTElCQwogaW50IG5ldGZy b250X3RhcF9vcGVuKGNoYXIgKm5vZGVuYW1lKTsKIHNzaXplX3QgbmV0ZnJvbnRfcmVjZWl2ZShz dHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4p OwpkaWZmIC0tZ2l0IGEva2VybmVsLmMgYi9rZXJuZWwuYwppbmRleCBiYzIzOTRmLi44MDU1Mzll IDEwMDY0NAotLS0gYS9rZXJuZWwuYworKysgYi9rZXJuZWwuYwpAQCAtMTE5LDYgKzExOSwxMCBA QCB2b2lkIHN0YXJ0X2tlcm5lbCh2b2lkKiBwYXIpCiAKIHZvaWQgcHJlX3N1c3BlbmQodm9pZCkK IHsKKyNpZmRlZiBDT05GSUdfTkVURlJPTlQKKyAgICBzdXNwZW5kX25ldGZyb250KCk7CisjZW5k aWYKKwogI2lmZGVmIENPTkZJR19YRU5CVVMKICAgICBzdXNwZW5kX3hlbmJ1cygpOwogI2VuZGlm CkBAIC0xNDcsNiArMTUxLDEwIEBAIHZvaWQgcG9zdF9zdXNwZW5kKGludCBjYW5jZWxlZCkKICNp ZmRlZiBDT05GSUdfWEVOQlVTCiAgICAgcmVzdW1lX3hlbmJ1cyhjYW5jZWxlZCk7CiAjZW5kaWYK KworI2lmZGVmIENPTkZJR19ORVRGUk9OVAorICAgIHJlc3VtZV9uZXRmcm9udCgpOworI2VuZGlm CiB9CiAKIHZvaWQgc3RvcF9rZXJuZWwodm9pZCkKZGlmZiAtLWdpdCBhL25ldGZyb250LmMgYi9u ZXRmcm9udC5jCmluZGV4IGI4ZmFjNjIuLjlhZWY0MmIgMTAwNjQ0Ci0tLSBhL25ldGZyb250LmMK KysrIGIvbmV0ZnJvbnQuYwpAQCAtNjMsMTAgKzYzLDI5IEBAIHN0cnVjdCBuZXRmcm9udF9kZXYg ewogICAgIHNpemVfdCBybGVuOwogI2VuZGlmCiAKLSAgICB2b2lkICgqbmV0aWZfcngpKHVuc2ln bmVkIGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgIHZvaWQgKCpuZXRpZl9yeCkodW5zaWduZWQg Y2hhciogZGF0YSwgaW50IGxlbiwgdm9pZCogYXJnKTsKKyAgICB2b2lkICpuZXRpZl9yeF9hcmc7 CiB9OwogCitzdHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgeworCXN0cnVjdCBuZXRmcm9udF9kZXYg KmRldjsKKwl1bnNpZ25lZCBjaGFyIHJhd21hY1s2XTsKKwljaGFyICppcDsKKworCWludCByZWZj b3VudDsKKworCXN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCAqbmV4dDsKK307CisKK3N0YXRpYyBz dHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgKmRldl9saXN0ID0gTlVMTDsKKwogdm9pZCBpbml0X3J4 X2J1ZmZlcnMoc3RydWN0IG5ldGZyb250X2RldiAqZGV2KTsKK3N0YXRpYyBzdHJ1Y3QgbmV0ZnJv bnRfZGV2ICpfaW5pdF9uZXRmcm9udChzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYsCisJCQkJCSAg IHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLCBjaGFyICoqaXApOworc3RhdGljIHZvaWQgX3NodXRk b3duX25ldGZyb250KHN0cnVjdCBuZXRmcm9udF9kZXYgKmRldik7Cit2b2lkIG5ldGZyb250X3Nl dF9yeF9oYW5kbGVyKHN0cnVjdCBuZXRmcm9udF9kZXYgKmRldiwKKwkJCSAgICAgICAgICAgICAg ICAgdm9pZCAoKnRoZW5ldGlmX3J4KSh1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgbGVuLAorCQkJ ICAgICAgICAgICAgICAgICB2b2lkICphcmcpLCB2b2lkICphcmcpOwogCiBzdGF0aWMgaW5saW5l IHZvaWQgYWRkX2lkX3RvX2ZyZWVsaXN0KHVuc2lnbmVkIGludCBpZCx1bnNpZ25lZCBzaG9ydCog ZnJlZWxpc3QpCiB7CkBAIC04MSw3ICsxMDAsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNo b3J0IGdldF9pZF9mcm9tX2ZyZWVsaXN0KHVuc2lnbmVkIHNob3J0KiBmcmVlbGlzdCkKICAgICBy ZXR1cm4gaWQ7CiB9CiAKLV9fYXR0cmlidXRlX18oKHdlYWspKSB2b2lkIG5ldGlmX3J4KHVuc2ln bmVkIGNoYXIqIGRhdGEsaW50IGxlbikKK19fYXR0cmlidXRlX18oKHdlYWspKSB2b2lkIG5ldGlm X3J4KHVuc2lnbmVkIGNoYXIqIGRhdGEsIGludCBsZW4sIHZvaWQgKmFyZykKIHsKICAgICBwcmlu dGsoIiVkIGJ5dGVzIGluY29taW5nIGF0ICVwXG4iLGxlbixkYXRhKTsKIH0KQEAgLTEzNCw3ICsx NTMsNyBAQCBtb3JldG9kbzoKIAkJZG9icmVhayA9IDE7CiAJICAgIH0gZWxzZQogI2VuZGlmCi0J CWRldi0+bmV0aWZfcngocGFnZStyeC0+b2Zmc2V0LHJ4LT5zdGF0dXMpOworCQlkZXYtPm5ldGlm X3J4KHBhZ2UrcngtPm9mZnNldCwgcngtPnN0YXR1cywgZGV2LT5uZXRpZl9yeF9hcmcpOwogICAg ICAgICB9CiAgICAgfQogICAgIGRldi0+cngucnNwX2NvbnM9Y29uczsKQEAgLTI4MiwxOSArMzAx LDE2IEBAIHN0YXRpYyB2b2lkIGZyZWVfbmV0ZnJvbnQoc3RydWN0IG5ldGZyb250X2RldiAqZGV2 KQogICAgIGZyZWUoZGV2KTsKIH0KIAotc3RydWN0IG5ldGZyb250X2RldiAqaW5pdF9uZXRmcm9u dChjaGFyICpfbm9kZW5hbWUsIHZvaWQgKCp0aGVuZXRpZl9yeCkodW5zaWduZWQgY2hhciogZGF0 YSwgaW50IGxlbiksIHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLCBjaGFyICoqaXApCitzdHJ1Y3Qg bmV0ZnJvbnRfZGV2ICppbml0X25ldGZyb250KGNoYXIgKl9ub2RlbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnRoZW5ldGlmX3J4KSh1bnNpZ25lZCBjaGFy KiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBsZW4sIHZvaWQqIGFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFyICoqaXApCiB7Ci0gICAgeGVuYnVzX3RyYW5zYWN0aW9uX3QgeGJ0Owot ICAgIGNoYXIqIGVycjsKLSAgICBjaGFyKiBtZXNzYWdlPU5VTEw7Ci0gICAgc3RydWN0IG5ldGlm X3R4X3NyaW5nICp0eHM7Ci0gICAgc3RydWN0IG5ldGlmX3J4X3NyaW5nICpyeHM7Ci0gICAgaW50 IHJldHJ5PTA7Ci0gICAgaW50IGk7Ci0gICAgY2hhciogbXNnID0gTlVMTDsKICAgICBjaGFyIG5v ZGVuYW1lWzI1Nl07Ci0gICAgY2hhciBwYXRoWzI1Nl07CiAgICAgc3RydWN0IG5ldGZyb250X2Rl diAqZGV2OworICAgIHN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCAqbGRldiA9IE5VTEw7CisgICAg c3RydWN0IG5ldGZyb250X2Rldl9saXN0ICpsaXN0ID0gTlVMTDsKICAgICBzdGF0aWMgaW50IG5l dGZyb250ZW5kcyA9IDA7CiAKICAgICBpZiAoIV9ub2RlbmFtZSkKQEAgLTMwMywxMCArMzE5LDIw IEBAIHN0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0ZnJvbnQoY2hhciAqX25vZGVuYW1lLCB2 b2lkICgqdGhlbmV0aWZfcngpKHVuc2lnbmVkCiAgICAgICAgIHN0cm5jcHkobm9kZW5hbWUsIF9u b2RlbmFtZSwgc2l6ZW9mKG5vZGVuYW1lKSAtIDEpOwogICAgICAgICBub2RlbmFtZVtzaXplb2Yo bm9kZW5hbWUpIC0gMV0gPSAwOwogICAgIH0KLSAgICBuZXRmcm9udGVuZHMrKzsKKworICAgIC8q IENoZWNrIGlmIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAqLworICAgIGZvciAo bGlzdCA9IGRldl9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisgICAg ICAgIGlmIChzdHJjbXAobm9kZW5hbWUsIGxpc3QtPmRldi0+bm9kZW5hbWUpID09IDApIHsKKyAg ICAgICAgICAgIGxpc3QtPnJlZmNvdW50Kys7CisgICAgICAgICAgICBkZXYgPSBsaXN0LT5kZXY7 CisgICAgICAgICAgICBpZiAodGhlbmV0aWZfcngpCisgICAgICAgICAgICAgICAgbmV0ZnJvbnRf c2V0X3J4X2hhbmRsZXIoZGV2LCB0aGVuZXRpZl9yeCwgTlVMTCk7CisgICAgICAgICAgICBnb3Rv IG91dDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICghdGhlbmV0aWZfcngpCi0JdGhlbmV0 aWZfcnggPSBuZXRpZl9yeDsKKyAgICAgICAgdGhlbmV0aWZfcnggPSBuZXRpZl9yeDsKIAogICAg IHByaW50aygiKioqKioqKioqKioqKioqKioqKioqKioqIE5FVEZST05UIGZvciAlcyAqKioqKioq KioqXG5cblxuIiwgbm9kZW5hbWUpOwogCkBAIC0zMTYsMjMgKzM0Miw3NyBAQCBzdHJ1Y3QgbmV0 ZnJvbnRfZGV2ICppbml0X25ldGZyb250KGNoYXIgKl9ub2RlbmFtZSwgdm9pZCAoKnRoZW5ldGlm X3J4KSh1bnNpZ25lZAogI2lmZGVmIEhBVkVfTElCQwogICAgIGRldi0+ZmQgPSAtMTsKICNlbmRp ZgorICAgIGRldi0+bmV0aWZfcnggPSB0aGVuZXRpZl9yeDsKKworICAgIGxkZXYgPSBtYWxsb2Mo c2l6ZW9mKHN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCkpOworICAgIG1lbXNldChsZGV2LCAwLCBz aXplb2Yoc3RydWN0IG5ldGZyb250X2Rldl9saXN0KSk7CisKKyAgICBpZiAoX2luaXRfbmV0ZnJv bnQoZGV2LCBsZGV2LT5yYXdtYWMsICYobGRldi0+aXApKSkgeworCSAgICBsZGV2LT5kZXYgPSBk ZXY7CisJCWxkZXYtPnJlZmNvdW50ID0gMTsKKwkJbGRldi0+bmV4dCA9IE5VTEw7CisKKwkJaWYg KCFkZXZfbGlzdCkgeworICAgICAgICAgICAgZGV2X2xpc3QgPSBsZGV2OworCQl9IGVsc2Ugewor ICAgICAgICAgICAgZm9yIChsaXN0ID0gZGV2X2xpc3Q7IGxpc3QtPm5leHQgIT0gTlVMTDsgbGlz dCA9IGxpc3QtPm5leHQpOworICAgICAgICAgICAgbGlzdC0+bmV4dCA9IGxkZXY7CisJCX0KKyAg ICAgICAgbmV0ZnJvbnRlbmRzKys7CisJfSBlbHNlIHsKKyAgICAgICAgZnJlZShkZXYtPm5vZGVu YW1lKTsKKyAgICAgICAgZnJlZShkZXYpOworICAgICAgICBmcmVlKGxkZXYpOworICAgICAgICBk ZXYgPSBOVUxMOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKK291dDoKKyAgICBpZiAocmF3 bWFjKSB7CisgICAgICAgIHJhd21hY1swXSA9IGxkZXYtPnJhd21hY1swXTsKKyAgICAgICAgcmF3 bWFjWzFdID0gbGRldi0+cmF3bWFjWzFdOworICAgICAgICByYXdtYWNbMl0gPSBsZGV2LT5yYXdt YWNbMl07CisgICAgICAgIHJhd21hY1szXSA9IGxkZXYtPnJhd21hY1szXTsKKyAgICAgICAgcmF3 bWFjWzRdID0gbGRldi0+cmF3bWFjWzRdOworICAgICAgICByYXdtYWNbNV0gPSBsZGV2LT5yYXdt YWNbNV07CisJfQorICAgIGlmIChpcCkgeworCSAgICAqaXAgPSBtYWxsb2Moc3RybGVuKGxkZXYt PmlwKSArIDEpOworCSAgICBzdHJuY3B5KCppcCwgbGRldi0+aXAsIHN0cmxlbihsZGV2LT5pcCkg KyAxKTsKKyAgICB9CisKK2VycjoKKyAgICByZXR1cm4gZGV2OworfQorCitzdGF0aWMgc3RydWN0 IG5ldGZyb250X2RldiAqX2luaXRfbmV0ZnJvbnQoc3RydWN0IG5ldGZyb250X2RldiAqZGV2LAor CQkJCQkgICB1bnNpZ25lZCBjaGFyIHJhd21hY1s2XSwKKwkJCQkJICAgY2hhciAqKmlwKQorewor ICAgIHhlbmJ1c190cmFuc2FjdGlvbl90IHhidDsKKyAgICBjaGFyKiBlcnIgPSBOVUxMOworICAg IGNoYXIqIG1lc3NhZ2U9TlVMTDsKKyAgICBzdHJ1Y3QgbmV0aWZfdHhfc3JpbmcgKnR4czsKKyAg ICBzdHJ1Y3QgbmV0aWZfcnhfc3JpbmcgKnJ4czsKKyAgICBjaGFyKiBtc2cgPSBOVUxMOworICAg IGludCByZXRyeT0wOworICAgIGludCBpOworICAgIGNoYXIgcGF0aFsyNTZdOwogCiAgICAgcHJp bnRrKCJuZXQgVFggcmluZyBzaXplICVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIE5FVF9UWF9SSU5H X1NJWkUpOwogICAgIHByaW50aygibmV0IFJYIHJpbmcgc2l6ZSAlbHVcbiIsICh1bnNpZ25lZCBs b25nKSBORVRfUlhfUklOR19TSVpFKTsKICAgICBpbml0X1NFTUFQSE9SRSgmZGV2LT50eF9zZW0s IE5FVF9UWF9SSU5HX1NJWkUpOwotICAgIGZvcihpPTA7aTxORVRfVFhfUklOR19TSVpFO2krKykK LSAgICB7Ci0JYWRkX2lkX3RvX2ZyZWVsaXN0KGksZGV2LT50eF9mcmVlbGlzdCk7CisgICAgZm9y IChpID0gMDsgaSA8IE5FVF9UWF9SSU5HX1NJWkU7IGkrKykgeworCSAgICBhZGRfaWRfdG9fZnJl ZWxpc3QoaSxkZXYtPnR4X2ZyZWVsaXN0KTsKICAgICAgICAgZGV2LT50eF9idWZmZXJzW2ldLnBh Z2UgPSBOVUxMOwogICAgIH0KIAotICAgIGZvcihpPTA7aTxORVRfUlhfUklOR19TSVpFO2krKykK LSAgICB7Ci0JLyogVE9ETzogdGhhdCdzIGEgbG90IG9mIG1lbW9yeSAqLworICAgIGZvciAoaSA9 IDA7IGkgPCBORVRfUlhfUklOR19TSVpFOyBpKyspIHsKKwkgICAgLyogVE9ETzogdGhhdCdzIGEg bG90IG9mIG1lbW9yeSAqLwogICAgICAgICBkZXYtPnJ4X2J1ZmZlcnNbaV0ucGFnZSA9IChjaGFy KilhbGxvY19wYWdlKCk7CiAgICAgfQogCi0gICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgp LCAiJXMvYmFja2VuZC1pZCIsIG5vZGVuYW1lKTsKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2Yo cGF0aCksICIlcy9iYWNrZW5kLWlkIiwgZGV2LT5ub2RlbmFtZSk7CiAgICAgZGV2LT5kb20gPSB4 ZW5idXNfcmVhZF9pbnRlZ2VyKHBhdGgpOwogI2lmZGVmIEhBVkVfTElCQwogICAgIGlmICh0aGVu ZXRpZl9yeCA9PSBORVRJRl9TRUxFQ1RfUlgpCkBAIC0zNDMsMjIgKzQyMywxOSBAQCBzdHJ1Y3Qg bmV0ZnJvbnRfZGV2ICppbml0X25ldGZyb250KGNoYXIgKl9ub2RlbmFtZSwgdm9pZCAoKnRoZW5l dGlmX3J4KSh1bnNpZ25lZAogCiAgICAgdHhzID0gKHN0cnVjdCBuZXRpZl90eF9zcmluZyAqKSBh bGxvY19wYWdlKCk7CiAgICAgcnhzID0gKHN0cnVjdCBuZXRpZl9yeF9zcmluZyAqKSBhbGxvY19w YWdlKCk7Ci0gICAgbWVtc2V0KHR4cywwLFBBR0VfU0laRSk7Ci0gICAgbWVtc2V0KHJ4cywwLFBB R0VfU0laRSk7Ci0KKyAgICBtZW1zZXQodHhzLCAwLCBQQUdFX1NJWkUpOworICAgIG1lbXNldChy eHMsIDAsIFBBR0VfU0laRSk7CiAKICAgICBTSEFSRURfUklOR19JTklUKHR4cyk7CiAgICAgU0hB UkVEX1JJTkdfSU5JVChyeHMpOwogICAgIEZST05UX1JJTkdfSU5JVCgmZGV2LT50eCwgdHhzLCBQ QUdFX1NJWkUpOwogICAgIEZST05UX1JJTkdfSU5JVCgmZGV2LT5yeCwgcnhzLCBQQUdFX1NJWkUp OwogCi0gICAgZGV2LT50eF9yaW5nX3JlZiA9IGdudHRhYl9ncmFudF9hY2Nlc3MoZGV2LT5kb20s dmlydF90b19tZm4odHhzKSwwKTsKLSAgICBkZXYtPnJ4X3JpbmdfcmVmID0gZ250dGFiX2dyYW50 X2FjY2VzcyhkZXYtPmRvbSx2aXJ0X3RvX21mbihyeHMpLDApOworICAgIGRldi0+dHhfcmluZ19y ZWYgPSBnbnR0YWJfZ3JhbnRfYWNjZXNzKGRldi0+ZG9tLCB2aXJ0X3RvX21mbih0eHMpLCAwKTsK KyAgICBkZXYtPnJ4X3JpbmdfcmVmID0gZ250dGFiX2dyYW50X2FjY2VzcyhkZXYtPmRvbSwgdmly dF90b19tZm4ocnhzKSwgMCk7CiAKICAgICBpbml0X3J4X2J1ZmZlcnMoZGV2KTsKIAotICAgIGRl di0+bmV0aWZfcnggPSB0aGVuZXRpZl9yeDsKLQogICAgIGRldi0+ZXZlbnRzID0gTlVMTDsKIAog YWdhaW46CkBAIC0zNjgsMzMgKzQ0NSwzMSBAQCBhZ2FpbjoKICAgICAgICAgZnJlZShlcnIpOwog ICAgIH0KIAotICAgIGVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBub2RlbmFtZSwgInR4LXJpbmct cmVmIiwiJXUiLAotICAgICAgICAgICAgICAgIGRldi0+dHhfcmluZ19yZWYpOworICAgIGVyciA9 IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAidHgtcmluZy1yZWYiLCIldSIsCisg ICAgICAgICAgICAgICAgICAgICAgICBkZXYtPnR4X3JpbmdfcmVmKTsKICAgICBpZiAoZXJyKSB7 CiAgICAgICAgIG1lc3NhZ2UgPSAid3JpdGluZyB0eCByaW5nLXJlZiI7CiAgICAgICAgIGdvdG8g YWJvcnRfdHJhbnNhY3Rpb247CiAgICAgfQotICAgIGVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBu b2RlbmFtZSwgInJ4LXJpbmctcmVmIiwiJXUiLAotICAgICAgICAgICAgICAgIGRldi0+cnhfcmlu Z19yZWYpOworICAgIGVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAicngt cmluZy1yZWYiLCIldSIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPnJ4X3JpbmdfcmVm KTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIG1lc3NhZ2UgPSAid3JpdGluZyByeCByaW5nLXJl ZiI7CiAgICAgICAgIGdvdG8gYWJvcnRfdHJhbnNhY3Rpb247CiAgICAgfQotICAgIGVyciA9IHhl bmJ1c19wcmludGYoeGJ0LCBub2RlbmFtZSwKLSAgICAgICAgICAgICAgICAiZXZlbnQtY2hhbm5l bCIsICIldSIsIGRldi0+ZXZ0Y2huKTsKKyAgICBlcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2 LT5ub2RlbmFtZSwgImV2ZW50LWNoYW5uZWwiLCAiJXUiLCBkZXYtPmV2dGNobik7CiAgICAgaWYg KGVycikgewogICAgICAgICBtZXNzYWdlID0gIndyaXRpbmcgZXZlbnQtY2hhbm5lbCI7CiAgICAg ICAgIGdvdG8gYWJvcnRfdHJhbnNhY3Rpb247CiAgICAgfQogCi0gICAgZXJyID0geGVuYnVzX3By aW50Zih4YnQsIG5vZGVuYW1lLCAicmVxdWVzdC1yeC1jb3B5IiwgIiV1IiwgMSk7Ci0KKyAgICBl cnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgInJlcXVlc3QtcngtY29weSIs ICIldSIsIDEpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgbWVzc2FnZSA9ICJ3cml0aW5nIHJl cXVlc3QtcngtY29weSI7CiAgICAgICAgIGdvdG8gYWJvcnRfdHJhbnNhY3Rpb247CiAgICAgfQog Ci0gICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvc3RhdGUiLCBub2RlbmFtZSk7 CisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvc3RhdGUiLCBkZXYtPm5vZGVu YW1lKTsKICAgICBlcnIgPSB4ZW5idXNfc3dpdGNoX3N0YXRlKHhidCwgcGF0aCwgWGVuYnVzU3Rh dGVDb25uZWN0ZWQpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgbWVzc2FnZSA9ICJzd2l0Y2hp bmcgc3RhdGUiOwpAQCAtNDA0LDcgKzQ3OSw3IEBAIGFnYWluOgogICAgIGVyciA9IHhlbmJ1c190 cmFuc2FjdGlvbl9lbmQoeGJ0LCAwLCAmcmV0cnkpOwogICAgIGZyZWUoZXJyKTsKICAgICBpZiAo cmV0cnkpIHsKLSAgICAgICAgICAgIGdvdG8gYWdhaW47CisgICAgICAgIGdvdG8gYWdhaW47CiAg ICAgICAgIHByaW50aygiY29tcGxldGluZyB0cmFuc2FjdGlvblxuIik7CiAgICAgfQogCkBAIC00 MTcsMTAgKzQ5Miw5IEBAIGFib3J0X3RyYW5zYWN0aW9uOgogICAgIGdvdG8gZXJyb3I7CiAKIGRv bmU6Ci0KLSAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9iYWNrZW5kIiwgbm9k ZW5hbWUpOworICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzL2JhY2tlbmQiLCBk ZXYtPm5vZGVuYW1lKTsKICAgICBtc2cgPSB4ZW5idXNfcmVhZChYQlRfTklMLCBwYXRoLCAmZGV2 LT5iYWNrZW5kKTsKLSAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9tYWMiLCBu b2RlbmFtZSk7CisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvbWFjIiwgZGV2 LT5ub2RlbmFtZSk7CiAgICAgbXNnID0geGVuYnVzX3JlYWQoWEJUX05JTCwgcGF0aCwgJmRldi0+ bWFjKTsKIAogICAgIGlmICgoZGV2LT5iYWNrZW5kID09IE5VTEwpIHx8IChkZXYtPm1hYyA9PSBO VUxMKSkgewpAQCAtNDI4LDggKzUwMiw4IEBAIGRvbmU6CiAgICAgICAgIGdvdG8gZXJyb3I7CiAg ICAgfQogCi0gICAgcHJpbnRrKCJiYWNrZW5kIGF0ICVzXG4iLGRldi0+YmFja2VuZCk7Ci0gICAg cHJpbnRrKCJtYWMgaXMgJXNcbiIsZGV2LT5tYWMpOworICAgIHByaW50aygiYmFja2VuZCBhdCAl c1xuIiwgZGV2LT5iYWNrZW5kKTsKKyAgICBwcmludGsoIm1hYyBpcyAlc1xuIiwgZGV2LT5tYWMp OwogCiAgICAgewogICAgICAgICBYZW5idXNTdGF0ZSBzdGF0ZTsKQEAgLTQ1OCwxOCArNTMyLDIw IEBAIGRvbmU6CiAKICAgICB1bm1hc2tfZXZ0Y2huKGRldi0+ZXZ0Y2huKTsKIAotICAgICAgICAv KiBTcGVjaWFsIGNvbnZlcnNpb24gc3BlY2lmaWVyICdoaCcgbmVlZGVkIGZvciBfX2lhNjRfXy4g V2l0aG91dAotICAgICAgICAgICB0aGlzIG1pbmktb3MgcGFuaWNzIHdpdGggJ1VuYWxpZ25lZCBy ZWZlcmVuY2UnLiAqLworICAgIC8qIFNwZWNpYWwgY29udmVyc2lvbiBzcGVjaWZpZXIgJ2hoJyBu ZWVkZWQgZm9yIF9faWE2NF9fLiBXaXRob3V0CisgICAgICogdGhpcyBtaW5pLW9zIHBhbmljcyB3 aXRoICdVbmFsaWduZWQgcmVmZXJlbmNlJy4KKyAgICAgKi8KICAgICBpZiAocmF3bWFjKQotCXNz Y2FuZihkZXYtPm1hYywiJWhoeDolaGh4OiVoaHg6JWhoeDolaGh4OiVoaHgiLAotICAgICAgICAg ICAgJnJhd21hY1swXSwKLSAgICAgICAgICAgICZyYXdtYWNbMV0sCi0gICAgICAgICAgICAmcmF3 bWFjWzJdLAotICAgICAgICAgICAgJnJhd21hY1szXSwKLSAgICAgICAgICAgICZyYXdtYWNbNF0s Ci0gICAgICAgICAgICAmcmF3bWFjWzVdKTsKKwkgICAgc3NjYW5mKGRldi0+bWFjLCIlaGh4OiVo aHg6JWhoeDolaGh4OiVoaHg6JWhoeCIsCisgICAgICAgICAgICAgICAmcmF3bWFjWzBdLAorICAg ICAgICAgICAgICAgJnJhd21hY1sxXSwKKyAgICAgICAgICAgICAgICZyYXdtYWNbMl0sCisgICAg ICAgICAgICAgICAmcmF3bWFjWzNdLAorICAgICAgICAgICAgICAgJnJhd21hY1s0XSwKKyAgICAg ICAgICAgICAgICZyYXdtYWNbNV0pOwogCiAgICAgcmV0dXJuIGRldjsKKwogZXJyb3I6CiAgICAg ZnJlZShtc2cpOwogICAgIGZyZWUoZXJyKTsKQEAgLTQ5Niw2ICs1NzIsNDAgQEAgaW50IG5ldGZy b250X3RhcF9vcGVuKGNoYXIgKm5vZGVuYW1lKSB7CiAKIHZvaWQgc2h1dGRvd25fbmV0ZnJvbnQo c3RydWN0IG5ldGZyb250X2RldiAqZGV2KQogeworICAgIHN0cnVjdCBuZXRmcm9udF9kZXZfbGlz dCAqbGlzdCA9IE5VTEw7CisgICAgc3RydWN0IG5ldGZyb250X2Rldl9saXN0ICp0b19kZWwgPSBO VUxMOworCisgICAgLyogQ2hlY2sgdGhpcyBpcyBhIHZhbGlkIGRldmljZSAqLworICAgIGZvciAo bGlzdCA9IGRldl9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisJICAg IGlmIChsaXN0LT5kZXYgPT0gZGV2KQorCQkgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFs aXN0KSB7CisJICAgIHByaW50aygiVHJ5aW5nIHRvIHNodXRkb3duIGFuIGludmFsaWQgbmV0ZnJv bnQgZGV2aWNlICglcClcbiIsIGRldik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBs aXN0LT5yZWZjb3VudC0tOworICAgIGlmIChsaXN0LT5yZWZjb3VudCA9PSAwKSB7CisJICAgIF9z aHV0ZG93bl9uZXRmcm9udChkZXYpOworCSAgICBmcmVlKGRldi0+bm9kZW5hbWUpOworCSAgICBm cmVlKGRldik7CisKKwkgICAgdG9fZGVsID0gbGlzdDsKKyAgICAgICAgaWYgKHRvX2RlbCA9PSBk ZXZfbGlzdCkgeworICAgICAgICAgICAgZnJlZSh0b19kZWwpOworCQkJZGV2X2xpc3QgPSBOVUxM OworICAgICAgICB9IGVsc2UgeworCSAgICAgICAgZm9yIChsaXN0ID0gZGV2X2xpc3Q7IGxpc3Qt Pm5leHQgIT0gdG9fZGVsOyBsaXN0ID0gbGlzdC0+bmV4dCk7CisJICAgICAgICBsaXN0LT5uZXh0 ID0gdG9fZGVsLT5uZXh0OworICAgICAgICAgICAgZnJlZSh0b19kZWwpOworICAgICAgICB9Cisg ICAgfQorfQorCitzdGF0aWMgdm9pZCBfc2h1dGRvd25fbmV0ZnJvbnQoc3RydWN0IG5ldGZyb250 X2RldiAqZGV2KQorewogICAgIGNoYXIqIGVyciA9IE5VTEwsICplcnIyOwogICAgIFhlbmJ1c1N0 YXRlIHN0YXRlOwogCkBAIC01NTksNiArNjY5LDIxIEBAIGNsb3NlOgogICAgICAgICBmcmVlX25l dGZyb250KGRldik7CiB9CiAKK3ZvaWQgc3VzcGVuZF9uZXRmcm9udCh2b2lkKQoreworICAgIHN0 cnVjdCBuZXRmcm9udF9kZXZfbGlzdCAqbGlzdDsKKworICAgIGZvciAobGlzdCA9IGRldl9saXN0 OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQorICAgICAgICBfc2h1dGRvd25fbmV0 ZnJvbnQobGlzdC0+ZGV2KTsKK30KKwordm9pZCByZXN1bWVfbmV0ZnJvbnQodm9pZCkKK3sKKyAg ICBzdHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgKmxpc3Q7CisKKyAgICBmb3IgKGxpc3QgPSBkZXZf bGlzdDsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKyAgICAgICAgX2luaXRfbmV0 ZnJvbnQobGlzdC0+ZGV2LCBOVUxMLCBOVUxMKTsKK30KIAogdm9pZCBpbml0X3J4X2J1ZmZlcnMo c3RydWN0IG5ldGZyb250X2RldiAqZGV2KQogewpAQCAtNjY1LDMgKzc5MCwxNCBAQCBzc2l6ZV90 IG5ldGZyb250X3JlY2VpdmUoc3RydWN0IG5ldGZyb250X2RldiAqZGV2LCB1bnNpZ25lZCBjaGFy ICpkYXRhLCBzaXplX3QgbAogICAgIHJldHVybiBkZXYtPnJsZW47CiB9CiAjZW5kaWYKKwordm9p ZCBuZXRmcm9udF9zZXRfcnhfaGFuZGxlcihzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYsCisJCQkg ICAgICAgICAgICAgICAgIHZvaWQgKCp0aGVuZXRpZl9yeCkodW5zaWduZWQgY2hhciAqZGF0YSwg aW50IGxlbiwKKwkJCSAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKSwgdm9pZCAqYXJnKQorewor ICAgIGlmIChkZXYtPm5ldGlmX3J4ICYmIGRldi0+bmV0aWZfcnggIT0gbmV0aWZfcngpCisgICAg ICAgIHByaW50aygiUmVwbGFjaW5nIG5ldGlmX3J4IGhhbmRsZXIgZm9yIGRldiAlc1xuIiwgZGV2 LT5ub2RlbmFtZSk7CisKKyAgICBkZXYtPm5ldGlmX3J4ID0gdGhlbmV0aWZfcng7CisgICAgZGV2 LT5uZXRpZl9yeF9hcmcgPSBhcmc7Cit9Ci0tIAoyLjMuMiAoQXBwbGUgR2l0LTU1KQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=