From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v3 2/2] block/xen-blkfront: Handle non-indirect grant with 64KB pages Date: Wed, 18 Nov 2015 18:57:25 +0000 Message-ID: <1447873045-14663-3-git-send-email-julien.grall__23487.7507471994$1447873240$gmane$org@citrix.com> References: <1447873045-14663-1-git-send-email-julien.grall@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.72) (envelope-from ) id 1Zz7wU-0005Ic-IB for xen-devel@lists.xenproject.org; Wed, 18 Nov 2015 18:58:54 +0000 In-Reply-To: <1447873045-14663-1-git-send-email-julien.grall@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Cc: Julien Grall , David Vrabel , Boris Ostrovsky , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhlIG1pbmltYWwgc2l6ZSBvZiByZXF1ZXN0IGluIHRoZSBibG9jayBmcmFtZXdvcmsgaXMgYWx3 YXlzIFBBR0VfU0laRS4KSXQgbWVhbnMgdGhhdCB3aGVuIDY0S0IgZ3Vlc3QgaXMgc3VwcG9ydCwg dGhlIHJlcXVlc3Qgd2lsbCBhdCBsZWFzdCBiZQo2NEtCLgoKQWx0aG91Z2gsIGlmIHRoZSBiYWNr ZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpbmRpcmVjdCBkZXNjcmlwdG9yIChzdWNoIGFzIFFESVNLCmlu IFFFTVUpLCBhIHJpbmcgcmVxdWVzdCBpcyBvbmx5IGFibGUgdG8gYWNjb21tb2RhdGUgMTEgc2Vn bWVudHMgb2YgNEtCCihpLmUgNDRLQikuCgpUaGUgY3VycmVudCBmcm9udGVuZCBpcyBhc3N1bWlu ZyB0aGF0IGFuIEkvTyByZXF1ZXN0IHdpbGwgYWx3YXlzIGZpdCBpbgphIHJpbmcgcmVxdWVzdC4g VGhpcyBpcyBub3QgdHJ1ZSBhbnkgbW9yZSB3aGVuIHVzaW5nIDY0S0IgcGFnZQpncmFudWxhcml0 eSBhbmQgd2lsbCB0aGVyZWZvcmUgY3Jhc2ggZHVyaW5nIGJvb3QuCgpPbiBBUk02NCwgdGhlIEFC SSBpcyBjb21wbGV0ZWx5IG5ldXRyYWwgdG8gdGhlIHBhZ2UgZ3JhbnVsYXJpdHkgdXNlZCBieQp0 aGUgZG9tVS4gVGhlIGd1ZXN0IGhhcyB0aGUgY2hvaWNlIGJldHdlZW4gZGlmZmVyZW50IHBhZ2Ug Z3JhbnVsYXJpdHkKc3VwcG9ydGVkIGJ5IHRoZSBwcm9jZXNzb3JzIChmb3IgaW5zdGFuY2Ugb24g QVJNNjQ6IDRLQiwgMTZLQiwgNjRLQikuClRoaXMgY2FuJ3QgYmUgZW5mb3JjZWQgYnkgdGhlIGh5 cGVydmlzb3IgYW5kIHRoZXJlZm9yZSBpdCdzIHBvc3NpYmxlIHRvCnJ1biBndWVzdHMgdXNpbmcg ZGlmZmVyZW50IHBhZ2UgZ3JhbnVsYXJpdHkuCgpTbyB3ZSBjYW4ndCBtYW5kYXRlIHRoZSBibG9j ayBiYWNrZW5kIHRvIHN1cHBvcnQgaW5kaXJlY3QgZGVzY3JpcHRvcgp3aGVuIHRoZSBmcm9udGVu ZCBpcyB1c2luZyA2NEtCIHBhZ2UgZ3JhbnVsYXJpdHkgYW5kIGhhdmUgdG8gZml4IGl0CnByb3Bl cmx5IGluIHRoZSBmcm9udGVuZC4KClRoZSBzb2x1dGlvbiBleHBvc2VkIGJlbG93IGlzIGJhc2Vk IG9uIG1vZGlmeWluZyBkaXJlY3RseSB0aGUgZnJvbnRlbmQKZ3Vlc3QgcmF0aGVyIHRoYW4gYXNr aW5nIHRoZSBibG9jayBmcmFtZXdvcmsgdG8gc3VwcG9ydCBzbWFsbGVyIHNpemUKKGkuZSA8IFBB R0VfU0laRSkuIFRoaXMgaXMgYmVjYXVzZSB0aGUgY2hhbmdlIGlzIHRoZSBibG9jayBmcmFtZXdv cmsgYXJlCm5vdCB0cml2aWFsIGFzIGV2ZXJ5dGhpbmcgc2VlbXMgdG8gcmVseWluZyBvbiBhIHN0 cnVjdCAqcGFnZSAoc2VlIFsxXSkuCkFsdGhvdWdoLCBpdCBtYXkgYmUgcG9zc2libGUgdGhhdCBz b21lb25lIHN1Y2NlZWQgdG8gZG8gaXQgaW4gdGhlIGZ1dHVyZQphbmQgd2Ugd291bGQgdGhlcmVm b3JlIGJlIGFibGUgdG8gdXNlIGl0LgoKR2l2ZW4gdGhhdCBhIGJsb2NrIHJlcXVlc3QgbWF5IG5v dCBmaXQgaW4gYSBzaW5nbGUgcmluZyByZXF1ZXN0LCBhCnNlY29uZCByZXF1ZXN0IGlzIGludHJv ZHVjZWQgZm9yIHRoZSBkYXRhIHRoYXQgY2Fubm90IGZpdCBpbiB0aGUgZmlyc3QKb25lLiBUaGlz IG1lYW5zIHRoYXQgdGhlIHNlY29uZCByaW5nIHJlcXVlc3Qgc2hvdWxkIG5ldmVyIGJlIHVzZWQg b24KTGludXggaWYgdGhlIHBhZ2Ugc2l6ZSBpcyBzbWFsbGVyIHRoYW4gNDRLQi4KClRvIGFjaGll dmUgdGhlIHN1cHBvcnQgb2YgdGhlIGV4dHJhIHJpbmcgcmVxdWVzdCwgdGhlIGJsb2NrIHF1ZXVl IHNpemUKaXMgZGl2aWRlZCBieSB0d28uIFRoZXJlZm9yZSwgdGhlIHJpbmcgd2lsbCBhbHdheXMg Y29udGFpbiBlbm91Z2ggc3BhY2UKdG8gYWNjb21tb2RhdGUgMiByaW5nIHJlcXVlc3RzLiBXaGls ZSB0aGlzIHdpbGwgcmVkdWNlIHRoZSBvdmVyYWxsCnBlcmZvcm1hbmNlLCBpdCB3aWxsIG1ha2Ug dGhlIGltcGxlbWVudGF0aW9uIG1vcmUgY29udGFpbmVkLiBUaGUgd2F5CmZvcndhcmQgdG8gZ2V0 IGJldHRlciBwZXJmb3JtYW5jZSBpcyB0byBpbXBsZW1lbnQgaW4gdGhlIGJhY2tlbmQgZWl0aGVy CmluZGlyZWN0IGRlc2NyaXB0b3Igb3IgbXVsdGlwbGUgZ3JhbnRzIHJpbmcuCgpOb3RlIHRoYXQg dGhlIHBhcmFtZXRlcnMgYmxrX3F1ZXVlX21heF8qIGhlbHBlcnMgaGF2ZW4ndCBiZWVuIHVwZGF0 ZWQuClRoZSBibG9jayBjb2RlIHdpbGwgc2V0IHRoZSBtaW1pbXVtIHNpemUgc3VwcG9ydGVkIGFu ZCB3ZSBtYXkgYmUgYWJsZQp0byBzdXBwb3J0IGRpcmVjdGx5IGFueSBjaGFuZ2UgaW4gdGhlIGJs b2NrIGZyYW1ld29yayB0aGF0IGxvd2VyIGRvd24KdGhlIG1pbmltYWwgc2l6ZSBvZiBhIHJlcXVl c3QuCgpbMV0gaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAx NS0wOC9tc2cwMjIwMC5odG1sCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5n cmFsbEBjaXRyaXguY29tPgoKLS0tCkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53 aWxrQG9yYWNsZS5jb20+CkNjOiAiUm9nZXIgUGF1IE1vbm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ2M6 IERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNpdHJpeC5jb20+CkNjOiBCb2IgTGl1IDxib2Iu bGl1QG9yYWNsZS5jb20+CgogICAgUm9nZXIsIEkgaGF2ZW4ndCBrZXB0IHlvdXIgYWNrZWQtYnkg YmVjYXVzZSB0aGUgdXBkYXRlIG9mIHRoZSBmaW5hbAogICAgc3RhdHVzLgoKICAgIENoYW5nZXMg aW4gdjM6CiAgICAgICAgLSBUeXBvZXMKICAgICAgICAtIENoYW5nZSB0aGUgd2F5IHRoZSBmaW5h bCBzdGF0dXMgaXMgY29tcHV0ZWQgdG8gaGFuZGxlIHRoZQogICAgICAgIHBvc3NpYmlsaXR5IG9m IHRoZSByZXF1ZXN0IGhhbmRsZWQgYnkgZGlmZmVyZW50IGJhY2tlbmQgKGNvdWxkCiAgICAgICAg aGFwcGVuIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSkuCgogICAgQ2hhbmdlcyBpbiB2MjoKICAgICAg ICAtIFVwZGF0ZSB0aGUgY29tbWl0IG1lc3NhZ2UKICAgICAgICAtIFR5cG9lcwogICAgICAgIC0g UmVuYW1lIHJpbmdfcmVxMi9pZDIgdG8gZXh0cmFfcmluZ19yZXEvZXh0cmFfaWQKLS0tCiBkcml2 ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jIHwgMjI4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTIgaW5zZXJ0aW9ucygrKSwgMTYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyBi L2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKaW5kZXggMjI0OGE0Ny4uMzNmNmZmNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYworKysgYi9kcml2ZXJzL2Jsb2Nr L3hlbi1ibGtmcm9udC5jCkBAIC02MCw2ICs2MCwyMCBAQAogCiAjaW5jbHVkZSA8YXNtL3hlbi9o eXBlcnZpc29yLmg+CiAKKy8qCisgKiBUaGUgbWluaW1hbCBzaXplIG9mIHNlZ21lbnQgc3VwcG9y dGVkIGJ5IHRoZSBibG9jayBmcmFtZXdvcmsgaXMgUEFHRV9TSVpFLgorICogV2hlbiBMaW51eCBp cyB1c2luZyBhIGRpZmZlcmVudCBwYWdlIHNpemUgdGhhbiB4ZW4sIGl0IG1heSBub3QgYmUgcG9z c2libGUKKyAqIHRvIHB1dCBhbGwgdGhlIGRhdGEgaW4gYSBzaW5nbGUgc2VnbWVudC4KKyAqIFRo aXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpbmRpcmVjdCBk ZXNjcmlwdG9yIGFuZAorICogdGhlcmVmb3JlIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRo YXQgYSByZXF1ZXN0IGNhbiBjYXJyeSBpcworICogQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFV RVNUICogWEVOX1BBR0VfU0laRSA9IDQ0S0IKKyAqCisgKiBOb3RlIHRoYXQgd2Ugb25seSBzdXBw b3J0IG9uZSBleHRyYSByZXF1ZXN0LiBTbyB0aGUgTGludXggcGFnZSBzaXplCisgKiBzaG91bGQg YmUgPD0gKCAyICogQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICogWEVOX1BBR0VfU0la RSkgPQorICogODhLQi4KKyAqLworI2RlZmluZSBIQVNfRVhUUkFfUkVRIChCTEtJRl9NQVhfU0VH TUVOVFNfUEVSX1JFUVVFU1QgPCBYRU5fUEZOX1BFUl9QQUdFKQorCiBlbnVtIGJsa2lmX3N0YXRl IHsKIAlCTEtJRl9TVEFURV9ESVNDT05ORUNURUQsCiAJQkxLSUZfU1RBVEVfQ09OTkVDVEVELApA QCAtNzIsNiArODYsMTMgQEAgc3RydWN0IGdyYW50IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7 CiB9OwogCitlbnVtIGJsa19yZXFfc3RhdHVzIHsKKwlSRVFfV0FJVElORywKKwlSRVFfRE9ORSwK KwlSRVFfRVJST1IsCisJUkVRX0VPUE5PVFNVUFAsCit9OworCiBzdHJ1Y3QgYmxrX3NoYWRvdyB7 CiAJc3RydWN0IGJsa2lmX3JlcXVlc3QgcmVxOwogCXN0cnVjdCByZXF1ZXN0ICpyZXF1ZXN0OwpA QCAtNzksNiArMTAwLDE0IEBAIHN0cnVjdCBibGtfc2hhZG93IHsKIAlzdHJ1Y3QgZ3JhbnQgKipp bmRpcmVjdF9ncmFudHM7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAl1bnNpZ25lZCBpbnQg bnVtX3NnOworCWVudW0gYmxrX3JlcV9zdGF0dXMgc3RhdHVzOworCisJI2RlZmluZSBOT19BU1NP Q0lBVEVEX0lEIH4wVUwKKwkvKgorCSAqIElkIG9mIHRoZSBzaWJsaW5nIGlmIHdlIGV2ZXIgbmVl ZCAyIHJlcXVlc3RzIHdoZW4gaGFuZGxpbmcgYQorCSAqIGJsb2NrIEkvTyByZXF1ZXN0CisJICov CisJdW5zaWduZWQgbG9uZyBhc3NvY2lhdGVkX2lkOwogfTsKIAogc3RydWN0IHNwbGl0X2JpbyB7 CkBAIC00NjcsNiArNDk2LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgYmxraWZfcmluZ19nZXRf cmVxdWVzdChzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbywKIAogCWlkID0gZ2V0X2lkX2Zyb21f ZnJlZWxpc3QoaW5mbyk7CiAJaW5mby0+c2hhZG93W2lkXS5yZXF1ZXN0ID0gcmVxOworCWluZm8t PnNoYWRvd1tpZF0uc3RhdHVzID0gUkVRX1dBSVRJTkc7CisJaW5mby0+c2hhZG93W2lkXS5hc3Nv Y2lhdGVkX2lkID0gTk9fQVNTT0NJQVRFRF9JRDsKIAogCSgqcmluZ19yZXEpLT51LnJ3LmlkID0g aWQ7CiAKQEAgLTUwOCw2ICs1MzksOSBAQCBzdHJ1Y3Qgc2V0dXBfcndfcmVxIHsKIAlib29sIG5l ZWRfY29weTsKIAl1bnNpZ25lZCBpbnQgYnZlY19vZmY7CiAJY2hhciAqYnZlY19kYXRhOworCisJ Ym9vbCByZXF1aXJlX2V4dHJhX3JlcTsKKwlzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqZXh0cmFfcmlu Z19yZXE7CiB9OwogCiBzdGF0aWMgdm9pZCBibGtpZl9zZXR1cF9yd19yZXFfZ3JhbnQodW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGludCBvZmZzZXQsCkBAIC01MjEsOCArNTU1LDI0IEBAIHN0 YXRpYyB2b2lkIGJsa2lmX3NldHVwX3J3X3JlcV9ncmFudCh1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgaW50IG9mZnNldCwKIAl1bnNpZ25lZCBpbnQgZ3JhbnRfaWR4ID0gc2V0dXAtPmdyYW50 X2lkeDsKIAlzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqcmluZ19yZXEgPSBzZXR1cC0+cmluZ19yZXE7 CiAJc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8gPSBzZXR1cC0+aW5mbzsKKwkvKgorCSAqIFdl IGFsd2F5cyB1c2UgdGhlIHNoYWRvdyBvZiB0aGUgZmlyc3QgcmVxdWVzdCB0byBzdG9yZSB0aGUg bGlzdAorCSAqIG9mIGdyYW50IGFzc29jaWF0ZWQgdG8gdGhlIGJsb2NrIEkvTyByZXF1ZXN0LiBU aGlzIG1hZGUgdGhlCisJICogY29tcGxldGlvbiBtb3JlIGVhc3kgdG8gaGFuZGxlIGV2ZW4gaWYg dGhlIGJsb2NrIEkvTyByZXF1ZXN0IGlzCisJICogc3BsaXQuCisJICovCiAJc3RydWN0IGJsa19z aGFkb3cgKnNoYWRvdyA9ICZpbmZvLT5zaGFkb3dbc2V0dXAtPmlkXTsKIAorCWlmICh1bmxpa2Vs eShzZXR1cC0+cmVxdWlyZV9leHRyYV9yZXEgJiYKKwkJICAgICBncmFudF9pZHggPj0gQkxLSUZf TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUKSkgeworCQkvKgorCQkgKiBXZSBhcmUgdXNpbmcgdGhl IHNlY29uZCByZXF1ZXN0LCBzZXR1cCBncmFudF9pZHgKKwkJICogdG8gYmUgdGhlIGluZGV4IG9m IHRoZSBzZWdtZW50IGFycmF5CisJCSAqLworCQlncmFudF9pZHggLT0gQkxLSUZfTUFYX1NFR01F TlRTX1BFUl9SRVFVRVNUOworCQlyaW5nX3JlcSA9IHNldHVwLT5leHRyYV9yaW5nX3JlcTsKKwl9 CisKIAlpZiAoKHJpbmdfcmVxLT5vcGVyYXRpb24gPT0gQkxLSUZfT1BfSU5ESVJFQ1QpICYmCiAJ ICAgIChncmFudF9pZHggJSBHUkFOVFNfUEVSX0lORElSRUNUX0ZSQU1FID09IDApKSB7CiAJCWlm IChzZXR1cC0+c2VnbWVudHMpCkBAIC01MzcsNyArNTg3LDExIEBAIHN0YXRpYyB2b2lkIGJsa2lm X3NldHVwX3J3X3JlcV9ncmFudCh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IG9mZnNl dCwKIAogCWdudF9saXN0X2VudHJ5ID0gZ2V0X2dyYW50KCZzZXR1cC0+Z3JlZl9oZWFkLCBnZm4s IGluZm8pOwogCXJlZiA9IGdudF9saXN0X2VudHJ5LT5ncmVmOwotCXNoYWRvdy0+Z3JhbnRzX3Vz ZWRbZ3JhbnRfaWR4XSA9IGdudF9saXN0X2VudHJ5OworCS8qCisJICogQWxsIHRoZSBncmFudHMg YXJlIHN0b3JlZCBpbiB0aGUgc2hhZG93IG9mIHRoZSBmaXJzdAorCSAqIHJlcXVlc3QuIFRoZXJl Zm9yZSB3ZSBoYXZlIHRvIHVzZSB0aGUgZ2xvYmFsIGluZGV4CisJICovCisJc2hhZG93LT5ncmFu dHNfdXNlZFtzZXR1cC0+Z3JhbnRfaWR4XSA9IGdudF9saXN0X2VudHJ5OwogCiAJaWYgKHNldHVw LT5uZWVkX2NvcHkpIHsKIAkJdm9pZCAqc2hhcmVkX2RhdGE7CkBAIC01NzksMTEgKzYzMywzMSBA QCBzdGF0aWMgdm9pZCBibGtpZl9zZXR1cF9yd19yZXFfZ3JhbnQodW5zaWduZWQgbG9uZyBnZm4s IHVuc2lnbmVkIGludCBvZmZzZXQsCiAJKHNldHVwLT5ncmFudF9pZHgpKys7CiB9CiAKK3N0YXRp YyB2b2lkIGJsa2lmX3NldHVwX2V4dHJhX3JlcShzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqZmlyc3Qs CisJCQkJICBzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqc2Vjb25kKQoreworCXVpbnQxNl90IG5yX3Nl Z21lbnRzID0gZmlyc3QtPnUucncubnJfc2VnbWVudHM7CisKKwkvKgorCSAqIFRoZSBzZWNvbmQg cmVxdWVzdCBpcyBvbmx5IHByZXNlbnQgd2hlbiB0aGUgZmlyc3QgcmVxdWVzdCB1c2VzCisJICog YWxsIGl0cyBzZWdtZW50cy4gSXQncyBhbHdheXMgdGhlIGNvbnRpbnVpdHkgb2YgdGhlIGZpcnN0 IG9uZS4KKwkgKi8KKwlmaXJzdC0+dS5ydy5ucl9zZWdtZW50cyA9IEJMS0lGX01BWF9TRUdNRU5U U19QRVJfUkVRVUVTVDsKKworCXNlY29uZC0+dS5ydy5ucl9zZWdtZW50cyA9IG5yX3NlZ21lbnRz IC0gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUOworCXNlY29uZC0+dS5ydy5zZWN0b3Jf bnVtYmVyID0gZmlyc3QtPnUucncuc2VjdG9yX251bWJlciArCisJCShCTEtJRl9NQVhfU0VHTUVO VFNfUEVSX1JFUVVFU1QgKiBYRU5fUEFHRV9TSVpFKSAvIDUxMjsKKworCXNlY29uZC0+dS5ydy5o YW5kbGUgPSBmaXJzdC0+dS5ydy5oYW5kbGU7CisJc2Vjb25kLT5vcGVyYXRpb24gPSBmaXJzdC0+ b3BlcmF0aW9uOworfQorCiBzdGF0aWMgaW50IGJsa2lmX3F1ZXVlX3J3X3JlcShzdHJ1Y3QgcmVx dWVzdCAqcmVxKQogewogCXN0cnVjdCBibGtmcm9udF9pbmZvICppbmZvID0gcmVxLT5ycV9kaXNr LT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IGJsa2lmX3JlcXVlc3QgKnJpbmdfcmVxOwotCXVuc2ln bmVkIGxvbmcgaWQ7CisJc3RydWN0IGJsa2lmX3JlcXVlc3QgKnJpbmdfcmVxLCAqZXh0cmFfcmlu Z19yZXEgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcgaWQsIGV4dHJhX2lkID0gTk9fQVNTT0NJQVRF RF9JRDsKKwlib29sIHJlcXVpcmVfZXh0cmFfcmVxID0gZmFsc2U7CiAJaW50IGk7CiAJc3RydWN0 IHNldHVwX3J3X3JlcSBzZXR1cCA9IHsKIAkJLmdyYW50X2lkeCA9IDAsCkBAIC02MjgsMTkgKzcw MiwxOSBAQCBzdGF0aWMgaW50IGJsa2lmX3F1ZXVlX3J3X3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVx KQogCS8qIEZpbGwgb3V0IGEgY29tbXVuaWNhdGlvbnMgcmluZyBzdHJ1Y3R1cmUuICovCiAJaWQg PSBibGtpZl9yaW5nX2dldF9yZXF1ZXN0KGluZm8sIHJlcSwgJnJpbmdfcmVxKTsKIAotCUJVR19P TihpbmZvLT5tYXhfaW5kaXJlY3Rfc2VnbWVudHMgPT0gMCAmJgotCSAgICAgICBHUkVGUyhyZXEt Pm5yX3BoeXNfc2VnbWVudHMpID4gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUKTsKLQlC VUdfT04oaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRzICYmCi0JICAgICAgIEdSRUZTKHJlcS0+ bnJfcGh5c19zZWdtZW50cykgPiBpbmZvLT5tYXhfaW5kaXJlY3Rfc2VnbWVudHMpOwotCiAJbnVt X3NnID0gYmxrX3JxX21hcF9zZyhyZXEtPnEsIHJlcSwgaW5mby0+c2hhZG93W2lkXS5zZyk7CiAJ bnVtX2dyYW50ID0gMDsKIAkvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBncmFudCB1c2VkICov CiAJZm9yX2VhY2hfc2coaW5mby0+c2hhZG93W2lkXS5zZywgc2csIG51bV9zZywgaSkKIAkgICAg ICAgbnVtX2dyYW50ICs9IGdudHRhYl9jb3VudF9ncmFudChzZy0+b2Zmc2V0LCBzZy0+bGVuZ3Ro KTsKIAorCXJlcXVpcmVfZXh0cmFfcmVxID0gaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRzID09 IDAgJiYKKwkJbnVtX2dyYW50ID4gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUOworCUJV R19PTighSEFTX0VYVFJBX1JFUSAmJiByZXF1aXJlX2V4dHJhX3JlcSk7CisKIAlpbmZvLT5zaGFk b3dbaWRdLm51bV9zZyA9IG51bV9zZzsKLQlpZiAobnVtX2dyYW50ID4gQkxLSUZfTUFYX1NFR01F TlRTX1BFUl9SRVFVRVNUKSB7CisJaWYgKG51bV9ncmFudCA+IEJMS0lGX01BWF9TRUdNRU5UU19Q RVJfUkVRVUVTVCAmJgorCSAgICBsaWtlbHkoIXJlcXVpcmVfZXh0cmFfcmVxKSkgewogCQkvKgog CQkgKiBUaGUgaW5kaXJlY3Qgb3BlcmF0aW9uIGNhbiBvbmx5IGJlIGEgQkxLSUZfT1BfUkVBRCBv cgogCQkgKiBCTEtJRl9PUF9XUklURQpAQCAtNjgwLDEwICs3NTQsMzAgQEAgc3RhdGljIGludCBi bGtpZl9xdWV1ZV9yd19yZXEoc3RydWN0IHJlcXVlc3QgKnJlcSkKIAkJCX0KIAkJfQogCQlyaW5n X3JlcS0+dS5ydy5ucl9zZWdtZW50cyA9IG51bV9ncmFudDsKKwkJaWYgKHVubGlrZWx5KHJlcXVp cmVfZXh0cmFfcmVxKSkgeworCQkJZXh0cmFfaWQgPSBibGtpZl9yaW5nX2dldF9yZXF1ZXN0KGlu Zm8sIHJlcSwKKwkJCQkJCQkgICZleHRyYV9yaW5nX3JlcSk7CisJCQkvKgorCQkJICogT25seSB0 aGUgZmlyc3QgcmVxdWVzdCBjb250YWlucyB0aGUgc2NhdHRlci1nYXRoZXIKKwkJCSAqIGxpc3Qu CisJCQkgKi8KKwkJCWluZm8tPnNoYWRvd1tleHRyYV9pZF0ubnVtX3NnID0gMDsKKworCQkJYmxr aWZfc2V0dXBfZXh0cmFfcmVxKHJpbmdfcmVxLCBleHRyYV9yaW5nX3JlcSk7CisKKwkJCS8qIExp bmsgdGhlIDIgcmVxdWVzdHMgdG9nZXRoZXIgKi8KKwkJCWluZm8tPnNoYWRvd1tleHRyYV9pZF0u YXNzb2NpYXRlZF9pZCA9IGlkOworCQkJaW5mby0+c2hhZG93W2lkXS5hc3NvY2lhdGVkX2lkID0g ZXh0cmFfaWQ7CisJCX0KIAl9CiAKIAlzZXR1cC5yaW5nX3JlcSA9IHJpbmdfcmVxOwogCXNldHVw LmlkID0gaWQ7CisKKwlzZXR1cC5yZXF1aXJlX2V4dHJhX3JlcSA9IHJlcXVpcmVfZXh0cmFfcmVx OworCWlmICh1bmxpa2VseShyZXF1aXJlX2V4dHJhX3JlcSkpCisJCXNldHVwLmV4dHJhX3Jpbmdf cmVxID0gZXh0cmFfcmluZ19yZXE7CisKIAlmb3JfZWFjaF9zZyhpbmZvLT5zaGFkb3dbaWRdLnNn LCBzZywgbnVtX3NnLCBpKSB7CiAJCUJVR19PTihzZy0+b2Zmc2V0ICsgc2ctPmxlbmd0aCA+IFBB R0VfU0laRSk7CiAKQEAgLTcwNiw2ICs4MDAsOCBAQCBzdGF0aWMgaW50IGJsa2lmX3F1ZXVlX3J3 X3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVxKQogCiAJLyogS2VlcCBhIHByaXZhdGUgY29weSBzbyB3 ZSBjYW4gcmVpc3N1ZSByZXF1ZXN0cyB3aGVuIHJlY292ZXJpbmcuICovCiAJaW5mby0+c2hhZG93 W2lkXS5yZXEgPSAqcmluZ19yZXE7CisJaWYgKHVubGlrZWx5KHJlcXVpcmVfZXh0cmFfcmVxKSkK KwkJaW5mby0+c2hhZG93W2V4dHJhX2lkXS5yZXEgPSAqZXh0cmFfcmluZ19yZXE7CiAKIAlpZiAo bmV3X3BlcnNpc3RlbnRfZ250cykKIAkJZ250dGFiX2ZyZWVfZ3JhbnRfcmVmZXJlbmNlcyhzZXR1 cC5ncmVmX2hlYWQpOwpAQCAtNzk3LDcgKzg5MywxNiBAQCBzdGF0aWMgaW50IHhsdmJkX2luaXRf YmxrX3F1ZXVlKHN0cnVjdCBnZW5kaXNrICpnZCwgdTE2IHNlY3Rvcl9zaXplLAogCW1lbXNldCgm aW5mby0+dGFnX3NldCwgMCwgc2l6ZW9mKGluZm8tPnRhZ19zZXQpKTsKIAlpbmZvLT50YWdfc2V0 Lm9wcyA9ICZibGtmcm9udF9tcV9vcHM7CiAJaW5mby0+dGFnX3NldC5ucl9od19xdWV1ZXMgPSAx OwotCWluZm8tPnRhZ19zZXQucXVldWVfZGVwdGggPSAgQkxLX1JJTkdfU0laRShpbmZvKTsKKwlp ZiAoSEFTX0VYVFJBX1JFUSAmJiBpbmZvLT5tYXhfaW5kaXJlY3Rfc2VnbWVudHMgPT0gMCkgewor CQkvKgorCQkgKiBXaGVuIGluZGlyZWN0IGRlc2NyaXB0aW9yIGlzIG5vdCBzdXBwb3J0ZWQsIHRo ZSBJL08gcmVxdWVzdAorCQkgKiB3aWxsIGJlIHNwbGl0IGJldHdlZW4gbXVsdGlwbGUgcmVxdWVz dCBpbiB0aGUgcmluZy4KKwkJICogVG8gYXZvaWQgcHJvYmxlbXMgd2hlbiBzZW5kaW5nIHRoZSBy ZXF1ZXN0LCBkaXZpZGUgYnkKKwkJICogMiB0aGUgZGVwdGggb2YgdGhlIHF1ZXVlLgorCQkgKi8K KwkJaW5mby0+dGFnX3NldC5xdWV1ZV9kZXB0aCA9ICBCTEtfUklOR19TSVpFKGluZm8pIC8gMjsK Kwl9IGVsc2UKKwkJaW5mby0+dGFnX3NldC5xdWV1ZV9kZXB0aCA9IEJMS19SSU5HX1NJWkUoaW5m byk7CiAJaW5mby0+dGFnX3NldC5udW1hX25vZGUgPSBOVU1BX05PX05PREU7CiAJaW5mby0+dGFn X3NldC5mbGFncyA9IEJMS19NUV9GX1NIT1VMRF9NRVJHRSB8IEJMS19NUV9GX1NHX01FUkdFOwog CWluZm8tPnRhZ19zZXQuY21kX3NpemUgPSAwOwpAQCAtMTIxNywxOSArMTMyMiw5MiBAQCBzdGF0 aWMgdm9pZCBibGtpZl9jb3B5X2Zyb21fZ3JhbnQodW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVk IGludCBvZmZzZXQsCiAJa3VubWFwX2F0b21pYyhzaGFyZWRfZGF0YSk7CiB9CiAKLXN0YXRpYyB2 b2lkIGJsa2lmX2NvbXBsZXRpb24oc3RydWN0IGJsa19zaGFkb3cgKnMsIHN0cnVjdCBibGtmcm9u dF9pbmZvICppbmZvLAorc3RhdGljIGVudW0gYmxrX3JlcV9zdGF0dXMgYmxraWZfcnNwX3RvX3Jl cV9zdGF0dXMoaW50IHJzcCkKK3sKKwlzd2l0Y2ggKHJzcCkKKwl7CisJY2FzZSBCTEtJRl9SU1Bf T0tBWToKKwkJcmV0dXJuIFJFUV9ET05FOworCWNhc2UgQkxLSUZfUlNQX0VSUk9SOgorCQlyZXR1 cm4gUkVRX0VSUk9SOworCWNhc2UgQkxLSUZfUlNQX0VPUE5PVFNVUFA6CisJCXJldHVybiBSRVFf RU9QTk9UU1VQUDsKKwlkZWZhdWx0OgorCQlyZXR1cm4gUkVRX0VSUk9SOworCX0KK30KKworLyoK KyAqIEdldCB0aGUgZmluYWwgc3RhdHVzIG9mIHRoZSBibG9jayByZXF1ZXN0IGJhc2VkIG9uIHR3 byByaW5nIHJlc3BvbnNlCisgKi8KK3N0YXRpYyBpbnQgYmxraWZfZ2V0X2ZpbmFsX3N0YXR1cyhl bnVtIGJsa19yZXFfc3RhdHVzIHMxLAorCQkJCSAgZW51bSBibGtfcmVxX3N0YXR1cyBzMikKK3sK KwlCVUdfT04oczEgPT0gUkVRX1dBSVRJTkcpOworCUJVR19PTihzMiA9PSBSRVFfV0FJVElORyk7 CisKKwlpZiAoczEgPT0gUkVRX0VSUk9SIHx8IHMyID09IFJFUV9FUlJPUikKKwkJcmV0dXJuIEJM S0lGX1JTUF9FUlJPUjsKKwllbHNlIGlmIChzMSA9PSBSRVFfRU9QTk9UU1VQUCB8fCBzMiA9PSBS RVFfRU9QTk9UU1VQUCkKKwkJcmV0dXJuIEJMS0lGX1JTUF9FT1BOT1RTVVBQOworCWVsc2UKKwkJ cmV0dXJuIEJMS0lGX1JTUF9PS0FZOworfQorCitzdGF0aWMgYm9vbCBibGtpZl9jb21wbGV0aW9u KHVuc2lnbmVkIGxvbmcgKmlkLCBzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbywKIAkJCSAgICAg c3RydWN0IGJsa2lmX3Jlc3BvbnNlICpicmV0KQogewogCWludCBpID0gMDsKIAlzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnOwogCWludCBudW1fc2csIG51bV9ncmFudDsKKwlzdHJ1Y3QgYmxrX3NoYWRv dyAqcyA9ICZpbmZvLT5zaGFkb3dbKmlkXTsKIAlzdHJ1Y3QgY29weV9mcm9tX2dyYW50IGRhdGEg PSB7Ci0JCS5zID0gcywKIAkJLmdyYW50X2lkeCA9IDAsCiAJfTsKIAogCW51bV9ncmFudCA9IHMt PnJlcS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfSU5ESVJFQ1QgPwogCQlzLT5yZXEudS5pbmRpcmVj dC5ucl9zZWdtZW50cyA6IHMtPnJlcS51LnJ3Lm5yX3NlZ21lbnRzOworCisJLyogVGhlIEkvTyBy ZXF1ZXN0IG1heSBiZSBzcGxpdCBpbiB0d28gKi8KKwlpZiAodW5saWtlbHkocy0+YXNzb2NpYXRl ZF9pZCAhPSBOT19BU1NPQ0lBVEVEX0lEKSkgeworCQlzdHJ1Y3QgYmxrX3NoYWRvdyAqczIgPSAm aW5mby0+c2hhZG93W3MtPmFzc29jaWF0ZWRfaWRdOworCisJCS8qIEtlZXAgdGhlIHN0YXR1cyBv ZiB0aGUgY3VycmVudCByZXNwb25zZSBpbiBzaGFkb3cgKi8KKwkJcy0+c3RhdHVzID0gYmxraWZf cnNwX3RvX3JlcV9zdGF0dXMoYnJldC0+c3RhdHVzKTsKKworCQkvKiBXYWl0IHRoZSBzZWNvbmQg cmVzcG9uc2UgaWYgbm90IHlldCBoZXJlICovCisJCWlmIChzMi0+c3RhdHVzID09IFJFUV9XQUlU SU5HKQorCQkJcmV0dXJuIDA7CisKKwkJYnJldC0+c3RhdHVzID0gYmxraWZfZ2V0X2ZpbmFsX3N0 YXR1cyhzLT5zdGF0dXMsCisJCQkJCQkgICAgICBzMi0+c3RhdHVzKTsKKworCQkvKgorCQkgKiBB bGwgdGhlIGdyYW50cyBpcyBzdG9yZWQgaW4gdGhlIGZpcnN0IHNoYWRvdyBpbiBvcmRlcgorCQkg KiB0byBtYWtlIHRoZSBjb21wbGV0aW9uIGNvZGUgc2ltcGxlci4KKwkJICovCisJCW51bV9ncmFu dCArPSBzMi0+cmVxLnUucncubnJfc2VnbWVudHM7CisKKwkJLyoKKwkJICogVGhlIHR3byByZXNw b25zZXMgbWF5IG5vdCBjb21lIGluIG9yZGVyLiBPbmx5IHRoZQorCQkgKiBmaXJzdCByZXF1ZXN0 IHdpbGwgc3RvcmUgdGhlIHNjYXR0ZXItZ2F0aGVyIGxpc3QKKwkJICovCisJCWlmIChzMi0+bnVt X3NnICE9IDApIHsKKwkJCS8qIFVwZGF0ZSAiaWQiIHdpdGggdGhlIElEIG9mIHRoZSBmaXJzdCBy ZXNwb25zZSAqLworCQkJKmlkID0gcy0+YXNzb2NpYXRlZF9pZDsKKwkJCXMgPSBzMjsKKwkJfQor CisJCS8qCisJCSAqIFdlIGRvbid0IG5lZWQgYW55bW9yZSB0aGUgc2Vjb25kIHJlcXVlc3QsIHNv IHJlY3ljbGluZworCQkgKiBpdCBub3cuCisJCSAqLworCQlpZiAoYWRkX2lkX3RvX2ZyZWVsaXN0 KGluZm8sIHMtPmFzc29jaWF0ZWRfaWQpKQorCQkJV0FSTigxLCAiJXM6IGNhbid0IHJlY3ljbGUg dGhlIHNlY29uZCBwYXJ0IChpZCA9ICVsZCkgb2YgdGhlIHJlcXVlc3RcbiIsCisJCQkgICAgIGlu Zm8tPmdkLT5kaXNrX25hbWUsIHMtPmFzc29jaWF0ZWRfaWQpOworCX0KKworCWRhdGEucyA9IHM7 CiAJbnVtX3NnID0gcy0+bnVtX3NnOwogCiAJaWYgKGJyZXQtPm9wZXJhdGlvbiA9PSBCTEtJRl9P UF9SRUFEICYmIGluZm8tPmZlYXR1cmVfcGVyc2lzdGVudCkgewpAQCAtMTI5OSw2ICsxNDc3LDgg QEAgc3RhdGljIHZvaWQgYmxraWZfY29tcGxldGlvbihzdHJ1Y3QgYmxrX3NoYWRvdyAqcywgc3Ry dWN0IGJsa2Zyb250X2luZm8gKmluZm8sCiAJCQl9CiAJCX0KIAl9CisKKwlyZXR1cm4gMTsKIH0K IAogc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZf aWQpCkBAIC0xMzQwLDggKzE1MjAsMTQgQEAgc3RhdGljIGlycXJldHVybl90IGJsa2lmX2ludGVy cnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJCX0KIAkJcmVxICA9IGluZm8tPnNoYWRvd1tp ZF0ucmVxdWVzdDsKIAotCQlpZiAoYnJldC0+b3BlcmF0aW9uICE9IEJMS0lGX09QX0RJU0NBUkQp Ci0JCQlibGtpZl9jb21wbGV0aW9uKCZpbmZvLT5zaGFkb3dbaWRdLCBpbmZvLCBicmV0KTsKKwkJ aWYgKGJyZXQtPm9wZXJhdGlvbiAhPSBCTEtJRl9PUF9ESVNDQVJEKSB7CisJCQkvKgorCQkJICog V2UgbWF5IG5lZWQgdG8gd2FpdCBmb3IgYW4gZXh0cmEgcmVzcG9uc2UgaWYgdGhlCisJCQkgKiBJ L08gcmVxdWVzdCBpcyBzcGxpdCBpbiAyCisJCQkgKi8KKwkJCWlmICghYmxraWZfY29tcGxldGlv bigmaWQsIGluZm8sIGJyZXQpKQorCQkJCWNvbnRpbnVlOworCQl9CiAKIAkJaWYgKGFkZF9pZF90 b19mcmVlbGlzdChpbmZvLCBpZCkpIHsKIAkJCVdBUk4oMSwgIiVzOiByZXNwb25zZSB0byAlcyAo aWQgJWxkKSBjb3VsZG4ndCBiZSByZWN5Y2xlZCFcbiIsCkBAIC0xODY0LDggKzIwNTAsMTggQEAg c3RhdGljIGludCBibGtmcm9udF9zZXR1cF9pbmRpcmVjdChzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAq aW5mbykKIAl1bnNpZ25lZCBpbnQgcHNlZ3MsIGdyYW50czsKIAlpbnQgZXJyLCBpOwogCi0JaWYg KGluZm8tPm1heF9pbmRpcmVjdF9zZWdtZW50cyA9PSAwKQotCQlncmFudHMgPSBCTEtJRl9NQVhf U0VHTUVOVFNfUEVSX1JFUVVFU1Q7CisJaWYgKGluZm8tPm1heF9pbmRpcmVjdF9zZWdtZW50cyA9 PSAwKSB7CisJCWlmICghSEFTX0VYVFJBX1JFUSkKKwkJCWdyYW50cyA9IEJMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVDsKKwkJZWxzZSB7CisJCQkvKgorCQkJICogV2hlbiBhbiBleHRyYSBy ZXEgaXMgcmVxdWlyZWQsIHRoZSBtYXhpbXVtCisJCQkgKiBncmFudHMgc3VwcG9ydGVkIGlzIHJl bGF0ZWQgdG8gdGhlIHNpemUgb2YgdGhlCisJCQkgKiBMaW51eCBibG9jayBzZWdtZW50CisJCQkg Ki8KKwkJCWdyYW50cyA9IEdSQU5UU19QRVJfUFNFRzsKKwkJfQorCX0KIAllbHNlCiAJCWdyYW50 cyA9IGluZm8tPm1heF9pbmRpcmVjdF9zZWdtZW50czsKIAlwc2VncyA9IGdyYW50cyAvIEdSQU5U U19QRVJfUFNFRzsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK