From nobody Sun Feb 8 17:37:39 2026 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) (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 8E08631B100 for ; Tue, 3 Feb 2026 17:59:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141542; cv=none; b=C6jqdokh4kO9e6jNUoAK8aNAtx+2qYhym8jSTce6sGEAgibUO6wGqZ6fji3yJQ11u8KfJZhHALcoQCanAZGlthLdp2yP4V5Ndc4BaBHQSYc4zJusaWbJW0PzvfOHt3P8E99wI5Cd3UDUfgKrgFcNgAF9uyPAUCyWTGXCpF6yiYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141542; c=relaxed/simple; bh=xTZo6DvhrJhSN43KQ8a4nO6tilTwGGnmhB0NCTVr11Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X0WwYlxy5rsZeDckRd/hDyAMK0vRmfw4m2YTuPQxXYF0UplGdCzwSMoUykNaRV82zJMDGwisGBrP+zogspOEERl2ACSnP2E8uHa9ke432z4wzRkYfHRyHnmb4n/6Jfedz/iHURBL1l5s4GYcVVu0vwhUqForXjVwkvr3DArEoyk= 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=eS1qzZsw; arc=none smtp.client-ip=209.85.128.182 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="eS1qzZsw" Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-794db376fc3so23797617b3.0 for ; Tue, 03 Feb 2026 09:59:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770141539; x=1770746339; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8UCs0JK9f32+gffEVJ8m8OvhzMDLw9dM5nje1FPgabQ=; b=eS1qzZswhX4OobSMzqBZRng9rPy2MRBy/hhbzKiw9CYzYSUjSB7IFnt0E1iLV4m4Bw FlfAYTOsB5ffszpCSwjOeiySmKYFvcd2sUR6gw5xmsrmsTrBejWmlIvLmPpLzITXz7VE XluhBnTmiSqkGlhXgWIpmeN1vUoFvCI9yzEFCDu2X097hpEr6f2IRHrSOlTWXXAareDM fuTnSNuWdMfh0klDNb9FZrpxglZYpi1512B2KR71Z9sc9v0AxGxYz42UkxGyffweGYVY wf2HwSS5iov8V1WwFJe6iPyaoPiX1diXzRRK4wvzAnMeGDXjn8/HNi61vcCh3T8fGRRt B/7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770141539; x=1770746339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8UCs0JK9f32+gffEVJ8m8OvhzMDLw9dM5nje1FPgabQ=; b=X7SfA2N8hSyNYDBakuCwkgjYKIzNfm+EZ3o/6lsQyF4VDommq2uXZhw3ScmTVpSFdp mjtVo01ZC8jb+qqceww17BWqu1DZ3j9U8jMNKItn7rsLFyd7YUak0IsQ35XT8ipbyhLA P3NvbCG2SghfQmoT3rz9KtEjdnCRXbVtHkf0EVdRuXxXgQlnvwjFFCvjflWmqWZnnYLC 1e4Mf81WbpVi3pkQdrUNYGyBqwdZUNEa/99Ej3c6UMR8J+qOkP/SmzqLwZVNYiqpyyIK +OrfJ7A89O10ZmqGzZrrpXDTQI3MguST/vrUDdstMN48f2TabEpeTcIm4cKXhTpMri8J 5r+Q== X-Gm-Message-State: AOJu0YwU7D6NnGmXHluddlB3QRmzj2H4GxCL8OBWvqGURlf0UqXfBaPV BaxEFcz7TYvYNPGYkIt5caWyYEU0W+Fo5RGtCj97B4v/Zk61vpTcdnN1CpFG X-Gm-Gg: AZuq6aIbQJvw3dclAKJ0s0oaiMNzKNCEphCgi+x0BbxYi5lA+s/cYTwkWBvW4FwuuuS wuMlDKDgegKW589WtsFb0zylyv7oYhJ+a1NnZoi5zDOEem2Q5Lfg54UeL++PS2iI+cEvcZxwhEH BZKyvvzUO3g2Vz9Pwkwsa0xov+KZL9xqO+YBNjNC4dlElwG5EuUBYDYw+VU4sqNRWUysde28K82 FId7KP7UQ6LfiAVFqpMsB3V4s5ZEIXwaohG7ApX3mtjfR8KRFbbHCWSvN2N62oOeYBMGSzxYvzR AIQn4XGhCvOFAoLVgZS6v0hsVnylh/Cpwnfw8XcJaVvu0egkir7YGa9XwH7eFp/RMl/sNEuAkwL fnAh8X9XOuYV9v6pfcLMTgdPwkYgDqOoCCqu76mIz649VYfhZJyHHdR26xV2LfcAwhDhi X-Received: by 2002:a05:690c:1a:b0:794:c7db:51d with SMTP id 00721157ae682-794fe6361a1mr3681097b3.9.1770141539222; Tue, 03 Feb 2026 09:58:59 -0800 (PST) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1dba]) by smtp.gmail.com with ESMTPSA id 00721157ae682-794fefc8849sm1204647b3.38.2026.02.03.09.58.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 09:58:58 -0800 (PST) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , "H . Peter Anvin" , Thomas Gleixner , Borislav Petkov , Ard Biesheuvel , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Brian Gerst Subject: [PATCH v2 1/4] x86/acpi/suspend: Remove indirect jump Date: Tue, 3 Feb 2026 12:58:18 -0500 Message-ID: <20260203175821.511847-2-brgerst@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203175821.511847-1-brgerst@gmail.com> References: <20260203175821.511847-1-brgerst@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" wakeup_long64() is called from common_startup_64() via initial_code, so it is already running on the normal virtual mapping. There is no need to use an indirect jump since it is not switching mappings. Signed-off-by: Brian Gerst Reviewed-by: Ard Biesheuvel Tested-by: Ard Biesheuvel # qemu SMP suspend/resume --- arch/x86/kernel/acpi/wakeup_64.S | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup= _64.S index 04f561f75e99..3d56610f0108 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -41,10 +41,9 @@ SYM_FUNC_START(wakeup_long64) movq saved_rsi(%rip), %rsi movq saved_rbp(%rip), %rbp =20 - movq saved_rip(%rip), %rax - ANNOTATE_RETPOLINE_SAFE - jmp *%rax + jmp .Lresume_point SYM_FUNC_END(wakeup_long64) +STACK_FRAME_NON_STANDARD wakeup_long64 =20 SYM_FUNC_START(do_suspend_lowlevel) FRAME_BEGIN @@ -71,8 +70,6 @@ SYM_FUNC_START(do_suspend_lowlevel) pushfq popq pt_regs_flags(%rax) =20 - movq $.Lresume_point, saved_rip(%rip) - movq %rsp, saved_rsp(%rip) movq %rbp, saved_rbp(%rip) movq %rbx, saved_rbx(%rip) @@ -84,11 +81,8 @@ SYM_FUNC_START(do_suspend_lowlevel) xorl %eax, %eax call x86_acpi_enter_sleep_state /* in case something went wrong, restore the machine status and go on */ - jmp .Lresume_point =20 - .align 4 .Lresume_point: - ANNOTATE_NOENDBR /* We don't restore %rax, it must be 0 anyway */ movq $saved_context, %rax movq saved_context_cr4(%rax), %rbx @@ -139,7 +133,6 @@ saved_rsi: .quad 0 saved_rdi: .quad 0 saved_rbx: .quad 0 =20 -saved_rip: .quad 0 saved_rsp: .quad 0 =20 SYM_DATA(saved_magic, .quad 0) --=20 2.52.0 From nobody Sun Feb 8 17:37:39 2026 Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) (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 AF8D43659F8 for ; Tue, 3 Feb 2026 17:59:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141543; cv=none; b=qOG2ES8kb977SMGdGdZDem4lxYtopVjKhPtnCVBG/JeK59gz2RUAX1VjQdCbFkoBcg45z+c/346LVK70cLUK+ikCOcK/gAXwjdXcXh098UwyBWLOhebwMQRU4YIUm8I3vF60ifKuszO1u+mxTSYiAZnd6N7ODJv3btNOUutpz/w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141543; c=relaxed/simple; bh=/X2UKM2xoAD1171yMqYDtkPk+jUeOzyOyeTnFXDrjVM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CvxnhYuvz+sCs6cpLV3+/pn8npVytrFge5lsejFqp8vgZcEVGCqzue+FO8xS62lwQjfDe8rMhR1iJzUHjVvhrr2Ukd1Ihn1dbVES7Yc7UwuU8eLdB8WaFvwnmNLCbfNAAs4I913ccYC+JwxuLGxFidYYyTR6bjJ6rZFPxxM5APE= 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=MjIN3y1g; arc=none smtp.client-ip=209.85.128.180 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="MjIN3y1g" Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-790992528f6so55398907b3.1 for ; Tue, 03 Feb 2026 09:59:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770141540; x=1770746340; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qkVQJOscwjS4VxQxwy+WY3xBxrXJadoZ4rZiRmhzFj4=; b=MjIN3y1gbc1geqU0w+/Wvsp34maKUPdUnvbBTt2GwqBv/Sr4s2NVvLSvvnYtGysehW 5XhDnfJalYZK57WFtQxOMxe7ic6Up1I4fZSHAgJdQhjCoriyj2GCANKhdmzNCm7P0Mb2 SBCZRCqIwFgYMOwqwWXqmuIc1U+GxEGKAo35tVQ0FIi5JO9HG983wzjxWVBJljWqeJ3Z /VaaznOOS3eqxRNzLIJSXSVmhn9KkqZqqWpcLrj6FdmloKsYKkAPczq4g+NJJXRfPBil zkV8WgF5sbnMcH5I+1zVJ1I2mV6My3VGvy3SYbqwKs/LtEDbkVANOdhkvtG7u/UjI7+8 8g4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770141540; x=1770746340; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qkVQJOscwjS4VxQxwy+WY3xBxrXJadoZ4rZiRmhzFj4=; b=wxUN+TC4RhNzrx/oCvmMxKoUu2zjbHK47Tt8r2XbYC/rvfm0IpYltIC+o+YE3NTDDZ Ro0LnZJdxSAEDF6rI70MUJ6LFPU1KlRwf7VLb/nbNf2+21WGxhEjDnk4Be9BwhxujA4E cM0j6QEyAak7IA2RcaNDvNbBciXKVasd8EdkbBBFibwN8tSUTgeEohwAV5uOCTtLtm0S Yzx2fg7ECEU7TX3o2ZwtN0+Ig4adNSlyc/DO1w4qA46AKw+YWymgT3S/rb362E/REMxR myKr20OsA7pC2WbNpLJT8+Og6Nv2ZEFAJYOoJigfAxX5EiGZ/Tnvhy5+B4y9iVvBnvFQ EU8Q== X-Gm-Message-State: AOJu0YydM+KGHv2qpMKdZYr4RO4dwkZz4zxY0boXdIGkP1YOGpFwgH5p amzdUT6JToUO1eX61z87qliGEcroqeP5gf2HNInzP/wCVnIGSvi0ampK2qa5 X-Gm-Gg: AZuq6aLGzIbI9MvypAocVMLBCdgGd4QpT4aGlBdKbmbnw7QtRMgWHy2HV957sYgEKT2 RKJ20uTYoqq6qr+hPwxfux8juMT1cuuIkDdu9eI4/fs0OmbTHvmJXc+ErcHjL1jrZMFPBppLBrI V+I2MDyMIshhYEpjfR7dBqZpnCvNwMNKswB5TSyD9QLYRjPG+6r+6BGQKMCoNXb/2mqsVNznsHx mNmIKA97IKq6Nf8tqHwI0sr5NpcMaM69rSNENgdr3yUF0IQTOemqkdsAOgFOJ1jUWupHS9jBBTk q0lWDuw1wJbma3HXOGf3xFB1ZIIlIZN0R5INjehqL+LBkyEEDgsNQjQRwApnHTT+RivUmJ5096T NiIn2gCYUVqPz9TehB3j9cAndA57m7nKe7/CUyBHRjo/R7nWY1dnpPEwwPlBrc0MG4nZm X-Received: by 2002:a05:690c:fc2:b0:794:795d:4732 with SMTP id 00721157ae682-794fe76355fmr3774217b3.40.1770141540604; Tue, 03 Feb 2026 09:59:00 -0800 (PST) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1dba]) by smtp.gmail.com with ESMTPSA id 00721157ae682-794fefc8849sm1204647b3.38.2026.02.03.09.58.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 09:58:59 -0800 (PST) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , "H . Peter Anvin" , Thomas Gleixner , Borislav Petkov , Ard Biesheuvel , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Brian Gerst Subject: [PATCH v2 2/4] x86/acpi/suspend: Remove segment reloads on resume Date: Tue, 3 Feb 2026 12:58:19 -0500 Message-ID: <20260203175821.511847-3-brgerst@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203175821.511847-1-brgerst@gmail.com> References: <20260203175821.511847-1-brgerst@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" common_startup_64() has set the segments to usable values already, and they will be restored later in restore_processor_state(). Remove the redundant segment loads in wakeup_long64().. Signed-off-by: Brian Gerst Reviewed-by: Ard Biesheuvel Tested-by: Ard Biesheuvel # qemu SMP suspend/resume --- arch/x86/kernel/acpi/wakeup_64.S | 6 ------ 1 file changed, 6 deletions(-) diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup= _64.S index 3d56610f0108..099401ef2ea4 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -28,12 +28,6 @@ SYM_FUNC_START(wakeup_long64) 1: jmp 1b 2: - movw $__KERNEL_DS, %ax - movw %ax, %ss=09 - movw %ax, %ds - movw %ax, %es - movw %ax, %fs - movw %ax, %gs movq saved_rsp(%rip), %rsp =20 movq saved_rbx(%rip), %rbx --=20 2.52.0 From nobody Sun Feb 8 17:37:39 2026 Received: from mail-yw1-f178.google.com (mail-yw1-f178.google.com [209.85.128.178]) (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 1409F329378 for ; Tue, 3 Feb 2026 17:59:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141544; cv=none; b=KN5JtUhMvrZ036gz7gq+a/W4vhoI7Lara37HF/aBcIHE86JbIHcx98Ck/v4aHMfn/C3xWJXRe8jmMtY6+8WQsHbpX9CljT2DPV184mzf13XKxH8KJrPJSjlwQXkxyJ/fknAuNwM0XLWZg4vYHOw/CEF6eJK3RXLAekmGASB3uDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141544; c=relaxed/simple; bh=nC9VDmqMVXaxesQvTdS96JiSN9qfL4favK0Q2cyDagw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OZwjSYtch/BWhR3WH6pdRMl6c1Qh/AuPJDRosqIj2jlACgci3mjVGyTBfre2kqnS5frT+awO/j+zoCFHl1EITVwwnr6/7YlhtOIdwqYb+IqpTbxEuZYyilDe3Wi2i4MxT8zdfPrsSL04Z/VByuJayDjU48fB/9AqqRveYabriHk= 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=fcvYCIZo; arc=none smtp.client-ip=209.85.128.178 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="fcvYCIZo" Received: by mail-yw1-f178.google.com with SMTP id 00721157ae682-794e0e933ccso22524817b3.1 for ; Tue, 03 Feb 2026 09:59:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770141542; x=1770746342; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D6q457KiJcc3DXhj7d5HgrU4vz29quL+9gex1dTE6dI=; b=fcvYCIZo+FHLz0qMe3jUQZ6AmvZCBS/2ukTgP716aYNYPdxxfUh/AdGh0aPBLeUVUO 04suTGMXxA2nY90+SmA0Hz583uFaR/OMLeznTVXdyvw9FHMMSRjxGjlwe2mhhhnBM4zC CuOIjUsOFu2itvYqNpOd6TZqmCamkJHEYZqXO9svoX4hFoV7J0gC3q/zsAIm3A7/qbca 9inkhkZwm2MF3MNpTSyzuXY0+INRcei4c7mTm9dBW6wLxmlPwNzIqcX1MI4VqDbWCCJy dFJ2PQHKDe/QeVHLjGSndO5ZWxrZtmxDjFYGFA5kowWwNlfrgRB0TO3YugEhAp0SXFQm yrCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770141542; x=1770746342; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=D6q457KiJcc3DXhj7d5HgrU4vz29quL+9gex1dTE6dI=; b=ZbeJkhOEtdRySbEoSqElXGhYCwMOS/S+4O2dh38LAvTxYG0fyLeJixQ4uskbhq8TyL lTsSFXW0YTqxyojtgiGj56Gshk+9BNnWXZ0uc4xYQlA8oJ2SUQnmIIitqo0tX31+/bxI 4lBtWM2pxHkfkENRAP8keH0R1KlIthUiOxQS+6PJafZvQ33D5Tp5KukbuMwlHN8ZDS5M XsGDbRco6V9tGCUb5pBxoJhElO9zr/a0Vp7VTIwfYWV0lyEcdat514pdqMADIsmTdnyD qMr8bmhKA6wozAt94sK8EVzQ7eQjrK2Yp9A7jd2cXzJzGwZ/zED+2YrhgPY0Y7Y3Zi8W F6nA== X-Gm-Message-State: AOJu0YwfueQQsWJvTYuNeQFdmvUOunZk4PWVa4FGEvcb48pSujxU03DU 8PFE4Ny6FxZS7xof2so4xYiDDyz2sdQm9ieHhHOYEZznObkHdeV5g4xITe8m X-Gm-Gg: AZuq6aIaIM0vefqEY17DojbkMaVDQg1wsmcct6NY9Fzux/g/ljOge7oCNW7Q4rMuPLV 1dPt61kQFyXXK3pQMXFjs/wCokCCIqvtCxEQEc3x9FvaP+CZ+CTZlVTs0bBq5l/m8DN+lFmiK5a UGFniuyLFqZmy+Leh1GZiE8UQsddTlcM5vNdaI+ZK3FSsKMIaMJK7JmE6qRzY/w781Zf1JwnM9E HYr1kET39CQqzN7E/3Vx77rsKztxnPJp+StFSD+kmPvzvvrXqRTMWiNj3R83eltjKbu1vYFmY+P l7Ti875B3bfiUkBtih2zojjxUnaGae6V2d08quhM7zzkWzntP6shNb24UB8hF54B2KQS+TZsXtJ 7pAoaUe71Z1iX5fjW6uPtAHJivtM8+vOIME2zrFCuP8uK6e6cHW8BSXG7CxsMQ75q94OT X-Received: by 2002:a05:690c:f87:b0:78f:8503:7773 with SMTP id 00721157ae682-794fe62b630mr4399747b3.3.1770141541888; Tue, 03 Feb 2026 09:59:01 -0800 (PST) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1dba]) by smtp.gmail.com with ESMTPSA id 00721157ae682-794fefc8849sm1204647b3.38.2026.02.03.09.59.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 09:59:01 -0800 (PST) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , "H . Peter Anvin" , Thomas Gleixner , Borislav Petkov , Ard Biesheuvel , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Brian Gerst Subject: [PATCH v2 3/4] x86/acpi/suspend: Clean up stack usage Date: Tue, 3 Feb 2026 12:58:20 -0500 Message-ID: <20260203175821.511847-4-brgerst@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203175821.511847-1-brgerst@gmail.com> References: <20260203175821.511847-1-brgerst@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Save the stack pointer to current->thread.sp right before calling x86_acpi_enter_sleep_state(). This allows removal of the temporary stack. Also remove the extra stack adjustments that are not needed. Signed-off-by: Brian Gerst Reviewed-by: Ard Biesheuvel Tested-by: Ard Biesheuvel # qemu SMP suspend/resume --- arch/x86/kernel/acpi/sleep.c | 20 -------------------- arch/x86/kernel/acpi/wakeup_64.S | 18 +++++++----------- 2 files changed, 7 insertions(+), 31 deletions(-) diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index 91fa262f0e30..72b5028feaf2 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c @@ -25,10 +25,6 @@ =20 unsigned long acpi_realmode_flags; =20 -#if defined(CONFIG_SMP) && defined(CONFIG_64BIT) -static char temp_stack[4096]; -#endif - /** * acpi_get_wakeup_address - provide physical address for S3 wakeup * @@ -113,22 +109,6 @@ int x86_acpi_suspend_lowlevel(void) saved_magic =3D 0x12345678; #else /* CONFIG_64BIT */ #ifdef CONFIG_SMP - /* - * As each CPU starts up, it will find its own stack pointer - * from its current_task->thread.sp. Typically that will be - * the idle thread for a newly-started AP, or even the boot - * CPU which will find it set to &init_task in the static - * per-cpu data. - * - * Make the resuming CPU use the temporary stack at startup - * by setting current->thread.sp to point to that. The true - * %rsp will be restored with the rest of the CPU context, - * by do_suspend_lowlevel(). And unwinders don't care about - * the abuse of ->thread.sp because it's a dead variable - * while the thread is running on the CPU anyway; the true - * value is in the actual %rsp register. - */ - current->thread.sp =3D (unsigned long)temp_stack + sizeof(temp_stack); /* * Ensure the CPU knows which one it is when it comes back, if * it isn't in parallel mode and expected to work that out for diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup= _64.S index 099401ef2ea4..b4bb1ca228b6 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -18,6 +18,10 @@ */ SYM_FUNC_START(wakeup_long64) ANNOTATE_NOENDBR + + /* pop return address to common_startup_64() */ + addq $8, %rsp + movq saved_magic(%rip), %rax movq $0x123456789abcdef0, %rdx cmpq %rdx, %rax @@ -28,8 +32,6 @@ SYM_FUNC_START(wakeup_long64) 1: jmp 1b 2: - movq saved_rsp(%rip), %rsp - movq saved_rbx(%rip), %rbx movq saved_rdi(%rip), %rdi movq saved_rsi(%rip), %rsi @@ -41,12 +43,10 @@ STACK_FRAME_NON_STANDARD wakeup_long64 =20 SYM_FUNC_START(do_suspend_lowlevel) FRAME_BEGIN - subq $8, %rsp xorl %eax, %eax call save_processor_state =20 movq $saved_context, %rax - movq %rsp, pt_regs_sp(%rax) movq %rbp, pt_regs_bp(%rax) movq %rsi, pt_regs_si(%rax) movq %rdi, pt_regs_di(%rax) @@ -64,13 +64,14 @@ SYM_FUNC_START(do_suspend_lowlevel) pushfq popq pt_regs_flags(%rax) =20 - movq %rsp, saved_rsp(%rip) + movq PER_CPU_VAR(current_task), %rax + movq %rsp, TASK_threadsp(%rax) + movq %rbp, saved_rbp(%rip) movq %rbx, saved_rbx(%rip) movq %rdi, saved_rdi(%rip) movq %rsi, saved_rsi(%rip) =20 - addq $8, %rsp movl $3, %edi xorl %eax, %eax call x86_acpi_enter_sleep_state @@ -89,7 +90,6 @@ SYM_FUNC_START(do_suspend_lowlevel) movq %rbx, %cr0 pushq pt_regs_flags(%rax) popfq - movq pt_regs_sp(%rax), %rsp movq pt_regs_bp(%rax), %rbp movq pt_regs_si(%rax), %rsi movq pt_regs_di(%rax), %rdi @@ -115,11 +115,9 @@ SYM_FUNC_START(do_suspend_lowlevel) #endif =20 xorl %eax, %eax - addq $8, %rsp FRAME_END jmp restore_processor_state SYM_FUNC_END(do_suspend_lowlevel) -STACK_FRAME_NON_STANDARD do_suspend_lowlevel =20 .data saved_rbp: .quad 0 @@ -127,6 +125,4 @@ saved_rsi: .quad 0 saved_rdi: .quad 0 saved_rbx: .quad 0 =20 -saved_rsp: .quad 0 - SYM_DATA(saved_magic, .quad 0) --=20 2.52.0 From nobody Sun Feb 8 17:37:39 2026 Received: from mail-yw1-f176.google.com (mail-yw1-f176.google.com [209.85.128.176]) (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 64B763A63E5 for ; Tue, 3 Feb 2026 17:59:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141545; cv=none; b=bLskq8V334M7aLmc8QPcP2FoMj+/dJG3aN9jOb4tEDfeeeppr0k/f+l6bqF194d1Tuv4szkW4M8NXadM34DOCOcq7oAU7mSVRXlR9++tnCJLUZIh2LU1dnlbG4WFqo9OVnusZgLP6oyvN4Syn1DIXzglZxuWbhsUT2Bho+VLdK8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770141545; c=relaxed/simple; bh=XIFEIkVfS2fiunES6GFpNr/znuPlzTOtGTmtlrXmHEM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CAoml/vyC2fo57HAE0cccK9M5G87KpRANTy3XcoAvNkZU1pXPi/o+mPfd1i7CMNccUc+fyg1Ob1XsBcZMVcKP8US90GCCMU4+D5dLb0dvjUGsmrIvV2CB5c03a91KsODkPuQtf709AhB1rvq9bNQHHYrXFCbZED2g1AxKvzrt+U= 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=ZcSbhwoz; arc=none smtp.client-ip=209.85.128.176 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="ZcSbhwoz" Received: by mail-yw1-f176.google.com with SMTP id 00721157ae682-794d4f11a20so27534197b3.1 for ; Tue, 03 Feb 2026 09:59:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770141543; x=1770746343; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zMelDBIBf0H5OM784InI77d/gq298gB9xmca7hvO+Qw=; b=ZcSbhwoz0MFpq1oRcrd2KJN0FQ/j462YaNM40TNFru+WFaH6ugwMlvObId3+/HpoL9 WfefCE9lihgYLdluMzo9FXjR2nWfiYbZjt/n6PmyVCYXlJKu6mxlIDop9MDT9zHTcRAN xixU9NNSkWVP7HsZBmRqzebj+5elka3L1nORdnbyHknlnZYZX6HBHRvSDqlfRJxJ9wQd X8EI7OqLGsIKMizh0dYsXXxNHeCZJnNWQtLkj1EZZruog7jLyXCMaYyMLKG0KSU6lTgW w/0O+mlJBhwWDlmLsQnbLy9nThAId2lpacxXx6pLeWMGbty2eRoK7z5h8yHoleABTfZJ Oc2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770141543; x=1770746343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zMelDBIBf0H5OM784InI77d/gq298gB9xmca7hvO+Qw=; b=uCrbBWwuerJAdfaHLaWGd1rWcIgpFB/yhZEYgaBUUTCDjvzgCX66Zd+Xpoz6BecEyO eIfvrMNlAfCkcABd5/q7E7k8YuhHJff+smcd9xDasj+1d2B0qQRiMpFnC0WOSeXgb389 vC28Idc/9R4VoBmBqOejwmYMOzyVzZHkl4cN0+JBsvaKOAPpvZj7DDP06ksdrnCNnmLW 8oUoQWaswrwyzhXmt1hsYqktuAz0nPD9dpsNm4/PsR3tere3aBpYZ33vk+nlLlOGtQNF WxCy2oKV9OBmB54R9Dtzh6JFronDDVa9Z6xeePAV9FSLZU4qLhK5PfhuMOQj9v7a8DBI M0vQ== X-Gm-Message-State: AOJu0YyNrNFvcNxml+mjtrW8/wzgeigbLy+AZCo610fja9DbFiORFDbH s0xm5/KbOD89V6xhaIQMzlKC3RzR6gq6jDXxr7s49j+JFXpYBspkN/DMlUlV X-Gm-Gg: AZuq6aI3NF/A6mf0BRIYqE4aInw97B1Ycb1PMhETFJb5evmWtBHH/tTgEhn/vUIDDzz tJsxQc+KSgdk9swUC3ETO59cKAl5cUgcWa1LB5SPv+K39uw3G0e2FDoMJ25Giabt1UbVOQ1f/Ln AipdzGTMhGQx3odn3PG5leTMA1E8D01KiLnd3/Kn8kllBDFlQCMp1omE7Vkw/WPMRO6cuVpWtyz naj+UIZp6756GwH45LPsp3E1Y71QvX7HMaSTAn038ZDg6pJwxrYzKasdR+TP4zKZJcVmnaXn1/+ NRJI5Rnuv4BRcgui3kwTUZlabMHduK6uCbVCLE9KTtTj/0wQGeg/G6X7LSaRiHnAfSSBYQ2cuzp mw/zgzZhgDuEkWXqDk5Wm5QB6sKYdrCfsWu/OYx9I/0nGVwTl3HnJE9JBrYJfBZPWTQV/mWvMqY OhvMs= X-Received: by 2002:a05:690c:e4ee:b0:794:fc73:5d2e with SMTP id 00721157ae682-794fe7becacmr4080697b3.54.1770141543242; Tue, 03 Feb 2026 09:59:03 -0800 (PST) Received: from citadel.lan ([2600:6c4a:4d3f:6d5c::1dba]) by smtp.gmail.com with ESMTPSA id 00721157ae682-794fefc8849sm1204647b3.38.2026.02.03.09.59.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 09:59:02 -0800 (PST) From: Brian Gerst To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Ingo Molnar , "H . Peter Anvin" , Thomas Gleixner , Borislav Petkov , Ard Biesheuvel , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Brian Gerst Subject: [PATCH v2 4/4] x86/acpi/suspend: Remove redundant register saves Date: Tue, 3 Feb 2026 12:58:21 -0500 Message-ID: <20260203175821.511847-5-brgerst@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203175821.511847-1-brgerst@gmail.com> References: <20260203175821.511847-1-brgerst@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" All general purpose registers are saved in save_context. Remove the redundant saves to local data. Signed-off-by: Brian Gerst Reviewed-by: Ard Biesheuvel Tested-by: Ard Biesheuvel # qemu SMP suspend/resume --- arch/x86/kernel/acpi/wakeup_64.S | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup= _64.S index b4bb1ca228b6..e8b3d01ba14a 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S @@ -25,19 +25,12 @@ SYM_FUNC_START(wakeup_long64) movq saved_magic(%rip), %rax movq $0x123456789abcdef0, %rdx cmpq %rdx, %rax - je 2f + je .Lresume_point =20 /* stop here on a saved_magic mismatch */ movq $0xbad6d61676963, %rcx 1: jmp 1b -2: - movq saved_rbx(%rip), %rbx - movq saved_rdi(%rip), %rdi - movq saved_rsi(%rip), %rsi - movq saved_rbp(%rip), %rbp - - jmp .Lresume_point SYM_FUNC_END(wakeup_long64) STACK_FRAME_NON_STANDARD wakeup_long64 =20 @@ -67,11 +60,6 @@ SYM_FUNC_START(do_suspend_lowlevel) movq PER_CPU_VAR(current_task), %rax movq %rsp, TASK_threadsp(%rax) =20 - movq %rbp, saved_rbp(%rip) - movq %rbx, saved_rbx(%rip) - movq %rdi, saved_rdi(%rip) - movq %rsi, saved_rsi(%rip) - movl $3, %edi xorl %eax, %eax call x86_acpi_enter_sleep_state @@ -120,9 +108,4 @@ SYM_FUNC_START(do_suspend_lowlevel) SYM_FUNC_END(do_suspend_lowlevel) =20 .data -saved_rbp: .quad 0 -saved_rsi: .quad 0 -saved_rdi: .quad 0 -saved_rbx: .quad 0 - SYM_DATA(saved_magic, .quad 0) --=20 2.52.0