Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp239188pxb; Mon, 13 Sep 2021 18:03:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxdCiXU8Cq/AMz9QEM2P0sKPEn5aXqVVlxOMzwAl7BZSseDNN8XY0CkoBKjxqmvx4mwC2+z X-Received: by 2002:a05:6402:715:: with SMTP id w21mr16026525edx.271.1631581391540; Mon, 13 Sep 2021 18:03:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631581391; cv=none; d=google.com; s=arc-20160816; b=p8MdvUOIKIDrfbgytNth5rhH8RRmeOi3NQ/UvHhqrP78iveUmakG2UwyIQ0x8fGtaS oTBy5ETqoM+yXwud3Y50eMogaDD/g31c0jTwOQ9tL3lbQGL3FQhAFocyzt9dONudKZQw Ku/PPHOOPG7U3Xc95ioiQtPTJorS42S/EzwzH0C3Hzj8rqjla3MPYSSHEzGNXY49WmLu afEbp8C+fYDqtPf4YdzxgENoT0/RrNns/lwEXmJ89YUMrB4Ynw9zmsLnMasww6swAz6G PC+THhj3lyfla/q5jOAmcy2OcNggiCqPnMhIJ6IDZlCGJ5e4xMQD9PW2CRUhs16mYRLc RXrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:date:references:in-reply-to :message-id:mime-version:user-agent:dkim-signature; bh=1/MxgrJo0XVU31KBzf++EgkFM37n0mPWTVlow4YD5a0=; b=B0ubQRP+lIvlfFGyA1BogaP6DvAe/scrBcOl8PEBUoh4Xyhw7v2OZ+rrWltmKJQFSL VXq2XZdPBhdzw2Z8+1oaDmHVBQgEtoCX4NlYJVRRpEvxGafyBFh87vEZCEqzS2r/4jOK AgkYw6v1ZavY+g/kXoL9G1cEnfardiTiZ9z10+RSFg4mmBGDTZXVgrTGpO6eEDmndTES IsfFslZcHjDSvZOCCOVncPzRCOL9vpQWZdcvdieT/DOPC50OWz5q2EC6L5ATEvKc30cL r1tub6ITIqVziXLRE7orHZUlisazl6kNd1H98yK7dse5PyzCgsdsWn1eI5Ew+fVA1kqn dyDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=liajztqh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u19si8896535ejo.211.2021.09.13.18.02.45; Mon, 13 Sep 2021 18:03:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=liajztqh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243358AbhIMUDL (ORCPT + 99 others); Mon, 13 Sep 2021 16:03:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:53498 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347763AbhIMUDJ (ORCPT ); Mon, 13 Sep 2021 16:03:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BD1A560E9C; Mon, 13 Sep 2021 20:01:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1631563310; bh=gLNHs6CcvSnX7/miQjZSjEGPQiOP4SA5DpU0CvsJrqk=; h=In-Reply-To:References:Date:From:To:Cc:Subject:From; b=liajztqhepeUtWSNEfNIAqpGCdq5Rx9uhrK7Bt/4aB5DkL2QG/U1cdkUaQgNZFTm1 BEJRMiLsmo/Vp6PKZ3RFSUNE4uq/buNfLnpmGKxAWEuzkXNaGgzJTLsQuNi1NDLQ+U EW0ci2uEGYCEYeTKJK9FnpA0p74lro6O8uRo0B7MGODoFkx+UKKBqv20AeUaZJ5ZB2 RE97+esnfChnY6ovKlEH/sDn9JOF2DdBXIbAgMfLaAG3VUZC+uyv1svJLFPVRUdLoh I7pxT4Chp27Yv3N4qmbDiuWqnx1NabtyGwnSW1Zv16Oyrnw23RV7s5aax45oHyhiNz dB3ISjuJoy0gQ== Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailauth.nyi.internal (Postfix) with ESMTP id DFDFC27C0054; Mon, 13 Sep 2021 16:01:48 -0400 (EDT) Received: from imap2 ([10.202.2.52]) by compute6.internal (MEProxy); Mon, 13 Sep 2021 16:01:48 -0400 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrudegjedgudegudcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefofgggkfgjfhffhffvufgtsehttdertderredtnecuhfhrohhmpedftehn ugihucfnuhhtohhmihhrshhkihdfuceolhhuthhosehkvghrnhgvlhdrohhrgheqnecugg ftrfgrthhtvghrnheptdfhheettddvtedvtedugfeuuefhtddugedvleevleefvdetleff gfefvdekgeefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homheprghnugihodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdduudeiudek heeifedvqddvieefudeiiedtkedqlhhuthhopeepkhgvrhhnvghlrdhorhhgsehlihhnuh igrdhluhhtohdruhhs X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id 0E6DCA00387; Mon, 13 Sep 2021 16:01:46 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-1229-g7ca81dfce5-fm-20210908.005-g7ca81dfc Mime-Version: 1.0 Message-Id: In-Reply-To: <20210902105052.2842-1-jiangshanlai@gmail.com> References: <20210831175025.27570-1-jiangshanlai@gmail.com> <20210902105052.2842-1-jiangshanlai@gmail.com> Date: Mon, 13 Sep 2021 13:01:25 -0700 From: "Andy Lutomirski" To: "Lai Jiangshan" , "Linux Kernel Mailing List" Cc: "Lai Jiangshan" , "Thomas Gleixner" , "Ingo Molnar" , "Borislav Petkov" , "the arch/x86 maintainers" , "H. Peter Anvin" , "Dave Hansen" , "Peter Zijlstra (Intel)" , "Dave Jiang" , "Ben Widawsky" , "Williams, Dan J" , "Arvind Sankar" Subject: Re: [PATCH 25/24] x86/traps: Rewrite native_load_gs_index in C code Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 2, 2021, at 3:50 AM, Lai Jiangshan wrote: > From: Lai Jiangshan > > There is no constrain/limition to force native_load_gs_index() to be in > ASM code. > > Signed-off-by: Lai Jiangshan > > #ifdef CONFIG_X86_64 > + > +/* > + * Reload gs selector with exception handling > + * selector: new selector > + * > + * Is noinstr as it shouldn't be instrumented. > + */ > +noinstr void native_load_gs_index(unsigned int selector) > +{ > + unsigned long flags; > + > + local_irq_save(flags); This patch would be a bit less alarming if you moved the swapgs into asm. Also, this needs a comment explaining why skipping the swapgs back to kernel gs in the exception path is correct. > + native_swapgs(); > + asm volatile( > + ".global asm_load_gs_index_gs_change \n" > + "asm_load_gs_index_gs_change: \n" > + "1: movl %0, %%gs \n" > + " swapgs \n" > + "2: \n" > + _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_clear_gs) > + :: "r" (selector) : "memory"); > + alternative("", "mfence", X86_BUG_SWAPGS_FENCE); > + local_irq_restore(flags); > +} > +