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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC605CA9EC9 for ; Fri, 1 Nov 2019 03:57:06 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 86CDB2083E for ; Fri, 1 Nov 2019 03:57:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TFthpxUB"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Z6/DP9MJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 86CDB2083E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=roeck-us.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=f5LmBFkhKSwco05yyjSbea10X+Mi51jAceQWpizmhP8=; b=TFthpxUBDrz0fM FXSrjYjRTQfewUb/55Jd561WR5LypaKbRt4LxQhEL2i3lUx/6WmJW7xPfmeenRwmfI2uDD+IgEJtW NdG8dnkLB3AXIbl+qs6Y7BiA2q8AvxVbp1pfPWa6VZskgVnR/EZl1w7GqOkxoEhC7zjq0w4vAHQ4e Qr6QhwCR4ti7jld5ELZnNBF4tuslzWTlNdJse2KWxUrT5APRVyq75cRAvhWOxM1gwPQBwWfa7xH3+ tYabcmyTVnTGD2nD6Xtcw/fGB2bkZORtYHXL1mt5XpIos5Q9RRXgbBsGWHlLNuqhps4swsdw5r+rk ZVOtCAPMKjettp6QbE/g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iQO3V-0001ol-9B; Fri, 01 Nov 2019 03:56:57 +0000 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iQO3P-0001jW-Be for linux-nvme@lists.infradead.org; Fri, 01 Nov 2019 03:56:53 +0000 Received: by mail-pg1-x543.google.com with SMTP id u23so5621338pgo.0 for ; Thu, 31 Oct 2019 20:56:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=hg3gUNhnCj04JrTkUSlXP5wvJM/+g/HdA4JjcTtjCak=; b=Z6/DP9MJrq8FSb0y1ag7BuQaeRT07SWWXbRifHU9s1rQH4OSx67FYDGBeQ+xShuSpd ArzeSZtTDR+aXAbj9fsynajbIowHcZo0n8LEJWfmtJLCnSAyqbiNpdQjQtO1BFmsFHMH ikFhVbO6HC8KD59i9A+VD6WmbC5OySw26y1YngdS5S5zuY16fth3JzW2mcAFt3NMIZK5 SzqVW74JR/iD08dDm6/2v1yic2PUhhkYxpQz90III0dvTpAOabmy/vg3zHkJwSN1RIrJ jYdh4EfTNDkDykMTFztqxZbF5gFLGUEObbrPMr/iwU01MU5RD7Vtcz34OvE+4MJ9X/gD Ix2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=hg3gUNhnCj04JrTkUSlXP5wvJM/+g/HdA4JjcTtjCak=; b=oopIFKWI9dgs0uk6f218MxT1LFD+Ah0iWcgi+KsC3zdA27Clba1VkrivOsAFaI7sRt GgiXA2j8yR1wOuVTWBXOnU2bUn4MUGQfvNXb9TsGaew5P7CaXVAQqWmtbmt/kXFmR65y 7QcHj4qgJ8f0q3QERUchdiknh4TSDSH9zeYBElDLJ9c2q3ARakupw5jC3mUir4y8TPIP qmRzIAflFoI0lvg8o/DH0sXIWsS538x2vpEwP7X1NiXCOwp5NGSBMlIpUrJRjt0iA3sp 4XDBjqapW/Y5IbQuM0Q2xm6P6nd8MURqzj1eG4lVBwvgKYedMpBxsllrEFu87KVl5tyB Fkpw== X-Gm-Message-State: APjAAAUMNtyAusOgypPOXd84xJmbRfKaCXCY6ho4SvB+p4bbe7gucjIy oooeh3y9XZ1tKpoNTmqdOwE= X-Google-Smtp-Source: APXvYqwM14FC37lvLIVeiUcrc+0TBOusUiTwECRQDLDIzvYzeQgM1dA7r0vfVAvtIX9yLXBMJSwJ2Q== X-Received: by 2002:a17:90a:26e4:: with SMTP id m91mr2367680pje.92.1572580610035; Thu, 31 Oct 2019 20:56:50 -0700 (PDT) Received: from localhost ([2600:1700:e321:62f0:329c:23ff:fee3:9d7c]) by smtp.gmail.com with ESMTPSA id u68sm4879907pfu.39.2019.10.31.20.56.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 31 Oct 2019 20:56:48 -0700 (PDT) From: Guenter Roeck To: Keith Busch Subject: [PATCH v3] nvme: Add hardware monitoring support Date: Thu, 31 Oct 2019 20:56:46 -0700 Message-Id: <20191101035646.25644-1-linux@roeck-us.net> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191031_205651_614556_8C30C4A0 X-CRM114-Status: GOOD ( 23.56 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sagi Grimberg , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, Akinobu Mita , Jens Axboe , Guenter Roeck , Christoph Hellwig , Chris Healy Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org bnZtZSBkZXZpY2VzIHJlcG9ydCB0ZW1wZXJhdHVyZSBpbmZvcm1hdGlvbiBpbiB0aGUgY29udHJv bGxlciBpbmZvcm1hdGlvbgooZm9yIGxpbWl0cykgYW5kIGluIHRoZSBzbWFydCBsb2cuIEN1cnJl bnRseSwgdGhlIG9ubHkgbWVhbnMgdG8gcmV0cmlldmUKdGhpcyBpbmZvcm1hdGlvbiBpcyB0aGUg bnZtZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLCB3aGljaCByZXF1aXJlcwpzdXBlci11c2VyIHBy aXZpbGVnZXMuCgpBdCB0aGUgc2FtZSB0aW1lLCBpdCB3b3VsZCBiZSBkZXNpcmFibGUgdG8gYmUg YWJsZSB0byB1c2UgTlZNZSB0ZW1wZXJhdHVyZQppbmZvcm1hdGlvbiBmb3IgdGhlcm1hbCBjb250 cm9sLgoKVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgdG8gcmVhZCBOVk1lIHRlbXBlcmF0dXJlcyBm cm9tIHRoZSBrZXJuZWwgdXNpbmcgdGhlCmh3bW9uIEFQSSBhbmQgYWRkcyB0ZW1wZXJhdHVyZSB6 b25lcyBmb3IgTlZNZSBkcml2ZXMuIFRoZSB0aGVybWFsIHN1YnN5c3RlbQpjYW4gdXNlIHRoaXMg aW5mb3JtYXRpb24gdG8gc2V0IHRoZXJtYWwgcG9saWNpZXMsIGFuZCB1c2Vyc3BhY2UgY2FuIGFj Y2VzcwppdCB1c2luZyBsaWJzZW5zb3JzIGFuZC9vciB0aGUgInNlbnNvcnMiIGNvbW1hbmQuCgpF eGFtcGxlIG91dHB1dCBmcm9tIHRoZSAic2Vuc29ycyIgY29tbWFuZDoKCm52bWUwLXBjaS0wMTAw CkFkYXB0ZXI6IFBDSSBhZGFwdGVyCkNvbXBvc2l0ZTogICAgKzM5LjDCsEMgIChoaWdoID0gKzg1 LjDCsEMsIGNyaXQgPSArODUuMMKwQykKU2Vuc29yIDE6ICAgICArMzkuMMKwQwpTZW5zb3IgMjog ICAgICs0MS4wwrBDCgpTaWduZWQtb2ZmLWJ5OiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11 cy5uZXQ+Ci0tLQp2MzogTlZNRSAtPiBOVk1lCiAgICBDYWxsIG52bWVfaHdtb25faW5pdCgpIG9u bHkgb25jZSwgd2hlbiB0aGUgY29udHJvbGxlciBpcyBmaXJzdAogICAgaWRlbnRpZmllZAogICAg UHJvdGVjdCBjYWxsIHRvIG52bWVfZ2V0X2xvZygpIGFuZCByZWFkaW5nIHRoZSBsb2cgd2l0aCBt dXRleAogICAgQ29udmVydCBlcnJvciByZXR1cm4gZnJvbSBudm1lX2dldF9sb2coKSB0byBMaW51 eCBlcnJvciBjb2RlCiAgICBpbiBudm1lX2h3bW9uX2dldF9zbWFydF9sb2coKQogICAgRG9uJ3Qg cmVhZCBzbWFydCBsb2cgZm9yIHJlcG9ydGluZyB3YXJuaW5nIGFuZCBjcml0aWNhbCBsaW1pdHMK ICAgIFVzZSBnZXRfdW5hbGlnbmVkX2xlMTYoKSBpbnN0ZWFkIG9mIGxlMTZfdG9fY3B1cCgpIHRv IHJlYWQgdGhlCiAgICBjb21wb3NpdGUgdGVtcGVyYXR1cmUKICAgIFVzZSAjaWZkZWYgQ09ORklH X05WTUVfSFdNT04gaW5zdGVhZCBvZiBJU19FTkFCTEVEKENPTkZJR19OVk1FX0hXTU9OKQogICAg LUVQUk9UTyAtPiAtRUlPIGZvciBnZW5lcmljIE5WTWUgbGV2ZWwgZXJyb3JzCiAgICBUYWItYWxp Z24gJz0nIGluIGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9ucwoKdjI6IFVzZSBkZXZtX2tm cmVlKCkgdG8gcmVsZWFzZSBtZW1vcnkgaW4gZXJyb3IgcGF0aAoKVGVzdGVkIHdpdGggdGhlIGZv bGxvd2luZyBOVk1lIGRyaXZlczoKCUludGVsIFNTRFBFS0tXNTEyRzcgNTAwR0IKCVNhbXN1bmcg U1NEIDk2MCBFVk8gNTAwR0IKCVNhbXN1bmcgU1NEIDk3MCBFVk8gNTAwR0IKCVNhbXN1bmcgU1NE IDk3MCBFVk8gMVRCCgogZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZyAgICAgIHwgIDEwICsrCiBk cml2ZXJzL252bWUvaG9zdC9NYWtlZmlsZSAgICAgfCAgIDEgKwogZHJpdmVycy9udm1lL2hvc3Qv Y29yZS5jICAgICAgIHwgICA2ICsrCiBkcml2ZXJzL252bWUvaG9zdC9udm1lLWh3bW9uLmMgfCAx ODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL252bWUvaG9zdC9u dm1lLmggICAgICAgfCAgIDggKysKIDUgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL252bWUvaG9zdC9udm1lLWh3bW9uLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnIGIvZHJpdmVycy9udm1lL2hvc3QvS2Nv bmZpZwppbmRleCAyYjM2ZjA1MmJmYjkuLmM2NDM5NjM4YTQxOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9udm1lL2hvc3QvS2NvbmZpZworKysgYi9kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnCkBAIC0y Myw2ICsyMywxNiBAQCBjb25maWcgTlZNRV9NVUxUSVBBVEgKIAkgICAvZGV2L252bWVYblkgZGV2 aWNlIHdpbGwgc2hvdyB1cCBmb3IgZWFjaCBOVk1lIG5hbWVzcGFjZXMsCiAJICAgZXZlbiBpZiBp dCBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggbXVsdGlwbGUgY29udHJvbGxlcnMuCiAKK2NvbmZpZyBO Vk1FX0hXTU9OCisJYm9vbCAiTlZNZSBoYXJkd2FyZSBtb25pdG9yaW5nIgorCWRlcGVuZHMgb24g KE5WTUVfQ09SRT15ICYmIEhXTU9OPXkpIHx8IChOVk1FX0NPUkU9bSAmJiBIV01PTikKKwloZWxw CisJICBUaGlzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIE5WTWUgaGFyZHdhcmUgbW9uaXRvcmluZy4g SWYgZW5hYmxlZCwKKwkgIGEgaGFyZHdhcmUgbW9uaXRvcmluZyBkZXZpY2Ugd2lsbCBiZSBjcmVh dGVkIGZvciBlYWNoIE5WTWUgZHJpdmUKKwkgIGluIHRoZSBzeXN0ZW0uCisKKwkgIElmIHVuc3Vy ZSwgc2F5IE4uCisKIGNvbmZpZyBOVk1FX0ZBQlJJQ1MKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL252bWUvaG9zdC9NYWtlZmlsZSBiL2RyaXZlcnMvbnZtZS9ob3N0L01ha2VmaWxl CmluZGV4IDhhNGI2NzFjNWYwYy4uMDNkZTQ3OTdhODc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL252 bWUvaG9zdC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL252bWUvaG9zdC9NYWtlZmlsZQpAQCAtMTQs NiArMTQsNyBAQCBudm1lLWNvcmUtJChDT05GSUdfVFJBQ0lORykJCSs9IHRyYWNlLm8KIG52bWUt Y29yZS0kKENPTkZJR19OVk1FX01VTFRJUEFUSCkJKz0gbXVsdGlwYXRoLm8KIG52bWUtY29yZS0k KENPTkZJR19OVk0pCQkJKz0gbGlnaHRudm0ubwogbnZtZS1jb3JlLSQoQ09ORklHX0ZBVUxUX0lO SkVDVElPTl9ERUJVR19GUykJKz0gZmF1bHRfaW5qZWN0Lm8KK252bWUtY29yZS0kKENPTkZJR19O Vk1FX0hXTU9OKQkJKz0gbnZtZS1od21vbi5vCiAKIG52bWUteQkJCQkJKz0gcGNpLm8KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jIGIvZHJpdmVycy9udm1lL2hvc3QvY29y ZS5jCmluZGV4IGZhN2JhMDlkY2E3Ny4uZDAzOWUzOTJkZTM2IDEwMDY0NAotLS0gYS9kcml2ZXJz L252bWUvaG9zdC9jb3JlLmMKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCkBAIC0yNzk2 LDYgKzI3OTYsOSBAQCBpbnQgbnZtZV9pbml0X2lkZW50aWZ5KHN0cnVjdCBudm1lX2N0cmwgKmN0 cmwpCiAJY3RybC0+b25jcyA9IGxlMTZfdG9fY3B1KGlkLT5vbmNzKTsKIAljdHJsLT5tdGZhID0g bGUxNl90b19jcHUoaWQtPm10ZmEpOwogCWN0cmwtPm9hZXMgPSBsZTMyX3RvX2NwdShpZC0+b2Fl cyk7CisJY3RybC0+d2N0ZW1wID0gbGUxNl90b19jcHUoaWQtPndjdGVtcCk7CisJY3RybC0+Y2N0 ZW1wID0gbGUxNl90b19jcHUoaWQtPmNjdGVtcCk7CisKIAlhdG9taWNfc2V0KCZjdHJsLT5hYm9y dF9saW1pdCwgaWQtPmFjbCArIDEpOwogCWN0cmwtPnZ3YyA9IGlkLT52d2M7CiAJaWYgKGlkLT5t ZHRzKQpAQCAtMjg5NSw2ICsyODk4LDkgQEAgaW50IG52bWVfaW5pdF9pZGVudGlmeShzdHJ1Y3Qg bnZtZV9jdHJsICpjdHJsKQogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCisJaWYgKCFj dHJsLT5pZGVudGlmaWVkKQorCQludm1lX2h3bW9uX2luaXQoY3RybCk7CisKIAljdHJsLT5pZGVu dGlmaWVkID0gdHJ1ZTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hv c3QvbnZtZS1od21vbi5jIGIvZHJpdmVycy9udm1lL2hvc3QvbnZtZS1od21vbi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGE4NmYwMzYzNTMxCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9udm1lL2hvc3QvbnZtZS1od21vbi5jCkBAIC0wLDAgKzEsMTgxIEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIE5WTSBFeHByZXNz IGhhcmR3YXJlIG1vbml0b3Jpbmcgc3VwcG9ydAorICogQ29weXJpZ2h0IChjKSAyMDE5LCBHdWVu dGVyIFJvZWNrCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2h3bW9uLmg+CisjaW5jbHVkZSA8YXNt L3VuYWxpZ25lZC5oPgorCisjaW5jbHVkZSAibnZtZS5oIgorCitzdHJ1Y3QgbnZtZV9od21vbl9k YXRhIHsKKwlzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsOworCXN0cnVjdCBudm1lX3NtYXJ0X2xvZyBs b2c7CisJc3RydWN0IG11dGV4IHJlYWRfbG9jazsKK307CisKK3N0YXRpYyBpbnQgbnZtZV9od21v bl9nZXRfc21hcnRfbG9nKHN0cnVjdCBudm1lX2h3bW9uX2RhdGEgKmRhdGEpCit7CisJaW50IHJl dDsKKworCXJldCA9IG52bWVfZ2V0X2xvZyhkYXRhLT5jdHJsLCBOVk1FX05TSURfQUxMLCBOVk1F X0xPR19TTUFSVCwgMCwKKwkJCSAgICZkYXRhLT5sb2csIHNpemVvZihkYXRhLT5sb2cpLCAwKTsK KworCXJldHVybiByZXQgPD0gMCA/IHJldCA6IC1FSU87Cit9CisKK3N0YXRpYyBpbnQgbnZtZV9o d21vbl9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlw ZSwKKwkJCSAgIHUzMiBhdHRyLCBpbnQgY2hhbm5lbCwgbG9uZyAqdmFsKQoreworCXN0cnVjdCBu dm1lX2h3bW9uX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgbnZt ZV9zbWFydF9sb2cgKmxvZyA9ICZkYXRhLT5sb2c7CisJaW50IHRlbXA7CisJaW50IGVycjsKKwor CS8qCisJICogRmlyc3QgaGFuZGxlIGF0dHJpYnV0ZXMgd2hpY2ggZG9uJ3QgcmVxdWlyZSB1cyB0 byByZWFkCisJICogdGhlIHNtYXJ0IGxvZy4KKwkgKi8KKwlzd2l0Y2ggKGF0dHIpIHsKKwljYXNl IGh3bW9uX3RlbXBfbWF4OgorCQkqdmFsID0gKGRhdGEtPmN0cmwtPndjdGVtcCAtIDI3MykgKiAx MDAwOworCQlyZXR1cm4gMDsKKwljYXNlIGh3bW9uX3RlbXBfY3JpdDoKKwkJKnZhbCA9IChkYXRh LT5jdHJsLT5jY3RlbXAgLSAyNzMpICogMTAwMDsKKwkJcmV0dXJuIDA7CisJZGVmYXVsdDoKKwkJ YnJlYWs7CisJfQorCisJbXV0ZXhfbG9jaygmZGF0YS0+cmVhZF9sb2NrKTsKKwllcnIgPSBudm1l X2h3bW9uX2dldF9zbWFydF9sb2coZGF0YSk7CisJaWYgKGVycikKKwkJZ290byB1bmxvY2s7CisK Kwlzd2l0Y2ggKGF0dHIpIHsKKwljYXNlIGh3bW9uX3RlbXBfaW5wdXQ6CisJCWlmICghY2hhbm5l bCkKKwkJCXRlbXAgPSBnZXRfdW5hbGlnbmVkX2xlMTYobG9nLT50ZW1wZXJhdHVyZSk7CisJCWVs c2UKKwkJCXRlbXAgPSBsZTE2X3RvX2NwdShsb2ctPnRlbXBfc2Vuc29yW2NoYW5uZWwgLSAxXSk7 CisJCSp2YWwgPSAodGVtcCAtIDI3MykgKiAxMDAwOworCQlicmVhazsKKwljYXNlIGh3bW9uX3Rl bXBfY3JpdF9hbGFybToKKwkJKnZhbCA9ICEhKGxvZy0+Y3JpdGljYWxfd2FybmluZyAmIE5WTUVf U01BUlRfQ1JJVF9URU1QRVJBVFVSRSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWVyciA9IC1F T1BOT1RTVVBQOworCQlicmVhazsKKwl9Cit1bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZkYXRhLT5y ZWFkX2xvY2spOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg bnZtZV9od21vbl9zZW5zb3JfbmFtZXNbXSA9IHsKKwkiQ29tcG9zaXRlIiwKKwkiU2Vuc29yIDEi LAorCSJTZW5zb3IgMiIsCisJIlNlbnNvciAzIiwKKwkiU2Vuc29yIDQiLAorCSJTZW5zb3IgNSIs CisJIlNlbnNvciA2IiwKKwkiU2Vuc29yIDciLAorCSJTZW5zb3IgOCIsCit9OworCitzdGF0aWMg aW50IG52bWVfaHdtb25fcmVhZF9zdHJpbmcoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgZW51 bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwgdTMyIGF0dHIsCisJCQkJICBpbnQgY2hhbm5lbCwg Y29uc3QgY2hhciAqKnN0cikKK3sKKwkqc3RyID0gbnZtZV9od21vbl9zZW5zb3JfbmFtZXNbY2hh bm5lbF07CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1bW9kZV90IG52bWVfaHdtb25faXNfdmlz aWJsZShjb25zdCB2b2lkICpfZGF0YSwKKwkJCQkgICAgIGVudW0gaHdtb25fc2Vuc29yX3R5cGVz IHR5cGUsCisJCQkJICAgICB1MzIgYXR0ciwgaW50IGNoYW5uZWwpCit7CisJY29uc3Qgc3RydWN0 IG52bWVfaHdtb25fZGF0YSAqZGF0YSA9IF9kYXRhOworCisJc3dpdGNoIChhdHRyKSB7CisJY2Fz ZSBod21vbl90ZW1wX2NyaXQ6CisJCWlmICghY2hhbm5lbCAmJiBkYXRhLT5jdHJsLT5jY3RlbXAp CisJCQlyZXR1cm4gMDQ0NDsKKwkJYnJlYWs7CisJY2FzZSBod21vbl90ZW1wX21heDoKKwkJaWYg KCFjaGFubmVsICYmIGRhdGEtPmN0cmwtPndjdGVtcCkKKwkJCXJldHVybiAwNDQ0OworCQlicmVh azsKKwljYXNlIGh3bW9uX3RlbXBfY3JpdF9hbGFybToKKwkJaWYgKCFjaGFubmVsKQorCQkJcmV0 dXJuIDA0NDQ7CisJCWJyZWFrOworCWNhc2UgaHdtb25fdGVtcF9pbnB1dDoKKwljYXNlIGh3bW9u X3RlbXBfbGFiZWw6CisJCWlmICghY2hhbm5lbCB8fCBkYXRhLT5sb2cudGVtcF9zZW5zb3JbY2hh bm5lbCAtIDFdKQorCQkJcmV0dXJuIDA0NDQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFr OworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVs X2luZm8gKm52bWVfaHdtb25faW5mb1tdID0geworCUhXTU9OX0NIQU5ORUxfSU5GTyhjaGlwLCBI V01PTl9DX1JFR0lTVEVSX1RaKSwKKwlIV01PTl9DSEFOTkVMX0lORk8odGVtcCwKKwkJCSAgIEhX TU9OX1RfSU5QVVQgfCBIV01PTl9UX01BWCB8IEhXTU9OX1RfQ1JJVCB8CisJCQkJSFdNT05fVF9M QUJFTCB8IEhXTU9OX1RfQ1JJVF9BTEFSTSwKKwkJCSAgIEhXTU9OX1RfSU5QVVQgfCBIV01PTl9U X0xBQkVMLAorCQkJICAgSFdNT05fVF9JTlBVVCB8IEhXTU9OX1RfTEFCRUwsCisJCQkgICBIV01P Tl9UX0lOUFVUIHwgSFdNT05fVF9MQUJFTCwKKwkJCSAgIEhXTU9OX1RfSU5QVVQgfCBIV01PTl9U X0xBQkVMLAorCQkJICAgSFdNT05fVF9JTlBVVCB8IEhXTU9OX1RfTEFCRUwsCisJCQkgICBIV01P Tl9UX0lOUFVUIHwgSFdNT05fVF9MQUJFTCwKKwkJCSAgIEhXTU9OX1RfSU5QVVQgfCBIV01PTl9U X0xBQkVMLAorCQkJICAgSFdNT05fVF9JTlBVVCB8IEhXTU9OX1RfTEFCRUwpLAorCU5VTEwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIG52bWVfaHdtb25fb3BzID0geworCS5p c192aXNpYmxlCT0gbnZtZV9od21vbl9pc192aXNpYmxlLAorCS5yZWFkCQk9IG52bWVfaHdtb25f cmVhZCwKKwkucmVhZF9zdHJpbmcJPSBudm1lX2h3bW9uX3JlYWRfc3RyaW5nLAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gbnZtZV9od21vbl9jaGlwX2luZm8gPSB7 CisJLm9wcwk9ICZudm1lX2h3bW9uX29wcywKKwkuaW5mbwk9IG52bWVfaHdtb25faW5mbywKK307 CisKK3ZvaWQgbnZtZV9od21vbl9pbml0KHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpCit7CisJc3Ry dWN0IGRldmljZSAqZGV2ID0gY3RybC0+ZGV2aWNlOworCXN0cnVjdCBudm1lX2h3bW9uX2RhdGEg KmRhdGE7CisJc3RydWN0IGRldmljZSAqaHdtb247CisJaW50IGVycjsKKworCWRhdGEgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRhdGEpCisJ CXJldHVybjsKKworCWRhdGEtPmN0cmwgPSBjdHJsOworCW11dGV4X2luaXQoJmRhdGEtPnJlYWRf bG9jayk7CisKKwllcnIgPSBudm1lX2h3bW9uX2dldF9zbWFydF9sb2coZGF0YSk7CisJaWYgKGVy cikgeworCQlkZXZfd2FybihkZXYsICJGYWlsZWQgdG8gcmVhZCBzbWFydCBsb2cgKGVycm9yICVk KVxuIiwgZXJyKTsKKwkJZGV2bV9rZnJlZShkZXYsIGRhdGEpOworCQlyZXR1cm47CisJfQorCisJ aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2luZm8oZGV2LCBkZXZfbmFt ZShkZXYpLCBkYXRhLAorCQkJCQkJICAgICAmbnZtZV9od21vbl9jaGlwX2luZm8sCisJCQkJCQkg ICAgIE5VTEwpOworCWlmIChJU19FUlIoaHdtb24pKSB7CisJCWRldl93YXJuKGRldiwgIkZhaWxl ZCB0byBpbnN0YW50aWF0ZSBod21vbiBkZXZpY2VcbiIpOworCQlkZXZtX2tmcmVlKGRldiwgZGF0 YSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oIGIvZHJpdmVy cy9udm1lL2hvc3QvbnZtZS5oCmluZGV4IDIyZTg0MDEzNTJjMi4uY2IzYjI0MmEyMTRlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9udm1lLmgKKysrIGIvZHJpdmVycy9udm1lL2hvc3Qv bnZtZS5oCkBAIC0yMzEsNiArMjMxLDggQEAgc3RydWN0IG52bWVfY3RybCB7CiAJdTE2IGthczsK IAl1OCBucHNzOwogCXU4IGFwc3RhOworCXUxNiB3Y3RlbXA7CisJdTE2IGNjdGVtcDsKIAl1MzIg b2FlczsKIAl1MzIgYWVuX3Jlc3VsdDsKIAl1MzIgY3RyYXR0OwpAQCAtNjUyLDQgKzY1NCwxMCBA QCBzdGF0aWMgaW5saW5lIHN0cnVjdCBudm1lX25zICpudm1lX2dldF9uc19mcm9tX2RldihzdHJ1 Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRldl90b19kaXNrKGRldiktPnByaXZhdGVfZGF0YTsK IH0KIAorI2lmZGVmIENPTkZJR19OVk1FX0hXTU9OCit2b2lkIG52bWVfaHdtb25faW5pdChzdHJ1 Y3QgbnZtZV9jdHJsICpjdHJsKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgbnZtZV9od21v bl9pbml0KHN0cnVjdCBudm1lX2N0cmwgKmN0cmwpIHsgfQorI2VuZGlmCisKICNlbmRpZiAvKiBf TlZNRV9IICovCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpMaW51eC1udm1lIG1haWxpbmcgbGlzdApMaW51eC1udm1lQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1udm1lCg==