From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno Alvisio Subject: [PATCH v2 15/16] Save/Restore Support: Add suspend/restore support for netfront Date: Tue, 13 Feb 2018 18:27:38 -0800 Message-ID: <1518575259-71141-16-git-send-email-bruno.alvisio@gmail.com> References: <1518575259-71141-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 1elmnz-0004df-CI for xen-devel@lists.xenproject.org; Wed, 14 Feb 2018 02:28:19 +0000 In-Reply-To: <1518575259-71141-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 List-Id: xen-devel@lists.xenproject.org UGVyZm9ybWVkIGFuIGFkZGl0aW9uYWwgY2xlYW51cCB0byBtYWtlIHRoZSBmaWxlIG1vcmUgc3lu dGFjdGljYWxseSBjb25zaXN0ZW50LgoKU2lnbmVkLW9mZi1ieTogQnJ1bm8gQWx2aXNpbyA8YnJ1 bm8uYWx2aXNpb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVl bC50aGliYXVsdEBlbnMtbHlvbi5vcmc+Ci0tLQogaW5jbHVkZS9uZXRmcm9udC5oIHwgICA4ICst CiBrZXJuZWwuYyAgICAgICAgICAgfCAgIDggKysKIG5ldGZyb250LmMgICAgICAgICB8IDMwOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMyBm aWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9uZXRmcm9udC5oIGIvaW5jbHVkZS9uZXRmcm9udC5oCmluZGV4IDJiOTVk YTkuLjExNjRkNTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0ZnJvbnQuaAorKysgYi9pbmNsdWRl L25ldGZyb250LmgKQEAgLTMsOSArMywxNSBAQAogI2luY2x1ZGUgPGx3aXAvbmV0aWYuaD4KICNl bmRpZgogc3RydWN0IG5ldGZyb250X2RldjsKLXN0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0 ZnJvbnQoY2hhciAqbm9kZW5hbWUsIHZvaWQgKCpuZXRpZl9yeCkodW5zaWduZWQgY2hhciAqZGF0 YSwgaW50IGxlbiksIHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLCBjaGFyICoqaXApOworc3RydWN0 IG5ldGZyb250X2RldiAqaW5pdF9uZXRmcm9udChjaGFyICpub2RlbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKm5ldGlmX3J4KSh1bnNpZ25lZCBjaGFyICpk YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBsZW4sIHZvaWQqIGFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgcmF3bWFjWzZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICoqaXApOwogdm9pZCBuZXRmcm9udF94bWl0KHN0cnVjdCBuZXRmcm9udF9kZXYg KmRldiwgdW5zaWduZWQgY2hhciogZGF0YSxpbnQgbGVuKTsKIHZvaWQgc2h1dGRvd25fbmV0ZnJv bnQoc3RydWN0IG5ldGZyb250X2RldiAqZGV2KTsKK3ZvaWQgc3VzcGVuZF9uZXRmcm9udCh2b2lk KTsKK3ZvaWQgcmVzdW1lX25ldGZyb250KHZvaWQpOwogI2lmZGVmIEhBVkVfTElCQwogaW50IG5l dGZyb250X3RhcF9vcGVuKGNoYXIgKm5vZGVuYW1lKTsKIHNzaXplX3QgbmV0ZnJvbnRfcmVjZWl2 ZShzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBs ZW4pOwpkaWZmIC0tZ2l0IGEva2VybmVsLmMgYi9rZXJuZWwuYwppbmRleCAxMzkzZDE1Li4zMDEy NzNkIDEwMDY0NAotLS0gYS9rZXJuZWwuYworKysgYi9rZXJuZWwuYwpAQCAtMTE5LDYgKzExOSwx MCBAQCB2b2lkIHN0YXJ0X2tlcm5lbCh2b2lkKiBwYXIpCiAKIHZvaWQgcHJlX3N1c3BlbmQodm9p ZCkKIHsKKyNpZmRlZiBDT05GSUdfTkVURlJPTlQKKyAgICBzdXNwZW5kX25ldGZyb250KCk7Cisj ZW5kaWYKKwogI2lmZGVmIENPTkZJR19YRU5CVVMKICAgICBzdXNwZW5kX3hlbmJ1cygpOwogI2Vu ZGlmCkBAIC0xNDcsNiArMTUxLDEwIEBAIHZvaWQgcG9zdF9zdXNwZW5kKGludCBjYW5jZWxlZCkK ICNpZmRlZiBDT05GSUdfWEVOQlVTCiAgICAgcmVzdW1lX3hlbmJ1cyhjYW5jZWxlZCk7CiAjZW5k aWYKKworI2lmZGVmIENPTkZJR19ORVRGUk9OVAorICAgIHJlc3VtZV9uZXRmcm9udCgpOworI2Vu ZGlmCiB9CiAKIHZvaWQgc3RvcF9rZXJuZWwodm9pZCkKZGlmZiAtLWdpdCBhL25ldGZyb250LmMg Yi9uZXRmcm9udC5jCmluZGV4IGI4ZmFjNjIuLjUwYjNhNTcgMTAwNjQ0Ci0tLSBhL25ldGZyb250 LmMKKysrIGIvbmV0ZnJvbnQuYwpAQCAtNjMsMTAgKzYzLDMwIEBAIHN0cnVjdCBuZXRmcm9udF9k ZXYgewogICAgIHNpemVfdCBybGVuOwogI2VuZGlmCiAKLSAgICB2b2lkICgqbmV0aWZfcngpKHVu c2lnbmVkIGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgIHZvaWQgKCpuZXRpZl9yeCkodW5zaWdu ZWQgY2hhciogZGF0YSwgaW50IGxlbiwgdm9pZCogYXJnKTsKKyAgICB2b2lkICpuZXRpZl9yeF9h cmc7CiB9OwogCitzdHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgeworICAgIHN0cnVjdCBuZXRmcm9u dF9kZXYgKmRldjsKKyAgICB1bnNpZ25lZCBjaGFyIHJhd21hY1s2XTsKKyAgICBjaGFyICppcDsK KworICAgIGludCByZWZjb3VudDsKKworICAgIHN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCAqbmV4 dDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgKmRldl9saXN0ID0gTlVM TDsKKwogdm9pZCBpbml0X3J4X2J1ZmZlcnMoc3RydWN0IG5ldGZyb250X2RldiAqZGV2KTsKK3N0 YXRpYyBzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpfaW5pdF9uZXRmcm9udChzdHJ1Y3QgbmV0ZnJvbnRf ZGV2ICpkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciByYXdtYWNbNl0sIGNoYXIgKippcCk7CitzdGF0aWMgdm9pZCBfc2h1dGRvd25f bmV0ZnJvbnQoc3RydWN0IG5ldGZyb250X2RldiAqZGV2KTsKK3ZvaWQgbmV0ZnJvbnRfc2V0X3J4 X2hhbmRsZXIoc3RydWN0IG5ldGZyb250X2RldiAqZGV2LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICgqdGhlbmV0aWZfcngpKHVuc2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq YXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKIAogc3RhdGlj IGlubGluZSB2b2lkIGFkZF9pZF90b19mcmVlbGlzdCh1bnNpZ25lZCBpbnQgaWQsdW5zaWduZWQg c2hvcnQqIGZyZWVsaXN0KQogewpAQCAtODEsNyArMTAxLDcgQEAgc3RhdGljIGlubGluZSB1bnNp Z25lZCBzaG9ydCBnZXRfaWRfZnJvbV9mcmVlbGlzdCh1bnNpZ25lZCBzaG9ydCogZnJlZWxpc3Qp CiAgICAgcmV0dXJuIGlkOwogfQogCi1fX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgdm9pZCBuZXRpZl9y eCh1bnNpZ25lZCBjaGFyKiBkYXRhLGludCBsZW4pCitfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgdm9p ZCBuZXRpZl9yeCh1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQgbGVuLCB2b2lkICphcmcpCiB7CiAg ICAgcHJpbnRrKCIlZCBieXRlcyBpbmNvbWluZyBhdCAlcFxuIixsZW4sZGF0YSk7CiB9CkBAIC0x MjAsMjEgKzE0MCwyMCBAQCBtb3JldG9kbzoKICAgICAgICAgcGFnZSA9ICh1bnNpZ25lZCBjaGFy KilidWYtPnBhZ2U7CiAgICAgICAgIGdudHRhYl9lbmRfYWNjZXNzKGJ1Zi0+Z3JlZik7CiAKLSAg ICAgICAgaWYgKHJ4LT5zdGF0dXMgPiBORVRJRl9SU1BfTlVMTCkKLSAgICAgICAgeworICAgICAg ICBpZiAocngtPnN0YXR1cyA+IE5FVElGX1JTUF9OVUxMKSB7CiAjaWZkZWYgSEFWRV9MSUJDCi0J ICAgIGlmIChkZXYtPm5ldGlmX3J4ID09IE5FVElGX1NFTEVDVF9SWCkgewotCQlpbnQgbGVuID0g cngtPnN0YXR1czsKLQkJQVNTRVJUKGN1cnJlbnQgPT0gbWFpbl90aHJlYWQpOwotCQlpZiAobGVu ID4gZGV2LT5sZW4pCi0JCSAgICBsZW4gPSBkZXYtPmxlbjsKLQkJbWVtY3B5KGRldi0+ZGF0YSwg cGFnZStyeC0+b2Zmc2V0LCBsZW4pOwotCQlkZXYtPnJsZW4gPSBsZW47Ci0JCS8qIE5vIG5lZWQg dG8gcmVjZWl2ZSB0aGUgcmVzdCBmb3Igbm93ICovCi0JCWRvYnJlYWsgPSAxOwotCSAgICB9IGVs c2UKKyAgICAgICAgICAgIGlmIChkZXYtPm5ldGlmX3J4ID09IE5FVElGX1NFTEVDVF9SWCkgewor ICAgICAgICAgICAgICAgIGludCBsZW4gPSByeC0+c3RhdHVzOworICAgICAgICAgICAgICAgIEFT U0VSVChjdXJyZW50ID09IG1haW5fdGhyZWFkKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuID4g ZGV2LT5sZW4pCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IGRldi0+bGVuOworICAgICAgICAg ICAgICAgIG1lbWNweShkZXYtPmRhdGEsIHBhZ2UrcngtPm9mZnNldCwgbGVuKTsKKyAgICAgICAg ICAgICAgICBkZXYtPnJsZW4gPSBsZW47CisgICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBy ZWNlaXZlIHRoZSByZXN0IGZvciBub3cgKi8KKyAgICAgICAgICAgICAgICBkb2JyZWFrID0gMTsK KyAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCi0JCWRldi0+bmV0aWZfcngocGFnZStyeC0+b2Zm c2V0LHJ4LT5zdGF0dXMpOworCQkgICAgICAgIGRldi0+bmV0aWZfcngocGFnZStyeC0+b2Zmc2V0 LCByeC0+c3RhdHVzLCBkZXYtPm5ldGlmX3J4X2FyZyk7CiAgICAgICAgIH0KICAgICB9CiAgICAg ZGV2LT5yeC5yc3BfY29ucz1jb25zOwpAQCAtMTQ0LDE3ICsxNjMsMTYgQEAgbW9yZXRvZG86CiAK ICAgICByZXFfcHJvZCA9IGRldi0+cngucmVxX3Byb2RfcHZ0OwogCi0gICAgZm9yKGk9MDsgaTxu cl9jb25zdW1lZDsgaSsrKQotICAgIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnJfY29uc3VtZWQ7 IGkrKykgewogICAgICAgICBpbnQgaWQgPSB4ZW5uZXRfcnhpZHgocmVxX3Byb2QgKyBpKTsKICAg ICAgICAgbmV0aWZfcnhfcmVxdWVzdF90ICpyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZkZXYtPnJ4 LCByZXFfcHJvZCArIGkpOwogICAgICAgICBzdHJ1Y3QgbmV0X2J1ZmZlciogYnVmID0gJmRldi0+ cnhfYnVmZmVyc1tpZF07CiAgICAgICAgIHZvaWQqIHBhZ2UgPSBidWYtPnBhZ2U7CiAKICAgICAg ICAgLyogV2UgYXJlIHN1cmUgdG8gaGF2ZSBmcmVlIGdudHRhYiBlbnRyaWVzIHNpbmNlIHRoZXkg Z290IHJlbGVhc2VkIGFib3ZlICovCi0gICAgICAgIGJ1Zi0+Z3JlZiA9IHJlcS0+Z3JlZiA9IAot ICAgICAgICAgICAgZ250dGFiX2dyYW50X2FjY2VzcyhkZXYtPmRvbSx2aXJ0X3RvX21mbihwYWdl KSwwKTsKLQorICAgICAgICBidWYtPmdyZWYgPSByZXEtPmdyZWYgPSBnbnR0YWJfZ3JhbnRfYWNj ZXNzKGRldi0+ZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZpcnRfdG9fbWZuKHBhZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgICByZXEtPmlkID0gaWQ7CiAgICAg fQogCkBAIC0xNjUsMTMgKzE4MywxMCBAQCBtb3JldG9kbzoKICAgICBSSU5HX1BVU0hfUkVRVUVT VFNfQU5EX0NIRUNLX05PVElGWSgmZGV2LT5yeCwgbm90aWZ5KTsKICAgICBpZiAobm90aWZ5KQog ICAgICAgICBub3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4oZGV2LT5ldnRjaG4pOwotCiB9CiAKIHZv aWQgbmV0d29ya190eF9idWZfZ2Moc3RydWN0IG5ldGZyb250X2RldiAqZGV2KQogewotCi0KICAg ICBSSU5HX0lEWCBjb25zLCBwcm9kOwogICAgIHVuc2lnbmVkIHNob3J0IGlkOwogCkBAIC0xOTcs OCArMjEyLDggQEAgdm9pZCBuZXR3b3JrX3R4X2J1Zl9nYyhzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpk ZXYpCiAgICAgICAgICAgICBnbnR0YWJfZW5kX2FjY2VzcyhidWYtPmdyZWYpOwogICAgICAgICAg ICAgYnVmLT5ncmVmPUdSQU5UX0lOVkFMSURfUkVGOwogCi0JICAgIGFkZF9pZF90b19mcmVlbGlz dChpZCxkZXYtPnR4X2ZyZWVsaXN0KTsKLQkgICAgdXAoJmRldi0+dHhfc2VtKTsKKyAgICAgICAg ICAgIGFkZF9pZF90b19mcmVlbGlzdChpZCxkZXYtPnR4X2ZyZWVsaXN0KTsKKyAgICAgICAgICAg IHVwKCZkZXYtPnR4X3NlbSk7CiAgICAgICAgIH0KIAogICAgICAgICBkZXYtPnR4LnJzcF9jb25z ID0gcHJvZDsKQEAgLTIxNSw4ICsyMzAsNiBAQCB2b2lkIG5ldHdvcmtfdHhfYnVmX2djKHN0cnVj dCBuZXRmcm9udF9kZXYgKmRldikKICAgICAgICAgICAgIHByb2QgKyAoKGRldi0+dHguc3Jpbmct PnJlcV9wcm9kIC0gcHJvZCkgPj4gMSkgKyAxOwogICAgICAgICBtYigpOwogICAgIH0gd2hpbGUg KChjb25zID09IHByb2QpICYmIChwcm9kICE9IGRldi0+dHguc3JpbmctPnJzcF9wcm9kKSk7Ci0K LQogfQogCiB2b2lkIG5ldGZyb250X2hhbmRsZXIoZXZ0Y2huX3BvcnRfdCBwb3J0LCBzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdm9pZCAqZGF0YSkKQEAgLTI1Myw4ICsyNjYsOCBAQCBzdGF0aWMgdm9p ZCBmcmVlX25ldGZyb250KHN0cnVjdCBuZXRmcm9udF9kZXYgKmRldikKIHsKICAgICBpbnQgaTsK IAotICAgIGZvcihpPTA7aTxORVRfVFhfUklOR19TSVpFO2krKykKLQlkb3duKCZkZXYtPnR4X3Nl bSk7CisgICAgZm9yKGkgPSAwOyBpIDwgTkVUX1RYX1JJTkdfU0laRTsgaSsrKQorICAgICAgICBk b3duKCZkZXYtPnR4X3NlbSk7CiAKICAgICBtYXNrX2V2dGNobihkZXYtPmV2dGNobik7CiAKQEAg LTI2OSwzMiArMjgyLDMxIEBAIHN0YXRpYyB2b2lkIGZyZWVfbmV0ZnJvbnQoc3RydWN0IG5ldGZy b250X2RldiAqZGV2KQogCiAgICAgdW5iaW5kX2V2dGNobihkZXYtPmV2dGNobik7CiAKLSAgICBm b3IoaT0wO2k8TkVUX1JYX1JJTkdfU0laRTtpKyspIHsKLQlnbnR0YWJfZW5kX2FjY2VzcyhkZXYt PnJ4X2J1ZmZlcnNbaV0uZ3JlZik7Ci0JZnJlZV9wYWdlKGRldi0+cnhfYnVmZmVyc1tpXS5wYWdl KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkVUX1JYX1JJTkdfU0laRTsgaSsrKSB7CisgICAgICAg IGlmIChkZXYtPnJ4X2J1ZmZlcnNbaV0ucGFnZSkgeworICAgICAgICAgICAgZ250dGFiX2VuZF9h Y2Nlc3MoZGV2LT5yeF9idWZmZXJzW2ldLmdyZWYpOworICAgICAgICAgICAgZnJlZV9wYWdlKGRl di0+cnhfYnVmZmVyc1tpXS5wYWdlKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGZvcihpPTA7 aTxORVRfVFhfUklOR19TSVpFO2krKykKLQlpZiAoZGV2LT50eF9idWZmZXJzW2ldLnBhZ2UpCi0J ICAgIGZyZWVfcGFnZShkZXYtPnR4X2J1ZmZlcnNbaV0ucGFnZSk7CisgICAgZm9yIChpID0gMDsg aSA8IE5FVF9UWF9SSU5HX1NJWkU7IGkrKykKKyAgICAgICAgaWYgKGRldi0+dHhfYnVmZmVyc1tp XS5wYWdlKQorICAgICAgICAgICAgZnJlZV9wYWdlKGRldi0+dHhfYnVmZmVyc1tpXS5wYWdlKTsK IAogICAgIGZyZWUoZGV2LT5ub2RlbmFtZSk7CiAgICAgZnJlZShkZXYpOwogfQogCi1zdHJ1Y3Qg bmV0ZnJvbnRfZGV2ICppbml0X25ldGZyb250KGNoYXIgKl9ub2RlbmFtZSwgdm9pZCAoKnRoZW5l dGlmX3J4KSh1bnNpZ25lZCBjaGFyKiBkYXRhLCBpbnQgbGVuKSwgdW5zaWduZWQgY2hhciByYXdt YWNbNl0sIGNoYXIgKippcCkKK3N0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0ZnJvbnQoY2hh ciAqX25vZGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgq dGhlbmV0aWZfcngpKHVuc2lnbmVkIGNoYXIqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgdm9pZCogYXJnKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByYXdtYWNbNl0s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKippcCkKIHsKLSAgICB4 ZW5idXNfdHJhbnNhY3Rpb25fdCB4YnQ7Ci0gICAgY2hhciogZXJyOwotICAgIGNoYXIqIG1lc3Nh Z2U9TlVMTDsKLSAgICBzdHJ1Y3QgbmV0aWZfdHhfc3JpbmcgKnR4czsKLSAgICBzdHJ1Y3QgbmV0 aWZfcnhfc3JpbmcgKnJ4czsKLSAgICBpbnQgcmV0cnk9MDsKLSAgICBpbnQgaTsKLSAgICBjaGFy KiBtc2cgPSBOVUxMOwogICAgIGNoYXIgbm9kZW5hbWVbMjU2XTsKLSAgICBjaGFyIHBhdGhbMjU2 XTsKICAgICBzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXY7CisgICAgc3RydWN0IG5ldGZyb250X2Rl dl9saXN0ICpsZGV2ID0gTlVMTDsKKyAgICBzdHJ1Y3QgbmV0ZnJvbnRfZGV2X2xpc3QgKmxpc3Qg PSBOVUxMOwogICAgIHN0YXRpYyBpbnQgbmV0ZnJvbnRlbmRzID0gMDsKIAogICAgIGlmICghX25v ZGVuYW1lKQpAQCAtMzAzLDEwICszMTUsMjAgQEAgc3RydWN0IG5ldGZyb250X2RldiAqaW5pdF9u ZXRmcm9udChjaGFyICpfbm9kZW5hbWUsIHZvaWQgKCp0aGVuZXRpZl9yeCkodW5zaWduZWQKICAg ICAgICAgc3RybmNweShub2RlbmFtZSwgX25vZGVuYW1lLCBzaXplb2Yobm9kZW5hbWUpIC0gMSk7 CiAgICAgICAgIG5vZGVuYW1lW3NpemVvZihub2RlbmFtZSkgLSAxXSA9IDA7CiAgICAgfQotICAg IG5ldGZyb250ZW5kcysrOworCisgICAgLyogQ2hlY2sgaWYgdGhlIGRldmljZSBpcyBhbHJlYWR5 IGluaXRpYWxpemVkICovCisgICAgZm9yIChsaXN0ID0gZGV2X2xpc3Q7IGxpc3QgIT0gTlVMTDsg bGlzdCA9IGxpc3QtPm5leHQpIHsKKyAgICAgICAgaWYgKHN0cmNtcChub2RlbmFtZSwgbGlzdC0+ ZGV2LT5ub2RlbmFtZSkgPT0gMCkgeworICAgICAgICAgICAgbGlzdC0+cmVmY291bnQrKzsKKyAg ICAgICAgICAgIGRldiA9IGxpc3QtPmRldjsKKyAgICAgICAgICAgIGlmICh0aGVuZXRpZl9yeCkK KyAgICAgICAgICAgICAgICBuZXRmcm9udF9zZXRfcnhfaGFuZGxlcihkZXYsIHRoZW5ldGlmX3J4 LCBOVUxMKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQogCiAgICAg aWYgKCF0aGVuZXRpZl9yeCkKLQl0aGVuZXRpZl9yeCA9IG5ldGlmX3J4OworICAgICAgICB0aGVu ZXRpZl9yeCA9IG5ldGlmX3J4OwogCiAgICAgcHJpbnRrKCIqKioqKioqKioqKioqKioqKioqKioq KiogTkVURlJPTlQgZm9yICVzICoqKioqKioqKipcblxuXG4iLCBub2RlbmFtZSk7CiAKQEAgLTMx NiwyNiArMzM4LDc5IEBAIHN0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0ZnJvbnQoY2hhciAq X25vZGVuYW1lLCB2b2lkICgqdGhlbmV0aWZfcngpKHVuc2lnbmVkCiAjaWZkZWYgSEFWRV9MSUJD CiAgICAgZGV2LT5mZCA9IC0xOwogI2VuZGlmCisgICAgZGV2LT5uZXRpZl9yeCA9IHRoZW5ldGlm X3J4OworICAgIGRldi0+bmV0aWZfcnhfYXJnID0gTlVMTDsKKworICAgIGxkZXYgPSBtYWxsb2Mo c2l6ZW9mKHN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCkpOworICAgIG1lbXNldChsZGV2LCAwLCBz aXplb2Yoc3RydWN0IG5ldGZyb250X2Rldl9saXN0KSk7CisKKyAgICBpZiAoX2luaXRfbmV0ZnJv bnQoZGV2LCBsZGV2LT5yYXdtYWMsICYobGRldi0+aXApKSkgeworICAgICAgICBsZGV2LT5kZXYg PSBkZXY7CisgICAgICAgIGxkZXYtPnJlZmNvdW50ID0gMTsKKyAgICAgICAgbGRldi0+bmV4dCA9 IE5VTEw7CisKKyAgICAgICAgaWYgKCFkZXZfbGlzdCkgeworICAgICAgICAgICAgZGV2X2xpc3Qg PSBsZGV2OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChsaXN0ID0gZGV2X2xp c3Q7IGxpc3QtPm5leHQgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCisgICAgICAgICAgICAg ICAgOworICAgICAgICAgICAgbGlzdC0+bmV4dCA9IGxkZXY7CisJCX0KKyAgICAgICAgbmV0ZnJv bnRlbmRzKys7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnJlZShsZGV2KTsKKyAgICAgICAgZGV2 ID0gTlVMTDsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCitvdXQ6CisgICAgaWYgKHJhd21h YykgeworICAgICAgICByYXdtYWNbMF0gPSBsZGV2LT5yYXdtYWNbMF07CisgICAgICAgIHJhd21h Y1sxXSA9IGxkZXYtPnJhd21hY1sxXTsKKyAgICAgICAgcmF3bWFjWzJdID0gbGRldi0+cmF3bWFj WzJdOworICAgICAgICByYXdtYWNbM10gPSBsZGV2LT5yYXdtYWNbM107CisgICAgICAgIHJhd21h Y1s0XSA9IGxkZXYtPnJhd21hY1s0XTsKKyAgICAgICAgcmF3bWFjWzVdID0gbGRldi0+cmF3bWFj WzVdOworCX0KKyAgICBpZiAoaXApCisgICAgICAgICppcCA9IHN0cmR1cChsZGV2LT5pcCk7CisK K2VycjoKKyAgICByZXR1cm4gZGV2OworfQorCitzdGF0aWMgc3RydWN0IG5ldGZyb250X2RldiAq X2luaXRfbmV0ZnJvbnQoc3RydWN0IG5ldGZyb250X2RldiAqZGV2LAorCQkJCQkgICB1bnNpZ25l ZCBjaGFyIHJhd21hY1s2XSwKKwkJCQkJICAgY2hhciAqKmlwKQoreworICAgIHhlbmJ1c190cmFu c2FjdGlvbl90IHhidDsKKyAgICBjaGFyKiBlcnIgPSBOVUxMOworICAgIGNoYXIqIG1lc3NhZ2U9 TlVMTDsKKyAgICBzdHJ1Y3QgbmV0aWZfdHhfc3JpbmcgKnR4czsKKyAgICBzdHJ1Y3QgbmV0aWZf cnhfc3JpbmcgKnJ4czsKKyAgICBjaGFyKiBtc2cgPSBOVUxMOworICAgIGludCByZXRyeT0wOwor ICAgIGludCBpOworICAgIGNoYXIgcGF0aFsyNTZdOwogCiAgICAgcHJpbnRrKCJuZXQgVFggcmlu ZyBzaXplICVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIE5FVF9UWF9SSU5HX1NJWkUpOwogICAgIHBy aW50aygibmV0IFJYIHJpbmcgc2l6ZSAlbHVcbiIsICh1bnNpZ25lZCBsb25nKSBORVRfUlhfUklO R19TSVpFKTsKICAgICBpbml0X1NFTUFQSE9SRSgmZGV2LT50eF9zZW0sIE5FVF9UWF9SSU5HX1NJ WkUpOwotICAgIGZvcihpPTA7aTxORVRfVFhfUklOR19TSVpFO2krKykKLSAgICB7Ci0JYWRkX2lk X3RvX2ZyZWVsaXN0KGksZGV2LT50eF9mcmVlbGlzdCk7CisgICAgZm9yIChpID0gMDsgaSA8IE5F VF9UWF9SSU5HX1NJWkU7IGkrKykgeworICAgICAgICBhZGRfaWRfdG9fZnJlZWxpc3QoaSwgZGV2 LT50eF9mcmVlbGlzdCk7CiAgICAgICAgIGRldi0+dHhfYnVmZmVyc1tpXS5wYWdlID0gTlVMTDsK ICAgICB9CiAKLSAgICBmb3IoaT0wO2k8TkVUX1JYX1JJTkdfU0laRTtpKyspCi0gICAgewotCS8q IFRPRE86IHRoYXQncyBhIGxvdCBvZiBtZW1vcnkgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgTkVU X1JYX1JJTkdfU0laRTsgaSsrKSB7CisgICAgICAgIC8qIFRPRE86IHRoYXQncyBhIGxvdCBvZiBt ZW1vcnkgKi8KICAgICAgICAgZGV2LT5yeF9idWZmZXJzW2ldLnBhZ2UgPSAoY2hhciopYWxsb2Nf cGFnZSgpOworICAgICAgICBCVUdfT04oZGV2LT5yeF9idWZmZXJzW2ldLnBhZ2UgPT0gTlVMTCk7 CiAgICAgfQogCi0gICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvYmFja2VuZC1p ZCIsIG5vZGVuYW1lKTsKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9iYWNr ZW5kLWlkIiwgZGV2LT5ub2RlbmFtZSk7CiAgICAgZGV2LT5kb20gPSB4ZW5idXNfcmVhZF9pbnRl Z2VyKHBhdGgpOwogI2lmZGVmIEhBVkVfTElCQwotICAgIGlmICh0aGVuZXRpZl9yeCA9PSBORVRJ Rl9TRUxFQ1RfUlgpCisgICAgaWYgKGRldi0+bmV0aWZfcnggPT0gTkVUSUZfU0VMRUNUX1JYKQog ICAgICAgICBldnRjaG5fYWxsb2NfdW5ib3VuZChkZXYtPmRvbSwgbmV0ZnJvbnRfc2VsZWN0X2hh bmRsZXIsIGRldiwgJmRldi0+ZXZ0Y2huKTsKICAgICBlbHNlCiAjZW5kaWYKQEAgLTM0MywyMiAr NDE4LDE5IEBAIHN0cnVjdCBuZXRmcm9udF9kZXYgKmluaXRfbmV0ZnJvbnQoY2hhciAqX25vZGVu YW1lLCB2b2lkICgqdGhlbmV0aWZfcngpKHVuc2lnbmVkCiAKICAgICB0eHMgPSAoc3RydWN0IG5l dGlmX3R4X3NyaW5nICopIGFsbG9jX3BhZ2UoKTsKICAgICByeHMgPSAoc3RydWN0IG5ldGlmX3J4 X3NyaW5nICopIGFsbG9jX3BhZ2UoKTsKLSAgICBtZW1zZXQodHhzLDAsUEFHRV9TSVpFKTsKLSAg ICBtZW1zZXQocnhzLDAsUEFHRV9TSVpFKTsKLQorICAgIG1lbXNldCh0eHMsIDAsIFBBR0VfU0la RSk7CisgICAgbWVtc2V0KHJ4cywgMCwgUEFHRV9TSVpFKTsKIAogICAgIFNIQVJFRF9SSU5HX0lO SVQodHhzKTsKICAgICBTSEFSRURfUklOR19JTklUKHJ4cyk7CiAgICAgRlJPTlRfUklOR19JTklU KCZkZXYtPnR4LCB0eHMsIFBBR0VfU0laRSk7CiAgICAgRlJPTlRfUklOR19JTklUKCZkZXYtPnJ4 LCByeHMsIFBBR0VfU0laRSk7CiAKLSAgICBkZXYtPnR4X3JpbmdfcmVmID0gZ250dGFiX2dyYW50 X2FjY2VzcyhkZXYtPmRvbSx2aXJ0X3RvX21mbih0eHMpLDApOwotICAgIGRldi0+cnhfcmluZ19y ZWYgPSBnbnR0YWJfZ3JhbnRfYWNjZXNzKGRldi0+ZG9tLHZpcnRfdG9fbWZuKHJ4cyksMCk7Cisg ICAgZGV2LT50eF9yaW5nX3JlZiA9IGdudHRhYl9ncmFudF9hY2Nlc3MoZGV2LT5kb20sIHZpcnRf dG9fbWZuKHR4cyksIDApOworICAgIGRldi0+cnhfcmluZ19yZWYgPSBnbnR0YWJfZ3JhbnRfYWNj ZXNzKGRldi0+ZG9tLCB2aXJ0X3RvX21mbihyeHMpLCAwKTsKIAogICAgIGluaXRfcnhfYnVmZmVy cyhkZXYpOwogCi0gICAgZGV2LT5uZXRpZl9yeCA9IHRoZW5ldGlmX3J4OwotCiAgICAgZGV2LT5l dmVudHMgPSBOVUxMOwogCiBhZ2FpbjoKQEAgLTM2OCwzMyArNDQwLDMxIEBAIGFnYWluOgogICAg ICAgICBmcmVlKGVycik7CiAgICAgfQogCi0gICAgZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIG5v ZGVuYW1lLCAidHgtcmluZy1yZWYiLCIldSIsCi0gICAgICAgICAgICAgICAgZGV2LT50eF9yaW5n X3JlZik7CisgICAgZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUsICJ0eC1y aW5nLXJlZiIsIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+dHhfcmluZ19yZWYp OwogICAgIGlmIChlcnIpIHsKICAgICAgICAgbWVzc2FnZSA9ICJ3cml0aW5nIHR4IHJpbmctcmVm IjsKICAgICAgICAgZ290byBhYm9ydF90cmFuc2FjdGlvbjsKICAgICB9Ci0gICAgZXJyID0geGVu YnVzX3ByaW50Zih4YnQsIG5vZGVuYW1lLCAicngtcmluZy1yZWYiLCIldSIsCi0gICAgICAgICAg ICAgICAgZGV2LT5yeF9yaW5nX3JlZik7CisgICAgZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRl di0+bm9kZW5hbWUsICJyeC1yaW5nLXJlZiIsIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgICAg IGRldi0+cnhfcmluZ19yZWYpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgbWVzc2FnZSA9ICJ3 cml0aW5nIHJ4IHJpbmctcmVmIjsKICAgICAgICAgZ290byBhYm9ydF90cmFuc2FjdGlvbjsKICAg ICB9Ci0gICAgZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIG5vZGVuYW1lLAotICAgICAgICAgICAg ICAgICJldmVudC1jaGFubmVsIiwgIiV1IiwgZGV2LT5ldnRjaG4pOworICAgIGVyciA9IHhlbmJ1 c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAiZXZlbnQtY2hhbm5lbCIsICIldSIsIGRldi0+ ZXZ0Y2huKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIG1lc3NhZ2UgPSAid3JpdGluZyBldmVu dC1jaGFubmVsIjsKICAgICAgICAgZ290byBhYm9ydF90cmFuc2FjdGlvbjsKICAgICB9CiAKLSAg ICBlcnIgPSB4ZW5idXNfcHJpbnRmKHhidCwgbm9kZW5hbWUsICJyZXF1ZXN0LXJ4LWNvcHkiLCAi JXUiLCAxKTsKLQorICAgIGVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAi cmVxdWVzdC1yeC1jb3B5IiwgIiV1IiwgMSk7CiAgICAgaWYgKGVycikgewogICAgICAgICBtZXNz YWdlID0gIndyaXRpbmcgcmVxdWVzdC1yeC1jb3B5IjsKICAgICAgICAgZ290byBhYm9ydF90cmFu c2FjdGlvbjsKICAgICB9CiAKLSAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9z dGF0ZSIsIG5vZGVuYW1lKTsKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9z dGF0ZSIsIGRldi0+bm9kZW5hbWUpOwogICAgIGVyciA9IHhlbmJ1c19zd2l0Y2hfc3RhdGUoeGJ0 LCBwYXRoLCBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBt ZXNzYWdlID0gInN3aXRjaGluZyBzdGF0ZSI7CkBAIC00MDQsNyArNDc0LDcgQEAgYWdhaW46CiAg ICAgZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDAsICZyZXRyeSk7CiAgICAgZnJl ZShlcnIpOwogICAgIGlmIChyZXRyeSkgewotICAgICAgICAgICAgZ290byBhZ2FpbjsKKyAgICAg ICAgZ290byBhZ2FpbjsKICAgICAgICAgcHJpbnRrKCJjb21wbGV0aW5nIHRyYW5zYWN0aW9uXG4i KTsKICAgICB9CiAKQEAgLTQxNywxMCArNDg3LDkgQEAgYWJvcnRfdHJhbnNhY3Rpb246CiAgICAg Z290byBlcnJvcjsKIAogZG9uZToKLQotICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwg IiVzL2JhY2tlbmQiLCBub2RlbmFtZSk7CisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgp LCAiJXMvYmFja2VuZCIsIGRldi0+bm9kZW5hbWUpOwogICAgIG1zZyA9IHhlbmJ1c19yZWFkKFhC VF9OSUwsIHBhdGgsICZkZXYtPmJhY2tlbmQpOwotICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihw YXRoKSwgIiVzL21hYyIsIG5vZGVuYW1lKTsKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0 aCksICIlcy9tYWMiLCBkZXYtPm5vZGVuYW1lKTsKICAgICBtc2cgPSB4ZW5idXNfcmVhZChYQlRf TklMLCBwYXRoLCAmZGV2LT5tYWMpOwogCiAgICAgaWYgKChkZXYtPmJhY2tlbmQgPT0gTlVMTCkg fHwgKGRldi0+bWFjID09IE5VTEwpKSB7CkBAIC00MjgsOCArNDk3LDggQEAgZG9uZToKICAgICAg ICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBwcmludGsoImJhY2tlbmQgYXQgJXNcbiIsZGV2 LT5iYWNrZW5kKTsKLSAgICBwcmludGsoIm1hYyBpcyAlc1xuIixkZXYtPm1hYyk7CisgICAgcHJp bnRrKCJiYWNrZW5kIGF0ICVzXG4iLCBkZXYtPmJhY2tlbmQpOworICAgIHByaW50aygibWFjIGlz ICVzXG4iLCBkZXYtPm1hYyk7CiAKICAgICB7CiAgICAgICAgIFhlbmJ1c1N0YXRlIHN0YXRlOwpA QCAtNDU4LDE4ICs1MjcsMjAgQEAgZG9uZToKIAogICAgIHVubWFza19ldnRjaG4oZGV2LT5ldnRj aG4pOwogCi0gICAgICAgIC8qIFNwZWNpYWwgY29udmVyc2lvbiBzcGVjaWZpZXIgJ2hoJyBuZWVk ZWQgZm9yIF9faWE2NF9fLiBXaXRob3V0Ci0gICAgICAgICAgIHRoaXMgbWluaS1vcyBwYW5pY3Mg d2l0aCAnVW5hbGlnbmVkIHJlZmVyZW5jZScuICovCisgICAgLyogU3BlY2lhbCBjb252ZXJzaW9u IHNwZWNpZmllciAnaGgnIG5lZWRlZCBmb3IgX19pYTY0X18uIFdpdGhvdXQKKyAgICAgKiB0aGlz IG1pbmktb3MgcGFuaWNzIHdpdGggJ1VuYWxpZ25lZCByZWZlcmVuY2UnLgorICAgICAqLwogICAg IGlmIChyYXdtYWMpCi0Jc3NjYW5mKGRldi0+bWFjLCIlaGh4OiVoaHg6JWhoeDolaGh4OiVoaHg6 JWhoeCIsCi0gICAgICAgICAgICAmcmF3bWFjWzBdLAotICAgICAgICAgICAgJnJhd21hY1sxXSwK LSAgICAgICAgICAgICZyYXdtYWNbMl0sCi0gICAgICAgICAgICAmcmF3bWFjWzNdLAotICAgICAg ICAgICAgJnJhd21hY1s0XSwKLSAgICAgICAgICAgICZyYXdtYWNbNV0pOworICAgICAgICBzc2Nh bmYoZGV2LT5tYWMsIiVoaHg6JWhoeDolaGh4OiVoaHg6JWhoeDolaGh4IiwKKyAgICAgICAgICAg ICAgICZyYXdtYWNbMF0sCisgICAgICAgICAgICAgICAmcmF3bWFjWzFdLAorICAgICAgICAgICAg ICAgJnJhd21hY1syXSwKKyAgICAgICAgICAgICAgICZyYXdtYWNbM10sCisgICAgICAgICAgICAg ICAmcmF3bWFjWzRdLAorICAgICAgICAgICAgICAgJnJhd21hY1s1XSk7CiAKICAgICByZXR1cm4g ZGV2OworCiBlcnJvcjoKICAgICBmcmVlKG1zZyk7CiAgICAgZnJlZShlcnIpOwpAQCAtNDk2LDYg KzU2Nyw0MSBAQCBpbnQgbmV0ZnJvbnRfdGFwX29wZW4oY2hhciAqbm9kZW5hbWUpIHsKIAogdm9p ZCBzaHV0ZG93bl9uZXRmcm9udChzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYpCiB7CisgICAgc3Ry dWN0IG5ldGZyb250X2Rldl9saXN0ICpsaXN0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgbmV0ZnJvbnRf ZGV2X2xpc3QgKnRvX2RlbCA9IE5VTEw7CisKKyAgICAvKiBDaGVjayB0aGlzIGlzIGEgdmFsaWQg ZGV2aWNlICovCisgICAgZm9yIChsaXN0ID0gZGV2X2xpc3Q7IGxpc3QgIT0gTlVMTDsgbGlzdCA9 IGxpc3QtPm5leHQpIHsKKyAgICAgICAgaWYgKGxpc3QtPmRldiA9PSBkZXYpCisgICAgICAgICAg ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWxpc3QpIHsKKyAgICAgICAgcHJpbnRrKCJUcnlp bmcgdG8gc2h1dGRvd24gYW4gaW52YWxpZCBuZXRmcm9udCBkZXZpY2UgKCVwKVxuIiwgZGV2KTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxpc3QtPnJlZmNvdW50LS07CisgICAgaWYg KGxpc3QtPnJlZmNvdW50ID09IDApIHsKKyAgICAgICAgX3NodXRkb3duX25ldGZyb250KGRldik7 CisgICAgICAgIGZyZWUoZGV2LT5ub2RlbmFtZSk7CisgICAgICAgIGZyZWUoZGV2KTsKKworICAg ICAgICB0b19kZWwgPSBsaXN0OworICAgICAgICBpZiAodG9fZGVsID09IGRldl9saXN0KSB7Cisg ICAgICAgICAgICBmcmVlKHRvX2RlbCk7CisJCQlkZXZfbGlzdCA9IE5VTEw7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICBmb3IgKGxpc3QgPSBkZXZfbGlzdDsgbGlzdC0+bmV4dCAhPSB0 b19kZWw7IGxpc3QgPSBsaXN0LT5uZXh0KQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAg IGxpc3QtPm5leHQgPSB0b19kZWwtPm5leHQ7CisgICAgICAgICAgICBmcmVlKHRvX2RlbCk7Cisg ICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9zaHV0ZG93bl9uZXRmcm9udChzdHJ1 Y3QgbmV0ZnJvbnRfZGV2ICpkZXYpCit7CiAgICAgY2hhciogZXJyID0gTlVMTCwgKmVycjI7CiAg ICAgWGVuYnVzU3RhdGUgc3RhdGU7CiAKQEAgLTU1OSw2ICs2NjUsMjEgQEAgY2xvc2U6CiAgICAg ICAgIGZyZWVfbmV0ZnJvbnQoZGV2KTsKIH0KIAordm9pZCBzdXNwZW5kX25ldGZyb250KHZvaWQp Cit7CisgICAgc3RydWN0IG5ldGZyb250X2Rldl9saXN0ICpsaXN0OworCisgICAgZm9yIChsaXN0 ID0gZGV2X2xpc3Q7IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCisgICAgICAgIF9z aHV0ZG93bl9uZXRmcm9udChsaXN0LT5kZXYpOworfQorCit2b2lkIHJlc3VtZV9uZXRmcm9udCh2 b2lkKQoreworICAgIHN0cnVjdCBuZXRmcm9udF9kZXZfbGlzdCAqbGlzdDsKKworICAgIGZvciAo bGlzdCA9IGRldl9saXN0OyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQorICAgICAg ICBfaW5pdF9uZXRmcm9udChsaXN0LT5kZXYsIE5VTEwsIE5VTEwpOworfQogCiB2b2lkIGluaXRf cnhfYnVmZmVycyhzdHJ1Y3QgbmV0ZnJvbnRfZGV2ICpkZXYpCiB7CkBAIC02NTMsOCArNzc0LDgg QEAgc3NpemVfdCBuZXRmcm9udF9yZWNlaXZlKHN0cnVjdCBuZXRmcm9udF9kZXYgKmRldiwgdW5z aWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGwKICAgICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAg ICAgbmV0d29ya19yeChkZXYpOwogICAgIGlmICghZGV2LT5ybGVuICYmIGZkICE9IC0xKQotCS8q IE5vIGRhdGEgZm9yIHVzLCBtYWtlIHNlbGVjdCBzdG9wIHJldHVybmluZyAqLwotCWZpbGVzW2Zk XS5yZWFkID0gMDsKKyAgICAgICAgLyogTm8gZGF0YSBmb3IgdXMsIG1ha2Ugc2VsZWN0IHN0b3Ag cmV0dXJuaW5nICovCisgICAgICAgIGZpbGVzW2ZkXS5yZWFkID0gMDsKICAgICAvKiBCZWZvcmUg cmUtZW5hYmxpbmcgdGhlIGludGVycnVwdHMsIGluIGNhc2UgYSBwYWNrZXQganVzdCBhcnJpdmVk IGluIHRoZQogICAgICAqIG1lYW53aGlsZS4gKi8KICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFn cyk7CkBAIC02NjUsMyArNzg2LDE1IEBAIHNzaXplX3QgbmV0ZnJvbnRfcmVjZWl2ZShzdHJ1Y3Qg bmV0ZnJvbnRfZGV2ICpkZXYsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBsCiAgICAgcmV0 dXJuIGRldi0+cmxlbjsKIH0KICNlbmRpZgorCit2b2lkIG5ldGZyb250X3NldF9yeF9oYW5kbGVy KHN0cnVjdCBuZXRmcm9udF9kZXYgKmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAoKnRoZW5ldGlmX3J4KSh1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZykKK3sKKyAgICBpZiAoZGV2LT5u ZXRpZl9yeCAmJiBkZXYtPm5ldGlmX3J4ICE9IG5ldGlmX3J4KQorICAgICAgICBwcmludGsoIlJl cGxhY2luZyBuZXRpZl9yeCBoYW5kbGVyIGZvciBkZXYgJXNcbiIsIGRldi0+bm9kZW5hbWUpOwor CisgICAgZGV2LT5uZXRpZl9yeCA9IHRoZW5ldGlmX3J4OworICAgIGRldi0+bmV0aWZfcnhfYXJn ID0gYXJnOworfQotLSAKMi4zLjIgKEFwcGxlIEdpdC01NSkKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs