From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abhishek Sahu Subject: [PATCH v5 04/16] mtd: nand: qcom: support for passing flags in DMA helper functions Date: Thu, 17 Aug 2017 17:37:42 +0530 Message-ID: <1502971674-13810-5-git-send-email-absahu@codeaurora.org> References: <1502971674-13810-1-git-send-email-absahu@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1502971674-13810-1-git-send-email-absahu@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: Boris Brezillon Cc: Archit Taneja , Richard Weinberger , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Vasut , Abhishek Sahu , linux-mtd@lists.infradead.org, Cyrille Pitchen , Andy Gross , Sricharan R , Brian Norris , David Woodhouse List-Id: linux-arm-msm@vger.kernel.org VGhlIFFQSUMgTkFORCBCQU0gaGFzIG11bHRpcGxlIGZsYWdzIHRvIGNvbnRyb2wgdGhlIHRyYW5z ZmVyLiBUaGlzCnBhdGNoIGFkZHMgZmxhZ3MgcGFyYW1ldGVyIGluIHJlZ2lzdGVyIGFuZCBkYXRh IHRyYW5zZmVyIERNQSBoZWxwZXIKZnVuY3Rpb25zIGFuZCBtb2RpZmllcyBhbGwgdGhlc2UgZnVu Y3Rpb25zIGNhbGwgd2l0aCBhcHByb3ByaWF0ZQpmbGFncyB1c2luZyBmb2xsb3dpbmcgcnVsZQoK MS4gUmVhZCBhbmQgd3JpdGUgY2Fu4oCZdCBnbyBpbiBzaW5nbGUgY29tbWFuZCBkZXNjcmlwdG9y IHNvCiAgIHNlcGFyYXRlIFNHTCBzaG91bGQgYmUgdXNlZC4KMi4gRm9yIHNvbWUgb2YgdGhlIHJl cXVlc3RzLCBOV0QgZmxhZyBzaG91bGQgYmUgc2V0IGluIEJBTQogICBETUEgZGVzY3JpcHRvci4K My4gRm9yIERhdGEgd3JpdGUsIHRoZSBCQU0gaGFzIGludGVybmFsIGJ1ZmZlciBmb3IgZWFjaCBj b2Rld29yZC4KICAgQWxsIHdyaXRlIHJlcXVlc3Qgd2lsbCBtb2RpZnkgdGhlIGRhdGEgaW4gaW50 ZXJuYWwgYnVmZmVyIGFuZAogICB0aGlzIGJ1ZmZlciB3aWxsIGJlIGZsdXNoZWQgdG8gTkFORCBk ZXZpY2Ugb25jZSBFT1QgZmxhZyBpcyBzZXQuCiAgIFNvIGZvciBhbGwgdGhlIHdyaXRlIHJlcXVl c3RzIGluIHNpbmdsZSBjb2Rld29yZCwgdGhlIEVPVCBzaG91bGQKICAgYmUgY2xlYXJlZCBmb3Ig YWxsIHR4IGRhdGEgZGVzY3JpcHRvcnMgZXhjZXB0IHRoZSBsYXN0IG9uZS4KClJldmlld2VkLWJ5 OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgpTaWduZWQtb2ZmLWJ5OiBB Ymhpc2hlayBTYWh1IDxhYnNhaHVAY29kZWF1cm9yYS5vcmc+Ci0tLQoKKiBDaGFuZ2VzIGZyb20g djQ6CgoxLiBBZGRlZCBmbGFnIGFyZ3VtZW50IGRlc2NyaXB0aW9uIGluIGZ1bmN0aW9uIGNvbW1l bnQKMi4gTWlub3IgbW9kaWZpY2F0aW9uIGluIHRoZSBjb21tZW50IGdpdmVuIGJlZm9yZQogICAg ICAgI2RlZmluZSBOQU5EX0JBTV9OT19FT1QKMy4gTWlub3IgbW9kaWZpY2F0aW9uIGluIGNvbW1p dCBtZXNzYWdlCgogZHJpdmVycy9tdGQvbmFuZC9xY29tX25hbmRjLmMgfCAxMjkgKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzcgaW5z ZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFu ZC9xY29tX25hbmRjLmMgYi9kcml2ZXJzL210ZC9uYW5kL3Fjb21fbmFuZGMuYwppbmRleCBmNTJh NjkyLi5jOTIyNjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Fjb21fbmFuZGMuYwor KysgYi9kcml2ZXJzL210ZC9uYW5kL3Fjb21fbmFuZGMuYwpAQCAtMTgxLDYgKzE4MSwxNyBAQAog I2RlZmluZSBRUElDX1BFUl9DV19EQVRBX1NHTAkJOAogCiAvKgorICogRmxhZ3MgdXNlZCBpbiBE TUEgZGVzY3JpcHRvciBwcmVwYXJhdGlvbiBoZWxwZXIgZnVuY3Rpb25zCisgKiAoaS5lLiByZWFk X3JlZ19kbWEvd3JpdGVfcmVnX2RtYS9yZWFkX2RhdGFfZG1hL3dyaXRlX2RhdGFfZG1hKQorICov CisvKiBEb24ndCBzZXQgdGhlIEVPVCBpbiBjdXJyZW50IHR4IEJBTSBzZ2wgKi8KKyNkZWZpbmUg TkFORF9CQU1fTk9fRU9UCQkJQklUKDApCisvKiBTZXQgdGhlIE5XRCBmbGFnIGluIGN1cnJlbnQg QkFNIHNnbCAqLworI2RlZmluZSBOQU5EX0JBTV9OV0QJCQlCSVQoMSkKKy8qIEZpbmlzaCB3cml0 aW5nIGluIHRoZSBjdXJyZW50IEJBTSBzZ2wgYW5kIHN0YXJ0IHdyaXRpbmcgaW4gYW5vdGhlciBC QU0gc2dsICovCisjZGVmaW5lIE5BTkRfQkFNX05FWFRfU0dMCQlCSVQoMikKKworLyoKICAqIFRo aXMgZGF0YSB0eXBlIGNvcnJlc3BvbmRzIHRvIHRoZSBCQU0gdHJhbnNhY3Rpb24gd2hpY2ggd2ls bCBiZSB1c2VkIGZvciBhbGwKICAqIE5BTkQgdHJhbnNmZXJzLgogICogQGNtZF9zZ2wgLSBzZ2wg Zm9yIE5BTkQgQkFNIGNvbW1hbmQgcGlwZQpAQCAtNzI5LDkgKzc0MCwxMCBAQCBzdGF0aWMgaW50 IHByZXBfYWRtX2RtYV9kZXNjKHN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMsIGJv b2wgcmVhZCwKICAqCiAgKiBAZmlyc3Q6CQlvZmZzZXQgb2YgdGhlIGZpcnN0IHJlZ2lzdGVyIGlu IHRoZSBjb250aWd1b3VzIGJsb2NrCiAgKiBAbnVtX3JlZ3M6CQludW1iZXIgb2YgcmVnaXN0ZXJz IHRvIHJlYWQKKyAqIEBmbGFnczoJCWZsYWdzIHRvIGNvbnRyb2wgRE1BIGRlc2NyaXB0b3IgcHJl cGFyYXRpb24KICAqLwogc3RhdGljIGludCByZWFkX3JlZ19kbWEoc3RydWN0IHFjb21fbmFuZF9j b250cm9sbGVyICpuYW5kYywgaW50IGZpcnN0LAotCQkJaW50IG51bV9yZWdzKQorCQkJaW50IG51 bV9yZWdzLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJYm9vbCBmbG93X2NvbnRyb2wgPSBmYWxz ZTsKIAl2b2lkICp2YWRkcjsKQEAgLTc1Myw5ICs3NjUsMTAgQEAgc3RhdGljIGludCByZWFkX3Jl Z19kbWEoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYywgaW50IGZpcnN0LAogICoK ICAqIEBmaXJzdDoJCW9mZnNldCBvZiB0aGUgZmlyc3QgcmVnaXN0ZXIgaW4gdGhlIGNvbnRpZ3Vv dXMgYmxvY2sKICAqIEBudW1fcmVnczoJCW51bWJlciBvZiByZWdpc3RlcnMgdG8gd3JpdGUKKyAq IEBmbGFnczoJCWZsYWdzIHRvIGNvbnRyb2wgRE1BIGRlc2NyaXB0b3IgcHJlcGFyYXRpb24KICAq Lwogc3RhdGljIGludCB3cml0ZV9yZWdfZG1hKHN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAq bmFuZGMsIGludCBmaXJzdCwKLQkJCSBpbnQgbnVtX3JlZ3MpCisJCQkgaW50IG51bV9yZWdzLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJYm9vbCBmbG93X2NvbnRyb2wgPSBmYWxzZTsKIAlzdHJ1 Y3QgbmFuZGNfcmVncyAqcmVncyA9IG5hbmRjLT5yZWdzOwpAQCAtNzY3LDYgKzc4MCw5IEBAIHN0 YXRpYyBpbnQgd3JpdGVfcmVnX2RtYShzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5hbmRj LCBpbnQgZmlyc3QsCiAJaWYgKGZpcnN0ID09IE5BTkRfRkxBU0hfQ01EKQogCQlmbG93X2NvbnRy b2wgPSB0cnVlOwogCisJaWYgKGZpcnN0ID09IE5BTkRfRVhFQ19DTUQpCisJCWZsYWdzIHw9IE5B TkRfQkFNX05XRDsKKwogCWlmIChmaXJzdCA9PSBOQU5EX0RFVl9DTUQxX1JFU1RPUkUpCiAJCWZp cnN0ID0gTkFORF9ERVZfQ01EMTsKIApAQCAtNzg2LDkgKzgwMiwxMCBAQCBzdGF0aWMgaW50IHdy aXRlX3JlZ19kbWEoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYywgaW50IGZpcnN0 LAogICogQHJlZ19vZmY6CQlvZmZzZXQgd2l0aGluIHRoZSBjb250cm9sbGVyJ3MgZGF0YSBidWZm ZXIKICAqIEB2YWRkcjoJCXZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIHdlIHdhbnQgdG8g d3JpdGUgdG8KICAqIEBzaXplOgkJRE1BIHRyYW5zYWN0aW9uIHNpemUgaW4gYnl0ZXMKKyAqIEBm bGFnczoJCWZsYWdzIHRvIGNvbnRyb2wgRE1BIGRlc2NyaXB0b3IgcHJlcGFyYXRpb24KICAqLwog c3RhdGljIGludCByZWFkX2RhdGFfZG1hKHN0cnVjdCBxY29tX25hbmRfY29udHJvbGxlciAqbmFu ZGMsIGludCByZWdfb2ZmLAotCQkJIGNvbnN0IHU4ICp2YWRkciwgaW50IHNpemUpCisJCQkgY29u c3QgdTggKnZhZGRyLCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXJldHVybiBw cmVwX2FkbV9kbWFfZGVzYyhuYW5kYywgdHJ1ZSwgcmVnX29mZiwgdmFkZHIsIHNpemUsIGZhbHNl KTsKIH0KQEAgLTgwMCw5ICs4MTcsMTAgQEAgc3RhdGljIGludCByZWFkX2RhdGFfZG1hKHN0cnVj dCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMsIGludCByZWdfb2ZmLAogICogQHJlZ19vZmY6 CQlvZmZzZXQgd2l0aGluIHRoZSBjb250cm9sbGVyJ3MgZGF0YSBidWZmZXIKICAqIEB2YWRkcjoJ CXZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIHdlIHdhbnQgdG8gcmVhZCBmcm9tCiAgKiBA c2l6ZToJCURNQSB0cmFuc2FjdGlvbiBzaXplIGluIGJ5dGVzCisgKiBAZmxhZ3M6CQlmbGFncyB0 byBjb250cm9sIERNQSBkZXNjcmlwdG9yIHByZXBhcmF0aW9uCiAgKi8KIHN0YXRpYyBpbnQgd3Jp dGVfZGF0YV9kbWEoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYywgaW50IHJlZ19v ZmYsCi0JCQkgIGNvbnN0IHU4ICp2YWRkciwgaW50IHNpemUpCisJCQkgIGNvbnN0IHU4ICp2YWRk ciwgaW50IHNpemUsIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlyZXR1cm4gcHJlcF9hZG1fZG1h X2Rlc2MobmFuZGMsIGZhbHNlLCByZWdfb2ZmLCB2YWRkciwgc2l6ZSwgZmFsc2UpOwogfQpAQCAt ODEzLDkgKzgzMSw5IEBAIHN0YXRpYyBpbnQgd3JpdGVfZGF0YV9kbWEoc3RydWN0IHFjb21fbmFu ZF9jb250cm9sbGVyICpuYW5kYywgaW50IHJlZ19vZmYsCiAgKi8KIHN0YXRpYyB2b2lkIGNvbmZp Z19uYW5kX3BhZ2VfcmVhZChzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5hbmRjKQogewot CXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfQUREUjAsIDIpOwotCXdyaXRlX3JlZ19kbWEobmFu ZGMsIE5BTkRfREVWMF9DRkcwLCAzKTsKLQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VCSTJf RUNDX0JVRl9DRkcsIDEpOworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfQUREUjAsIDIsIDAp OworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfREVWMF9DRkcwLCAzLCAwKTsKKwl3cml0ZV9y ZWdfZG1hKG5hbmRjLCBOQU5EX0VCSTJfRUNDX0JVRl9DRkcsIDEsIDApOwogfQogCiAvKgpAQCAt ODI0LDExICs4NDIsMTIgQEAgc3RhdGljIHZvaWQgY29uZmlnX25hbmRfcGFnZV9yZWFkKHN0cnVj dCBxY29tX25hbmRfY29udHJvbGxlciAqbmFuZGMpCiAgKi8KIHN0YXRpYyB2b2lkIGNvbmZpZ19u YW5kX2N3X3JlYWQoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYykKIHsKLQl3cml0 ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX0NNRCwgMSk7Ci0Jd3JpdGVfcmVnX2RtYShuYW5k YywgTkFORF9FWEVDX0NNRCwgMSk7CisJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9D TUQsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VY RUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7CiAKLQlyZWFkX3JlZ19kbWEobmFuZGMsIE5B TkRfRkxBU0hfU1RBVFVTLCAyKTsKLQlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfRVJBU0VEX0NX X0RFVEVDVF9TVEFUVVMsIDEpOworCXJlYWRfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9TVEFU VVMsIDIsIDApOworCXJlYWRfcmVnX2RtYShuYW5kYywgTkFORF9FUkFTRURfQ1dfREVURUNUX1NU QVRVUywgMSwKKwkJICAgICBOQU5EX0JBTV9ORVhUX1NHTCk7CiB9CiAKIC8qCkBAIC04NDcsOSAr ODY2LDEwIEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19uYW5kX3NpbmdsZV9jd19wYWdlX3JlYWQoc3Ry dWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYykKICAqLwogc3RhdGljIHZvaWQgY29uZmln X25hbmRfcGFnZV93cml0ZShzdHJ1Y3QgcWNvbV9uYW5kX2NvbnRyb2xsZXIgKm5hbmRjKQogewot CXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfQUREUjAsIDIpOwotCXdyaXRlX3JlZ19kbWEobmFu ZGMsIE5BTkRfREVWMF9DRkcwLCAzKTsKLQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VCSTJf RUNDX0JVRl9DRkcsIDEpOworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfQUREUjAsIDIsIDAp OworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfREVWMF9DRkcwLCAzLCAwKTsKKwl3cml0ZV9y ZWdfZG1hKG5hbmRjLCBOQU5EX0VCSTJfRUNDX0JVRl9DRkcsIDEsCisJCSAgICAgIE5BTkRfQkFN X05FWFRfU0dMKTsKIH0KIAogLyoKQEAgLTg1OCwxMyArODc4LDEzIEBAIHN0YXRpYyB2b2lkIGNv bmZpZ19uYW5kX3BhZ2Vfd3JpdGUoc3RydWN0IHFjb21fbmFuZF9jb250cm9sbGVyICpuYW5kYykK ICAqLwogc3RhdGljIHZvaWQgY29uZmlnX25hbmRfY3dfd3JpdGUoc3RydWN0IHFjb21fbmFuZF9j b250cm9sbGVyICpuYW5kYykKIHsKLQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX0NN RCwgMSk7Ci0Jd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9FWEVDX0NNRCwgMSk7CisJd3JpdGVf cmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9DTUQsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKKwl3 cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7 CiAKLQlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfU1RBVFVTLCAxKTsKKwlyZWFkX3Jl Z19kbWEobmFuZGMsIE5BTkRfRkxBU0hfU1RBVFVTLCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7CiAK LQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX1NUQVRVUywgMSk7Ci0Jd3JpdGVfcmVn X2RtYShuYW5kYywgTkFORF9SRUFEX1NUQVRVUywgMSk7CisJd3JpdGVfcmVnX2RtYShuYW5kYywg TkFORF9GTEFTSF9TVEFUVVMsIDEsIDApOworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfUkVB RF9TVEFUVVMsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKIH0KIAogLyoKQEAgLTkxMSw4ICs5MzEs OCBAQCBzdGF0aWMgaW50IG5hbmRjX3BhcmFtKHN0cnVjdCBxY29tX25hbmRfaG9zdCAqaG9zdCkK IAluYW5kY19zZXRfcmVnKG5hbmRjLCBOQU5EX0RFVl9DTUQxX1JFU1RPUkUsIG5hbmRjLT5jbWQx KTsKIAluYW5kY19zZXRfcmVnKG5hbmRjLCBOQU5EX0RFVl9DTURfVkxEX1JFU1RPUkUsIG5hbmRj LT52bGQpOwogCi0Jd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9ERVZfQ01EX1ZMRCwgMSk7Ci0J d3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9ERVZfQ01EMSwgMSk7CisJd3JpdGVfcmVnX2RtYShu YW5kYywgTkFORF9ERVZfQ01EX1ZMRCwgMSwgMCk7CisJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFO RF9ERVZfQ01EMSwgMSwgTkFORF9CQU1fTkVYVF9TR0wpOwogCiAJbmFuZGMtPmJ1Zl9jb3VudCA9 IDUxMjsKIAltZW1zZXQobmFuZGMtPmRhdGFfYnVmZmVyLCAweGZmLCBuYW5kYy0+YnVmX2NvdW50 KTsKQEAgLTkyMCwxMSArOTQwLDExIEBAIHN0YXRpYyBpbnQgbmFuZGNfcGFyYW0oc3RydWN0IHFj b21fbmFuZF9ob3N0ICpob3N0KQogCWNvbmZpZ19uYW5kX3NpbmdsZV9jd19wYWdlX3JlYWQobmFu ZGMpOwogCiAJcmVhZF9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywgbmFuZGMtPmRhdGFf YnVmZmVyLAotCQkgICAgICBuYW5kYy0+YnVmX2NvdW50KTsKKwkJICAgICAgbmFuZGMtPmJ1Zl9j b3VudCwgMCk7CiAKIAkvKiByZXN0b3JlIENNRDEgYW5kIFZMRCByZWdzICovCi0Jd3JpdGVfcmVn X2RtYShuYW5kYywgTkFORF9ERVZfQ01EMV9SRVNUT1JFLCAxKTsKLQl3cml0ZV9yZWdfZG1hKG5h bmRjLCBOQU5EX0RFVl9DTURfVkxEX1JFU1RPUkUsIDEpOworCXdyaXRlX3JlZ19kbWEobmFuZGMs IE5BTkRfREVWX0NNRDFfUkVTVE9SRSwgMSwgMCk7CisJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFO RF9ERVZfQ01EX1ZMRF9SRVNUT1JFLCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTk0NiwxNCArOTY2LDE0IEBAIHN0YXRpYyBpbnQgZXJhc2VfYmxvY2soc3RydWN0 IHFjb21fbmFuZF9ob3N0ICpob3N0LCBpbnQgcGFnZV9hZGRyKQogCW5hbmRjX3NldF9yZWcobmFu ZGMsIE5BTkRfRkxBU0hfU1RBVFVTLCBob3N0LT5jbHJmbGFzaHN0YXR1cyk7CiAJbmFuZGNfc2V0 X3JlZyhuYW5kYywgTkFORF9SRUFEX1NUQVRVUywgaG9zdC0+Y2xycmVhZHN0YXR1cyk7CiAKLQl3 cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX0NNRCwgMyk7Ci0Jd3JpdGVfcmVnX2RtYShu YW5kYywgTkFORF9ERVYwX0NGRzAsIDIpOwotCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRVhF Q19DTUQsIDEpOworCXdyaXRlX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfQ01ELCAzLCBOQU5E X0JBTV9ORVhUX1NHTCk7CisJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9ERVYwX0NGRzAsIDIs IE5BTkRfQkFNX05FWFRfU0dMKTsKKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01E LCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7CiAKLQlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxB U0hfU1RBVFVTLCAxKTsKKwlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfRkxBU0hfU1RBVFVTLCAx LCBOQU5EX0JBTV9ORVhUX1NHTCk7CiAKLQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZMQVNI X1NUQVRVUywgMSk7Ci0Jd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9SRUFEX1NUQVRVUywgMSk7 CisJd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9TVEFUVVMsIDEsIDApOworCXdyaXRl X3JlZ19kbWEobmFuZGMsIE5BTkRfUkVBRF9TVEFUVVMsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsK IAogCXJldHVybiAwOwogfQpAQCAtOTczLDEwICs5OTMsMTAgQEAgc3RhdGljIGludCByZWFkX2lk KHN0cnVjdCBxY29tX25hbmRfaG9zdCAqaG9zdCwgaW50IGNvbHVtbikKIAluYW5kY19zZXRfcmVn KG5hbmRjLCBOQU5EX0ZMQVNIX0NISVBfU0VMRUNULCBETV9FTik7CiAJbmFuZGNfc2V0X3JlZyhu YW5kYywgTkFORF9FWEVDX0NNRCwgMSk7CiAKLQl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0ZM QVNIX0NNRCwgNCk7Ci0Jd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9FWEVDX0NNRCwgMSk7CisJ d3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9DTUQsIDQsIE5BTkRfQkFNX05FWFRfU0dM KTsKKwl3cml0ZV9yZWdfZG1hKG5hbmRjLCBOQU5EX0VYRUNfQ01ELCAxLCBOQU5EX0JBTV9ORVhU X1NHTCk7CiAKLQlyZWFkX3JlZ19kbWEobmFuZGMsIE5BTkRfUkVBRF9JRCwgMSk7CisJcmVhZF9y ZWdfZG1hKG5hbmRjLCBOQU5EX1JFQURfSUQsIDEsIE5BTkRfQkFNX05FWFRfU0dMKTsKIAogCXJl dHVybiAwOwogfQpAQCAtOTkwLDEwICsxMDEwLDEwIEBAIHN0YXRpYyBpbnQgcmVzZXQoc3RydWN0 IHFjb21fbmFuZF9ob3N0ICpob3N0KQogCW5hbmRjX3NldF9yZWcobmFuZGMsIE5BTkRfRkxBU0hf Q01ELCBSRVNFVF9ERVZJQ0UpOwogCW5hbmRjX3NldF9yZWcobmFuZGMsIE5BTkRfRVhFQ19DTUQs IDEpOwogCi0Jd3JpdGVfcmVnX2RtYShuYW5kYywgTkFORF9GTEFTSF9DTUQsIDEpOwotCXdyaXRl X3JlZ19kbWEobmFuZGMsIE5BTkRfRVhFQ19DTUQsIDEpOworCXdyaXRlX3JlZ19kbWEobmFuZGMs IE5BTkRfRkxBU0hfQ01ELCAxLCBOQU5EX0JBTV9ORVhUX1NHTCk7CisJd3JpdGVfcmVnX2RtYShu YW5kYywgTkFORF9FWEVDX0NNRCwgMSwgTkFORF9CQU1fTkVYVF9TR0wpOwogCi0JcmVhZF9yZWdf ZG1hKG5hbmRjLCBOQU5EX0ZMQVNIX1NUQVRVUywgMSk7CisJcmVhZF9yZWdfZG1hKG5hbmRjLCBO QU5EX0ZMQVNIX1NUQVRVUywgMSwgTkFORF9CQU1fTkVYVF9TR0wpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0xMzg5LDcgKzE0MDksNyBAQCBzdGF0aWMgaW50IHJlYWRfcGFnZV9lY2Moc3RydWN0IHFj b21fbmFuZF9ob3N0ICpob3N0LCB1OCAqZGF0YV9idWYsCiAKIAkJaWYgKGRhdGFfYnVmKQogCQkJ cmVhZF9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywgZGF0YV9idWYsCi0JCQkJICAgICAg ZGF0YV9zaXplKTsKKwkJCQkgICAgICBkYXRhX3NpemUsIDApOwogCiAJCS8qCiAJCSAqIHdoZW4g ZWNjIGlzIGVuYWJsZWQsIHRoZSBjb250cm9sbGVyIGRvZXNuJ3QgcmVhZCB0aGUgcmVhbApAQCAt MTQwNSw3ICsxNDI1LDcgQEAgc3RhdGljIGludCByZWFkX3BhZ2VfZWNjKHN0cnVjdCBxY29tX25h bmRfaG9zdCAqaG9zdCwgdTggKmRhdGFfYnVmLAogCQkJCSpvb2JfYnVmKysgPSAweGZmOwogCiAJ CQlyZWFkX2RhdGFfZG1hKG5hbmRjLCBGTEFTSF9CVUZfQUNDICsgZGF0YV9zaXplLAotCQkJCSAg ICAgIG9vYl9idWYsIG9vYl9zaXplKTsKKwkJCQkgICAgICBvb2JfYnVmLCBvb2Jfc2l6ZSwgMCk7 CiAJCX0KIAogCQlpZiAoZGF0YV9idWYpCkBAIC0xNDQ3LDcgKzE0NjcsNyBAQCBzdGF0aWMgaW50 IGNvcHlfbGFzdF9jdyhzdHJ1Y3QgcWNvbV9uYW5kX2hvc3QgKmhvc3QsIGludCBwYWdlKQogCiAJ Y29uZmlnX25hbmRfc2luZ2xlX2N3X3BhZ2VfcmVhZChuYW5kYyk7CiAKLQlyZWFkX2RhdGFfZG1h KG5hbmRjLCBGTEFTSF9CVUZfQUNDLCBuYW5kYy0+ZGF0YV9idWZmZXIsIHNpemUpOworCXJlYWRf ZGF0YV9kbWEobmFuZGMsIEZMQVNIX0JVRl9BQ0MsIG5hbmRjLT5kYXRhX2J1ZmZlciwgc2l6ZSwg MCk7CiAKIAlyZXQgPSBzdWJtaXRfZGVzY3MobmFuZGMpOwogCWlmIChyZXQpCkBAIC0xNTE2LDE5 ICsxNTM2LDE5IEBAIHN0YXRpYyBpbnQgcWNvbV9uYW5kY19yZWFkX3BhZ2VfcmF3KHN0cnVjdCBt dGRfaW5mbyAqbXRkLAogCiAJCWNvbmZpZ19uYW5kX2N3X3JlYWQobmFuZGMpOwogCi0JCXJlYWRf ZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVmLCBkYXRhX3NpemUxKTsKKwkJcmVhZF9k YXRhX2RtYShuYW5kYywgcmVnX29mZiwgZGF0YV9idWYsIGRhdGFfc2l6ZTEsIDApOwogCQlyZWdf b2ZmICs9IGRhdGFfc2l6ZTE7CiAJCWRhdGFfYnVmICs9IGRhdGFfc2l6ZTE7CiAKLQkJcmVhZF9k YXRhX2RtYShuYW5kYywgcmVnX29mZiwgb29iX2J1Ziwgb29iX3NpemUxKTsKKwkJcmVhZF9kYXRh X2RtYShuYW5kYywgcmVnX29mZiwgb29iX2J1Ziwgb29iX3NpemUxLCAwKTsKIAkJcmVnX29mZiAr PSBvb2Jfc2l6ZTE7CiAJCW9vYl9idWYgKz0gb29iX3NpemUxOwogCi0JCXJlYWRfZGF0YV9kbWEo bmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVmLCBkYXRhX3NpemUyKTsKKwkJcmVhZF9kYXRhX2RtYShu YW5kYywgcmVnX29mZiwgZGF0YV9idWYsIGRhdGFfc2l6ZTIsIDApOwogCQlyZWdfb2ZmICs9IGRh dGFfc2l6ZTI7CiAJCWRhdGFfYnVmICs9IGRhdGFfc2l6ZTI7CiAKLQkJcmVhZF9kYXRhX2RtYShu YW5kYywgcmVnX29mZiwgb29iX2J1Ziwgb29iX3NpemUyKTsKKwkJcmVhZF9kYXRhX2RtYShuYW5k YywgcmVnX29mZiwgb29iX2J1Ziwgb29iX3NpemUyLCAwKTsKIAkJb29iX2J1ZiArPSBvb2Jfc2l6 ZTI7CiAJfQogCkBAIC0xNTk1LDcgKzE2MTUsOCBAQCBzdGF0aWMgaW50IHFjb21fbmFuZGNfd3Jp dGVfcGFnZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKIAkJ fQogCiAKLQkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIEZMQVNIX0JVRl9BQ0MsIGRhdGFfYnVmLCBk YXRhX3NpemUpOworCQl3cml0ZV9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywgZGF0YV9i dWYsIGRhdGFfc2l6ZSwKKwkJCSAgICAgICBpID09IChlY2MtPnN0ZXBzIC0gMSkgPyBOQU5EX0JB TV9OT19FT1QgOiAwKTsKIAogCQkvKgogCQkgKiB3aGVuIEVDQyBpcyBlbmFibGVkLCB3ZSBkb24n dCByZWFsbHkgbmVlZCB0byB3cml0ZSBhbnl0aGluZwpAQCAtMTYwOCw3ICsxNjI5LDcgQEAgc3Rh dGljIGludCBxY29tX25hbmRjX3dyaXRlX3BhZ2Uoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVj dCBuYW5kX2NoaXAgKmNoaXAsCiAJCQlvb2JfYnVmICs9IGhvc3QtPmJibV9zaXplOwogCiAJCQl3 cml0ZV9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQyArIGRhdGFfc2l6ZSwKLQkJCQkgICAg ICAgb29iX2J1Ziwgb29iX3NpemUpOworCQkJCSAgICAgICBvb2JfYnVmLCBvb2Jfc2l6ZSwgMCk7 CiAJCX0KIAogCQljb25maWdfbmFuZF9jd193cml0ZShuYW5kYyk7CkBAIC0xNjYzLDE5ICsxNjg0 LDIyIEBAIHN0YXRpYyBpbnQgcWNvbV9uYW5kY193cml0ZV9wYWdlX3JhdyhzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwKIAkJCW9vYl9zaXplMiA9IGhvc3QtPmVjY19ieXRlc19odyArIGhvc3QtPnNwYXJl X2J5dGVzOwogCQl9CiAKLQkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVm LCBkYXRhX3NpemUxKTsKKwkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVm LCBkYXRhX3NpemUxLAorCQkJICAgICAgIE5BTkRfQkFNX05PX0VPVCk7CiAJCXJlZ19vZmYgKz0g ZGF0YV9zaXplMTsKIAkJZGF0YV9idWYgKz0gZGF0YV9zaXplMTsKIAotCQl3cml0ZV9kYXRhX2Rt YShuYW5kYywgcmVnX29mZiwgb29iX2J1Ziwgb29iX3NpemUxKTsKKwkJd3JpdGVfZGF0YV9kbWEo bmFuZGMsIHJlZ19vZmYsIG9vYl9idWYsIG9vYl9zaXplMSwKKwkJCSAgICAgICBOQU5EX0JBTV9O T19FT1QpOwogCQlyZWdfb2ZmICs9IG9vYl9zaXplMTsKIAkJb29iX2J1ZiArPSBvb2Jfc2l6ZTE7 CiAKLQkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVmLCBkYXRhX3NpemUy KTsKKwkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIHJlZ19vZmYsIGRhdGFfYnVmLCBkYXRhX3NpemUy LAorCQkJICAgICAgIE5BTkRfQkFNX05PX0VPVCk7CiAJCXJlZ19vZmYgKz0gZGF0YV9zaXplMjsK IAkJZGF0YV9idWYgKz0gZGF0YV9zaXplMjsKIAotCQl3cml0ZV9kYXRhX2RtYShuYW5kYywgcmVn X29mZiwgb29iX2J1Ziwgb29iX3NpemUyKTsKKwkJd3JpdGVfZGF0YV9kbWEobmFuZGMsIHJlZ19v ZmYsIG9vYl9idWYsIG9vYl9zaXplMiwgMCk7CiAJCW9vYl9idWYgKz0gb29iX3NpemUyOwogCiAJ CWNvbmZpZ19uYW5kX2N3X3dyaXRlKG5hbmRjKTsKQEAgLTE3MjksOCArMTc1Myw4IEBAIHN0YXRp YyBpbnQgcWNvbV9uYW5kY193cml0ZV9vb2Ioc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBu YW5kX2NoaXAgKmNoaXAsCiAJdXBkYXRlX3J3X3JlZ3MoaG9zdCwgMSwgZmFsc2UpOwogCiAJY29u ZmlnX25hbmRfcGFnZV93cml0ZShuYW5kYyk7Ci0Jd3JpdGVfZGF0YV9kbWEobmFuZGMsIEZMQVNI X0JVRl9BQ0MsIG5hbmRjLT5kYXRhX2J1ZmZlciwKLQkJICAgICAgIGRhdGFfc2l6ZSArIG9vYl9z aXplKTsKKwl3cml0ZV9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywKKwkJICAgICAgIG5h bmRjLT5kYXRhX2J1ZmZlciwgZGF0YV9zaXplICsgb29iX3NpemUsIDApOwogCWNvbmZpZ19uYW5k X2N3X3dyaXRlKG5hbmRjKTsKIAogCXJldCA9IHN1Ym1pdF9kZXNjcyhuYW5kYyk7CkBAIC0xODE0 LDcgKzE4MzgsOCBAQCBzdGF0aWMgaW50IHFjb21fbmFuZGNfYmxvY2tfbWFya2JhZChzdHJ1Y3Qg bXRkX2luZm8gKm10ZCwgbG9mZl90IG9mcykKIAl1cGRhdGVfcndfcmVncyhob3N0LCAxLCBmYWxz ZSk7CiAKIAljb25maWdfbmFuZF9wYWdlX3dyaXRlKG5hbmRjKTsKLQl3cml0ZV9kYXRhX2RtYShu YW5kYywgRkxBU0hfQlVGX0FDQywgbmFuZGMtPmRhdGFfYnVmZmVyLCBob3N0LT5jd19zaXplKTsK Kwl3cml0ZV9kYXRhX2RtYShuYW5kYywgRkxBU0hfQlVGX0FDQywKKwkJICAgICAgIG5hbmRjLT5k YXRhX2J1ZmZlciwgaG9zdC0+Y3dfc2l6ZSwgMCk7CiAJY29uZmlnX25hbmRfY3dfd3JpdGUobmFu ZGMpOwogCiAJcmV0ID0gc3VibWl0X2Rlc2NzKG5hbmRjKTsKLS0gClFVQUxDT01NIElORElBLCBv biBiZWhhbGYgb2YgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIg b2YgQ29kZSBBdXJvcmEgRm9ydW0sIGhvc3RlZCBieSBUaGUgTGludXggRm91bmRhdGlvbgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==