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 784FDC43217 for ; Thu, 1 Dec 2022 10:55:24 +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=ITtmqcM4uKgHvsJvkVJ6KI4sF6YnMJigSQwphSjPX3g=; b=adlu45Mssq3w/d SHdwn9N4vkBj3eRWPuWUfKyUkwWSdLtJI9/JpDb1CEgiZ+oIx+KXz5kWcYiTvgg4PXp6CA+KAXwVt AiJedgvEjTXPrv1DseJkGwRJwAQJ4r9x9mQ1tTfeo3dy9fvhUU2K6VIPSmRD7cT1xZ9cFdjWiSeqm idaKXpFrQTlZ+hL3aY6ZkubP6i6vSTygAAmvcHfyDFGEmvQ9wvOKKChAWnhFVx4qiMAwuCsr0wy8J TwRV8KEEHd+AXMNwVjFRHd/Xd0EA7lfBlz6xn+Q1phw83SMhnowb7Mf4uSv5tN1++0Vgu8Zi5S5Q7 Eu0hp3W4t7FpvRJNoNeQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0hDa-006s8P-V1; Thu, 01 Dec 2022 10:55:03 +0000 Received: from relay11.mail.gandi.net ([217.70.178.231]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0hDS-006s4z-Tq for linux-mtd@lists.infradead.org; Thu, 01 Dec 2022 10:54:58 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id CFCD3100003; Thu, 1 Dec 2022 10:54:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1669892087; 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=02hjA18QVEzrws8YYfc7EzXrJ3hUE7IIO8H6SeudyZQ=; b=H4Bp/9a5f+rxLwtLBUSWLPHJ4p+109N+T7aDuTKHYBhpBTOJ1IdNt1YYTez5zxNf13F77U EWSaPMut9lU5wjmfa05CpO3REtpjOyp9yJkxDANSVsqeTHTfneoUXDjOFkdEuXebbF8DLd dZS8PzEIWIWKLaefGDTcy7ZjNMZEpNziYeMyBc6hbpxFhApazCjU967KpjmfDacfPMYwRm hnFXx6cQ9VYzfDTbo/vl4woOGGi65BE3n59cZLqZFUuMVJejCM/DNk8xIAlES4q9dIBc4K HuzD92HmIsJdOHmY/NBeHqi9pildXu+2uetQaB7l5K42HB0ZBpiIiqTrVdVkZg== Date: Thu, 1 Dec 2022 11:54:40 +0100 From: Miquel Raynal To: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Pratyush Yadav , Michael Walle , Cc: Julien Su , Jaime Liao , Thomas Petazzoni Subject: Re: [PATCH v2 8/9] mtd: spi-nor: Enhance locking to support reads while writes Message-ID: <20221201115440.496c8544@xps-13> In-Reply-To: <20221110155513.819798-9-miquel.raynal@bootlin.com> References: <20221110155513.819798-1-miquel.raynal@bootlin.com> <20221110155513.819798-9-miquel.raynal@bootlin.com> 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-20221201_025455_408785_01186D88 X-CRM114-Status: GOOD ( 43.46 ) 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 SGVsbG8sCgptaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tIHdyb3RlIG9uIFRodSwgMTAgTm92IDIw MjIgMTY6NTU6MTIgKzAxMDA6Cgo+IE9uIGRldmljZXMgZmVhdHVyaW5nIHNldmVyYWwgYmFua3Ms IHRoZSBSZWFkIFdoaWxlIFdyaXRlIChSV1cpIGZlYXR1cmUKPiBpcyBoZXJlIHRvIGltcHJvdmUg dGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugd2hlbiBwZXJmb3JtaW5nIHBhcmFsbGVsCj4gcmVhZHMg YW5kIHdyaXRlcyBhdCBkaWZmZXJlbnQgbG9jYXRpb25zIChkaWZmZXJlbnQgYmFua3MpLiBUaGUg Zm9sbG93aW5nCj4gY29uc3RyYWludHMgaGF2ZSB0byBiZSB0YWtlbiBpbnRvIGFjY291bnQ6Cj4g MSM6IEEgc2luZ2xlIG9wZXJhdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGEgZ2l2ZW4gYmFuay4K PiAyIzogT25seSBhIHNpbmdsZSBwcm9ncmFtIG9yIGVyYXNlIG9wZXJhdGlvbiBjYW4gaGFwcGVu IG9uIHRoZSBlbnRpcmUgY2hpcC4KPiAzIzogVGhlIEkvTyBidXMgaXMgdW5pcXVlIGFuZCB0aHVz IGlzIHRoZSBtb3N0IGNvbnN0cmFpbmVkIHJlc291cmNlLCBhbGwKPiAgICAgc3BpLW5vciBvcGVy YXRpb25zIHJlcXVpcmluZyBhY2Nlc3MgdG8gdGhlIHNwaSBidXMgKHRocm91Z2ggdGhlIHNwaQo+ ICAgICBjb250cm9sbGVyKSBtdXN0IGJlIHNlcmlhbGl6ZWQgdW50aWwgdGhlIGJ1cyBleGNoYW5n ZXMgYXJlIG92ZXIuIFNvCj4gICAgIHdlIG11c3QgZW5zdXJlIGEgc2luZ2xlIG9wZXJhdGlvbiBj YW4gYmUgInNlbnQiIGF0IGEgdGltZS4KPiA0IzogQW55IG90aGVyIG9wZXJhdGlvbiB0aGF0IHdv dWxkIG5vdCBiZSBlaXRoZXIgYSByZWFkIG9yIGEgd3JpdGUgb3IgYW4KPiAgICAgZXJhc2UgaXMg Y29uc2lkZXJlZCByZXF1aXJpbmcgYWNjZXNzIHRvIHRoZSBmdWxsIGNoaXAgYW5kIGNhbm5vdCBi ZQo+ICAgICBwYXJhbGxlbGl6ZWQsIHdlIHRoZW4gbmVlZCB0byBlbnN1cmUgdGhlIGZ1bGwgY2hp cCBpcyBpbiB0aGUgaWRsZQo+ICAgICBzdGF0ZSB3aGVuIHRoaXMgb2NjdXJzLgo+IAo+IEFsbCB0 aGVzZSBjb25zdHJhaW50cyBjYW4gZWFzaWx5IGJlIG1hbmFnZWQgd2l0aCBhIHByb3BlciBsb2Nr aW5nIG1vZGVsOgo+IDEjOiBJcyBwcm90ZWN0ZWQgYnkgYSBwZXItYmFuayBtdXRleC4gT25seSBh IHNpbmdsZSBvcGVyYXRpb24gY2FuIGhhcHBlbgo+ICAgICBpbiBhIHNwZWNpZmljIGJhbmsgYXQg YW55IHRpbWVzLiBJZiB0aGUgYmFuayBtdXRleCBpcyBub3QgYXZhaWxhYmxlLAo+ICAgICB0aGUg b3BlcmF0aW9uIGNhbm5vdCBzdGFydC4KCkkganVzdCBkaXNjb3ZlcmVkIGFuZCBmaXhlZCBhIGJ1 ZyBpbiB0aGlzIHZlcnNpb24gcmVsYXRlZCB0byB0aGUgZXJhc2UKcGF0aCwgdGhlIGluZGV4ZXMg KGF0L2xlbikgbWF5IGluIHNvbWUgY2FzZXMgYmUgdXBkYXRlZCBieSB0aGUKZnVuY3Rpb24sIGxl YWRpbmcgdG8gdGhlIGxvY2tzIG5vdCBiZWluZyByZWxlYXNlZCBhcyBleHBlY3RlZC4gSSBqdXN0 CmRpc2NvdmVyZWQgdGhhdCB3aGlsZSBwbGF5aW5nIHdpdGggVUJJLiBJIHdpbGwgc29vbiBwcm92 aWRlIGEgdjMgd2l0aAp0aGlzIGZpeGVkIChJIGFtIHRlc3Rpbmcgbm93IHdpdGggaW9fcGFyYWwg d2hpY2ggc2VlbXMgaGFwcHkpLgoKVGhhbmtzLApNaXF1w6hsCgo+IDIjOiBJcyBoYW5kbGVkIGJ5 IHRoZSBwZV9tb2RlIG11dGV4IHdoaWNoIGlzIGFjcXVpcmVkIGJlZm9yZSBhbnkgd3JpdGUKPiAg ICAgb3IgZXJhc2UsIGFuZCBpcyByZWxlYXNlZCBvbmx5IGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUK PiAgICAgb3BlcmF0aW9uLiBUaGlzIHdheSwgbm8gb3RoZXIgZGVzdHJ1Y3RpdmUgb3BlcmF0aW9u IG9uIHRoZSBjaGlwIGNhbgo+ICAgICBzdGFydCBkdXJpbmcgdGhpcyB0aW1lIGZyYW1lLgo+IDMj OiBBIGRldmljZS13aWRlIG11dGV4IGlzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8gY2FwdHVyZSBh bmQgc2VyaWFsaXplCj4gICAgIGJ1cyBhY2Nlc3NlZC4gVGhpcyBpcyB0aGUgb25lIGJlaW5nIHJl bGVhc2VkICJzb29uZXIiIHRoYW4gYmVmb3JlLAo+ICAgICBiZWNhdXNlIHdlIG9ubHkgbmVlZCB0 byBwcm90ZWN0IHRoZSBjaGlwIGFnYWluc3Qgb3RoZXIgU1BJIGFjY2Vzc2VzCj4gICAgIGR1cmlu ZyB0aGUgSS9PIHBoYXNlLCB3aGljaCBmb3IgdGhlIGRlc3RydWN0aXZlIG9wZXJhdGlvbnMgaXMg dGhlCj4gICAgIGJlZ2lubmluZyBvZiB0aGUgb3BlcmF0aW9uICh3aGVuIHdlIHNlbmQgdGhlIGNv bW1hbmQgY3ljbGVzIGFuZAo+ICAgICBldmVudHVhbGx5IHRoZSBkYXRhKSwgd2hpbGUgdGhlIHNl Y29uZCBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gKHRoZQo+ICAgICBlcmFzZSBkZWxheSBvciB0aGUg cHJvZ3JhbW1hdGlvbiBkZWxheSkgaXMgd2hlbiB3ZSBjYW4gZG8gc29tZXRoaW5nCj4gICAgIGVs c2Ugd2l0aCBhbm90aGVyIGJhbmsuCj4gNCM6IElzIGhhbmRsZWQgYnkgdGhlICJnZW5lcmljIiBo ZWxwZXJzIHdoaWNoIGV4aXN0ZWQgYmVmb3JlLCB3aGVyZQo+ICAgICBiYXNpY2FsbHkgYWxsIHRo ZSBsb2NrcyBhcmUgdGFrZW4gYmVmb3JlIHRoZSBvcGVyYXRpb24gY2FuIHN0YXJ0LAo+ICAgICBh bmQgYWxsIGxvY2tzIGFyZSByZWxlYXNlZCBvbmNlIGRvbmUuCj4gCj4gQXMgbWFueSBkZXZpY2Vz IHN0aWxsIGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZSwgdGhlIG9yaWdpbmFsIGxvY2sgaXMK PiBhbHNvIGtlcHQgaW4gYSB1bmlvbjogZWl0aGVyIHRoZSBmZWF0dXJlIGlzIGF2YWlsYWJsZSBh bmQgd2UgaW5pdGlhbGl6ZQo+IGFuZCB1c2UgdGhlIG5ldyBsb2Nrcywgb3IgaXQgaXMgbm90IGFu ZCB3ZSBrZWVwIHVzaW5nIHRoZSBwcmV2aW91cwo+IGxvZ2ljLgo+IAo+IFNpZ25lZC1vZmYtYnk6 IE1pcXVlbCBSYXluYWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvbXRkL3NwaS1ub3IvY29yZS5jICB8IDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0KPiAgaW5jbHVkZS9saW51eC9tdGQvc3BpLW5vci5oIHwgIDEyICsrLQo+ICAyIGZp bGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMgYi9kcml2ZXJzL210ZC9zcGktbm9y L2NvcmUuYwo+IGluZGV4IGRmZGEzNTBkNTA1Ni4uYjQ2N2Q1YmYwZjJhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvbXRkL3NwaS1ub3IvY29yZS5jCj4gKysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9j b3JlLmMKPiBAQCAtMTA4Niw2ICsxMDg2LDYxIEBAIHN0YXRpYyB2b2lkIHNwaV9ub3JfdW5wcmVw KHN0cnVjdCBzcGlfbm9yICpub3IpCj4gIAkJbm9yLT5jb250cm9sbGVyX29wcy0+dW5wcmVwYXJl KG5vcik7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIHNwaV9ub3JfcGFyYWxsZWxfbG9ja2luZyhz dHJ1Y3Qgc3BpX25vciAqbm9yKQo+ICt7Cj4gKwlyZXR1cm4gbm9yLT5pbmZvLT5uX2JhbmtzID4g MSAmJiBub3ItPmluZm8tPm5vX3NmZHBfZmxhZ3MgJiBTUElfTk9SX1JXVzsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgc3BpX25vcl9sb2NrX2FsbF9iYW5rcyhzdHJ1Y3Qgc3BpX25vciAqbm9yKQo+ ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbm9yLT5pbmZvLT5uX2Jhbmtz OyBpKyspCj4gKwkJbXV0ZXhfbG9jaygmbm9yLT5sb2Nrcy5iYW5rW2ldKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgc3BpX25vcl91bmxvY2tfYWxsX2JhbmtzKHN0cnVjdCBzcGlfbm9yICpub3Ip Cj4gK3sKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IG5vci0+aW5mby0+bl9iYW5rczsgaSA+ PSAwOyBpLS0pCj4gKwkJbXV0ZXhfdW5sb2NrKCZub3ItPmxvY2tzLmJhbmtbaV0pOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBzcGlfbm9yX2xvY2tfYmFua3Moc3RydWN0IHNwaV9ub3IgKm5vciwg bG9mZl90IHN0YXJ0LCBzaXplX3QgbGVuKQo+ICt7Cj4gKwlpbnQgZmlyc3QsIGxhc3QsIGk7Cj4g Kwo+ICsJZmlyc3QgPSBESVZfUk9VTkRfRE9XTl9VTEwoc3RhcnQsIG5vci0+cGFyYW1zLT5iYW5r X3NpemUpOwo+ICsJbGFzdCA9IERJVl9ST1VORF9ET1dOX1VMTChzdGFydCArIGxlbiAtIDEsIG5v ci0+cGFyYW1zLT5iYW5rX3NpemUpOwo+ICsKPiArCWZvciAoaSA9IGZpcnN0OyBpIDw9IGxhc3Q7 IGkrKykKPiArCQltdXRleF9sb2NrKCZub3ItPmxvY2tzLmJhbmtbaV0pOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBzcGlfbm9yX3VubG9ja19iYW5rcyhzdHJ1Y3Qgc3BpX25vciAqbm9yLCBsb2Zm X3Qgc3RhcnQsIHNpemVfdCBsZW4pCj4gK3sKPiArCWludCBmaXJzdCwgbGFzdCwgaTsKPiArCj4g KwlmaXJzdCA9IERJVl9ST1VORF9ET1dOX1VMTChzdGFydCwgbm9yLT5wYXJhbXMtPmJhbmtfc2l6 ZSk7Cj4gKwlsYXN0ID0gRElWX1JPVU5EX0RPV05fVUxMKHN0YXJ0ICsgbGVuIC0gMSwgbm9yLT5w YXJhbXMtPmJhbmtfc2l6ZSk7Cj4gKwo+ICsJZm9yIChpID0gbGFzdDsgaSA+PSBmaXJzdDsgaS0t KQo+ICsJCW11dGV4X3VubG9jaygmbm9yLT5sb2Nrcy5iYW5rW2ldKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgc3BpX25vcl9sb2NrX2RldmljZShzdHJ1Y3Qgc3BpX25vciAqbm9yKQo+ICt7Cj4g KwlpZiAoc3BpX25vcl9wYXJhbGxlbF9sb2NraW5nKG5vcikpCj4gKwkJbXV0ZXhfbG9jaygmbm9y LT5sb2Nrcy5kZXZpY2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzcGlfbm9yX3VubG9ja19k ZXZpY2Uoc3RydWN0IHNwaV9ub3IgKm5vcikKPiArewo+ICsJaWYgKHNwaV9ub3JfcGFyYWxsZWxf bG9ja2luZyhub3IpKQo+ICsJCW11dGV4X3VubG9jaygmbm9yLT5sb2Nrcy5kZXZpY2UpOwo+ICt9 Cj4gKwo+ICAvKiBHZW5lcmljIGhlbHBlcnMgZm9yIGludGVybmFsIGxvY2tpbmcgYW5kIHNlcmlh bGl6YXRpb24gKi8KPiAgaW50IHNwaV9ub3JfbG9ja19hbmRfcHJlcChzdHJ1Y3Qgc3BpX25vciAq bm9yKQo+ICB7Cj4gQEAgLTEwOTUsMTQgKzExNTAsMjYgQEAgaW50IHNwaV9ub3JfbG9ja19hbmRf cHJlcChzdHJ1Y3Qgc3BpX25vciAqbm9yKQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ ICAKPiAtCW11dGV4X2xvY2soJm5vci0+bG9jayk7Cj4gKwlpZiAoIXNwaV9ub3JfcGFyYWxsZWxf bG9ja2luZyhub3IpKSB7Cj4gKwkJbXV0ZXhfbG9jaygmbm9yLT5sb2NrKTsKPiArCX0gZWxzZSB7 Cj4gKwkJc3BpX25vcl9sb2NrX2FsbF9iYW5rcyhub3IpOwo+ICsJCW11dGV4X2xvY2soJm5vci0+ bG9ja3MucGVfbW9kZSk7Cj4gKwkJbXV0ZXhfbG9jaygmbm9yLT5sb2Nrcy5kZXZpY2UpOwo+ICsJ fQo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICB2b2lkIHNwaV9ub3JfdW5sb2NrX2FuZF91 bnByZXAoc3RydWN0IHNwaV9ub3IgKm5vcikKPiAgewo+IC0JbXV0ZXhfdW5sb2NrKCZub3ItPmxv Y2spOwo+ICsJaWYgKCFzcGlfbm9yX3BhcmFsbGVsX2xvY2tpbmcobm9yKSkgewo+ICsJCW11dGV4 X3VubG9jaygmbm9yLT5sb2NrKTsKPiArCX0gZWxzZSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZub3It PmxvY2tzLmRldmljZSk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZub3ItPmxvY2tzLnBlX21vZGUpOwo+ ICsJCXNwaV9ub3JfdW5sb2NrX2FsbF9iYW5rcyhub3IpOwo+ICsJfQo+ICAKPiAgCXNwaV9ub3Jf dW5wcmVwKG5vcik7Cj4gIH0KPiBAQCAtMTExNiwxNCArMTE4MywyNCBAQCBzdGF0aWMgaW50IHNw aV9ub3JfbG9ja19hbmRfcHJlcF9wZShzdHJ1Y3Qgc3BpX25vciAqbm9yLCBsb2ZmX3Qgc3RhcnQs IHNpemVfdCBsZQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCW11dGV4X2xv Y2soJm5vci0+bG9jayk7Cj4gKwlpZiAoIXNwaV9ub3JfcGFyYWxsZWxfbG9ja2luZyhub3IpKSB7 Cj4gKwkJbXV0ZXhfbG9jaygmbm9yLT5sb2NrKTsKPiArCX0gZWxzZSB7Cj4gKwkJc3BpX25vcl9s b2NrX2JhbmtzKG5vciwgc3RhcnQsIGxlbik7Cj4gKwkJbXV0ZXhfbG9jaygmbm9yLT5sb2Nrcy5w ZV9tb2RlKTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg c3BpX25vcl91bmxvY2tfYW5kX3VucHJlcF9wZShzdHJ1Y3Qgc3BpX25vciAqbm9yLCBsb2ZmX3Qg c3RhcnQsIHNpemVfdCBsZW4pCj4gIHsKPiAtCW11dGV4X3VubG9jaygmbm9yLT5sb2NrKTsKPiAr CWlmICghc3BpX25vcl9wYXJhbGxlbF9sb2NraW5nKG5vcikpIHsKPiArCQltdXRleF91bmxvY2so Jm5vci0+bG9jayk7Cj4gKwl9IGVsc2Ugewo+ICsJCW11dGV4X3VubG9jaygmbm9yLT5sb2Nrcy5w ZV9tb2RlKTsKPiArCQlzcGlfbm9yX3VubG9ja19iYW5rcyhub3IsIHN0YXJ0LCBsZW4pOwo+ICsJ fQo+ICAKPiAgCXNwaV9ub3JfdW5wcmVwKG5vcik7Cj4gIH0KPiBAQCAtMTEzNywxNCArMTIxNCwy MCBAQCBzdGF0aWMgaW50IHNwaV9ub3JfbG9ja19hbmRfcHJlcF9yZChzdHJ1Y3Qgc3BpX25vciAq bm9yLCBsb2ZmX3Qgc3RhcnQsIHNpemVfdCBsZQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiAtCW11dGV4X2xvY2soJm5vci0+bG9jayk7Cj4gKwlpZiAoIXNwaV9ub3JfcGFyYWxs ZWxfbG9ja2luZyhub3IpKQo+ICsJCW11dGV4X2xvY2soJm5vci0+bG9jayk7Cj4gKwllbHNlCj4g KwkJc3BpX25vcl9sb2NrX2JhbmtzKG5vciwgc3RhcnQsIGxlbik7Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNwaV9ub3JfdW5sb2NrX2FuZF91bnByZXBfcmQoc3Ry dWN0IHNwaV9ub3IgKm5vciwgbG9mZl90IHN0YXJ0LCBzaXplX3QgbGVuKQo+ICB7Cj4gLQltdXRl eF91bmxvY2soJm5vci0+bG9jayk7Cj4gKwlpZiAoIXNwaV9ub3JfcGFyYWxsZWxfbG9ja2luZyhu b3IpKQo+ICsJCW11dGV4X3VubG9jaygmbm9yLT5sb2NrKTsKPiArCWVsc2UKPiArCQlzcGlfbm9y X3VubG9ja19iYW5rcyhub3IsIHN0YXJ0LCBsZW4pOwo+ICAKPiAgCXNwaV9ub3JfdW5wcmVwKG5v cik7Cj4gIH0KPiBAQCAtMTQ1MSwxMSArMTUzNCwxNiBAQCBzdGF0aWMgaW50IHNwaV9ub3JfZXJh c2VfbXVsdGlfc2VjdG9ycyhzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1NjQgYWRkciwgdTMyIGxlbikK PiAgCQkJZGV2X3ZkYmcobm9yLT5kZXYsICJlcmFzZV9jbWQtPnNpemUgPSAweCUwOHgsIGVyYXNl X2NtZC0+b3Bjb2RlID0gMHglMDJ4LCBlcmFzZV9jbWQtPmNvdW50ID0gJXVcbiIsCj4gIAkJCQkg Y21kLT5zaXplLCBjbWQtPm9wY29kZSwgY21kLT5jb3VudCk7Cj4gIAo+ICsJCQlzcGlfbm9yX2xv Y2tfZGV2aWNlKG5vcik7Cj4gKwo+ICAJCQlyZXQgPSBzcGlfbm9yX3dyaXRlX2VuYWJsZShub3Ip Owo+IC0JCQlpZiAocmV0KQo+ICsJCQlpZiAocmV0KSB7Cj4gKwkJCQlzcGlfbm9yX3VubG9ja19k ZXZpY2Uobm9yKTsKPiAgCQkJCWdvdG8gZGVzdHJveV9lcmFzZV9jbWRfbGlzdDsKPiArCQkJfQo+ ICAKPiAgCQkJcmV0ID0gc3BpX25vcl9lcmFzZV9zZWN0b3Iobm9yLCBhZGRyKTsKPiArCQkJc3Bp X25vcl91bmxvY2tfZGV2aWNlKG5vcik7Cj4gIAkJCWlmIChyZXQpCj4gIAkJCQlnb3RvIGRlc3Ry b3lfZXJhc2VfY21kX2xpc3Q7Cj4gIAo+IEBAIC0xNTA4LDExICsxNTk2LDE2IEBAIHN0YXRpYyBp bnQgc3BpX25vcl9lcmFzZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IGVyYXNlX2luZm8g Kmluc3RyKQo+ICAJaWYgKGxlbiA9PSBtdGQtPnNpemUgJiYgIShub3ItPmZsYWdzICYgU05PUl9G X05PX09QX0NISVBfRVJBU0UpKSB7Cj4gIAkJdW5zaWduZWQgbG9uZyB0aW1lb3V0Owo+ICAKPiAr CQlzcGlfbm9yX2xvY2tfZGV2aWNlKG5vcik7Cj4gKwo+ICAJCXJldCA9IHNwaV9ub3Jfd3JpdGVf ZW5hYmxlKG5vcik7Cj4gLQkJaWYgKHJldCkKPiArCQlpZiAocmV0KSB7Cj4gKwkJCXNwaV9ub3Jf dW5sb2NrX2RldmljZShub3IpOwo+ICAJCQlnb3RvIGVyYXNlX2VycjsKPiArCQl9Cj4gIAo+ICAJ CXJldCA9IHNwaV9ub3JfZXJhc2VfY2hpcChub3IpOwo+ICsJCXNwaV9ub3JfdW5sb2NrX2Rldmlj ZShub3IpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZXJhc2VfZXJyOwo+ICAKPiBAQCAtMTUz NywxMSArMTYzMCwxNiBAQCBzdGF0aWMgaW50IHNwaV9ub3JfZXJhc2Uoc3RydWN0IG10ZF9pbmZv ICptdGQsIHN0cnVjdCBlcmFzZV9pbmZvICppbnN0cikKPiAgCS8qICJzZWN0b3IiLWF0LWEtdGlt ZSBlcmFzZSAqLwo+ICAJfSBlbHNlIGlmIChzcGlfbm9yX2hhc191bmlmb3JtX2VyYXNlKG5vcikp IHsKPiAgCQl3aGlsZSAobGVuKSB7Cj4gKwkJCXNwaV9ub3JfbG9ja19kZXZpY2Uobm9yKTsKPiAr Cj4gIAkJCXJldCA9IHNwaV9ub3Jfd3JpdGVfZW5hYmxlKG5vcik7Cj4gLQkJCWlmIChyZXQpCj4g KwkJCWlmIChyZXQpIHsKPiArCQkJCXNwaV9ub3JfdW5sb2NrX2RldmljZShub3IpOwo+ICAJCQkJ Z290byBlcmFzZV9lcnI7Cj4gKwkJCX0KPiAgCj4gIAkJCXJldCA9IHNwaV9ub3JfZXJhc2Vfc2Vj dG9yKG5vciwgYWRkcik7Cj4gKwkJCXNwaV9ub3JfdW5sb2NrX2RldmljZShub3IpOwo+ICAJCQlp ZiAocmV0KQo+ICAJCQkJZ290byBlcmFzZV9lcnI7Cj4gIAo+IEBAIC0xNzMzLDExICsxODMxLDEz IEBAIHN0YXRpYyBpbnQgc3BpX25vcl9yZWFkKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3Qg ZnJvbSwgc2l6ZV90IGxlbiwKPiAgCQkJc2l6ZV90ICpyZXRsZW4sIHVfY2hhciAqYnVmKQo+ICB7 Cj4gIAlzdHJ1Y3Qgc3BpX25vciAqbm9yID0gbXRkX3RvX3NwaV9ub3IobXRkKTsKPiArCWxvZmZf dCBmcm9tX2xvY2sgPSBmcm9tOwo+ICsJc2l6ZV90IGxlbl9sb2NrID0gbGVuOwo+ICAJc3NpemVf dCByZXQ7Cj4gIAo+ICAJZGV2X2RiZyhub3ItPmRldiwgImZyb20gMHglMDh4LCBsZW4gJXpkXG4i LCAodTMyKWZyb20sIGxlbik7Cj4gIAo+IC0JcmV0ID0gc3BpX25vcl9sb2NrX2FuZF9wcmVwX3Jk KG5vciwgZnJvbSwgbGVuKTsKPiArCXJldCA9IHNwaV9ub3JfbG9ja19hbmRfcHJlcF9yZChub3Is IGZyb21fbG9jaywgbGVuX2xvY2spOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAK PiBAQCAtMTc0Niw3ICsxODQ2LDkgQEAgc3RhdGljIGludCBzcGlfbm9yX3JlYWQoc3RydWN0IG10 ZF9pbmZvICptdGQsIGxvZmZfdCBmcm9tLCBzaXplX3QgbGVuLAo+ICAKPiAgCQlhZGRyID0gc3Bp X25vcl9jb252ZXJ0X2FkZHIobm9yLCBhZGRyKTsKPiAgCj4gKwkJc3BpX25vcl9sb2NrX2Rldmlj ZShub3IpOwo+ICAJCXJldCA9IHNwaV9ub3JfcmVhZF9kYXRhKG5vciwgYWRkciwgbGVuLCBidWYp Owo+ICsJCXNwaV9ub3JfdW5sb2NrX2RldmljZShub3IpOwo+ICAJCWlmIChyZXQgPT0gMCkgewo+ ICAJCQkvKiBXZSBzaG91bGRuJ3Qgc2VlIDAtbGVuZ3RoIHJlYWRzICovCj4gIAkJCXJldCA9IC1F SU87Cj4gQEAgLTE3NjQsNyArMTg2Niw3IEBAIHN0YXRpYyBpbnQgc3BpX25vcl9yZWFkKHN0cnVj dCBtdGRfaW5mbyAqbXRkLCBsb2ZmX3QgZnJvbSwgc2l6ZV90IGxlbiwKPiAgCXJldCA9IDA7Cj4g IAo+ICByZWFkX2VycjoKPiAtCXNwaV9ub3JfdW5sb2NrX2FuZF91bnByZXBfcmQobm9yLCBmcm9t LCBsZW4pOwo+ICsJc3BpX25vcl91bmxvY2tfYW5kX3VucHJlcF9yZChub3IsIGZyb21fbG9jaywg bGVuX2xvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMTgwOSwxMSArMTkxMSwx NiBAQCBzdGF0aWMgaW50IHNwaV9ub3Jfd3JpdGUoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZf dCB0bywgc2l6ZV90IGxlbiwKPiAgCj4gIAkJYWRkciA9IHNwaV9ub3JfY29udmVydF9hZGRyKG5v ciwgYWRkcik7Cj4gIAo+ICsJCXNwaV9ub3JfbG9ja19kZXZpY2Uobm9yKTsKPiArCj4gIAkJcmV0 ID0gc3BpX25vcl93cml0ZV9lbmFibGUobm9yKTsKPiAtCQlpZiAocmV0KQo+ICsJCWlmIChyZXQp IHsKPiArCQkJc3BpX25vcl91bmxvY2tfZGV2aWNlKG5vcik7Cj4gIAkJCWdvdG8gd3JpdGVfZXJy Owo+ICsJCX0KPiAgCj4gIAkJcmV0ID0gc3BpX25vcl93cml0ZV9kYXRhKG5vciwgYWRkciwgcGFn ZV9yZW1haW4sIGJ1ZiArIGkpOwo+ICsJCXNwaV9ub3JfdW5sb2NrX2RldmljZShub3IpOwo+ICAJ CWlmIChyZXQgPCAwKQo+ICAJCQlnb3RvIHdyaXRlX2VycjsKPiAgCQl3cml0dGVuID0gcmV0Owo+ IEBAIC0zMDMwLDcgKzMxMzcsMTkgQEAgaW50IHNwaV9ub3Jfc2NhbihzdHJ1Y3Qgc3BpX25vciAq bm9yLCBjb25zdCBjaGFyICpuYW1lLAo+ICAKPiAgCW5vci0+aW5mbyA9IGluZm87Cj4gIAo+IC0J bXV0ZXhfaW5pdCgmbm9yLT5sb2NrKTsKPiArCWlmICghc3BpX25vcl9wYXJhbGxlbF9sb2NraW5n KG5vcikpIHsKPiArCQltdXRleF9pbml0KCZub3ItPmxvY2spOwo+ICsJfSBlbHNlIHsKPiArCQlt dXRleF9pbml0KCZub3ItPmxvY2tzLmRldmljZSk7Cj4gKwkJbXV0ZXhfaW5pdCgmbm9yLT5sb2Nr cy5wZV9tb2RlKTsKPiArCQlub3ItPmxvY2tzLmJhbmsgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qg bXV0ZXgpICogbm9yLT5pbmZvLT5uX2JhbmtzLAo+ICsJCQkJCSAgR0ZQX0tFUk5FTCk7Cj4gKwkJ aWYgKCFub3ItPmxvY2tzLmJhbmspCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQlmb3Ig KGkgPSAwOyBpIDwgbm9yLT5pbmZvLT5uX2JhbmtzOyBpKyspCj4gKwkJCW11dGV4X2luaXQoJm5v ci0+bG9ja3MuYmFua1tpXSk7Cj4gKwl9Cj4gIAo+ICAJLyogSW5pdCBmbGFzaCBwYXJhbWV0ZXJz IGJhc2VkIG9uIGZsYXNoX2luZm8gc3RydWN0IGFuZCBTRkRQICovCj4gIAlyZXQgPSBzcGlfbm9y X2luaXRfcGFyYW1zKG5vcik7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3NwaS1u b3IuaCBiL2luY2x1ZGUvbGludXgvbXRkL3NwaS1ub3IuaAo+IGluZGV4IDQyMjE4YTExNjRmNi4u MDJjOWEzY2Y5MjRlIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvbXRkL3NwaS1ub3IuaAo+ ICsrKyBiL2luY2x1ZGUvbGludXgvbXRkL3NwaS1ub3IuaAo+IEBAIC0zNDQsNiArMzQ0LDkgQEAg c3RydWN0IHNwaV9ub3JfZmxhc2hfcGFyYW1ldGVyOwo+ICAgKiBzdHJ1Y3Qgc3BpX25vciAtIFN0 cnVjdHVyZSBmb3IgZGVmaW5pbmcgdGhlIFNQSSBOT1IgbGF5ZXIKPiAgICogQG10ZDoJCWFuIG10 ZF9pbmZvIHN0cnVjdHVyZQo+ICAgKiBAbG9jazoJCXRoZSBsb2NrIGZvciB0aGUgcmVhZC93cml0 ZS9lcmFzZS9sb2NrL3VubG9jayBvcGVyYXRpb25zCj4gKyAqIEBsb2Nrcy5kZXZpY2U6CXRoZSBs b2NrIGZvciB0aGUgSS9PIGJ1cwo+ICsgKiBAbG9ja3MucGVfbW9kZToJdGhlIGxvY2sgZm9yIHRo ZSBwcm9ncmFtL2VyYXNlIG1vZGUgZm9yIFJXVyBvcGVyYXRpb25zCj4gKyAqIEBsb2Nrcy5iYW5r OgkJdGhlIGxvY2sgZm9yIGV2ZXJ5IGF2YWlsYWJsZSBiYW5rCj4gICAqIEBkZXY6CQlwb2ludGVy IHRvIGFuIFNQSSBkZXZpY2Ugb3IgYW4gU1BJIE5PUiBjb250cm9sbGVyIGRldmljZQo+ICAgKiBA c3BpbWVtOgkJcG9pbnRlciB0byB0aGUgU1BJIG1lbW9yeSBkZXZpY2UKPiAgICogQGJvdW5jZWJ1 ZjoJCWJvdW5jZSBidWZmZXIgdXNlZCB3aGVuIHRoZSBidWZmZXIgcGFzc2VkIGJ5IHRoZSBNVEQK PiBAQCAtMzc0LDcgKzM3NywxNCBAQCBzdHJ1Y3Qgc3BpX25vcl9mbGFzaF9wYXJhbWV0ZXI7Cj4g ICAqLwo+ICBzdHJ1Y3Qgc3BpX25vciB7Cj4gIAlzdHJ1Y3QgbXRkX2luZm8JCW10ZDsKPiAtCXN0 cnVjdCBtdXRleAkJbG9jazsKPiArCXVuaW9uIHsKPiArCQlzdHJ1Y3QgbXV0ZXgJbG9jazsKPiAr CQlzdHJ1Y3Qgewo+ICsJCQlzdHJ1Y3QgbXV0ZXggZGV2aWNlOwo+ICsJCQlzdHJ1Y3QgbXV0ZXgg cGVfbW9kZTsKPiArCQkJc3RydWN0IG11dGV4ICpiYW5rOwo+ICsJCX0gbG9ja3M7Cj4gKwl9Owo+ ICAJc3RydWN0IGRldmljZQkJKmRldjsKPiAgCXN0cnVjdCBzcGlfbWVtCQkqc3BpbWVtOwo+ICAJ dTgJCQkqYm91bmNlYnVmOwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==