From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3FDCCC77B7E for ; Thu, 1 Jun 2023 08:31:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jPRUcmM513wPh07gvX2WU+ICtxkSsNQqlQ3yD3Xnfb0=; b=Mz0XRpxbPFmpOy Qgnj0jKY89pIJc3Iy9DGGiqtRfT7wZGsxFqElBWumco31+2N/cpDWyE5Cxt5Lkym1RqvdQwYv9cVq ySGrk51arcB2pV4/NLy3XczAZmfdf7LHxpg6PmkDtZ2OWCcYHJMmi4djMFzjluoab4BZX36K6cfSR i/xd4lYASSnjastb9nbTQ2zx7eOJ3nW4yQWoJ89NwQAUXazyr25KdERbYgqywB6z2jPkFC2DOZe2X F7EHTKC9f4AXWgj6bxFzZt0Vbv9QsFBn5Q37lh4eapt2YjWZVYJ6GhEUpWBrh+pzQ8nZpPBYq00/n jXZ4LawDzD7AeaS3hIhA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q4diK-002ZGa-35; Thu, 01 Jun 2023 08:31:20 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q4diH-002ZF7-0E; Thu, 01 Jun 2023 08:31:19 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685608274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Cah2zLTpzlNGsP/8SUSmD1ez7BpuFUpsiaP0UNlHnqA=; b=LayGOI6JXCqX5cyoOrcKYQHDUxDUsFRYiLBJFDozVs6WJIBSROInUjVxGThdE6HaGdMryQ A4qnq70WlvRV0rVjYIsa7nnYoYtpKCNnSbvJm0ngAJux7WDoTiYsiX+4IwLPbOmjJqPcvD IJ11XkZK0v6xP5Nc9ZZlREv0LNhXDLHeo272qzEsbBZNFpCTBrPkP/dxEzoCQO5q4Ehx9R KuI86HFwEIPQOwRauirkxcv5tCK9k0IGiWt64z+e0MvzAxfoff410Zs+3w4PSnQtKL1E3b A3enSCg/ISp/8Y0fFFTVWhpK4zDlGBesBCeJfzfi6Xlx8ap7QblJ2EWplhnFng== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 3E16D1BF205; Thu, 1 Jun 2023 08:31:12 +0000 (UTC) Date: Thu, 1 Jun 2023 10:31:11 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230601103111.6840acc0@xps-13> In-Reply-To: <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230601_013117_557488_E79AB58E X-CRM114-Status: GOOD ( 42.94 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCkFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUaHUsIDEgSnVu IDIwMjMgMDk6MTg6NDYgKzAzMDA6Cgo+IFRoaXMgbW92ZXMgZnJlZSBieXRlcyBvZiBPT0IgdG8g bm9uLXByb3RlY3RlZCBFQ0MgYXJlYS4gSXQgaXMgbmVlZGVkIHRvCgpBcyB3ZSBkaXNjdXNzZWQs IEkgZXhwZWN0IHRoaXMgY29tbWl0IHRvIGp1c3QgY2hhbmdlIHRoZSBPT0IgbGF5b3V0IHRvCmV4 cG9zZSB1bnByb3RlY3RlZCBPT0IgYnl0ZXMgdG8gdGhlIHVzZXIsIHRoYXQgaXMgdGhlIG9ubHkg Y2hhbmdlIHRoaXMKY29tbWl0IHNob3VsZCBjYXJyeS4gSWYgdGhhdCBkb2VzIG5vdCB3b3JrLCB5 b3Ugc2hvdWxkIGFkZCBhCnByZXBhcmF0aW9uIHBhdGNoLgoKPiBtYWtlIEpGRlMyIHdvcmtzIGNv cnJlY3RseSB3aXRoIHRoaXMgTkFORCBjb250cm9sbGVyLiBQcm9ibGVtIGZpcmVzIHdoZW4KPiBK RkZTMiBkcml2ZXIgd3JpdGVzIGNsZWFubWFya2VyIHRvIHNvbWUgcGFnZSBhbmQgbGF0ZXIgaXQg dHJpZXMgdG8gd3JpdGUKPiB0byB0aGlzIHBhZ2UgLSB3cml0ZSB3aWxsIGJlIGRvbmUgc3VjY2Vz c2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBzdWNoIHBhZ2UKPiBiZWNvbWVzIHVucmVhZGFibGUgZHVl IHRvIGludmFsaWQgRUNDIGNvZGVzLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSBzZWNvbmQKPiB3cml0 ZSBuZWVkcyB0byB1cGRhdGUgRUNDIGNvZGVzLCBidXQgaXQgaXMgaW1wb3NzaWJsZSB0byBkbyBp dCBjb3JyZWN0bHkKPiB3aXRob3V0IGJsb2NrIGVyYXNlLiBTbyBpZGVhIG9mIHRoaXMgcGF0Y2gg aXMgdG8gdXNlIHRoZSB1bnByb3RlY3RlZCBPT0IKPiBhcmVhIHRvIHN0b3JlIHRoZSBjbGVhbm1h cmtlcnMsIHNvIHRoYXQgdGhleSBjYW4gYmUgd3JpdHRlbiBieSB0aGUKPiBmaWxlc3lzdGVtIHdp dGhvdXQgY2FyaW5nIG11Y2ggYWJvdXQgdGhlIHBhZ2UgYmVpbmcgZW1wdHkgb3Igbm90OiB0aGUK PiBFQ0MgY29kZXMgd2lsbCBub3QgYmUgd3JpdHRlbiBhbnl3YXkuCj4gCj4gSkZGUzIgaXMgb25s eSB1c2VmdWwgb24gdGlueSBOQU5EIGRldmljZXMsIHdoZXJlIFVCSSBkb2VzIG5vdCBmaXQsIHdo aWNoCj4gYXJlIHVzdWFsbHkgdHJ1ZSBTTEMgZmxhc2hlcywgd2l0aCB0aGUgY2FwYWJpbGl0eSBv ZiB3cml0aW5nIGEgcGFnZSB3aXRoCj4gZW1wdHkgKDB4RkYpIGRhdGEsIGFuZCBzdGlsbCBiZSBh YmxlIHRvIHdyaXRlIGFjdHVhbCBkYXRhIHRvIGl0IGxhdGVyIGluCj4gYSBzZWNvbmQgd3JpdGUu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmlj ZXMucnU+Cj4gLS0tCj4gIENoYW5nZWxvZyB2NC0+djU6Cj4gICogRHJvcCBjb3NtZXRpYyBjaGFu Z2VzIGZyb20gdGhpcyBwYXRjaC4KPiAgKiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNl ciBieXRlcyBwcm92aWRlZCBieSBody4gRXZlbiB0aGVzZQo+ICAgIGJ5dGVzIGFyZSBvdXQgb2Yg dXNlciBhcmVhIG9mIE9PQiwgaXRzIHZhbHVlcyBhcmUgc3RpbGwgcmVhZCBmcm9tCj4gICAgdGhl IHByb3ZpZGVkIE9PQiBidWZmZXIgYW5kIHdyaXR0ZW4gYnkgaGFyZHdhcmUuIFNhbWUgYmVoYXZp b3VyIGlzCj4gICAgcHJlc2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0ZXMgYXJlIHJl YWQgZnJvbSBETUEgYnVmZmVyIGFuZAo+ICAgIHBsYWNlZCB0byBPT0IgYnVmZmVyLgo+ICAqIE9P QiByZWFkIGFuZCB3cml0ZSBiZWNvbWUgbW9yZSBsaWdodHdlaWdodCBiZWNhdXNlIEkgcmVtb3Zl ZCBoZWF2eQo+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBjb21tYW5kIGZyb20gaXQgKGJvdGggY29t bWFuZHMgYXJlIHN0aWxsIHNlbnQKPiAgICB3aGVuIE9PQiBhY2Nlc3MgaXMgcGVyZm9ybWVkIHVz aW5nIE9PQiBjYWxsYmFja3MpLiBJbiBjYXNlIG9mIHBhZ2UKPiAgICByZWFkL3dyaXRlIE9PQiBk YXRhIGlzIGhhbmRsZWQgaW4gdGhlIGludGVybmFsIFNSQU0gb2YgdGhlIGNvbnRyb2xsZXIuCj4g ICogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlZC4KPiAgKiBUZW1wb3JhcnkgYnVmZmVyIGZvciBPT0Ig cmVhZC93cml0ZSBpcyByZW1vdmVkLiBTZWVtcyBldmVyeXRoaW5nCj4gICAgd29ya3MgY29ycmVj dGx5IHdpdGhvdXQgaXQuCj4gCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyB8 IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEx NyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25f bmFuZC5jCj4gaW5kZXggODJhNjI5MDI1YWRjLi5lNDJjMjhiZTAyZjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFu ZC9yYXcvbWVzb25fbmFuZC5jCj4gQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHU4ICptZXNv bl9uZmNfZGF0YV9wdHIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGkpCj4gIHN0YXRpYyB2 b2lkIG1lc29uX25mY19nZXRfZGF0YV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJ CSAgIHU4ICpidWYsIHU4ICpvb2JidWYpCj4gIHsKPiArCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9j aGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPiArCXN0cnVjdCBtdGRfaW5m byAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gIAlpbnQgaSwgb29iX2xlbiA9IDA7Cj4gIAl1 OCAqZHNyYywgKm9zcmM7Cj4gKwl1OCAqb29idGFpbDsKPiAgCj4gIAlvb2JfbGVuID0gbmFuZC0+ ZWNjLmJ5dGVzICsgMjsKPiAgCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3RlcHM7IGkrKykg ewo+IEBAIC0zNjgsMTcgKzM3MSwyNyBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfZ2V0X2RhdGFf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJCW1lbWNweShidWYsIGRzcmMsIG5hbmQt PmVjYy5zaXplKTsKPiAgCQkJYnVmICs9IG5hbmQtPmVjYy5zaXplOwo+ICAJCX0KPiArCj4gIAkJ b3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ICAJCW1lbWNweShvb2JidWYsIG9z cmMsIG9vYl9sZW4pOwo+ICAJCW9vYmJ1ZiArPSBvb2JfbGVuOwo+ICAJfQo+ICsKPiArCW9vYnRh aWwgPSBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIG5hbmQtPmVjYy5zdGVwcyAqCj4gKwkJICAobmFu ZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsKPiArCj4gKwkvKiAnb29iYnVmJyBwb2ludHMgdG8gdGhl IHN0YXJ0IG9mIHVzZXIgYXJlYS4gKi8KPiArCW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10ZC0+ b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBtZXNvbl9uZmNfc2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJ CQkgICBjb25zdCB1OCAqYnVmLCB1OCAqb29iYnVmKQo+ICB7Cj4gKwlzdHJ1Y3QgbWVzb25fbmZj X25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3Qg bXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICAJaW50IGksIG9vYl9sZW4gPSAw Owo+ICAJdTggKmRzcmMsICpvc3JjOwo+ICsJdTggKm9vYnRhaWw7Cj4gIAo+ICAJb29iX2xlbiA9 IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBz OyBpKyspIHsKPiBAQCAtMzkxLDYgKzQwNCwxMiBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0 X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJbWVtY3B5KG9zcmMsIG9vYmJ1 Ziwgb29iX2xlbik7Cj4gIAkJb29iYnVmICs9IG9vYl9sZW47Cj4gIAl9Cj4gKwo+ICsJb29idGFp bCA9IG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbmFuZC0+ZWNjLnN0ZXBzICoKPiArCQkgIChuYW5k LT5lY2Muc2l6ZSArIG9vYl9sZW4pOwoKVGhpcyBpcyBhbHdheXMgdGFyZ2V0aW5nIHRoZSBzYW1l IGFyZWEsIHNvIGl0IGxvb2tzIHN0cmFuZ2UgdG8gbWUuCgo+ICsKPiArCS8qICdvb2JidWYnIHBv aW50cyB0byB0aGUgc3RhcnQgb2YgdXNlciBhcmVhLiAqLwo+ICsJbWVtY3B5KG9vYnRhaWwsIG9v YmJ1ZiwgbXRkLT5vb2JzaXplIC0gbmFuZC0+ZWNjLnN0ZXBzICogb29iX2xlbik7CgpUQkggSSBk b24ndCBnZXQgd2hhdCB5b3UgZG8gaGVyZS4KCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgbWVzb25f bmZjX3F1ZXVlX3JiKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCB0aW1lb3V0X21zKQo+IEBA IC00MzMsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF91c2VyX2J5dGUoc3Ry dWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlp bnQgaSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNj LnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8 IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsK PiAgCQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCSppbmZvIHw9IG9vYl9i dWZbY291bnRdOwo+ICAJCSppbmZvIHw9IG9vYl9idWZbY291bnQgKyAxXSA8PCA4Owo+IEBAIC00 NDYsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX2dldF91c2VyX2J5dGUoc3RydWN0 IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlpbnQg aSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0 ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5h bmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsKPiAg CQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCW9vYl9idWZbY291bnRdID0g KmluZm87Cj4gIAkJb29iX2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPiBAQCAtNjM4LDYg KzY1Nyw4NCBAQCBzdGF0aWMgaW50IG1lc29uX25mY19yd19jbWRfcHJlcGFyZV9hbmRfZXhlY3V0 ZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRp YyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4g K3sKPiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gKwo+ICsJ cmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIChuYW5kLT5lY2MuYnl0ZXMg KyAyKTsKClRoaXMgbG9va3MgbGlrZSBhIHN0YXRpYyB2YWx1ZSwganVzdCBzYXZlIGl0IHNvbWV3 aGVyZSBpbnN0ZWFkIG9mCnJlY29tcHV0aW5nIGl0PwoKPiArfQo+ICsKPiArc3RhdGljIGludCBt ZXNvbl9uZmNfd3JpdGVfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7 Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTMyIHBh Z2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXplICsgbXRkLT5vb2JzaXplOwo+ICsJdTMyIG9vYl9ieXRl cyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPiArCXU4ICpvb2JfYnVmOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpZiAoIW9vYl9ieXRlcykKPiArCQlyZXR1cm4gMDsKCkNhbiB0aGlz IGhhcHBlbj8KCj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiB3cml0ZSBoZWxwZXIsIHdpbGwgc2Vu ZCBOQU5EX0NNRF9QQUdFUFJPRy4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7Cj4gKwkJcmV0ID0g bmFuZF9wcm9nX3BhZ2VfYmVnaW5fb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwgMCk7Cj4gKwkJaWYg KHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlvb2JfYnVmID0gbmFuZC0+b29i X3BvaTsKPiArCj4gKwlyZXQgPSBuYW5kX2NoYW5nZV93cml0ZV9jb2x1bW5fb3AobmFuZCwgcGFn ZV9zaXplIC0gb29iX2J5dGVzLAo+ICsJCQkJCSAgb29iX2J1ZiArIChtdGQtPm9vYnNpemUgLSBv b2JfYnl0ZXMpLAo+ICsJCQkJCSAgb29iX2J5dGVzLCBmYWxzZSk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIChwYWdlICE9IC0xKSA/IG5hbmRfcHJvZ19wYWdl X2VuZF9vcChuYW5kKSA6IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTggKm9vYl9idWYgPSBuYW5kLT5v b2JfcG9pOwo+ICsJdTMyIG9vYl9ieXRlczsKPiArCXUzMiBwYWdlX3NpemU7Cj4gKwlpbnQgcmV0 Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiByZWFkIGhlbHBlciwgc2VuZCBO QU5EX0NNRF9SRUFEMC4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7CgpJIGRvbid0IGxpa2UgdGhp cyBsb2dpYyB3aXRoIHRoZSAiLTEiLCBpdCByZWFsbHkgaGlkZXMgd2hhdCB0aGUKY29udHJvbGxl ciBuZWVkcyB0byBkbywgaWYgeW91IG5lZWQgYSBoZWxwZXIgdG8gc2VuZCBhIGNvbW1hbmQsIHRo ZW4KY3JlYXRlIHRoYXQgaGVscGVyIGFuZCBnaXZlIGl0IGEgZGVjZW50IG5hbWUuCgo+ICsJCXJl dCA9IG5hbmRfcmVhZF9wYWdlX29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+ICsJCWlmIChy ZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJLyogUmVhZCBFQ0MgY29kZXMgYW5k IHVzZXIgYnl0ZXMuICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKysp IHsKPiArCQl1MzIgZWNjX29mZnMgPSBuYW5kLT5lY2Muc2l6ZSAqIChpICsgMSkgKwo+ICsJCQkg ICAgICAgKG5hbmQtPmVjYy5ieXRlcyArIDIpICogaTsKPiArCj4gKwkJcmV0ID0gbmFuZF9jaGFu Z2VfcmVhZF9jb2x1bW5fb3AobmFuZCwgZWNjX29mZnMsCj4gKwkJCQkJCSBvb2JfYnVmICsgaSAq IChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwKPiArCQkJCQkJIChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwg ZmFsc2UpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJb29i X2J5dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICsKPiArCWlmICghb29i X2J5dGVzKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXBhZ2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXpl ICsgbXRkLT5vb2JzaXplOwo+ICsKPiArCXJldCA9IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1uX29w KG5hbmQsIHBhZ2Vfc2l6ZSAtIG9vYl9ieXRlcywKPiArCQkJCQkgb29iX2J1ZiArIChtdGQtPm9v YnNpemUgLSBvb2JfYnl0ZXMpLAo+ICsJCQkJCSBvb2JfYnl0ZXMsIGZhbHNlKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1 YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJCQkJICAgIGludCBwYWdlLCBpbnQgcmF3KQo+ ICB7Cj4gQEAgLTY3NCw2ICs3NzEsMTIgQEAgc3RhdGljIGludCBtZXNvbl9uZmNfd3JpdGVfcGFn ZV9zdWIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJCSAgICAgTkZDX0NNRF9TQ1JBTUJM RVJfRElTQUJMRSk7Cj4gIAl9Cj4gIAo+ICsJaWYgKCFyYXcpIHsKCldoeSB0aGlzIGNoZWNrPwoK WW91IHNob3VsZCBpbnN0ZWFkIHByb3BhZ2F0ZSB0aGUgb29iX3JlcXVpcmVkIGZpZWxkIGFuZCBj aGVjayB0aGF0CnZhbHVlIEkgYmVsaWV2ZS4KCj4gKwkJcmV0ID0gbWVzb25fbmZjX3dyaXRlX29v YihuYW5kLCAtMSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g IAljbWQgPSBuZmMtPnBhcmFtLmNoaXBfc2VsZWN0IHwgTkZDX0NNRF9DTEUgfCBOQU5EX0NNRF9Q QUdFUFJPRzsKPiAgCXdyaXRlbChjbWQsIG5mYy0+cmVnX2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4g IAltZXNvbl9uZmNfcXVldWVfcmIobmFuZCwgUFNFQ19UT19NU0VDKHNkci0+dFBST0dfbWF4KSk7 Cj4gQEAgLTgzNCwxNyArOTM3LDEwIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9o d2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+ICAJCW1lbWNweShidWYsIG1l c29uX2NoaXAtPmRhdGFfYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJu IGJpdGZsaXBzOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYl9yYXco c3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gLXsKPiAtCXJldHVybiBtZXNvbl9u ZmNfcmVhZF9wYWdlX3JhdyhuYW5kLCBOVUxMLCAxLCBwYWdlKTsKPiAtfQo+ICsJaWYgKG9vYl9y ZXF1aXJlZCAmJiByZXQpCgpVbmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhlcmU/Cgo+ICsJCW1l c29uX25mY19yZWFkX29vYihuYW5kLCAtMSk7Cj4gIAo+IC1zdGF0aWMgaW50IG1lc29uX25mY19y ZWFkX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiAtewo+IC0JcmV0dXJu IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2MobmFuZCwgTlVMTCwgMSwgcGFnZSk7Cj4gKwlyZXR1 cm4gYml0ZmxpcHM7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIG1lc29uX25mY19pc19idWZmZXJf ZG1hX3NhZmUoY29uc3Qgdm9pZCAqYnVmZmVyKQo+IEBAIC05ODcsMTIgKzEwODMsMTYgQEAgc3Rh dGljIGludCBtZXNvbl9vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNl Y3Rpb24sCj4gIAkJCQlzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKm9vYnJlZ2lvbikKPiAgewo+ICAJ c3RydWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7Cj4gKwl1MzIgb29iX2J5 dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICAKPiAgCWlmIChzZWN0aW9u ID49IG5hbmQtPmVjYy5zdGVwcykKPiAgCQlyZXR1cm4gLUVSQU5HRTsKPiAgCj4gLQlvb2JyZWdp b24tPm9mZnNldCA9IHNlY3Rpb24gKiAoMiArIG5hbmQtPmVjYy5ieXRlcyk7CgpUaGUgZmlyc3Qg dHdvIGJ5dGVzIG9mIE9PQiBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBiYWQgYmxvY2sgbWFya2Vycy4g VGhpcwppcyBub3QgcmVsYXRlZCB0byB5b3VyIGNvbnRyb2xsZXIuCgo+IC0Jb29icmVnaW9uLT5s ZW5ndGggPSAyOwo+ICsJLyogU3BsaXQgcmVzdCBvZiBPT0IgYXJlYSAobm90IGNvdmVyZWQgYnkg RUNDIGVuZ2luZSkgcGVyIGVhY2gKPiArCSAqIEVDQyBzZWN0aW9uLiBUaGlzIHdpbGwgYmUgT09C IGRhdGEgYXZhaWxhYmxlIHRvIHVzZXIuCj4gKwkgKi8KPiArCW9vYnJlZ2lvbi0+b2Zmc2V0ID0g KHNlY3Rpb24gKyBuYW5kLT5lY2Muc3RlcHMpICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpOwoKVGhp cyBpcyBub3QgcG9zc2libGUsIHNlZSBhYm92ZS4KCj4gKwlvb2JyZWdpb24tPmxlbmd0aCA9IG9v Yl9ieXRlcyAvIG5hbmQtPmVjYy5zdGVwczsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0x MjIwLDEyICsxMzIwLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmFuZF9hdHRhY2hfY2hpcChzdHJ1 Y3QgbmFuZF9jaGlwICpuYW5kKQo+ICAJbmFuZC0+ZWNjLmVuZ2luZV90eXBlID0gTkFORF9FQ0Nf RU5HSU5FX1RZUEVfT05fSE9TVDsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlX3JhdyA9IG1lc29u X25mY193cml0ZV9wYWdlX3JhdzsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlID0gbWVzb25fbmZj X3dyaXRlX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2Mud3JpdGVfb29iX3JhdyA9IG5hbmRfd3Jp dGVfb29iX3N0ZDsKPiAtCW5hbmQtPmVjYy53cml0ZV9vb2IgPSBuYW5kX3dyaXRlX29vYl9zdGQ7 Cj4gIAo+ICsJbmFuZC0+ZWNjLndyaXRlX29vYl9yYXcgPSBtZXNvbl9uZmNfd3JpdGVfb29iOwo+ ICsJbmFuZC0+ZWNjLndyaXRlX29vYiA9IG1lc29uX25mY193cml0ZV9vb2I7Cj4gIAluYW5kLT5l Y2MucmVhZF9wYWdlX3JhdyA9IG1lc29uX25mY19yZWFkX3BhZ2VfcmF3Owo+ICAJbmFuZC0+ZWNj LnJlYWRfcGFnZSA9IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2MucmVh ZF9vb2JfcmF3ID0gbWVzb25fbmZjX3JlYWRfb29iX3JhdzsKPiArCW5hbmQtPmVjYy5yZWFkX29v Yl9yYXcgPSBtZXNvbl9uZmNfcmVhZF9vb2I7Cj4gIAluYW5kLT5lY2MucmVhZF9vb2IgPSBtZXNv bl9uZmNfcmVhZF9vb2I7Cj4gIAo+ICAJaWYgKG5hbmQtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRI XzE2KSB7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2lj QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hbWxvZ2ljCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F1C4AC7EE29 for ; Thu, 1 Jun 2023 08:31:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=K4/9poDVDrGu9ZXgzSHsjrFPCp3S+VlvzVMK+N3d+bQ=; b=q4gmL0nFeusaP+ mfAyNDp3wmFnPsQFUFRhH1yuD3kCJ7FvDwINfD4sKp+t7bGfHVx1OQs30Ts0iI3/X3ZenwhaLju/G XfAl82nk2mfiA/n7+5UnbHOFwXXLFDqXtiTrMAo6P/P7V9ZjajQRFRPVHbm00+muX7xUunz3b/sDq UutuurvabddPeJmCZn4LKfIe3dPNbVKFtMxBMtrGnJ+fpVlm2BhxKS+0IzTxv5pi6OxJNxSSwznEB trzsmxYJN8ZSbTxnHxZd4Amv0RJAy2pF2eV+K5oGe4yatbiM9gmG6NtOnUY6nKw5XOpf/j3mIso/c 28laZ6hyQotOAmSOE5+Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q4diL-002ZH8-3D; Thu, 01 Jun 2023 08:31:22 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q4diH-002ZF7-0E; Thu, 01 Jun 2023 08:31:19 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685608274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Cah2zLTpzlNGsP/8SUSmD1ez7BpuFUpsiaP0UNlHnqA=; b=LayGOI6JXCqX5cyoOrcKYQHDUxDUsFRYiLBJFDozVs6WJIBSROInUjVxGThdE6HaGdMryQ A4qnq70WlvRV0rVjYIsa7nnYoYtpKCNnSbvJm0ngAJux7WDoTiYsiX+4IwLPbOmjJqPcvD IJ11XkZK0v6xP5Nc9ZZlREv0LNhXDLHeo272qzEsbBZNFpCTBrPkP/dxEzoCQO5q4Ehx9R KuI86HFwEIPQOwRauirkxcv5tCK9k0IGiWt64z+e0MvzAxfoff410Zs+3w4PSnQtKL1E3b A3enSCg/ISp/8Y0fFFTVWhpK4zDlGBesBCeJfzfi6Xlx8ap7QblJ2EWplhnFng== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 3E16D1BF205; Thu, 1 Jun 2023 08:31:12 +0000 (UTC) Date: Thu, 1 Jun 2023 10:31:11 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230601103111.6840acc0@xps-13> In-Reply-To: <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230601_013117_557488_E79AB58E X-CRM114-Status: GOOD ( 42.94 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCkFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUaHUsIDEgSnVu IDIwMjMgMDk6MTg6NDYgKzAzMDA6Cgo+IFRoaXMgbW92ZXMgZnJlZSBieXRlcyBvZiBPT0IgdG8g bm9uLXByb3RlY3RlZCBFQ0MgYXJlYS4gSXQgaXMgbmVlZGVkIHRvCgpBcyB3ZSBkaXNjdXNzZWQs IEkgZXhwZWN0IHRoaXMgY29tbWl0IHRvIGp1c3QgY2hhbmdlIHRoZSBPT0IgbGF5b3V0IHRvCmV4 cG9zZSB1bnByb3RlY3RlZCBPT0IgYnl0ZXMgdG8gdGhlIHVzZXIsIHRoYXQgaXMgdGhlIG9ubHkg Y2hhbmdlIHRoaXMKY29tbWl0IHNob3VsZCBjYXJyeS4gSWYgdGhhdCBkb2VzIG5vdCB3b3JrLCB5 b3Ugc2hvdWxkIGFkZCBhCnByZXBhcmF0aW9uIHBhdGNoLgoKPiBtYWtlIEpGRlMyIHdvcmtzIGNv cnJlY3RseSB3aXRoIHRoaXMgTkFORCBjb250cm9sbGVyLiBQcm9ibGVtIGZpcmVzIHdoZW4KPiBK RkZTMiBkcml2ZXIgd3JpdGVzIGNsZWFubWFya2VyIHRvIHNvbWUgcGFnZSBhbmQgbGF0ZXIgaXQg dHJpZXMgdG8gd3JpdGUKPiB0byB0aGlzIHBhZ2UgLSB3cml0ZSB3aWxsIGJlIGRvbmUgc3VjY2Vz c2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBzdWNoIHBhZ2UKPiBiZWNvbWVzIHVucmVhZGFibGUgZHVl IHRvIGludmFsaWQgRUNDIGNvZGVzLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSBzZWNvbmQKPiB3cml0 ZSBuZWVkcyB0byB1cGRhdGUgRUNDIGNvZGVzLCBidXQgaXQgaXMgaW1wb3NzaWJsZSB0byBkbyBp dCBjb3JyZWN0bHkKPiB3aXRob3V0IGJsb2NrIGVyYXNlLiBTbyBpZGVhIG9mIHRoaXMgcGF0Y2gg aXMgdG8gdXNlIHRoZSB1bnByb3RlY3RlZCBPT0IKPiBhcmVhIHRvIHN0b3JlIHRoZSBjbGVhbm1h cmtlcnMsIHNvIHRoYXQgdGhleSBjYW4gYmUgd3JpdHRlbiBieSB0aGUKPiBmaWxlc3lzdGVtIHdp dGhvdXQgY2FyaW5nIG11Y2ggYWJvdXQgdGhlIHBhZ2UgYmVpbmcgZW1wdHkgb3Igbm90OiB0aGUK PiBFQ0MgY29kZXMgd2lsbCBub3QgYmUgd3JpdHRlbiBhbnl3YXkuCj4gCj4gSkZGUzIgaXMgb25s eSB1c2VmdWwgb24gdGlueSBOQU5EIGRldmljZXMsIHdoZXJlIFVCSSBkb2VzIG5vdCBmaXQsIHdo aWNoCj4gYXJlIHVzdWFsbHkgdHJ1ZSBTTEMgZmxhc2hlcywgd2l0aCB0aGUgY2FwYWJpbGl0eSBv ZiB3cml0aW5nIGEgcGFnZSB3aXRoCj4gZW1wdHkgKDB4RkYpIGRhdGEsIGFuZCBzdGlsbCBiZSBh YmxlIHRvIHdyaXRlIGFjdHVhbCBkYXRhIHRvIGl0IGxhdGVyIGluCj4gYSBzZWNvbmQgd3JpdGUu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmlj ZXMucnU+Cj4gLS0tCj4gIENoYW5nZWxvZyB2NC0+djU6Cj4gICogRHJvcCBjb3NtZXRpYyBjaGFu Z2VzIGZyb20gdGhpcyBwYXRjaC4KPiAgKiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNl ciBieXRlcyBwcm92aWRlZCBieSBody4gRXZlbiB0aGVzZQo+ICAgIGJ5dGVzIGFyZSBvdXQgb2Yg dXNlciBhcmVhIG9mIE9PQiwgaXRzIHZhbHVlcyBhcmUgc3RpbGwgcmVhZCBmcm9tCj4gICAgdGhl IHByb3ZpZGVkIE9PQiBidWZmZXIgYW5kIHdyaXR0ZW4gYnkgaGFyZHdhcmUuIFNhbWUgYmVoYXZp b3VyIGlzCj4gICAgcHJlc2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0ZXMgYXJlIHJl YWQgZnJvbSBETUEgYnVmZmVyIGFuZAo+ICAgIHBsYWNlZCB0byBPT0IgYnVmZmVyLgo+ICAqIE9P QiByZWFkIGFuZCB3cml0ZSBiZWNvbWUgbW9yZSBsaWdodHdlaWdodCBiZWNhdXNlIEkgcmVtb3Zl ZCBoZWF2eQo+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBjb21tYW5kIGZyb20gaXQgKGJvdGggY29t bWFuZHMgYXJlIHN0aWxsIHNlbnQKPiAgICB3aGVuIE9PQiBhY2Nlc3MgaXMgcGVyZm9ybWVkIHVz aW5nIE9PQiBjYWxsYmFja3MpLiBJbiBjYXNlIG9mIHBhZ2UKPiAgICByZWFkL3dyaXRlIE9PQiBk YXRhIGlzIGhhbmRsZWQgaW4gdGhlIGludGVybmFsIFNSQU0gb2YgdGhlIGNvbnRyb2xsZXIuCj4g ICogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlZC4KPiAgKiBUZW1wb3JhcnkgYnVmZmVyIGZvciBPT0Ig cmVhZC93cml0ZSBpcyByZW1vdmVkLiBTZWVtcyBldmVyeXRoaW5nCj4gICAgd29ya3MgY29ycmVj dGx5IHdpdGhvdXQgaXQuCj4gCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyB8 IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEx NyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25f bmFuZC5jCj4gaW5kZXggODJhNjI5MDI1YWRjLi5lNDJjMjhiZTAyZjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFu ZC9yYXcvbWVzb25fbmFuZC5jCj4gQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHU4ICptZXNv bl9uZmNfZGF0YV9wdHIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGkpCj4gIHN0YXRpYyB2 b2lkIG1lc29uX25mY19nZXRfZGF0YV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJ CSAgIHU4ICpidWYsIHU4ICpvb2JidWYpCj4gIHsKPiArCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9j aGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPiArCXN0cnVjdCBtdGRfaW5m byAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gIAlpbnQgaSwgb29iX2xlbiA9IDA7Cj4gIAl1 OCAqZHNyYywgKm9zcmM7Cj4gKwl1OCAqb29idGFpbDsKPiAgCj4gIAlvb2JfbGVuID0gbmFuZC0+ ZWNjLmJ5dGVzICsgMjsKPiAgCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3RlcHM7IGkrKykg ewo+IEBAIC0zNjgsMTcgKzM3MSwyNyBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfZ2V0X2RhdGFf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJCW1lbWNweShidWYsIGRzcmMsIG5hbmQt PmVjYy5zaXplKTsKPiAgCQkJYnVmICs9IG5hbmQtPmVjYy5zaXplOwo+ICAJCX0KPiArCj4gIAkJ b3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ICAJCW1lbWNweShvb2JidWYsIG9z cmMsIG9vYl9sZW4pOwo+ICAJCW9vYmJ1ZiArPSBvb2JfbGVuOwo+ICAJfQo+ICsKPiArCW9vYnRh aWwgPSBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIG5hbmQtPmVjYy5zdGVwcyAqCj4gKwkJICAobmFu ZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsKPiArCj4gKwkvKiAnb29iYnVmJyBwb2ludHMgdG8gdGhl IHN0YXJ0IG9mIHVzZXIgYXJlYS4gKi8KPiArCW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10ZC0+ b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBtZXNvbl9uZmNfc2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJ CQkgICBjb25zdCB1OCAqYnVmLCB1OCAqb29iYnVmKQo+ICB7Cj4gKwlzdHJ1Y3QgbWVzb25fbmZj X25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3Qg bXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICAJaW50IGksIG9vYl9sZW4gPSAw Owo+ICAJdTggKmRzcmMsICpvc3JjOwo+ICsJdTggKm9vYnRhaWw7Cj4gIAo+ICAJb29iX2xlbiA9 IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBz OyBpKyspIHsKPiBAQCAtMzkxLDYgKzQwNCwxMiBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0 X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJbWVtY3B5KG9zcmMsIG9vYmJ1 Ziwgb29iX2xlbik7Cj4gIAkJb29iYnVmICs9IG9vYl9sZW47Cj4gIAl9Cj4gKwo+ICsJb29idGFp bCA9IG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbmFuZC0+ZWNjLnN0ZXBzICoKPiArCQkgIChuYW5k LT5lY2Muc2l6ZSArIG9vYl9sZW4pOwoKVGhpcyBpcyBhbHdheXMgdGFyZ2V0aW5nIHRoZSBzYW1l IGFyZWEsIHNvIGl0IGxvb2tzIHN0cmFuZ2UgdG8gbWUuCgo+ICsKPiArCS8qICdvb2JidWYnIHBv aW50cyB0byB0aGUgc3RhcnQgb2YgdXNlciBhcmVhLiAqLwo+ICsJbWVtY3B5KG9vYnRhaWwsIG9v YmJ1ZiwgbXRkLT5vb2JzaXplIC0gbmFuZC0+ZWNjLnN0ZXBzICogb29iX2xlbik7CgpUQkggSSBk b24ndCBnZXQgd2hhdCB5b3UgZG8gaGVyZS4KCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgbWVzb25f bmZjX3F1ZXVlX3JiKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCB0aW1lb3V0X21zKQo+IEBA IC00MzMsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF91c2VyX2J5dGUoc3Ry dWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlp bnQgaSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNj LnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8 IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsK PiAgCQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCSppbmZvIHw9IG9vYl9i dWZbY291bnRdOwo+ICAJCSppbmZvIHw9IG9vYl9idWZbY291bnQgKyAxXSA8PCA4Owo+IEBAIC00 NDYsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX2dldF91c2VyX2J5dGUoc3RydWN0 IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlpbnQg aSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0 ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5h bmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsKPiAg CQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCW9vYl9idWZbY291bnRdID0g KmluZm87Cj4gIAkJb29iX2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPiBAQCAtNjM4LDYg KzY1Nyw4NCBAQCBzdGF0aWMgaW50IG1lc29uX25mY19yd19jbWRfcHJlcGFyZV9hbmRfZXhlY3V0 ZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRp YyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4g K3sKPiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gKwo+ICsJ cmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIChuYW5kLT5lY2MuYnl0ZXMg KyAyKTsKClRoaXMgbG9va3MgbGlrZSBhIHN0YXRpYyB2YWx1ZSwganVzdCBzYXZlIGl0IHNvbWV3 aGVyZSBpbnN0ZWFkIG9mCnJlY29tcHV0aW5nIGl0PwoKPiArfQo+ICsKPiArc3RhdGljIGludCBt ZXNvbl9uZmNfd3JpdGVfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7 Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTMyIHBh Z2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXplICsgbXRkLT5vb2JzaXplOwo+ICsJdTMyIG9vYl9ieXRl cyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPiArCXU4ICpvb2JfYnVmOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpZiAoIW9vYl9ieXRlcykKPiArCQlyZXR1cm4gMDsKCkNhbiB0aGlz IGhhcHBlbj8KCj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiB3cml0ZSBoZWxwZXIsIHdpbGwgc2Vu ZCBOQU5EX0NNRF9QQUdFUFJPRy4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7Cj4gKwkJcmV0ID0g bmFuZF9wcm9nX3BhZ2VfYmVnaW5fb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwgMCk7Cj4gKwkJaWYg KHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlvb2JfYnVmID0gbmFuZC0+b29i X3BvaTsKPiArCj4gKwlyZXQgPSBuYW5kX2NoYW5nZV93cml0ZV9jb2x1bW5fb3AobmFuZCwgcGFn ZV9zaXplIC0gb29iX2J5dGVzLAo+ICsJCQkJCSAgb29iX2J1ZiArIChtdGQtPm9vYnNpemUgLSBv b2JfYnl0ZXMpLAo+ICsJCQkJCSAgb29iX2J5dGVzLCBmYWxzZSk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIChwYWdlICE9IC0xKSA/IG5hbmRfcHJvZ19wYWdl X2VuZF9vcChuYW5kKSA6IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTggKm9vYl9idWYgPSBuYW5kLT5v b2JfcG9pOwo+ICsJdTMyIG9vYl9ieXRlczsKPiArCXUzMiBwYWdlX3NpemU7Cj4gKwlpbnQgcmV0 Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiByZWFkIGhlbHBlciwgc2VuZCBO QU5EX0NNRF9SRUFEMC4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7CgpJIGRvbid0IGxpa2UgdGhp cyBsb2dpYyB3aXRoIHRoZSAiLTEiLCBpdCByZWFsbHkgaGlkZXMgd2hhdCB0aGUKY29udHJvbGxl ciBuZWVkcyB0byBkbywgaWYgeW91IG5lZWQgYSBoZWxwZXIgdG8gc2VuZCBhIGNvbW1hbmQsIHRo ZW4KY3JlYXRlIHRoYXQgaGVscGVyIGFuZCBnaXZlIGl0IGEgZGVjZW50IG5hbWUuCgo+ICsJCXJl dCA9IG5hbmRfcmVhZF9wYWdlX29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+ICsJCWlmIChy ZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJLyogUmVhZCBFQ0MgY29kZXMgYW5k IHVzZXIgYnl0ZXMuICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKysp IHsKPiArCQl1MzIgZWNjX29mZnMgPSBuYW5kLT5lY2Muc2l6ZSAqIChpICsgMSkgKwo+ICsJCQkg ICAgICAgKG5hbmQtPmVjYy5ieXRlcyArIDIpICogaTsKPiArCj4gKwkJcmV0ID0gbmFuZF9jaGFu Z2VfcmVhZF9jb2x1bW5fb3AobmFuZCwgZWNjX29mZnMsCj4gKwkJCQkJCSBvb2JfYnVmICsgaSAq IChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwKPiArCQkJCQkJIChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwg ZmFsc2UpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJb29i X2J5dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICsKPiArCWlmICghb29i X2J5dGVzKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXBhZ2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXpl ICsgbXRkLT5vb2JzaXplOwo+ICsKPiArCXJldCA9IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1uX29w KG5hbmQsIHBhZ2Vfc2l6ZSAtIG9vYl9ieXRlcywKPiArCQkJCQkgb29iX2J1ZiArIChtdGQtPm9v YnNpemUgLSBvb2JfYnl0ZXMpLAo+ICsJCQkJCSBvb2JfYnl0ZXMsIGZhbHNlKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1 YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJCQkJICAgIGludCBwYWdlLCBpbnQgcmF3KQo+ ICB7Cj4gQEAgLTY3NCw2ICs3NzEsMTIgQEAgc3RhdGljIGludCBtZXNvbl9uZmNfd3JpdGVfcGFn ZV9zdWIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJCSAgICAgTkZDX0NNRF9TQ1JBTUJM RVJfRElTQUJMRSk7Cj4gIAl9Cj4gIAo+ICsJaWYgKCFyYXcpIHsKCldoeSB0aGlzIGNoZWNrPwoK WW91IHNob3VsZCBpbnN0ZWFkIHByb3BhZ2F0ZSB0aGUgb29iX3JlcXVpcmVkIGZpZWxkIGFuZCBj aGVjayB0aGF0CnZhbHVlIEkgYmVsaWV2ZS4KCj4gKwkJcmV0ID0gbWVzb25fbmZjX3dyaXRlX29v YihuYW5kLCAtMSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g IAljbWQgPSBuZmMtPnBhcmFtLmNoaXBfc2VsZWN0IHwgTkZDX0NNRF9DTEUgfCBOQU5EX0NNRF9Q QUdFUFJPRzsKPiAgCXdyaXRlbChjbWQsIG5mYy0+cmVnX2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4g IAltZXNvbl9uZmNfcXVldWVfcmIobmFuZCwgUFNFQ19UT19NU0VDKHNkci0+dFBST0dfbWF4KSk7 Cj4gQEAgLTgzNCwxNyArOTM3LDEwIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9o d2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+ICAJCW1lbWNweShidWYsIG1l c29uX2NoaXAtPmRhdGFfYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJu IGJpdGZsaXBzOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYl9yYXco c3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gLXsKPiAtCXJldHVybiBtZXNvbl9u ZmNfcmVhZF9wYWdlX3JhdyhuYW5kLCBOVUxMLCAxLCBwYWdlKTsKPiAtfQo+ICsJaWYgKG9vYl9y ZXF1aXJlZCAmJiByZXQpCgpVbmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhlcmU/Cgo+ICsJCW1l c29uX25mY19yZWFkX29vYihuYW5kLCAtMSk7Cj4gIAo+IC1zdGF0aWMgaW50IG1lc29uX25mY19y ZWFkX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiAtewo+IC0JcmV0dXJu IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2MobmFuZCwgTlVMTCwgMSwgcGFnZSk7Cj4gKwlyZXR1 cm4gYml0ZmxpcHM7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIG1lc29uX25mY19pc19idWZmZXJf ZG1hX3NhZmUoY29uc3Qgdm9pZCAqYnVmZmVyKQo+IEBAIC05ODcsMTIgKzEwODMsMTYgQEAgc3Rh dGljIGludCBtZXNvbl9vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNl Y3Rpb24sCj4gIAkJCQlzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKm9vYnJlZ2lvbikKPiAgewo+ICAJ c3RydWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7Cj4gKwl1MzIgb29iX2J5 dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICAKPiAgCWlmIChzZWN0aW9u ID49IG5hbmQtPmVjYy5zdGVwcykKPiAgCQlyZXR1cm4gLUVSQU5HRTsKPiAgCj4gLQlvb2JyZWdp b24tPm9mZnNldCA9IHNlY3Rpb24gKiAoMiArIG5hbmQtPmVjYy5ieXRlcyk7CgpUaGUgZmlyc3Qg dHdvIGJ5dGVzIG9mIE9PQiBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBiYWQgYmxvY2sgbWFya2Vycy4g VGhpcwppcyBub3QgcmVsYXRlZCB0byB5b3VyIGNvbnRyb2xsZXIuCgo+IC0Jb29icmVnaW9uLT5s ZW5ndGggPSAyOwo+ICsJLyogU3BsaXQgcmVzdCBvZiBPT0IgYXJlYSAobm90IGNvdmVyZWQgYnkg RUNDIGVuZ2luZSkgcGVyIGVhY2gKPiArCSAqIEVDQyBzZWN0aW9uLiBUaGlzIHdpbGwgYmUgT09C IGRhdGEgYXZhaWxhYmxlIHRvIHVzZXIuCj4gKwkgKi8KPiArCW9vYnJlZ2lvbi0+b2Zmc2V0ID0g KHNlY3Rpb24gKyBuYW5kLT5lY2Muc3RlcHMpICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpOwoKVGhp cyBpcyBub3QgcG9zc2libGUsIHNlZSBhYm92ZS4KCj4gKwlvb2JyZWdpb24tPmxlbmd0aCA9IG9v Yl9ieXRlcyAvIG5hbmQtPmVjYy5zdGVwczsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0x MjIwLDEyICsxMzIwLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmFuZF9hdHRhY2hfY2hpcChzdHJ1 Y3QgbmFuZF9jaGlwICpuYW5kKQo+ICAJbmFuZC0+ZWNjLmVuZ2luZV90eXBlID0gTkFORF9FQ0Nf RU5HSU5FX1RZUEVfT05fSE9TVDsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlX3JhdyA9IG1lc29u X25mY193cml0ZV9wYWdlX3JhdzsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlID0gbWVzb25fbmZj X3dyaXRlX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2Mud3JpdGVfb29iX3JhdyA9IG5hbmRfd3Jp dGVfb29iX3N0ZDsKPiAtCW5hbmQtPmVjYy53cml0ZV9vb2IgPSBuYW5kX3dyaXRlX29vYl9zdGQ7 Cj4gIAo+ICsJbmFuZC0+ZWNjLndyaXRlX29vYl9yYXcgPSBtZXNvbl9uZmNfd3JpdGVfb29iOwo+ ICsJbmFuZC0+ZWNjLndyaXRlX29vYiA9IG1lc29uX25mY193cml0ZV9vb2I7Cj4gIAluYW5kLT5l Y2MucmVhZF9wYWdlX3JhdyA9IG1lc29uX25mY19yZWFkX3BhZ2VfcmF3Owo+ICAJbmFuZC0+ZWNj LnJlYWRfcGFnZSA9IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2MucmVh ZF9vb2JfcmF3ID0gbWVzb25fbmZjX3JlYWRfb29iX3JhdzsKPiArCW5hbmQtPmVjYy5yZWFkX29v Yl9yYXcgPSBtZXNvbl9uZmNfcmVhZF9vb2I7Cj4gIAluYW5kLT5lY2MucmVhZF9vb2IgPSBtZXNv bl9uZmNfcmVhZF9vb2I7Cj4gIAo+ICAJaWYgKG5hbmQtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRI XzE2KSB7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0 Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81EB2C77B7E for ; Thu, 1 Jun 2023 08:31:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0DIfGOld/6Iu3W5Z+9XMPwMsvh6H2CM+L69vnxrz4a4=; b=J9uuFiT6eutPyv bpXWqWONN11IGAfX7ilsokX70JSFTb6cr5w5ifaaczkzpWdKMYcyEsNuD6ahpi8CQdvhS69kL5VK6 IZh7abFl3VF09vGqj45bb3qUdjP8jU8EVEhAosf5twGQHoHklHB30wSx5zUTiteMw1epcSzjkEXhZ TjguUIh5jOSGNUt6aCvTUEA1DlVblCsbQ2GDeymE2mfSXnDqr37P3XfEbf0fMHIKbvmOxa+lQumQS W+0f3O+sHG4tayovmc3HcFau/kur29pJJybUAj+tpOjAsQxexwaV9AVdwIShkiyMM57TxothlT2E8 c35jqmCwnHNI3QHLfcLQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q4diL-002ZGm-19; Thu, 01 Jun 2023 08:31:21 +0000 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q4diH-002ZF7-0E; Thu, 01 Jun 2023 08:31:19 +0000 X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685608274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Cah2zLTpzlNGsP/8SUSmD1ez7BpuFUpsiaP0UNlHnqA=; b=LayGOI6JXCqX5cyoOrcKYQHDUxDUsFRYiLBJFDozVs6WJIBSROInUjVxGThdE6HaGdMryQ A4qnq70WlvRV0rVjYIsa7nnYoYtpKCNnSbvJm0ngAJux7WDoTiYsiX+4IwLPbOmjJqPcvD IJ11XkZK0v6xP5Nc9ZZlREv0LNhXDLHeo272qzEsbBZNFpCTBrPkP/dxEzoCQO5q4Ehx9R KuI86HFwEIPQOwRauirkxcv5tCK9k0IGiWt64z+e0MvzAxfoff410Zs+3w4PSnQtKL1E3b A3enSCg/ISp/8Y0fFFTVWhpK4zDlGBesBCeJfzfi6Xlx8ap7QblJ2EWplhnFng== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 3E16D1BF205; Thu, 1 Jun 2023 08:31:12 +0000 (UTC) Date: Thu, 1 Jun 2023 10:31:11 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230601103111.6840acc0@xps-13> In-Reply-To: <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230601_013117_557488_E79AB58E X-CRM114-Status: GOOD ( 42.94 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCkFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUaHUsIDEgSnVu IDIwMjMgMDk6MTg6NDYgKzAzMDA6Cgo+IFRoaXMgbW92ZXMgZnJlZSBieXRlcyBvZiBPT0IgdG8g bm9uLXByb3RlY3RlZCBFQ0MgYXJlYS4gSXQgaXMgbmVlZGVkIHRvCgpBcyB3ZSBkaXNjdXNzZWQs IEkgZXhwZWN0IHRoaXMgY29tbWl0IHRvIGp1c3QgY2hhbmdlIHRoZSBPT0IgbGF5b3V0IHRvCmV4 cG9zZSB1bnByb3RlY3RlZCBPT0IgYnl0ZXMgdG8gdGhlIHVzZXIsIHRoYXQgaXMgdGhlIG9ubHkg Y2hhbmdlIHRoaXMKY29tbWl0IHNob3VsZCBjYXJyeS4gSWYgdGhhdCBkb2VzIG5vdCB3b3JrLCB5 b3Ugc2hvdWxkIGFkZCBhCnByZXBhcmF0aW9uIHBhdGNoLgoKPiBtYWtlIEpGRlMyIHdvcmtzIGNv cnJlY3RseSB3aXRoIHRoaXMgTkFORCBjb250cm9sbGVyLiBQcm9ibGVtIGZpcmVzIHdoZW4KPiBK RkZTMiBkcml2ZXIgd3JpdGVzIGNsZWFubWFya2VyIHRvIHNvbWUgcGFnZSBhbmQgbGF0ZXIgaXQg dHJpZXMgdG8gd3JpdGUKPiB0byB0aGlzIHBhZ2UgLSB3cml0ZSB3aWxsIGJlIGRvbmUgc3VjY2Vz c2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBzdWNoIHBhZ2UKPiBiZWNvbWVzIHVucmVhZGFibGUgZHVl IHRvIGludmFsaWQgRUNDIGNvZGVzLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSBzZWNvbmQKPiB3cml0 ZSBuZWVkcyB0byB1cGRhdGUgRUNDIGNvZGVzLCBidXQgaXQgaXMgaW1wb3NzaWJsZSB0byBkbyBp dCBjb3JyZWN0bHkKPiB3aXRob3V0IGJsb2NrIGVyYXNlLiBTbyBpZGVhIG9mIHRoaXMgcGF0Y2gg aXMgdG8gdXNlIHRoZSB1bnByb3RlY3RlZCBPT0IKPiBhcmVhIHRvIHN0b3JlIHRoZSBjbGVhbm1h cmtlcnMsIHNvIHRoYXQgdGhleSBjYW4gYmUgd3JpdHRlbiBieSB0aGUKPiBmaWxlc3lzdGVtIHdp dGhvdXQgY2FyaW5nIG11Y2ggYWJvdXQgdGhlIHBhZ2UgYmVpbmcgZW1wdHkgb3Igbm90OiB0aGUK PiBFQ0MgY29kZXMgd2lsbCBub3QgYmUgd3JpdHRlbiBhbnl3YXkuCj4gCj4gSkZGUzIgaXMgb25s eSB1c2VmdWwgb24gdGlueSBOQU5EIGRldmljZXMsIHdoZXJlIFVCSSBkb2VzIG5vdCBmaXQsIHdo aWNoCj4gYXJlIHVzdWFsbHkgdHJ1ZSBTTEMgZmxhc2hlcywgd2l0aCB0aGUgY2FwYWJpbGl0eSBv ZiB3cml0aW5nIGEgcGFnZSB3aXRoCj4gZW1wdHkgKDB4RkYpIGRhdGEsIGFuZCBzdGlsbCBiZSBh YmxlIHRvIHdyaXRlIGFjdHVhbCBkYXRhIHRvIGl0IGxhdGVyIGluCj4gYSBzZWNvbmQgd3JpdGUu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmlj ZXMucnU+Cj4gLS0tCj4gIENoYW5nZWxvZyB2NC0+djU6Cj4gICogRHJvcCBjb3NtZXRpYyBjaGFu Z2VzIGZyb20gdGhpcyBwYXRjaC4KPiAgKiBEbyBub3QgaWdub3JlIEVDQyBwcm90ZWN0ZWQgdXNl ciBieXRlcyBwcm92aWRlZCBieSBody4gRXZlbiB0aGVzZQo+ICAgIGJ5dGVzIGFyZSBvdXQgb2Yg dXNlciBhcmVhIG9mIE9PQiwgaXRzIHZhbHVlcyBhcmUgc3RpbGwgcmVhZCBmcm9tCj4gICAgdGhl IHByb3ZpZGVkIE9PQiBidWZmZXIgYW5kIHdyaXR0ZW4gYnkgaGFyZHdhcmUuIFNhbWUgYmVoYXZp b3VyIGlzCj4gICAgcHJlc2VydmVkIGZvciByZWFkIGFjY2VzcyAtIHN1Y2ggYnl0ZXMgYXJlIHJl YWQgZnJvbSBETUEgYnVmZmVyIGFuZAo+ICAgIHBsYWNlZCB0byBPT0IgYnVmZmVyLgo+ICAqIE9P QiByZWFkIGFuZCB3cml0ZSBiZWNvbWUgbW9yZSBsaWdodHdlaWdodCBiZWNhdXNlIEkgcmVtb3Zl ZCBoZWF2eQo+ICAgIFJFQUQwIGFuZCBQQUdFUFJPRyBjb21tYW5kIGZyb20gaXQgKGJvdGggY29t bWFuZHMgYXJlIHN0aWxsIHNlbnQKPiAgICB3aGVuIE9PQiBhY2Nlc3MgaXMgcGVyZm9ybWVkIHVz aW5nIE9PQiBjYWxsYmFja3MpLiBJbiBjYXNlIG9mIHBhZ2UKPiAgICByZWFkL3dyaXRlIE9PQiBk YXRhIGlzIGhhbmRsZWQgaW4gdGhlIGludGVybmFsIFNSQU0gb2YgdGhlIGNvbnRyb2xsZXIuCj4g ICogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlZC4KPiAgKiBUZW1wb3JhcnkgYnVmZmVyIGZvciBPT0Ig cmVhZC93cml0ZSBpcyByZW1vdmVkLiBTZWVtcyBldmVyeXRoaW5nCj4gICAgd29ya3MgY29ycmVj dGx5IHdpdGhvdXQgaXQuCj4gCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uX25hbmQuYyB8 IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEx NyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25f bmFuZC5jCj4gaW5kZXggODJhNjI5MDI1YWRjLi5lNDJjMjhiZTAyZjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFu ZC9yYXcvbWVzb25fbmFuZC5jCj4gQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHU4ICptZXNv bl9uZmNfZGF0YV9wdHIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IGkpCj4gIHN0YXRpYyB2 b2lkIG1lc29uX25mY19nZXRfZGF0YV9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJ CSAgIHU4ICpidWYsIHU4ICpvb2JidWYpCj4gIHsKPiArCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9j aGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPiArCXN0cnVjdCBtdGRfaW5m byAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gIAlpbnQgaSwgb29iX2xlbiA9IDA7Cj4gIAl1 OCAqZHNyYywgKm9zcmM7Cj4gKwl1OCAqb29idGFpbDsKPiAgCj4gIAlvb2JfbGVuID0gbmFuZC0+ ZWNjLmJ5dGVzICsgMjsKPiAgCWZvciAoaSA9IDA7IGkgPCBuYW5kLT5lY2Muc3RlcHM7IGkrKykg ewo+IEBAIC0zNjgsMTcgKzM3MSwyNyBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfZ2V0X2RhdGFf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJCW1lbWNweShidWYsIGRzcmMsIG5hbmQt PmVjYy5zaXplKTsKPiAgCQkJYnVmICs9IG5hbmQtPmVjYy5zaXplOwo+ICAJCX0KPiArCj4gIAkJ b3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ICAJCW1lbWNweShvb2JidWYsIG9z cmMsIG9vYl9sZW4pOwo+ICAJCW9vYmJ1ZiArPSBvb2JfbGVuOwo+ICAJfQo+ICsKPiArCW9vYnRh aWwgPSBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIG5hbmQtPmVjYy5zdGVwcyAqCj4gKwkJICAobmFu ZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsKPiArCj4gKwkvKiAnb29iYnVmJyBwb2ludHMgdG8gdGhl IHN0YXJ0IG9mIHVzZXIgYXJlYS4gKi8KPiArCW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10ZC0+ b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBtZXNvbl9uZmNfc2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJ CQkgICBjb25zdCB1OCAqYnVmLCB1OCAqb29iYnVmKQo+ICB7Cj4gKwlzdHJ1Y3QgbWVzb25fbmZj X25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4gKwlzdHJ1Y3Qg bXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICAJaW50IGksIG9vYl9sZW4gPSAw Owo+ICAJdTggKmRzcmMsICpvc3JjOwo+ICsJdTggKm9vYnRhaWw7Cj4gIAo+ICAJb29iX2xlbiA9 IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBz OyBpKyspIHsKPiBAQCAtMzkxLDYgKzQwNCwxMiBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0 X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsCj4gIAkJbWVtY3B5KG9zcmMsIG9vYmJ1 Ziwgb29iX2xlbik7Cj4gIAkJb29iYnVmICs9IG9vYl9sZW47Cj4gIAl9Cj4gKwo+ICsJb29idGFp bCA9IG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbmFuZC0+ZWNjLnN0ZXBzICoKPiArCQkgIChuYW5k LT5lY2Muc2l6ZSArIG9vYl9sZW4pOwoKVGhpcyBpcyBhbHdheXMgdGFyZ2V0aW5nIHRoZSBzYW1l IGFyZWEsIHNvIGl0IGxvb2tzIHN0cmFuZ2UgdG8gbWUuCgo+ICsKPiArCS8qICdvb2JidWYnIHBv aW50cyB0byB0aGUgc3RhcnQgb2YgdXNlciBhcmVhLiAqLwo+ICsJbWVtY3B5KG9vYnRhaWwsIG9v YmJ1ZiwgbXRkLT5vb2JzaXplIC0gbmFuZC0+ZWNjLnN0ZXBzICogb29iX2xlbik7CgpUQkggSSBk b24ndCBnZXQgd2hhdCB5b3UgZG8gaGVyZS4KCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgbWVzb25f bmZjX3F1ZXVlX3JiKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCB0aW1lb3V0X21zKQo+IEBA IC00MzMsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3NldF91c2VyX2J5dGUoc3Ry dWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlp bnQgaSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNj LnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8 IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsK PiAgCQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCSppbmZvIHw9IG9vYl9i dWZbY291bnRdOwo+ICAJCSppbmZvIHw9IG9vYl9idWZbY291bnQgKyAxXSA8PCA4Owo+IEBAIC00 NDYsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX2dldF91c2VyX2J5dGUoc3RydWN0 IG5hbmRfY2hpcCAqbmFuZCwgdTggKm9vYl9idWYpCj4gIAlfX2xlNjQgKmluZm87Cj4gIAlpbnQg aSwgY291bnQ7Cj4gIAo+IC0JZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0 ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPiArCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IG5h bmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAobmFuZC0+ZWNjLmJ5dGVzICsgMikpIHsKPiAg CQlpbmZvID0gJm1lc29uX2NoaXAtPmluZm9fYnVmW2ldOwo+ICAJCW9vYl9idWZbY291bnRdID0g KmluZm87Cj4gIAkJb29iX2J1Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPiBAQCAtNjM4LDYg KzY1Nyw4NCBAQCBzdGF0aWMgaW50IG1lc29uX25mY19yd19jbWRfcHJlcGFyZV9hbmRfZXhlY3V0 ZShzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRp YyB1MzIgbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4g K3sKPiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQobmFuZCk7Cj4gKwo+ICsJ cmV0dXJuIG10ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIChuYW5kLT5lY2MuYnl0ZXMg KyAyKTsKClRoaXMgbG9va3MgbGlrZSBhIHN0YXRpYyB2YWx1ZSwganVzdCBzYXZlIGl0IHNvbWV3 aGVyZSBpbnN0ZWFkIG9mCnJlY29tcHV0aW5nIGl0PwoKPiArfQo+ICsKPiArc3RhdGljIGludCBt ZXNvbl9uZmNfd3JpdGVfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7 Cj4gKwlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTMyIHBh Z2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXplICsgbXRkLT5vb2JzaXplOwo+ICsJdTMyIG9vYl9ieXRl cyA9IG1lc29uX25mY19vb2JfZnJlZV9ieXRlcyhuYW5kKTsKPiArCXU4ICpvb2JfYnVmOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpZiAoIW9vYl9ieXRlcykKPiArCQlyZXR1cm4gMDsKCkNhbiB0aGlz IGhhcHBlbj8KCj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiB3cml0ZSBoZWxwZXIsIHdpbGwgc2Vu ZCBOQU5EX0NNRF9QQUdFUFJPRy4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7Cj4gKwkJcmV0ID0g bmFuZF9wcm9nX3BhZ2VfYmVnaW5fb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwgMCk7Cj4gKwkJaWYg KHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlvb2JfYnVmID0gbmFuZC0+b29i X3BvaTsKPiArCj4gKwlyZXQgPSBuYW5kX2NoYW5nZV93cml0ZV9jb2x1bW5fb3AobmFuZCwgcGFn ZV9zaXplIC0gb29iX2J5dGVzLAo+ICsJCQkJCSAgb29iX2J1ZiArIChtdGQtPm9vYnNpemUgLSBv b2JfYnl0ZXMpLAo+ICsJCQkJCSAgb29iX2J5dGVzLCBmYWxzZSk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIChwYWdlICE9IC0xKSA/IG5hbmRfcHJvZ19wYWdl X2VuZF9vcChuYW5kKSA6IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRf b29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+ICt7Cj4gKwlzdHJ1Y3QgbXRk X2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+ICsJdTggKm9vYl9idWYgPSBuYW5kLT5v b2JfcG9pOwo+ICsJdTMyIG9vYl9ieXRlczsKPiArCXUzMiBwYWdlX3NpemU7Cj4gKwlpbnQgcmV0 Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyogQ2FsbGVkIGFzIE9PQiByZWFkIGhlbHBlciwgc2VuZCBO QU5EX0NNRF9SRUFEMC4gKi8KPiArCWlmIChwYWdlICE9IC0xKSB7CgpJIGRvbid0IGxpa2UgdGhp cyBsb2dpYyB3aXRoIHRoZSAiLTEiLCBpdCByZWFsbHkgaGlkZXMgd2hhdCB0aGUKY29udHJvbGxl ciBuZWVkcyB0byBkbywgaWYgeW91IG5lZWQgYSBoZWxwZXIgdG8gc2VuZCBhIGNvbW1hbmQsIHRo ZW4KY3JlYXRlIHRoYXQgaGVscGVyIGFuZCBnaXZlIGl0IGEgZGVjZW50IG5hbWUuCgo+ICsJCXJl dCA9IG5hbmRfcmVhZF9wYWdlX29wKG5hbmQsIHBhZ2UsIDAsIE5VTEwsIDApOwo+ICsJCWlmIChy ZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJLyogUmVhZCBFQ0MgY29kZXMgYW5k IHVzZXIgYnl0ZXMuICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKysp IHsKPiArCQl1MzIgZWNjX29mZnMgPSBuYW5kLT5lY2Muc2l6ZSAqIChpICsgMSkgKwo+ICsJCQkg ICAgICAgKG5hbmQtPmVjYy5ieXRlcyArIDIpICogaTsKPiArCj4gKwkJcmV0ID0gbmFuZF9jaGFu Z2VfcmVhZF9jb2x1bW5fb3AobmFuZCwgZWNjX29mZnMsCj4gKwkJCQkJCSBvb2JfYnVmICsgaSAq IChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwKPiArCQkJCQkJIChuYW5kLT5lY2MuYnl0ZXMgKyAyKSwg ZmFsc2UpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJb29i X2J5dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICsKPiArCWlmICghb29i X2J5dGVzKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXBhZ2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXpl ICsgbXRkLT5vb2JzaXplOwo+ICsKPiArCXJldCA9IG5hbmRfY2hhbmdlX3JlYWRfY29sdW1uX29w KG5hbmQsIHBhZ2Vfc2l6ZSAtIG9vYl9ieXRlcywKPiArCQkJCQkgb29iX2J1ZiArIChtdGQtPm9v YnNpemUgLSBvb2JfYnl0ZXMpLAo+ICsJCQkJCSBvb2JfYnl0ZXMsIGZhbHNlKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IG1lc29uX25mY193cml0ZV9wYWdlX3N1 YihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+ICAJCQkJICAgIGludCBwYWdlLCBpbnQgcmF3KQo+ ICB7Cj4gQEAgLTY3NCw2ICs3NzEsMTIgQEAgc3RhdGljIGludCBtZXNvbl9uZmNfd3JpdGVfcGFn ZV9zdWIoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPiAgCQkJCSAgICAgTkZDX0NNRF9TQ1JBTUJM RVJfRElTQUJMRSk7Cj4gIAl9Cj4gIAo+ICsJaWYgKCFyYXcpIHsKCldoeSB0aGlzIGNoZWNrPwoK WW91IHNob3VsZCBpbnN0ZWFkIHByb3BhZ2F0ZSB0aGUgb29iX3JlcXVpcmVkIGZpZWxkIGFuZCBj aGVjayB0aGF0CnZhbHVlIEkgYmVsaWV2ZS4KCj4gKwkJcmV0ID0gbWVzb25fbmZjX3dyaXRlX29v YihuYW5kLCAtMSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g IAljbWQgPSBuZmMtPnBhcmFtLmNoaXBfc2VsZWN0IHwgTkZDX0NNRF9DTEUgfCBOQU5EX0NNRF9Q QUdFUFJPRzsKPiAgCXdyaXRlbChjbWQsIG5mYy0+cmVnX2Jhc2UgKyBORkNfUkVHX0NNRCk7Cj4g IAltZXNvbl9uZmNfcXVldWVfcmIobmFuZCwgUFNFQ19UT19NU0VDKHNkci0+dFBST0dfbWF4KSk7 Cj4gQEAgLTgzNCwxNyArOTM3LDEwIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRfcGFnZV9o d2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+ICAJCW1lbWNweShidWYsIG1l c29uX2NoaXAtPmRhdGFfYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJu IGJpdGZsaXBzOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYl9yYXco c3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4gLXsKPiAtCXJldHVybiBtZXNvbl9u ZmNfcmVhZF9wYWdlX3JhdyhuYW5kLCBOVUxMLCAxLCBwYWdlKTsKPiAtfQo+ICsJaWYgKG9vYl9y ZXF1aXJlZCAmJiByZXQpCgpVbmNsZWFyIHdoeSB5b3UgY2hlY2sgcmV0IGhlcmU/Cgo+ICsJCW1l c29uX25mY19yZWFkX29vYihuYW5kLCAtMSk7Cj4gIAo+IC1zdGF0aWMgaW50IG1lc29uX25mY19y ZWFkX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPiAtewo+IC0JcmV0dXJu IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2MobmFuZCwgTlVMTCwgMSwgcGFnZSk7Cj4gKwlyZXR1 cm4gYml0ZmxpcHM7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIG1lc29uX25mY19pc19idWZmZXJf ZG1hX3NhZmUoY29uc3Qgdm9pZCAqYnVmZmVyKQo+IEBAIC05ODcsMTIgKzEwODMsMTYgQEAgc3Rh dGljIGludCBtZXNvbl9vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNl Y3Rpb24sCj4gIAkJCQlzdHJ1Y3QgbXRkX29vYl9yZWdpb24gKm9vYnJlZ2lvbikKPiAgewo+ICAJ c3RydWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7Cj4gKwl1MzIgb29iX2J5 dGVzID0gbWVzb25fbmZjX29vYl9mcmVlX2J5dGVzKG5hbmQpOwo+ICAKPiAgCWlmIChzZWN0aW9u ID49IG5hbmQtPmVjYy5zdGVwcykKPiAgCQlyZXR1cm4gLUVSQU5HRTsKPiAgCj4gLQlvb2JyZWdp b24tPm9mZnNldCA9IHNlY3Rpb24gKiAoMiArIG5hbmQtPmVjYy5ieXRlcyk7CgpUaGUgZmlyc3Qg dHdvIGJ5dGVzIG9mIE9PQiBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBiYWQgYmxvY2sgbWFya2Vycy4g VGhpcwppcyBub3QgcmVsYXRlZCB0byB5b3VyIGNvbnRyb2xsZXIuCgo+IC0Jb29icmVnaW9uLT5s ZW5ndGggPSAyOwo+ICsJLyogU3BsaXQgcmVzdCBvZiBPT0IgYXJlYSAobm90IGNvdmVyZWQgYnkg RUNDIGVuZ2luZSkgcGVyIGVhY2gKPiArCSAqIEVDQyBzZWN0aW9uLiBUaGlzIHdpbGwgYmUgT09C IGRhdGEgYXZhaWxhYmxlIHRvIHVzZXIuCj4gKwkgKi8KPiArCW9vYnJlZ2lvbi0+b2Zmc2V0ID0g KHNlY3Rpb24gKyBuYW5kLT5lY2Muc3RlcHMpICogKDIgKyBuYW5kLT5lY2MuYnl0ZXMpOwoKVGhp cyBpcyBub3QgcG9zc2libGUsIHNlZSBhYm92ZS4KCj4gKwlvb2JyZWdpb24tPmxlbmd0aCA9IG9v Yl9ieXRlcyAvIG5hbmQtPmVjYy5zdGVwczsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0x MjIwLDEyICsxMzIwLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmFuZF9hdHRhY2hfY2hpcChzdHJ1 Y3QgbmFuZF9jaGlwICpuYW5kKQo+ICAJbmFuZC0+ZWNjLmVuZ2luZV90eXBlID0gTkFORF9FQ0Nf RU5HSU5FX1RZUEVfT05fSE9TVDsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlX3JhdyA9IG1lc29u X25mY193cml0ZV9wYWdlX3JhdzsKPiAgCW5hbmQtPmVjYy53cml0ZV9wYWdlID0gbWVzb25fbmZj X3dyaXRlX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2Mud3JpdGVfb29iX3JhdyA9IG5hbmRfd3Jp dGVfb29iX3N0ZDsKPiAtCW5hbmQtPmVjYy53cml0ZV9vb2IgPSBuYW5kX3dyaXRlX29vYl9zdGQ7 Cj4gIAo+ICsJbmFuZC0+ZWNjLndyaXRlX29vYl9yYXcgPSBtZXNvbl9uZmNfd3JpdGVfb29iOwo+ ICsJbmFuZC0+ZWNjLndyaXRlX29vYiA9IG1lc29uX25mY193cml0ZV9vb2I7Cj4gIAluYW5kLT5l Y2MucmVhZF9wYWdlX3JhdyA9IG1lc29uX25mY19yZWFkX3BhZ2VfcmF3Owo+ICAJbmFuZC0+ZWNj LnJlYWRfcGFnZSA9IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2M7Cj4gLQluYW5kLT5lY2MucmVh ZF9vb2JfcmF3ID0gbWVzb25fbmZjX3JlYWRfb29iX3JhdzsKPiArCW5hbmQtPmVjYy5yZWFkX29v Yl9yYXcgPSBtZXNvbl9uZmNfcmVhZF9vb2I7Cj4gIAluYW5kLT5lY2MucmVhZF9vb2IgPSBtZXNv bl9uZmNfcmVhZF9vb2I7Cj4gIAo+ICAJaWYgKG5hbmQtPm9wdGlvbnMgJiBOQU5EX0JVU1dJRFRI XzE2KSB7CgoKVGhhbmtzLApNaXF1w6hsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D3DCFC7EE29 for ; Thu, 1 Jun 2023 08:33:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232304AbjFAIdP (ORCPT ); Thu, 1 Jun 2023 04:33:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232046AbjFAIcb (ORCPT ); Thu, 1 Jun 2023 04:32:31 -0400 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CB4DE57 for ; Thu, 1 Jun 2023 01:31:18 -0700 (PDT) X-GND-Sasl: miquel.raynal@bootlin.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1685608274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Cah2zLTpzlNGsP/8SUSmD1ez7BpuFUpsiaP0UNlHnqA=; b=LayGOI6JXCqX5cyoOrcKYQHDUxDUsFRYiLBJFDozVs6WJIBSROInUjVxGThdE6HaGdMryQ A4qnq70WlvRV0rVjYIsa7nnYoYtpKCNnSbvJm0ngAJux7WDoTiYsiX+4IwLPbOmjJqPcvD IJ11XkZK0v6xP5Nc9ZZlREv0LNhXDLHeo272qzEsbBZNFpCTBrPkP/dxEzoCQO5q4Ehx9R KuI86HFwEIPQOwRauirkxcv5tCK9k0IGiWt64z+e0MvzAxfoff410Zs+3w4PSnQtKL1E3b A3enSCg/ISp/8Y0fFFTVWhpK4zDlGBesBCeJfzfi6Xlx8ap7QblJ2EWplhnFng== X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com X-GND-Sasl: miquel.raynal@bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id 3E16D1BF205; Thu, 1 Jun 2023 08:31:12 +0000 (UTC) Date: Thu, 1 Jun 2023 10:31:11 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , , , , , , Subject: Re: [RFC PATCH v5 3/6] mtd: rawnand: meson: only expose unprotected user OOB bytes Message-ID: <20230601103111.6840acc0@xps-13> In-Reply-To: <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> References: <20230601061850.3907800-1-AVKrasnov@sberdevices.ru> <20230601061850.3907800-4-AVKrasnov@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Arseniy, AVKrasnov@sberdevices.ru wrote on Thu, 1 Jun 2023 09:18:46 +0300: > This moves free bytes of OOB to non-protected ECC area. It is needed to As we discussed, I expect this commit to just change the OOB layout to expose unprotected OOB bytes to the user, that is the only change this commit should carry. If that does not work, you should add a preparation patch. > make JFFS2 works correctly with this NAND controller. Problem fires when > JFFS2 driver writes cleanmarker to some page and later it tries to write > to this page - write will be done successfully, but after that such page > becomes unreadable due to invalid ECC codes. This happens because second > write needs to update ECC codes, but it is impossible to do it correctly > without block erase. So idea of this patch is to use the unprotected OOB > area to store the cleanmarkers, so that they can be written by the > filesystem without caring much about the page being empty or not: the > ECC codes will not be written anyway. >=20 > JFFS2 is only useful on tiny NAND devices, where UBI does not fit, which > are usually true SLC flashes, with the capability of writing a page with > empty (0xFF) data, and still be able to write actual data to it later in > a second write. >=20 > Signed-off-by: Arseniy Krasnov > --- > Changelog v4->v5: > * Drop cosmetic changes from this patch. > * Do not ignore ECC protected user bytes provided by hw. Even these > bytes are out of user area of OOB, its values are still read from > the provided OOB buffer and written by hardware. Same behaviour is > preserved for read access - such bytes are read from DMA buffer and > placed to OOB buffer. > * OOB read and write become more lightweight because I removed heavy > READ0 and PAGEPROG command from it (both commands are still sent > when OOB access is performed using OOB callbacks). In case of page > read/write OOB data is handled in the internal SRAM of the controller. > * Commit message updated. > * Temporary buffer for OOB read/write is removed. Seems everything > works correctly without it. >=20 > drivers/mtd/nand/raw/meson_nand.c | 134 ++++++++++++++++++++++++++---- > 1 file changed, 117 insertions(+), 17 deletions(-) >=20 > diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/mes= on_nand.c > index 82a629025adc..e42c28be02f3 100644 > --- a/drivers/mtd/nand/raw/meson_nand.c > +++ b/drivers/mtd/nand/raw/meson_nand.c > @@ -358,8 +358,11 @@ static u8 *meson_nfc_data_ptr(struct nand_chip *nand= , int i) > static void meson_nfc_get_data_oob(struct nand_chip *nand, > u8 *buf, u8 *oobbuf) > { > + struct meson_nfc_nand_chip *meson_chip =3D to_meson_nand(nand); > + struct mtd_info *mtd =3D nand_to_mtd(nand); > int i, oob_len =3D 0; > u8 *dsrc, *osrc; > + u8 *oobtail; > =20 > oob_len =3D nand->ecc.bytes + 2; > for (i =3D 0; i < nand->ecc.steps; i++) { > @@ -368,17 +371,27 @@ static void meson_nfc_get_data_oob(struct nand_chip= *nand, > memcpy(buf, dsrc, nand->ecc.size); > buf +=3D nand->ecc.size; > } > + > osrc =3D meson_nfc_oob_ptr(nand, i); > memcpy(oobbuf, osrc, oob_len); > oobbuf +=3D oob_len; > } > + > + oobtail =3D meson_chip->data_buf + nand->ecc.steps * > + (nand->ecc.size + oob_len); > + > + /* 'oobbuf' points to the start of user area. */ > + memcpy(oobbuf, oobtail, mtd->oobsize - nand->ecc.steps * oob_len); > } > =20 > static void meson_nfc_set_data_oob(struct nand_chip *nand, > const u8 *buf, u8 *oobbuf) > { > + struct meson_nfc_nand_chip *meson_chip =3D to_meson_nand(nand); > + struct mtd_info *mtd =3D nand_to_mtd(nand); > int i, oob_len =3D 0; > u8 *dsrc, *osrc; > + u8 *oobtail; > =20 > oob_len =3D nand->ecc.bytes + 2; > for (i =3D 0; i < nand->ecc.steps; i++) { > @@ -391,6 +404,12 @@ static void meson_nfc_set_data_oob(struct nand_chip = *nand, > memcpy(osrc, oobbuf, oob_len); > oobbuf +=3D oob_len; > } > + > + oobtail =3D meson_chip->data_buf + nand->ecc.steps * > + (nand->ecc.size + oob_len); This is always targeting the same area, so it looks strange to me. > + > + /* 'oobbuf' points to the start of user area. */ > + memcpy(oobtail, oobbuf, mtd->oobsize - nand->ecc.steps * oob_len); TBH I don't get what you do here. > } > =20 > static int meson_nfc_queue_rb(struct nand_chip *nand, int timeout_ms) > @@ -433,7 +452,7 @@ static void meson_nfc_set_user_byte(struct nand_chip = *nand, u8 *oob_buf) > __le64 *info; > int i, count; > =20 > - for (i =3D 0, count =3D 0; i < nand->ecc.steps; i++, count +=3D 2) { > + for (i =3D 0, count =3D 0; i < nand->ecc.steps; i++, count +=3D (nand->= ecc.bytes + 2)) { > info =3D &meson_chip->info_buf[i]; > *info |=3D oob_buf[count]; > *info |=3D oob_buf[count + 1] << 8; > @@ -446,7 +465,7 @@ static void meson_nfc_get_user_byte(struct nand_chip = *nand, u8 *oob_buf) > __le64 *info; > int i, count; > =20 > - for (i =3D 0, count =3D 0; i < nand->ecc.steps; i++, count +=3D 2) { > + for (i =3D 0, count =3D 0; i < nand->ecc.steps; i++, count +=3D (nand->= ecc.bytes + 2)) { > info =3D &meson_chip->info_buf[i]; > oob_buf[count] =3D *info; > oob_buf[count + 1] =3D *info >> 8; > @@ -638,6 +657,84 @@ static int meson_nfc_rw_cmd_prepare_and_execute(stru= ct nand_chip *nand, > return 0; > } > =20 > +static u32 meson_nfc_oob_free_bytes(struct nand_chip *nand) > +{ > + struct mtd_info *mtd =3D nand_to_mtd(nand); > + > + return mtd->oobsize - nand->ecc.steps * (nand->ecc.bytes + 2); This looks like a static value, just save it somewhere instead of recomputing it? > +} > + > +static int meson_nfc_write_oob(struct nand_chip *nand, int page) > +{ > + struct mtd_info *mtd =3D nand_to_mtd(nand); > + u32 page_size =3D mtd->writesize + mtd->oobsize; > + u32 oob_bytes =3D meson_nfc_oob_free_bytes(nand); > + u8 *oob_buf; > + int ret; > + > + if (!oob_bytes) > + return 0; Can this happen? > + > + /* Called as OOB write helper, will send NAND_CMD_PAGEPROG. */ > + if (page !=3D -1) { > + ret =3D nand_prog_page_begin_op(nand, page, 0, NULL, 0); > + if (ret) > + return ret; > + } > + > + oob_buf =3D nand->oob_poi; > + > + ret =3D nand_change_write_column_op(nand, page_size - oob_bytes, > + oob_buf + (mtd->oobsize - oob_bytes), > + oob_bytes, false); > + if (ret) > + return ret; > + > + return (page !=3D -1) ? nand_prog_page_end_op(nand) : 0; > +} > + > +static int meson_nfc_read_oob(struct nand_chip *nand, int page) > +{ > + struct mtd_info *mtd =3D nand_to_mtd(nand); > + u8 *oob_buf =3D nand->oob_poi; > + u32 oob_bytes; > + u32 page_size; > + int ret; > + int i; > + > + /* Called as OOB read helper, send NAND_CMD_READ0. */ > + if (page !=3D -1) { I don't like this logic with the "-1", it really hides what the controller needs to do, if you need a helper to send a command, then create that helper and give it a decent name. > + ret =3D nand_read_page_op(nand, page, 0, NULL, 0); > + if (ret) > + return ret; > + } > + > + /* Read ECC codes and user bytes. */ > + for (i =3D 0; i < nand->ecc.steps; i++) { > + u32 ecc_offs =3D nand->ecc.size * (i + 1) + > + (nand->ecc.bytes + 2) * i; > + > + ret =3D nand_change_read_column_op(nand, ecc_offs, > + oob_buf + i * (nand->ecc.bytes + 2), > + (nand->ecc.bytes + 2), false); > + if (ret) > + return ret; > + } > + > + oob_bytes =3D meson_nfc_oob_free_bytes(nand); > + > + if (!oob_bytes) > + return 0; > + > + page_size =3D mtd->writesize + mtd->oobsize; > + > + ret =3D nand_change_read_column_op(nand, page_size - oob_bytes, > + oob_buf + (mtd->oobsize - oob_bytes), > + oob_bytes, false); > + > + return ret; > +} > + > static int meson_nfc_write_page_sub(struct nand_chip *nand, > int page, int raw) > { > @@ -674,6 +771,12 @@ static int meson_nfc_write_page_sub(struct nand_chip= *nand, > NFC_CMD_SCRAMBLER_DISABLE); > } > =20 > + if (!raw) { Why this check? You should instead propagate the oob_required field and check that value I believe. > + ret =3D meson_nfc_write_oob(nand, -1); > + if (ret) > + return ret; > + } > + > cmd =3D nfc->param.chip_select | NFC_CMD_CLE | NAND_CMD_PAGEPROG; > writel(cmd, nfc->reg_base + NFC_REG_CMD); > meson_nfc_queue_rb(nand, PSEC_TO_MSEC(sdr->tPROG_max)); > @@ -834,17 +937,10 @@ static int meson_nfc_read_page_hwecc(struct nand_ch= ip *nand, u8 *buf, > memcpy(buf, meson_chip->data_buf, mtd->writesize); > } > =20 > - return bitflips; > -} > - > -static int meson_nfc_read_oob_raw(struct nand_chip *nand, int page) > -{ > - return meson_nfc_read_page_raw(nand, NULL, 1, page); > -} > + if (oob_required && ret) Unclear why you check ret here? > + meson_nfc_read_oob(nand, -1); > =20 > -static int meson_nfc_read_oob(struct nand_chip *nand, int page) > -{ > - return meson_nfc_read_page_hwecc(nand, NULL, 1, page); > + return bitflips; > } > =20 > static bool meson_nfc_is_buffer_dma_safe(const void *buffer) > @@ -987,12 +1083,16 @@ static int meson_ooblayout_free(struct mtd_info *m= td, int section, > struct mtd_oob_region *oobregion) > { > struct nand_chip *nand =3D mtd_to_nand(mtd); > + u32 oob_bytes =3D meson_nfc_oob_free_bytes(nand); > =20 > if (section >=3D nand->ecc.steps) > return -ERANGE; > =20 > - oobregion->offset =3D section * (2 + nand->ecc.bytes); The first two bytes of OOB are reserved for the bad block markers. This is not related to your controller. > - oobregion->length =3D 2; > + /* Split rest of OOB area (not covered by ECC engine) per each > + * ECC section. This will be OOB data available to user. > + */ > + oobregion->offset =3D (section + nand->ecc.steps) * (2 + nand->ecc.byte= s); This is not possible, see above. > + oobregion->length =3D oob_bytes / nand->ecc.steps; > =20 > return 0; > } > @@ -1220,12 +1320,12 @@ static int meson_nand_attach_chip(struct nand_chi= p *nand) > nand->ecc.engine_type =3D NAND_ECC_ENGINE_TYPE_ON_HOST; > nand->ecc.write_page_raw =3D meson_nfc_write_page_raw; > nand->ecc.write_page =3D meson_nfc_write_page_hwecc; > - nand->ecc.write_oob_raw =3D nand_write_oob_std; > - nand->ecc.write_oob =3D nand_write_oob_std; > =20 > + nand->ecc.write_oob_raw =3D meson_nfc_write_oob; > + nand->ecc.write_oob =3D meson_nfc_write_oob; > nand->ecc.read_page_raw =3D meson_nfc_read_page_raw; > nand->ecc.read_page =3D meson_nfc_read_page_hwecc; > - nand->ecc.read_oob_raw =3D meson_nfc_read_oob_raw; > + nand->ecc.read_oob_raw =3D meson_nfc_read_oob; > nand->ecc.read_oob =3D meson_nfc_read_oob; > =20 > if (nand->options & NAND_BUSWIDTH_16) { Thanks, Miqu=C3=A8l