All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Rob Herring <robherring2@gmail.com>
Cc: "linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Russell King <linux@arm.linux.org.uk>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"x86@kernel.org" <x86@kernel.org>,
	Will Deacon <Will.Deacon@arm.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
	Jiri Slaby <jslaby@suse.cz>
Subject: Re: [PATCH 4/8] tty/serial: add generic serial earlycon
Date: Mon, 24 Mar 2014 16:42:02 +0100	[thread overview]
Message-ID: <21117957.8m9iUdR1VN@wuerfel> (raw)
In-Reply-To: <CAL_JsqJh1R8wxReCvTfE7GecZa0vMaAqnGa0ZoRBMace9qtzvQ@mail.gmail.com>

On Monday 24 March 2014 08:36:46 Rob Herring wrote:
> On Mon, Mar 24, 2014 at 6:29 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Monday 24 March 2014 11:22:03 Catalin Marinas wrote:
> >> On Fri, Mar 21, 2014 at 09:08:44PM +0000, Rob Herring wrote:
> >> > diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c
> >> > new file mode 100644
> >> > index 0000000..241757a
> >> > --- /dev/null
> >> > +++ b/drivers/tty/serial/earlycon.c
> >> [...]
> >> > +static void __iomem * __init earlycon_map(unsigned long paddr, size_t size)
> >> > +{
> >> > +   void __iomem *base;
> >> > +#ifdef CONFIG_FIX_EARLYCON_MEM
> >> > +   set_fixmap_nocache(FIX_EARLYCON_MEM_BASE, paddr & PAGE_MASK);
> >> > +   base = (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);
> >> > +   base += paddr & ~PAGE_MASK;
> >> > +#else
> >> > +   base = ioremap_nocache(paddr, size);
> >> > +#endif
> >>
> >> Just curious why not set_fixmap_io (and plain ioremap)?
> >
> > Good point. Note that ioremap_nocache() is the same as ioremap()
> > on *all* architectures.
> 
> I investigated this before adding this to arm64. set_fixmap_io and
> set_fixmap_nocache are not the same settings on x86. Whether the
> mapping type really matters on x86 or not, I don't know. So I added
> the nocache variant to arm64 to avoid a change to x86.

My best guess is that it's an x86 bug. ioremap() always uses an uncached
mapping on x86, so it's strange to see early_ioremap() and set_fixmap_io()
use a cached mapping. It probably doesn't matter as long as the mtrr is
set up to treat all MMIO registers as non-cacheable, but I think there
should not be a difference.

	Arnd

WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/8] tty/serial: add generic serial earlycon
Date: Mon, 24 Mar 2014 16:42:02 +0100	[thread overview]
Message-ID: <21117957.8m9iUdR1VN@wuerfel> (raw)
In-Reply-To: <CAL_JsqJh1R8wxReCvTfE7GecZa0vMaAqnGa0ZoRBMace9qtzvQ@mail.gmail.com>

