From patchwork Wed Oct 23 13:21:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Jones X-Patchwork-Id: 2001083 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=B6JB6iJe; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=FdSutKbr; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XYV8Z4BY7z1xwf for ; Thu, 24 Oct 2024 00:22:38 +1100 (AEDT) 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=Y95mlLUDuwnTUO1ZFWa7oCZK/WsSyI9VDCVQhqSXvQc=; b=B6JB6iJeZO0IAd s5b8SPd6cn9kHsePeQ7sHlxOVA6o4fotENxNUrxKWKYzZ48cWA+FkuRF+vWFIwD+RvAiKA6ruDCde jRvHahH5ZxwcYhiYFXms/Y6l21e1c6cd6mJrPVrkPsovd1NpY8Dh+fpXuuSswHK4xerqVgh1BBytD ZlkDYkanth/Aqu/ZEHEuxsKPCBUxx5UMtLfQKXtw9b54DC/GPZzTgIhlCrVxCPWdLG+R3bmPT3dUJ jcb9vQwAV1dS7naN+65459hr1Mw2MqL+cvShY/9TEFr2p7UT/CPAKsHRXl+UyhMkc9wLaFbEskaTz mf2GzQ3CM06RISUEta7Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t3bJt-0000000EWg8-05G6; Wed, 23 Oct 2024 13:22:37 +0000 Received: from out-184.mta0.migadu.com ([2001:41d0:1004:224b::b8]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t3bJ3-0000000EWUO-0tzg for kvm-riscv@lists.infradead.org; Wed, 23 Oct 2024 13:21:46 +0000 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1729689702; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v4n6iXUzuE7MoPSEF0ddVeFcFHlzBfHTUGSIQ/G9qu4=; b=FdSutKbr+n7M6TgBthyAaF8qcxESYQIgxvYeGZ+VnbE5FGkNMTj03ppIQK0dBEhU0SJX8c GcO3or5UYcOlpvUf9pjn4G14pI3zsdoptmz/+ffm7JvRD46wRwZaEflil76u3t8Ru/4uV4 WzTzSm5NZStcGTGjB2xES9P1eBCwaYU= From: Andrew Jones To: kvm@vger.kernel.org, kvm-riscv@lists.infradead.org Cc: atishp@rivosinc.com, jamestiotio@gmail.com Subject: [kvm-unit-tests PATCH 2/4] riscv: Filter unmanaged harts from present mask Date: Wed, 23 Oct 2024 15:21:33 +0200 Message-ID: <20241023132130.118073-8-andrew.jones@linux.dev> In-Reply-To: <20241023132130.118073-6-andrew.jones@linux.dev> References: <20241023132130.118073-6-andrew.jones@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241023_062145_410378_510F087F X-CRM114-Status: UNSURE ( 9.49 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.1 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: We use SBI to manage harts and SBI may have a different idea of which harts it should manage than our hardware description. Filter out all harts which fail an SBI HSM status call from the present mask [...] Content analysis details: (-2.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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: , Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org We use SBI to manage harts and SBI may have a different idea of which harts it should manage than our hardware description. Filter out all harts which fail an SBI HSM status call from the present mask to ensure we don't try to use them. Signed-off-by: Andrew Jones --- lib/riscv/setup.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/riscv/setup.c b/lib/riscv/setup.c index f347ad6352d7..211945448b0f 100644 --- a/lib/riscv/setup.c +++ b/lib/riscv/setup.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -51,7 +52,9 @@ static void cpu_set_fdt(int fdtnode __unused, u64 regval, void *info __unused) cpus[cpu].cpu = cpu; cpus[cpu].hartid = regval; - set_cpu_present(cpu, true); + + if (!sbi_hart_get_status(cpus[cpu].hartid).error) + set_cpu_present(cpu, true); } static void cpu_init_acpi(void) @@ -61,7 +64,7 @@ static void cpu_init_acpi(void) static void cpu_init(void) { - int ret; + int ret, me; nr_cpus = 0; if (dt_available()) { @@ -71,7 +74,9 @@ static void cpu_init(void) cpu_init_acpi(); } - set_cpu_online(hartid_to_cpu(csr_read(CSR_SSCRATCH)), true); + me = hartid_to_cpu(csr_read(CSR_SSCRATCH)); + assert(cpu_present(me)); + set_cpu_online(me, true); cpu0_calls_idle = true; }