From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 2/3] xen-disk: add support for multi-page shared rings Date: Tue, 20 Jun 2017 09:47:55 -0400 Message-ID: <20170620134756.9632-3-paul.durrant@citrix.com> References: <20170620134756.9632-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNJWJ-0007TU-OE for xen-devel@lists.xenproject.org; Tue, 20 Jun 2017 13:48:39 +0000 In-Reply-To: <20170620134756.9632-1-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, qemu-devel@nongnu.org, qemu-block@nongnu.org Cc: Anthony Perard , Kevin Wolf , Paul Durrant , Stefano Stabellini , Max Reitz List-Id: xen-devel@lists.xenproject.org VGhlIGJsa2lmIHByb3RvY29sIGhhcyBoYWQgcHJvdmlzaW9uIGZvciBuZWdvdGlhdGlvbiBvZiBt dWx0aS1wYWdlIHNoYXJlZApyaW5ncyBmb3Igc29tZSB0aW1lIG5vdyBhbmQgbWFueSBndWVzdCBP UyBoYXZlIHN1cHBvcnQgaW4gdGhlaXIgZnJvbnRlbmQKZHJpdmVycy4KClRoaXMgcGF0Y2ggbWFr ZXMgdGhlIG5lY2Vzc2FyeSBtb2RpZmljYXRpb25zIHRvIHhlbi1kaXNrIHN1cHBvcnQgYSBzaGFy ZWQKcmluZyB1cCB0byBvcmRlciA0IChpLmUuIDE2IHBhZ2VzKS4KClNpZ25lZC1vZmYtYnk6IFBh dWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogQW50aG9ueSBQZXJhcmQgPGFudGhv bnkucGVyYXJkQGNpdHJpeC5jb20+CkNjOiBLZXZpbiBXb2xmIDxrd29sZkByZWRoYXQuY29tPgpD YzogTWF4IFJlaXR6IDxtcmVpdHpAcmVkaGF0LmNvbT4KLS0tCiBody9ibG9jay94ZW5fZGlzay5j IHwgMTQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvaHcvYmxvY2sveGVuX2Rpc2suYyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMKaW5k ZXggOWIwNmUzYWE4MS4uYTk5NDJkMzJkYiAxMDA2NDQKLS0tIGEvaHcvYmxvY2sveGVuX2Rpc2su YworKysgYi9ody9ibG9jay94ZW5fZGlzay5jCkBAIC0zNiw4ICszNiw2IEBACiAKIHN0YXRpYyBp bnQgYmF0Y2hfbWFwcyAgID0gMDsKIAotc3RhdGljIGludCBtYXhfcmVxdWVzdHMgPSAzMjsKLQog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLwogCiAjZGVmaW5lIEJMT0NLX1NJWkUgIDUxMgpAQCAtODQsNiArODIsOCBAQCBz dHJ1Y3QgaW9yZXEgewogICAgIEJsb2NrQWNjdENvb2tpZSAgICAgYWNjdDsKIH07CiAKKyNkZWZp bmUgTUFYX1JJTkdfUEFHRV9PUkRFUiA0CisKIHN0cnVjdCBYZW5CbGtEZXYgewogICAgIHN0cnVj dCBYZW5EZXZpY2UgICAgeGVuZGV2OyAgLyogbXVzdCBiZSBmaXJzdCAqLwogICAgIGNoYXIgICAg ICAgICAgICAgICAgKnBhcmFtczsKQEAgLTk0LDcgKzk0LDggQEAgc3RydWN0IFhlbkJsa0RldiB7 CiAgICAgYm9vbCAgICAgICAgICAgICAgICBkaXJlY3Rpb3NhZmU7CiAgICAgY29uc3QgY2hhciAg ICAgICAgICAqZmlsZXByb3RvOwogICAgIGNvbnN0IGNoYXIgICAgICAgICAgKmZpbGVuYW1lOwot ICAgIGludCAgICAgICAgICAgICAgICAgcmluZ19yZWY7CisgICAgdW5zaWduZWQgaW50ICAgICAg ICByaW5nX3JlZlsxIDw8IE1BWF9SSU5HX1BBR0VfT1JERVJdOworICAgIHVuc2lnbmVkIGludCAg ICAgICAgbnJfcmluZ19yZWY7CiAgICAgdm9pZCAgICAgICAgICAgICAgICAqc3Jpbmc7CiAgICAg aW50NjRfdCAgICAgICAgICAgICBmaWxlX2JsazsKICAgICBpbnQ2NF90ICAgICAgICAgICAgIGZp bGVfc2l6ZTsKQEAgLTExMCw2ICsxMTEsNyBAQCBzdHJ1Y3QgWGVuQmxrRGV2IHsKICAgICBpbnQg ICAgICAgICAgICAgICAgIHJlcXVlc3RzX3RvdGFsOwogICAgIGludCAgICAgICAgICAgICAgICAg cmVxdWVzdHNfaW5mbGlnaHQ7CiAgICAgaW50ICAgICAgICAgICAgICAgICByZXF1ZXN0c19maW5p c2hlZDsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgIG1heF9yZXF1ZXN0czsKIAogICAgIC8qIFBl cnNpc3RlbnQgZ3JhbnRzIGV4dGVuc2lvbiAqLwogICAgIGdib29sZWFuICAgICAgICAgICAgZmVh dHVyZV9kaXNjYXJkOwpAQCAtMTk5LDcgKzIwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW9yZXEgKmlv cmVxX3N0YXJ0KHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldikKICAgICBzdHJ1Y3QgaW9yZXEgKmlv cmVxID0gTlVMTDsKIAogICAgIGlmIChRTElTVF9FTVBUWSgmYmxrZGV2LT5mcmVlbGlzdCkpIHsK LSAgICAgICAgaWYgKGJsa2Rldi0+cmVxdWVzdHNfdG90YWwgPj0gbWF4X3JlcXVlc3RzKSB7Cisg ICAgICAgIGlmIChibGtkZXYtPnJlcXVlc3RzX3RvdGFsID49IGJsa2Rldi0+bWF4X3JlcXVlc3Rz KSB7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQogICAgICAgICAvKiBhbGxvY2F0 ZSBuZXcgc3RydWN0ICovCkBAIC05MDUsNyArOTA3LDcgQEAgc3RhdGljIHZvaWQgYmxrX2hhbmRs ZV9yZXF1ZXN0cyhzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCiAgICAgICAgIGlvcmVxX3J1bmlv X3FlbXVfYWlvKGlvcmVxKTsKICAgICB9CiAKLSAgICBpZiAoYmxrZGV2LT5tb3JlX3dvcmsgJiYg YmxrZGV2LT5yZXF1ZXN0c19pbmZsaWdodCA8IG1heF9yZXF1ZXN0cykgeworICAgIGlmIChibGtk ZXYtPm1vcmVfd29yayAmJiBibGtkZXYtPnJlcXVlc3RzX2luZmxpZ2h0IDwgYmxrZGV2LT5tYXhf cmVxdWVzdHMpIHsKICAgICAgICAgcWVtdV9iaF9zY2hlZHVsZShibGtkZXYtPmJoKTsKICAgICB9 CiB9CkBAIC05MTgsMTUgKzkyMCw2IEBAIHN0YXRpYyB2b2lkIGJsa19iaCh2b2lkICpvcGFxdWUp CiAgICAgYmxrX2hhbmRsZV9yZXF1ZXN0cyhibGtkZXYpOwogfQogCi0vKgotICogV2UgbmVlZCB0 byBhY2NvdW50IGZvciB0aGUgZ3JhbnQgYWxsb2NhdGlvbnMgcmVxdWlyaW5nIGNvbnRpZ3VvdXMK LSAqIGNodW5rczsgdGhlIHdvcnN0IGNhc2UgbnVtYmVyIHdvdWxkIGJlCi0gKiAgICAgbWF4X3Jl cSAqIG1heF9zZWcgKyAobWF4X3JlcSAtIDEpICogKG1heF9zZWcgLSAxKSArIDEsCi0gKiBidXQg aW4gb3JkZXIgdG8ga2VlcCB0aGluZ3Mgc2ltcGxlIGp1c3QgdXNlCi0gKiAgICAgMiAqIG1heF9y ZXEgKiBtYXhfc2VnLgotICovCi0jZGVmaW5lIE1BWF9HUkFOVFMobWF4X3JlcSwgbWF4X3NlZykg KDIgKiAobWF4X3JlcSkgKiAobWF4X3NlZykpCi0KIHN0YXRpYyB2b2lkIGJsa19hbGxvYyhzdHJ1 Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0g Y29udGFpbmVyX29mKHhlbmRldiwgc3RydWN0IFhlbkJsa0RldiwgeGVuZGV2KTsKQEAgLTkzOCwx MSArOTMxLDYgQEAgc3RhdGljIHZvaWQgYmxrX2FsbG9jKHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRl dikKICAgICBpZiAoeGVuX21vZGUgIT0gWEVOX0VNVUxBVEUpIHsKICAgICAgICAgYmF0Y2hfbWFw cyA9IDE7CiAgICAgfQotICAgIGlmICh4ZW5nbnR0YWJfc2V0X21heF9ncmFudHMoeGVuZGV2LT5n bnR0YWJkZXYsCi0gICAgICAgICAgICBNQVhfR1JBTlRTKG1heF9yZXF1ZXN0cywgQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUKSkgPCAwKSB7Ci0gICAgICAgIHhlbl9wdl9wcmludGYoeGVu ZGV2LCAwLCAieGVuZ250dGFiX3NldF9tYXhfZ3JhbnRzIGZhaWxlZDogJXNcbiIsCi0gICAgICAg ICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSAgICB9CiB9CiAKIHN0YXRpYyB2b2lk IGJsa19wYXJzZV9kaXNjYXJkKHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldikKQEAgLTEwMzcsNiAr MTAyNSw5IEBAIHN0YXRpYyBpbnQgYmxrX2luaXQoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAhYmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkpOwog ICAgIHhlbnN0b3JlX3dyaXRlX2JlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJpbmZvIiwgaW5mbyk7 CiAKKyAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoJmJsa2Rldi0+eGVuZGV2LCAibWF4LXJpbmct cGFnZS1vcmRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9SSU5HX1BBR0VfT1JE RVIpOworCiAgICAgYmxrX3BhcnNlX2Rpc2NhcmQoYmxrZGV2KTsKIAogICAgIGdfZnJlZShkaXJl Y3Rpb3NhZmUpOwpAQCAtMTA1OCwxMiArMTA0OSwyNSBAQCBvdXRfZXJyb3I6CiAgICAgcmV0dXJu IC0xOwogfQogCisvKgorICogV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgZ3JhbnQgYWxsb2Nh dGlvbnMgcmVxdWlyaW5nIGNvbnRpZ3VvdXMKKyAqIGNodW5rczsgdGhlIHdvcnN0IGNhc2UgbnVt YmVyIHdvdWxkIGJlCisgKiAgICAgbWF4X3JlcSAqIG1heF9zZWcgKyAobWF4X3JlcSAtIDEpICog KG1heF9zZWcgLSAxKSArIDEsCisgKiBidXQgaW4gb3JkZXIgdG8ga2VlcCB0aGluZ3Mgc2ltcGxl IGp1c3QgdXNlCisgKiAgICAgMiAqIG1heF9yZXEgKiBtYXhfc2VnLgorICovCisjZGVmaW5lIE1B WF9HUkFOVFMobWF4X3JlcSwgbWF4X3NlZykgKDIgKiAobWF4X3JlcSkgKiAobWF4X3NlZykpCisK IHN0YXRpYyBpbnQgYmxrX2Nvbm5lY3Qoc3RydWN0IFhlbkRldmljZSAqeGVuZGV2KQogewogICAg IHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBY ZW5CbGtEZXYsIHhlbmRldik7CiAgICAgaW50IHBlcnMsIGluZGV4LCBxZmxhZ3M7CiAgICAgYm9v bCByZWFkb25seSA9IHRydWU7CiAgICAgYm9vbCB3cml0ZXRocm91Z2ggPSB0cnVlOworICAgIGlu dCBvcmRlciwgcmluZ19yZWY7CisgICAgdW5zaWduZWQgaW50IHJpbmdfc2l6ZSwgbWF4X2dyYW50 czsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1aW50MzJfdCAqZG9taWRzOwogCiAgICAgLyog cmVhZC1vbmx5ID8gKi8KICAgICBpZiAoYmxrZGV2LT5kaXJlY3Rpb3NhZmUpIHsKQEAgLTExMzgs OSArMTE0MiwzOSBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhl bmRldikKICAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQ2NCgmYmxrZGV2LT54ZW5kZXYsICJzZWN0 b3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPmZpbGVfc2l6ZSAvIGJs a2Rldi0+ZmlsZV9ibGspOwogCi0gICAgaWYgKHhlbnN0b3JlX3JlYWRfZmVfaW50KCZibGtkZXYt PnhlbmRldiwgInJpbmctcmVmIiwgJmJsa2Rldi0+cmluZ19yZWYpID09IC0xKSB7CisgICAgaWYg KHhlbnN0b3JlX3JlYWRfZmVfaW50KCZibGtkZXYtPnhlbmRldiwgInJpbmctcGFnZS1vcmRlciIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcmRlcikgPT0gLTEpIHsKKyAgICAgICAg YmxrZGV2LT5ucl9yaW5nX3JlZiA9IDE7CisKKyAgICAgICAgaWYgKHhlbnN0b3JlX3JlYWRfZmVf aW50KCZibGtkZXYtPnhlbmRldiwgInJpbmctcmVmIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZyaW5nX3JlZikgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAg ICAgICAgfQorICAgICAgICBibGtkZXYtPnJpbmdfcmVmWzBdID0gcmluZ19yZWY7CisKKyAgICB9 IGVsc2UgaWYgKG9yZGVyID49IDAgJiYgb3JkZXIgPD0gTUFYX1JJTkdfUEFHRV9PUkRFUikgewor ICAgICAgICBibGtkZXYtPm5yX3JpbmdfcmVmID0gMSA8PCBvcmRlcjsKKworICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgYmxrZGV2LT5ucl9yaW5nX3JlZjsgaSsrKSB7CisgICAgICAgICAgICBjaGFy ICprZXk7CisKKyAgICAgICAgICAgIGtleSA9IGdfc3RyZHVwX3ByaW50ZigicmluZy1yZWYldSIs IGkpOworICAgICAgICAgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh4ZW5zdG9yZV9yZWFkX2ZlX2ludCgm YmxrZGV2LT54ZW5kZXYsIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmcmluZ19yZWYpID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgYmxrZGV2LT5yaW5nX3JlZltpXSA9IHJpbmdfcmVmOworCisg ICAgICAgICAgICBnX2ZyZWUoa2V5KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CiAgICAgICAg IHJldHVybiAtMTsKICAgICB9CisKICAgICBpZiAoeGVuc3RvcmVfcmVhZF9mZV9pbnQoJmJsa2Rl di0+eGVuZGV2LCAiZXZlbnQtY2hhbm5lbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZibGtkZXYtPnhlbmRldi5yZW1vdGVfcG9ydCkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIC0x OwpAQCAtMTE2Myw0MSArMTE5Nyw4NSBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAgYmxrZGV2LT5wcm90b2NvbCA9IEJMS0lGX1BST1RP Q09MX05BVElWRTsKICAgICB9CiAKLSAgICBibGtkZXYtPnNyaW5nID0geGVuZ250dGFiX21hcF9n cmFudF9yZWYoYmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnhlbmRldi5kb20sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsa2Rldi0+cmluZ19yZWYsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJ VEUpOworICAgIHJpbmdfc2l6ZSA9IFhDX1BBR0VfU0laRSAqIGJsa2Rldi0+bnJfcmluZ19yZWY7 CisgICAgc3dpdGNoIChibGtkZXYtPnByb3RvY29sKSB7CisgICAgY2FzZSBCTEtJRl9QUk9UT0NP TF9OQVRJVkU6CisgICAgeworICAgICAgICBibGtkZXYtPm1heF9yZXF1ZXN0cyA9IF9fQ09OU1Rf UklOR19TSVpFKGJsa2lmLCByaW5nX3NpemUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg Y2FzZSBCTEtJRl9QUk9UT0NPTF9YODZfMzI6CisgICAgeworICAgICAgICBibGtkZXYtPm1heF9y ZXF1ZXN0cyA9IF9fQ09OU1RfUklOR19TSVpFKGJsa2lmX3g4Nl8zMiwgcmluZ19zaXplKTsKKyAg ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzY0OgorICAg IHsKKyAgICAgICAgYmxrZGV2LT5tYXhfcmVxdWVzdHMgPSBfX0NPTlNUX1JJTkdfU0laRShibGtp Zl94ODZfNjQsIHJpbmdfc2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0 OgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXhp bXVtIG51bWJlciBvZiBncmFudHMgbmVlZGVkIGJ5IGlvcmVxcyAqLworICAgIG1heF9ncmFudHMg PSBNQVhfR1JBTlRTKGJsa2Rldi0+bWF4X3JlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCk7CisgICAgLyogQWRkIG9uIHRo ZSBudW1iZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAqLworICAgIG1heF9ncmFudHMgKz0g YmxrZGV2LT5ucl9yaW5nX3JlZjsKKworICAgIGlmICh4ZW5nbnR0YWJfc2V0X21heF9ncmFudHMo YmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2LCBtYXhfZ3JhbnRzKSkgeworICAgICAgICB4ZW5fcHZf cHJpbnRmKHhlbmRldiwgMCwgInhlbmdudHRhYl9zZXRfbWF4X2dyYW50cyBmYWlsZWQ6ICVzXG4i LAorICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVy biAtMTsKKyAgICB9CisKKyAgICBkb21pZHMgPSBnX21hbGxvYzBfbihibGtkZXYtPm5yX3Jpbmdf cmVmLCBzaXplb2YodWludDMyX3QpKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmxrZGV2LT5ucl9y aW5nX3JlZjsgaSsrKSB7CisgICAgICAgIGRvbWlkc1tpXSA9IGJsa2Rldi0+eGVuZGV2LmRvbTsK KyAgICB9CisKKyAgICBibGtkZXYtPnNyaW5nID0geGVuZ250dGFiX21hcF9ncmFudF9yZWZzKGJs a2Rldi0+eGVuZGV2LmdudHRhYmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJsa2Rldi0+bnJfcmluZ19yZWYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkb21pZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnJpbmdfcmVmLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisKKyAg ICBnX2ZyZWUoZG9taWRzKTsKKwogICAgIGlmICghYmxrZGV2LT5zcmluZykgewogICAgICAgICBy ZXR1cm4gLTE7CiAgICAgfQorCiAgICAgYmxrZGV2LT5jbnRfbWFwKys7CiAKICAgICBzd2l0Y2gg KGJsa2Rldi0+cHJvdG9jb2wpIHsKICAgICBjYXNlIEJMS0lGX1BST1RPQ09MX05BVElWRToKICAg ICB7CiAgICAgICAgIGJsa2lmX3NyaW5nX3QgKnNyaW5nX25hdGl2ZSA9IGJsa2Rldi0+c3Jpbmc7 Ci0gICAgICAgIEJBQ0tfUklOR19JTklUKCZibGtkZXYtPnJpbmdzLm5hdGl2ZSwgc3JpbmdfbmF0 aXZlLCBYQ19QQUdFX1NJWkUpOworICAgICAgICBCQUNLX1JJTkdfSU5JVCgmYmxrZGV2LT5yaW5n cy5uYXRpdmUsIHNyaW5nX25hdGl2ZSwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAg fQogICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzMyOgogICAgIHsKICAgICAgICAgYmxraWZf eDg2XzMyX3NyaW5nX3QgKnNyaW5nX3g4Nl8zMiA9IGJsa2Rldi0+c3Jpbmc7CiAKLSAgICAgICAg QkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2XzMyX3BhcnQsIHNyaW5nX3g4Nl8zMiwg WENfUEFHRV9TSVpFKTsKKyAgICAgICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2 XzMyX3BhcnQsIHNyaW5nX3g4Nl8zMiwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAg fQogICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzY0OgogICAgIHsKICAgICAgICAgYmxraWZf eDg2XzY0X3NyaW5nX3QgKnNyaW5nX3g4Nl82NCA9IGJsa2Rldi0+c3Jpbmc7CiAKLSAgICAgICAg QkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2XzY0X3BhcnQsIHNyaW5nX3g4Nl82NCwg WENfUEFHRV9TSVpFKTsKKyAgICAgICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2 XzY0X3BhcnQsIHNyaW5nX3g4Nl82NCwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAg fQogICAgIH0KIAogICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewogICAgICAg ICAvKiBJbml0IHBlcnNpc3RlbnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+bWF4X2dyYW50 cyA9IG1heF9yZXF1ZXN0cyAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKKyAgICAg ICAgYmxrZGV2LT5tYXhfZ3JhbnRzID0gYmxrZGV2LT5tYXhfcmVxdWVzdHMgKgorICAgICAgICAg ICAgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUOwogICAgICAgICBibGtkZXYtPnBlcnNp c3RlbnRfZ250cyA9IGdfdHJlZV9uZXdfZnVsbCgoR0NvbXBhcmVEYXRhRnVuYylpbnRfY21wLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoX21hcHMg PwpAQCAtMTIwOSw5ICsxMjg3LDkgQEAgc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVu RGV2aWNlICp4ZW5kZXYpCiAKICAgICB4ZW5fYmVfYmluZF9ldnRjaG4oJmJsa2Rldi0+eGVuZGV2 KTsKIAotICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAxLCAib2s6IHByb3RvICVz LCByaW5nLXJlZiAlZCwgIgorICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAxLCAi b2s6IHByb3RvICVzLCBuci1yaW5nLXJlZiAldSwgIgogICAgICAgICAgICAgICAgICAgInJlbW90 ZSBwb3J0ICVkLCBsb2NhbCBwb3J0ICVkXG4iLAotICAgICAgICAgICAgICAgICAgYmxrZGV2LT54 ZW5kZXYucHJvdG9jb2wsIGJsa2Rldi0+cmluZ19yZWYsCisgICAgICAgICAgICAgICAgICBibGtk ZXYtPnhlbmRldi5wcm90b2NvbCwgYmxrZGV2LT5ucl9yaW5nX3JlZiwKICAgICAgICAgICAgICAg ICAgIGJsa2Rldi0+eGVuZGV2LnJlbW90ZV9wb3J0LCBibGtkZXYtPnhlbmRldi5sb2NhbF9wb3J0 KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEyMjgsNyArMTMwNiw4IEBAIHN0YXRpYyB2b2lkIGJs a19kaXNjb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICB4ZW5fcHZfdW5iaW5k X2V2dGNobigmYmxrZGV2LT54ZW5kZXYpOwogCiAgICAgaWYgKGJsa2Rldi0+c3JpbmcpIHsKLSAg ICAgICAgeGVuZ250dGFiX3VubWFwKGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiwgYmxrZGV2LT5z cmluZywgMSk7CisgICAgICAgIHhlbmdudHRhYl91bm1hcChibGtkZXYtPnhlbmRldi5nbnR0YWJk ZXYsIGJsa2Rldi0+c3JpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPm5yX3Jp bmdfcmVmKTsKICAgICAgICAgYmxrZGV2LT5jbnRfbWFwLS07CiAgICAgICAgIGJsa2Rldi0+c3Jp bmcgPSBOVUxMOwogICAgIH0KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=