On Monday 24 March 2014 08:36:46 Rob Herring wrote:
> On Mon, Mar 24, 2014 at 6:29 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Monday 24 March 2014 11:22:03 Catalin Marinas wrote:
> >> On Fri, Mar 21, 2014 at 09:08:44PM +0000, Rob Herring wrote:
> >> > diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c
> >> > new file mode 100644
> >> > index 0000000..241757a
> >> > --- /dev/null
> >> > +++ b/drivers/tty/serial/earlycon.c
> >> [...]
> >> > +static void __iomem * __init earlycon_map(unsigned long paddr, size_t size)
> >> > +{
> >> > +   void __iomem *base;
> >> > +#ifdef CONFIG_FIX_EARLYCON_MEM
> >> > +   set_fixmap_nocache(FIX_EARLYCON_MEM_BASE, paddr & PAGE_MASK);
> >> > +   base = (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);
> >> > +   base += paddr & ~PAGE_MASK;
> >> > +#else
> >> > +   base = ioremap_nocache(paddr, size);
> >> > +#endif
> >>
> >> Just curious why not set_fixmap_io (and plain ioremap)?
> >
> > Good point. Note that ioremap_nocache() is the same as ioremap()
> > on *all* architectures.
> 
> I investigated this before adding this to arm64. set_fixmap_io and
> set_fixmap_nocache are not the same settings on x86. Whether the
> mapping type really matters on x86 or not, I don't know. So I added
> the nocache variant to arm64 to avoid a change to x86.

My best guess is that it's an x86 bug. ioremap() always uses an uncached
mapping on x86, so it's strange to see early_ioremap() and set_fixmap_io()
use a cached mapping. It probably doesn't matter as long as the mtrr is
set up to treat all MMIO registers as non-cacheable, but I think there
should not be a difference.

	Arnd

  reply	other threads:[~2014-03-24 15:42 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-21 21:08 [PATCH 0/8] Generic serial earlycon Rob Herring
2014-03-21 21:08 ` Rob Herring
     [not found] ` < 201403221054.39799.arnd@arndb.de>
     [not found]   ` < CAL_JsqKjGjyYypwneCmNc1qeKe0ZOG9gz3QSJ37-HwHXKu3iRA@mail.gmail.com>
     [not found]     ` < 20140329001732.BECE2C41FF4@trevor.secretlab.ca>
2014-03-21 21:08 ` [PATCH 1/8] x86: move FIX_EARLYCON_MEM kconfig into x86 Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-21 21:08 ` [PATCH 2/8] arm64: add FIXMAP_PAGE_NOCACHE definition Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-24 11:13   ` Catalin Marinas
2014-03-24 11:13     ` Catalin Marinas
2014-03-24 11:13     ` Catalin Marinas
2014-03-21 21:08 ` [PATCH 3/8] arm64: enable FIX_EARLYCON_MEM kconfig Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-24 11:38   ` Catalin Marinas
2014-03-24 11:38     ` Catalin Marinas
2014-03-24 11:38     ` Catalin Marinas
2014-03-21 21:08 ` [PATCH 4/8] tty/serial: add generic serial earlycon Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-24 11:22   ` Catalin Marinas
2014-03-24 11:22     ` Catalin Marinas
2014-03-24 11:22     ` Catalin Marinas
2014-03-24 11:29     ` Arnd Bergmann
2014-03-24 11:29       ` Arnd Bergmann
2014-03-24 13:36       ` Rob Herring
2014-03-24 13:36         ` Rob Herring
2014-03-24 13:36         ` Rob Herring
2014-03-24 15:42         ` Arnd Bergmann [this message]
2014-03-24 15:42           ` Arnd Bergmann
2014-03-24 15:42           ` Arnd Bergmann
2014-04-17 18:27           ` Rob Herring
2014-04-17 18:27             ` Rob Herring
2014-04-17 18:27             ` Rob Herring
2014-04-17 20:16             ` Alan Cox
2014-04-17 20:16               ` Alan Cox
2014-04-17 20:16               ` Alan Cox
2014-04-19 11:32             ` Arnd Bergmann
2014-04-19 11:32               ` Arnd Bergmann
2014-04-19 11:32               ` Arnd Bergmann
2014-03-21 21:08 ` [PATCH 5/8] tty/serial: convert 8250 to generic earlycon Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-21 21:08 ` [PATCH 6/8] tty/serial: pl011: add generic earlycon support Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-24 11:28   ` Catalin Marinas
2014-03-24 11:28     ` Catalin Marinas
2014-03-24 11:28     ` Catalin Marinas
2014-04-16 22:14     ` Rob Herring
2014-04-16 22:14       ` Rob Herring
2014-04-16 22:14       ` Rob Herring
2014-04-23 16:39       ` Catalin Marinas
2014-04-23 16:39         ` Catalin Marinas
2014-04-23 16:39         ` Catalin Marinas
2014-03-21 21:08 ` [PATCH 7/8] tty/serial: add arm64 semihosting earlycon Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-23 20:04   ` Nicolas Pitre
2014-03-23 20:04     ` Nicolas Pitre
2014-03-23 20:23     ` Arnd Bergmann
2014-03-23 20:23       ` Arnd Bergmann
2014-03-23 21:48       ` Nicolas Pitre
2014-03-23 21:48         ` Nicolas Pitre
2014-03-24 11:38   ` Catalin Marinas
2014-03-24 11:38     ` Catalin Marinas
2014-03-24 11:38     ` Catalin Marinas
2014-03-24 11:48     ` Catalin Marinas
2014-03-24 11:48       ` Catalin Marinas
2014-03-24 11:48       ` Catalin Marinas
2014-03-21 21:08 ` [PATCH 8/8] arm64: remove arch specific earlyprintk Rob Herring
2014-03-21 21:08   ` Rob Herring
2014-03-22  9:54 ` [PATCH 0/8] Generic serial earlycon Arnd Bergmann
2014-03-22  9:54   ` Arnd Bergmann
2014-03-22  9:54   ` Arnd Bergmann
2014-03-22 14:14   ` Rob Herring
2014-03-22 14:14     ` Rob Herring
2014-03-22 14:14     ` Rob Herring
2014-03-22 22:01     ` Arnd Bergmann
2014-03-22 22:01       ` Arnd Bergmann
2014-03-22 22:01       ` Arnd Bergmann
2014-03-23 15:09       ` Rob Herring
2014-03-23 15:09         ` Rob Herring
2014-03-23 15:09         ` Rob Herring
2014-03-23 19:49         ` Arnd Bergmann
2014-03-23 19:49           ` Arnd Bergmann
2014-03-23 19:49           ` Arnd Bergmann
2014-03-29  0:17     ` Grant Likely
2014-03-29  0:17       ` Grant Likely
2014-03-29  0:17       ` Grant Likely
2014-03-29 14:33       ` Rob Herring
2014-03-29 14:33         ` Rob Herring
2014-03-29 14:33         ` Rob Herring
2014-03-29 15:34         ` Grant Likely
2014-03-29 15:34           ` Grant Likely
2014-03-29 15:34           ` Grant Likely

Reply instructions:

You may reply publicly 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=21117957.8m9iUdR1VN@wuerfel \
    --to=arnd@arndb.de \
    --cc=Will.Deacon@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.cz \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=robherring2@gmail.com \
    --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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.