Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5017072imu; Tue, 8 Jan 2019 10:03:02 -0800 (PST) X-Google-Smtp-Source: ALg8bN7D4CDJC419kDA3P28b4rY8/ox5V4SK6UiYAXDhO2etsu1akY0ofnrSQeAw39HXuwKzsXAA X-Received: by 2002:a62:798f:: with SMTP id u137mr2739664pfc.168.1546970582666; Tue, 08 Jan 2019 10:03:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546970582; cv=none; d=google.com; s=arc-20160816; b=g9NcGH6ZSe9JrEfu0w1CWOF734FZTkZIxBEuvyJzRNiJGZWdCxLX7DwQd9lcbQE7mL ga/jH46GAIzrGVUtTrJ7Y1ZVD9Vys1MzVttuP/HO/038J+9f3b9NlD5YgHWF9F7feshr kuS96G6lECU5yUL5600j2DoHXbmEAIU3VMO3XrUyCHi2OvqkqUyGNXwL+9R404myOzVK 2UvhyMhzjTeF4z7nTgUqOiFBR0IiZ8qWuZtMm/z5pBvrZlN77Gc21rquZzWWRAdfYmhx VRiePSxPlE3wxYB7cq6HlhiKK2Ssd+kU70RtvNCzuxbBin6H4Rwtn5BRx+PqBcmOKMs0 KY6g== 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 :in-reply-to:references:mime-version:dkim-signature; bh=W/JHyziTXYBZgKuarJJ+NDCvRCIPz6dL/9BbolzPVrs=; b=Z7Bi62CRqOM6gY2QxwH3ogyw33FSfx6jyUf1TH5ijrHjSFHPzSAA9nVYK2uC2zmq2K ONIWzWd5z5MWUApkBHHo1C/SLr/+eFAa44ZaBDjBIHyXmhPIyzO34BWIIUu1Sb6CHr3j ZpoZAJ0DLJDg5JOpNOINKBW9r6Zr1hCTcSOYslakDtGixGk52TX+Nzhk52SfRHLN5uXn v+4pxo2mnmlbSAmMhofngfr8axNJ/7YxOH8yRjRvB+k7cUZl7ffHqH5bFCrcnv+YUJzb 76Wm3Ntq0Pt+jhC3Bcfvr+EOL2MF7m7fM1wnmHVVOEb+SPzK6dKkyTJjmZhNSNPyzzxO hz9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=EMCw8XFe; 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 e13si61412657pgh.251.2019.01.08.10.02.46; Tue, 08 Jan 2019 10:03:02 -0800 (PST) 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=pass header.i=@linux-foundation.org header.s=google header.b=EMCw8XFe; 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 S1729244AbfAHSBg (ORCPT + 99 others); Tue, 8 Jan 2019 13:01:36 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:36263 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728587AbfAHSBg (ORCPT ); Tue, 8 Jan 2019 13:01:36 -0500 Received: by mail-lj1-f193.google.com with SMTP id g11-v6so4196460ljk.3 for ; Tue, 08 Jan 2019 10:01:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=W/JHyziTXYBZgKuarJJ+NDCvRCIPz6dL/9BbolzPVrs=; b=EMCw8XFewXGueYaj9qtzkX6ek0b6RZUBiLrNSBGscpVfgjmfHO8I0Zcp+9zFdvmmEe c2xh/HQ+On3H3TSOak2Mc+gZcDMR4Hmt5lDt+QRQDFkVzro/3z4pV9ut8gQTJyKdBI45 HYmYlhjsAI9dA98iwTXqP68zDqDrakq5cQvas= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=W/JHyziTXYBZgKuarJJ+NDCvRCIPz6dL/9BbolzPVrs=; b=H7FYHSudjuLSVWHsaU51CmcnrNmFHcp4fJ3A80GY7Lj5KFi2F7QqwNJfJo/38p+pvx DG2uGcmPYH+6j1NM69oEy0rYMbpEKBiFZMdHT5vOQ0whFwDEmomwV2lQTjnU9YMA5h4c NwDvVO59+3Fr45z5K1mtA5LplNtMFkD53YN+dEo2ksZDU0WM0ldwx+2Z2I0tJUBEh+yr Z5IfaXk/F4IZ/S95cPFRSNdq76KgRV3izcuW8SB0Y0KFcFlhl7sFsM19r35oww8zCsS2 XnGZUfJsLajzjlPxdG144HLpt1cqjhnpYo01daKJfmu+FB6YshnmntKFDSWtyvblkd9H SPCQ== X-Gm-Message-State: AJcUukc68X8OcffuM8rnD2pS+2hbYOFRoFeRDUOyGdBNYDPNJ2jgXdcH LSx3RnF/lWzsUDtZnktZT1AzhVkLDwHMzQ== X-Received: by 2002:a2e:974a:: with SMTP id f10-v6mr1819219ljj.61.1546970493206; Tue, 08 Jan 2019 10:01:33 -0800 (PST) Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com. [209.85.208.174]) by smtp.gmail.com with ESMTPSA id g17sm13381311lfg.78.2019.01.08.10.01.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Jan 2019 10:01:32 -0800 (PST) Received: by mail-lj1-f174.google.com with SMTP id k15-v6so4169855ljc.8 for ; Tue, 08 Jan 2019 10:01:31 -0800 (PST) X-Received: by 2002:a2e:95c6:: with SMTP id y6-v6mr1600815ljh.59.1546970491265; Tue, 08 Jan 2019 10:01:31 -0800 (PST) MIME-Version: 1.0 References: <02bfc577-32a5-66be-64bf-d476b7d447d2@kernel.dk> <20181121063609.GA109082@gmail.com> <48e27a3a-2bb2-ff41-3512-8aeb3fd59e57@kernel.dk> <26eff539-7de7-784c-0c88-f1d30753299d@redhat.com> <7ea44458b90b4d41a08ba9012818d273@AcuMS.aculab.com> <64fd67993af04579b5262c270a7a4694@AcuMS.aculab.com> <9e479981e09b4bebaaf6bc7f81c7bb59@AcuMS.aculab.com> In-Reply-To: <9e479981e09b4bebaaf6bc7f81c7bb59@AcuMS.aculab.com> From: Linus Torvalds Date: Tue, 8 Jan 2019 10:01:15 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] x86: only use ERMS for user copies for larger sizes To: David Laight Cc: Andrew Lutomirski , "dvlasenk@redhat.com" , Jens Axboe , Ingo Molnar , Thomas Gleixner , Ingo Molnar , "bp@alien8.de" , Peter Anvin , "the arch/x86 maintainers" , Andrew Morton , Peter Zijlstra , "brgerst@gmail.com" , Linux List Kernel Mailing , "pabeni@redhat.com" 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, Jan 8, 2019 at 1:10 AM David Laight wrote: > > > > It will never work for memcpy_fromio(). Any driver that thinks it will > > copy from io space to user space absolutely *has* to do it by hand. No > > questions, and no exceptions. Some loop like > > > > for (..) > > put_user(readl(iomem++), uaddr++); > > > > because neither copy_to_user() nor memcpy_fromio() will *ever* handle > > that correctly. > > > > They might randomly happen to work on x86, but absolutely nowhere else. > > Actually they tend to handle it on a lot of systems. Not with memcpy_fromio(), at least. That doesn't work even on x86. Try it. If the user space page is swapped out (or not mapped), you'd get a kernel page fault. And if you do "copy_to_user()" from a mmio region, you get what you get. If somebody complains about it doing a byte-at-a-time copy, I'll laugh in their face and tell them to fix their broken driver. It might work on about half the architectures out there, but it's still complete garbage, and it's not a bug in copy_to_user(). Linus