From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 5A24F3E716C for ; Tue, 24 Mar 2026 11:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774350541; cv=none; b=QridckG5eyCJK8UBwjU+MP4dBkcLoKc/XhhPgsXJo/3QiFnwMfCd/Q+XZpf77CF8tOg622NDqFV0Q2zMSHueB/bquSV0OUm3aj3tIziX1SuKwfBNLeVMA8nZlAtOhXlcQWjkAp1geWARZhepf56EzqZRf4JmbG97OHhyhJj2sT8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774350541; c=relaxed/simple; bh=xgUbhSj0IzZJFn1rMT9sdzlT25uBk9cJBjY1uEfrljE=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=THInpwcAo5s3xAPsM4BD6fydeXj4qxum8slZnQgV2EIl6x4A1mgqmGk5fct0uYcO0prVqc42f4/yQ4/uziQp+aq7AszHrsVKoo2ycll6YSZO/aoGKUx5xOfl342/7naolzu7hEXyJ625mMboEy0YkGIIVacJvG1SLHRcN63l93g= 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=sqtPaoDa; arc=none smtp.client-ip=209.85.221.46 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="sqtPaoDa" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-439b97a8a8cso4058601f8f.1 for ; Tue, 24 Mar 2026 04:09:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774350539; x=1774955339; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=YGHIFn5R3KWwpZZgBcpBITWeEdgXniPxwku1lvGKL40=; b=sqtPaoDaO5cRnXvr5U4zWdOglaPn9dBMoSpjPjyErHt2o+JYH0ihzMNwkHEU9a7KZh 9aQblR/P7yVOXwB3QntQ8PNTJ19iJV1TOBYivxO8f3sOaia2u1HpnEB6MexQWElKf1v4 yp7L7qLUOU4Za3svw9JRUKc6Kv5/lra+lKdviuJL3IlH8DwnuLtOMtAzBvVZlutX+S8p MOda9eaadnd24qV8dWQGNNPdD4RwSNBkfSJUeh2pZIgVPGEF0Q2QlICYKjPZHPdcWphb eNEzA6td7I4NQAfEVdOr5gA4XjUDuFuWoDK8HZipidV8G0/eY299MQExjd9OW9n2+iQP l7ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774350539; x=1774955339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YGHIFn5R3KWwpZZgBcpBITWeEdgXniPxwku1lvGKL40=; b=C52Usy915hYhduMXKATl6QQfydiHzHyURiwM3VqA6unt1OiMDiZj3UUcevdVjmUncd 0iOG1nECStD8wtgjpNTump6s0XkF8iMDInyzkmee5SsXgxkQa/7NUQ1LJ2MrswMfBJqJ TVNHfdy4J5faRwVaoG+AwBqZpxmd+azqcmjOWiV50/4bGPob9tyK+8mHObwGx67M4UNZ +HeMTshnApTzm1LiRLBV7tK0B0WyxWTW5bq8ctSDot6/AIIWDp28QFePDVJKVwuuLUrQ yGJ+cGbONOCmPX0XAWzJ4WkXX72YFW3v1wKOnNMdhs5rm4kAXVyhyO2JQNH6zXAe9j5m NYHg== X-Forwarded-Encrypted: i=1; AJvYcCV4HFtjy7r3GAxMG7LDlQ+/t85Tr7EFyyMb5C6knvC8W7hgmN9M8+03nICoiTfqUXC9Fwsx0woQlvh3t+4=@vger.kernel.org X-Gm-Message-State: AOJu0YzxvJ6D5lbRrclwgyXtGmLYa2tV6UZ7fNaKghJMIWP6NIcz+pbA EBvwwiPBT8kNztMxBEtyv97PAmLe5S6d4g/Hw1Dm8KvdvOISyKRg+2qxWqpBtV+1 X-Gm-Gg: ATEYQzyGagWSQTEpkPO3L6SRmVIBIKkOan0IevxA5ecSJWcyQmWYxNlEIRcp9ItnAgl o1f4X1aL+xDNcmQxoN8AoYgW7fr0viZdRuK5XaRzDq40vSad90mvym/MdoVI5SP444u52wtPX/2 Vqw927ig6nNFE/EItrGVqAXxKErt6XskITUk+vHKXc5hDY+picwh5gl/2QvQGalSvkrlFNS8V8G Rk6+171lWOX2YlimTtEaFx4LFyr3bE4WwxccB9wI2EQh9mSo1mM1GdvvnltYvcANyOS+y3OklgK HBPHEEGtLpN8VI70Txh6NKbpzlV3Ntxi+Pb67vvlLudlIn6Yxu3VkGOJqNSh6WQD9yVOBdwVMwy uxc88tLxgUB49jeoxE2ONEUDfbzjGG4Es3NsiSr7pXD6gkF7Le4WC50G+d3Z0qlW+Kvipn2YviJ C9rTtnylYVP2b4dXXa7xjPHaGLjNubgQBT5hlpvseijE9Ca1fMm6cIrQIVpu1dTAb9 X-Received: by 2002:a5d:5267:0:b0:43b:584b:96a8 with SMTP id ffacd0b85a97d-43b6427d210mr19496901f8f.47.1774350538318; Tue, 24 Mar 2026 04:08:58 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b644ae016sm35920055f8f.4.2026.03.24.04.08.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Mar 2026 04:08:58 -0700 (PDT) Date: Tue, 24 Mar 2026 11:08:56 +0000 From: David Laight To: Yi Lai Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, hpa@zytor.com, Shuah Khan , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH] selftests/x86: Fix sysret_rip assertion failure on FRED systems Message-ID: <20260324110856.5e9e9c76@pumpkin> In-Reply-To: <20260320063301.489599-1-yi1.lai@intel.com> References: <20260320063301.489599-1-yi1.lai@intel.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) 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=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 20 Mar 2026 14:33:01 +0800 Yi Lai wrote: > The existing 'sysret_rip' selftest asserts that 'regs->r11 == > regs->flags'. This check relies on the behavior of the SYSCALL > instruction on legacy x86_64, which saves 'RFLAGS' into 'R11'. > > However, on systems with FRED (Flexible Return and Event Delivery) > enabled, instead of using registers, all state is saved onto the stack. > Consequently, 'R11' retains its userspace value, causing the assertion > to fail. > > Fix this by detecting FRED support via CPUID (Leaf 0x7, Subleaf 0x1, EAX > bit 17) and skipping the register assertion if FRED is present. For the selftest can't you just allow for R11 being unchanged? That would be much simpler. It isn't as though the test is doing much more than checking that R11 is corrupted by being overwritten by EFLAGS. David > > Signed-off-by: Yi Lai > --- > tools/testing/selftests/x86/sysret_rip.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/x86/sysret_rip.c b/tools/testing/selftests/x86/sysret_rip.c > index 2e423a335e1c..0228d6174d5b 100644 > --- a/tools/testing/selftests/x86/sysret_rip.c > +++ b/tools/testing/selftests/x86/sysret_rip.c > @@ -21,6 +21,7 @@ > #include > #include > #include > +#include > > #include "helpers.h" > > @@ -64,9 +65,18 @@ static void sigusr1(int sig, siginfo_t *info, void *ctx_void) > ctx->uc_mcontext.gregs[REG_RIP] = rip; > ctx->uc_mcontext.gregs[REG_RCX] = rip; > > - /* R11 and EFLAGS should already match. */ > - assert(ctx->uc_mcontext.gregs[REG_EFL] == > - ctx->uc_mcontext.gregs[REG_R11]); > + /* > + * SYSCALL works differently on FRED, it does not save RIP and RFLAGS > + * to RCX and R11. > + */ > + unsigned int eax, ebx, ecx, edx; > + > + __cpuid_count(0x7, 0x1, eax, ebx, ecx, edx); > + if (!(eax & (1 << 17))) { > + /* R11 and EFLAGS should already match. */ > + assert(ctx->uc_mcontext.gregs[REG_EFL] == > + ctx->uc_mcontext.gregs[REG_R11]); > + } > > sethandler(SIGSEGV, sigsegv_for_sigreturn_test, SA_RESETHAND); > }