From nobody Tue May 5 10:06:05 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 615A03F2101 for ; Wed, 22 Apr 2026 20:08:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888501; cv=none; b=JMpxvhnKZnZw2TykcYZfNLwr8ZH6FCUbcC/yXWpmhVqaCsAKbb+7reCpp0VrtgOhPzKS75HuaIV6ZRf1u5mMCDmPJfs34PsrAjMkoOaAgiTN2AsGlylmkOmBKVGA45a0qlVhZyUEYcDKrtRgykiKrUGFtWc6th6LNWaD6L/Rwcc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888501; c=relaxed/simple; bh=WcNkcyhmAEyLm48OH/jAibAdAw8Tviad++8Rcyw615E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DtHhBSwND7M8Rt+w4lc9/AFeWmuDEnNI/6F4su2otJbNYCSpTK9tkokVGHrYLmBG24riftXzrYzw3EjEhZSI+vCx+BAHlQ4337q8d8SqIUcXm6aTI/Qdx5f2TAaVVsAvhtjfdMPvw5nUSjMoYrGdsKe2/P3aPJBAEhFTx6ChDE4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=OKwd6A5x; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="OKwd6A5x" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=CG+f99gT7Cze+FGPfBLcF87S5O/36isH7njf38xR63Q=; b=OKwd6A5xLH1bJcdBLDOnv8XZ2i lWl1UWUVu3h86BrLtoFeWCBfpU2bihQEf8FeBcOQ56n6T2kTO/ZzQUVxOh60BnBY8zmH4WsOo9sj2 pj1egl1mFkGBZBpZjIrH6aFWFOXTkaJNPiNANr8YsKfqigBdRd3T9/vUw8gN8237zaR//pMRs3Aaw VocJZgfgNK8hun7DHMiw8Y1CSA9E1pK4stZ9xNZkDaLwX+fuBeO+TdkzZwpK5qP8ojYf4hbMqpRir CmX0EGP6b5coLgijMwibBWxbpOAG/HMpmCvfk0rdAWbiuJqQjaebumMcZrYfQB7G1OFqOqKt1X4HB i0BgXmbA==; Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131] helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1wFdro-000QN6-2I; Wed, 22 Apr 2026 22:08:11 +0200 From: Mauricio Faria de Oliveira Date: Wed, 22 Apr 2026 17:07:45 -0300 Subject: [PATCH 1/3] x86/asm, x86/boot: Expose inline memcmp Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260422-pvh-kasan-inline-v1-1-7e6194344c92@igalia.com> References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Juergen Gross , Alexey Dobriyan , Boris Ostrovsky Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira X-Mailer: b4 0.14.2 Move the inline memcmp function, currently only available to boot code (boot/string.c), into the header with similar inline string functions (include/asm/string.h) so it may be reused. Add a _SETUP guard in string.h so not to include the 32/64-bit specific string headers in boot/ code (16-bit, real mode) and avoid build errors. Signed-off-by: Mauricio Faria de Oliveira --- arch/x86/boot/string.c | 6 ++---- arch/x86/include/asm/string.h | 11 +++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c index b25c6a9303b7314d5caf5c9306239811705294fe..bbee78637b349e42e9281d8df50= d89d48f4490b9 100644 --- a/arch/x86/boot/string.c +++ b/arch/x86/boot/string.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "ctype.h" #include "string.h" =20 @@ -31,10 +32,7 @@ =20 int memcmp(const void *s1, const void *s2, size_t len) { - bool diff; - asm("repe cmpsb" - : "=3D@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len)); - return diff; + return __inline_memcmp(s1, s2, len); } =20 /* diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h index 9cb5aae7fba9ffcf0f5af8f939d30467750ccaa9..736a6f6a31f0a68281b4f17415a= ba0fcd95dc228 100644 --- a/arch/x86/include/asm/string.h +++ b/arch/x86/include/asm/string.h @@ -2,11 +2,13 @@ #ifndef _ASM_X86_STRING_H #define _ASM_X86_STRING_H =20 +#ifndef _SETUP #ifdef CONFIG_X86_32 # include #else # include #endif +#endif =20 static __always_inline void *__inline_memcpy(void *to, const void *from, s= ize_t len) { @@ -29,4 +31,13 @@ static __always_inline void *__inline_memset(void *s, in= t v, size_t n) return ret; } =20 +static __always_inline int __inline_memcmp(const void *s1, const void *s2,= size_t len) +{ + bool diff; + + asm("repe cmpsb" + : "=3D@ccnz" (diff), "+D" (s1), "+S" (s2), "+c" (len)); + return diff; +} + #endif /* _ASM_X86_STRING_H */ --=20 2.51.0 From nobody Tue May 5 10:06:05 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C6771FC7 for ; Wed, 22 Apr 2026 20:08:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888501; cv=none; b=fIUTSYlQh8q3QEAFizTUl1GjYd//anyf0+bsP+xZILdz6pLiL50kC8KH9leBwxBE6AnUl7vdJlwZhwTxrxf7eur6GbjGzMCBBc6by1vTGkE2+98UMeFadr3rqsLFuUCPeebAf53rsNjZ8HXsg7u970gizRzApvMf2BNANH65q1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888501; c=relaxed/simple; bh=b2K2TrP5rFx18OofsYPkobc8pizaZxWTlxkrwOBsuJA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rFRJ8c0CMjO4r3Bcj9TEBf6u2wwo/TZkn8sb2fGsnTAzNaS6rHi/E6nMoHHYAXKZZIh0WL0+9LhL91qctg9KhOmXFSXiYmlt9CkzqbSL3+6Y/5dMFfnIdSemllGC1ZBP5AG0/mzNbMfe97wBMiAOWXPUH+Ijoa5yxdVhC5AZwrY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=qJLi6sDv; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="qJLi6sDv" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=RA9NCRHvRWMZ05HmtRD7P4PIYRmUdNmDK10V6p6BTbQ=; b=qJLi6sDvBTykCu2V8Pd4qiCQVV 7vsQw17QfzL0Kd/rdPHndsLnjzOhC9NdKRQcQNne0ubu+VDjY5lsuANYoBbMjZSVEWutiW9L1U2SK SBIY0W4fETq7msjk2j3pMscO4SslxkzD22pw4pvg2cIxaSQzGlZ+sqlGHpcclXdsdBWENIz132d4J Nsi26hCgoCcVbwcgolgMHladKClBFenB2PGUlZU2Xp0JCIMyckvkeKXPtI8ZilBbIH+xrFxIb4KTs Ht8lL8s7FFDZmXgkHfLbmkg0jRwpl0tYPY8/XE/8EDGiyvd6hS4nYGX6CYNTPqwoMRIYHKG/MprEg hKcx6o/Q==; Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131] helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1wFdrs-000QN6-Bw; Wed, 22 Apr 2026 22:08:15 +0200 From: Mauricio Faria de Oliveira Date: Wed, 22 Apr 2026 17:07:46 -0300 Subject: [PATCH 2/3] x86/cpuid: fix unbootable VMs by really inlining memcmp() in hypervisor_cpuid_base() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260422-pvh-kasan-inline-v1-2-7e6194344c92@igalia.com> References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Juergen Gross , Alexey Dobriyan , Boris Ostrovsky Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira X-Mailer: b4 0.14.2 Even with __builtin the compiler may decide to use the out of line function instead of the inline implementation. The existing code is broken with gcc-14/15 but not gcc-12/13 (Ubuntu 25.10) and vmlinux no longer boots with CONFIG_PVH if CONFIG_KASAN_GENERIC is set. For testing purposes, if the size argument is reduced from 12 to 8 then the compiler decides to use the inline implementation; that shows results vary. Switch the builtin to the inline implementation to address it. Fixes: 416a33c9afce ("x86/cpu: fix unbootable VMs by inlining memcmp() in h= ypervisor_cpuid_base()") Signed-off-by: Mauricio Faria de Oliveira Reviewed-by: Juergen Gross --- arch/x86/include/asm/cpuid/api.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/include/asm/cpuid/api.h b/arch/x86/include/asm/cpuid/= api.h index 44fa82e1267ce98c7f5f92f69b58f79e235f7261..c3bd1e51067346e817240b484dc= 0d0e5f02dcc4f 100644 --- a/arch/x86/include/asm/cpuid/api.h +++ b/arch/x86/include/asm/cpuid/api.h @@ -203,7 +203,7 @@ static inline u32 cpuid_base_hypervisor(const char *sig= , u32 leaves) * from PVH early boot code before instrumentation is set up * and memcmp() itself may be instrumented. */ - if (!__builtin_memcmp(sig, signature, 12) && + if (!__inline_memcmp(sig, signature, 12) && (leaves =3D=3D 0 || ((eax - base) >=3D leaves))) return base; } --=20 2.51.0 From nobody Tue May 5 10:06:05 2026 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 763A03F23C1 for ; Wed, 22 Apr 2026 20:08:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888503; cv=none; b=bdaDzeJxKZsaRfMF6dxV/ClxDzgfxgurMZGPHaeU+l7BLLWukaOyr30aC10ikfJHW0wbThv1LMZGO89ozHa5NI115Nr1drye0kLcgiUypzKCqf54TseA+PplOgGuvcJ2OIHgd/+bcSHhMqrVWMJb9RXuzRZ4YQHvimxxM4F/nLo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776888503; c=relaxed/simple; bh=MN2uCUpZXgzD0uqLk8KLrquvbcs7rQfiWtazLoAN2Lk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oZQTLmg2ZbRJb6JZAniH+f2FnB+AdZveeJpnMq0o7orucEWrfmTnZBG29ZmYanGBG09+9pBlWwcoCaGi1NBIos7QxjK0AZGlmSzBc+jEw8hcmx0Uc2TS+hUJi+jvtKR+bt85JG9dMTwD0To/XKMrmWL3VHxrT+9KCDSSO8ZvdkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=eA7Kx7yS; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="eA7Kx7yS" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ugLYSHBb5Q9RwOF8EB3ofOp/JXnqmVAR7KYDCMKM5ok=; b=eA7Kx7ySJ0fQcyxXseR3wwYRQu BaEOoFBaNOeh2tfFgcRa50/ij6NjkDTNHHLPE/MI4ZVUjkoRfNxSHFT67t5yp85A1LceddlEU1pgW xktLdlpLLYEu6lKePNxiWQb5UERyLw64kBiutUmbe3ozGTvFOf1C3nsFc2RKL6wnDxtMhbooPjHey OE1+WLBHxqaAOcceUEPEgpjPgilanir0vWxXJ1ZR2lw0UHtCgaK7Fs7+6lhmZejMVzzuJCtPq5bcN PDxEaalcmUl8q1AYY5W10ZTFDQ4HUSsdZbRGOohFirJk5AE4JeizDZRrtyCwdzA3WDpFQJvqwi9J0 0siPg/ow==; Received: from 186-249-145-131.shared.desktop.com.br ([186.249.145.131] helo=[192.168.1.66]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1wFdrw-000QN6-VY; Wed, 22 Apr 2026 22:08:20 +0200 From: Mauricio Faria de Oliveira Date: Wed, 22 Apr 2026 17:07:47 -0300 Subject: [PATCH 3/3] x86/pvh: fix unbootable VMs by really inlining memset() in xen_prepare_pvh() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260422-pvh-kasan-inline-v1-3-7e6194344c92@igalia.com> References: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> In-Reply-To: <20260422-pvh-kasan-inline-v1-0-7e6194344c92@igalia.com> To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Juergen Gross , Alexey Dobriyan , Boris Ostrovsky Cc: kernel-dev@igalia.com, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, Mauricio Faria de Oliveira X-Mailer: b4 0.14.2 Even with __builtin the compiler may decide to use the out of line function instead of the inline implementation. This particular one (still) generated the inline implementation as expected (at least in these compiler versions), but this is not guaranteed to remain the case, as seen with the previous commit. Switch the builtin to the inline implementation to prevent a similar issue. Fixes: fbe5a6dfe492 ("xen, pvh: fix unbootable VMs by inlining memset() in = xen_prepare_pvh()") Signed-off-by: Mauricio Faria de Oliveira Reviewed-by: Juergen Gross --- arch/x86/platform/pvh/enlighten.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enli= ghten.c index f2053cbe9b0ce3d2178938269607c652ae8f528e..cb442cbd9d828619421babb281b= fe9759edbca8a 100644 --- a/arch/x86/platform/pvh/enlighten.c +++ b/arch/x86/platform/pvh/enlighten.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 #include =20 @@ -129,7 +130,7 @@ void __init xen_prepare_pvh(void) * This must not compile to "call memset" because memset() may be * instrumented. */ - __builtin_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams)); + __inline_memset(&pvh_bootparams, 0, sizeof(pvh_bootparams)); =20 hypervisor_specific_init(xen_guest); =20 --=20 2.51.0