From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 D45D82FFF81 for ; Tue, 28 Apr 2026 16:05:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777392316; cv=none; b=AYuZ9LOppdNT+lGp6Z7Uz3lqytRTDm7+Qd/nz4GBi0vsnWcCzOmlkEsHkI0FmO4uLXndtz5sBoalCol4ORpJREHG2u4vZzyNXAET/kiY5hOxmmuNCcbKJp+iXk0YEcrd4OJaDE6IN6GZykNz+NjtkyRx9AdkAwC2smWMlbjEvkc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777392316; c=relaxed/simple; bh=PPdjeddpFjnBT2zbpNq19PZSPH5de4eWWisRZibE6EM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gZh9W6/1z3ziOiIv78adpftgZlViOzuoLZMYQ7mZJnS43OtgddrdBZOT2I7ZAhyuaNXV0IjPDn6FGA4SbpFRKL1nDR3QJU2pj9ExsARfvGvNNKfmsRmj9nhxzFTecWi3tHCK1QzjT9nDZjDXxK6NHazi4JQ1//WqbPq0TRSvuWY= 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=ASIvDPM4; arc=none smtp.client-ip=209.85.221.53 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="ASIvDPM4" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-446fea16729so559263f8f.3 for ; Tue, 28 Apr 2026 09:05:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777392313; x=1777997113; 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=W5qglsCoLsHxN9TEbPZdSHaLUC1QtUeSBxxkCWokqUU=; b=ASIvDPM4VQruKRH6JBKy12czD1SZj72zpUx49tM1hS0Kc9robQ/z1JR/gcV5NTjW47 B0yMvi3oBUuOQaZ33pGinVpA0P3kQqyx7K0eanb6wSnSTcL2Xcg5FCu8hf1/LU/sYoBf 1f3J2liB/9+MiQ7mGlLoEAc2JwSvL1zLhlmDkxy8arArqcEx8e1L6Roq/vql9F6sk8pI OkyWpvh2Xa1Ht21MFNf2EKGiua96z7jCiU+3avR01g1dotr1CBOqfKFVA47LU22dFTYx wpBcApgN3OCcaw3OnIirzhLkSR6GI+369Iy8NNv+/L/zEJ0EvqXGWh7Qq6DIexE2mjNO VvHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777392313; x=1777997113; 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=W5qglsCoLsHxN9TEbPZdSHaLUC1QtUeSBxxkCWokqUU=; b=Wezjq06205Qy+D29ZmzXrTJZgdA2sLlYFLsFbCg09zWY7WHEm5JnWO/RFMrZaE3iJj SvPGCIMwzHI10H4zrB2mRVzdN7sMEyd0EdVSvTf8a6m9YXPCl1wQBvBcHAoIQMztoMqH FhQXF+1UF5ErWTAtTDkYMaq1t4+etQysHWoCadZP1iTLyy3ZHnbYMDjHnFVgJQAinU28 3RhlfyUnECvrFMKNaLhFvAby4tEwSDMIJNRV8FO4DbacXKSCqwDoICdLarTkLOJJGvEu a9NuYZQ14iCrplkpJbZH63q3mR6vRjIzykvWh/czSlk6OA8c6t/U9zuijODTfeif9fqF IOFQ== X-Forwarded-Encrypted: i=1; AFNElJ/9IlkeU6dbThmVzCAyFJTrOKdxveR+GBWutBcph7J9x6bIllRPJ6C43IhJNpcnrL8UR+C35D8u+uqrClw=@vger.kernel.org X-Gm-Message-State: AOJu0YzeUeLhK2GD79n+w5GG2OMl7Sj/27BxTyTLNfM3duX+BHNniGBf N7gorsdYUvhs2Cz9zPjmwpRqYQdhoDgxOc3LtyVA/v6qShpsvTx5BYJo X-Gm-Gg: AeBDietL0a/+Lb3yLmDaaM+AX56bne8blI1DkJAPZv/ex0KluwQD/FUBieSbW9KGXt8 0p1V5epnIzAXb1sxsqmLF/4qFUewEkdp1g4jgMRmhbjFuJ98WhmumygZL/ZK4w/iz22U4I8YAzf XJHouqgMqvtjUOlU73eKtHdSNm/BM3muDcZtZAvySeFxcVrV9E7e2qVniooaZVGtt4FPYcVG594 5hMz9PZEMzxYbL2Shm9pNo6c1MuURHskpldMgIy8xDnq/T1ytIMWDAP3kkX7sdcSxp9X52i7R/K FnVTfuCGW5N+lQH/jV0MT7P1mz6HTtR2n4kUeE+t+CxyrBOXKcRhMhnQEdK9+TSe1inU9pbkau6 s4FT/8ab5sdZthqDnfcO/FZL58shTB8VXJewuNQsX+TjlSYwVc50b65n0MDnDaBTDsZqxChFjY8 0r9K+bBXdyaVlYIANKqUtmFY39Loiw9CMvqjKBD72zCrnGmudf/nHrlTWx6bTtv3LzPqK7Jwt20 v0wO6bUiloQpzAYY54m3SvJXcaUfapmvRJXn3G+8fV5XlOpcytRd5Q= X-Received: by 2002:a05:6000:2c01:b0:43d:73de:abd2 with SMTP id ffacd0b85a97d-4464a168597mr6712227f8f.26.1777392312575; Tue, 28 Apr 2026 09:05:12 -0700 (PDT) Received: from fedora ([46.248.82.114]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4464004edc8sm7532923f8f.37.2026.04.28.09.05.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 09:05:11 -0700 (PDT) From: Uros Bizjak To: x86@kernel.org, linux-kernel@vger.kernel.org Cc: Uros Bizjak , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" Subject: [PATCH RESEND -tip v2 7/7] x86/process: Use savesegment_mem16() when saving segment selectors Date: Tue, 28 Apr 2026 18:03:41 +0200 Message-ID: <20260428160443.3593331-7-ubizjak@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260428160443.3593331-1-ubizjak@gmail.com> References: <20260428160443.3593331-1-ubizjak@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: 8bit Switch segment save sites in copy_thread() and save_fsgs() from savesegment() to the newly introduced savesegment_mem16() helper. These call sites only store the segment selector into a u16 field and do not require the value in a general-purpose register. Using savesegment_mem16() avoids the unnecessary register intermediate and better matches the intended use. The generated code is improved from, e.g.: 34f: 8c c0 mov %es,%eax 351: 66 89 83 08 0c 00 00 mov %ax,0xc08(%rbx) to a single direct store: 34f: 8c 83 08 0c 00 00 mov %es,0xc08(%rbx) This is a mechanical follow-up to the introduction of savesegment_mem16(), with no functional change. Signed-off-by: Uros Bizjak Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" --- arch/x86/kernel/process.c | 4 ++-- arch/x86/kernel/process_64.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 4c718f8adc59..f7a38345980c 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -197,8 +197,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) p->thread.gsindex = current->thread.gsindex; p->thread.gsbase = current->thread.gsbase; - savesegment(es, p->thread.es); - savesegment(ds, p->thread.ds); + savesegment_mem16(es, p->thread.es); + savesegment_mem16(ds, p->thread.ds); if (p->mm && (clone_flags & (CLONE_VM | CLONE_VFORK)) == CLONE_VM) set_bit(MM_CONTEXT_LOCK_LAM, &p->mm->context.flags); diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index b85e715ebb30..619b46f9bcba 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -275,8 +275,8 @@ static __always_inline void save_base_legacy(struct task_struct *prev_p, static __always_inline void save_fsgs(struct task_struct *task) { - savesegment(fs, task->thread.fsindex); - savesegment(gs, task->thread.gsindex); + savesegment_mem16(fs, task->thread.fsindex); + savesegment_mem16(gs, task->thread.gsindex); if (static_cpu_has(X86_FEATURE_FSGSBASE)) { /* * If FSGSBASE is enabled, we can't make any useful guesses -- 2.53.0