From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EA6B9C54E58 for ; Mon, 18 Mar 2024 09:30:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: Mime-Version:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=JtBa0wcpJEGCpkXixbVO6BTmLEmHj/eyUsTjJPhT044=; b=KZz HiKOxMbt5KdMZqjydppXuxCuROkiXzFe5JAXjBNjKErnE+PWmmT9399rYKoWzmTtQIWufTtoYQ9y5 pWM5xwim/hQrgGCQstRBDD5WNb4EO6W6GDpmv/6oeEPm0b+pSjr0EBuGkuU1yeZxLFJITNj2mseqa MWioJNveXa+71WYNaIMU7JR+Qp1Ss3pKxu5xMr43YNn1vunYypdTk2MiuAoN0xluPNsaenX0/AtLw u0QCxMbrAQI11hc88ErSnjbU1EGjSVHlPQ6sFhzb4sAT3QKF5053TT8lw1CGZ7ifCGJCL1FadD+bA M2axH7HimdpAgY7uMfk4rmJBaZRiIkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm9K1-00000007usw-1X0F; Mon, 18 Mar 2024 09:30:21 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm9Jy-00000007uqc-0mRo for linux-arm-kernel@lists.infradead.org; Mon, 18 Mar 2024 09:30:20 +0000 Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-dc693399655so7429608276.1 for ; Mon, 18 Mar 2024 02:30:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710754211; x=1711359011; darn=lists.infradead.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=C89oZJKoQR9ZYOgbaOoOcTRBIZ5l5kGOuGbzGddLYt8=; b=0Ds71GqjH8ybe4l5OW9GX6jMVT1Zo3CB+QrD0+pic2dNo8IEZFEa3WaOfBj07XxWxE ra2c2P5Un7tSw/Ntgu5HB5JjE7iNxNVmZSDi38kT1GUMlTk/B1Zrt6HvgUp9lPNFXV1Y h1w3Bh7atzmMZ8kvB0qUPCR6W929sqkfQHcckD/JnX0Gg0pZGS6yiL4+H+qzcMHb/v3k 2HK26d/UbKytfeC1ocXT9rGCWcz0520D9NkiXUX0HL1wym35tM3DnQjUtkyG/IQKchCJ AwdtbOcNx9AIrKHGmHcaIVGHNju5YclFEq+TUYyHkDpWNNhD+bJUFSANSrYRdPhB4Lmy oEng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710754211; x=1711359011; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=C89oZJKoQR9ZYOgbaOoOcTRBIZ5l5kGOuGbzGddLYt8=; b=t4oL8HQdA6L8QoJ01qvxaBLK3NGMgS6aBvoJqgbXOVAIhlx6VqrHCoEbcBry3r2Ut7 tFN2xk+KlSBfaQddVdXp5sMxC3rC+lURr/Rq8D3ym1tN+X45pXa33XA11+yN2KY78R4O 6Vp8FOoV0SSEZ2M9pGQhUH20hpdn/m9t4+p6Ldfpm9OyLGvAHk+n4F1/xeq2KAk0DVu5 NaGWTv+ywzcHXp8+SabhY9X3o1KY9NrOutCVxH38CCxN8JMY+XdSVXpprh//zD2ZHBIr TU+h9GFQjgjAjEUUaIza0X9tSfgdsKIwhTMs7de5ITU/m2DqBBwKnE3JDbU1KOaXq+XX n+fA== X-Gm-Message-State: AOJu0Yz/c4RN2UuHaGH3GnIdTaISgEYloCakNG9oim/LKGCpPM5/+qb+ 3MIU5pJWoESIQAlxsuBIyvaXQdTjnIowePtYn5FtmiO2scmOdEs+5g4jeDDf9atvNGW/9cwJ9g/ rtlmyJ9WjqzCwOzZu4EBFNvDaH3Al/YyNo9JGfnl1aQq3IVMzUlJuBNsMTaPd+D10/otJ7AYMyk DZglQVUhOuwLkFBQylDZC18oUzMo+dAMaeEK8cOevc X-Google-Smtp-Source: AGHT+IEeTAZzX8/p54c2+873NEoiV2+5mFddtBz3ubswBawvQOfvzO/1RVE9GvSNIfZ1gz3SSrEmCpPU X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6902:1b13:b0:dcd:5e5d:458b with SMTP id eh19-20020a0569021b1300b00dcd5e5d458bmr3708038ybb.3.1710754211181; Mon, 18 Mar 2024 02:30:11 -0700 (PDT) Date: Mon, 18 Mar 2024 10:30:05 +0100 Mime-Version: 1.0 X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1411; i=ardb@kernel.org; h=from:subject; bh=tkRzdiGB6GJ+Kn01wI1s02X4LVmvoIYqEdLJQUEfqL0=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIfUH59xdKUznHka/Ffn38GLeu8OPtj/Y9+uCgcfb9R+zh Wu7fgUv7ChlYRDjYJAVU2QRmP333c7TE6VqnWfJwsxhZQIZwsDFKQATqdzB8JslPfHg2iYDsXlH t95K9X/XrWH3sjb9ydXjh5+kKRkVJj9nZNjIceD45yudGxlmL1CQmHTjg/knhTUvZLkON3c+tZh y4BQHAA== X-Mailer: git-send-email 2.44.0.291.gc1ea87d7ee-goog Message-ID: <20240318093004.117153-2-ardb+git@google.com> Subject: [PATCH] ARM: vfp: use asm volatile for FP control register accesses From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux@armlinux.org.uk, arnd@arndb.de, nathan@kernel.org, linus.walleij@linaro.org, Ard Biesheuvel , stable@kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240318_023018_453237_A1504803 X-CRM114-Status: GOOD ( 12.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel Clang may reorder FP control register reads and writes, due to the fact that the inline asm() blocks in the read/write wrappers are not volatile qualified, and the compiler has no idea that these reads and writes may have side effects. In particular, reads of FPSCR may generate an UNDEF exception if a floating point exception is pending, and the FP emulation code in VFP_bounce() explicitly clears FP exceptions temporarily in order to be able to perform the emulation on behalf of user space. This requires that the writes to FPEXC are never reordered with respect to accesses to other FP control registers, such as FPSCR. So use asm volatile for both the read and the write helpers. Cc: Signed-off-by: Ard Biesheuvel --- arch/arm/vfp/vfpinstr.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/vfp/vfpinstr.h b/arch/arm/vfp/vfpinstr.h index 3c7938fd40aa..c4ac778e6fc9 100644 --- a/arch/arm/vfp/vfpinstr.h +++ b/arch/arm/vfp/vfpinstr.h @@ -66,14 +66,14 @@ #define fmrx(_vfp_) ({ \ u32 __v; \ - asm(".fpu vfpv2\n" \ + asm volatile(".fpu vfpv2\n" \ "vmrs %0, " #_vfp_ \ : "=r" (__v) : : "cc"); \ __v; \ }) #define fmxr(_vfp_,_var_) \ - asm(".fpu vfpv2\n" \ + asm volatile(".fpu vfpv2\n" \ "vmsr " #_vfp_ ", %0" \ : : "r" (_var_) : "cc") -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel