From nobody Sun Feb 8 21:06:52 2026 Received: from mail-ej1-f73.google.com (mail-ej1-f73.google.com [209.85.218.73]) (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 9042730E0D0 for ; Fri, 14 Nov 2025 11:11:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763118718; cv=none; b=PfvHEJSbW6QKCPces8VVwicM+qSbsg4MYLpb2EqcGdYSc4VXY9aMBRYFRpyuZZTzPGKsAUNKSxKbo6U92JiIrJIYC1m4SpaWyOHsD9ZnENI66+tSAK8TfaFMpYYH6YGhss8BQks1oxP+HylfY1aMRNSyI3rh03pObNqg4Pc18cQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763118718; c=relaxed/simple; bh=qqY/9nEU8JfC3zBaFynTGqR9lQHhYb0zLTrGgkhqxM4=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=TT0+uzweX4eFs4B37Vl79+icn13phBOVaOvq3gB5RCy451MlYsqS+PXutKLr6xkRLXEhxD9b2LqAaQGD8mpsIpzZi4ZXT9MGYDhYw5t90cxMBYPZU1f/vt6iswszjHvf8xzD6AIYYVo0+ywZUdanDQjYHsYuNGl30tU5wb9o78M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--korneld.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=W4FBz8Po; arc=none smtp.client-ip=209.85.218.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--korneld.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="W4FBz8Po" Received: by mail-ej1-f73.google.com with SMTP id a640c23a62f3a-b70b3297664so158157066b.1 for ; Fri, 14 Nov 2025 03:11:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1763118715; x=1763723515; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:from:to:cc:subject:date:message-id:reply-to; bh=tQcSzEpSwA6ZBpPi/rTINYX4HBb66yNmYZWYgUBx7xg=; b=W4FBz8PowdTTeWlUsBAjxTbT5vJU+/ZNa6GD+ahAUNPGveRRVHyqJqSZSx0W9wazOB +mPmHli1e6gs+WZtx/Ojgi2GMBsxUC1qSNXUpMlSoXU1k4wWTxP29Fx8OEb5lylvpRjZ MrMP4VFz3pWe1qj2PAF965kSvcEP+rr1p9S2Z2tcCqSeL+OJquNdompywro5rAmE0TRH UXDHT2gjy8e4Cok7Seaur19vQ67e1if7xoaTzVzORadqx/r/9+7t2C4xoCwVdqtaxH18 YSTmfU9CA+FWtis4IptYlqpvMce5vXkh3pMrHauiBd5/bHC+1Xi3FRdBCVqZj1q2rtiK AaRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763118715; x=1763723515; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tQcSzEpSwA6ZBpPi/rTINYX4HBb66yNmYZWYgUBx7xg=; b=lB3I0gMPt8VjqKJESeWbe+D2FHMnss/RbUmqXVhtcehGGhqyxqLjeRpgp8M4XaI+Rl vxEIYjHEN1zfvEmrbmwSNHrJkbt9fgmRgjMN8zUH+hMdXBlkeygQhi7rAzZQGdeek1Ej UKBb4EkGSTKqYFmombloORzViefXR2OqTFy40RxpC8zXrB7ZbV0dGjT8hYpa9CeTTCZ1 6P24fa5BF0KtwGDPfTzpV6PQTIBNlXBwsQYRds1G6t3jDXWiNo6TqXFEaFvGE/L5x8IU tYJmPXwT+mWouPo3H72rl0N6P4E7BEfIDmmG34cHgJzSz04uaFmWNMfg0Fcw5O9/f5Qy bm5w== X-Forwarded-Encrypted: i=1; AJvYcCUhR3oyChyIO5UN+MSeFivBDtUWd8aB23ZljPs2pnFyLJu4kKrxnrOqfO8rH+aLyNUjugGIryd/6EYhv88=@vger.kernel.org X-Gm-Message-State: AOJu0YxNcCYG3gd6sloON4FEG6vF6cekMx1JqBbj9etk479ToGPnQ7cW VwSTryKUMMKVdCjiYy/2AXYL75gvwpa3uVLDWBKgWh8b+Y6M/+7Pi8V/g7VyV0tOyulqntJxu8f fow808YVIUQ== X-Google-Smtp-Source: AGHT+IGnWVB505G2W650/nXNH2n0iR9oY27m/GdXw2nME7uc6d5UvqI4cEORymAa2S62GvJ0zkxb/mKrP/Ib X-Received: from ejcvi2.prod.google.com ([2002:a17:907:d402:b0:b73:7326:8548]) (user=korneld job=prod-delivery.src-stubby-dispatcher) by 2002:a17:907:6d20:b0:b45:66f6:6a0a with SMTP id a640c23a62f3a-b736793d74dmr217106466b.44.1763118714892; Fri, 14 Nov 2025 03:11:54 -0800 (PST) Date: Fri, 14 Nov 2025 11:11:53 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAHgOF2kC/x3MQQqAIBBA0avIrBNSDKWrRIjUWEOkohGBdPek5 Vv8X6FgJiwwsgoZbyoUQ4PoGCy7CxtyWptB9nIQQiiejvu0FOiyIXrvuFuM6QelUUsNrUoZPT3 /cZrf9wNy+DuXYQAAAA== X-Change-Id: 20251114-pkvm_init_noffa-ac880547e727 X-Mailer: b4 0.14.2 Message-ID: <20251114-pkvm_init_noffa-v1-1-87a82e87c345@google.com> Subject: [PATCH] KVM: arm64: Fix error checking for FFA_VERSION From: "=?utf-8?q?Kornel_Dul=C4=99ba?=" To: Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon Cc: Bartlomiej Grzesik , Tomasz Nowicki , Sebastian Ene , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, "=?utf-8?q?Kornel_Dul=C4=99ba?=" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable According to section 13.2 of the DEN0077 FF-A specification, when firmware does not support the requested version, it should reply with FFA_RET_NOT_SUPPORTED(-1). Table 13.6 specifies the type of the error code as int32. Currently, the error checking logic compares the unsigned long return value it got from the SMC layer, against a "-1" literal. This fails due to a type mismatch: the literal is extended to 64 bits, whereas the register contains only 32 bits of ones(0x00000000ffffffff). Consequently, hyp_ffa_init misinterprets the "-1" return value as an invalid FF-A version. This prevents pKVM initialization on devices where FF-A is not supported in firmware. Fix this by explicitly casting res.a0 to s32. Signed-off-by: Kornel Dul=C4=99ba Acked-by: Will Deacon --- arch/arm64/kvm/hyp/nvhe/ffa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index 58b7d0c477d7fce235fc70d089d175c7879861b5..ab1e53bd4ceeea431fc30a87548= 2ed1523b01ab5 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -792,7 +792,7 @@ static void do_ffa_version(struct arm_smccc_1_2_regs *r= es, .a0 =3D FFA_VERSION, .a1 =3D ffa_req_version, }, res); - if (res->a0 =3D=3D FFA_RET_NOT_SUPPORTED) + if ((s32)res->a0 =3D=3D FFA_RET_NOT_SUPPORTED) goto unlock; =20 hyp_ffa_version =3D ffa_req_version; @@ -943,7 +943,7 @@ int hyp_ffa_init(void *pages) .a0 =3D FFA_VERSION, .a1 =3D FFA_VERSION_1_2, }, &res); - if (res.a0 =3D=3D FFA_RET_NOT_SUPPORTED) + if ((s32)res.a0 =3D=3D FFA_RET_NOT_SUPPORTED) return 0; =20 /* --- base-commit: 6fa9041b7177f6771817b95e83f6df17b147c8c6 change-id: 20251114-pkvm_init_noffa-ac880547e727 Best regards, --=20 Kornel Dul=C4=99ba