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 C5D76C433F5 for ; Thu, 16 Dec 2021 08:35: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:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qBa+G6AgolqyPsNUuIlRmSxEDSRjFK6Sn+yWSBPBzMc=; b=FOpSmUX5eqjjRc mXjP0I4drQq2eCvaZ6bGY4h40OYDSjFT9mcUwK9uyPFQgqpSgkla7AvlNxPypRfYKiBpnprkVzpv5 g4/o1MxwPlUJh+1JLyuAgk98rIec3kB/PrG8+a8AiUJs2mqGA0f2dYRP/oox+jWTinArmpL7ZNJJj sOtFfMNv3zYs36aVk4vVJscdaV0X+RronEfq+/0/cp4qTJBecDm/3WavmH2nPZSOdbZ3yxQo4OcX1 znSbLFRNTEkNRSOAjCqSBdMB0ZM+w3lvMbORFWqkmDPxshRAZ42Rasm99gkNOujxNYafqSxWuySCU 51F9ciHwcBBL0siOQJ+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxmDx-00489Q-Sp; Thu, 16 Dec 2021 08:34:49 +0000 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxmDg-00482X-WE for linux-mtd@lists.infradead.org; Thu, 16 Dec 2021 08:34:34 +0000 Received: by mail-lf1-x136.google.com with SMTP id d10so48225270lfg.6 for ; Thu, 16 Dec 2021 00:34:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kempniu.pl; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OQEpf9YSE4WlXym+m2bXKtZ6xH4+6+evZLHUlWSG5Zg=; b=oQxjJXxt/5X2CkAbL1i1WKLq+hOKSCHRf8sv2aSr3ZWG2B0l4fJHH66K8+5/9PXeGE r0IN+naKq8jRMjh56xVkkDQmxfOtkaceuGRlshESBZrKGjt7cxE0gkbt7xKYqm/NrJcj lwWDbwMw8WAow0tXSYL8mRjVDmxGMhYZPs6q4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OQEpf9YSE4WlXym+m2bXKtZ6xH4+6+evZLHUlWSG5Zg=; b=s091AR/IFd0cWrT0ZonRpAIXL8/Mz/a+b9nI528IPyHHqvlFqgLeb9g2RtDWcjIFKG ppuALGJwE59VYh9xmzpItaVFR6+xXJVNO9p2rnkEwSkS2qVhVsmdessA4FlPdksGlp0q +X+ejo0XU2GvTPReP65PWW8NL7aT0CWw0UUXqgQi2JoXgLTnKzG6RU4h7/kVuK5snr2E bRkbPwRp9KdbgiNOz9hL+LbOo8f26PMf8feV6dtGXhMUhJc9Y3vBGQVWL2q6KJcu17nw CMcE5mHaY/gFmAU54tl5/GmDWMmufksQyyyXJhz7H9S29mffskGuPsPMDpvUQjieoACM H9Cg== X-Gm-Message-State: AOAM530fhqyrhUEWnMT5pHWnNupKDX3ifZbPugLD96rqbBBbWzGyD9Xp YpdHy7Uckh4GJPRUh3gz6H8MzQ== X-Google-Smtp-Source: ABdhPJx0Yh8n5gvriK4hezyJX/u2/VXOTMK0LrA4Tj19OncSBwa4XidqFBfZP6E4Ilh4j3/5KnrmHg== X-Received: by 2002:a19:490f:: with SMTP id w15mr3081878lfa.278.1639643671247; Thu, 16 Dec 2021 00:34:31 -0800 (PST) Received: from larwa.hq.kempniu.pl ([2001:470:64df:111::e02]) by smtp.gmail.com with ESMTPSA id c2sm985679ljf.50.2021.12.16.00.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 00:34:30 -0800 (PST) From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: Boris Brezillon , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/5] mtdchar: add MEMREAD ioctl Date: Thu, 16 Dec 2021 09:34:14 +0100 Message-Id: <20211216083418.13512-2-kernel@kempniu.pl> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216083418.13512-1-kernel@kempniu.pl> References: <20211216083418.13512-1-kernel@kempniu.pl> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211216_003433_073464_0907B5CA X-CRM114-Status: GOOD ( 32.22 ) 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 VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgbWFraW5nIHVzZSBvZiBNVEQgZGV2aWNlcyB2aWEgL2Rl di9tdGQqCmNoYXJhY3RlciBkZXZpY2VzIGN1cnJlbnRseSBoYXZlIGxpbWl0ZWQgY2FwYWJpbGl0 aWVzIGZvciByZWFkaW5nIGRhdGE6CgogIC0gb25seSBkZXByZWNhdGVkIG1ldGhvZHMgb2YgYWNj ZXNzaW5nIE9PQiBsYXlvdXQgaW5mb3JtYXRpb24gZXhpc3QsCgogIC0gdGhlcmUgaXMgbm8gd2F5 IHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBNVEQgb3BlcmF0aW9uIG1vZGUgdG8gdXNlOyBpdAogICAg aXMgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgTVREIGZpbGUgbW9kZSAoTVREX0ZJTEVfTU9E RV8qKSBzZXQKICAgIGZvciB0aGUgY2hhcmFjdGVyIGRldmljZTsgaW4gcGFydGljdWxhciwgdGhp cyBwcmV2ZW50cyB1c2luZwogICAgTVREX09QU19BVVRPX09PQiBmb3IgcmVhZHMsCgogIC0gYWxs IGV4aXN0aW5nIHVzZXItc3BhY2UgaW50ZXJmYWNlcyB3aGljaCBjYXVzZSBtdGRfcmVhZCgpIG9y CiAgICBtdGRfcmVhZF9vb2IoKSB0byBiZSBjYWxsZWQgKHZpYSBtdGRjaGFyX3JlYWQoKSBhbmQK ICAgIG10ZGNoYXJfcmVhZF9vb2IoKSwgcmVzcGVjdGl2ZWx5KSByZXR1cm4gc3VjY2VzcyBldmVu IHdoZW4gdGhvc2UKICAgIGZ1bmN0aW9ucyByZXR1cm4gLUVVQ0xFQU4gb3IgLUVCQURNU0c7IHRo aXMgcmVuZGVycyB1c2VyLXNwYWNlCiAgICBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlc2UgaW50ZXJm YWNlcyB1bmF3YXJlIG9mIGFueSBjb3JyZWN0ZWQKICAgIGJpdGZsaXBzIG9yIHVuY29ycmVjdGFi bGUgRUNDIGVycm9ycyBkZXRlY3RlZCBkdXJpbmcgcmVhZHMuCgpOb3RlIHRoYXQgdGhlIGV4aXN0 aW5nIE1FTVdSSVRFIGlvY3RsIGFsbG93cyB0aGUgTVREIG9wZXJhdGlvbiBtb2RlIHRvCmJlIGV4 cGxpY2l0bHkgc2V0LCBhbGxvd2luZyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byB3cml0ZSBw YWdlIGRhdGEKYW5kIE9PQiBkYXRhIHdpdGhvdXQgcmVxdWlyaW5nIHRoZW0gdG8ga25vdyBhbnl0 aGluZyBhYm91dCB0aGUgT09CCmxheW91dCBvZiB0aGUgTVREIGRldmljZSB0aGV5IGFyZSB3cml0 aW5nIHRvIChNVERfT1BTX0FVVE9fT09CKS4gIEFsc28sCnRoZSBNRU1XUklURSBpb2N0bCBkb2Vz IG5vdCBtYW5nbGUgdGhlIHJldHVybiB2YWx1ZSBvZiBtdGRfd3JpdGVfb29iKCkuCgpBZGQgYSBu ZXcgaW9jdGwsIE1FTVJFQUQsIHdoaWNoIGFkZHJlc3NlcyB0aGUgYWJvdmUgaXNzdWVzLiAgSXQg aXMKaW50ZW5kZWQgdG8gYmUgYSByZWFkLXNpZGUgY291bnRlcnBhcnQgb2YgdGhlIGV4aXN0aW5n IE1FTVdSSVRFIGlvY3RsLgpTaW1pbGFybHkgdG8gdGhlIGxhdHRlciwgdGhlIHJlYWQgb3BlcmF0 aW9uIGlzIHBlcmZvcm1lZCBpbiBhIGxvb3Agd2hpY2gKcHJvY2Vzc2VzIGF0IG1vc3QgbXRkLT5l cmFzZXNpemUgYnl0ZXMgaW4gZWFjaCBpdGVyYXRpb24uICBUaGlzIGlzIGRvbmUKdG8gcHJldmVu dCB1bmJvdW5kZWQgbWVtb3J5IGFsbG9jYXRpb25zIGNhdXNlZCBieSBjYWxsaW5nIGttYWxsb2Mo KSB3aXRoCnRoZSAnc2l6ZScgYXJndW1lbnQgdGFrZW4gZGlyZWN0bHkgZnJvbSB0aGUgc3RydWN0 IG10ZF9yZWFkX3JlcSBwcm92aWRlZApieSB1c2VyIHNwYWNlLiAgSG93ZXZlciwgdGhlIG5ldyBp b2N0bCBpcyBpbXBsZW1lbnRlZCBzbyB0aGF0IHRoZSB2YWx1ZXMKaXQgcmV0dXJucyBtYXRjaCB0 aG9zZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZCBpZiBqdXN0IGEgc2luZ2xlCm10ZF9y ZWFkX29vYigpIGNhbGwgd2FzIGlzc3VlZCB0byBoYW5kbGUgdGhlIGVudGlyZSByZWFkIG9wZXJh dGlvbiBpbgpvbmUgZ28uCgpVcGRhdGUgaW5jbHVkZS91YXBpL210ZC9tdGQtYWJpLmggYWNjb3Jk aW5nbHkuCgpTdWdnZXN0ZWQtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNv bGxhYm9yYS5jb20+ClNpZ25lZC1vZmYtYnk6IE1pY2hhxYIgS8SZcGllxYQgPGtlcm5lbEBrZW1w bml1LnBsPgotLS0KIGRyaXZlcnMvbXRkL210ZGNoYXIuYyAgICAgIHwgMTEwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9tdGQvbXRkLWFiaS5oIHwg IDQzICsrKysrKysrKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRjaGFyLmMgYi9kcml2 ZXJzL210ZC9tdGRjaGFyLmMKaW5kZXggZDBmOWM0YjAyODVjLi42YWQ1OWM5ZWVkMmYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbXRkL210ZGNoYXIuYworKysgYi9kcml2ZXJzL210ZC9tdGRjaGFyLmMK QEAgLTY4NSw2ICs2ODUsMTA4IEBAIHN0YXRpYyBpbnQgbXRkY2hhcl93cml0ZV9pb2N0bChzdHJ1 Y3QgbXRkX2luZm8gKm10ZCwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IG10ZGNoYXJf cmVhZF9pb2N0bChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwKKwkJc3RydWN0IG10ZF9yZWFkX3JlcSBf X3VzZXIgKmFyZ3ApCit7CisJc3RydWN0IG10ZF9pbmZvICptYXN0ZXIgPSBtdGRfZ2V0X21hc3Rl cihtdGQpOworCXN0cnVjdCBtdGRfcmVhZF9yZXEgcmVxOworCXZvaWQgX191c2VyICp1c3JfZGF0 YSwgKnVzcl9vb2I7CisJdWludDhfdCAqZGF0YnVmID0gTlVMTCwgKm9vYmJ1ZiA9IE5VTEw7CisJ c2l6ZV90IGRhdGJ1Zl9sZW4sIG9vYmJ1Zl9sZW47CisJc2l6ZV90IG9yaWdfbGVuLCBvcmlnX29v YmxlbjsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmcmVxLCBhcmdwLCBz aXplb2YocmVxKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJb3JpZ19sZW4gPSByZXEubGVuOwor CW9yaWdfb29ibGVuID0gcmVxLm9vYmxlbjsKKworCXVzcl9kYXRhID0gKHZvaWQgX191c2VyICop KHVpbnRwdHJfdClyZXEudXNyX2RhdGE7CisJdXNyX29vYiA9ICh2b2lkIF9fdXNlciAqKSh1aW50 cHRyX3QpcmVxLnVzcl9vb2I7CisKKwlpZiAoIW1hc3Rlci0+X3JlYWRfb29iKQorCQlyZXR1cm4g LUVPUE5PVFNVUFA7CisKKwlpZiAoIXVzcl9kYXRhKQorCQlyZXEubGVuID0gMDsKKworCWlmICgh dXNyX29vYikKKwkJcmVxLm9vYmxlbiA9IDA7CisKKwlpZiAocmVxLnN0YXJ0ICsgcmVxLmxlbiA+ IG10ZC0+c2l6ZSkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKKwlkYXRi dWZfbGVuID0gbWluX3Qoc2l6ZV90LCByZXEubGVuLCBtdGQtPmVyYXNlc2l6ZSk7CisJaWYgKGRh dGJ1Zl9sZW4gPiAwKSB7CisJCWRhdGJ1ZiA9IGttYWxsb2MoZGF0YnVmX2xlbiwgR0ZQX0tFUk5F TCk7CisJCWlmICghZGF0YnVmKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBvdXQ7CisJ CX0KKwl9CisKKwlvb2JidWZfbGVuID0gbWluX3Qoc2l6ZV90LCByZXEub29ibGVuLCBtdGQtPmVy YXNlc2l6ZSk7CisJaWYgKG9vYmJ1Zl9sZW4gPiAwKSB7CisJCW9vYmJ1ZiA9IGttYWxsb2Mob29i YnVmX2xlbiwgR0ZQX0tFUk5FTCk7CisJCWlmICghb29iYnVmKSB7CisJCQlyZXQgPSAtRU5PTUVN OworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwl3aGlsZSAocmVxLmxlbiA+IDAgfHwgKCF1c3Jf ZGF0YSAmJiByZXEub29ibGVuID4gMCkpIHsKKwkJc3RydWN0IG10ZF9vb2Jfb3BzIG9wcyA9IHsK KwkJCS5tb2RlID0gcmVxLm1vZGUsCisJCQkubGVuID0gbWluX3Qoc2l6ZV90LCByZXEubGVuLCBk YXRidWZfbGVuKSwKKwkJCS5vb2JsZW4gPSBtaW5fdChzaXplX3QsIHJlcS5vb2JsZW4sIG9vYmJ1 Zl9sZW4pLAorCQkJLmRhdGJ1ZiA9IGRhdGJ1ZiwKKwkJCS5vb2JidWYgPSBvb2JidWYsCisJCX07 CisKKwkJLyoKKwkJICogU2hvcnRlbiBub24tcGFnZS1hbGlnbmVkLCBlcmFzZWJsb2NrLXNpemVk IHJlYWRzIHNvIHRoYXQgdGhlCisJCSAqIHJlYWQgZW5kcyBvbiBhbiBlcmFzZWJsb2NrIGJvdW5k YXJ5LiAgVGhpcyBpcyBuZWNlc3NhcnkgaW4KKwkJICogb3JkZXIgdG8gcHJldmVudCBPT0IgZGF0 YSBmb3Igc29tZSBwYWdlcyBmcm9tIGJlaW5nCisJCSAqIGR1cGxpY2F0ZWQgaW4gdGhlIG91dHB1 dCBvZiBub24tcGFnZS1hbGlnbmVkIHJlYWRzIHJlcXVpcmluZworCQkgKiBtdWx0aXBsZSBtdGRf cmVhZF9vb2IoKSBjYWxscyB0byBiZSBjb21wbGV0ZWQuCisJCSAqLworCQlpZiAob3BzLmxlbiA9 PSBtdGQtPmVyYXNlc2l6ZSkKKwkJCW9wcy5sZW4gLT0gbXRkX21vZF9ieV93cyhyZXEuc3RhcnQg KyBvcHMubGVuLCBtdGQpOworCisJCXJldCA9IG10ZF9yZWFkX29vYihtdGQsIChsb2ZmX3QpcmVx LnN0YXJ0LCAmb3BzKTsKKwkJaWYgKHJldCAmJiAhbXRkX2lzX2JpdGZsaXBfb3JfZWNjZXJyKHJl dCkpCisJCQlicmVhazsKKworCQlpZiAoY29weV90b191c2VyKHVzcl9kYXRhLCBvcHMuZGF0YnVm LCBvcHMucmV0bGVuKSB8fAorCQkgICAgY29weV90b191c2VyKHVzcl9vb2IsIG9wcy5vb2JidWYs IG9wcy5vb2JyZXRsZW4pKSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQkJYnJlYWs7CisJCX0KKwor CQlyZXEuc3RhcnQgKz0gb3BzLnJldGxlbjsKKwkJcmVxLmxlbiAtPSBvcHMucmV0bGVuOworCQl1 c3JfZGF0YSArPSBvcHMucmV0bGVuOworCisJCXJlcS5vb2JsZW4gLT0gb3BzLm9vYnJldGxlbjsK KwkJdXNyX29vYiArPSBvcHMub29icmV0bGVuOworCX0KKworb3V0OgorCXJlcS5sZW4gPSBvcmln X2xlbiAtIHJlcS5sZW47CisJcmVxLm9vYmxlbiA9IG9yaWdfb29ibGVuIC0gcmVxLm9vYmxlbjsK KworCWlmIChjb3B5X3RvX3VzZXIoYXJncCwgJnJlcSwgc2l6ZW9mKHJlcSkpKQorCQlyZXQgPSAt RUZBVUxUOworCisJa2ZyZWUoZGF0YnVmKTsKKwlrZnJlZShvb2JidWYpOworCisJcmV0dXJuIHJl dDsKK30KKwogc3RhdGljIGludCBtdGRjaGFyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1X2lu dCBjbWQsIHVfbG9uZyBhcmcpCiB7CiAJc3RydWN0IG10ZF9maWxlX2luZm8gKm1maSA9IGZpbGUt PnByaXZhdGVfZGF0YTsKQEAgLTcwNyw2ICs4MDksNyBAQCBzdGF0aWMgaW50IG10ZGNoYXJfaW9j dGwoc3RydWN0IGZpbGUgKmZpbGUsIHVfaW50IGNtZCwgdV9sb25nIGFyZykKIAljYXNlIE1FTUdF VElORk86CiAJY2FzZSBNRU1SRUFET09COgogCWNhc2UgTUVNUkVBRE9PQjY0OgorCWNhc2UgTUVN UkVBRDoKIAljYXNlIE1FTUlTTE9DS0VEOgogCWNhc2UgTUVNR0VUT09CU0VMOgogCWNhc2UgTUVN R0VUQkFEQkxPQ0s6CkBAIC04ODEsNiArOTg0LDEzIEBAIHN0YXRpYyBpbnQgbXRkY2hhcl9pb2N0 bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQgY21kLCB1X2xvbmcgYXJnKQogCQlicmVhazsKIAl9 CiAKKwljYXNlIE1FTVJFQUQ6CisJeworCQlyZXQgPSBtdGRjaGFyX3JlYWRfaW9jdGwobXRkLAor CQkgICAgICAoc3RydWN0IG10ZF9yZWFkX3JlcSBfX3VzZXIgKilhcmcpOworCQlicmVhazsKKwl9 CisKIAljYXNlIE1FTUxPQ0s6CiAJewogCQlzdHJ1Y3QgZXJhc2VfaW5mb191c2VyIGVpbmZvOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL210ZC9tdGQtYWJpLmggYi9pbmNsdWRlL3VhcGkvbXRk L210ZC1hYmkuaAppbmRleCBiODY5OTkwYzJkYjIuLjMzN2U2ZTU5N2ZhZCAxMDA2NDQKLS0tIGEv aW5jbHVkZS91YXBpL210ZC9tdGQtYWJpLmgKKysrIGIvaW5jbHVkZS91YXBpL210ZC9tdGQtYWJp LmgKQEAgLTU1LDkgKzU1LDkgQEAgc3RydWN0IG10ZF9vb2JfYnVmNjQgewogICogQE1URF9PUFNf UkFXOglkYXRhIGFyZSB0cmFuc2ZlcnJlZCBhcy1pcywgd2l0aCBubyBlcnJvciBjb3JyZWN0aW9u OwogICoJCQl0aGlzIG1vZGUgaW1wbGllcyAlTVREX09QU19QTEFDRV9PT0IKICAqCi0gKiBUaGVz ZSBtb2RlcyBjYW4gYmUgcGFzc2VkIHRvIGlvY3RsKE1FTVdSSVRFKSBhbmQgYXJlIGFsc28gdXNl ZCBpbnRlcm5hbGx5LgotICogU2VlIG5vdGVzIG9uICJNVEQgZmlsZSBtb2RlcyIgZm9yIGRpc2N1 c3Npb24gb24gJU1URF9PUFNfUkFXIHZzLgotICogJU1URF9GSUxFX01PREVfUkFXLgorICogVGhl c2UgbW9kZXMgY2FuIGJlIHBhc3NlZCB0byBpb2N0bChNRU1XUklURSkgYW5kIGlvY3RsKE1FTVJF QUQpOyB0aGV5IGFyZQorICogYWxzbyB1c2VkIGludGVybmFsbHkuIFNlZSBub3RlcyBvbiAiTVRE IGZpbGUgbW9kZXMiIGZvciBkaXNjdXNzaW9uIG9uCisgKiAlTVREX09QU19SQVcgdnMuICVNVERf RklMRV9NT0RFX1JBVy4KICAqLwogZW51bSB7CiAJTVREX09QU19QTEFDRV9PT0IgPSAwLApAQCAt OTEsNiArOTEsMzIgQEAgc3RydWN0IG10ZF93cml0ZV9yZXEgewogCV9fdTggcGFkZGluZ1s3XTsK IH07CiAKKy8qKgorICogc3RydWN0IG10ZF9yZWFkX3JlcSAtIGRhdGEgc3RydWN0dXJlIGZvciBy ZXF1ZXN0aW5nIGEgcmVhZCBvcGVyYXRpb24KKyAqCisgKiBAc3RhcnQ6CXN0YXJ0IGFkZHJlc3MK KyAqIEBsZW46CWxlbmd0aCBvZiBkYXRhIGJ1ZmZlcgorICogQG9vYmxlbjoJbGVuZ3RoIG9mIE9P QiBidWZmZXIKKyAqIEB1c3JfZGF0YToJdXNlci1wcm92aWRlZCBkYXRhIGJ1ZmZlcgorICogQHVz cl9vb2I6CXVzZXItcHJvdmlkZWQgT09CIGJ1ZmZlcgorICogQG1vZGU6CU1URCBtb2RlIChzZWUg Ik1URCBvcGVyYXRpb24gbW9kZXMiKQorICogQHBhZGRpbmc6CXJlc2VydmVkLCBtdXN0IGJlIHNl dCB0byAwCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgc3VwcG9ydHMgaW9jdGwoTUVNUkVBRCkgb3Bl cmF0aW9ucywgYWxsb3dpbmcgZGF0YSBhbmQvb3IgT09CCisgKiByZWFkcyBpbiB2YXJpb3VzIG1v ZGVzLiBUbyByZWFkIGZyb20gT09CLW9ubHksIHNldCBAdXNyX2RhdGEgPT0gTlVMTCwgYW5kIHRv CisgKiByZWFkIGRhdGEtb25seSwgc2V0IEB1c3Jfb29iID09IE5VTEwuIEhvd2V2ZXIsIHNldHRp bmcgYm90aCBAdXNyX2RhdGEgYW5kCisgKiBAdXNyX29vYiB0byBOVUxMIGlzIG5vdCBhbGxvd2Vk LgorICovCitzdHJ1Y3QgbXRkX3JlYWRfcmVxIHsKKwlfX3U2NCBzdGFydDsKKwlfX3U2NCBsZW47 CisJX191NjQgb29ibGVuOworCV9fdTY0IHVzcl9kYXRhOworCV9fdTY0IHVzcl9vb2I7CisJX191 OCBtb2RlOworCV9fdTggcGFkZGluZ1s3XTsKK307CisKICNkZWZpbmUgTVREX0FCU0VOVAkJMAog I2RlZmluZSBNVERfUkFNCQkJMQogI2RlZmluZSBNVERfUk9NCQkJMgpAQCAtMjA3LDYgKzIzMywx MiBAQCBzdHJ1Y3Qgb3RwX2luZm8gewogI2RlZmluZSBNRU1XUklURQkJX0lPV1IoJ00nLCAyNCwg c3RydWN0IG10ZF93cml0ZV9yZXEpCiAvKiBFcmFzZSBhIGdpdmVuIHJhbmdlIG9mIHVzZXIgZGF0 YSAobXVzdCBiZSBpbiBtb2RlICVNVERfRklMRV9NT0RFX09UUF9VU0VSKSAqLwogI2RlZmluZSBP VFBFUkFTRQkJX0lPVygnTScsIDI1LCBzdHJ1Y3Qgb3RwX2luZm8pCisvKgorICogTW9zdCBnZW5l cmljIHJlYWQgaW50ZXJmYWNlOyBjYW4gcmVhZCBpbi1iYW5kIGFuZC9vciBvdXQtb2YtYmFuZCBp biB2YXJpb3VzCisgKiBtb2RlcyAoc2VlICJzdHJ1Y3QgbXRkX3JlYWRfcmVxIikuIFRoaXMgaW9j dGwgaXMgbm90IHN1cHBvcnRlZCBmb3IgZmxhc2hlcworICogd2l0aG91dCBPT0IsIGUuZy4sIE5P UiBmbGFzaC4KKyAqLworI2RlZmluZSBNRU1SRUFECQkJX0lPV1IoJ00nLCAyNiwgc3RydWN0IG10 ZF9yZWFkX3JlcSkKIAogLyoKICAqIE9ic29sZXRlIGxlZ2FjeSBpbnRlcmZhY2UuIEtlZXAgaXQg aW4gb3JkZXIgbm90IHRvIGJyZWFrIHVzZXJzcGFjZQpAQCAtMjcwLDggKzMwMiw5IEBAIHN0cnVj dCBtdGRfZWNjX3N0YXRzIHsKICAqIE5vdGU6ICVNVERfRklMRV9NT0RFX1JBVyBwcm92aWRlcyB0 aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFzICVNVERfT1BTX1JBVyAtCiAgKiByYXcgYWNjZXNzIHRv IHRoZSBmbGFzaCwgd2l0aG91dCBlcnJvciBjb3JyZWN0aW9uIG9yIGF1dG9wbGFjZW1lbnQgc2No ZW1lcy4KICAqIFdoZXJldmVyIHBvc3NpYmxlLCB0aGUgTVREX09QU18qIG1vZGUgd2lsbCBvdmVy cmlkZSB0aGUgTVREX0ZJTEVfTU9ERV8qIG1vZGUKLSAqIChlLmcuLCB3aGVuIHVzaW5nIGlvY3Rs KE1FTVdSSVRFKSksIGJ1dCBpbiBzb21lIGNhc2VzLCB0aGUgTVREX0ZJTEVfTU9ERSBpcwotICog dXNlZCBvdXQgb2YgbmVjZXNzaXR5IChlLmcuLCBgd3JpdGUoKScsIGlvY3RsKE1FTVdSSVRFT09C NjQpKS4KKyAqIChlLmcuLCB3aGVuIHVzaW5nIGlvY3RsKE1FTVdSSVRFKSBvciBpb2N0bChNRU1S RUFEKSksIGJ1dCBpbiBzb21lIGNhc2VzLCB0aGUKKyAqIE1URF9GSUxFX01PREUgaXMgdXNlZCBv dXQgb2YgbmVjZXNzaXR5IChlLmcuLCBgd3JpdGUoKScsCisgKiBpb2N0bChNRU1XUklURU9PQjY0 KSkuCiAgKi8KIGVudW0gbXRkX2ZpbGVfbW9kZXMgewogCU1URF9GSUxFX01PREVfTk9STUFMID0g TVREX09UUF9PRkYsCi0tIAoyLjM0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0 Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=