Received: by 10.213.65.68 with SMTP id h4csp621691imn; Tue, 20 Mar 2018 11:02:59 -0700 (PDT) X-Google-Smtp-Source: AG47ELvQxFjdYIUIBJqKUHeeyvW2VYW2g3BQoY1d8nWtaXzzPX95d8tjQateoy3/o0yFsZh5RAem X-Received: by 10.98.246.16 with SMTP id x16mr14347931pfh.81.1521568979205; Tue, 20 Mar 2018 11:02:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521568979; cv=none; d=google.com; s=arc-20160816; b=JmRfaPNie0RIKF+h6kdBqUutHCSFE9jXgNQme1wappJL7wjV9XjDuaFnwakw4BLmon 9k9GVmSKyyziSsb0Sq9drttXsOS/3xwBbJsawcg9+iwyc8WhQCz5VXMicg4VRyof0eUk wu4uF4LDK9FjES7wYL+u9E5D2wEj+6pLBiCZ3yPcP4HZGspJcn2gDht6CLNiQ0BQ3PhK Yy3Bjs9XOmziQjxE+zKC3SfwZs9dPKqJeNw2pgUYxhKgofpPLpZustS3fw9a5sGHTdB/ sahzvsCq8lIZzUTrwwUHrPP0jRywKqgAw6fSG+WqcfFvqo+1L+pvuVBS6h8Hk9DjRajV zMpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature:dkim-signature :arc-authentication-results; bh=xEZz3Bl2u4GUhAbOinrjLOzEeriSSR5AdbPF/zWzNrA=; b=kU/YdIGQFnW9lpj1oM7atpCSNmW0QYMLLg7BAsfQEFAcdVTm4hagu33ZV79x3baYXY Th9EKlU8rziGJXUMTHyCuuVoXVeVNSSeFxJha3b1tRE4GYSYVPj5QpcfomvblnooDLgF g4YuRadSY7khifXH6uq9AzOdVswWvGyQbFlwuWCF1GMf3K7h46iTLQ39ddqe7ZeEeqPX 9gdPvkehdTjarypgmJ1AWRh7wF6p2Woo8n99r+v24rH/jS2562mLSEo3N8LI7KC3KU43 cUzlTSaLiHxBWkdLLDL34vnXGrqMkOexxLcZ8V4xbBjNIsjRTxjoh3HQu1n84yHpfv+b rhHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=AkCQoC6x; dkim=fail header.i=@linux-foundation.org header.s=google header.b=D3prQX3c; 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 q9-v6si2183759plr.21.2018.03.20.11.02.44; Tue, 20 Mar 2018 11:02:59 -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; dkim=fail header.i=@gmail.com header.s=20161025 header.b=AkCQoC6x; dkim=fail header.i=@linux-foundation.org header.s=google header.b=D3prQX3c; 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 S1751751AbeCTSB2 (ORCPT + 99 others); Tue, 20 Mar 2018 14:01:28 -0400 Received: from mail-it0-f65.google.com ([209.85.214.65]:37823 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751269AbeCTSB0 (ORCPT ); Tue, 20 Mar 2018 14:01:26 -0400 Received: by mail-it0-f65.google.com with SMTP id k79-v6so3514574ita.2; Tue, 20 Mar 2018 11:01:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=xEZz3Bl2u4GUhAbOinrjLOzEeriSSR5AdbPF/zWzNrA=; b=AkCQoC6xsjcfsfIj8gZw1KT9B+zf4wjB36bpyc/XDhscEZD2/9WBul2RNYJXZ6k7Xq j0EvRknBBhBJ6o8Iu7h1DF+/c93gsUkU9XY1J6Q0rz/0ZhW4l6vB5ahTbZx1eErCCq5P 5K4xxOuBZMf2we75GRYx4YMGYjce4ueNUMAG/ShDTlNd086aCBuOYu4XU6ZYffuS4F2x Ec0Pw+u8IeX9aTp0CU0k6I7gUjN7O2r67v+feqEwtePFSXEtAmgpOjm/KvX30+lAM2XC hatB9zLP7USARaNx6ejVA9N4d21uOkFfme6OVzoyu6MTvKQ3BeR/l3luilwUsKNU6EMd ZSeg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=xEZz3Bl2u4GUhAbOinrjLOzEeriSSR5AdbPF/zWzNrA=; b=D3prQX3chg3cc78v/VuW6QuvF7y/bHtGJZtMWyEZJnBjadwtfKr8E71kZ3XQ0zXQp8 nxmG5C9EvdVQ3VYzrGE0duqc/gIO0nc2EjwhAglCc+7NV0ljC/RwiFPj2vyqFQKr05Ds ZzeQgHZICgYOoFtXX/iyKDNbCZxcr3FjoaOf0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=xEZz3Bl2u4GUhAbOinrjLOzEeriSSR5AdbPF/zWzNrA=; b=QbBE+1KnU6ZvuYO2cmgcaYEUyz2Udn4W42/rK8HqZbnJHCEaqXWNHnoRaKQ0xQ6USf mfFmW7zcGNviL3nMBUkA3c3XzVRs8sVbDBCD0jrMfgQeFL873NUyYGVDChfec2paZgna KPcJGOhxp79DwJJAX1mlVXi/cR9dhjH31ZqlisvpwziQnj9CPNzHjYzsCDpKr+TnjGR5 VBrT78GY2dQrBh42H0+XcNC5G282/Khdvd6rbclGleLU5vvjD53mTc8TqRPESKR7WGwU fjic/GhEuUh/h5WK8Uv4UOBkwBt8oxBP/GnzmFzkmXOgUF59LKc16l8oUasFWcF0tXh3 f04g== X-Gm-Message-State: AElRT7EMk4phlLLamK0I/1/kYO3hgzyCq6gxkklvCylFRmuqbdir3V5q NeWMGSfSmHtL0KQQJye2QfIV5JV22nvyLC6J4QM= X-Received: by 2002:a24:5989:: with SMTP id p131-v6mr592919itb.113.1521568886065; Tue, 20 Mar 2018 11:01:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.95.15 with HTTP; Tue, 20 Mar 2018 11:01:25 -0700 (PDT) In-Reply-To: <20180320082651.jmxvvii2xvmpyr2s@gmail.com> References: <7f0ddb3678814c7bab180714437795e0@AcuMS.aculab.com> <7f8d811e79284a78a763f4852984eb3f@AcuMS.aculab.com> <20180320082651.jmxvvii2xvmpyr2s@gmail.com> From: Linus Torvalds Date: Tue, 20 Mar 2018 11:01:25 -0700 X-Google-Sender-Auth: Eov2ollkCb-bBgt2F9K9CeixDYI Message-ID: Subject: Re: [RFC PATCH 0/3] kernel: add support for 256-bit IO access To: Ingo Molnar Cc: Thomas Gleixner , David Laight , Rahul Lakkireddy , "x86@kernel.org" , "linux-kernel@vger.kernel.org" , "netdev@vger.kernel.org" , "mingo@redhat.com" , "hpa@zytor.com" , "davem@davemloft.net" , "akpm@linux-foundation.org" , "ganeshgr@chelsio.com" , "nirranjan@chelsio.com" , "indranil@chelsio.com" , Andy Lutomirski , Peter Zijlstra , Fenghua Yu , Eric Biggers Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 20, 2018 at 1:26 AM, Ingo Molnar wrote: > > So assuming the target driver will only load on modern FPUs I *think* it should > actually be possible to do something like (pseudocode): > > vmovdqa %ymm0, 40(%rsp) > vmovdqa %ymm1, 80(%rsp) > > ... > # use ymm0 and ymm1 > ... > > vmovdqa 80(%rsp), %ymm1 > vmovdqa 40(%rsp), %ymm0 > > ... without using the heavy XSAVE/XRSTOR instructions. No. The above is buggy. It may *work*, but it won't work in the long run. Pretty much every single vector extension has traditionally meant that touching "old" registers breaks any new register use. Even if you save the registers carefully like in your example code, it will do magic and random things to the "future extended" version. So I absolutely *refuse* to have anything to do with the vector unit. You can only touch it in the kernel if you own it entirely (ie that "kernel_fpu_begin()/_end()" thing). Anything else is absolutely guaranteed to cause problems down the line. And even if you ignore that "maintenance problems down the line" issue ("we can fix them when they happen") I don't want to see games like this, because I'm pretty sure it breaks the optimized xsave by tagging the state as being dirty. So no. Don't use vector stuff in the kernel. It's not worth the pain. The *only* valid use is pretty much crypto, and even there it has had issues. Benchmarks use big arrays and/or dense working sets etc to "prove" how good the vector version is, and then you end up in situations where it's used once per fairly small packet for an interrupt, and it's actually much worse than doing it by hand. Linus