Linux-parisc archive on lore.kernel.org
 help / color / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@lst.de>
Cc: Guo Ren <guoren@kernel.org>, Michal Simek <monstr@monstr.eu>,
	Greentime Hu <green.hu@gmail.com>,
	Vincent Chen <deanbo422@gmail.com>, Guan Xuetao <gxt@pku.edu.cn>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	alpha <linux-alpha@vger.kernel.org>,
	"open list:SYNOPSYS ARC ARCHITECTURE" 
	<linux-snps-arc@lists.infradead.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"open list:QUALCOMM HEXAGON..." <linux-hexagon@vger.kernel.org>,
	linux-ia64@vger.kernel.org,
	linux-m68k <linux-m68k@lists.linux-m68k.org>,
	linux-mips@vger.kernel.org,
	"moderated list:NIOS2 ARCHITECTURE" 
	<nios2-dev@lists.rocketboards.org>,
	openrisc@lists.librecores.org,
	Parisc List <linux-parisc@vger.kernel.org>,
	linux-riscv@lists.infradead.org,
	linux-s390 <linux-s390@vger.kernel.org>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	sparclinux <sparclinux@vger.kernel.org>,
	linux-xtensa@linux-xtensa.org,
	linux-mtd <linux-mtd@lists.infradead.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 10/21] asm-generic: ioremap_uc should behave the same with and without MMU
Date: Mon, 11 Nov 2019 11:27:27 +0100
Message-ID: <CAK8P3a0rTvfPP2LUMw8EC0xz5gfZP5+NUkoaZBJrtYYfr6YRig@mail.gmail.com> (raw)
In-Reply-To: <20191111101531.GA12294@lst.de>

On Mon, Nov 11, 2019 at 11:15 AM Christoph Hellwig <hch@lst.de> wrote:
>
> On Mon, Nov 11, 2019 at 11:09:05AM +0100, Arnd Bergmann wrote:
> > Maybe we could move the definition into the atyfb driver itself?
> >
> > As I understand it, the difference between ioremap()/ioremap_nocache()
> > and ioremap_uc() only exists on pre-PAT x86-32 systems (i.e. 486, P5,
> > Ppro, PII, K6, VIA C3), while on more modern systems (all non-x86,
> > PentiumIII, Athlon, VIA C7)  those three are meant to be synonyms
> > anyway.
>
> That's not how I understood it.  Based on the code and the UC-
> explanation ioremap_uc always overrides the MTRR, which can still
> be present on more modern x86 systems.

As I understand, the point is that on PAT-enabled systems, the
normal ioremap() *also* overrides the MTRR, citing from
Documentation/x86/pat.rst:

  ====  =======  ===  =========================  =====================
  MTRR  Non-PAT  PAT  Linux ioremap value        Effective memory type
  ====  =======  ===  =========================  =====================
        PAT                                        Non-PAT |  PAT
        |PCD                                               |
        ||PWT                                              |
        |||                                                |
  WC    000      WB   _PAGE_CACHE_MODE_WB             WC   |   WC
  WC    001      WC   _PAGE_CACHE_MODE_WC             WC*  |   WC
  WC    010      UC-  _PAGE_CACHE_MODE_UC_MINUS       WC*  |   UC
  WC    011      UC   _PAGE_CACHE_MODE_UC             UC   |   UC
  ====  =======  ===  =========================  =====================

> In fact I remember a patch
> floating around very recently adding another ioremap_uc caller in
> some Atom platform device driver that works around buggy MTRR
> tables.  Also this series actually adds a new override and a few
> callers for ia64 platform code, which works very similar to x86
> based on the comments in the code.  That being said I'm not sure
> the callers in ia64 are really required, but it was the safest thing
> to do as part of this cleanup.

