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=-10.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,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 2C214C433E2 for ; Mon, 29 Jun 2020 19:06:59 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 E951F20663 for ; Mon, 29 Jun 2020 19:06:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="3US3wKJT"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="l2MsGl5U" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E951F20663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: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:List-Owner; bh=RpsadWzK5ALVzmovWRw7cJhgYUnvUk9D8BNf8UUu/n0=; b=3US3wKJT6VDzC9QjYOgUOjcgO VTN2A4T8lPelm2OlCZuRJkTcEaOlHqs5G4S3AGLWjgzXFUfVXOpPxriYeE4SrJCJf3CIaFGudRVTW YHhTrCSVor2z/yGsRD3841r6DTf5ea2IHqkHEEVRoiRYqEb7seAAGTnCKJAMhtTwUHSLaDdYq9GSF azUKGdKZjajcKEPsNriY1QtMxfEFlpDsPjJvEzPn/l9XX48gBan6GlM0WRwYW6PnwNRv1Ae0A0+6n eDDxs2MC0zccN/3wbJ5qvzsxbxZdxDorsMoiVikKl9nsTBOeh5bP6v3huutDSogFZu5uSpus7SQ0E N598pRXDg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpz7F-0006re-UA; Mon, 29 Jun 2020 19:06:54 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jpz7A-0006pu-HH for linux-nvme@lists.infradead.org; Mon, 29 Jun 2020 19:06:49 +0000 Received: from dhcp-10-100-145-180.wdl.wdc.com (unknown [199.255.45.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3D853206E2; Mon, 29 Jun 2020 19:06:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593457608; bh=bU4UPg9ZXn991s7Tmq1JeQL2lH9esGDbJfRvDxOVQqE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l2MsGl5Ul+1VwW/wvXRcnEf8oI7FCtcCChdZ07+gbk+WzPpWn399ct6994TXyGH4m s1kNagTriDv53DBaD4WAtlQR2vOp7t74nHaegWflomNmUgOk6HYWwYrOloVaQ+3zeL nqm92E/kUdB49f/wd/EO9H9klakdPOoBbHArqvYY= From: Keith Busch To: linux-nvme@lists.infradead.org, hch@lst.de, sagi@grimberg.me, linux-block@vger.kernel.org Subject: [PATCHv4 3/5] nvme: implement I/O Command Sets Command Set support Date: Mon, 29 Jun 2020 12:06:39 -0700 Message-Id: <20200629190641.1986462-4-kbusch@kernel.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200629190641.1986462-1-kbusch@kernel.org> References: <20200629190641.1986462-1-kbusch@kernel.org> MIME-Version: 1.0 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: axboe@kernel.dk, Niklas Cassel , Daniel Wagner , "Martin K . Petersen" , Johannes Thumshirn , =?UTF-8?q?Javier=20Gonz=C3=A1lez?= , =?UTF-8?q?Matias=20Bj=C3=B8rling?= 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 RnJvbTogTmlrbGFzIENhc3NlbCA8bmlrbGFzLmNhc3NlbEB3ZGMuY29tPgoKSW1wbGVtZW50cyBz dXBwb3J0IGZvciB0aGUgSS9PIENvbW1hbmQgU2V0cyBjb21tYW5kIHNldC4gVGhlIGNvbW1hbmQg c2V0CmludHJvZHVjZXMgYSBtZXRob2QgdG8gZW51bWVyYXRlIG11bHRpcGxlIGNvbW1hbmQgc2V0 cyBwZXIgbmFtZXNwYWNlLiBJZgp0aGUgY29tbWFuZCBzZXQgaXMgZXhwb3NlZCwgdGhpcyBtZXRo b2QgZm9yIGVudW1lcmF0aW9uIHdpbGwgYmUgdXNlZAppbnN0ZWFkIG9mIHRoZSB0cmFkaXRpb25h bCBtZXRob2QgdGhhdCB1c2VzIHRoZSBDQy5DU1MgcmVnaXN0ZXIgY29tbWFuZApzZXQgcmVnaXN0 ZXIgZm9yIGNvbW1hbmQgc2V0IGlkZW50aWZpY2F0aW9uLgoKRm9yIG5hbWVzcGFjZXMgd2hlcmUg dGhlIENvbW1hbmQgU2V0IElkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZCBvcgpyZWNvZ25pemVk LCB0aGUgc3BlY2lmaWMgbmFtZXNwYWNlIHdpbGwgbm90IGJlIGNyZWF0ZWQuCgpSZXZpZXdlZC1i eTogSmF2aWVyIEdvbnrDoWxleiA8amF2aWVyLmdvbnpAc2Ftc3VuZy5jb20+ClJldmlld2VkLWJ5 OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgpSZXZpZXdl ZC1ieTogSm9oYW5uZXMgVGh1bXNoaXJuIDxqb2hhbm5lcy50aHVtc2hpcm5Ad2RjLmNvbT4KUmV2 aWV3ZWQtYnk6IE1hdGlhcyBCasO4cmxpbmcgPG1hdGlhcy5iam9ybGluZ0B3ZGMuY29tPgpSZXZp ZXdlZC1ieTogRGFuaWVsIFdhZ25lciA8ZHdhZ25lckBzdXNlLmRlPgpTaWduZWQtb2ZmLWJ5OiBO aWtsYXMgQ2Fzc2VsIDxuaWtsYXMuY2Fzc2VsQHdkYy5jb20+Ci0tLQogZHJpdmVycy9udm1lL2hv c3QvY29yZS5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQog ZHJpdmVycy9udm1lL2hvc3QvbnZtZS5oIHwgIDEgKwogaW5jbHVkZS9saW51eC9udm1lLmggICAg IHwgMTkgKysrKysrKysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwg MTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvY29yZS5jIGIv ZHJpdmVycy9udm1lL2hvc3QvY29yZS5jCmluZGV4IDcwMTc2MzkxMGU0OC4uYjdkMTJlYjQyZmQ4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL252bWUvaG9zdC9jb3JlLmMKKysrIGIvZHJpdmVycy9udm1l L2hvc3QvY29yZS5jCkBAIC0xMDU2LDggKzEwNTYsMTMgQEAgc3RhdGljIGludCBudm1lX2lkZW50 aWZ5X2N0cmwoc3RydWN0IG52bWVfY3RybCAqZGV2LCBzdHJ1Y3QgbnZtZV9pZF9jdHJsICoqaWQp CiAJcmV0dXJuIGVycm9yOwogfQogCitzdGF0aWMgYm9vbCBudm1lX211bHRpX2NzcyhzdHJ1Y3Qg bnZtZV9jdHJsICpjdHJsKQoreworCXJldHVybiAoY3RybC0+Y3RybF9jb25maWcgJiBOVk1FX0ND X0NTU19NQVNLKSA9PSBOVk1FX0NDX0NTU19DU0k7Cit9CisKIHN0YXRpYyBpbnQgbnZtZV9wcm9j ZXNzX25zX2Rlc2Moc3RydWN0IG52bWVfY3RybCAqY3RybCwgc3RydWN0IG52bWVfbnNfaWRzICpp ZHMsCi0JCXN0cnVjdCBudm1lX25zX2lkX2Rlc2MgKmN1cikKKwkJc3RydWN0IG52bWVfbnNfaWRf ZGVzYyAqY3VyLCBib29sICpjc2lfc2VlbikKIHsKIAljb25zdCBjaGFyICp3YXJuX3N0ciA9ICJj dHJsIHJldHVybmVkIGJvZ3VzIGxlbmd0aDoiOwogCXZvaWQgKmRhdGEgPSBjdXI7CkBAIC0xMDg3 LDYgKzEwOTIsMTUgQEAgc3RhdGljIGludCBudm1lX3Byb2Nlc3NfbnNfZGVzYyhzdHJ1Y3QgbnZt ZV9jdHJsICpjdHJsLCBzdHJ1Y3QgbnZtZV9uc19pZHMgKmlkcywKIAkJfQogCQl1dWlkX2NvcHko Jmlkcy0+dXVpZCwgZGF0YSArIHNpemVvZigqY3VyKSk7CiAJCXJldHVybiBOVk1FX05JRFRfVVVJ RF9MRU47CisJY2FzZSBOVk1FX05JRFRfQ1NJOgorCQlpZiAoY3VyLT5uaWRsICE9IE5WTUVfTklE VF9DU0lfTEVOKSB7CisJCQlkZXZfd2FybihjdHJsLT5kZXZpY2UsICIlcyAlZCBmb3IgTlZNRV9O SURUX0NTSVxuIiwKKwkJCQkgd2Fybl9zdHIsIGN1ci0+bmlkbCk7CisJCQlyZXR1cm4gLTE7CisJ CX0KKwkJbWVtY3B5KCZpZHMtPmNzaSwgZGF0YSArIHNpemVvZigqY3VyKSwgTlZNRV9OSURUX0NT SV9MRU4pOworCQkqY3NpX3NlZW4gPSB0cnVlOworCQlyZXR1cm4gTlZNRV9OSURUX0NTSV9MRU47 CiAJZGVmYXVsdDoKIAkJLyogU2tpcCB1bmtub3duIHR5cGVzICovCiAJCXJldHVybiBjdXItPm5p ZGw7CkBAIC0xMDk3LDEwICsxMTExLDkgQEAgc3RhdGljIGludCBudm1lX2lkZW50aWZ5X25zX2Rl c2NzKHN0cnVjdCBudm1lX2N0cmwgKmN0cmwsIHVuc2lnbmVkIG5zaWQsCiAJCXN0cnVjdCBudm1l X25zX2lkcyAqaWRzKQogewogCXN0cnVjdCBudm1lX2NvbW1hbmQgYyA9IHsgfTsKLQlpbnQgc3Rh dHVzOworCWJvb2wgY3NpX3NlZW4gPSBmYWxzZTsKKwlpbnQgc3RhdHVzLCBwb3MsIGxlbjsKIAl2 b2lkICpkYXRhOwotCWludCBwb3M7Ci0JaW50IGxlbjsKIAogCWMuaWRlbnRpZnkub3Bjb2RlID0g bnZtZV9hZG1pbl9pZGVudGlmeTsKIAljLmlkZW50aWZ5Lm5zaWQgPSBjcHVfdG9fbGUzMihuc2lk KTsKQEAgLTExMjUsNyArMTEzOCw3IEBAIHN0YXRpYyBpbnQgbnZtZV9pZGVudGlmeV9uc19kZXNj cyhzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsLCB1bnNpZ25lZCBuc2lkLAogCQkgICogZGV2aWNlIGp1 c3QgYmVjYXVzZSBvZiBhIHRlbXBvcmFsIHJldHJ5LWFibGUgZXJyb3IgKHN1Y2gKIAkJICAqIGFz IHBhdGggb2YgdHJhbnNwb3J0IGVycm9ycykuCiAJCSAgKi8KLQkJaWYgKHN0YXR1cyA+IDAgJiYg KHN0YXR1cyAmIE5WTUVfU0NfRE5SKSkKKwkJaWYgKHN0YXR1cyA+IDAgJiYgKHN0YXR1cyAmIE5W TUVfU0NfRE5SKSAmJiAhbnZtZV9tdWx0aV9jc3MoY3RybCkpCiAJCQlzdGF0dXMgPSAwOwogCQln b3RvIGZyZWVfZGF0YTsKIAl9CkBAIC0xMTM2LDEyICsxMTQ5LDE5IEBAIHN0YXRpYyBpbnQgbnZt ZV9pZGVudGlmeV9uc19kZXNjcyhzdHJ1Y3QgbnZtZV9jdHJsICpjdHJsLCB1bnNpZ25lZCBuc2lk LAogCQlpZiAoY3VyLT5uaWRsID09IDApCiAJCQlicmVhazsKIAotCQlsZW4gPSBudm1lX3Byb2Nl c3NfbnNfZGVzYyhjdHJsLCBpZHMsIGN1cik7CisJCWxlbiA9IG52bWVfcHJvY2Vzc19uc19kZXNj KGN0cmwsIGlkcywgY3VyLCAmY3NpX3NlZW4pOwogCQlpZiAobGVuIDwgMCkKLQkJCWdvdG8gZnJl ZV9kYXRhOworCQkJYnJlYWs7CiAKIAkJbGVuICs9IHNpemVvZigqY3VyKTsKIAl9CisKKwlpZiAo bnZtZV9tdWx0aV9jc3MoY3RybCkgJiYgIWNzaV9zZWVuKSB7CisJCWRldl93YXJuKGN0cmwtPmRl dmljZSwgIkNvbW1hbmQgc2V0IG5vdCByZXBvcnRlZCBmb3IgbnNpZDolZFxuIiwKKwkJCSBuc2lk KTsKKwkJc3RhdHVzID0gLUVJTlZBTDsKKwl9CisKIGZyZWVfZGF0YToKIAlrZnJlZShkYXRhKTsK IAlyZXR1cm4gc3RhdHVzOwpAQCAtMTc5OCw3ICsxODE4LDcgQEAgc3RhdGljIGludCBudm1lX3Jl cG9ydF9uc19pZHMoc3RydWN0IG52bWVfY3RybCAqY3RybCwgdW5zaWduZWQgaW50IG5zaWQsCiAJ CW1lbWNweShpZHMtPmV1aTY0LCBpZC0+ZXVpNjQsIHNpemVvZihpZC0+ZXVpNjQpKTsKIAlpZiAo Y3RybC0+dnMgPj0gTlZNRV9WUygxLCAyLCAwKSkKIAkJbWVtY3B5KGlkcy0+bmd1aWQsIGlkLT5u Z3VpZCwgc2l6ZW9mKGlkLT5uZ3VpZCkpOwotCWlmIChjdHJsLT52cyA+PSBOVk1FX1ZTKDEsIDMs IDApKQorCWlmIChjdHJsLT52cyA+PSBOVk1FX1ZTKDEsIDMsIDApIHx8IG52bWVfbXVsdGlfY3Nz KGN0cmwpKQogCQlyZXR1cm4gbnZtZV9pZGVudGlmeV9uc19kZXNjcyhjdHJsLCBuc2lkLCBpZHMp OwogCXJldHVybiAwOwogfQpAQCAtMTgxNCw3ICsxODM0LDggQEAgc3RhdGljIGJvb2wgbnZtZV9u c19pZHNfZXF1YWwoc3RydWN0IG52bWVfbnNfaWRzICphLCBzdHJ1Y3QgbnZtZV9uc19pZHMgKmIp CiB7CiAJcmV0dXJuIHV1aWRfZXF1YWwoJmEtPnV1aWQsICZiLT51dWlkKSAmJgogCQltZW1jbXAo JmEtPm5ndWlkLCAmYi0+bmd1aWQsIHNpemVvZihhLT5uZ3VpZCkpID09IDAgJiYKLQkJbWVtY21w KCZhLT5ldWk2NCwgJmItPmV1aTY0LCBzaXplb2YoYS0+ZXVpNjQpKSA9PSAwOworCQltZW1jbXAo JmEtPmV1aTY0LCAmYi0+ZXVpNjQsIHNpemVvZihhLT5ldWk2NCkpID09IDAgJiYKKwkJYS0+Y3Np ID09IGItPmNzaTsKIH0KIAogc3RhdGljIGludCBudm1lX3NldHVwX3N0cmVhbXNfbnMoc3RydWN0 IG52bWVfY3RybCAqY3RybCwgc3RydWN0IG52bWVfbnMgKm5zLApAQCAtMTkzNiw2ICsxOTU3LDE1 IEBAIHN0YXRpYyBpbnQgX19udm1lX3JldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlz aywgc3RydWN0IG52bWVfaWRfbnMgKmlkKQogCWlmIChucy0+bGJhX3NoaWZ0ID09IDApCiAJCW5z LT5sYmFfc2hpZnQgPSA5OwogCisJc3dpdGNoIChucy0+aGVhZC0+aWRzLmNzaSkgeworCWNhc2Ug TlZNRV9DU0lfTlZNOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfd2FybihjdHJsLT5kZXZp Y2UsICJ1bmtub3duIGNzaTolZCBuczolZFxuIiwKKwkJCW5zLT5oZWFkLT5pZHMuY3NpLCBucy0+ aGVhZC0+bnNfaWQpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlpZiAoKGN0cmwtPnF1aXJr cyAmIE5WTUVfUVVJUktfU1RSSVBFX1NJWkUpICYmCiAJICAgIGlzX3Bvd2VyX29mXzIoY3RybC0+ bWF4X2h3X3NlY3RvcnMpKQogCQlpb2IgPSBjdHJsLT5tYXhfaHdfc2VjdG9yczsKQEAgLTIyNjks NyArMjI5OSwxMCBAQCBpbnQgbnZtZV9lbmFibGVfY3RybChzdHJ1Y3QgbnZtZV9jdHJsICpjdHJs KQogCiAJY3RybC0+cGFnZV9zaXplID0gMSA8PCBwYWdlX3NoaWZ0OwogCi0JY3RybC0+Y3RybF9j b25maWcgPSBOVk1FX0NDX0NTU19OVk07CisJaWYgKE5WTUVfQ0FQX0NTUyhjdHJsLT5jYXApICYg TlZNRV9DQVBfQ1NTX0NTSSkKKwkJY3RybC0+Y3RybF9jb25maWcgPSBOVk1FX0NDX0NTU19DU0k7 CisJZWxzZQorCQljdHJsLT5jdHJsX2NvbmZpZyA9IE5WTUVfQ0NfQ1NTX05WTTsKIAljdHJsLT5j dHJsX2NvbmZpZyB8PSAocGFnZV9zaGlmdCAtIDEyKSA8PCBOVk1FX0NDX01QU19TSElGVDsKIAlj dHJsLT5jdHJsX2NvbmZpZyB8PSBOVk1FX0NDX0FNU19SUiB8IE5WTUVfQ0NfU0hOX05PTkU7CiAJ Y3RybC0+Y3RybF9jb25maWcgfD0gTlZNRV9DQ19JT1NRRVMgfCBOVk1FX0NDX0lPQ1FFUzsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L252bWUuaCBiL2RyaXZlcnMvbnZtZS9ob3N0L252 bWUuaAppbmRleCA5MTllYmFmM2ZkZWYuLjRhYTMyMWIxNmVhYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9udm1lL2hvc3QvbnZtZS5oCisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L252bWUuaApAQCAtMzM5 LDYgKzMzOSw3IEBAIHN0cnVjdCBudm1lX25zX2lkcyB7CiAJdTgJZXVpNjRbOF07CiAJdTgJbmd1 aWRbMTZdOwogCXV1aWRfdAl1dWlkOworCXU4CWNzaTsKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L252bWUuaCBiL2luY2x1ZGUvbGludXgvbnZtZS5oCmluZGV4IDVjZTUxYWI0 YzUwZS4uODFmZmU1MjQ3NTA1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L252bWUuaAorKysg Yi9pbmNsdWRlL2xpbnV4L252bWUuaApAQCAtMTMyLDYgKzEzMiw3IEBAIGVudW0gewogI2RlZmlu ZSBOVk1FX0NBUF9USU1FT1VUKGNhcCkJKCgoY2FwKSA+PiAyNCkgJiAweGZmKQogI2RlZmluZSBO Vk1FX0NBUF9TVFJJREUoY2FwKQkoKChjYXApID4+IDMyKSAmIDB4ZikKICNkZWZpbmUgTlZNRV9D QVBfTlNTUkMoY2FwKQkoKChjYXApID4+IDM2KSAmIDB4MSkKKyNkZWZpbmUgTlZNRV9DQVBfQ1NT KGNhcCkJKCgoY2FwKSA+PiAzNykgJiAweGZmKQogI2RlZmluZSBOVk1FX0NBUF9NUFNNSU4oY2Fw KQkoKChjYXApID4+IDQ4KSAmIDB4ZikKICNkZWZpbmUgTlZNRV9DQVBfTVBTTUFYKGNhcCkJKCgo Y2FwKSA+PiA1MikgJiAweGYpCiAKQEAgLTE2Miw3ICsxNjMsNiBAQCBlbnVtIHsKIAogZW51bSB7 CiAJTlZNRV9DQ19FTkFCTEUJCT0gMSA8PCAwLAotCU5WTUVfQ0NfQ1NTX05WTQkJPSAwIDw8IDQs CiAJTlZNRV9DQ19FTl9TSElGVAk9IDAsCiAJTlZNRV9DQ19DU1NfU0hJRlQJPSA0LAogCU5WTUVf Q0NfTVBTX1NISUZUCT0gNywKQEAgLTE3MCw2ICsxNzAsOSBAQCBlbnVtIHsKIAlOVk1FX0NDX1NI Tl9TSElGVAk9IDE0LAogCU5WTUVfQ0NfSU9TUUVTX1NISUZUCT0gMTYsCiAJTlZNRV9DQ19JT0NR RVNfU0hJRlQJPSAyMCwKKwlOVk1FX0NDX0NTU19OVk0JCT0gMCA8PCBOVk1FX0NDX0NTU19TSElG VCwKKwlOVk1FX0NDX0NTU19DU0kJCT0gNiA8PCBOVk1FX0NDX0NTU19TSElGVCwKKwlOVk1FX0ND X0NTU19NQVNLCT0gNyA8PCBOVk1FX0NDX0NTU19TSElGVCwKIAlOVk1FX0NDX0FNU19SUgkJPSAw IDw8IE5WTUVfQ0NfQU1TX1NISUZULAogCU5WTUVfQ0NfQU1TX1dSUlUJPSAxIDw8IE5WTUVfQ0Nf QU1TX1NISUZULAogCU5WTUVfQ0NfQU1TX1ZTCQk9IDcgPDwgTlZNRV9DQ19BTVNfU0hJRlQsCkBA IC0xNzksNiArMTgyLDggQEAgZW51bSB7CiAJTlZNRV9DQ19TSE5fTUFTSwk9IDMgPDwgTlZNRV9D Q19TSE5fU0hJRlQsCiAJTlZNRV9DQ19JT1NRRVMJCT0gTlZNRV9OVk1fSU9TUUVTIDw8IE5WTUVf Q0NfSU9TUUVTX1NISUZULAogCU5WTUVfQ0NfSU9DUUVTCQk9IE5WTUVfTlZNX0lPQ1FFUyA8PCBO Vk1FX0NDX0lPQ1FFU19TSElGVCwKKwlOVk1FX0NBUF9DU1NfTlZNCT0gMSA8PCAwLAorCU5WTUVf Q0FQX0NTU19DU0kJPSAxIDw8IDYsCiAJTlZNRV9DU1RTX1JEWQkJPSAxIDw8IDAsCiAJTlZNRV9D U1RTX0NGUwkJPSAxIDw8IDEsCiAJTlZNRV9DU1RTX05TU1JPCQk9IDEgPDwgNCwKQEAgLTM3NCw2 ICszNzksOCBAQCBlbnVtIHsKIAlOVk1FX0lEX0NOU19DVFJMCQk9IDB4MDEsCiAJTlZNRV9JRF9D TlNfTlNfQUNUSVZFX0xJU1QJPSAweDAyLAogCU5WTUVfSURfQ05TX05TX0RFU0NfTElTVAk9IDB4 MDMsCisJTlZNRV9JRF9DTlNfQ1NfTlMJCT0gMHgwNSwKKwlOVk1FX0lEX0NOU19DU19DVFJMCQk9 IDB4MDYsCiAJTlZNRV9JRF9DTlNfTlNfUFJFU0VOVF9MSVNUCT0gMHgxMCwKIAlOVk1FX0lEX0NO U19OU19QUkVTRU5UCQk9IDB4MTEsCiAJTlZNRV9JRF9DTlNfQ1RSTF9OU19MSVNUCT0gMHgxMiwK QEAgLTM4Myw2ICszOTAsMTAgQEAgZW51bSB7CiAJTlZNRV9JRF9DTlNfVVVJRF9MSVNUCQk9IDB4 MTcsCiB9OwogCitlbnVtIHsKKwlOVk1FX0NTSV9OVk0JCQk9IDAsCit9OworCiBlbnVtIHsKIAlO Vk1FX0RJUl9JREVOVElGWQkJPSAweDAwLAogCU5WTUVfRElSX1NUUkVBTVMJCT0gMHgwMSwKQEAg LTQzNSwxMSArNDQ2LDEzIEBAIHN0cnVjdCBudm1lX25zX2lkX2Rlc2MgewogI2RlZmluZSBOVk1F X05JRFRfRVVJNjRfTEVOCTgKICNkZWZpbmUgTlZNRV9OSURUX05HVUlEX0xFTgkxNgogI2RlZmlu ZSBOVk1FX05JRFRfVVVJRF9MRU4JMTYKKyNkZWZpbmUgTlZNRV9OSURUX0NTSV9MRU4JMQogCiBl bnVtIHsKIAlOVk1FX05JRFRfRVVJNjQJCT0gMHgwMSwKIAlOVk1FX05JRFRfTkdVSUQJCT0gMHgw MiwKIAlOVk1FX05JRFRfVVVJRAkJPSAweDAzLAorCU5WTUVfTklEVF9DU0kJCT0gMHgwNCwKIH07 CiAKIHN0cnVjdCBudm1lX3NtYXJ0X2xvZyB7CkBAIC05NzIsNyArOTg1LDkgQEAgc3RydWN0IG52 bWVfaWRlbnRpZnkgewogCV9fdTgJCQljbnM7CiAJX191OAkJCXJzdmQzOwogCV9fbGUxNgkJCWN0 cmxpZDsKLQlfX3UzMgkJCXJzdmQxMVs1XTsKKwlfX3U4CQkJcnN2ZDExWzNdOworCV9fdTgJCQlj c2k7CisJX191MzIJCQlyc3ZkMTJbNF07CiB9OwogCiAjZGVmaW5lIE5WTUVfSURFTlRJRllfREFU QV9TSVpFIDQwOTYKLS0gCjIuMjQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkxpbnV4LW52bWUgbWFpbGluZyBsaXN0CkxpbnV4LW52bWVAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LW52bWUK