From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailout1.samsung.com ([203.254.224.24]) by bombadil.infradead.org with esmtp (Exim 4.68 #1 (Red Hat Linux)) id 1KgfEO-00038O-Ur for linux-mtd@lists.infradead.org; Fri, 19 Sep 2008 12:37:06 +0000 Received: from ep_ms13_bk (mailout1.samsung.com [203.254.224.24]) by mailout1.samsung.com (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with ESMTP id <0K7G0099S0DR00@mailout1.samsung.com> for linux-mtd@lists.infradead.org; Fri, 19 Sep 2008 21:37:03 +0900 (KST) Received: from ep_spt03 (ms13.samsung.com [203.254.225.109]) by ms13.samsung.com (iPlanet Messaging Server 5.2 Patch 2 (built Jul 14 2004)) with ESMTP id <0K7G008U80DQVH@ms13.samsung.com> for linux-mtd@lists.infradead.org; Fri, 19 Sep 2008 21:37:03 +0900 (KST) Content-return: prohibited Date: Fri, 19 Sep 2008 12:37:02 +0000 (GMT) From: AYYANARPONNUSAMY GANGHEYAMOORTHY Subject: [PATCH 1/2] [MTD] [JFFS2] MLC NAND support To: linux-mtd@lists.infradead.org Message-id: <30508484.52991221827822859.JavaMail.weblogic@epml16> MIME-version: 1.0 MIME-version: 1.0 Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: base64 Cc: David.Woodhouse@intel.com Reply-To: moorthy.apg@samsung.com List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Q3VycmVudGx5IEpGRlMyIHdyaXRlcyB0d2ljZSB0byB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgYmxv Y2ssDQpjbGVhbm1hcmtlciBpbiBPT0IgYXJlYSBhbmQgZGF0YSBpbiBtYWluIGFyZWEsIHdoaWNo IHByZXZlbnRzDQpKRkZTMiBmcm9tIGJlaW5nIHVzZWQgb24gTUxDIGRldmljZXMgd2hpY2ggaGF2 ZSBOT1AgY291bnQgMS4NClRoaXMgcGF0Y2ggcmVzZXJ2ZXMgdGhlIGZpcnN0IHBhZ2Ugb25seSBm b3IgdGhlIGNsZWFubWFya2VyLg0KDQpOb3RlIDogV2l0aCByb2J1c3RuZXNzIHRlc3RpbmcsIG9u ZSB0ZXN0IGJvYXJkIG91dCBzaXggaGFzDQpnaXZlbiBhIEJVRy4gV2UgYXJlIGxvb2tpbmcgaW50 byBpdC4NCg0KU2lnbmVkLW9mZi1ieTogUmFqc2hla2FyIEggUGF5YWdvbmQgPHJhanNoZWthci5o cEBzYW1zdW5nLmNvbT4NCi0tLQ0KLS0tIGEvZnMvamZmczIvYnVpbGQuYwkyMDA4LTA4LTI0IDA0 OjQ4OjMyLjAwMDAwMDAwMCArMDUzMA0KKysrIGIvZnMvamZmczIvYnVpbGQuYwkyMDA4LTA5LTAx IDEzOjM5OjU2LjAwMDAwMDAwMCArMDUzMA0KQEAgLTMzMCw3ICszMzAsMTEgQEAgaW50IGpmZnMy X2RvX21vdW50X2ZzKHN0cnVjdCBqZmZzMl9zYl9pbg0KIAlpbnQgaTsNCiAJaW50IHNpemU7DQog DQotCWMtPmZyZWVfc2l6ZSA9IGMtPmZsYXNoX3NpemU7DQorCWlmIChjLT5tdGQtPmZsYWdzID09 IE1URF9DQVBfTUxDTkFOREZMQVNIKQ0KKwkJYy0+ZnJlZV9zaXplID0gMDsNCisJZWxzZQ0KKwkJ Yy0+ZnJlZV9zaXplID0gYy0+Zmxhc2hfc2l6ZTsNCisNCiAJYy0+bnJfYmxvY2tzID0gYy0+Zmxh c2hfc2l6ZSAvIGMtPnNlY3Rvcl9zaXplOw0KIAlzaXplID0gc2l6ZW9mKHN0cnVjdCBqZmZzMl9l cmFzZWJsb2NrKSAqIGMtPm5yX2Jsb2NrczsNCiAjaWZuZGVmIF9fRUNPUw0KQEAgLTM0Niw3ICsz NTAsMTQgQEAgaW50IGpmZnMyX2RvX21vdW50X2ZzKHN0cnVjdCBqZmZzMl9zYl9pbg0KIAlmb3Ig KGk9MDsgaTxjLT5ucl9ibG9ja3M7IGkrKykgew0KIAkJSU5JVF9MSVNUX0hFQUQoJmMtPmJsb2Nr c1tpXS5saXN0KTsNCiAJCWMtPmJsb2Nrc1tpXS5vZmZzZXQgPSBpICogYy0+c2VjdG9yX3NpemU7 DQotCQljLT5ibG9ja3NbaV0uZnJlZV9zaXplID0gYy0+c2VjdG9yX3NpemU7DQorCQlpZiAoYy0+ bXRkLT5mbGFncyA9PSBNVERfQ0FQX01MQ05BTkRGTEFTSCkgew0KKwkJCWMtPmJsb2Nrc1tpXS5m cmVlX3NpemUgPQ0KKwkJCQkJYy0+c2VjdG9yX3NpemUgLSBjLT53YnVmX3BhZ2VzaXplOw0KKwkJ CWMtPmJsb2Nrc1tpXS51c2VkX3NpemUgPSBjLT53YnVmX3BhZ2VzaXplOw0KKwkJCWMtPmZyZWVf c2l6ZSArPSAgYy0+YmxvY2tzW2ldLmZyZWVfc2l6ZTsNCisJCQljLT51c2VkX3NpemUgKz0gYy0+ YmxvY2tzW2ldLnVzZWRfc2l6ZTsNCisJCX0gZWxzZQ0KKwkJCWMtPmJsb2Nrc1tpXS5mcmVlX3Np emUgPSBjLT5zZWN0b3Jfc2l6ZTsNCiAJfQ0KIA0KIAlJTklUX0xJU1RfSEVBRCgmYy0+Y2xlYW5f bGlzdCk7DQotLS0gYS9mcy9qZmZzMi9kZWJ1Zy5jCTIwMDgtMDgtMjQgMDQ6NDg6MzIuMDAwMDAw MDAwICswNTMwDQorKysgYi9mcy9qZmZzMi9kZWJ1Zy5jCTIwMDgtMDktMDEgMTM6Mzk6NTYuMDAw MDAwMDAwICswNTMwDQpAQCAtMzA3LDYgKzMwNyw5IEBAIF9famZmczJfZGJnX2FjY3RfcGFyYW5v aWFfY2hlY2tfbm9sb2NrKHMNCiAJdWludDMyX3QgbXlfZGlydHlfc2l6ZSA9IDA7DQogCXN0cnVj dCBqZmZzMl9yYXdfbm9kZV9yZWYgKnJlZjIgPSBqZWItPmZpcnN0X25vZGU7DQogDQorCWlmIChj LT5tdGQtPmZsYWdzID09IE1URF9DQVBfTUxDTkFOREZMQVNIKQ0KKwkJbXlfdXNlZF9zaXplID0g Yy0+d2J1Zl9wYWdlc2l6ZTsNCisNCiAJd2hpbGUgKHJlZjIpIHsNCiAJCXVpbnQzMl90IHRvdGxl biA9IHJlZl90b3RsZW4oYywgamViLCByZWYyKTsNCiANCi0tLSBhL2ZzL2pmZnMyL2VyYXNlLmMJ MjAwOC0wOC0yNCAwNDo0ODozMi4wMDAwMDAwMDAgKzA1MzANCisrKyBiL2ZzL2pmZnMyL2VyYXNl LmMJMjAwOC0wOS0wMSAxMzozOTo1Ni4wMDAwMDAwMDAgKzA1MzANCkBAIC00NTQsMTMgKzQ1NCwy MSBAQCBzdGF0aWMgdm9pZCBqZmZzMl9tYXJrX2VyYXNlZF9ibG9jayhzdHJ1DQogCQl9DQogCX0N CiAJLyogRXZlcnl0aGluZyBlbHNlIGdvdCB6ZXJvZWQgYmVmb3JlIHRoZSBlcmFzZSAqLw0KLQlq ZWItPmZyZWVfc2l6ZSA9IGMtPnNlY3Rvcl9zaXplOw0KKwlpZiAoYy0+bXRkLT5mbGFncyA9PSBN VERfQ0FQX01MQ05BTkRGTEFTSCkgew0KKwkJamViLT5mcmVlX3NpemUgPSBjLT5zZWN0b3Jfc2l6 ZSAtIGMtPndidWZfcGFnZXNpemU7DQorCQlqZWItPnVzZWRfc2l6ZSA9IGMtPndidWZfcGFnZXNp emU7DQorCX0gZWxzZQ0KKwkJamViLT5mcmVlX3NpemUgPSBjLT5zZWN0b3Jfc2l6ZTsNCiANCiAJ bXV0ZXhfbG9jaygmYy0+ZXJhc2VfZnJlZV9zZW0pOw0KIAlzcGluX2xvY2soJmMtPmVyYXNlX2Nv bXBsZXRpb25fbG9jayk7DQogDQogCWMtPmVyYXNpbmdfc2l6ZSAtPSBjLT5zZWN0b3Jfc2l6ZTsN Ci0JYy0+ZnJlZV9zaXplICs9IGMtPnNlY3Rvcl9zaXplOw0KKwlpZiAoYy0+bXRkLT5mbGFncyA9 PSBNVERfQ0FQX01MQ05BTkRGTEFTSCkgew0KKwkJYy0+ZnJlZV9zaXplICs9IGMtPnNlY3Rvcl9z aXplIC0gYy0+d2J1Zl9wYWdlc2l6ZTsNCisJCWMtPnVzZWRfc2l6ZSArPSBjLT53YnVmX3BhZ2Vz aXplOw0KKwl9IGVsc2UNCisJCWMtPmZyZWVfc2l6ZSArPSBjLT5zZWN0b3Jfc2l6ZTsNCiANCiAJ LyogQWNjb3VudCBmb3IgY2xlYW5tYXJrZXIgbm93LCBpZiBpdCdzIGluLWJhbmQgKi8NCiAJaWYg KGMtPmNsZWFubWFya2VyX3NpemUgJiYgIWpmZnMyX2NsZWFubWFya2VyX29vYihjKSkNCi0tLSBh L2ZzL2pmZnMyL2djLmMJMjAwOC0wOC0yNCAwNDo0ODozMi4wMDAwMDAwMDAgKzA1MzANCisrKyBi L2ZzL2pmZnMyL2djLmMJMjAwOC0wOS0wMSAxMzozOTo1Ni4wMDAwMDAwMDAgKzA1MzANCkBAIC0y MzcsOSArMjM3LDE5IEBAIGludCBqZmZzMl9nYXJiYWdlX2NvbGxlY3RfcGFzcyhzdHJ1Y3QgamYN CiAJRDEoaWYgKGMtPm5leHRibG9jaykNCiAJICAgcHJpbnRrKEtFUk5fREVCVUcgIk5leHRibG9j ayBhdCAgJTA4eCwgdXNlZF9zaXplICUwOHgsIGRpcnR5X3NpemUgJTA4eCwgd2FzdGVkX3NpemUg JTA4eCwgZnJlZV9zaXplICUwOHhcbiIsIGMtPm5leHRibG9jay0+b2Zmc2V0LCBjLT5uZXh0Ymxv Y2stPnVzZWRfc2l6ZSwgYy0+bmV4dGJsb2NrLT5kaXJ0eV9zaXplLCBjLT5uZXh0YmxvY2stPndh c3RlZF9zaXplLCBjLT5uZXh0YmxvY2stPmZyZWVfc2l6ZSkpOw0KIA0KLQlpZiAoIWplYi0+dXNl ZF9zaXplKSB7DQotCQltdXRleF91bmxvY2soJmMtPmFsbG9jX3NlbSk7DQotCQlnb3RvIGVyYXNl aXQ7DQorCWlmIChjLT5tdGQtPmZsYWdzID09IE1URF9DQVBfTUxDTkFOREZMQVNIKSB7DQorCQlp ZiAoamViLT51c2VkX3NpemUgPD0gYy0+d2J1Zl9wYWdlc2l6ZSkgew0KKwkJCW11dGV4X3VubG9j aygmYy0+YWxsb2Nfc2VtKTsNCisJCQlnb3RvIGVyYXNlaXQ7DQorCQl9DQorDQorCX0NCisNCisJ ZWxzZXsNCisJCWlmICghamViLT51c2VkX3NpemUpIHsNCisJCQltdXRleF91bmxvY2soJmMtPmFs bG9jX3NlbSk7DQorCQkJZ290byBlcmFzZWl0Ow0KKwkJfQ0KIAl9DQogDQogCXJhdyA9IGplYi0+ Z2Nfbm9kZTsNCkBAIC00MjksMTMgKzQzOSwzMiBAQCBpbnQgamZmczJfZ2FyYmFnZV9jb2xsZWN0 X3Bhc3Moc3RydWN0IGpmDQogCXNwaW5fbG9jaygmYy0+ZXJhc2VfY29tcGxldGlvbl9sb2NrKTsN CiANCiAgZXJhc2VpdDoNCi0JaWYgKGMtPmdjYmxvY2sgJiYgIWMtPmdjYmxvY2stPnVzZWRfc2l6 ZSkgew0KLQkJRDEocHJpbnRrKEtFUk5fREVCVUcgIkJsb2NrIGF0IDB4JTA4eCBjb21wbGV0ZWx5 IG9ic29sZXRlZCBieSBHQy4gTW92aW5nIHRvIGVyYXNlX3BlbmRpbmdfbGlzdFxuIiwgYy0+Z2Ni bG9jay0+b2Zmc2V0KSk7DQotCQkvKiBXZSdyZSBHQydpbmcgYW4gZW1wdHkgYmxvY2s/ICovDQot CQlsaXN0X2FkZF90YWlsKCZjLT5nY2Jsb2NrLT5saXN0LCAmYy0+ZXJhc2VfcGVuZGluZ19saXN0 KTsNCi0JCWMtPmdjYmxvY2sgPSBOVUxMOw0KLQkJYy0+bnJfZXJhc2luZ19ibG9ja3MrKzsNCi0J CWpmZnMyX2VyYXNlX3BlbmRpbmdfdHJpZ2dlcihjKTsNCisJaWYgKGMtPm10ZC0+ZmxhZ3MgPT0g TVREX0NBUF9NTENOQU5ERkxBU0gpIHsNCisJCWlmIChjLT5nY2Jsb2NrICYmIChjLT5nY2Jsb2Nr LT51c2VkX3NpemUgPD0gYy0+d2J1Zl9wYWdlc2l6ZSkpIHsNCisJCQlEMShwcmludGsoS0VSTl9E RUJVRyAiQmxvY2sgYXQgMHglMDh4IGNvbXBsZXRlbHkiDQorCQkJCSIgb2Jzb2xldGVkIGJ5IEdD LiBNb3ZpbmcgdG8gZXJhc2VfcGVuZGluZ19saXN0XG4iDQorCQkJCSwgYy0+Z2NibG9jay0+b2Zm c2V0KSk7DQorCQkJLyogV2UncmUgR0MnaW5nIGFuIGVtcHR5IGJsb2NrPyAqLw0KKwkJCWxpc3Rf YWRkX3RhaWwoJmMtPmdjYmxvY2stPmxpc3QsDQorCQkJCQkmYy0+ZXJhc2VfcGVuZGluZ19saXN0 KTsNCisJCQljLT5nY2Jsb2NrID0gTlVMTDsNCisJCQljLT5ucl9lcmFzaW5nX2Jsb2NrcysrOw0K KwkJCWpmZnMyX2VyYXNlX3BlbmRpbmdfdHJpZ2dlcihjKTsNCisJCX0NCisJfQ0KKw0KKwllbHNl ew0KKwkJaWYgKGMtPmdjYmxvY2sgJiYgIWMtPmdjYmxvY2stPnVzZWRfc2l6ZSkgew0KKwkJCUQx KHByaW50ayhLRVJOX0RFQlVHICJCbG9jayBhdCAweCUwOHggY29tcGxldGVseSINCisJCQkJIiBv YnNvbGV0ZWQgYnkgR0MuIE1vdmluZyB0byBlcmFzZV9wZW5kaW5nX2xpc3RcbiINCisJCQkJLCBj LT5nY2Jsb2NrLT5vZmZzZXQpKTsNCisJCQkvKiBXZSdyZSBHQydpbmcgYW4gZW1wdHkgYmxvY2s/ ICovDQorCQkJbGlzdF9hZGRfdGFpbCgmYy0+Z2NibG9jay0+bGlzdCwNCisJCQkJCSZjLT5lcmFz ZV9wZW5kaW5nX2xpc3QpOw0KKwkJCWMtPmdjYmxvY2sgPSBOVUxMOw0KKwkJCWMtPm5yX2VyYXNp bmdfYmxvY2tzKys7DQorCQkJamZmczJfZXJhc2VfcGVuZGluZ190cmlnZ2VyKGMpOw0KKwkJfQ0K IAl9DQogCXNwaW5fdW5sb2NrKCZjLT5lcmFzZV9jb21wbGV0aW9uX2xvY2spOw0KIA0KLS0tIGEv ZnMvamZmczIvbm9kZWxpc3QuYwkyMDA4LTA4LTI0IDA0OjQ4OjMyLjAwMDAwMDAwMCArMDUzMA0K KysrIGIvZnMvamZmczIvbm9kZWxpc3QuYwkyMDA4LTA5LTAxIDEzOjM5OjU2LjAwMDAwMDAwMCAr MDUzMA0KQEAgLTYzNCw3ICs2MzQsMTEgQEAgc3RydWN0IGpmZnMyX3Jhd19ub2RlX3JlZiAqamZm czJfbGlua19ubw0KIA0KIAlpZiAoIWplYi0+Zmlyc3Rfbm9kZSkgew0KIAkJamViLT5maXJzdF9u b2RlID0gcmVmOw0KLQkJQlVHX09OKHJlZl9vZmZzZXQocmVmKSAhPSBqZWItPm9mZnNldCk7DQor CQlpZiAoYy0+bXRkLT5mbGFncyA9PSBNVERfQ0FQX01MQ05BTkRGTEFTSCkNCisJCQlCVUdfT04o cmVmX29mZnNldChyZWYpICE9DQorCQkJCQkJamViLT5vZmZzZXQgKyBjLT53YnVmX3BhZ2VzaXpl KTsNCisJCWVsc2UNCisJCQlCVUdfT04ocmVmX29mZnNldChyZWYpICE9IGplYi0+b2Zmc2V0KTsN CiAJfSBlbHNlIGlmICh1bmxpa2VseShyZWZfb2Zmc2V0KHJlZikgIT0gamViLT5vZmZzZXQgKyBj LT5zZWN0b3Jfc2l6ZSAtIGplYi0+ZnJlZV9zaXplKSkgew0KIAkJdWludDMyX3QgbGFzdF9sZW4g PSByZWZfdG90bGVuKGMsIGplYiwgamViLT5sYXN0X25vZGUpOw0KIA0KLS0tIGEvZnMvamZmczIv bm9kZW1nbXQuYwkyMDA4LTA4LTI0IDA0OjQ4OjMyLjAwMDAwMDAwMCArMDUzMA0KKysrIGIvZnMv amZmczIvbm9kZW1nbXQuYwkyMDA4LTA5LTAxIDE2OjE1OjQ3LjAwMDAwMDAwMCArMDUzMA0KQEAg LTM2MiwxNiArMzYyLDI1IEBAIHN0YXRpYyBpbnQgamZmczJfZG9fcmVzZXJ2ZV9zcGFjZShzdHJ1 Y3QNCiAJfQ0KIA0KIAlpZiAoIWplYikgew0KLQ0KIAkJcmV0ID0gamZmczJfZmluZF9uZXh0Ymxv Y2soYyk7DQogCQlpZiAocmV0KQ0KIAkJCXJldHVybiByZXQ7DQogDQogCQlqZWIgPSBjLT5uZXh0 YmxvY2s7DQorCQlpZiAoYy0+bXRkLT5mbGFncyA9PSBNVERfQ0FQX01MQ05BTkRGTEFTSCkgew0K KwkJCWlmIChqZWItPmZyZWVfc2l6ZSAhPSBjLT5zZWN0b3Jfc2l6ZSAtDQorCQkJCWMtPmNsZWFu bWFya2VyX3NpemUgLSBjLT53YnVmX3BhZ2VzaXplKSB7DQorCQkJCXByaW50ayhLRVJOX1dBUk5J TkcgIkVlcC4gQmxvY2sgMHglMDh4IHRha2VuIGZyb20gZnJlZV9saXN0IGhhZCBmcmVlX3NpemUg b2YgMHglMDh4ISFcbiIsIGplYi0+b2Zmc2V0LCBqZWItPmZyZWVfc2l6ZSk7DQorCQkJCWdvdG8g cmVzdGFydDsNCisJCQl9DQorCQl9DQogDQotCQlpZiAoamViLT5mcmVlX3NpemUgIT0gYy0+c2Vj dG9yX3NpemUgLSBjLT5jbGVhbm1hcmtlcl9zaXplKSB7DQotCQkJcHJpbnRrKEtFUk5fV0FSTklO RyAiRWVwLiBCbG9jayAweCUwOHggdGFrZW4gZnJvbSBmcmVlX2xpc3QgaGFkIGZyZWVfc2l6ZSBv ZiAweCUwOHghIVxuIiwgamViLT5vZmZzZXQsIGplYi0+ZnJlZV9zaXplKTsNCi0JCQlnb3RvIHJl c3RhcnQ7DQorCQllbHNlew0KKwkJCWlmIChqZWItPmZyZWVfc2l6ZSAhPSBjLT5zZWN0b3Jfc2l6 ZSAtDQorCQkJCQljLT5jbGVhbm1hcmtlcl9zaXplKSB7DQorCQkJCXByaW50ayhLRVJOX1dBUk5J TkcgIkVlcC4gQmxvY2sgMHglMDh4IHRha2VuIGZyb20gZnJlZV9saXN0IGhhZCBmcmVlX3NpemUg b2YgMHglMDh4ISFcbiIsIGplYi0+b2Zmc2V0LCBqZWItPmZyZWVfc2l6ZSk7DQorCQkJCWdvdG8g cmVzdGFydDsNCisJCQl9DQogCQl9DQogCX0NCiAJLyogT0ssIGplYiAoPT1jLT5uZXh0YmxvY2sp IGlzIG5vdyBwb2ludGluZyBhdCBhIGJsb2NrIHdoaWNoIGRlZmluaXRlbHkgaGFzDQotLS0gYS9m cy9qZmZzMi9zY2FuLmMJMjAwOC0wOC0yNCAwNDo0ODozMi4wMDAwMDAwMDAgKzA1MzANCisrKyBi L2ZzL2pmZnMyL3NjYW4uYwkyMDA4LTA5LTAxIDEzOjM5OjU2LjAwMDAwMDAwMCArMDUzMA0KQEAg LTUzNCw3ICs1MzQsMTAgQEAgc3RhdGljIGludCBqZmZzMl9zY2FuX2VyYXNlYmxvY2sgKHN0cnVj dA0KIAkJfQ0KIAl9DQogDQotCWJ1Zl9vZnMgPSBqZWItPm9mZnNldDsNCisJaWYgKGMtPm10ZC0+ ZmxhZ3MgPT0gTVREX0NBUF9NTENOQU5ERkxBU0gpDQorCQlidWZfb2ZzID0gamViLT5vZmZzZXQg KyBjLT53YnVmX3BhZ2VzaXplOw0KKwllbHNlDQorCQlidWZfb2ZzID0gamViLT5vZmZzZXQ7DQog DQogCWlmICghYnVmX3NpemUpIHsNCiAJCS8qIFRoaXMgaXMgdGhlIFhJUCBjYXNlIC0tIHdlJ3Jl IHJlYWRpbmcgX2RpcmVjdGx5XyBmcm9tIHRoZSBmbGFzaCBjaGlwICovDQpAQCAtNTgyLDcgKzU4 NSwxMCBAQCBzdGF0aWMgaW50IGpmZnMyX3NjYW5fZXJhc2VibG9jayAoc3RydWN0DQogCX0NCiAN CiAJLyogTm93IG9mcyBpcyBhIGNvbXBsZXRlIHBoeXNpY2FsIGZsYXNoIG9mZnNldCBhcyBpdCBh bHdheXMgd2FzLi4uICovDQotCW9mcyArPSBqZWItPm9mZnNldDsNCisJaWYgKGMtPm10ZC0+Zmxh Z3MgPT0gTVREX0NBUF9NTENOQU5ERkxBU0gpDQorCQlvZnMgKz0gamViLT5vZmZzZXQgKyBjLT53 YnVmX3BhZ2VzaXplOw0KKwllbHNlDQorCQlvZnMgKz0gamViLT5vZmZzZXQ7DQogDQogCW5vaXNl ID0gMTA7DQogDQotLS0gYS9mcy9qZmZzMi93YnVmLmMJMjAwOC0wOC0yNCAwNDo0ODozMi4wMDAw MDAwMDAgKzA1MzANCisrKyBiL2ZzL2pmZnMyL3didWYuYwkyMDA4LTA5LTAxIDEzOjM5OjU2LjAw MDAwMDAwMCArMDUzMA0KQEAgLTg3Myw2ICs4NzMsMTMgQEAgaW50IGpmZnMyX2ZsYXNoX3dyaXRl dihzdHJ1Y3QgamZmczJfc2JfaQ0KIAkJCXZsZW4gLT0gd2J1Zl9yZXRsZW47DQogCQkJb3V0dmVj X3RvICs9IHdidWZfcmV0bGVuOw0KIAkJCWMtPndidWZfb2ZzID0gb3V0dmVjX3RvOw0KKwkJCWlm IChjLT5tdGQtPmZsYWdzID09IE1URF9DQVBfTUxDTkFOREZMQVNIKSB7DQorCQkJCS8qIGFkanVz dCB3cml0ZSBidWZmZXIgb2Zmc2V0LA0KKwkJCQkgKiBlbHNlIHdlIGdldCBhIG5vbiBjb250aWd1 b3VzIHdyaXRlIGJ1Zw0KKwkJCQkgKi8NCisJCQkJaWYgKCEoYy0+d2J1Zl9vZnMgJSBjLT5zZWN0 b3Jfc2l6ZSkpDQorCQkJCQljLT53YnVmX29mcyA9IDB4ZmZmZmZmZmY7DQorCQkJfQ0KIAkJCWRv bmVsZW4gKz0gd2J1Zl9yZXRsZW47DQogCQkJdiArPSB3YnVmX3JldGxlbjsNCiAJCX0NCi0tLSBh L2luY2x1ZGUvbXRkL210ZC1hYmkuaAkyMDA4LTA5LTAyIDEzOjUxOjA5LjAwMDAwMDAwMCArMDUz MA0KKysrIGIvaW5jbHVkZS9tdGQvbXRkLWFiaS5oCTIwMDgtMDktMDIgMTM6NTE6NDIuMDAwMDAw MDAwICswNTMwDQpAQCAtMjgsMTIgKzI4LDE0IEBAIHN0cnVjdCBtdGRfb29iX2J1ZiB7DQogI2Rl ZmluZSBNVERfQklUX1dSSVRFQUJMRQkweDgwMAkvKiBTaW5nbGUgYml0cyBjYW4gYmUgZmxpcHBl ZCAqLw0KICNkZWZpbmUgTVREX05PX0VSQVNFCQkweDEwMDAJLyogTm8gZXJhc2UgbmVjZXNzYXJ5 ICovDQogI2RlZmluZSBNVERfUE9XRVJVUF9MT0NLCTB4MjAwMAkvKiBBbHdheXMgbG9ja2VkIGFm dGVyIHJlc2V0ICovDQorI2RlZmluZSBNVERfV1JJVEFCTEVfT05DRQkweDQwMDANCiANCiAvLyBT b21lIGNvbW1vbiBkZXZpY2VzIC8gY29tYmluYXRpb25zIG9mIGNhcGFiaWxpdGllcw0KICNkZWZp bmUgTVREX0NBUF9ST00JCTANCiAjZGVmaW5lIE1URF9DQVBfUkFNCQkoTVREX1dSSVRFQUJMRSB8 IE1URF9CSVRfV1JJVEVBQkxFIHwgTVREX05PX0VSQVNFKQ0KICNkZWZpbmUgTVREX0NBUF9OT1JG TEFTSAkoTVREX1dSSVRFQUJMRSB8IE1URF9CSVRfV1JJVEVBQkxFKQ0KICNkZWZpbmUgTVREX0NB UF9OQU5ERkxBU0gJKE1URF9XUklURUFCTEUpDQorI2RlZmluZSBNVERfQ0FQX01MQ05BTkRGTEFT SAkoTVREX1dSSVRFQUJMRSB8IE1URF9XUklUQUJMRV9PTkNFKQ0KIA0KIC8qIEVDQyBieXRlIHBs YWNlbWVudCAqLw0KICNkZWZpbmUgTVREX05BTkRFQ0NfT0ZGCQkwCS8vIFN3aXRjaCBvZmYgRUND IChOb3QgcmVjb21tZW5kZWQpDQoNCg0KDQogDQog