Ok, fair enough. Let's just go with your version for now, if only to not
hold your series up more. I'd still suggest we change atyfb to only
use ioremap_uc() on i386 and maybe ia64. I can send a patch for that.

      Arnd

  reply index

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-29  6:48 generic ioremap (and lots of cleanups) v3 Christoph Hellwig
2019-10-29  6:48 ` [PATCH 01/21] arm: remove ioremap_cached Christoph Hellwig
2019-11-11 10:33   ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 02/21] unicore32: " Christoph Hellwig
2019-10-29  6:48 ` [PATCH 03/21] ia64: rename ioremap_nocache to ioremap_uc Christoph Hellwig
2019-11-11 10:36   ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 04/21] hexagon: clean up ioremap Christoph Hellwig
2019-10-29  6:48 ` [PATCH 05/21] alpha: remove the unused __ioremap wrapper Christoph Hellwig
2019-10-29  6:48 ` [PATCH 06/21] nios2: remove __ioremap Christoph Hellwig
2019-10-29  6:48 ` [PATCH 07/21] parisc: " Christoph Hellwig
2019-11-05 14:29   ` Helge Deller
2019-10-29  6:48 ` [PATCH 08/21] x86: Clean up ioremap() Christoph Hellwig
2019-10-30 10:39   ` Thomas Gleixner
2019-10-29  6:48 ` [PATCH 09/21] xtensa: clean up ioremap Christoph Hellwig
2019-10-29  6:48 ` [PATCH 10/21] asm-generic: ioremap_uc should behave the same with and without MMU Christoph Hellwig
2019-11-06 17:56   ` Palmer Dabbelt
2019-11-11 10:09   ` Arnd Bergmann
2019-11-11 10:15     ` Christoph Hellwig
2019-11-11 10:27       ` Arnd Bergmann [this message]
2019-11-11 10:29         ` Christoph Hellwig
2019-11-11 19:33           ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 11/21] asm-generic: don't provide ioremap for CONFIG_MMU Christoph Hellwig
2019-11-06 18:11   ` Palmer Dabbelt
2019-11-06 18:16     ` Geert Uytterhoeven
2019-11-06 18:28       ` Christoph Hellwig
2019-11-11 10:31       ` Arnd Bergmann
2019-11-11 10:29   ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 12/21] arch: rely on asm-generic/io.h for default ioremap_* definitions Christoph Hellwig
2019-11-07 15:29   ` Palmer Dabbelt
2019-11-11 10:10   ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 13/21] m68k: rename __iounmap and mark it static Christoph Hellwig
2019-10-30  8:51   ` Geert Uytterhoeven
2019-10-29  6:48 ` [PATCH 14/21] hexagon: remove __iounmap Christoph Hellwig
2019-10-29  6:48 ` [PATCH 15/21] nios2: " Christoph Hellwig
2019-10-29  6:48 ` [PATCH 16/21] sh: " Christoph Hellwig
2019-10-29  6:48 ` [PATCH 17/21] lib: provide a simple generic ioremap implementation Christoph Hellwig
2019-11-07 15:29   ` Palmer Dabbelt
2019-11-11 10:10   ` Arnd Bergmann
2019-10-29  6:48 ` [PATCH 18/21] riscv: use the generic ioremap code Christoph Hellwig
2019-10-29  6:48 ` [PATCH 19/21] nds32: use generic ioremap Christoph Hellwig
2019-11-12  8:51   ` Greentime Hu
2019-10-29  6:48 ` [PATCH 20/21] csky: remove ioremap_cache Christoph Hellwig
2019-10-29  6:48 ` [PATCH 21/21] csky: use generic ioremap Christoph Hellwig
2019-11-05  1:31 ` generic ioremap (and lots of cleanups) v3 Christoph Hellwig
2019-11-07 20:47 ` generic-iomap tree for linux-next Christoph Hellwig
2019-11-08  2:20   ` Stephen Rothwell
2019-11-08  4:52     ` Stephen Rothwell
2019-11-08  5:14       ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2019-10-17 17:45 generic ioremap (and lots of cleanups) v2 Christoph Hellwig
2019-10-17 17:45 ` [PATCH 10/21] asm-generic: ioremap_uc should behave the same with and without MMU Christoph Hellwig

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAK8P3a0rTvfPP2LUMw8EC0xz5gfZP5+NUkoaZBJrtYYfr6YRig@mail.gmail.com \
    --to=arnd@arndb.de \
    --cc=deanbo422@gmail.com \
    --cc=green.hu@gmail.com \
    --cc=guoren@kernel.org \
    --cc=gxt@pku.edu.cn \
    --cc=hch@lst.de \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=monstr@monstr.eu \
    --cc=nios2-dev@lists.rocketboards.org \
    --cc=openrisc@lists.librecores.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-parisc archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-parisc/0 linux-parisc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-parisc linux-parisc/ https://lore.kernel.org/linux-parisc \
		linux-parisc@vger.kernel.org
	public-inbox-index linux-parisc

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-parisc


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git