From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH net-next 2/3] xen-netback: support multiple extra info fragments passed from frontend Date: Thu, 10 Mar 2016 12:30:27 +0000 Message-ID: <1457613028-10381-3-git-send-email-paul.durrant__5201.08496207303$1457613707$gmane$org@citrix.com> References: <1457613028-10381-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1adztC-0004wA-8v for xen-devel@lists.xenproject.org; Thu, 10 Mar 2016 12:40:26 +0000 In-Reply-To: <1457613028-10381-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: netdev@vger.kernel.org, xen-devel@lists.xenproject.org Cc: Paul Durrant , Wei Liu List-Id: xen-devel@lists.xenproject.org VGhlIGNvZGUgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgYSBmcm9udGVuZCBwYXNzaW5nIG11 bHRpcGxlIGV4dHJhIGluZm8KZnJhZ21lbnRzIHRvIHRoZSBiYWNrZW5kIGluIGEgdHggcmVxdWVz dC4gVGhlIHhlbnZpZl9nZXRfZXh0cmFzKCkgZnVuY3Rpb24KaGFuZGxlcyBtdWx0aXBsZSBleHRy YV9pbmZvIGZyYWdtZW50cyBidXQgbWFrZV90eF9yZXNwb25zZSgpIGFzc3VtZXMgdGhlcmUKaXMg b25seSBldmVyIGEgc2luZ2xlIGV4dHJhIGluZm8gZnJhZ21lbnQuCgpUaGlzIHBhdGNoIG1vZGlm aWVzIHhlbnZpZl9nZXRfZXh0cmFzKCkgdG8gcGFzcyBiYWNrIGEgY291bnQgb2YgZXh0cmEKaW5m byBmcmFnbWVudHMsIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIG1ha2VfdHhfcmVzcG9uc2UoKSAo YWZ0ZXIKcG9zc2libHkgYmVpbmcgc3Rhc2hlZCBpbiBwZW5kaW5nX3R4X2luZm8gZm9yIGRlZmVy cmVkIHJlc3BvbnNlcykuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu dEBjaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiBkcml2 ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaCAgfCAgMSArCiBkcml2ZXJzL25ldC94ZW4tbmV0 YmFjay9uZXRiYWNrLmMgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmggYi9kcml2ZXJzL25l dC94ZW4tbmV0YmFjay9jb21tb24uaAppbmRleCAxMTI4MjUyLi5mNDRiMzg4IDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaAorKysgYi9kcml2ZXJzL25ldC94ZW4t bmV0YmFjay9jb21tb24uaApAQCAtNTIsNiArNTIsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBw ZW5kaW5nX3JpbmdfaWR4X3Q7CiAKIHN0cnVjdCBwZW5kaW5nX3R4X2luZm8gewogCXN0cnVjdCB4 ZW5fbmV0aWZfdHhfcmVxdWVzdCByZXE7IC8qIHR4IHJlcXVlc3QgKi8KKwl1bnNpZ25lZCBpbnQg ZXh0cmFfY291bnQ7CiAJLyogQ2FsbGJhY2sgZGF0YSBmb3IgcmVsZWFzZWQgU0tCcy4gVGhlIGNh bGxiYWNrIGlzIGFsd2F5cwogCSAqIHhlbnZpZl96ZXJvY29weV9jYWxsYmFjaywgZGVzYyBjb250 YWlucyB0aGUgcGVuZGluZ19pZHgsIHdoaWNoIGlzCiAJICogYWxzbyBhbiBpbmRleCBpbiBwZW5k aW5nX3R4X2luZm8gYXJyYXkuIEl0IGlzIGluaXRpYWxpemVkIGluCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9u ZXRiYWNrLmMKaW5kZXggNjFiOTdjMy4uYjQyZjI2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv eGVuLW5ldGJhY2svbmV0YmFjay5jCisrKyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJh Y2suYwpAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfaWR4X3JlbGVhc2Uoc3Ry dWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsIHUxNiBwZW5kaW5nX2lkeCwKIAogc3RhdGljIHZvaWQg bWFrZV90eF9yZXNwb25zZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAkJCSAgICAgc3Ry dWN0IHhlbl9uZXRpZl90eF9yZXF1ZXN0ICp0eHAsCisJCQkgICAgIHVuc2lnbmVkIGludCBleHRy YV9jb3VudCwKIAkJCSAgICAgczggICAgICAgc3QpOwogc3RhdGljIHZvaWQgcHVzaF90eF9yZXNw b25zZXMoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpOwogCkBAIC02OTYsMTQgKzY5NywxNSBA QCB2b2lkIHhlbnZpZl90eF9jcmVkaXRfY2FsbGJhY2sodW5zaWduZWQgbG9uZyBkYXRhKQogfQog CiBzdGF0aWMgdm9pZCB4ZW52aWZfdHhfZXJyKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAot CQkJICBzdHJ1Y3QgeGVuX25ldGlmX3R4X3JlcXVlc3QgKnR4cCwgUklOR19JRFggZW5kKQorCQkJ ICBzdHJ1Y3QgeGVuX25ldGlmX3R4X3JlcXVlc3QgKnR4cCwKKwkJCSAgdW5zaWduZWQgaW50IGV4 dHJhX2NvdW50LCBSSU5HX0lEWCBlbmQpCiB7CiAJUklOR19JRFggY29ucyA9IHF1ZXVlLT50eC5y ZXFfY29uczsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJZG8gewogCQlzcGluX2xvY2tfaXJx c2F2ZSgmcXVldWUtPnJlc3BvbnNlX2xvY2ssIGZsYWdzKTsKLQkJbWFrZV90eF9yZXNwb25zZShx dWV1ZSwgdHhwLCBYRU5fTkVUSUZfUlNQX0VSUk9SKTsKKwkJbWFrZV90eF9yZXNwb25zZShxdWV1 ZSwgdHhwLCBleHRyYV9jb3VudCwgWEVOX05FVElGX1JTUF9FUlJPUik7CiAJCXB1c2hfdHhfcmVz cG9uc2VzKHF1ZXVlKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcXVldWUtPnJlc3BvbnNl X2xvY2ssIGZsYWdzKTsKIAkJaWYgKGNvbnMgPT0gZW5kKQpAQCAtNzI0LDYgKzcyNiw3IEBAIHN0 YXRpYyB2b2lkIHhlbnZpZl9mYXRhbF90eF9lcnIoc3RydWN0IHhlbnZpZiAqdmlmKQogCiBzdGF0 aWMgaW50IHhlbnZpZl9jb3VudF9yZXF1ZXN0cyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwK IAkJCQkgc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1ZXN0ICpmaXJzdCwKKwkJCQkgdW5zaWduZWQg aW50IGV4dHJhX2NvdW50LAogCQkJCSBzdHJ1Y3QgeGVuX25ldGlmX3R4X3JlcXVlc3QgKnR4cCwK IAkJCQkgaW50IHdvcmtfdG9fZG8pCiB7CkBAIC04MTIsNyArODE1LDcgQEAgc3RhdGljIGludCB4 ZW52aWZfY291bnRfcmVxdWVzdHMoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJfSB3aGls ZSAobW9yZV9kYXRhKTsKIAogCWlmIChkcm9wX2VycikgewotCQl4ZW52aWZfdHhfZXJyKHF1ZXVl LCBmaXJzdCwgY29ucyArIHNsb3RzKTsKKwkJeGVudmlmX3R4X2VycihxdWV1ZSwgZmlyc3QsIGV4 dHJhX2NvdW50LCBjb25zICsgc2xvdHMpOwogCQlyZXR1cm4gZHJvcF9lcnI7CiAJfQogCkBAIC04 MjcsOSArODMwLDEwIEBAIHN0cnVjdCB4ZW52aWZfdHhfY2IgewogI2RlZmluZSBYRU5WSUZfVFhf Q0Ioc2tiKSAoKHN0cnVjdCB4ZW52aWZfdHhfY2IgKikoc2tiKS0+Y2IpCiAKIHN0YXRpYyBpbmxp bmUgdm9pZCB4ZW52aWZfdHhfY3JlYXRlX21hcF9vcChzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1 ZSwKLQkJCQkJICB1MTYgcGVuZGluZ19pZHgsCi0JCQkJCSAgc3RydWN0IHhlbl9uZXRpZl90eF9y ZXF1ZXN0ICp0eHAsCi0JCQkJCSAgc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICptb3ApCisJ CQkJCSAgIHUxNiBwZW5kaW5nX2lkeCwKKwkJCQkJICAgc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1 ZXN0ICp0eHAsCisJCQkJCSAgIHVuc2lnbmVkIGludCBleHRyYV9jb3VudCwKKwkJCQkJICAgc3Ry dWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICptb3ApCiB7CiAJcXVldWUtPnBhZ2VzX3RvX21hcFtt b3AtcXVldWUtPnR4X21hcF9vcHNdID0gcXVldWUtPm1tYXBfcGFnZXNbcGVuZGluZ19pZHhdOwog CWdudHRhYl9zZXRfbWFwX29wKG1vcCwgaWR4X3RvX2thZGRyKHF1ZXVlLCBwZW5kaW5nX2lkeCks CkBAIC04MzgsNiArODQyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHhlbnZpZl90eF9jcmVhdGVf bWFwX29wKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCiAJbWVtY3B5KCZxdWV1ZS0+cGVu ZGluZ190eF9pbmZvW3BlbmRpbmdfaWR4XS5yZXEsIHR4cCwKIAkgICAgICAgc2l6ZW9mKCp0eHAp KTsKKwlxdWV1ZS0+cGVuZGluZ190eF9pbmZvW3BlbmRpbmdfaWR4XS5leHRyYV9jb3VudCA9IGV4 dHJhX2NvdW50OwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICp4ZW52aWZfYWxs b2Nfc2tiKHVuc2lnbmVkIGludCBzaXplKQpAQCAtODgwLDcgKzg4NSw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgKnhlbnZpZl9nZXRfcmVxdWVzdHMoc3RydWN0IHhlbnZp Zl9xdWV1ZSAqcXVlCiAJICAgICBzaGluZm8tPm5yX2ZyYWdzKyssIHR4cCsrLCBnb3ArKykgewog CQlpbmRleCA9IHBlbmRpbmdfaW5kZXgocXVldWUtPnBlbmRpbmdfY29ucysrKTsKIAkJcGVuZGlu Z19pZHggPSBxdWV1ZS0+cGVuZGluZ19yaW5nW2luZGV4XTsKLQkJeGVudmlmX3R4X2NyZWF0ZV9t YXBfb3AocXVldWUsIHBlbmRpbmdfaWR4LCB0eHAsIGdvcCk7CisJCXhlbnZpZl90eF9jcmVhdGVf bWFwX29wKHF1ZXVlLCBwZW5kaW5nX2lkeCwgdHhwLCAwLCBnb3ApOwogCQlmcmFnX3NldF9wZW5k aW5nX2lkeCgmZnJhZ3Nbc2hpbmZvLT5ucl9mcmFnc10sIHBlbmRpbmdfaWR4KTsKIAl9CiAKQEAg LTg5Myw3ICs4OTgsOCBAQCBzdGF0aWMgc3RydWN0IGdudHRhYl9tYXBfZ3JhbnRfcmVmICp4ZW52 aWZfZ2V0X3JlcXVlc3RzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZQogCQkgICAgIHNoaW5mby0+ bnJfZnJhZ3MrKywgdHhwKyssIGdvcCsrKSB7CiAJCQlpbmRleCA9IHBlbmRpbmdfaW5kZXgocXVl dWUtPnBlbmRpbmdfY29ucysrKTsKIAkJCXBlbmRpbmdfaWR4ID0gcXVldWUtPnBlbmRpbmdfcmlu Z1tpbmRleF07Ci0JCQl4ZW52aWZfdHhfY3JlYXRlX21hcF9vcChxdWV1ZSwgcGVuZGluZ19pZHgs IHR4cCwgZ29wKTsKKwkJCXhlbnZpZl90eF9jcmVhdGVfbWFwX29wKHF1ZXVlLCBwZW5kaW5nX2lk eCwgdHhwLCAwLAorCQkJCQkJZ29wKTsKIAkJCWZyYWdfc2V0X3BlbmRpbmdfaWR4KCZmcmFnc1tz aGluZm8tPm5yX2ZyYWdzXSwKIAkJCQkJICAgICBwZW5kaW5nX2lkeCk7CiAJCX0KQEAgLTEwOTUs OCArMTEwMSw5IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl9maWxsX2ZyYWdzKHN0cnVjdCB4ZW52aWZf cXVldWUgKnF1ZXVlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogfQogCiBzdGF0aWMgaW50IHhlbnZp Zl9nZXRfZXh0cmFzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAotCQkJCXN0cnVjdCB4ZW5f bmV0aWZfZXh0cmFfaW5mbyAqZXh0cmFzLAotCQkJCWludCB3b3JrX3RvX2RvKQorCQkJICAgICBz dHJ1Y3QgeGVuX25ldGlmX2V4dHJhX2luZm8gKmV4dHJhcywKKwkJCSAgICAgdW5zaWduZWQgaW50 ICpleHRyYV9jb3VudCwKKwkJCSAgICAgaW50IHdvcmtfdG9fZG8pCiB7CiAJc3RydWN0IHhlbl9u ZXRpZl9leHRyYV9pbmZvIGV4dHJhOwogCVJJTkdfSURYIGNvbnMgPSBxdWV1ZS0+dHgucmVxX2Nv bnM7CkBAIC0xMTA5LDkgKzExMTYsMTIgQEAgc3RhdGljIGludCB4ZW52aWZfZ2V0X2V4dHJhcyhz dHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAkJfQogCiAJCVJJTkdfQ09QWV9SRVFVRVNUKCZx dWV1ZS0+dHgsIGNvbnMsICZleHRyYSk7CisKKwkJcXVldWUtPnR4LnJlcV9jb25zID0gKytjb25z OworCQkoKmV4dHJhX2NvdW50KSsrOworCiAJCWlmICh1bmxpa2VseSghZXh0cmEudHlwZSB8fAog CQkJICAgICBleHRyYS50eXBlID49IFhFTl9ORVRJRl9FWFRSQV9UWVBFX01BWCkpIHsKLQkJCXF1 ZXVlLT50eC5yZXFfY29ucyA9ICsrY29uczsKIAkJCW5ldGRldl9lcnIocXVldWUtPnZpZi0+ZGV2 LAogCQkJCSAgICJJbnZhbGlkIGV4dHJhIHR5cGU6ICVkXG4iLCBleHRyYS50eXBlKTsKIAkJCXhl bnZpZl9mYXRhbF90eF9lcnIocXVldWUtPnZpZik7CkBAIC0xMTE5LDcgKzExMjksNiBAQCBzdGF0 aWMgaW50IHhlbnZpZl9nZXRfZXh0cmFzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCQl9 CiAKIAkJbWVtY3B5KCZleHRyYXNbZXh0cmEudHlwZSAtIDFdLCAmZXh0cmEsIHNpemVvZihleHRy YSkpOwotCQlxdWV1ZS0+dHgucmVxX2NvbnMgPSArK2NvbnM7CiAJfSB3aGlsZSAoZXh0cmEuZmxh Z3MgJiBYRU5fTkVUSUZfRVhUUkFfRkxBR19NT1JFKTsKIAogCXJldHVybiB3b3JrX3RvX2RvOwpA QCAtMTI5NCw2ICsxMzAzLDcgQEAgc3RhdGljIHZvaWQgeGVudmlmX3R4X2J1aWxkX2dvcHMoc3Ry dWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJCXN0cnVjdCB4ZW5fbmV0aWZfdHhfcmVxdWVzdCB0 eHJlcTsKIAkJc3RydWN0IHhlbl9uZXRpZl90eF9yZXF1ZXN0IHR4ZnJhZ3NbWEVOX05FVEJLX0xF R0FDWV9TTE9UU19NQVhdOwogCQlzdHJ1Y3QgeGVuX25ldGlmX2V4dHJhX2luZm8gZXh0cmFzW1hF Tl9ORVRJRl9FWFRSQV9UWVBFX01BWC0xXTsKKwkJdW5zaWduZWQgaW50IGV4dHJhX2NvdW50Owog CQl1MTYgcGVuZGluZ19pZHg7CiAJCVJJTkdfSURYIGlkeDsKIAkJaW50IHdvcmtfdG9fZG87CkBA IC0xMzMwLDggKzEzNDAsMTAgQEAgc3RhdGljIHZvaWQgeGVudmlmX3R4X2J1aWxkX2dvcHMoc3Ry dWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJCXF1ZXVlLT50eC5yZXFfY29ucyA9ICsraWR4Owog CiAJCW1lbXNldChleHRyYXMsIDAsIHNpemVvZihleHRyYXMpKTsKKwkJZXh0cmFfY291bnQgPSAw OwogCQlpZiAodHhyZXEuZmxhZ3MgJiBYRU5fTkVUVFhGX2V4dHJhX2luZm8pIHsKIAkJCXdvcmtf dG9fZG8gPSB4ZW52aWZfZ2V0X2V4dHJhcyhxdWV1ZSwgZXh0cmFzLAorCQkJCQkJICAgICAgICZl eHRyYV9jb3VudCwKIAkJCQkJCSAgICAgICB3b3JrX3RvX2RvKTsKIAkJCWlkeCA9IHF1ZXVlLT50 eC5yZXFfY29uczsKIAkJCWlmICh1bmxpa2VseSh3b3JrX3RvX2RvIDwgMCkpCkBAIC0xMzQ0LDcg KzEzNTYsNyBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfdHhfYnVpbGRfZ29wcyhzdHJ1Y3QgeGVudmlm X3F1ZXVlICpxdWV1ZSwKIAkJCWV4dHJhID0gJmV4dHJhc1tYRU5fTkVUSUZfRVhUUkFfVFlQRV9N Q0FTVF9BREQgLSAxXTsKIAkJCXJldCA9IHhlbnZpZl9tY2FzdF9hZGQocXVldWUtPnZpZiwgZXh0 cmEtPnUubWNhc3QuYWRkcik7CiAKLQkJCW1ha2VfdHhfcmVzcG9uc2UocXVldWUsICZ0eHJlcSwK KwkJCW1ha2VfdHhfcmVzcG9uc2UocXVldWUsICZ0eHJlcSwgZXh0cmFfY291bnQsCiAJCQkJCSAo cmV0ID09IDApID8KIAkJCQkJIFhFTl9ORVRJRl9SU1BfT0tBWSA6CiAJCQkJCSBYRU5fTkVUSUZf UlNQX0VSUk9SKTsKQEAgLTEzNTgsMTIgKzEzNzAsMTQgQEAgc3RhdGljIHZvaWQgeGVudmlmX3R4 X2J1aWxkX2dvcHMoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJCQlleHRyYSA9ICZleHRy YXNbWEVOX05FVElGX0VYVFJBX1RZUEVfTUNBU1RfREVMIC0gMV07CiAJCQl4ZW52aWZfbWNhc3Rf ZGVsKHF1ZXVlLT52aWYsIGV4dHJhLT51Lm1jYXN0LmFkZHIpOwogCi0JCQltYWtlX3R4X3Jlc3Bv bnNlKHF1ZXVlLCAmdHhyZXEsIFhFTl9ORVRJRl9SU1BfT0tBWSk7CisJCQltYWtlX3R4X3Jlc3Bv bnNlKHF1ZXVlLCAmdHhyZXEsIGV4dHJhX2NvdW50LAorCQkJCQkgWEVOX05FVElGX1JTUF9PS0FZ KTsKIAkJCXB1c2hfdHhfcmVzcG9uc2VzKHF1ZXVlKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJ cmV0ID0geGVudmlmX2NvdW50X3JlcXVlc3RzKHF1ZXVlLCAmdHhyZXEsIHR4ZnJhZ3MsIHdvcmtf dG9fZG8pOworCQlyZXQgPSB4ZW52aWZfY291bnRfcmVxdWVzdHMocXVldWUsICZ0eHJlcSwgZXh0 cmFfY291bnQsCisJCQkJCSAgICB0eGZyYWdzLCB3b3JrX3RvX2RvKTsKIAkJaWYgKHVubGlrZWx5 KHJldCA8IDApKQogCQkJYnJlYWs7CiAKQEAgLTEzNzIsNyArMTM4Niw3IEBAIHN0YXRpYyB2b2lk IHhlbnZpZl90eF9idWlsZF9nb3BzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCQlpZiAo dW5saWtlbHkodHhyZXEuc2l6ZSA8IEVUSF9ITEVOKSkgewogCQkJbmV0ZGV2X2RiZyhxdWV1ZS0+ dmlmLT5kZXYsCiAJCQkJICAgIkJhZCBwYWNrZXQgc2l6ZTogJWRcbiIsIHR4cmVxLnNpemUpOwot CQkJeGVudmlmX3R4X2VycihxdWV1ZSwgJnR4cmVxLCBpZHgpOworCQkJeGVudmlmX3R4X2Vycihx dWV1ZSwgJnR4cmVxLCBleHRyYV9jb3VudCwgaWR4KTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTEz OTcsNyArMTQxMSw3IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl90eF9idWlsZF9nb3BzKHN0cnVjdCB4 ZW52aWZfcXVldWUgKnF1ZXVlLAogCQlpZiAodW5saWtlbHkoc2tiID09IE5VTEwpKSB7CiAJCQlu ZXRkZXZfZGJnKHF1ZXVlLT52aWYtPmRldiwKIAkJCQkgICAiQ2FuJ3QgYWxsb2NhdGUgYSBza2Ig aW4gc3RhcnRfeG1pdC5cbiIpOwotCQkJeGVudmlmX3R4X2VycihxdWV1ZSwgJnR4cmVxLCBpZHgp OworCQkJeGVudmlmX3R4X2VycihxdWV1ZSwgJnR4cmVxLCBleHRyYV9jb3VudCwgaWR4KTsKIAkJ CWJyZWFrOwogCQl9CiAKQEAgLTE0MTYsNyArMTQzMCw3IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl90 eF9idWlsZF9nb3BzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCQkJbnNrYiA9IHhlbnZp Zl9hbGxvY19za2IoMCk7CiAJCQlpZiAodW5saWtlbHkobnNrYiA9PSBOVUxMKSkgewogCQkJCWtm cmVlX3NrYihza2IpOwotCQkJCXhlbnZpZl90eF9lcnIocXVldWUsICZ0eHJlcSwgaWR4KTsKKwkJ CQl4ZW52aWZfdHhfZXJyKHF1ZXVlLCAmdHhyZXEsIGV4dHJhX2NvdW50LCBpZHgpOwogCQkJCWlm IChuZXRfcmF0ZWxpbWl0KCkpCiAJCQkJCW5ldGRldl9lcnIocXVldWUtPnZpZi0+ZGV2LAogCQkJ CQkJICAgIkNhbid0IGFsbG9jYXRlIHRoZSBmcmFnX2xpc3Qgc2tiLlxuIik7CkBAIC0xNDU3LDEz ICsxNDcxLDE2IEBAIHN0YXRpYyB2b2lkIHhlbnZpZl90eF9idWlsZF9nb3BzKHN0cnVjdCB4ZW52 aWZfcXVldWUgKnF1ZXVlLAogCQlpZiAoZGF0YV9sZW4gPCB0eHJlcS5zaXplKSB7CiAJCQlmcmFn X3NldF9wZW5kaW5nX2lkeCgmc2tiX3NoaW5mbyhza2IpLT5mcmFnc1swXSwKIAkJCQkJICAgICBw ZW5kaW5nX2lkeCk7Ci0JCQl4ZW52aWZfdHhfY3JlYXRlX21hcF9vcChxdWV1ZSwgcGVuZGluZ19p ZHgsICZ0eHJlcSwgZ29wKTsKKwkJCXhlbnZpZl90eF9jcmVhdGVfbWFwX29wKHF1ZXVlLCBwZW5k aW5nX2lkeCwgJnR4cmVxLAorCQkJCQkJZXh0cmFfY291bnQsIGdvcCk7CiAJCQlnb3ArKzsKIAkJ fSBlbHNlIHsKIAkJCWZyYWdfc2V0X3BlbmRpbmdfaWR4KCZza2Jfc2hpbmZvKHNrYiktPmZyYWdz WzBdLAogCQkJCQkgICAgIElOVkFMSURfUEVORElOR19JRFgpOwotCQkJbWVtY3B5KCZxdWV1ZS0+ cGVuZGluZ190eF9pbmZvW3BlbmRpbmdfaWR4XS5yZXEsICZ0eHJlcSwKLQkJCSAgICAgICBzaXpl b2YodHhyZXEpKTsKKwkJCW1lbWNweSgmcXVldWUtPnBlbmRpbmdfdHhfaW5mb1twZW5kaW5nX2lk eF0ucmVxLAorCQkJICAgICAgICZ0eHJlcSwgc2l6ZW9mKHR4cmVxKSk7CisJCQlxdWV1ZS0+cGVu ZGluZ190eF9pbmZvW3BlbmRpbmdfaWR4XS5leHRyYV9jb3VudCA9CisJCQkJZXh0cmFfY291bnQ7 CiAJCX0KIAogCQlxdWV1ZS0+cGVuZGluZ19jb25zKys7CkBAIC0xODA0LDcgKzE4MjEsOCBAQCBz dGF0aWMgdm9pZCB4ZW52aWZfaWR4X3JlbGVhc2Uoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUs IHUxNiBwZW5kaW5nX2lkeCwKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZxdWV1ZS0+cmVzcG9uc2Vf bG9jaywgZmxhZ3MpOwogCi0JbWFrZV90eF9yZXNwb25zZShxdWV1ZSwgJnBlbmRpbmdfdHhfaW5m by0+cmVxLCBzdGF0dXMpOworCW1ha2VfdHhfcmVzcG9uc2UocXVldWUsICZwZW5kaW5nX3R4X2lu Zm8tPnJlcSwKKwkJCSBwZW5kaW5nX3R4X2luZm8tPmV4dHJhX2NvdW50LCBzdGF0dXMpOwogCiAJ LyogUmVsZWFzZSB0aGUgcGVuZGluZyBpbmRleCBiZWZvcmUgcHVzaW5nIHRoZSBUeCByZXNwb25z ZSBzbwogCSAqIGl0cyBhdmFpbGFibGUgYmVmb3JlIGEgbmV3IFR4IHJlcXVlc3QgaXMgcHVzaGVk IGJ5IHRoZQpAQCAtMTgyMSw2ICsxODM5LDcgQEAgc3RhdGljIHZvaWQgeGVudmlmX2lkeF9yZWxl YXNlKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLCB1MTYgcGVuZGluZ19pZHgsCiAKIHN0YXRp YyB2b2lkIG1ha2VfdHhfcmVzcG9uc2Uoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCiAJCQkg ICAgIHN0cnVjdCB4ZW5fbmV0aWZfdHhfcmVxdWVzdCAqdHhwLAorCQkJICAgICB1bnNpZ25lZCBp bnQgZXh0cmFfY291bnQsCiAJCQkgICAgIHM4ICAgICAgIHN0KQogewogCVJJTkdfSURYIGkgPSBx dWV1ZS0+dHgucnNwX3Byb2RfcHZ0OwpAQCAtMTgzMCw3ICsxODQ5LDcgQEAgc3RhdGljIHZvaWQg bWFrZV90eF9yZXNwb25zZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAlyZXNwLT5pZCAg ICAgPSB0eHAtPmlkOwogCXJlc3AtPnN0YXR1cyA9IHN0OwogCi0JaWYgKHR4cC0+ZmxhZ3MgJiBY RU5fTkVUVFhGX2V4dHJhX2luZm8pCisJd2hpbGUgKGV4dHJhX2NvdW50LS0gIT0gMCkKIAkJUklO R19HRVRfUkVTUE9OU0UoJnF1ZXVlLT50eCwgKytpKS0+c3RhdHVzID0gWEVOX05FVElGX1JTUF9O VUxMOwogCiAJcXVldWUtPnR4LnJzcF9wcm9kX3B2dCA9ICsraTsKLS0gCjIuMS40CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK