From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL 3/3] xen-disk: add support for multi-page shared rings Date: Tue, 27 Jun 2017 15:04:43 -0700 Message-ID: <1498601083-11799-3-git-send-email-sstabellini@kernel.org> References: <1498601083-11799-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dPybO-0002zM-AM for xen-devel@lists.xenproject.org; Tue, 27 Jun 2017 22:04:54 +0000 In-Reply-To: <1498601083-11799-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: peter.maydell@linaro.org, stefanha@gmail.com Cc: sstabellini@kernel.org, qemu-devel@nongnu.org, Paul Durrant , stefanha@redhat.com, anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org RnJvbTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KClRoZSBibGtpZiBw cm90b2NvbCBoYXMgaGFkIHByb3Zpc2lvbiBmb3IgbmVnb3RpYXRpb24gb2YgbXVsdGktcGFnZSBz aGFyZWQKcmluZ3MgZm9yIHNvbWUgdGltZSBub3cgYW5kIG1hbnkgZ3Vlc3QgT1MgaGF2ZSBzdXBw b3J0IGluIHRoZWlyIGZyb250ZW5kCmRyaXZlcnMuCgpUaGlzIHBhdGNoIG1ha2VzIHRoZSBuZWNl c3NhcnkgbW9kaWZpY2F0aW9ucyB0byB4ZW4tZGlzayBzdXBwb3J0IGEgc2hhcmVkCnJpbmcgdXAg dG8gb3JkZXIgNCAoaS5lLiAxNiBwYWdlcykuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQg PHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0tLQogaHcvYmxvY2sveGVuX2Rpc2suYyB8IDE0 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMgYi9ody9ibG9jay94ZW5fZGlzay5jCmluZGV4IDgy MTg3NDEuLmQ0MmVkNzAgMTAwNjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMKKysrIGIvaHcv YmxvY2sveGVuX2Rpc2suYwpAQCAtMzYsOCArMzYsNiBAQAogCiBzdGF0aWMgaW50IGJhdGNoX21h cHMgICA9IDA7CiAKLXN0YXRpYyBpbnQgbWF4X3JlcXVlc3RzID0gMzI7Ci0KIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K IAogI2RlZmluZSBCTE9DS19TSVpFICA1MTIKQEAgLTg0LDYgKzgyLDggQEAgc3RydWN0IGlvcmVx IHsKICAgICBCbG9ja0FjY3RDb29raWUgICAgIGFjY3Q7CiB9OwogCisjZGVmaW5lIE1BWF9SSU5H X1BBR0VfT1JERVIgNAorCiBzdHJ1Y3QgWGVuQmxrRGV2IHsKICAgICBzdHJ1Y3QgWGVuRGV2aWNl ICAgIHhlbmRldjsgIC8qIG11c3QgYmUgZmlyc3QgKi8KICAgICBjaGFyICAgICAgICAgICAgICAg ICpwYXJhbXM7CkBAIC05NCw3ICs5NCw4IEBAIHN0cnVjdCBYZW5CbGtEZXYgewogICAgIGJvb2wg ICAgICAgICAgICAgICAgZGlyZWN0aW9zYWZlOwogICAgIGNvbnN0IGNoYXIgICAgICAgICAgKmZp bGVwcm90bzsKICAgICBjb25zdCBjaGFyICAgICAgICAgICpmaWxlbmFtZTsKLSAgICBpbnQgICAg ICAgICAgICAgICAgIHJpbmdfcmVmOworICAgIHVuc2lnbmVkIGludCAgICAgICAgcmluZ19yZWZb MSA8PCBNQVhfUklOR19QQUdFX09SREVSXTsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgIG5yX3Jp bmdfcmVmOwogICAgIHZvaWQgICAgICAgICAgICAgICAgKnNyaW5nOwogICAgIGludDY0X3QgICAg ICAgICAgICAgZmlsZV9ibGs7CiAgICAgaW50NjRfdCAgICAgICAgICAgICBmaWxlX3NpemU7CkBA IC0xMTAsNiArMTExLDcgQEAgc3RydWN0IFhlbkJsa0RldiB7CiAgICAgaW50ICAgICAgICAgICAg ICAgICByZXF1ZXN0c190b3RhbDsKICAgICBpbnQgICAgICAgICAgICAgICAgIHJlcXVlc3RzX2lu ZmxpZ2h0OwogICAgIGludCAgICAgICAgICAgICAgICAgcmVxdWVzdHNfZmluaXNoZWQ7CisgICAg dW5zaWduZWQgaW50ICAgICAgICBtYXhfcmVxdWVzdHM7CiAKICAgICAvKiBQZXJzaXN0ZW50IGdy YW50cyBleHRlbnNpb24gKi8KICAgICBnYm9vbGVhbiAgICAgICAgICAgIGZlYXR1cmVfZGlzY2Fy ZDsKQEAgLTE5OSw3ICsyMDEsNyBAQCBzdGF0aWMgc3RydWN0IGlvcmVxICppb3JlcV9zdGFydChz dHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCiAgICAgc3RydWN0IGlvcmVxICppb3JlcSA9IE5VTEw7 CiAKICAgICBpZiAoUUxJU1RfRU1QVFkoJmJsa2Rldi0+ZnJlZWxpc3QpKSB7Ci0gICAgICAgIGlm IChibGtkZXYtPnJlcXVlc3RzX3RvdGFsID49IG1heF9yZXF1ZXN0cykgeworICAgICAgICBpZiAo YmxrZGV2LT5yZXF1ZXN0c190b3RhbCA+PSBibGtkZXYtPm1heF9yZXF1ZXN0cykgewogICAgICAg ICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAgICAgICAgLyogYWxsb2NhdGUgbmV3IHN0cnVj dCAqLwpAQCAtOTA0LDcgKzkwNiw3IEBAIHN0YXRpYyB2b2lkIGJsa19oYW5kbGVfcmVxdWVzdHMo c3RydWN0IFhlbkJsa0RldiAqYmxrZGV2KQogICAgICAgICBpb3JlcV9ydW5pb19xZW11X2Fpbyhp b3JlcSk7CiAgICAgfQogCi0gICAgaWYgKGJsa2Rldi0+bW9yZV93b3JrICYmIGJsa2Rldi0+cmVx dWVzdHNfaW5mbGlnaHQgPCBtYXhfcmVxdWVzdHMpIHsKKyAgICBpZiAoYmxrZGV2LT5tb3JlX3dv cmsgJiYgYmxrZGV2LT5yZXF1ZXN0c19pbmZsaWdodCA8IGJsa2Rldi0+bWF4X3JlcXVlc3RzKSB7 CiAgICAgICAgIHFlbXVfYmhfc2NoZWR1bGUoYmxrZGV2LT5iaCk7CiAgICAgfQogfQpAQCAtOTE3 LDE1ICs5MTksNiBAQCBzdGF0aWMgdm9pZCBibGtfYmgodm9pZCAqb3BhcXVlKQogICAgIGJsa19o YW5kbGVfcmVxdWVzdHMoYmxrZGV2KTsKIH0KIAotLyoKLSAqIFdlIG5lZWQgdG8gYWNjb3VudCBm b3IgdGhlIGdyYW50IGFsbG9jYXRpb25zIHJlcXVpcmluZyBjb250aWd1b3VzCi0gKiBjaHVua3M7 IHRoZSB3b3JzdCBjYXNlIG51bWJlciB3b3VsZCBiZQotICogICAgIG1heF9yZXEgKiBtYXhfc2Vn ICsgKG1heF9yZXEgLSAxKSAqIChtYXhfc2VnIC0gMSkgKyAxLAotICogYnV0IGluIG9yZGVyIHRv IGtlZXAgdGhpbmdzIHNpbXBsZSBqdXN0IHVzZQotICogICAgIDIgKiBtYXhfcmVxICogbWF4X3Nl Zy4KLSAqLwotI2RlZmluZSBNQVhfR1JBTlRTKG1heF9yZXEsIG1heF9zZWcpICgyICogKG1heF9y ZXEpICogKG1heF9zZWcpKQotCiBzdGF0aWMgdm9pZCBibGtfYWxsb2Moc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2KQogewogICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGNvbnRhaW5lcl9v Zih4ZW5kZXYsIHN0cnVjdCBYZW5CbGtEZXYsIHhlbmRldik7CkBAIC05MzcsMTEgKzkzMCw2IEBA IHN0YXRpYyB2b2lkIGJsa19hbGxvYyhzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgaWYg KHhlbl9tb2RlICE9IFhFTl9FTVVMQVRFKSB7CiAgICAgICAgIGJhdGNoX21hcHMgPSAxOwogICAg IH0KLSAgICBpZiAoeGVuZ250dGFiX3NldF9tYXhfZ3JhbnRzKHhlbmRldi0+Z250dGFiZGV2LAot ICAgICAgICAgICAgTUFYX0dSQU5UUyhtYXhfcmVxdWVzdHMsIEJMS0lGX01BWF9TRUdNRU5UU19Q RVJfUkVRVUVTVCkpIDwgMCkgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgInhl bmdudHRhYl9zZXRfbWF4X2dyYW50cyBmYWlsZWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAg ICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgfQogfQogCiBzdGF0aWMgdm9pZCBibGtfcGFyc2Vf ZGlzY2FyZChzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCkBAIC0xMDM2LDYgKzEwMjQsOSBAQCBz dGF0aWMgaW50IGJsa19pbml0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIWJsa2Rldi0+ZmVhdHVyZV9ncmFudF9jb3B5KTsKICAgICB4ZW5zdG9y ZV93cml0ZV9iZV9pbnQoJmJsa2Rldi0+eGVuZGV2LCAiaW5mbyIsIGluZm8pOwogCisgICAgeGVu c3RvcmVfd3JpdGVfYmVfaW50KCZibGtkZXYtPnhlbmRldiwgIm1heC1yaW5nLXBhZ2Utb3JkZXIi LAorICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUklOR19QQUdFX09SREVSKTsKKwogICAg IGJsa19wYXJzZV9kaXNjYXJkKGJsa2Rldik7CiAKICAgICBnX2ZyZWUoZGlyZWN0aW9zYWZlKTsK QEAgLTEwNTcsMTIgKzEwNDgsMjUgQEAgb3V0X2Vycm9yOgogICAgIHJldHVybiAtMTsKIH0KIAor LyoKKyAqIFdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIGdyYW50IGFsbG9jYXRpb25zIHJlcXVp cmluZyBjb250aWd1b3VzCisgKiBjaHVua3M7IHRoZSB3b3JzdCBjYXNlIG51bWJlciB3b3VsZCBi ZQorICogICAgIG1heF9yZXEgKiBtYXhfc2VnICsgKG1heF9yZXEgLSAxKSAqIChtYXhfc2VnIC0g MSkgKyAxLAorICogYnV0IGluIG9yZGVyIHRvIGtlZXAgdGhpbmdzIHNpbXBsZSBqdXN0IHVzZQor ICogICAgIDIgKiBtYXhfcmVxICogbWF4X3NlZy4KKyAqLworI2RlZmluZSBNQVhfR1JBTlRTKG1h eF9yZXEsIG1heF9zZWcpICgyICogKG1heF9yZXEpICogKG1heF9zZWcpKQorCiBzdGF0aWMgaW50 IGJsa19jb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIHsKICAgICBzdHJ1Y3QgWGVu QmxrRGV2ICpibGtkZXYgPSBjb250YWluZXJfb2YoeGVuZGV2LCBzdHJ1Y3QgWGVuQmxrRGV2LCB4 ZW5kZXYpOwogICAgIGludCBwZXJzLCBpbmRleCwgcWZsYWdzOwogICAgIGJvb2wgcmVhZG9ubHkg PSB0cnVlOwogICAgIGJvb2wgd3JpdGV0aHJvdWdoID0gdHJ1ZTsKKyAgICBpbnQgb3JkZXIsIHJp bmdfcmVmOworICAgIHVuc2lnbmVkIGludCByaW5nX3NpemUsIG1heF9ncmFudHM7CisgICAgdW5z aWduZWQgaW50IGk7CisgICAgdWludDMyX3QgKmRvbWlkczsKIAogICAgIC8qIHJlYWQtb25seSA/ ICovCiAgICAgaWYgKGJsa2Rldi0+ZGlyZWN0aW9zYWZlKSB7CkBAIC0xMTM3LDkgKzExNDEsNDIg QEAgc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAg eGVuc3RvcmVfd3JpdGVfYmVfaW50NjQoJmJsa2Rldi0+eGVuZGV2LCAic2VjdG9ycyIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmxrZGV2LT5maWxlX3NpemUgLyBibGtkZXYtPmZpbGVf YmxrKTsKIAotICAgIGlmICh4ZW5zdG9yZV9yZWFkX2ZlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJy aW5nLXJlZiIsICZibGtkZXYtPnJpbmdfcmVmKSA9PSAtMSkgeworICAgIGlmICh4ZW5zdG9yZV9y ZWFkX2ZlX2ludCgmYmxrZGV2LT54ZW5kZXYsICJyaW5nLXBhZ2Utb3JkZXIiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmb3JkZXIpID09IC0xKSB7CisgICAgICAgIGJsa2Rldi0+bnJf cmluZ19yZWYgPSAxOworCisgICAgICAgIGlmICh4ZW5zdG9yZV9yZWFkX2ZlX2ludCgmYmxrZGV2 LT54ZW5kZXYsICJyaW5nLXJlZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm cmluZ19yZWYpID09IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAg ICAgICAgYmxrZGV2LT5yaW5nX3JlZlswXSA9IHJpbmdfcmVmOworCisgICAgfSBlbHNlIGlmIChv cmRlciA+PSAwICYmIG9yZGVyIDw9IE1BWF9SSU5HX1BBR0VfT1JERVIpIHsKKyAgICAgICAgYmxr ZGV2LT5ucl9yaW5nX3JlZiA9IDEgPDwgb3JkZXI7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8 IGJsa2Rldi0+bnJfcmluZ19yZWY7IGkrKykgeworICAgICAgICAgICAgY2hhciAqa2V5OworCisg ICAgICAgICAgICBrZXkgPSBnX3N0cmR1cF9wcmludGYoInJpbmctcmVmJXUiLCBpKTsKKyAgICAg ICAgICAgIGlmICgha2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAg ICAgfQorCisgICAgICAgICAgICBpZiAoeGVuc3RvcmVfcmVhZF9mZV9pbnQoJmJsa2Rldi0+eGVu ZGV2LCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJpbmdfcmVm KSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGdfZnJlZShrZXkpOworICAgICAgICAgICAgICAg IHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJsa2Rldi0+cmluZ19yZWZb aV0gPSByaW5nX3JlZjsKKworICAgICAgICAgICAgZ19mcmVlKGtleSk7CisgICAgICAgIH0KKyAg ICB9IGVsc2UgeworICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgImludmFsaWQgcmlu Zy1wYWdlLW9yZGVyOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICBvcmRlcik7CiAgICAg ICAgIHJldHVybiAtMTsKICAgICB9CisKICAgICBpZiAoeGVuc3RvcmVfcmVhZF9mZV9pbnQoJmJs a2Rldi0+eGVuZGV2LCAiZXZlbnQtY2hhbm5lbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZibGtkZXYtPnhlbmRldi5yZW1vdGVfcG9ydCkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJu IC0xOwpAQCAtMTE2Miw0MSArMTE5OSw4NSBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVj dCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAgYmxrZGV2LT5wcm90b2NvbCA9IEJMS0lGX1BS T1RPQ09MX05BVElWRTsKICAgICB9CiAKLSAgICBibGtkZXYtPnNyaW5nID0geGVuZ250dGFiX21h cF9ncmFudF9yZWYoYmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnhlbmRldi5kb20sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsa2Rldi0+cmluZ19yZWYsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1Rf V1JJVEUpOworICAgIHJpbmdfc2l6ZSA9IFhDX1BBR0VfU0laRSAqIGJsa2Rldi0+bnJfcmluZ19y ZWY7CisgICAgc3dpdGNoIChibGtkZXYtPnByb3RvY29sKSB7CisgICAgY2FzZSBCTEtJRl9QUk9U T0NPTF9OQVRJVkU6CisgICAgeworICAgICAgICBibGtkZXYtPm1heF9yZXF1ZXN0cyA9IF9fQ09O U1RfUklOR19TSVpFKGJsa2lmLCByaW5nX3NpemUpOworICAgICAgICBicmVhazsKKyAgICB9Cisg ICAgY2FzZSBCTEtJRl9QUk9UT0NPTF9YODZfMzI6CisgICAgeworICAgICAgICBibGtkZXYtPm1h eF9yZXF1ZXN0cyA9IF9fQ09OU1RfUklOR19TSVpFKGJsa2lmX3g4Nl8zMiwgcmluZ19zaXplKTsK KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzY0Ogor ICAgIHsKKyAgICAgICAgYmxrZGV2LT5tYXhfcmVxdWVzdHMgPSBfX0NPTlNUX1JJTkdfU0laRShi bGtpZl94ODZfNjQsIHJpbmdfc2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZh dWx0OgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogQ2FsY3VsYXRlIHRoZSBt YXhpbXVtIG51bWJlciBvZiBncmFudHMgbmVlZGVkIGJ5IGlvcmVxcyAqLworICAgIG1heF9ncmFu dHMgPSBNQVhfR1JBTlRTKGJsa2Rldi0+bWF4X3JlcXVlc3RzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCk7CisgICAgLyogQWRkIG9u IHRoZSBudW1iZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAqLworICAgIG1heF9ncmFudHMg Kz0gYmxrZGV2LT5ucl9yaW5nX3JlZjsKKworICAgIGlmICh4ZW5nbnR0YWJfc2V0X21heF9ncmFu dHMoYmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2LCBtYXhfZ3JhbnRzKSkgeworICAgICAgICB4ZW5f cHZfcHJpbnRmKHhlbmRldiwgMCwgInhlbmdudHRhYl9zZXRfbWF4X2dyYW50cyBmYWlsZWQ6ICVz XG4iLAorICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJl dHVybiAtMTsKKyAgICB9CisKKyAgICBkb21pZHMgPSBnX21hbGxvYzBfbihibGtkZXYtPm5yX3Jp bmdfcmVmLCBzaXplb2YodWludDMyX3QpKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmxrZGV2LT5u cl9yaW5nX3JlZjsgaSsrKSB7CisgICAgICAgIGRvbWlkc1tpXSA9IGJsa2Rldi0+eGVuZGV2LmRv bTsKKyAgICB9CisKKyAgICBibGtkZXYtPnNyaW5nID0geGVuZ250dGFiX21hcF9ncmFudF9yZWZz KGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJsa2Rldi0+bnJfcmluZ19yZWYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZHMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPnJpbmdfcmVmLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisK KyAgICBnX2ZyZWUoZG9taWRzKTsKKwogICAgIGlmICghYmxrZGV2LT5zcmluZykgewogICAgICAg ICByZXR1cm4gLTE7CiAgICAgfQorCiAgICAgYmxrZGV2LT5jbnRfbWFwKys7CiAKICAgICBzd2l0 Y2ggKGJsa2Rldi0+cHJvdG9jb2wpIHsKICAgICBjYXNlIEJMS0lGX1BST1RPQ09MX05BVElWRToK ICAgICB7CiAgICAgICAgIGJsa2lmX3NyaW5nX3QgKnNyaW5nX25hdGl2ZSA9IGJsa2Rldi0+c3Jp bmc7Ci0gICAgICAgIEJBQ0tfUklOR19JTklUKCZibGtkZXYtPnJpbmdzLm5hdGl2ZSwgc3Jpbmdf bmF0aXZlLCBYQ19QQUdFX1NJWkUpOworICAgICAgICBCQUNLX1JJTkdfSU5JVCgmYmxrZGV2LT5y aW5ncy5uYXRpdmUsIHNyaW5nX25hdGl2ZSwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzMyOgogICAgIHsKICAgICAgICAgYmxr aWZfeDg2XzMyX3NyaW5nX3QgKnNyaW5nX3g4Nl8zMiA9IGJsa2Rldi0+c3Jpbmc7CiAKLSAgICAg ICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2XzMyX3BhcnQsIHNyaW5nX3g4Nl8z MiwgWENfUEFHRV9TSVpFKTsKKyAgICAgICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3Mu eDg2XzMyX3BhcnQsIHNyaW5nX3g4Nl8zMiwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzY0OgogICAgIHsKICAgICAgICAgYmxr aWZfeDg2XzY0X3NyaW5nX3QgKnNyaW5nX3g4Nl82NCA9IGJsa2Rldi0+c3Jpbmc7CiAKLSAgICAg ICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2XzY0X3BhcnQsIHNyaW5nX3g4Nl82 NCwgWENfUEFHRV9TSVpFKTsKKyAgICAgICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3Mu eDg2XzY0X3BhcnQsIHNyaW5nX3g4Nl82NCwgcmluZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIH0KIAogICAgIGlmIChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewogICAg ICAgICAvKiBJbml0IHBlcnNpc3RlbnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+bWF4X2dy YW50cyA9IG1heF9yZXF1ZXN0cyAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKKyAg ICAgICAgYmxrZGV2LT5tYXhfZ3JhbnRzID0gYmxrZGV2LT5tYXhfcmVxdWVzdHMgKgorICAgICAg ICAgICAgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUOwogICAgICAgICBibGtkZXYtPnBl cnNpc3RlbnRfZ250cyA9IGdfdHJlZV9uZXdfZnVsbCgoR0NvbXBhcmVEYXRhRnVuYylpbnRfY21w LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoX21h cHMgPwpAQCAtMTIwOCw5ICsxMjg5LDkgQEAgc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3Qg WGVuRGV2aWNlICp4ZW5kZXYpCiAKICAgICB4ZW5fYmVfYmluZF9ldnRjaG4oJmJsa2Rldi0+eGVu ZGV2KTsKIAotICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAxLCAib2s6IHByb3Rv ICVzLCByaW5nLXJlZiAlZCwgIgorICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAx LCAib2s6IHByb3RvICVzLCBuci1yaW5nLXJlZiAldSwgIgogICAgICAgICAgICAgICAgICAgInJl bW90ZSBwb3J0ICVkLCBsb2NhbCBwb3J0ICVkXG4iLAotICAgICAgICAgICAgICAgICAgYmxrZGV2 LT54ZW5kZXYucHJvdG9jb2wsIGJsa2Rldi0+cmluZ19yZWYsCisgICAgICAgICAgICAgICAgICBi bGtkZXYtPnhlbmRldi5wcm90b2NvbCwgYmxrZGV2LT5ucl9yaW5nX3JlZiwKICAgICAgICAgICAg ICAgICAgIGJsa2Rldi0+eGVuZGV2LnJlbW90ZV9wb3J0LCBibGtkZXYtPnhlbmRldi5sb2NhbF9w b3J0KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEyMjcsNyArMTMwOCw4IEBAIHN0YXRpYyB2b2lk IGJsa19kaXNjb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICB4ZW5fcHZfdW5i aW5kX2V2dGNobigmYmxrZGV2LT54ZW5kZXYpOwogCiAgICAgaWYgKGJsa2Rldi0+c3JpbmcpIHsK LSAgICAgICAgeGVuZ250dGFiX3VubWFwKGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiwgYmxrZGV2 LT5zcmluZywgMSk7CisgICAgICAgIHhlbmdudHRhYl91bm1hcChibGtkZXYtPnhlbmRldi5nbnR0 YWJkZXYsIGJsa2Rldi0+c3JpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPm5y X3JpbmdfcmVmKTsKICAgICAgICAgYmxrZGV2LT5jbnRfbWFwLS07CiAgICAgICAgIGJsa2Rldi0+ c3JpbmcgPSBOVUxMOwogICAgIH0KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==