From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH 1/6] libxl: add "merge" function to generic device type support Date: Tue, 12 Jul 2016 17:30:39 +0200 Message-ID: <1468337444-24108-2-git-send-email-jgross@suse.com> References: <1468337444-24108-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468337444-24108-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Juergen Gross , wei.liu2@citrix.com, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiB1c2luZyBhIG1hY3JvIGdlbmVyYXRpbmcgdGhlIGNvZGUgdG8gbWVyZ2UgeGVu c3RvcmUgYW5kCmpzb24gY29uZmlndXJhdGlvbiBkYXRhLCB1c2UgdGhlIGdlbmVyaWMgZGV2aWNl IHR5cGUgc3VwcG9ydCBmb3IKdGhpcyBwdXJwb3NlLgoKVGhpcyByZXF1aXJlcyB0byBhZGQgc29t ZSBhY2Nlc3NvciBmdW5jdGlvbnMgdG8gdGhlIGZyYW1ld29yayBhbmQKYSBzdHJ1Y3R1cmUgZm9y IGRpc2tzIChhcyBkaXNrcyBhcmUgYWRkZWQgc2VwYXJhdGVseSB0aGV5IGRpZG4ndCBuZWVkCnN1 Y2ggYSBzdHJ1Y3R1cmUgdXAgdG8gbm93KS4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3Mg PGpncm9zc0BzdXNlLmNvbT4KLS0tCiB0b29scy9saWJ4bC9saWJ4bC5jICAgICAgICAgIHwgMTgx ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhs L2xpYnhsX2NyZWF0ZS5jICAgfCAgMTggKysrLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmggfCAgNTIgKysrKysrKysrKystLQogdG9vbHMvbGlieGwvbGlieGxfcGNpLmMgICAgICB8ICAg OCArLQogdG9vbHMvbGlieGwvbGlieGxfcHZ1c2IuYyAgICB8ICAxMiArKysKIDUgZmlsZXMgY2hh bmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDkwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL2xpYnhsLmMgYi90b29scy9saWJ4bC9saWJ4bC5jCmluZGV4IDJjZjc0NTEuLjA3 Yjk2YzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGwuYwpAQCAtNzM3MSw5MyArNzM3MSw2OCBAQCBpbnQgbGlieGxfcmV0cmlldmVfZG9tYWlu X2NvbmZpZ3VyYXRpb24obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAqICAg IGVudHJ5IHJldHJpZXZlZCBmcm9tIHhlbnN0b3JlIHdoaWxlICJkc3QiIHBvaW50cyB0byB0aGUg ZW50cnkKICAgICAgKiAgICByZXRyaWV2ZSBmcm9tIEpTT04uCiAgICAgICovCi0jZGVmaW5lIE1F UkdFKHR5cGUsIHB0ciwgY29tcGFyZSwgbWVyZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGxpYnhsX2RldmljZV8jI3R5cGUgKnAg PSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGludCBp LCBqLCBudW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHAgPSBsaWJ4bF9kZXZpY2VfIyN0eXBlIyNf bGlzdChDVFgsIGRvbWlkLCAmbnVtKTsgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChwID09 IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICBMT0coREVCVUcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgIm5vICVzIGZyb20geGVuc3RvcmUg Zm9yIGRvbWFpbiAlZCIsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgI3R5 cGUsIGRvbWlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZvciAoaSA9IDA7IGkg PCBkX2NvbmZpZy0+bnVtXyMjcHRyOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAg ICAgICAgICBsaWJ4bF9kZXZpY2VfIyN0eXBlICpxID0gJmRfY29uZmlnLT5wdHJbaV07ICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbnVtOyBqKyspIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgaWYgKGNvbXBh cmUoJnBbal0sIHEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICBpZiAoaiA8IG51bSkgeyAgICAgICAgIC8qIGZvdW5kIGluIHhlbnN0b3JlICovICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgICAgbGlieGxfZGV2aWNlXyMjdHlwZSAqZHN0LCAqc3JjOyAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZHN0ID0gcTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg ICAgc3JjID0gJnBbal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICAgICAgbWVyZ2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAg ICAvKiBub3QgZm91bmQgaW4geGVuc3RvcmUgKi8gICAgICAgICBcCi0gICAgICAgICAgICAgICAg TE9HKFdBUk4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAgICAgIkRldmljZSBwcmVzZW50IGluIEpTT04gYnV0IG5vdCBpbiB4ZW5z dG9yZSwgaWdub3JlZCIpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgbGli eGxfZGV2aWNlXyMjdHlwZSMjX2Rpc3Bvc2UocSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZm9yIChqID0gaTsgaiA8IGRfY29uZmln LT5udW1fIyNwdHIgLSAxOyBqKyspICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG1l bWNweSgmZF9jb25maWctPnB0cltqXSwgJmRfY29uZmlnLT5wdHJbaisxXSwgICAgICBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobGlieGxfZGV2aWNlXyMjdHlwZSkpOyAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZF9jb25maWct PnB0ciA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICAgICAgICAgIGxpYnhsX19yZWFsbG9jKE5PR0MsIGRfY29uZmlnLT5wdHIsICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihsaWJ4 bF9kZXZpY2VfIyN0eXBlKSAqICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkX2NvbmZpZy0+bnVtXyMjcHRyIC0gMSkpOyAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgICAgLyogcmV3aW5kIGNvdW50ZXJzICovICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgZF9jb25maWctPm51bV8j I3B0ci0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg ICAgaS0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBsaWJ4bF9kZXZpY2VfIyN0eXBlIyNfZGlz cG9zZSgmcFtpXSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZyZWUocCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgfSB3aGlsZSAoMCk7CisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNl X3R5cGUgKmR0OworICAgICAgICBpbnQgaWR4OwogCi0gICAgTUVSR0UobmljLCBuaWNzLCBDT01Q QVJFX0RFVklELCB7fSk7CisgICAgICAgIGZvciAoaWR4ID0gMDs7IGlkeCsrKSB7CisgICAgICAg ICAgICB2b2lkICpwID0gTlVMTDsKKyAgICAgICAgICAgIHZvaWQgKipkZXZzOworICAgICAgICAg ICAgaW50IGksIGosIG51bTsKKyAgICAgICAgICAgIGludCAqbnVtX2RldjsKIAotICAgIE1FUkdF KHZ0cG0sIHZ0cG1zLCBDT01QQVJFX0RFVklELCB7fSk7CisgICAgICAgICAgICBkdCA9IGRldmlj ZV90eXBlX3RibFtpZHhdOworICAgICAgICAgICAgaWYgKCFkdCkKKyAgICAgICAgICAgICAgICBi cmVhazsKIAotICAgIE1FUkdFKHBjaSwgcGNpZGV2cywgQ09NUEFSRV9QQ0ksIHt9KTsKKyAgICAg ICAgICAgIGlmICghZHQtPmxpc3QgfHwgIWR0LT5jb21wYXJlKQorICAgICAgICAgICAgICAgIGNv bnRpbnVlOwogCi0gICAgTUVSR0UodXNiY3RybCwgdXNiY3RybHMsIENPTVBBUkVfVVNCQ1RSTCwg e30pOworICAgICAgICAgICAgbnVtX2RldiA9IGxpYnhsX19kZXZpY2VfdHlwZV9nZXRfbnVtKGR0 LCBkX2NvbmZpZyk7CisgICAgICAgICAgICBwID0gZHQtPmxpc3QoQ1RYLCBkb21pZCwgJm51bSk7 CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgTE9HKERFQlVH LCAibm8gJXMgZnJvbSB4ZW5zdG9yZSBmb3IgZG9tYWluICVkIiwKKyAgICAgICAgICAgICAgICAg ICAgZHQtPnR5cGUsIGRvbWlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRldnMgPSBs aWJ4bF9fZGV2aWNlX3R5cGVfZ2V0X3B0cihkdCwgZF9jb25maWcpOworCisgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgKm51bV9kZXY7IGkrKykgeworICAgICAgICAgICAgICAgIHZvaWQgKnE7 CisKKyAgICAgICAgICAgICAgICBxID0gbGlieGxfX2RldmljZV90eXBlX2dldF9lbGVtKGR0LCBk X2NvbmZpZywgaSk7CisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bTsgaisrKSB7 CisgICAgICAgICAgICAgICAgICAgIGlmIChkdC0+Y29tcGFyZShwICsgZHQtPmRldl9lbGVtX3Np emUgKiBqLCBxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChqIDwgbnVtKSB7ICAgICAgICAgLyogZm91bmQg aW4geGVuc3RvcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGR0LT5tZXJnZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIGR0LT5tZXJnZShjdHgsIHAgKyBkdC0+ZGV2X2VsZW1fc2l6ZSAq IGosIHEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIC8qIG5vdCBm b3VuZCBpbiB4ZW5zdG9yZSAqLworICAgICAgICAgICAgICAgICAgICBMT0coV0FSTiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICJEZXZpY2UgcHJlc2VudCBpbiBKU09OIGJ1dCBub3QgaW4geGVu c3RvcmUsIGlnbm9yZWQiKTsKKworICAgICAgICAgICAgICAgICAgICBkdC0+ZGlzcG9zZShxKTsK KworICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBpOyBqIDwgKm51bV9kZXYgLSAxOyBqKysp CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkobGlieGxfX2RldmljZV90eXBlX2dldF9l bGVtKGR0LCBkX2NvbmZpZywgaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX2RldmljZV90eXBlX2dldF9lbGVtKGR0LCBkX2NvbmZpZywgaisxKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkdC0+ZGV2X2VsZW1fc2l6ZSk7CiAKLSAgICBNRVJHRSh1c2Jk ZXYsIHVzYmRldnMsIENPTVBBUkVfVVNCLCB7fSk7CisgICAgICAgICAgICAgICAgICAgIC8qIHJl d2luZCBjb3VudGVycyAqLworICAgICAgICAgICAgICAgICAgICAoKm51bV9kZXYpLS07CisgICAg ICAgICAgICAgICAgICAgIGktLTsKIAotICAgIC8qIFRha2UgY2FyZSBvZiByZW1vdmFibGUgZGV2 aWNlLiBXZSBtYWludGFpbiBpbnZhcmlhbnQgaW4gdGhlCi0gICAgICogaW5zZXJ0IC8gcmVtb3Zl IG9wZXJhdGlvbiBzbyB0aGF0OgotICAgICAqIDEuIGlmIHhlbnN0b3JlIGlzICJlbXB0eSIgd2hp bGUgSlNPTiBpcyBub3QsIHRoZSByZXN1bHQKLSAgICAgKiAgICBpcyAiZW1wdHkiCi0gICAgICog Mi4gaWYgeGVuc3RvcmUgaGFzIGEgZGlmZmVyZW50IG1lZGlhIHRoYW4gSlNPTiwgdXNlIHRoZQot ICAgICAqICAgIG9uZSBpbiBKU09OCi0gICAgICogMy4gaWYgeGVuc3RvcmUgYW5kIEpTT04gaGF2 ZSB0aGUgc2FtZSBtZWRpYSwgd2VsbCwgeW91Ci0gICAgICogICAga25vdyB0aGUgYW5zd2VyIDot KQotICAgICAqCi0gICAgICogQ3VycmVudGx5IHRoZXJlIGlzIG9ubHkgb25lIHJlbW92YWJsZSBk ZXZpY2UgLS0gQ0RST00uCi0gICAgICogTG9vayBmb3IgbGlieGxfY2Ryb21faW5zZXJ0IGZvciBy ZWZlcmVuY2UuCi0gICAgICovCi0gICAgTUVSR0UoZGlzaywgZGlza3MsIENPTVBBUkVfRElTSywg ewotICAgICAgICAgICAgaWYgKHNyYy0+cmVtb3ZhYmxlKSB7Ci0gICAgICAgICAgICAgICAgaWYg KCFzcmMtPnBkZXZfcGF0aCB8fCAqc3JjLT5wZGV2X3BhdGggPT0gJ1wwJykgewotICAgICAgICAg ICAgICAgICAgICAvKiAxLCBubyBtZWRpYSBpbiBkcml2ZSAqLwotICAgICAgICAgICAgICAgICAg ICBmcmVlKGRzdC0+cGRldl9wYXRoKTsKLSAgICAgICAgICAgICAgICAgICAgZHN0LT5wZGV2X3Bh dGggPSBsaWJ4bF9fc3RyZHVwKE5PR0MsICIiKTsKLSAgICAgICAgICAgICAgICAgICAgZHN0LT5m b3JtYXQgPSBMSUJYTF9ESVNLX0ZPUk1BVF9FTVBUWTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgICAgICAgICAgICAvKiAyIGFuZCAzLCB1c2UgSlNPTiwgbm8gbmVlZCB0byB0 b3VjaCBhbnl0aGluZyAqLwotICAgICAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICAgICAg ICAgICpkZXZzID0gbGlieGxfX3JlYWxsb2MoTk9HQywgKmRldnMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQtPmRldl9lbGVtX3NpemUgKiAqbnVtX2Rldik7 CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9KTsKIAotI3VuZGVm IE1FUkdFCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCisgICAgICAgICAg ICAgICAgZHQtPmRpc3Bvc2UocCArIGR0LT5kZXZfZWxlbV9zaXplICogaSk7CisgICAgICAgICAg ICBmcmVlKHApOworICAgICAgICB9CisgICAgfQogCiBvdXQ6CiAgICAgaWYgKGxvY2spIGxpYnhs X191bmxvY2tfZG9tYWluX3VzZXJkYXRhKGxvY2spOwpAQCAtNzQ2Niw2ICs3NDQxLDU2IEBAIG91 dDoKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgbGlieGxfZGV2aWNlX2Rpc2tfY29t cGFyZShsaWJ4bF9kZXZpY2VfZGlzayAqZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX2Rpc2sgKmQyKQoreworICAgIHJldHVybiBDT01QQVJFX0RJ U0soZDEsIGQyKTsKK30KKworLyogVGFrZSBjYXJlIG9mIHJlbW92YWJsZSBkZXZpY2UuIFdlIG1h aW50YWluIGludmFyaWFudCBpbiB0aGUKKyAqIGluc2VydCAvIHJlbW92ZSBvcGVyYXRpb24gc28g dGhhdDoKKyAqIDEuIGlmIHhlbnN0b3JlIGlzICJlbXB0eSIgd2hpbGUgSlNPTiBpcyBub3QsIHRo ZSByZXN1bHQKKyAqICAgIGlzICJlbXB0eSIKKyAqIDIuIGlmIHhlbnN0b3JlIGhhcyBhIGRpZmZl cmVudCBtZWRpYSB0aGFuIEpTT04sIHVzZSB0aGUKKyAqICAgIG9uZSBpbiBKU09OCisgKiAzLiBp ZiB4ZW5zdG9yZSBhbmQgSlNPTiBoYXZlIHRoZSBzYW1lIG1lZGlhLCB3ZWxsLCB5b3UKKyAqICAg IGtub3cgdGhlIGFuc3dlciA6LSkKKyAqCisgKiBDdXJyZW50bHkgdGhlcmUgaXMgb25seSBvbmUg cmVtb3ZhYmxlIGRldmljZSAtLSBDRFJPTS4KKyAqIExvb2sgZm9yIGxpYnhsX2Nkcm9tX2luc2Vy dCBmb3IgcmVmZXJlbmNlLgorICovCitzdGF0aWMgdm9pZCBsaWJ4bF9kZXZpY2VfZGlza19tZXJn ZShsaWJ4bF9jdHggKmN0eCwgdm9pZCAqZDEsIHZvaWQgKmQyKQoreworICAgIEdDX0lOSVQoY3R4 KTsKKyAgICBsaWJ4bF9kZXZpY2VfZGlzayAqc3JjID0gZDE7CisgICAgbGlieGxfZGV2aWNlX2Rp c2sgKmRzdCA9IGQyOworCisgICAgaWYgKHNyYy0+cmVtb3ZhYmxlKSB7CisgICAgICAgIGlmICgh c3JjLT5wZGV2X3BhdGggfHwgKnNyYy0+cGRldl9wYXRoID09ICdcMCcpIHsKKyAgICAgICAgICAg IC8qIDEsIG5vIG1lZGlhIGluIGRyaXZlICovCisgICAgICAgICAgICBmcmVlKGRzdC0+cGRldl9w YXRoKTsKKyAgICAgICAgICAgIGRzdC0+cGRldl9wYXRoID0gbGlieGxfX3N0cmR1cChOT0dDLCAi Iik7CisgICAgICAgICAgICBkc3QtPmZvcm1hdCA9IExJQlhMX0RJU0tfRk9STUFUX0VNUFRZOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogMiBhbmQgMywgdXNlIEpTT04sIG5vIG5l ZWQgdG8gdG91Y2ggYW55dGhpbmcgKi8KKyAgICAgICAgICAgIDsKKyAgICAgICAgfQorICAgIH0K K30KKworc3RhdGljIGludCBsaWJ4bF9kZXZpY2VfbmljX2NvbXBhcmUobGlieGxfZGV2aWNlX25p YyAqZDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2Vf bmljICpkMikKK3sKKyAgICByZXR1cm4gQ09NUEFSRV9ERVZJRChkMSwgZDIpOworfQorCitzdGF0 aWMgaW50IGxpYnhsX2RldmljZV92dHBtX2NvbXBhcmUobGlieGxfZGV2aWNlX3Z0cG0gKmQxLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RldmljZV92dHBtICpk MikKK3sKKyAgICByZXR1cm4gQ09NUEFSRV9ERVZJRChkMSwgZDIpOworfQorCitERUZJTkVfREVW SUNFX1RZUEVfU1RSVUNUKGRpc2ssIC5tZXJnZSA9IGxpYnhsX2RldmljZV9kaXNrX21lcmdlKTsK IERFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1QobmljKTsKIERFRklORV9ERVZJQ0VfVFlQRV9TVFJV Q1QodnRwbSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9v bHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXggODI4ZjI1NC4uNDBkYWMxYSAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3Jl YXRlLmMKQEAgLTE0MjAsMTUgKzE0MjAsMTkgQEAgb3V0OgogICAgIGFvZGV2LT5jYWxsYmFjayhl Z2MsIGFvZGV2KTsKIH0KIAorI2RlZmluZSBsaWJ4bF9kZXZpY2VfZHRkZXZfbGlzdCBOVUxMCisj ZGVmaW5lIGxpYnhsX2RldmljZV9kdGRldl9jb21wYXJlIE5VTEwKIHN0YXRpYyBERUZJTkVfREVW SUNFX1RZUEVfU1RSVUNUKGR0ZGV2KTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZp Y2VfdHlwZSAqZGV2aWNlX3R5cGVfdGJsW10gPSB7Citjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNl X3R5cGUgKmRldmljZV90eXBlX3RibFtdID0geworICAgICZsaWJ4bF9fZGlza19kZXZ0eXBlLAog ICAgICZsaWJ4bF9fbmljX2RldnR5cGUsCiAgICAgJmxpYnhsX192dHBtX2RldnR5cGUsCiAgICAg JmxpYnhsX191c2JjdHJsX2RldnR5cGUsCiAgICAgJmxpYnhsX191c2JkZXZfZGV2dHlwZSwKICAg ICAmbGlieGxfX3BjaWRldl9kZXZ0eXBlLAogICAgICZsaWJ4bF9fZHRkZXZfZGV2dHlwZSwKKyAg ICBOVUxMCiB9OwogCiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYXR0YWNoX2RldmljZXMobGlieGxf X2VnYyAqZWdjLApAQCAtMTQ0OCw5ICsxNDUyLDkgQEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2F0 dGFjaF9kZXZpY2VzKGxpYnhsX19lZ2MgKmVnYywKICAgICB9CiAKICAgICBkY3MtPmRldmljZV90 eXBlX2lkeCsrOwotICAgIGlmIChkY3MtPmRldmljZV90eXBlX2lkeCA8IEFSUkFZX1NJWkUoZGV2 aWNlX3R5cGVfdGJsKSkgewotICAgICAgICBkdCA9IGRldmljZV90eXBlX3RibFtkY3MtPmRldmlj ZV90eXBlX2lkeF07Ci0gICAgICAgIGlmICgqKGludCAqKSgodm9pZCAqKWRfY29uZmlnICsgZHQt Pm51bV9vZmZzZXQpID4gMCkgeworICAgIGR0ID0gZGV2aWNlX3R5cGVfdGJsW2Rjcy0+ZGV2aWNl X3R5cGVfaWR4XTsKKyAgICBpZiAoZHQpIHsKKyAgICAgICAgaWYgKCpsaWJ4bF9fZGV2aWNlX3R5 cGVfZ2V0X251bShkdCwgZF9jb25maWcpID4gMCkgewogICAgICAgICAgICAgLyogQXR0YWNoIGRl dmljZXMgKi8KICAgICAgICAgICAgIGxpYnhsX19tdWx0aWRldl9iZWdpbihhbywgJmRjcy0+bXVs dGlkZXYpOwogICAgICAgICAgICAgZGNzLT5tdWx0aWRldi5jYWxsYmFjayA9IGRvbWNyZWF0ZV9h dHRhY2hfZGV2aWNlczsKQEAgLTE0OTcsNyArMTUwMSwxMSBAQCBzdGF0aWMgdm9pZCBkb21jcmVh dGVfZGV2bW9kZWxfc3RhcnRlZChsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgIH0KICAgICB9CiAK LSAgICBkY3MtPmRldmljZV90eXBlX2lkeCA9IC0xOworICAgIC8qCisgICAgICogU2V0dGluZyBk Y3MtPmRldmljZV90eXBlX2lkeCB0byAwIHdpbGwgc2tpcCBkaXNrcywgdGhvc2UgaGF2ZSBiZWVu CisgICAgICogYWxyZWFkeSBhZGRlZC4KKyAgICAgKi8KKyAgICBkY3MtPmRldmljZV90eXBlX2lk eCA9IDA7CiAgICAgZG9tY3JlYXRlX2F0dGFjaF9kZXZpY2VzKGVnYywgJmRjcy0+bXVsdGlkZXYs IDApOwogICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJu YWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggNTM0N2I2OS4uMWE2MmQ2 ZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9s aWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC0zNDQxLDIzICszNDQxLDYzIEBAIF9oaWRkZW4gdm9p ZCBsaWJ4bF9fYm9vdGxvYWRlcl9ydW4obGlieGxfX2VnYyosIGxpYnhsX19ib290bG9hZGVyX3N0 YXRlICpzdCk7CiAKIHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSB7CiAgICAgY2hhciAqdHlwZTsK LSAgICBpbnQgbnVtX29mZnNldDsgICAvKiBPZmZzZXQgb2YgIyBvZiBkZXZpY2VzIGluIGxpYnhs X2RvbWFpbl9jb25maWcgKi8KKyAgICBpbnQgcHRyX29mZnNldDsgICAgLyogT2Zmc2V0IG9mIGRl dmljZSBhcnJheSBwdHIgaW4gbGlieGxfZG9tYWluX2NvbmZpZyAqLworICAgIGludCBudW1fb2Zm c2V0OyAgICAvKiBPZmZzZXQgb2YgIyBvZiBkZXZpY2VzIGluIGxpYnhsX2RvbWFpbl9jb25maWcg Ki8KKyAgICBpbnQgZGV2X2VsZW1fc2l6ZTsgLyogU2l6ZSBvZiBvbmUgZGV2aWNlIGVsZW1lbnQg aW4gYXJyYXkgKi8KICAgICB2b2lkICgqYWRkKShsaWJ4bF9fZWdjICosIGxpYnhsX19hbyAqLCB1 aW50MzJfdCwgbGlieGxfZG9tYWluX2NvbmZpZyAqLAogICAgICAgICAgICAgICAgIGxpYnhsX19t dWx0aWRldiAqKTsKKyAgICB2b2lkICooKmxpc3QpKGxpYnhsX2N0eCAqLCB1aW50MzJfdCwgaW50 ICopOworICAgIHZvaWQgKCpkaXNwb3NlKSh2b2lkICopOworICAgIGludCAoKmNvbXBhcmUpKHZv aWQgKiwgdm9pZCAqKTsKKyAgICB2b2lkICgqbWVyZ2UpKGxpYnhsX2N0eCAqLCB2b2lkICosIHZv aWQgKik7CiB9OwogCi0jZGVmaW5lIERFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1QobmFtZSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29uc3Qgc3RydWN0IGxpYnhsX2Rl dmljZV90eXBlIGxpYnhsX18gIyMgbmFtZSAjIyBfZGV2dHlwZSA9IHsgICAgICBcCi0gICAgICAg IC50eXBlICAgICAgID0gI25hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgIC5udW1fb2Zmc2V0ID0gb2Zmc2V0b2YobGlieGxfZG9tYWluX2Nv bmZpZywgbnVtXyAjIyBuYW1lICMjIHMpLCBcCi0gICAgICAgIC5hZGQgICAgICAgID0gbGlieGxf X2FkZF8gIyMgbmFtZSAjIyBzLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIERF RklORV9ERVZJQ0VfVFlQRV9TVFJVQ1RfWChuYW1lLCBzbmFtZSwgLi4uKSAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4bF9f ICMjIG5hbWUgIyMgX2RldnR5cGUgPSB7ICAgICAgICAgICAgIFwKKyAgICAgICAgLnR5cGUgICAg ICAgICAgPSAjc25hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIC5wdHJfb2Zmc2V0ICAgID0gb2Zmc2V0b2YobGlieGxfZG9tYWluX2Nv bmZpZywgbmFtZSAjIyBzKSwgICAgICAgICAgICAgXAorICAgICAgICAubnVtX29mZnNldCAgICA9 IG9mZnNldG9mKGxpYnhsX2RvbWFpbl9jb25maWcsIG51bV8gIyMgbmFtZSAjIyBzKSwgICAgIFwK KyAgICAgICAgLmRldl9lbGVtX3NpemUgPSBzaXplb2YobGlieGxfZGV2aWNlXyAjIyBzbmFtZSks ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5hZGQgICAgICAgICAgID0gbGlieGxf X2FkZF8gIyMgbmFtZSAjIyBzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAubGlzdCAgICAgICAgICA9ICh2b2lkICooKikobGlieGxfY3R4ICosIHVpbnQzMl90LCBpbnQg KikpICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2Vf ICMjIHNuYW1lICMjIF9saXN0LCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5kaXNw b3NlICAgICAgID0gKHZvaWQgKCopKHZvaWQgKikpbGlieGxfZGV2aWNlXyAjIyBzbmFtZSAjIyBf ZGlzcG9zZSwgXAorICAgICAgICAuY29tcGFyZSAgICAgICA9IChpbnQgKCopKHZvaWQgKiwgdm9p ZCAqKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9kZXZpY2VfICMjIHNuYW1lICMjIF9jb21wYXJlLCAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIF9fVkFfQVJHU19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAorI2RlZmluZSBERUZJTkVfREVW SUNFX1RZUEVfU1RSVUNUKG5hbWUsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBERUZJTkVfREVWSUNFX1RZUEVfU1RSVUNUX1gobmFtZSwgbmFtZSwgX19WQV9B UkdTX18pCisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqKmxpYnhsX19kZXZpY2VfdHlwZV9nZXRfcHRy KAorICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsIGNvbnN0IGxpYnhsX2Rv bWFpbl9jb25maWcgKmRfY29uZmlnKQoreworICAgIHJldHVybiAodm9pZCAqKikoKHZvaWQgKilk X2NvbmZpZyArIGR0LT5wdHJfb2Zmc2V0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICpsaWJ4 bF9fZGV2aWNlX3R5cGVfZ2V0X2VsZW0oCisgICAgY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90 eXBlICpkdCwgY29uc3QgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCisgICAgaW50IGUp Cit7CisgICAgcmV0dXJuICpsaWJ4bF9fZGV2aWNlX3R5cGVfZ2V0X3B0cihkdCwgZF9jb25maWcp ICsgZHQtPmRldl9lbGVtX3NpemUgKiBlOworfQorCitzdGF0aWMgaW5saW5lIGludCAqbGlieGxf X2RldmljZV90eXBlX2dldF9udW0oCisgICAgY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBl ICpkdCwgY29uc3QgbGlieGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcpCit7CisgICAgcmV0dXJu IChpbnQgKikoKHZvaWQgKilkX2NvbmZpZyArIGR0LT5udW1fb2Zmc2V0KTsKK30KKworZXh0ZXJu IGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4bF9fZGlza19kZXZ0eXBlOwogZXh0 ZXJuIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSBsaWJ4bF9fbmljX2RldnR5cGU7CiBl eHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBlIGxpYnhsX192dHBtX2RldnR5cGU7 CiBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBlIGxpYnhsX191c2JjdHJsX2Rl dnR5cGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBlIGxpYnhsX191c2Jk ZXZfZGV2dHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgbGlieGxf X3BjaWRldl9kZXZ0eXBlOworCitleHRlcm4gY29uc3Qgc3RydWN0IGxpYnhsX2RldmljZV90eXBl ICpkZXZpY2VfdHlwZV90YmxbXTsKKwogLyotLS0tLSBEb21haW4gZGVzdHJ1Y3Rpb24gLS0tLS0q LwogCiAvKiBEb21haW4gZGVzdHJ1Y3Rpb24gaGFzIGJlZW4gc3BsaXQgaW50byB0d28gZnVuY3Rp b25zOgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcGNpLmMgYi90b29scy9saWJ4bC9s aWJ4bF9wY2kuYwppbmRleCA5Njc2Njg3Li4yMjM5OGE0IDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF9wY2kuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9wY2kuYwpAQCAtMTY5OCw3ICsx Njk4LDEzIEBAIGludCBsaWJ4bF9fZ3JhbnRfdmdhX2lvbWVtX3Blcm1pc3Npb24obGlieGxfX2dj ICpnYywgY29uc3QgdWludDMyX3QgZG9taWQsCiAgICAgcmV0dXJuIDA7CiB9CiAKLURFRklORV9E RVZJQ0VfVFlQRV9TVFJVQ1QocGNpZGV2KTsKK3N0YXRpYyBpbnQgbGlieGxfZGV2aWNlX3BjaV9j b21wYXJlKGxpYnhsX2RldmljZV9wY2kgKmQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3BjaSAqZDIpCit7CisgICAgcmV0dXJuIENPTVBBUkVfUENJ KGQxLCBkMik7Cit9CisKK0RFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1RfWChwY2lkZXYsIHBjaSk7 CiAKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4 bF9wdnVzYi5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHZ1c2IuYwppbmRleCA0MWVhNmJjLi40OGE0 Y2VjIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wdnVzYi5jCisrKyBiL3Rvb2xzL2xp YnhsL2xpYnhsX3B2dXNiLmMKQEAgLTE2NzUsNiArMTY3NSwxOCBAQCBvdXQ6CiAgICAgcmV0dXJu IHJjOwogfQogCitzdGF0aWMgaW50IGxpYnhsX2RldmljZV91c2JjdHJsX2NvbXBhcmUobGlieGxf ZGV2aWNlX3VzYmN0cmwgKmQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX2RldmljZV91c2JjdHJsICpkMikKK3sKKyAgICByZXR1cm4gQ09NUEFSRV9VU0JD VFJMKGQxLCBkMik7Cit9CisKK3N0YXRpYyBpbnQgbGlieGxfZGV2aWNlX3VzYmRldl9jb21wYXJl KGxpYnhsX2RldmljZV91c2JkZXYgKmQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfZGV2aWNlX3VzYmRldiAqZDIpCit7CisgICAgcmV0dXJuIENPTVBBUkVf VVNCKGQxLCBkMik7Cit9CisKIERFRklORV9ERVZJQ0VfVFlQRV9TVFJVQ1QodXNiY3RybCk7CiBE RUZJTkVfREVWSUNFX1RZUEVfU1RSVUNUKHVzYmRldik7CiAKLS0gCjIuNi42CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==