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 92EA9C3DA6D for ; Fri, 23 May 2025 08:06:57 +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=I7tAsCaQFAD5lYoQOlVAdnynfQUUJgH7O3Q6GgIojRU=; b=t6geY2DT9C4sAF KQYRZ8z/C37Y9oXZdoY1cqlRvKwc6a0fz1DhKWICHaQIM6+X4KVwZtjBfqch21VdLp9bxad1x1vzh 7faxVRrLTIKgiK5OeuHQw9PR+bXsYLW3lEfBMnkFKybroCwl+lsnGTAzlRqK1uDlwuUlWy63PhSfw +2BUeJTK4/L8TYPoKj7vQiYjUJsrh9Msm+avwjs9KtdPX19VUBnay6F2fGjzG/s4gtGrjQjmQMXz/ o2B17UIrywNVZyc5H8ieq49KC9sZGAWjU8GqKtYGfbdtT9RcnchcHhKvT/gitwk7fino0WcDE8guv 10a3KMZ4nWBsNEc1XghA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uINQf-00000003GG4-10aK; Fri, 23 May 2025 08:06:57 +0000 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uINF9-00000003Edt-0DFJ for kvm-riscv@lists.infradead.org; Fri, 23 May 2025 07:55:04 +0000 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-30820167b47so543817a91.0 for ; Fri, 23 May 2025 00:55:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1747986902; x=1748591702; 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=TIh2/la5VXYaUYqPJQiKhgsiJPpkFatbGozgF/Ujxa8=; b=Hx04b2hWP6uxRlBX7K4/dxUXlLPtupv3dsPLR21Uwn//5s3XscQj4JOX0KJsHnPA3i Kq7/7MQlcShcBrJWt5C6ly8AlXiRDYw37rF2dine55Ro3/dWlEGtPuTZUMpoXPA+nQ5E e9OQgq4qhLrswoWa3Y7GFNMe3gx+foTDag9vql8FToZpUcKU2+0tihl03cB79XXNw/8l uTSP52PSp06V+elzsZN8doHVg/crxeYKLl9VJaMAIskY1mQNBr930At/Y+ybUFKFLSKg IMBkSWM6aw6VQmSDxCVhJtwK8f1ztP1991ethEs0bE7+f27tsDcZoITqYEAUvwU9YbQI O9cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747986902; x=1748591702; 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=TIh2/la5VXYaUYqPJQiKhgsiJPpkFatbGozgF/Ujxa8=; b=HCgYs65ooJUWW/DHIXlzUTYz/KSMwwFuz0WPktgDxYWjeyXvBGi1hq3aWWN2ZjQXcM 0vKLjRrb0aQ4uoRjT7UBxxhFJnk61WZu+/kzxuvCZgDXRf6Wb7QljDaR9qS4A6hbC53D v/JB4Hw3SJO5kzS8r+5n5Y4WTLqmUuwp0B1KeztXyCYGQCGTsWRyiZzdRkHsClRKuvdv 2wShq49hY/B4J7LcJ+6GKwdIis7RoxJuk69ixeKJPOlQbZ1xdyI1OcBoX95uZ9eKju2v AXnMDFQ3bVennKhiGLAQI1ztPYLFXbQCnEORMwhj0PXwZ2P4vin8oSbOktQD42s1HLA+ +zYg== X-Forwarded-Encrypted: i=1; AJvYcCUORIsn8c10GJzQwAi8Hx3mnNlzI1f7JRl8b8vypNHJHvy/VCbCg+pSaM7bPtJAMZs7ep1+34+PjSQ=@lists.infradead.org X-Gm-Message-State: AOJu0YwT2jSlyGxiZbSZzgppvxn/n6i5WhjFwWamsLhv+AUqgExXMft6 rpHvYXY+/rbC7exg1z3oIBtou/HXYzJd1toDJa4J/8bcbJJKhicEiRlAVVsBBdAXw3k= X-Gm-Gg: ASbGncsMM69I75+5fItrn1F3/Xb3JnJjuaXJMcQcocDauMqJexIbykscP3mTRLMu3Mk 4ItpERHYBZXZ6VlwJphP4mTwEe3qEwxKPM/CFDJaA7USBvwCG0fauFnz7CbUHFlTqzEAiErfHPl pORSM6LFgj0l4DwskkbApbgJfqo9drejf7cWFLQ5btbyBCHb1t+o+hsFmuq3qnFnh29jFAgRq0C 7Y8++oS+JBsSH2q4pYS2g0gRet+rshP9bQbHDH0DdOEafyIHhWFezAuIvv7h6MEJvem6u3vtIhF oHUOwT9b7vnZBptP1Oal7gELUK+EGay6RmHERMfJHQusHB+0XaMshy5C80aA1i0= X-Google-Smtp-Source: AGHT+IG7scHh1XLTOwqsg+d0XjixFekQ/XtdIqZ5IKoCHMTuK67iJHSWsWdeIkPfoGw2bTaM8Rva+Q== X-Received: by 2002:a17:90b:1811:b0:2fa:42f3:e3e4 with SMTP id 98e67ed59e1d1-310e8899e12mr3790096a91.3.1747986902131; Fri, 23 May 2025 00:55:02 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30f36513bb7sm6767204a91.46.2025.05.23.00.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 00:55:01 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Andrew Jones , Ved Shanbhogue Subject: [PATCH 1/3] lib/riscv: export FWFT functions Date: Fri, 23 May 2025 09:53:08 +0200 Message-ID: <20250523075341.1355755-2-cleger@rivosinc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250523075341.1355755-1-cleger@rivosinc.com> References: <20250523075341.1355755-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250523_005503_097759_E5B0E785 X-CRM114-Status: GOOD ( 13.41 ) X-BeenThere: kvm-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: "kvm-riscv" Errors-To: kvm-riscv-bounces+kvm-riscv=archiver.kernel.org@lists.infradead.org VGhlc2UgZnVuY3Rpb25zIHdpbGwgcHJvYmFibHkgYmUgbmVlZGVkIGJ5IG90aGVyIHRlc3RzIGFz IHdlbGwsIGV4cG9zZQp0aGVtLgoKU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVn ZXJAcml2b3NpbmMuY29tPgotLS0KIGxpYi9yaXNjdi9hc20vc2JpLmggfCAgNSArKysrKwogbGli L3Jpc2N2L3NiaS5jICAgICB8IDIwICsrKysrKysrKysrKysrKysrKwogcmlzY3Yvc2JpLWZ3ZnQu YyAgICB8IDQ5ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvcmlzY3YvYXNtL3NiaS5oIGIvbGliL3Jpc2N2L2FzbS9zYmkuaAppbmRleCBh NTczOGE1Yy4uMDgxNDYyNjAgMTAwNjQ0Ci0tLSBhL2xpYi9yaXNjdi9hc20vc2JpLmgKKysrIGIv bGliL3Jpc2N2L2FzbS9zYmkuaApAQCAtMzAyLDUgKzMwMiwxMCBAQCBzdHJ1Y3Qgc2JpcmV0IHNi aV9zc2VfaGFydF9tYXNrKHZvaWQpOwogc3RydWN0IHNiaXJldCBzYmlfc3NlX2hhcnRfdW5tYXNr KHZvaWQpOwogc3RydWN0IHNiaXJldCBzYmlfc3NlX2luamVjdCh1bnNpZ25lZCBsb25nIGV2ZW50 X2lkLCB1bnNpZ25lZCBsb25nIGhhcnRfaWQpOwogCitzdHJ1Y3Qgc2JpcmV0IHNiaV9md2Z0X3Nl dF9yYXcodW5zaWduZWQgbG9uZyBmZWF0dXJlLCB1bnNpZ25lZCBsb25nIHZhbHVlLCB1bnNpZ25l ZCBsb25nIGZsYWdzKTsKK3N0cnVjdCBzYmlyZXQgc2JpX2Z3ZnRfc2V0KHVpbnQzMl90IGZlYXR1 cmUsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworc3RydWN0IHNi aXJldCBzYmlfZndmdF9nZXRfcmF3KHVuc2lnbmVkIGxvbmcgZmVhdHVyZSk7CitzdHJ1Y3Qgc2Jp cmV0IHNiaV9md2Z0X2dldCh1aW50MzJfdCBmZWF0dXJlKTsKKwogI2VuZGlmIC8qICFfX0FTU0VN QkxFUl9fICovCiAjZW5kaWYgLyogX0FTTVJJU0NWX1NCSV9IXyAqLwpkaWZmIC0tZ2l0IGEvbGli L3Jpc2N2L3NiaS5jIGIvbGliL3Jpc2N2L3NiaS5jCmluZGV4IDI5NTkzNzhmLi4wYjU0N2Q0MiAx MDA2NDQKLS0tIGEvbGliL3Jpc2N2L3NiaS5jCisrKyBiL2xpYi9yaXNjdi9zYmkuYwpAQCAtMTA3 LDYgKzEwNywyNiBAQCBzdHJ1Y3Qgc2JpcmV0IHNiaV9zc2VfaW5qZWN0KHVuc2lnbmVkIGxvbmcg ZXZlbnRfaWQsIHVuc2lnbmVkIGxvbmcgaGFydF9pZCkKIAlyZXR1cm4gc2JpX2VjYWxsKFNCSV9F WFRfU1NFLCBTQklfRVhUX1NTRV9JTkpFQ1QsIGV2ZW50X2lkLCBoYXJ0X2lkLCAwLCAwLCAwLCAw KTsKIH0KIAorc3RydWN0IHNiaXJldCBzYmlfZndmdF9zZXRfcmF3KHVuc2lnbmVkIGxvbmcgZmVh dHVyZSwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlyZXR1 cm4gc2JpX2VjYWxsKFNCSV9FWFRfRldGVCwgU0JJX0VYVF9GV0ZUX1NFVCwgZmVhdHVyZSwgdmFs dWUsIGZsYWdzLCAwLCAwLCAwKTsKK30KKworc3RydWN0IHNiaXJldCBzYmlfZndmdF9zZXQodWlu dDMyX3QgZmVhdHVyZSwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgdW5zaWduZWQgbG9uZyBmbGFncykK K3sKKwlyZXR1cm4gc2JpX2Z3ZnRfc2V0X3JhdyhmZWF0dXJlLCB2YWx1ZSwgZmxhZ3MpOworfQor CitzdHJ1Y3Qgc2JpcmV0IHNiaV9md2Z0X2dldF9yYXcodW5zaWduZWQgbG9uZyBmZWF0dXJlKQor eworCXJldHVybiBzYmlfZWNhbGwoU0JJX0VYVF9GV0ZULCBTQklfRVhUX0ZXRlRfR0VULCBmZWF0 dXJlLCAwLCAwLCAwLCAwLCAwKTsKK30KKworc3RydWN0IHNiaXJldCBzYmlfZndmdF9nZXQodWlu dDMyX3QgZmVhdHVyZSkKK3sKKwlyZXR1cm4gc2JpX2Z3ZnRfZ2V0X3JhdyhmZWF0dXJlKTsKK30K Kwogdm9pZCBzYmlfc2h1dGRvd24odm9pZCkKIHsKIAlzYmlfZWNhbGwoU0JJX0VYVF9TUlNULCAw LCAwLCAwLCAwLCAwLCAwLCAwKTsKZGlmZiAtLWdpdCBhL3Jpc2N2L3NiaS1md2Z0LmMgYi9yaXNj di9zYmktZndmdC5jCmluZGV4IGM1MmZiZDZlLi44OTIwYmNiNSAxMDA2NDQKLS0tIGEvcmlzY3Yv c2JpLWZ3ZnQuYworKysgYi9yaXNjdi9zYmktZndmdC5jCkBAIC0xOSwzNyArMTksMTYgQEAKIAog dm9pZCBjaGVja19md2Z0KHZvaWQpOwogCi0KLXN0YXRpYyBzdHJ1Y3Qgc2JpcmV0IGZ3ZnRfc2V0 X3Jhdyh1bnNpZ25lZCBsb25nIGZlYXR1cmUsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIHVuc2lnbmVk IGxvbmcgZmxhZ3MpCi17Ci0JcmV0dXJuIHNiaV9lY2FsbChTQklfRVhUX0ZXRlQsIFNCSV9FWFRf RldGVF9TRVQsIGZlYXR1cmUsIHZhbHVlLCBmbGFncywgMCwgMCwgMCk7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3Qgc2JpcmV0IGZ3ZnRfc2V0KHVpbnQzMl90IGZlYXR1cmUsIHVuc2lnbmVkIGxvbmcgdmFs dWUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCi17Ci0JcmV0dXJuIGZ3ZnRfc2V0X3JhdyhmZWF0dXJl LCB2YWx1ZSwgZmxhZ3MpOwotfQotCi1zdGF0aWMgc3RydWN0IHNiaXJldCBmd2Z0X2dldF9yYXco dW5zaWduZWQgbG9uZyBmZWF0dXJlKQotewotCXJldHVybiBzYmlfZWNhbGwoU0JJX0VYVF9GV0ZU LCBTQklfRVhUX0ZXRlRfR0VULCBmZWF0dXJlLCAwLCAwLCAwLCAwLCAwKTsKLX0KLQotc3RhdGlj IHN0cnVjdCBzYmlyZXQgZndmdF9nZXQodWludDMyX3QgZmVhdHVyZSkKLXsKLQlyZXR1cm4gZndm dF9nZXRfcmF3KGZlYXR1cmUpOwotfQotCiBzdGF0aWMgc3RydWN0IHNiaXJldCBmd2Z0X3NldF9h bmRfY2hlY2tfcmF3KGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBmZWF0dXJlLAogCQkJ CQkgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKIAlzdHJ1 Y3Qgc2JpcmV0IHJldDsKIAotCXJldCA9IGZ3ZnRfc2V0X3JhdyhmZWF0dXJlLCB2YWx1ZSwgZmxh Z3MpOworCXJldCA9IHNiaV9md2Z0X3NldF9yYXcoZmVhdHVyZSwgdmFsdWUsIGZsYWdzKTsKIAlp ZiAoIXNiaXJldF9yZXBvcnRfZXJyb3IoJnJldCwgU0JJX1NVQ0NFU1MsICJzZXQgdG8gJWxkJXMi LCB2YWx1ZSwgc3RyKSkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGZ3ZnRfZ2V0X3JhdyhmZWF0 dXJlKTsKKwlyZXQgPSBzYmlfZndmdF9nZXRfcmF3KGZlYXR1cmUpOwogCXNiaXJldF9yZXBvcnQo JnJldCwgU0JJX1NVQ0NFU1MsIHZhbHVlLCAiZ2V0ICVsZCBhZnRlciBzZXQlcyIsIHZhbHVlLCBz dHIpOwogCiAJcmV0dXJuIHJldDsKQEAgLTU5LDE3ICszOCwxNyBAQCBzdGF0aWMgdm9pZCBmd2Z0 X2NoZWNrX3Jlc2VydmVkKHVuc2lnbmVkIGxvbmcgaWQpCiB7CiAJc3RydWN0IHNiaXJldCByZXQ7 CiAKLQlyZXQgPSBmd2Z0X2dldChpZCk7CisJcmV0ID0gc2JpX2Z3ZnRfZ2V0KGlkKTsKIAlzYmly ZXRfcmVwb3J0X2Vycm9yKCZyZXQsIFNCSV9FUlJfREVOSUVELCAiZ2V0IHJlc2VydmVkIGZlYXR1 cmUgMHglbHgiLCBpZCk7CiAKLQlyZXQgPSBmd2Z0X3NldChpZCwgMSwgMCk7CisJcmV0ID0gc2Jp X2Z3ZnRfc2V0KGlkLCAxLCAwKTsKIAlzYmlyZXRfcmVwb3J0X2Vycm9yKCZyZXQsIFNCSV9FUlJf REVOSUVELCAic2V0IHJlc2VydmVkIGZlYXR1cmUgMHglbHgiLCBpZCk7CiB9CiAKLS8qIE11c3Qg YmUgY2FsbGVkIGJlZm9yZSBhbnkgZndmdF9zZXQoKSBjYWxsIGlzIG1hZGUgZm9yIEBmZWF0dXJl ICovCisvKiBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHNiaV9md2Z0X3NldCgpIGNhbGwgaXMg bWFkZSBmb3IgQGZlYXR1cmUgKi8KIHN0YXRpYyB2b2lkIGZ3ZnRfY2hlY2tfcmVzZXQodWludDMy X3QgZmVhdHVyZSwgdW5zaWduZWQgbG9uZyByZXNldCkKIHsKLQlzdHJ1Y3Qgc2JpcmV0IHJldCA9 IGZ3ZnRfZ2V0KGZlYXR1cmUpOworCXN0cnVjdCBzYmlyZXQgcmV0ID0gc2JpX2Z3ZnRfZ2V0KGZl YXR1cmUpOwogCiAJc2JpcmV0X3JlcG9ydCgmcmV0LCBTQklfU1VDQ0VTUywgcmVzZXQsICJyZXNl dHMgdG8gJWx1IiwgcmVzZXQpOwogfQpAQCAtODcsMTYgKzY2LDE2IEBAIHN0YXRpYyB2b2lkIGZ3 ZnRfZmVhdHVyZV9sb2NrX3Rlc3RfdmFsdWVzKHVpbnQzMl90IGZlYXR1cmUsIHNpemVfdCBucl92 YWx1ZXMsCiAJCSAgICAgX19zYmlfZ2V0X2ltcF92ZXJzaW9uKCkgPCBzYmlfaW1wbF9vcGVuc2Jp X21rX3ZlcnNpb24oMSwgNyk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IG5yX3ZhbHVlczsgKytp KSB7Ci0JCXJldCA9IGZ3ZnRfc2V0KGZlYXR1cmUsIHRlc3RfdmFsdWVzW2ldLCAwKTsKKwkJcmV0 ID0gc2JpX2Z3ZnRfc2V0KGZlYXR1cmUsIHRlc3RfdmFsdWVzW2ldLCAwKTsKIAkJc2JpcmV0X2tm YWlsX2Vycm9yKGtmYWlsLCAmcmV0LCBTQklfRVJSX0RFTklFRF9MT0NLRUQsCiAJCQkJICAgIlNl dCB0byAlbHUgd2l0aG91dCBsb2NrIGZsYWciLCB0ZXN0X3ZhbHVlc1tpXSk7CiAKLQkJcmV0ID0g ZndmdF9zZXQoZmVhdHVyZSwgdGVzdF92YWx1ZXNbaV0sIFNCSV9GV0ZUX1NFVF9GTEFHX0xPQ0sp OworCQlyZXQgPSBzYmlfZndmdF9zZXQoZmVhdHVyZSwgdGVzdF92YWx1ZXNbaV0sIFNCSV9GV0ZU X1NFVF9GTEFHX0xPQ0spOwogCQlzYmlyZXRfa2ZhaWxfZXJyb3Ioa2ZhaWwsICZyZXQsIFNCSV9F UlJfREVOSUVEX0xPQ0tFRCwKIAkJCQkgICAiU2V0IHRvICVsdSB3aXRoIGxvY2sgZmxhZyIsIHRl c3RfdmFsdWVzW2ldKTsKIAl9CiAKLQlyZXQgPSBmd2Z0X2dldChmZWF0dXJlKTsKKwlyZXQgPSBz YmlfZndmdF9nZXQoZmVhdHVyZSk7CiAJc2JpcmV0X3JlcG9ydCgmcmV0LCBTQklfU1VDQ0VTUywg bG9ja2VkX3ZhbHVlLCAiR2V0IHZhbHVlICVsdSIsIGxvY2tlZF92YWx1ZSk7CiAKIAlyZXBvcnRf cHJlZml4X3BvcCgpOwpAQCAtMTMxLDEyICsxMTAsMTIgQEAgc3RhdGljIHZvaWQgbWlzYWxpZ25l ZF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCiBzdGF0aWMgc3RydWN0IHNiaXJldCBm d2Z0X21pc2FsaWduZWRfZXhjX3NldCh1bnNpZ25lZCBsb25nIHZhbHVlLCB1bnNpZ25lZCBsb25n IGZsYWdzKQogewotCXJldHVybiBmd2Z0X3NldChTQklfRldGVF9NSVNBTElHTkVEX0VYQ19ERUxF RywgdmFsdWUsIGZsYWdzKTsKKwlyZXR1cm4gc2JpX2Z3ZnRfc2V0KFNCSV9GV0ZUX01JU0FMSUdO RURfRVhDX0RFTEVHLCB2YWx1ZSwgZmxhZ3MpOwogfQogCiBzdGF0aWMgc3RydWN0IHNiaXJldCBm d2Z0X21pc2FsaWduZWRfZXhjX2dldCh2b2lkKQogewotCXJldHVybiBmd2Z0X2dldChTQklfRldG VF9NSVNBTElHTkVEX0VYQ19ERUxFRyk7CisJcmV0dXJuIHNiaV9md2Z0X2dldChTQklfRldGVF9N SVNBTElHTkVEX0VYQ19ERUxFRyk7CiB9CiAKIHN0YXRpYyB2b2lkIGZ3ZnRfY2hlY2tfbWlzYWxp Z25lZF9leGNfZGVsZWcodm9pZCkKQEAgLTMwNCw3ICsyODMsNyBAQCBzdGF0aWMgdm9pZCBmd2Z0 X2NoZWNrX3B0ZV9hZF9od191cGRhdGluZyh2b2lkKQogCiAJcmVwb3J0X3ByZWZpeF9wdXNoKCJw dGVfYWRfaHdfdXBkYXRpbmciKTsKIAotCXJldCA9IGZ3ZnRfZ2V0KFNCSV9GV0ZUX1BURV9BRF9I V19VUERBVElORyk7CisJcmV0ID0gc2JpX2Z3ZnRfZ2V0KFNCSV9GV0ZUX1BURV9BRF9IV19VUERB VElORyk7CiAJaWYgKHJldC5lcnJvciAhPSBTQklfU1VDQ0VTUykgewogCQlpZiAoZW52X2VuYWJs ZWQoIlNCSV9IQVZFX0ZXRlRfUFRFX0FEX0hXX1VQREFUSU5HIikpIHsKIAkJCXNiaXJldF9yZXBv cnRfZXJyb3IoJnJldCwgU0JJX1NVQ0NFU1MsICJzdXBwb3J0ZWQiKTsKQEAgLTM1MCwxMCArMzI5 LDEwIEBAIHN0YXRpYyB2b2lkIGZ3ZnRfY2hlY2tfcHRlX2FkX2h3X3VwZGF0aW5nKHZvaWQpCiAj ZW5kaWYKIAogYWR1ZV9pbnZhbF90ZXN0czoKLQlyZXQgPSBmd2Z0X3NldChTQklfRldGVF9QVEVf QURfSFdfVVBEQVRJTkcsIDIsIDApOworCXJldCA9IHNiaV9md2Z0X3NldChTQklfRldGVF9QVEVf QURfSFdfVVBEQVRJTkcsIDIsIDApOwogCXNiaXJldF9yZXBvcnRfZXJyb3IoJnJldCwgU0JJX0VS Ul9JTlZBTElEX1BBUkFNLCAic2V0IHRvIDIiKTsKIAotCXJldCA9IGZ3ZnRfc2V0KFNCSV9GV0ZU X1BURV9BRF9IV19VUERBVElORywgIWVuYWJsZWQsIDIpOworCXJldCA9IHNiaV9md2Z0X3NldChT QklfRldGVF9QVEVfQURfSFdfVVBEQVRJTkcsICFlbmFibGVkLCAyKTsKIAlzYmlyZXRfcmVwb3J0 X2Vycm9yKCZyZXQsIFNCSV9FUlJfSU5WQUxJRF9QQVJBTSwgInNldCB0byAlZCB3aXRoIGZsYWdz PTIiLCAhZW5hYmxlZCk7CiAKIAlpZiAoIWFkdWVfdG9nZ2xlX2FuZF9jaGVjaygiIHdpdGggbG9j ayIsICFlbmFibGVkLCAxKSkKLS0gCjIuNDkuMAoKCi0tIAprdm0tcmlzY3YgbWFpbGluZyBsaXN0 Cmt2bS1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8va3ZtLXJpc2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 698B417A30F for ; Fri, 23 May 2025 07:55:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747986905; cv=none; b=CmIqKZjqLX753sa3Nah+ySXROWNmvvZ5Qa5ZRApx5nyajjHJaitq9XWP1yS89MicsuNTPNhKcnvfhB1+2EmyfGBhuGfVVQTbGjABgODLfPdnOQeWJ4L13FmNJzbKl7FRmR+JUqYJHm8bJsKDcN4LTvbB5QHFKqWJVmCMnUnvPjs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747986905; c=relaxed/simple; bh=lUvc6cBrc5AGkxmqbusro5mB4sgx6LEjVh6zHvGORuo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WJjB6wKQxez84YeqXbm/CZXw6ppnmVs317z0YVrLTIXPWSXIWWEYFiAbUx6+zgwxvX55eEpp49haZ0vNwJNq9IOYx/lzRaxv63ZUJ5iFOqSzu0/5sIjW+YT2tdzf3cBEbnjNnSOttasKUXK5f3zV3UxzmqhfMlTGrQf0d7A+95U= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=xYh3ZERU; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="xYh3ZERU" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-310cf8f7301so544053a91.1 for ; Fri, 23 May 2025 00:55:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1747986902; x=1748591702; darn=vger.kernel.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=TIh2/la5VXYaUYqPJQiKhgsiJPpkFatbGozgF/Ujxa8=; b=xYh3ZERUOcEq7HyUYP8hwL2rZViMevalaYNStcgYDDupiGjyF/Vyw7zeYkPu34oxon Ic/y5xKBcSpSN6dB8O0pvyTymesqhpEEU+8LeJHaRX0n9IJB9DHBFnLrzjtdzPt/f3Rr duTe8UCcFDtyjJ9sZoAPqwhRmzGJIa64VW5kM4/mShb1jREyH6oUR3lCdmKZjs4ZnkNy /Gv/4wwuc3AjLw+0fLL5sHJnDBenzwjdqI2itd2vMs3X2BSyWBUv7plLVaATzIsm79NV z8YaLxre0eXTrhQJEYFfCsep6AWEDMOkGYMgrCqyVBq3BrxS15Qbh+R7BOKjuB7pC0Wm iRaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747986902; x=1748591702; 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=TIh2/la5VXYaUYqPJQiKhgsiJPpkFatbGozgF/Ujxa8=; b=a7PPFQGg1OrervQmahV6jMQfYJ6ddkZ/MY/L7sT68XiO4WOLpaoFklHVvXPg1J9jbC o1Z6xQvdF9hlfXOH/dDvHU9yr6YmzgljRhaMYdVLF/tCNde5MPHnmA3Jtlf4fWJDznlZ /l2uC7s2VXkgJIhpxy07dnUBhVfOJjCHS1vUDDbSsG84H9iUA2Y6YdfjxzU6NOEpQgvc NTzl9B9j0HVd55wL6gTrheHGx7H9XJ2bQ3qxS5s11stpz1fnmrEZUg+UrsnBX3F1tgJW /MHIlg5UNNkBzJEZU31HXkhKqG3uPqObVk/e4JC9Yof5Kzg5Kv+J/DfM7vlgH+jFMRZw a2FQ== X-Gm-Message-State: AOJu0Yz4QDZq4e24Wo8P8f5O7zj5w92homIRK1z25RHgDNGn3KeFk0eg NZ8hsIrstlDMXRIEq2ueVpXT+wCWk8Y4uRtlukh4kKZIjBJJoZl1Y8w5Qt+34lDPHfgWxoD5wRJ U8jA2+O8= X-Gm-Gg: ASbGncstqVFzWIb9ffIS02FE4a8BugY2V+5Q44nPpF0Dp35UXw148AUZVthCWlqa4vX 1sI7Jkq0zMvy5TiOVo0f5KJ9H6ohVfIRL38qvXIp8XZMDDk17D6RObwkaIbzkBjpG9axDvEynqI Smy4QPH+6VSnwCq/8ztQSQZr5lJt4hNSH1GG+LjlDJJ+5KynIou/2lACmLWW5/KC0cbOPtBZQIK ag2eERtFXP5cH08Trr/j2LUI7acIzmpFvtNbTkgRJrJ4IZjH20hiWLdmK7/PmCqbw0cRYibyJgL yMrgfBGJ/uISTP97MpKC4FFmwOGOtSH6NtbmSncxBki9FxnvfYdPRsCos0bRgD8= X-Google-Smtp-Source: AGHT+IG7scHh1XLTOwqsg+d0XjixFekQ/XtdIqZ5IKoCHMTuK67iJHSWsWdeIkPfoGw2bTaM8Rva+Q== X-Received: by 2002:a17:90b:1811:b0:2fa:42f3:e3e4 with SMTP id 98e67ed59e1d1-310e8899e12mr3790096a91.3.1747986902131; Fri, 23 May 2025 00:55:02 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30f36513bb7sm6767204a91.46.2025.05.23.00.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 00:55:01 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Andrew Jones , Ved Shanbhogue Subject: [PATCH 1/3] lib/riscv: export FWFT functions Date: Fri, 23 May 2025 09:53:08 +0200 Message-ID: <20250523075341.1355755-2-cleger@rivosinc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250523075341.1355755-1-cleger@rivosinc.com> References: <20250523075341.1355755-1-cleger@rivosinc.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These functions will probably be needed by other tests as well, expose them. Signed-off-by: Clément Léger --- lib/riscv/asm/sbi.h | 5 +++++ lib/riscv/sbi.c | 20 ++++++++++++++++++ riscv/sbi-fwft.c | 49 +++++++++++++-------------------------------- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/lib/riscv/asm/sbi.h b/lib/riscv/asm/sbi.h index a5738a5c..08146260 100644 --- a/lib/riscv/asm/sbi.h +++ b/lib/riscv/asm/sbi.h @@ -302,5 +302,10 @@ struct sbiret sbi_sse_hart_mask(void); struct sbiret sbi_sse_hart_unmask(void); struct sbiret sbi_sse_inject(unsigned long event_id, unsigned long hart_id); +struct sbiret sbi_fwft_set_raw(unsigned long feature, unsigned long value, unsigned long flags); +struct sbiret sbi_fwft_set(uint32_t feature, unsigned long value, unsigned long flags); +struct sbiret sbi_fwft_get_raw(unsigned long feature); +struct sbiret sbi_fwft_get(uint32_t feature); + #endif /* !__ASSEMBLER__ */ #endif /* _ASMRISCV_SBI_H_ */ diff --git a/lib/riscv/sbi.c b/lib/riscv/sbi.c index 2959378f..0b547d42 100644 --- a/lib/riscv/sbi.c +++ b/lib/riscv/sbi.c @@ -107,6 +107,26 @@ struct sbiret sbi_sse_inject(unsigned long event_id, unsigned long hart_id) return sbi_ecall(SBI_EXT_SSE, SBI_EXT_SSE_INJECT, event_id, hart_id, 0, 0, 0, 0); } +struct sbiret sbi_fwft_set_raw(unsigned long feature, unsigned long value, unsigned long flags) +{ + return sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_SET, feature, value, flags, 0, 0, 0); +} + +struct sbiret sbi_fwft_set(uint32_t feature, unsigned long value, unsigned long flags) +{ + return sbi_fwft_set_raw(feature, value, flags); +} + +struct sbiret sbi_fwft_get_raw(unsigned long feature) +{ + return sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_GET, feature, 0, 0, 0, 0, 0); +} + +struct sbiret sbi_fwft_get(uint32_t feature) +{ + return sbi_fwft_get_raw(feature); +} + void sbi_shutdown(void) { sbi_ecall(SBI_EXT_SRST, 0, 0, 0, 0, 0, 0, 0); diff --git a/riscv/sbi-fwft.c b/riscv/sbi-fwft.c index c52fbd6e..8920bcb5 100644 --- a/riscv/sbi-fwft.c +++ b/riscv/sbi-fwft.c @@ -19,37 +19,16 @@ void check_fwft(void); - -static struct sbiret fwft_set_raw(unsigned long feature, unsigned long value, unsigned long flags) -{ - return sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_SET, feature, value, flags, 0, 0, 0); -} - -static struct sbiret fwft_set(uint32_t feature, unsigned long value, unsigned long flags) -{ - return fwft_set_raw(feature, value, flags); -} - -static struct sbiret fwft_get_raw(unsigned long feature) -{ - return sbi_ecall(SBI_EXT_FWFT, SBI_EXT_FWFT_GET, feature, 0, 0, 0, 0, 0); -} - -static struct sbiret fwft_get(uint32_t feature) -{ - return fwft_get_raw(feature); -} - static struct sbiret fwft_set_and_check_raw(const char *str, unsigned long feature, unsigned long value, unsigned long flags) { struct sbiret ret; - ret = fwft_set_raw(feature, value, flags); + ret = sbi_fwft_set_raw(feature, value, flags); if (!sbiret_report_error(&ret, SBI_SUCCESS, "set to %ld%s", value, str)) return ret; - ret = fwft_get_raw(feature); + ret = sbi_fwft_get_raw(feature); sbiret_report(&ret, SBI_SUCCESS, value, "get %ld after set%s", value, str); return ret; @@ -59,17 +38,17 @@ static void fwft_check_reserved(unsigned long id) { struct sbiret ret; - ret = fwft_get(id); + ret = sbi_fwft_get(id); sbiret_report_error(&ret, SBI_ERR_DENIED, "get reserved feature 0x%lx", id); - ret = fwft_set(id, 1, 0); + ret = sbi_fwft_set(id, 1, 0); sbiret_report_error(&ret, SBI_ERR_DENIED, "set reserved feature 0x%lx", id); } -/* Must be called before any fwft_set() call is made for @feature */ +/* Must be called before any sbi_fwft_set() call is made for @feature */ static void fwft_check_reset(uint32_t feature, unsigned long reset) { - struct sbiret ret = fwft_get(feature); + struct sbiret ret = sbi_fwft_get(feature); sbiret_report(&ret, SBI_SUCCESS, reset, "resets to %lu", reset); } @@ -87,16 +66,16 @@ static void fwft_feature_lock_test_values(uint32_t feature, size_t nr_values, __sbi_get_imp_version() < sbi_impl_opensbi_mk_version(1, 7); for (int i = 0; i < nr_values; ++i) { - ret = fwft_set(feature, test_values[i], 0); + ret = sbi_fwft_set(feature, test_values[i], 0); sbiret_kfail_error(kfail, &ret, SBI_ERR_DENIED_LOCKED, "Set to %lu without lock flag", test_values[i]); - ret = fwft_set(feature, test_values[i], SBI_FWFT_SET_FLAG_LOCK); + ret = sbi_fwft_set(feature, test_values[i], SBI_FWFT_SET_FLAG_LOCK); sbiret_kfail_error(kfail, &ret, SBI_ERR_DENIED_LOCKED, "Set to %lu with lock flag", test_values[i]); } - ret = fwft_get(feature); + ret = sbi_fwft_get(feature); sbiret_report(&ret, SBI_SUCCESS, locked_value, "Get value %lu", locked_value); report_prefix_pop(); @@ -131,12 +110,12 @@ static void misaligned_handler(struct pt_regs *regs) static struct sbiret fwft_misaligned_exc_set(unsigned long value, unsigned long flags) { - return fwft_set(SBI_FWFT_MISALIGNED_EXC_DELEG, value, flags); + return sbi_fwft_set(SBI_FWFT_MISALIGNED_EXC_DELEG, value, flags); } static struct sbiret fwft_misaligned_exc_get(void) { - return fwft_get(SBI_FWFT_MISALIGNED_EXC_DELEG); + return sbi_fwft_get(SBI_FWFT_MISALIGNED_EXC_DELEG); } static void fwft_check_misaligned_exc_deleg(void) @@ -304,7 +283,7 @@ static void fwft_check_pte_ad_hw_updating(void) report_prefix_push("pte_ad_hw_updating"); - ret = fwft_get(SBI_FWFT_PTE_AD_HW_UPDATING); + ret = sbi_fwft_get(SBI_FWFT_PTE_AD_HW_UPDATING); if (ret.error != SBI_SUCCESS) { if (env_enabled("SBI_HAVE_FWFT_PTE_AD_HW_UPDATING")) { sbiret_report_error(&ret, SBI_SUCCESS, "supported"); @@ -350,10 +329,10 @@ static void fwft_check_pte_ad_hw_updating(void) #endif adue_inval_tests: - ret = fwft_set(SBI_FWFT_PTE_AD_HW_UPDATING, 2, 0); + ret = sbi_fwft_set(SBI_FWFT_PTE_AD_HW_UPDATING, 2, 0); sbiret_report_error(&ret, SBI_ERR_INVALID_PARAM, "set to 2"); - ret = fwft_set(SBI_FWFT_PTE_AD_HW_UPDATING, !enabled, 2); + ret = sbi_fwft_set(SBI_FWFT_PTE_AD_HW_UPDATING, !enabled, 2); sbiret_report_error(&ret, SBI_ERR_INVALID_PARAM, "set to %d with flags=2", !enabled); if (!adue_toggle_and_check(" with lock", !enabled, 1)) -- 2.49.0