Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp375637ybb; Sat, 28 Mar 2020 00:59:39 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsTwBstgqA1pKg0krsaRzHJSWy1+C34QrwnotWbkT32S17xBVmggxhSQjEvF7gBW/6e+ob0 X-Received: by 2002:a05:6820:221:: with SMTP id j1mr2614850oob.12.1585382379515; Sat, 28 Mar 2020 00:59:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585382379; cv=none; d=google.com; s=arc-20160816; b=C6HDPpgLQ1yL8LxWmB90sGmmSSGSPyFRUM7+EX/E2MyX2Z7FbgZbuXRTeUkTZm8f4v yQBzIbELQWI1ZEhuzq7elKNsVbHND2Rs5SOQAi4twFkbCFtyB5dis0a86JXMs8Ockq/m kcYqH9iBS6//2C/AwUGrTuj27scXogE/chqdI5uFusmF5OPG/9c8QbMEYZiAUWMRQFKf ZifgdSX3JpoptGbuUcBGsNfnqsWoOXWPZugInmtSQ9Wo80hM+c4cmVwl6sFC1FVu9PZf OlROlz8WE7nhhuwZBJnZLhMYWTw8QtQWmvY4QO0qnArmbp3Q+XcvpGxsMa5Vf9bXN4lH vwKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:user-agent:message-id:subject:to :from:cc:references:in-reply-to:content-transfer-encoding :mime-version; bh=CThx+L1YVbYjjMtodHPi6oFPUJqVDeEIrs69NETNyj8=; b=S7xMJRvZtL4qoWP2slmOFA63q7vV+Y71veV5CUFVsA03QbSu4wkaKVj1ocPvmUVbkK Bco6kroEDvSy1IEPctlTohf+6vipF4QHV2WE3kToqLlgloA0YeqgWisFyhnhhZaVS7qb xWF3kgGdrXSmre1dw+cvOM3mBpd9r23HFSYFwMQix6x0huQtnolRwIWjx1tFytHLi2zL ylYvNFY6Z3G6ceN3b1MmUaG2KOx9rhstbDH0duxHIzprKfCU4bETKdFr/dR8np3ZfWc9 y9FsvnRWjQNRpqzx+CTpbLSbhn3EbqGl23QKhDwYJM3R1YKpeUNUTEdtC3jzrloZ99TE H4eQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l131si3310598oih.10.2020.03.28.00.59.23; Sat, 28 Mar 2020 00:59:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726088AbgC1H6x convert rfc822-to-8bit (ORCPT + 99 others); Sat, 28 Mar 2020 03:58:53 -0400 Received: from mail.fireflyinternet.com ([109.228.58.192]:57532 "EHLO fireflyinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725800AbgC1H6x (ORCPT ); Sat, 28 Mar 2020 03:58:53 -0400 X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from localhost (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP (TLS) id 20721407-1500050 for multiple; Sat, 28 Mar 2020 07:58:46 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT In-Reply-To: <20200328000422.98978-1-Jason@zx2c4.com> References: <20200328000422.98978-1-Jason@zx2c4.com> Cc: "Jason A. Donenfeld" From: Chris Wilson To: "Jason A. Donenfeld" , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/i915: check to see if the FPU is available before using it Message-ID: <158538232569.25292.15795048542441478192@build.alporthouse.com> User-Agent: alot/0.8.1 Date: Sat, 28 Mar 2020 07:58:45 +0000 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Jason A. Donenfeld (2020-03-28 00:04:22) > 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. These instructions do not use the fpu, nor are these registers aliased over the fpu stack. This description and the may_use_simd() do not look like they express the right granularity as to which simd state are included > Signed-off-by: Jason A. Donenfeld > --- > drivers/gpu/drm/i915/i915_memcpy.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > 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; Look at caller, return the error and let them decide if they can avoid the read from WC, which quite often they can. And no, this is not done from interrupt context, we would be crucified if we did. -Chris