From patchwork Sat Mar 28 00:04:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason A. Donenfeld" X-Patchwork-Id: 185048 Delivered-To: patch@linaro.org Received: by 2002:a92:de47:0:0:0:0:0 with SMTP id e7csp2216612ilr; Mon, 30 Mar 2020 00:13:13 -0700 (PDT) X-Google-Smtp-Source: ADFU+vviB/NECesIX7zy/sF9WMUZdfW5N2TxiaE28/EIy1Po2XBcpqh0rcwryx1nTQaTcLaXyNb2 X-Received: by 2002:a65:4b8d:: with SMTP id t13mr11322349pgq.243.1585552392908; Mon, 30 Mar 2020 00:13:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585552392; cv=none; d=google.com; s=arc-20160816; b=P3kyjia74gJ3FnN85/FGoNHVDeUHXClY0/TiWwvBD62gW6BcM8c7tvCV2N7gOtTw/p NZ59h3Gzan9gg7X6Aaj2lFmBBc8qh0hfdkV965HRrhIwh/Z8VKuVbCA8/vdOB4bkJu5b qXEU9IBXvwie/Gv1U5HiLbbXV4TVhSKngs0bq0iPL3awpHrMLeWZp6EwGOGN61abKqga Fw4W9QnWiPiArelINcqNMxBaGfbZ/O1iO356beOXou40qG6S/n7Sf7Tlxyx30YI/G9Fh f8ah+ikskO6xBfqLSp0iig1Rh7du3qMRuxUERhY/sGLXurl5s3P6cb3+E6jdGffFNKyN ccMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:mime-version:message-id:date:subject:to:from :dkim-signature:delivered-to; bh=c29Yn6iBZEcODUbfgy6ERThDYXU4tOfd5BMN/u+sktc=; b=YUkbEAwtK9pdit056TPczzPYFBiTCoCr17NpwTFWXGRPnwFQhEoUaXxA1qcwIBjvte yaTFX7LhKiSv8zrXet5fj+KYDZ79zE2QqJAftbMbfJH3FJZ5iWosFTIMwicuCkPDKmgC L2jmbyWy/RzD7a3KU+9+WAuPMj1O6pHkrn3bUY7csNuaxmLRlClW81PczRJU4nFNE1zB oNNQnz8tD1b+dl/GufX/Hkg1WRqet6u/9jbf0XgXalql/IV/x+qkYUVgcBjJKxk/uZOX OKnmSYGdmuvGI/OBzJ/t49ZUbWmenmoCaqwzF/fOc9Cbm24ygHETxuvrUxh7l3qPSUqV b58A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@zx2c4.com header.s=mail header.b=lHnY9UVP; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [2610:10:20:722:a800:ff:fe36:1795]) by mx.google.com with ESMTPS id az11si10268674plb.412.2020.03.30.00.13.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2020 00:13:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) client-ip=2610:10:20:722:a800:ff:fe36:1795; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@zx2c4.com header.s=mail header.b=lHnY9UVP; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 2610:10:20:722:a800:ff:fe36:1795 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zx2c4.com Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9BB5489F61; Mon, 30 Mar 2020 07:11:49 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from frisell.zx2c4.com (frisell.zx2c4.com [192.95.5.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 34B206EA97; Sat, 28 Mar 2020 00:04:33 +0000 (UTC) Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 87312fee; Fri, 27 Mar 2020 23:56:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=zx2c4.com; h=from:to:cc :subject:date:message-id:mime-version:content-transfer-encoding; s=mail; bh=BPXvm8QBjsmfO2gncU0J68R+kso=; b=lHnY9UVPHQV8txCJDSBm /qBou90bx9JLt0t32kPkZBBGEybZk6ppAot+UYEZ0daIS/ZNYXnrsvBsuJ4HJPfn LfpWFmDgo8tqLIMT1iNLItH9VoM2eLbpMW2iWxyiX4s0KXSWkxPB2VOKUvSamzgO fFZEQkLPY8WT6jGtf3UP/tXLT6/HNryWicR6+OO6faN2osiek5NARUqJr0JwZvB+ wgXDVDt7IHL7wL2n5ecG52dVaHFO/Z7UUiad5D4uTADxfPuyF6uK/tepFZFMdO3e xleEYD8fb4ypPR6AVfyvHlijeTLqPLVlqyyotUA5HSzfAbMQdAGNCDhp5G5V0EqQ rA== Received: by frisell.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 61147157 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Fri, 27 Mar 2020 23:56:58 +0000 (UTC) From: "Jason A. Donenfeld" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, chris@chris-wilson.co.uk, linux-kernel@vger.kernel.org Subject: [PATCH] drm/i915: check to see if the FPU is available before using it Date: Fri, 27 Mar 2020 18:04:22 -0600 Message-Id: <20200328000422.98978-1-Jason@zx2c4.com> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 30 Mar 2020 07:11:44 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Jason A. Donenfeld" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" It's not safe to just grab the FPU willy nilly without first checking to see if it's available. This patch adds the usual call to may_use_simd() and falls back to boring memcpy if it's not available. Signed-off-by: Jason A. Donenfeld --- drivers/gpu/drm/i915/i915_memcpy.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.26.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel diff --git a/drivers/gpu/drm/i915/i915_memcpy.c b/drivers/gpu/drm/i915/i915_memcpy.c index fdd550405fd3..7c0e022586bc 100644 --- a/drivers/gpu/drm/i915/i915_memcpy.c +++ b/drivers/gpu/drm/i915/i915_memcpy.c @@ -24,6 +24,7 @@ #include #include +#include #include "i915_memcpy.h" @@ -38,6 +39,12 @@ static DEFINE_STATIC_KEY_FALSE(has_movntdqa); #ifdef CONFIG_AS_MOVNTDQA static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) { + if (unlikely(!may_use_simd())) { + memcpy(dst, src, len); + return; + } + + kernel_fpu_begin(); while (len >= 4) { @@ -67,6 +74,11 @@ static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len) { + if (unlikely(!may_use_simd())) { + memcpy(dst, src, len); + return; + } + kernel_fpu_begin(); while (len >= 4) {