From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 EA3064B04A8 for ; Sun, 16 Aug 2026 00:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786840348; cv=none; b=Q093lZouyUFEEol/BZnzpyXNXCCgSn62DcjtiAG5mF1F5Rt95wI7o0aM2oZPWsXjjzTKxtbef4ZSXvYJ0guAxLHgXSm51Rx6kAz+MLeTnhEgoZaCcjx6J9sxOqXrQTg3dhc2+NZK5ej1KwpN4zsJ5Cd+lAeWQmuq0zSz8NNSpTs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786840348; c=relaxed/simple; bh=HTf4u8NRNV8jD2m+dQ1wUV7XVq0KJFTFcPuxvOUXK8E=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=P6dxf7JOe2DPafQ5+J9CmUEulLeM+Nli59cPQ77lgZVD+AWNILzqIQJ3R8MorznjJw5C2mI+A1kOz02coG2gDuGv0gk4ls6vZ2bVRBpk8WlPB0u82VDfbOhuD2ETdQhA+dQjSRK13Gdopv4rOxIo+uifSLSZ/GKglTDHBoM3JM0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HG4r9DVs; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HG4r9DVs" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2cc97653887so37442345ad.1 for ; Sat, 15 Aug 2026 17:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786840346; x=1787445146; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=4aTo747A3vPvNvBBIWrbnSMChhvNabo3pgn5MllQM0w=; b=HG4r9DVs4Rb5jzdAaN8PFXQTNYF3nkgydufAPo2eXp/vuBLb3Oe1J1THwR3WD4aGNr cuZBOusubMvrPEUfinG4Mu/V24IGZrQS0TO8vmKDPZ/GJ/o8tNXFQpaWBvvHEU10A4Wl dign5sAvoMBQ6lj63t/5lwjJb8JRHpMcx/ltS72Y3qk8BioK72YK0ilg9V97x8bC45k9 IwVqn0pp02Ws3Gz85QqxumC4JEc/okwYyzxweMhZvOmG6Rz0+AZ/7Cv+9KTK14aZJ+Ka Ft5QFb8TunFPoTtNIR2yg9Jzp1NzRUoJPKIqkDjijSC+eMEFc1UgzNAHOdV0Qbh7JbDu YOug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786840346; x=1787445146; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4aTo747A3vPvNvBBIWrbnSMChhvNabo3pgn5MllQM0w=; b=kEmkpevcgMWwBYfvWH42dKIwUWCeefEnnuL0468lF4TBm2syimy/SgzE49u7wuFisg kPPIMWZdG4HwlS9EQX/uGkxuIE5dkUjjluuwJGBA78UjaF/g+JVl5R2PFvMapyDqHVeU AMAEwliNMa44gauJdyFvsaGcAMHMFz/G2NAGtbo9xa/IQdwE9ocqoAKDt7yw7PrkEHg0 Q/u8D2mWMb+zVb4vUsujGAA//p7qlMwH+dYrdSQLEMFf1NVjJkGpt8l+XUF/sVBePshN H+ZA88b91Zpq8HKxFTi0/WfQ40Om85p+V9K8gyNZa3pdhSuxqD5UYLDRdSZbss/2eYUJ cvwA== X-Forwarded-Encrypted: i=1; AHgh+RrqTrSasI6SN2rj9QoP5Q7Q9DysJ3EFtjuTdX8xSiriiUZABc0KtLcyvCy0wBp3zmzNRTu7Wnf6E1LWMrE=@vger.kernel.org X-Gm-Message-State: AOJu0YwVR12VnjZDLKGugUow0k7Ycrl8BpmUKGgiG0fdLCeyF4+X2jh0 uA4rSByXnvF2WEipjg1ghe8YPaLaot6ziV77plFge0RSwt8shusBdOU47pS9CsdntOo= X-Gm-Gg: AR+sD13XN2FbacHDueZg7M64h4hTmJ0jnneusxI6bpy8Di6jKD6pHz5zY/n0ll3w3vH oMRjT/4kXj10j/jBXqzfL4w3NTcOp22gap7CmNdE/Vi/gWU4K9doiDucaKFyXtIOmOXF3ZrZURW 7FGWZ8KBGpwTrvp5pQ6gw6lY2hqKKc/yXl34YAAwleHt34m/4vNYDWNRfLcEOSbL3Eiwthrta9h MkcM437vGb6wlX5NIh1SehYYOx9+jJ66odMw5QBJL1vbhtjxWl60SG0ldJSIa6X+JgfhyMUHH+u v0WvqhLCFlaOvg72HPQnBuCXcjREKUIzhAqmufryRLPBi0c7gNKfg74AY/kmHt7EnoK2H5+Lmze NBLjgBszE3zeE1NwyeBarJjHoibz1WUC5Nf7OAQz8+kFDUQ51Pb1fr2U+C28M7InNTwJYFAVnfB oG7naTDJpmSb9zslA/4ReLlxEuPRFW4mLzPnS8JyS9wuIEx9lXL06CVNhcuh/LfE01 X-Received: by 2002:a17:90b:524b:b0:37f:bfa2:1887 with SMTP id 98e67ed59e1d1-3933cb3f7d3mr17652017a91.8.1786840346163; Sat, 15 Aug 2026 17:32:26 -0700 (PDT) Received: from bloom.localdomain ([2604:3d09:178e:e100::6868]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-394eb78d512sm7545429a91.16.2026.08.15.17.32.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 17:32:25 -0700 (PDT) From: Ivy Lopez To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: Alexandre Ghiti , Andrew Jones , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Ivy Lopez Subject: [PATCH] riscv: hwprobe: require both F and D extensions for RISCV_HWPROBE_IMA_FD Date: Sat, 15 Aug 2026 18:32:16 -0600 Message-ID: <20260816003216.22534-1-skunkolee@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Documentation/arch/riscv/hwprobe.rst states that RISCV_HWPROBE_IMA_FD means both the F and D extensions are supported. However, the implementation uses has_fpu(), which returns true if either extension is present, since that's sufficient to determine whether FPU state needs to be saved/restored. Reusing it here silently weakens the hwprobe semantics from "F and D" to "F or D", giving userspace no way to know which extension is actually present when only one is. Check both extensions explicitly with riscv_isa_extension_available(), matching the pattern already used for the neighboring C and V checks. Link: https://bugzilla.kernel.org/show_bug.cgi?id=221874 Signed-off-by: Ivy Lopez --- arch/riscv/kernel/sys_hwprobe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprobe.c index 1659d31fd288..7f91beb82a1c 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -85,7 +85,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair, u64 missing = 0; pair->value = 0; - if (has_fpu()) + if (riscv_isa_extension_available(NULL, f) && riscv_isa_extension_available(NULL, d)) pair->value |= RISCV_HWPROBE_IMA_FD; if (riscv_isa_extension_available(NULL, c)) -- 2.55.0