From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH net-next v4 1/4] xen-netback: add control ring boilerplate Date: Fri, 13 May 2016 09:37:26 +0100 Message-ID: <1463128649-20832-2-git-send-email-paul.durrant__44842.2094378204$1463129560$gmane$org@citrix.com> References: <1463128649-20832-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.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b18oV-0003yu-CY for xen-devel@lists.xenproject.org; Fri, 13 May 2016 08:51:15 +0000 In-Reply-To: <1463128649-20832-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: xen-devel@lists.xenproject.org, netdev@vger.kernel.org Cc: Paul Durrant List-Id: xen-devel@lists.xenproject.org TXkgcmVjZW50IHBhdGNoIHRvIGluY2x1ZGUveGVuL2ludGVyZmFjZS9pby9uZXRpZi5oIGRlZmlu ZXMgYSBuZXcgc2hhcmVkCnJpbmcgKGluIGFkZGl0aW9uIHRvIHRoZSByeCBhbmQgdHggcmluZ3Mp IGZvciBwYXNzaW5nIGNvbnRyb2wgbWVzc2FnZXMKZnJvbSBhIFZNIGZyb250ZW5kIGRyaXZlciB0 byBhIGJhY2tlbmQgZHJpdmVyLgoKVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3NhcnkgY29kZSB0 byB4ZW4tbmV0YmFjayB0byBtYXAgdGhpcyBuZXcgc2hhcmVkCnJpbmcsIHNob3VsZCBpdCBiZSBj cmVhdGVkIGJ5IGEgZnJvbnRlbmQsIGJ1dCBkb2VzIG5vdCBhZGQgaW1wbGVtZW50YXRpb25zCmZv ciBhbnkgb2YgdGhlIGRlZmluZWQgcHJvdG9jb2wgbWVzc2FnZXMuIFRoZXNlIGFyZSBhZGRlZCBp biBhIHN1YnNlcXVlbnQKcGF0Y2ggZm9yIGNsYXJpdHkuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1 cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT4KLS0tCgp2MjoKIC0gQ2hhbmdlZCBlcnJvciBoYW5kbGluZyBzdHlsZSBp biBjb25uZWN0X2N0cmxfcmluZygpCi0tLQogZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9u LmggICAgfCAgMjggKysrKysrKy0tLQogZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNl LmMgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL25l dC94ZW4tbmV0YmFjay9uZXRiYWNrLmMgICB8ICA5OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQogZHJpdmVycy9uZXQveGVuLW5ldGJhY2sveGVuYnVzLmMgICAgfCAgNzkgKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9u cygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGJh Y2svY29tbW9uLmggYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaAppbmRleCBmNDRi Mzg4Li4wOTNhMTJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24u aAorKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaApAQCAtMjYwLDYgKzI2MCwx MSBAQCBzdHJ1Y3QgeGVudmlmIHsKIAlzdHJ1Y3QgZGVudHJ5ICp4ZW52aWZfZGJnX3Jvb3Q7CiAj ZW5kaWYKIAorCXN0cnVjdCB4ZW5fbmV0aWZfY3RybF9iYWNrX3JpbmcgY3RybDsKKwlzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmN0cmxfdGFzazsKKwl3YWl0X3F1ZXVlX2hlYWRfdCBjdHJsX3dxOworCXVu c2lnbmVkIGludCBjdHJsX2lycTsKKwogCS8qIE1pc2NlbGxhbmVvdXMgcHJpdmF0ZSBzdHVmZi4g Ki8KIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogfTsKQEAgLTI4NSwxMCArMjkwLDE1IEBAIHN0 cnVjdCB4ZW52aWYgKnhlbnZpZl9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCiBpbnQgeGVu dmlmX2luaXRfcXVldWUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpOwogdm9pZCB4ZW52aWZf ZGVpbml0X3F1ZXVlKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKTsKIAotaW50IHhlbnZpZl9j b25uZWN0KHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLCB1bnNpZ25lZCBsb25nIHR4X3Jpbmdf cmVmLAotCQkgICB1bnNpZ25lZCBsb25nIHJ4X3JpbmdfcmVmLCB1bnNpZ25lZCBpbnQgdHhfZXZ0 Y2huLAotCQkgICB1bnNpZ25lZCBpbnQgcnhfZXZ0Y2huKTsKLXZvaWQgeGVudmlmX2Rpc2Nvbm5l Y3Qoc3RydWN0IHhlbnZpZiAqdmlmKTsKK2ludCB4ZW52aWZfY29ubmVjdF9kYXRhKHN0cnVjdCB4 ZW52aWZfcXVldWUgKnF1ZXVlLAorCQkJdW5zaWduZWQgbG9uZyB0eF9yaW5nX3JlZiwKKwkJCXVu c2lnbmVkIGxvbmcgcnhfcmluZ19yZWYsCisJCQl1bnNpZ25lZCBpbnQgdHhfZXZ0Y2huLAorCQkJ dW5zaWduZWQgaW50IHJ4X2V2dGNobik7Cit2b2lkIHhlbnZpZl9kaXNjb25uZWN0X2RhdGEoc3Ry dWN0IHhlbnZpZiAqdmlmKTsKK2ludCB4ZW52aWZfY29ubmVjdF9jdHJsKHN0cnVjdCB4ZW52aWYg KnZpZiwgZ3JhbnRfcmVmX3QgcmluZ19yZWYsCisJCQl1bnNpZ25lZCBpbnQgZXZ0Y2huKTsKK3Zv aWQgeGVudmlmX2Rpc2Nvbm5lY3RfY3RybChzdHJ1Y3QgeGVudmlmICp2aWYpOwogdm9pZCB4ZW52 aWZfZnJlZShzdHJ1Y3QgeGVudmlmICp2aWYpOwogCiBpbnQgeGVudmlmX3hlbmJ1c19pbml0KHZv aWQpOwpAQCAtMzAwLDEwICszMTAsMTAgQEAgaW50IHhlbnZpZl9xdWV1ZV9zdG9wcGVkKHN0cnVj dCB4ZW52aWZfcXVldWUgKnF1ZXVlKTsKIHZvaWQgeGVudmlmX3dha2VfcXVldWUoc3RydWN0IHhl bnZpZl9xdWV1ZSAqcXVldWUpOwogCiAvKiAoVW4pTWFwIGNvbW11bmljYXRpb24gcmluZ3MuICov Ci12b2lkIHhlbnZpZl91bm1hcF9mcm9udGVuZF9yaW5ncyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpx dWV1ZSk7Ci1pbnQgeGVudmlmX21hcF9mcm9udGVuZF9yaW5ncyhzdHJ1Y3QgeGVudmlmX3F1ZXVl ICpxdWV1ZSwKLQkJCSAgICAgIGdyYW50X3JlZl90IHR4X3JpbmdfcmVmLAotCQkJICAgICAgZ3Jh bnRfcmVmX3QgcnhfcmluZ19yZWYpOwordm9pZCB4ZW52aWZfdW5tYXBfZnJvbnRlbmRfZGF0YV9y aW5ncyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSk7CitpbnQgeGVudmlmX21hcF9mcm9udGVu ZF9kYXRhX3JpbmdzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAorCQkJCSAgIGdyYW50X3Jl Zl90IHR4X3JpbmdfcmVmLAorCQkJCSAgIGdyYW50X3JlZl90IHJ4X3JpbmdfcmVmKTsKIAogLyog Q2hlY2sgZm9yIFNLQnMgZnJvbSBmcm9udGVuZCBhbmQgc2NoZWR1bGUgYmFja2VuZCBwcm9jZXNz aW5nICovCiB2b2lkIHhlbnZpZl9uYXBpX3NjaGVkdWxlX29yX2VuYWJsZV9ldmVudHMoc3RydWN0 IHhlbnZpZl9xdWV1ZSAqcXVldWUpOwpAQCAtMzE4LDYgKzMyOCw4IEBAIHZvaWQgeGVudmlmX2tp Y2tfdGhyZWFkKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKTsKIAogaW50IHhlbnZpZl9kZWFs bG9jX2t0aHJlYWQodm9pZCAqZGF0YSk7CiAKK2ludCB4ZW52aWZfY3RybF9rdGhyZWFkKHZvaWQg KmRhdGEpOworCiB2b2lkIHhlbnZpZl9yeF9xdWV1ZV90YWlsKHN0cnVjdCB4ZW52aWZfcXVldWUg KnF1ZXVlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIAogdm9pZCB4ZW52aWZfY2Fycmllcl9vbihz dHJ1Y3QgeGVudmlmICp2aWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2sv aW50ZXJmYWNlLmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYwppbmRleCBm NTIzMWEyLi43OGExMGQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRl cmZhY2UuYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYwpAQCAtMTI4 LDYgKzEyOCwxNSBAQCBpcnFyZXR1cm5fdCB4ZW52aWZfaW50ZXJydXB0KGludCBpcnEsIHZvaWQg KmRldl9pZCkKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKK2lycXJldHVybl90IHhlbnZpZl9j dHJsX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IHhlbnZpZiAq dmlmID0gZGV2X2lkOworCisJd2FrZV91cCgmdmlmLT5jdHJsX3dxKTsKKworCXJldHVybiBJUlFf SEFORExFRDsKK30KKwogaW50IHhlbnZpZl9xdWV1ZV9zdG9wcGVkKHN0cnVjdCB4ZW52aWZfcXVl dWUgKnF1ZXVlKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxdWV1ZS0+dmlmLT5kZXY7 CkBAIC01MjcsOSArNTM2LDY2IEBAIHZvaWQgeGVudmlmX2NhcnJpZXJfb24oc3RydWN0IHhlbnZp ZiAqdmlmKQogCXJ0bmxfdW5sb2NrKCk7CiB9CiAKLWludCB4ZW52aWZfY29ubmVjdChzdHJ1Y3Qg eGVudmlmX3F1ZXVlICpxdWV1ZSwgdW5zaWduZWQgbG9uZyB0eF9yaW5nX3JlZiwKLQkJICAgdW5z aWduZWQgbG9uZyByeF9yaW5nX3JlZiwgdW5zaWduZWQgaW50IHR4X2V2dGNobiwKLQkJICAgdW5z aWduZWQgaW50IHJ4X2V2dGNobikKK2ludCB4ZW52aWZfY29ubmVjdF9jdHJsKHN0cnVjdCB4ZW52 aWYgKnZpZiwgZ3JhbnRfcmVmX3QgcmluZ19yZWYsCisJCQl1bnNpZ25lZCBpbnQgZXZ0Y2huKQor eworCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSB2aWYtPmRldjsKKwl2b2lkICphZGRyOworCXN0 cnVjdCB4ZW5fbmV0aWZfY3RybF9zcmluZyAqc2hhcmVkOworCXN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzazsKKwlpbnQgZXJyID0gLUVOT01FTTsKKworCWVyciA9IHhlbmJ1c19tYXBfcmluZ192YWxs b2MoeGVudmlmX3RvX3hlbmJ1c19kZXZpY2UodmlmKSwKKwkJCQkgICAgICZyaW5nX3JlZiwgMSwg JmFkZHIpOworCWlmIChlcnIpCisJCWdvdG8gZXJyOworCisJc2hhcmVkID0gKHN0cnVjdCB4ZW5f bmV0aWZfY3RybF9zcmluZyAqKWFkZHI7CisJQkFDS19SSU5HX0lOSVQoJnZpZi0+Y3RybCwgc2hh cmVkLCBYRU5fUEFHRV9TSVpFKTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnZpZi0+Y3RybF93 cSk7CisKKwllcnIgPSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKHZpZi0+ ZG9taWQsIGV2dGNobiwKKwkJCQkJCSAgICB4ZW52aWZfY3RybF9pbnRlcnJ1cHQsCisJCQkJCQkg ICAgMCwgZGV2LT5uYW1lLCB2aWYpOworCWlmIChlcnIgPCAwKQorCQlnb3RvIGVycl91bm1hcDsK KworCXZpZi0+Y3RybF9pcnEgPSBlcnI7CisKKwl0YXNrID0ga3RocmVhZF9jcmVhdGUoeGVudmlm X2N0cmxfa3RocmVhZCwgKHZvaWQgKil2aWYsCisJCQkgICAgICAiJXMtY29udHJvbCIsIGRldi0+ bmFtZSk7CisJaWYgKElTX0VSUih0YXNrKSkgeworCQlwcl93YXJuKCJDb3VsZCBub3QgYWxsb2Nh dGUga3RocmVhZCBmb3IgJXNcbiIsIGRldi0+bmFtZSk7CisJCWVyciA9IFBUUl9FUlIodGFzayk7 CisJCWdvdG8gZXJyX2RlaW5pdDsKKwl9CisKKwlnZXRfdGFza19zdHJ1Y3QodGFzayk7CisJdmlm LT5jdHJsX3Rhc2sgPSB0YXNrOworCisJd2FrZV91cF9wcm9jZXNzKHZpZi0+Y3RybF90YXNrKTsK KworCXJldHVybiAwOworCitlcnJfZGVpbml0OgorCXVuYmluZF9mcm9tX2lycWhhbmRsZXIodmlm LT5jdHJsX2lycSwgdmlmKTsKKwl2aWYtPmN0cmxfaXJxID0gMDsKKworZXJyX3VubWFwOgorCXhl bmJ1c191bm1hcF9yaW5nX3ZmcmVlKHhlbnZpZl90b194ZW5idXNfZGV2aWNlKHZpZiksCisJCQkJ dmlmLT5jdHJsLnNyaW5nKTsKKwl2aWYtPmN0cmwuc3JpbmcgPSBOVUxMOworCitlcnI6CisJcmV0 dXJuIGVycjsKK30KKworaW50IHhlbnZpZl9jb25uZWN0X2RhdGEoc3RydWN0IHhlbnZpZl9xdWV1 ZSAqcXVldWUsCisJCQl1bnNpZ25lZCBsb25nIHR4X3JpbmdfcmVmLAorCQkJdW5zaWduZWQgbG9u ZyByeF9yaW5nX3JlZiwKKwkJCXVuc2lnbmVkIGludCB0eF9ldnRjaG4sCisJCQl1bnNpZ25lZCBp bnQgcnhfZXZ0Y2huKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKIAlpbnQgZXJyID0g LUVOT01FTTsKQEAgLTUzOCw3ICs2MDQsOCBAQCBpbnQgeGVudmlmX2Nvbm5lY3Qoc3RydWN0IHhl bnZpZl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGxvbmcgdHhfcmluZ19yZWYsCiAJQlVHX09OKHF1 ZXVlLT50YXNrKTsKIAlCVUdfT04ocXVldWUtPmRlYWxsb2NfdGFzayk7CiAKLQllcnIgPSB4ZW52 aWZfbWFwX2Zyb250ZW5kX3JpbmdzKHF1ZXVlLCB0eF9yaW5nX3JlZiwgcnhfcmluZ19yZWYpOwor CWVyciA9IHhlbnZpZl9tYXBfZnJvbnRlbmRfZGF0YV9yaW5ncyhxdWV1ZSwgdHhfcmluZ19yZWYs CisJCQkJCSAgICAgcnhfcmluZ19yZWYpOwogCWlmIChlcnIgPCAwKQogCQlnb3RvIGVycjsKIApA QCAtNjE0LDcgKzY4MSw3IEBAIGVycl90eF91bmJpbmQ6CiAJdW5iaW5kX2Zyb21faXJxaGFuZGxl cihxdWV1ZS0+dHhfaXJxLCBxdWV1ZSk7CiAJcXVldWUtPnR4X2lycSA9IDA7CiBlcnJfdW5tYXA6 Ci0JeGVudmlmX3VubWFwX2Zyb250ZW5kX3JpbmdzKHF1ZXVlKTsKKwl4ZW52aWZfdW5tYXBfZnJv bnRlbmRfZGF0YV9yaW5ncyhxdWV1ZSk7CiAJbmV0aWZfbmFwaV9kZWwoJnF1ZXVlLT5uYXBpKTsK IGVycjoKIAltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKQEAgLTYzNCw3ICs3MDEsNyBAQCB2b2lk IHhlbnZpZl9jYXJyaWVyX29mZihzdHJ1Y3QgeGVudmlmICp2aWYpCiAJcnRubF91bmxvY2soKTsK IH0KIAotdm9pZCB4ZW52aWZfZGlzY29ubmVjdChzdHJ1Y3QgeGVudmlmICp2aWYpCit2b2lkIHhl bnZpZl9kaXNjb25uZWN0X2RhdGEoc3RydWN0IHhlbnZpZiAqdmlmKQogewogCXN0cnVjdCB4ZW52 aWZfcXVldWUgKnF1ZXVlID0gTlVMTDsKIAl1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyA9IHZpZi0+ bnVtX3F1ZXVlczsKQEAgLTY2OCwxMiArNzM1LDMyIEBAIHZvaWQgeGVudmlmX2Rpc2Nvbm5lY3Qo c3RydWN0IHhlbnZpZiAqdmlmKQogCQkJcXVldWUtPnR4X2lycSA9IDA7CiAJCX0KIAotCQl4ZW52 aWZfdW5tYXBfZnJvbnRlbmRfcmluZ3MocXVldWUpOworCQl4ZW52aWZfdW5tYXBfZnJvbnRlbmRf ZGF0YV9yaW5ncyhxdWV1ZSk7CiAJfQogCiAJeGVudmlmX21jYXN0X2FkZHJfbGlzdF9mcmVlKHZp Zik7CiB9CiAKK3ZvaWQgeGVudmlmX2Rpc2Nvbm5lY3RfY3RybChzdHJ1Y3QgeGVudmlmICp2aWYp Cit7CisJaWYgKHZpZi0+Y3RybF90YXNrKSB7CisJCWt0aHJlYWRfc3RvcCh2aWYtPmN0cmxfdGFz ayk7CisJCXB1dF90YXNrX3N0cnVjdCh2aWYtPmN0cmxfdGFzayk7CisJCXZpZi0+Y3RybF90YXNr ID0gTlVMTDsKKwl9CisKKwlpZiAodmlmLT5jdHJsX2lycSkgeworCQl1bmJpbmRfZnJvbV9pcnFo YW5kbGVyKHZpZi0+Y3RybF9pcnEsIHZpZik7CisJCXZpZi0+Y3RybF9pcnEgPSAwOworCX0KKwor CWlmICh2aWYtPmN0cmwuc3JpbmcpIHsKKwkJeGVuYnVzX3VubWFwX3JpbmdfdmZyZWUoeGVudmlm X3RvX3hlbmJ1c19kZXZpY2UodmlmKSwKKwkJCQkJdmlmLT5jdHJsLnNyaW5nKTsKKwkJdmlmLT5j dHJsLnNyaW5nID0gTlVMTDsKKwl9Cit9CisKIC8qIFJldmVyc2UgdGhlIHJlbGV2YW50IHBhcnRz IG9mIHhlbnZpZl9pbml0X3F1ZXVlKCkuCiAgKiBVc2VkIGZvciBxdWV1ZSB0ZWFyZG93biBmcm9t IHhlbnZpZl9mcmVlKCksIGFuZCBvbiB0aGUKICAqIGVycm9yIGhhbmRsaW5nIHBhdGhzIGluIHhl bmJ1cy5jOmNvbm5lY3QoKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25l dGJhY2suYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYwppbmRleCBiNDJmMjYw Li40NWFhNDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMK KysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jCkBAIC0xOTI1LDcgKzE5MjUs NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHhfZGVhbGxvY193b3JrX3RvZG8oc3RydWN0IHhlbnZp Zl9xdWV1ZSAqcXVldWUpCiAJcmV0dXJuIHF1ZXVlLT5kZWFsbG9jX2NvbnMgIT0gcXVldWUtPmRl YWxsb2NfcHJvZDsKIH0KIAotdm9pZCB4ZW52aWZfdW5tYXBfZnJvbnRlbmRfcmluZ3Moc3RydWN0 IHhlbnZpZl9xdWV1ZSAqcXVldWUpCit2b2lkIHhlbnZpZl91bm1hcF9mcm9udGVuZF9kYXRhX3Jp bmdzKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKQogewogCWlmIChxdWV1ZS0+dHguc3Jpbmcp CiAJCXhlbmJ1c191bm1hcF9yaW5nX3ZmcmVlKHhlbnZpZl90b194ZW5idXNfZGV2aWNlKHF1ZXVl LT52aWYpLApAQCAtMTkzNSw5ICsxOTM1LDkgQEAgdm9pZCB4ZW52aWZfdW5tYXBfZnJvbnRlbmRf cmluZ3Moc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpCiAJCQkJCXF1ZXVlLT5yeC5zcmluZyk7 CiB9CiAKLWludCB4ZW52aWZfbWFwX2Zyb250ZW5kX3JpbmdzKHN0cnVjdCB4ZW52aWZfcXVldWUg KnF1ZXVlLAotCQkJICAgICAgZ3JhbnRfcmVmX3QgdHhfcmluZ19yZWYsCi0JCQkgICAgICBncmFu dF9yZWZfdCByeF9yaW5nX3JlZikKK2ludCB4ZW52aWZfbWFwX2Zyb250ZW5kX2RhdGFfcmluZ3Mo c3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsCisJCQkJICAgZ3JhbnRfcmVmX3QgdHhfcmluZ19y ZWYsCisJCQkJICAgZ3JhbnRfcmVmX3QgcnhfcmluZ19yZWYpCiB7CiAJdm9pZCAqYWRkcjsKIAlz dHJ1Y3QgeGVuX25ldGlmX3R4X3NyaW5nICp0eHM7CkBAIC0xOTY0LDcgKzE5NjQsNyBAQCBpbnQg eGVudmlmX21hcF9mcm9udGVuZF9yaW5ncyhzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwKIAly ZXR1cm4gMDsKIAogZXJyOgotCXhlbnZpZl91bm1hcF9mcm9udGVuZF9yaW5ncyhxdWV1ZSk7CisJ eGVudmlmX3VubWFwX2Zyb250ZW5kX2RhdGFfcmluZ3MocXVldWUpOwogCXJldHVybiBlcnI7CiB9 CiAKQEAgLTIxNjMsNiArMjE2Myw5NSBAQCBpbnQgeGVudmlmX2RlYWxsb2Nfa3RocmVhZCh2b2lk ICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBtYWtlX2N0cmxfcmVzcG9uc2Uo c3RydWN0IHhlbnZpZiAqdmlmLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCB4ZW5fbmV0aWZfY3Ry bF9yZXF1ZXN0ICpyZXEsCisJCQkgICAgICAgdTMyIHN0YXR1cywgdTMyIGRhdGEpCit7CisJUklO R19JRFggaWR4ID0gdmlmLT5jdHJsLnJzcF9wcm9kX3B2dDsKKwlzdHJ1Y3QgeGVuX25ldGlmX2N0 cmxfcmVzcG9uc2UgcnNwID0geworCQkuaWQgPSByZXEtPmlkLAorCQkudHlwZSA9IHJlcS0+dHlw ZSwKKwkJLnN0YXR1cyA9IHN0YXR1cywKKwkJLmRhdGEgPSBkYXRhLAorCX07CisKKwkqUklOR19H RVRfUkVTUE9OU0UoJnZpZi0+Y3RybCwgaWR4KSA9IHJzcDsKKwl2aWYtPmN0cmwucnNwX3Byb2Rf cHZ0ID0gKytpZHg7Cit9CisKK3N0YXRpYyB2b2lkIHB1c2hfY3RybF9yZXNwb25zZShzdHJ1Y3Qg eGVudmlmICp2aWYpCit7CisJaW50IG5vdGlmeTsKKworCVJJTkdfUFVTSF9SRVNQT05TRVNfQU5E X0NIRUNLX05PVElGWSgmdmlmLT5jdHJsLCBub3RpZnkpOworCWlmIChub3RpZnkpCisJCW5vdGlm eV9yZW1vdGVfdmlhX2lycSh2aWYtPmN0cmxfaXJxKTsKK30KKworc3RhdGljIHZvaWQgcHJvY2Vz c19jdHJsX3JlcXVlc3Qoc3RydWN0IHhlbnZpZiAqdmlmLAorCQkJCSBjb25zdCBzdHJ1Y3QgeGVu X25ldGlmX2N0cmxfcmVxdWVzdCAqcmVxKQoreworCW1ha2VfY3RybF9yZXNwb25zZSh2aWYsIHJl cSwgWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQsCisJCQkgICAwKTsKKwlwdXNo X2N0cmxfcmVzcG9uc2UodmlmKTsKK30KKworc3RhdGljIHZvaWQgeGVudmlmX2N0cmxfYWN0aW9u KHN0cnVjdCB4ZW52aWYgKnZpZikKK3sKKwlmb3IgKDs7KSB7CisJCVJJTkdfSURYIHJlcV9wcm9k LCByZXFfY29uczsKKworCQlyZXFfcHJvZCA9IHZpZi0+Y3RybC5zcmluZy0+cmVxX3Byb2Q7CisJ CXJlcV9jb25zID0gdmlmLT5jdHJsLnJlcV9jb25zOworCisJCS8qIE1ha2Ugc3VyZSB3ZSBjYW4g c2VlIHJlcXVlc3RzIGJlZm9yZSB3ZSBwcm9jZXNzIHRoZW0uICovCisJCXJtYigpOworCisJCWlm IChyZXFfY29ucyA9PSByZXFfcHJvZCkKKwkJCWJyZWFrOworCisJCXdoaWxlIChyZXFfY29ucyAh PSByZXFfcHJvZCkgeworCQkJc3RydWN0IHhlbl9uZXRpZl9jdHJsX3JlcXVlc3QgcmVxOworCisJ CQlSSU5HX0NPUFlfUkVRVUVTVCgmdmlmLT5jdHJsLCByZXFfY29ucywgJnJlcSk7CisJCQlyZXFf Y29ucysrOworCisJCQlwcm9jZXNzX2N0cmxfcmVxdWVzdCh2aWYsICZyZXEpOworCQl9CisKKwkJ dmlmLT5jdHJsLnJlcV9jb25zID0gcmVxX2NvbnM7CisJCXZpZi0+Y3RybC5zcmluZy0+cmVxX2V2 ZW50ID0gcmVxX2NvbnMgKyAxOworCX0KK30KKworc3RhdGljIGJvb2wgeGVudmlmX2N0cmxfd29y a190b2RvKHN0cnVjdCB4ZW52aWYgKnZpZikKK3sKKwlpZiAobGlrZWx5KFJJTkdfSEFTX1VOQ09O U1VNRURfUkVRVUVTVFMoJnZpZi0+Y3RybCkpKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOwor fQorCitpbnQgeGVudmlmX2N0cmxfa3RocmVhZCh2b2lkICpkYXRhKQoreworCXN0cnVjdCB4ZW52 aWYgKnZpZiA9IGRhdGE7CisKKwlmb3IgKDs7KSB7CisJCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJs ZSh2aWYtPmN0cmxfd3EsCisJCQkJCSB4ZW52aWZfY3RybF93b3JrX3RvZG8odmlmKSB8fAorCQkJ CQkga3RocmVhZF9zaG91bGRfc3RvcCgpKTsKKwkJaWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkK KwkJCWJyZWFrOworCisJCXdoaWxlICh4ZW52aWZfY3RybF93b3JrX3RvZG8odmlmKSkKKwkJCXhl bnZpZl9jdHJsX2FjdGlvbih2aWYpOworCisJCWNvbmRfcmVzY2hlZCgpOworCX0KKworCXJldHVy biAwOworfQorCiBzdGF0aWMgaW50IF9faW5pdCBuZXRiYWNrX2luaXQodm9pZCkKIHsKIAlpbnQg cmMgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5ldGJhY2sveGVuYnVzLmMgYi9k cml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYwppbmRleCBiZDE4MmNkLi42YTMxZjI2IDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay94ZW5idXMuYworKysgYi9kcml2ZXJz L25ldC94ZW4tbmV0YmFjay94ZW5idXMuYwpAQCAtMzgsNyArMzgsOCBAQCBzdHJ1Y3QgYmFja2Vu ZF9pbmZvIHsKIAljb25zdCBjaGFyICpob3RwbHVnX3NjcmlwdDsKIH07CiAKLXN0YXRpYyBpbnQg Y29ubmVjdF9yaW5ncyhzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSwgc3RydWN0IHhlbnZpZl9xdWV1 ZSAqcXVldWUpOworc3RhdGljIGludCBjb25uZWN0X2RhdGFfcmluZ3Moc3RydWN0IGJhY2tlbmRf aW5mbyAqYmUsCisJCQkgICAgICBzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSk7CiBzdGF0aWMg dm9pZCBjb25uZWN0KHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKTsKIHN0YXRpYyBpbnQgcmVhZF94 ZW5idXNfdmlmX2ZsYWdzKHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKTsKIHN0YXRpYyBpbnQgYmFj a2VuZF9jcmVhdGVfeGVudmlmKHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKTsKQEAgLTM2Nyw2ICsz NjgsMTIgQEAgc3RhdGljIGludCBuZXRiYWNrX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpk ZXYsCiAJaWYgKGVycikKIAkJcHJfZGVidWcoIkVycm9yIHdyaXRpbmcgbXVsdGktcXVldWUtbWF4 LXF1ZXVlc1xuIik7CiAKKwllcnIgPSB4ZW5idXNfcHJpbnRmKFhCVF9OSUwsIGRldi0+bm9kZW5h bWUsCisJCQkgICAgImZlYXR1cmUtY3RybC1yaW5nIiwKKwkJCSAgICAiJXUiLCB0cnVlKTsKKwlp ZiAoZXJyKQorCQlwcl9kZWJ1ZygiRXJyb3Igd3JpdGluZyBmZWF0dXJlLWN0cmwtcmluZ1xuIik7 CisKIAlzY3JpcHQgPSB4ZW5idXNfcmVhZChYQlRfTklMLCBkZXYtPm5vZGVuYW1lLCAic2NyaXB0 IiwgTlVMTCk7CiAJaWYgKElTX0VSUihzY3JpcHQpKSB7CiAJCWVyciA9IFBUUl9FUlIoc2NyaXB0 KTsKQEAgLTQ1Nyw3ICs0NjQsOCBAQCBzdGF0aWMgdm9pZCBiYWNrZW5kX2Rpc2Nvbm5lY3Qoc3Ry dWN0IGJhY2tlbmRfaW5mbyAqYmUpCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiAJCXhlbnZpZl9k ZWJ1Z2ZzX2RlbGlmKGJlLT52aWYpOwogI2VuZGlmIC8qIENPTkZJR19ERUJVR19GUyAqLwotCQl4 ZW52aWZfZGlzY29ubmVjdChiZS0+dmlmKTsKKwkJeGVudmlmX2Rpc2Nvbm5lY3RfZGF0YShiZS0+ dmlmKTsKKwkJeGVudmlmX2Rpc2Nvbm5lY3RfY3RybChiZS0+dmlmKTsKIAl9CiB9CiAKQEAgLTgy NSw2ICs4MzMsNDggQEAgc3RhdGljIHZvaWQgaG90cGx1Z19zdGF0dXNfY2hhbmdlZChzdHJ1Y3Qg eGVuYnVzX3dhdGNoICp3YXRjaCwKIAlrZnJlZShzdHIpOwogfQogCitzdGF0aWMgaW50IGNvbm5l Y3RfY3RybF9yaW5nKHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKQoreworCXN0cnVjdCB4ZW5idXNf ZGV2aWNlICpkZXYgPSBiZS0+ZGV2OworCXN0cnVjdCB4ZW52aWYgKnZpZiA9IGJlLT52aWY7CisJ dW5zaWduZWQgaW50IHZhbDsKKwlncmFudF9yZWZfdCByaW5nX3JlZjsKKwl1bnNpZ25lZCBpbnQg ZXZ0Y2huOworCWludCBlcnI7CisKKwllcnIgPSB4ZW5idXNfZ2F0aGVyKFhCVF9OSUwsIGRldi0+ b3RoZXJlbmQsCisJCQkgICAgImN0cmwtcmluZy1yZWYiLCAiJXUiLCAmdmFsLCBOVUxMKTsKKwlp ZiAoZXJyKQorCQlnb3RvIGRvbmU7IC8qIFRoZSBmcm9udGVuZCBkb2VzIG5vdCBoYXZlIGEgY29u dHJvbCByaW5nICovCisKKwlyaW5nX3JlZiA9IHZhbDsKKworCWVyciA9IHhlbmJ1c19nYXRoZXIo WEJUX05JTCwgZGV2LT5vdGhlcmVuZCwKKwkJCSAgICAiZXZlbnQtY2hhbm5lbC1jdHJsIiwgIiV1 IiwgJnZhbCwgTlVMTCk7CisJaWYgKGVycikgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJy LAorCQkJCSAicmVhZGluZyAlcy9ldmVudC1jaGFubmVsLWN0cmwiLAorCQkJCSBkZXYtPm90aGVy ZW5kKTsKKwkJZ290byBmYWlsOworCX0KKworCWV2dGNobiA9IHZhbDsKKworCWVyciA9IHhlbnZp Zl9jb25uZWN0X2N0cmwodmlmLCByaW5nX3JlZiwgZXZ0Y2huKTsKKwlpZiAoZXJyKSB7CisJCXhl bmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsCisJCQkJICJtYXBwaW5nIHNoYXJlZC1mcmFtZSAldSBw b3J0ICV1IiwKKwkJCQkgcmluZ19yZWYsIGV2dGNobik7CisJCWdvdG8gZmFpbDsKKwl9CisKK2Rv bmU6CisJcmV0dXJuIDA7CisKK2ZhaWw6CisJcmV0dXJuIGVycjsKK30KKwogc3RhdGljIHZvaWQg Y29ubmVjdChzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSkKIHsKIAlpbnQgZXJyOwpAQCAtODYxLDYg KzkxMSwxMiBAQCBzdGF0aWMgdm9pZCBjb25uZWN0KHN0cnVjdCBiYWNrZW5kX2luZm8gKmJlKQog CXhlbl9yZWdpc3Rlcl93YXRjaGVycyhkZXYsIGJlLT52aWYpOwogCXJlYWRfeGVuYnVzX3ZpZl9m bGFncyhiZSk7CiAKKwllcnIgPSBjb25uZWN0X2N0cmxfcmluZyhiZSk7CisJaWYgKGVycikgewor CQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiY29ubmVjdGluZyBjb250cm9sIHJpbmciKTsK KwkJcmV0dXJuOworCX0KKwogCS8qIFVzZSB0aGUgbnVtYmVyIG9mIHF1ZXVlcyByZXF1ZXN0ZWQg YnkgdGhlIGZyb250ZW5kICovCiAJYmUtPnZpZi0+cXVldWVzID0gdnphbGxvYyhyZXF1ZXN0ZWRf bnVtX3F1ZXVlcyAqCiAJCQkJICBzaXplb2Yoc3RydWN0IHhlbnZpZl9xdWV1ZSkpOwpAQCAtODk2 LDExICs5NTIsMTIgQEAgc3RhdGljIHZvaWQgY29ubmVjdChzdHJ1Y3QgYmFja2VuZF9pbmZvICpi ZSkKIAkJcXVldWUtPnJlbWFpbmluZ19jcmVkaXQgPSBjcmVkaXRfYnl0ZXM7CiAJCXF1ZXVlLT5j cmVkaXRfdXNlYyA9IGNyZWRpdF91c2VjOwogCi0JCWVyciA9IGNvbm5lY3RfcmluZ3MoYmUsIHF1 ZXVlKTsKKwkJZXJyID0gY29ubmVjdF9kYXRhX3JpbmdzKGJlLCBxdWV1ZSk7CiAJCWlmIChlcnIp IHsKLQkJCS8qIGNvbm5lY3RfcmluZ3MoKSBjbGVhbnMgdXAgYWZ0ZXIgaXRzZWxmIG9uIGZhaWx1 cmUsCi0JCQkgKiBidXQgd2UgbmVlZCB0byBjbGVhbiB1cCBhZnRlciB4ZW52aWZfaW5pdF9xdWV1 ZSgpIGhlcmUsCi0JCQkgKiBhbmQgYWxzbyBjbGVhbiB1cCBhbnkgcHJldmlvdXNseSBpbml0aWFs aXNlZCBxdWV1ZXMuCisJCQkvKiBjb25uZWN0X2RhdGFfcmluZ3MoKSBjbGVhbnMgdXAgYWZ0ZXIg aXRzZWxmIG9uCisJCQkgKiBmYWlsdXJlLCBidXQgd2UgbmVlZCB0byBjbGVhbiB1cCBhZnRlcgor CQkJICogeGVudmlmX2luaXRfcXVldWUoKSBoZXJlLCBhbmQgYWxzbyBjbGVhbiB1cCBhbnkKKwkJ CSAqIHByZXZpb3VzbHkgaW5pdGlhbGlzZWQgcXVldWVzLgogCQkJICovCiAJCQl4ZW52aWZfZGVp bml0X3F1ZXVlKHF1ZXVlKTsKIAkJCWJlLT52aWYtPm51bV9xdWV1ZXMgPSBxdWV1ZV9pbmRleDsK QEAgLTkzNSwxNSArOTkyLDE3IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Qoc3RydWN0IGJhY2tlbmRf aW5mbyAqYmUpCiAKIGVycjoKIAlpZiAoYmUtPnZpZi0+bnVtX3F1ZXVlcyA+IDApCi0JCXhlbnZp Zl9kaXNjb25uZWN0KGJlLT52aWYpOyAvKiBDbGVhbiB1cCBleGlzdGluZyBxdWV1ZXMgKi8KKwkJ eGVudmlmX2Rpc2Nvbm5lY3RfZGF0YShiZS0+dmlmKTsgLyogQ2xlYW4gdXAgZXhpc3RpbmcgcXVl dWVzICovCiAJdmZyZWUoYmUtPnZpZi0+cXVldWVzKTsKIAliZS0+dmlmLT5xdWV1ZXMgPSBOVUxM OwogCWJlLT52aWYtPm51bV9xdWV1ZXMgPSAwOworCXhlbnZpZl9kaXNjb25uZWN0X2N0cmwoYmUt PnZpZik7CiAJcmV0dXJuOwogfQogCiAKLXN0YXRpYyBpbnQgY29ubmVjdF9yaW5ncyhzdHJ1Y3Qg YmFja2VuZF9pbmZvICpiZSwgc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpCitzdGF0aWMgaW50 IGNvbm5lY3RfZGF0YV9yaW5ncyhzdHJ1Y3QgYmFja2VuZF9pbmZvICpiZSwKKwkJCSAgICAgIHN0 cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKQogewogCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYg PSBiZS0+ZGV2OwogCXVuc2lnbmVkIGludCBudW1fcXVldWVzID0gcXVldWUtPnZpZi0+bnVtX3F1 ZXVlczsKQEAgLTEwMDcsOCArMTA2Niw4IEBAIHN0YXRpYyBpbnQgY29ubmVjdF9yaW5ncyhzdHJ1 Y3QgYmFja2VuZF9pbmZvICpiZSwgc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpCiAJfQogCiAJ LyogTWFwIHRoZSBzaGFyZWQgZnJhbWUsIGlycSBldGMuICovCi0JZXJyID0geGVudmlmX2Nvbm5l Y3QocXVldWUsIHR4X3JpbmdfcmVmLCByeF9yaW5nX3JlZiwKLQkJCSAgICAgdHhfZXZ0Y2huLCBy eF9ldnRjaG4pOworCWVyciA9IHhlbnZpZl9jb25uZWN0X2RhdGEocXVldWUsIHR4X3JpbmdfcmVm LCByeF9yaW5nX3JlZiwKKwkJCQkgIHR4X2V2dGNobiwgcnhfZXZ0Y2huKTsKIAlpZiAoZXJyKSB7 CiAJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIsCiAJCQkJICJtYXBwaW5nIHNoYXJlZC1mcmFt ZXMgJWx1LyVsdSBwb3J0IHR4ICV1IHJ4ICV1IiwKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK