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 EC710C0219E for ; Mon, 10 Feb 2025 22:55:56 +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=8knTq2ryRgmOySYclFKnuBeyufWQQnUgoBx7xjW/U9U=; b=g87T16lw1ia0iC UdD+T5eupFNZ/41nvo8DpMYKW5DKSz2F6hIzAu/0Zh/V8nu/CI1SIzH4kFcTg1Yjn6EAaQ9fqttj4 SMAvsgJr0ivd8YwXXm0+hCE0bhldStNAcXV9w3Xjkn58fcWQvWo6OIsRF46lier5rxDyIe1yd7tb/ mmHiJRSbCbpvQJHI+PUBjqQQ/ypEDza+fpF0/jJK8hyg/6HfrFFCrmIqtPm/GCJN43ZoirxCMyDjn fAWw2pR3C2urmaEMe4CGuyiQ9JN16O1pMJH05t1NFs3mqAYFKkeHDoWIi75OC+lmI/sidtf7qwnhY EfrWI7f6raWOUDxzvvvA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thcgx-00000001kfO-0zpE; Mon, 10 Feb 2025 22:55:51 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thbSB-00000001VXY-0bMc for linux-riscv@bombadil.infradead.org; Mon, 10 Feb 2025 21:36:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=fxr85atN+ZkCzXnDiXx5YdkbxPsmbJ9qeIbQy8XmRYw=; b=fgb2qz6nij+6pHpZ26V5acBjwb 8du+x+B34l1DajngolMIUQp8Dbf6TfBNfJrETRm8uLZv35gntLw704T55ZNy/ioQV5veenEy42+Av fvah7q0UeKw8mqU6E9iSWB+D2J6kbsAPyL5WKbLwvN7sY9xEfOqYk3d5Ti6RIOy+E5lyLDnWbt653 iPtT7PvY63Zb2wtx4GibLOCrC3IEACFcszhbL2WAjP+FgCSLdWz7tFnh41cslQM7RrRU5cFkkvSM4 5C+TD085w3zngm+2W+dbs2Ui3ZNBI54RUAqcdY1cQ7yUBnri8KYS10W3ykEs3UN2ZY/Q4VZe0/37G +4rwlg+g==; Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thbS6-00000000ICU-1QGH for linux-riscv@lists.infradead.org; Mon, 10 Feb 2025 21:36:29 +0000 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-43948021a45so11011125e9.1 for ; Mon, 10 Feb 2025 13:36:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739223382; x=1739828182; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fxr85atN+ZkCzXnDiXx5YdkbxPsmbJ9qeIbQy8XmRYw=; b=e6tUokSKCt1UpctZPNQSvsA9EbHBJd05hLlgnQrtdte7hcZz1Kra1MPjyMzbshAfdh XMdntz+bRjr1O6Hyz8UAMv0/EuA5ODM0rLd4S1Q2K7SixIeygruPLztBqkbxA+c98UtS 629AnvMB9IbGFcKKupN9jFXHWY3RQodc70gzyEyO2XVGi0TwyURmGvFNw91XXtQkSLwh K15RUdYDHzlQCafHfAmRt0bGbsv/AdIXzonFemDNX7ZRBiIiI3365Es5vTxfeb6nDYSh t95+Ny9iNgDH5eHfjcN0DoxlTUNWvviaRCwzxSZVcJ1LaRcXXL0s66p2q8RVPrsD6N+G jPUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739223382; x=1739828182; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fxr85atN+ZkCzXnDiXx5YdkbxPsmbJ9qeIbQy8XmRYw=; b=bwh7vR/FupQcYWhYKMb6jBMEAZUJHsXJozt29PSXdzALJrcL3ZWjBGPv7dNozXdpli OQ5pRWeE4He+32cmeX6wk1VR7Qb+T6NazRofbvpC6TrejDKpOBJ4bHiaaObMcwxNRpZO luBnoinqW7VuxqafbsuApWbM/DYmq2tBPOcwaGLFzaFf4NCCFrYKnRr19wV2mc+La9Z3 XRUw8OHHaTw8Lvgp33glunuXyZbqJvdVl6k/KoVD78pbGVr+4Rjon2Jf7Cfa9zRG6iUO hs8kEjdnPdHtDYndsdme7TsNgGwga91Nn68oNfDaV4cvmxa9WzFCiM+ln+nhV5GXLXuI HW5w== X-Forwarded-Encrypted: i=1; AJvYcCVUosVygjIw3BY3OYFk4iVqYrt9vH/mgwIV4Q4ED++RacfP8sYOVJr5hUuNFixVxsuKzbZunXMqHlss0w==@lists.infradead.org X-Gm-Message-State: AOJu0YwdpEHg0pEYXMFmcTBG2Dczg6zBP6NgU2JXQtGsDSOPxUmkkzub pPDaeNeGcrYwk5CMiXHwhmObQrK6qMxfc+Pw3rDTW41GyJCxKXyHnQ7owhuIn+I= X-Gm-Gg: ASbGncvxr2CLOlLO33KXeRVnQQaLsEJldm9Rt1a7iFr4y0+/ENcdsxkV3oT6CDfTYCj rs9FTpYnLoinJJ6eKb14gTXn6BEYr30aCbnwCVnCLyvXtfcSagWKngt115+8j0EQomhrKDdozaL QMcQlSaSxLajo41E5o+AO7tiPvRwvHHhB8hrvY1o5scHoeXqrGryHSSjM6e+lQVfHHbozcMfL+z xLxOGKUnQnyH9LIN7umdNIqe/VSidEMbeQcBCi0aXZ2rLyLq/Mtlqi7KfzEK/EN/CIBhX3YZ8VS GuW2YM86l5OraPfN X-Google-Smtp-Source: AGHT+IHGg/B8EKVF0J+QgvWPjq0DmPEbNzLTIhnEjBKTQQ0qKQLdjASqPL4jkM0GM1rnPCqrQ2wmbg== X-Received: by 2002:a05:600c:358f:b0:436:1bbe:f686 with SMTP id 5b1f17b1804b1-439249a83c0mr99453375e9.21.1739223382171; Mon, 10 Feb 2025 13:36:22 -0800 (PST) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4394376118esm47541515e9.40.2025.02.10.13.36.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 13:36:21 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Anup Patel , Atish Patra , Shuah Khan , Jonathan Corbet , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Samuel Holland Subject: [PATCH v2 14/15] RISC-V: KVM: add support for FWFT SBI extension Date: Mon, 10 Feb 2025 22:35:47 +0100 Message-ID: <20250210213549.1867704-15-cleger@rivosinc.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250210213549.1867704-1-cleger@rivosinc.com> References: <20250210213549.1867704-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250210_213628_158718_7E60C0BE X-CRM114-Status: GOOD ( 24.33 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org QWRkIGJhc2ljIGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhlIEZXRlQgZXh0ZW5zaW9uIGlu IEtWTS4KClNpZ25lZC1vZmYtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNv bT4KLS0tCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggICAgICAgICAgfCAgIDQg KwogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmkuaCAgICAgIHwgICAxICsKIGFy Y2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaCB8ICAzNyArKysrCiBhcmNo L3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggICAgICAgICAgfCAgIDEgKwogYXJjaC9yaXNj di9rdm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gvcmlzY3Yva3Zt L3ZjcHVfc2JpLmMgICAgICAgICAgICAgICAgICB8ICAgNCArCiBhcmNoL3Jpc2N2L2t2bS92Y3B1 X3NiaV9md2Z0LmMgICAgICAgICAgICAgfCAxODcgKysrKysrKysrKysrKysrKysrKysrCiA3IGZp bGVzIGNoYW5nZWQsIDIzNSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmlfZndmdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9p bmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5o CmluZGV4IGJiOTNkMjk5NWVhMi4uYzBkYjYxYmE2OTFhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1f aG9zdC5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X2ZwLmg+CiAj aW5jbHVkZSA8YXNtL2t2bV92Y3B1X2luc24uaD4KICNpbmNsdWRlIDxhc20va3ZtX3ZjcHVfc2Jp Lmg+CisjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X3NiaV9md2Z0Lmg+CiAjaW5jbHVkZSA8YXNtL2t2 bV92Y3B1X3RpbWVyLmg+CiAjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X3BtdS5oPgogCkBAIC0yODEs NiArMjgyLDkgQEAgc3RydWN0IGt2bV92Y3B1X2FyY2ggewogCS8qIFBlcmZvcm1hbmNlIG1vbml0 b3JpbmcgY29udGV4dCAqLwogCXN0cnVjdCBrdm1fcG11IHBtdV9jb250ZXh0OwogCisJLyogRmly bXdhcmUgZmVhdHVyZSBTQkkgZXh0ZW5zaW9uIGNvbnRleHQgKi8KKwlzdHJ1Y3Qga3ZtX3NiaV9m d2Z0IGZ3ZnRfY29udGV4dDsKKwogCS8qICdzdGF0aWMnIGNvbmZpZ3VyYXRpb25zIHdoaWNoIGFy ZSBzZXQgb25seSBvbmNlICovCiAJc3RydWN0IGt2bV92Y3B1X2NvbmZpZyBjZmc7CiAKZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmggYi9hcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCmluZGV4IGNiNjhiM2E1N2M4Zi4uZmZkMDNmZWQw YzA2IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCisr KyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgKQEAgLTk4LDYgKzk4LDcg QEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4 dF9oc207CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9z YmlfZXh0X2RiY247CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24g dmNwdV9zYmlfZXh0X3N1c3A7CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRl bnNpb24gdmNwdV9zYmlfZXh0X3N0YTsKK2V4dGVybiBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2Jp X2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZndmdDsKIGV4dGVybiBjb25zdCBzdHJ1Y3Qga3ZtX3Zj cHVfc2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZXhwZXJpbWVudGFsOwogZXh0ZXJuIGNvbnN0 IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF92ZW5kb3I7CiAKZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaCBiL2Fy Y2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3ODI1MTdmNmUwOAotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaApAQCAtMCwwICsxLDM3 IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICog Q29weXJpZ2h0IChjKSAyMDI1IFJpdm9zIEluYy4KKyAqCisgKiBBdXRob3JzOgorICogICAgIENs w6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KKyAqLworCisjaWZuZGVmIF9fS1ZN X1ZDUFVfUklTQ1ZfRldGVF9ICisjZGVmaW5lIF9fS1ZNX1ZDUFVfUklTQ1ZfRldGVF9ICisKKyNp bmNsdWRlIDxhc20vc2JpLmg+CisKK3N0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnOworc3RydWN0 IGt2bV92Y3B1OworCitzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2ZlYXR1cmUgeworCWVudW0gc2JpX2Z3 ZnRfZmVhdHVyZV90IGlkOworCWJvb2wgKCpzdXBwb3J0ZWQpKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSk7CisJaW50ICgqc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc2JpX2Z3 ZnRfY29uZmlnICpjb25mLCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKwlpbnQgKCpnZXQpKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKmNvbmYsIHVuc2ln bmVkIGxvbmcgKnZhbHVlKTsKK307CisKK3N0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnIHsKKwlj b25zdCBzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2ZlYXR1cmUgKmZlYXR1cmU7CisJYm9vbCBzdXBwb3J0 ZWQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKK307CisKKy8qIEZXRlQgZGF0YSBzdHJ1Y3R1cmUg cGVyIHZjcHUgKi8KK3N0cnVjdCBrdm1fc2JpX2Z3ZnQgeworCXN0cnVjdCBrdm1fc2JpX2Z3ZnRf Y29uZmlnICpjb25maWdzOworfTsKKworI2RlZmluZSB2Y3B1X3RvX2Z3ZnQodmNwdSkgKCYodmNw dSktPmFyY2guZndmdF9jb250ZXh0KQorCisjZW5kaWYgLyogIV9fS1ZNX1ZDUFVfUklTQ1ZfRldG VF9IICovCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9h cmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKaW5kZXggZjA2YmM1ZWZjZDc5Li5mYTZl ZWUxY2FmNDEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAor KysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgKQEAgLTIwMiw2ICsyMDIsNyBA QCBlbnVtIEtWTV9SSVNDVl9TQklfRVhUX0lEIHsKIAlLVk1fUklTQ1ZfU0JJX0VYVF9EQkNOLAog CUtWTV9SSVNDVl9TQklfRVhUX1NUQSwKIAlLVk1fUklTQ1ZfU0JJX0VYVF9TVVNQLAorCUtWTV9S SVNDVl9TQklfRVhUX0ZXRlQsCiAJS1ZNX1JJU0NWX1NCSV9FWFRfTUFYLAogfTsKIApkaWZmIC0t Z2l0IGEvYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZQpp bmRleCA0ZTBiYmE5MWQyODQuLjA2ZTJkNTJhOWI4OCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9r dm0vTWFrZWZpbGUKKysrIGIvYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcg QEAga3ZtLXkgKz0gdmNwdV9vbmVyZWcubwoga3ZtLSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICs9 IHZjcHVfcG11Lm8KIGt2bS15ICs9IHZjcHVfc2JpLm8KIGt2bS15ICs9IHZjcHVfc2JpX2Jhc2Uu bwora3ZtLXkgKz0gdmNwdV9zYmlfZndmdC5vCiBrdm0teSArPSB2Y3B1X3NiaV9oc20ubwoga3Zt LSQoQ09ORklHX1JJU0NWX1BNVV9TQkkpICs9IHZjcHVfc2JpX3BtdS5vCiBrdm0teSArPSB2Y3B1 X3NiaV9yZXBsYWNlLm8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMgYi9h cmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jCmluZGV4IGY4MWYwNmY4MjY1MC4uM2IzN2RlYWVkNGU3 IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jCisrKyBiL2FyY2gvcmlzY3Yv a3ZtL3ZjcHVfc2JpLmMKQEAgLTc4LDYgKzc4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga3Zt X3Jpc2N2X3NiaV9leHRlbnNpb25fZW50cnkgc2JpX2V4dFtdID0gewogCQkuZXh0X2lkeCA9IEtW TV9SSVNDVl9TQklfRVhUX1NUQSwKIAkJLmV4dF9wdHIgPSAmdmNwdV9zYmlfZXh0X3N0YSwKIAl9 LAorCXsKKwkJLmV4dF9pZHggPSBLVk1fUklTQ1ZfU0JJX0VYVF9GV0ZULAorCQkuZXh0X3B0ciA9 ICZ2Y3B1X3NiaV9leHRfZndmdCwKKwl9LAogCXsKIAkJLmV4dF9pZHggPSBLVk1fUklTQ1ZfU0JJ X0VYVF9FWFBFUklNRU5UQUwsCiAJCS5leHRfcHRyID0gJnZjcHVfc2JpX2V4dF9leHBlcmltZW50 YWwsCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMgYi9hcmNoL3Jp c2N2L2t2bS92Y3B1X3NiaV9md2Z0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5mZTYwOGJmMTY1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2t2bS92 Y3B1X3NiaV9md2Z0LmMKQEAgLTAsMCArMSwxODcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFJpdm9zIEluYy4KKyAqCisg KiBBdXRob3JzOgorICogICAgIENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4K KyAqLworCisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4K KyNpbmNsdWRlIDxsaW51eC9rdm1faG9zdC5oPgorI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+ CisjaW5jbHVkZSA8YXNtL3NiaS5oPgorI2luY2x1ZGUgPGFzbS9rdm1fdmNwdV9zYmkuaD4KKyNp bmNsdWRlIDxhc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaD4KKworc3RhdGljIGNvbnN0IGVudW0gc2Jp X2Z3ZnRfZmVhdHVyZV90IGt2bV9md2Z0X2RlZmluZWRfZmVhdHVyZXNbXSA9IHsKKwlTQklfRldG VF9NSVNBTElHTkVEX0VYQ19ERUxFRywKKwlTQklfRldGVF9MQU5ESU5HX1BBRCwKKwlTQklfRldG VF9TSEFET1dfU1RBQ0ssCisJU0JJX0ZXRlRfRE9VQkxFX1RSQVAsCisJU0JJX0ZXRlRfUFRFX0FE X0hXX1VQREFUSU5HLAorCVNCSV9GV0ZUX1BPSU5URVJfTUFTS0lOR19QTUxFTiwKK307CisKK3N0 YXRpYyBib29sIGt2bV9md2Z0X2lzX2RlZmluZWRfZmVhdHVyZShlbnVtIHNiaV9md2Z0X2ZlYXR1 cmVfdCBmZWF0dXJlKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo a3ZtX2Z3ZnRfZGVmaW5lZF9mZWF0dXJlcyk7IGkrKykgeworCQlpZiAoa3ZtX2Z3ZnRfZGVmaW5l ZF9mZWF0dXJlc1tpXSA9PSBmZWF0dXJlKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJu IGZhbHNlOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV9zYmlfZndmdF9mZWF0dXJlIGZl YXR1cmVzW10gPSB7Cit9OworCitzdGF0aWMgc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKgor a3ZtX3NiaV9md2Z0X2dldF9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIHNiaV9m d2Z0X2ZlYXR1cmVfdCBmZWF0dXJlKQoreworCWludCBpID0gMDsKKwlzdHJ1Y3Qga3ZtX3NiaV9m d2Z0ICpmd2Z0ID0gdmNwdV90b19md2Z0KHZjcHUpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoZmVhdHVyZXMpOyBpKyspIHsKKwkJaWYgKGZ3ZnQtPmNvbmZpZ3NbaV0uZmVhdHVyZS0+ aWQgPT0gZmVhdHVyZSkKKwkJCXJldHVybiAmZndmdC0+Y29uZmlnc1tpXTsKKwl9CisKKwlyZXR1 cm4gTlVMTDsKK30KKworc3RhdGljIGludCBrdm1fZndmdF9nZXRfZmVhdHVyZShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgZmVhdHVyZSwKKwkJCQlzdHJ1Y3Qga3ZtX3NiaV9m d2Z0X2NvbmZpZyAqKmNvbmYpCit7CisJc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKnRjb25m OworCisJLyogRmVhdHVyZSBhcmUgZGVmaW5lZCBhcyAzMiBiaXRzIGlkZW50aWZpZXJzICovCisJ aWYgKGZlYXR1cmUgJiB+KEJJVF9VTEwoMzIpIC0gMSkpCisJCXJldHVybiBTQklfRVJSX0lOVkFM SURfUEFSQU07CisKKwl0Y29uZiA9IGt2bV9zYmlfZndmdF9nZXRfY29uZmlnKHZjcHUsIGZlYXR1 cmUpOworCWlmICghdGNvbmYpIHsKKwkJaWYgKGt2bV9md2Z0X2lzX2RlZmluZWRfZmVhdHVyZShm ZWF0dXJlKSkKKwkJCXJldHVybiBTQklfRVJSX05PVF9TVVBQT1JURUQ7CisKKwkJcmV0dXJuIFNC SV9FUlJfREVOSUVEOworCX0KKworCWlmICghdGNvbmYtPnN1cHBvcnRlZCkKKwkJcmV0dXJuIFNC SV9FUlJfTk9UX1NVUFBPUlRFRDsKKworCSpjb25mID0gdGNvbmY7CisKKwlyZXR1cm4gU0JJX1NV Q0NFU1M7Cit9CisKK3N0YXRpYyBpbnQga3ZtX3NiaV9md2Z0X3NldChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHVuc2lnbmVkIGxvbmcgZmVhdHVyZSwKKwkJCSAgICB1bnNpZ25lZCBsb25nIHZhbHVl LCB1bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWludCByZXQ7CisJc3RydWN0IGt2bV9zYmlfZndm dF9jb25maWcgKmNvbmY7CisKKwlyZXQgPSBrdm1fZndmdF9nZXRfZmVhdHVyZSh2Y3B1LCBmZWF0 dXJlLCAmY29uZik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmICgoZmxhZ3MgJiB+ U0JJX0ZXRlRfU0VUX0ZMQUdfTE9DSykgIT0gMCkKKwkJcmV0dXJuIFNCSV9FUlJfSU5WQUxJRF9Q QVJBTTsKKworCWlmIChjb25mLT5mbGFncyAmIFNCSV9GV0ZUX1NFVF9GTEFHX0xPQ0spCisJCXJl dHVybiBTQklfRVJSX0RFTklFRF9MT0NLRUQ7CisKKwljb25mLT5mbGFncyA9IGZsYWdzOworCisJ cmV0dXJuIGNvbmYtPmZlYXR1cmUtPnNldCh2Y3B1LCBjb25mLCB2YWx1ZSk7Cit9CisKK3N0YXRp YyBpbnQga3ZtX3NiaV9md2Z0X2dldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxv bmcgZmVhdHVyZSwKKwkJCSAgICB1bnNpZ25lZCBsb25nICp2YWx1ZSkKK3sKKwlpbnQgcmV0Owor CXN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mOworCisJcmV0ID0ga3ZtX2Z3ZnRfZ2V0 X2ZlYXR1cmUodmNwdSwgZmVhdHVyZSwgJmNvbmYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwlyZXR1cm4gY29uZi0+ZmVhdHVyZS0+Z2V0KHZjcHUsIGNvbmYsIHZhbHVlKTsKK30KKwor c3RhdGljIGludCBrdm1fc2JpX2V4dF9md2Z0X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLAorCQkJCSAgICBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX3JldHVy biAqcmV0ZGF0YSkKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3Qga3ZtX2NwdV9jb250ZXh0ICpj cCA9ICZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBmdW5jaWQgPSBj cC0+YTY7CisKKwlzd2l0Y2ggKGZ1bmNpZCkgeworCWNhc2UgU0JJX0VYVF9GV0ZUX1NFVDoKKwkJ cmV0ID0ga3ZtX3NiaV9md2Z0X3NldCh2Y3B1LCBjcC0+YTAsIGNwLT5hMSwgY3AtPmEyKTsKKwkJ YnJlYWs7CisJY2FzZSBTQklfRVhUX0ZXRlRfR0VUOgorCQlyZXQgPSBrdm1fc2JpX2Z3ZnRfZ2V0 KHZjcHUsIGNwLT5hMCwgJnJldGRhdGEtPm91dF92YWwpOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlyZXQgPSBTQklfRVJSX05PVF9TVVBQT1JURUQ7CisJCWJyZWFrOworCX0KKworCXJldGRhdGEt PmVycl92YWwgPSByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBrdm1fc2JpX2V4 dF9md2Z0X2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fc2JpX2Z3 ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7CisJY29uc3Qgc3RydWN0IGt2bV9zYmlfZndm dF9mZWF0dXJlICpmZWF0dXJlOworCXN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mOwor CWludCBpOworCisJZndmdC0+Y29uZmlncyA9IGtjYWxsb2MoQVJSQVlfU0laRShmZWF0dXJlcyks IHNpemVvZihzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyksCisJCQkJR0ZQX0tFUk5FTCk7CisJ aWYgKCFmd2Z0LT5jb25maWdzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSsrKSB7CisJCWZlYXR1cmUgPSAmZmVhdHVyZXNbaV07 CisJCWNvbmYgPSAmZndmdC0+Y29uZmlnc1tpXTsKKwkJaWYgKGZlYXR1cmUtPnN1cHBvcnRlZCkK KwkJCWNvbmYtPnN1cHBvcnRlZCA9IGZlYXR1cmUtPnN1cHBvcnRlZCh2Y3B1KTsKKwkJZWxzZQor CQkJY29uZi0+c3VwcG9ydGVkID0gdHJ1ZTsKKworCQljb25mLT5mZWF0dXJlID0gZmVhdHVyZTsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9kZWlu aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQg PSB2Y3B1X3RvX2Z3ZnQodmNwdSk7CisKKwlrZnJlZShmd2Z0LT5jb25maWdzKTsKK30KKworc3Rh dGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7 CisJaW50IGkgPSAwOworCXN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQo dmNwdSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmZWF0dXJlcyk7IGkrKykKKwkJ ZndmdC0+Y29uZmlnc1tpXS5mbGFncyA9IDA7Cit9CisKK2NvbnN0IHN0cnVjdCBrdm1fdmNwdV9z YmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9md2Z0ID0geworCS5leHRpZF9zdGFydCA9IFNCSV9F WFRfRldGVCwKKwkuZXh0aWRfZW5kID0gU0JJX0VYVF9GV0ZULAorCS5oYW5kbGVyID0ga3ZtX3Ni aV9leHRfZndmdF9oYW5kbGVyLAorCS5pbml0ID0ga3ZtX3NiaV9leHRfZndmdF9pbml0LAorCS5k ZWluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2RlaW5pdCwKKwkucmVzZXQgPSBrdm1fc2JpX2V4dF9m d2Z0X3Jlc2V0LAorfTsKLS0gCjIuNDcuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtcmlzY3YK