[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALCETrV0B7rp08-VYjp5=1CWJp7=xTUTBYo3uGxX317RxAQT+w@mail.gmail.com>
Date: Wed, 15 Apr 2015 13:42:47 -0700
From: Andy Lutomirski <luto@...capital.net>
To: "Luis R. Rodriguez" <mcgrof@...e.com>, linux-rdma@...r.kernel.org
Cc: Toshi Kani <toshi.kani@...com>, "H. Peter Anvin" <hpa@...or.com>,
Ingo Molnar <mingo@...nel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Hal Rosenstock <hal.rosenstock@...il.com>,
Sean Hefty <sean.hefty@...el.com>,
Suresh Siddha <sbsiddha@...il.com>,
Rickard Strandqvist <rickard_strandqvist@...ctrumdigital.se>,
Mike Marciniszyn <mike.marciniszyn@...el.com>,
Roland Dreier <roland@...estorage.com>,
Juergen Gross <jgross@...e.com>,
Mauro Carvalho Chehab <mchehab@....samsung.com>,
Andy Walls <awalls@...metrocast.net>,
Borislav Petkov <bp@...e.de>, Mel Gorman <mgorman@...e.de>,
Vlastimil Babka <vbabka@...e.cz>,
Davidlohr Bueso <dbueso@...e.de>,
Dave Hansen <dave.hansen@...ux.intel.com>,
Jean-Christophe Plagniol-Villard <plagnioj@...osoft.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ville Syrjälä <syrjala@....fi>,
Linux Fbdev development list <linux-fbdev@...r.kernel.org>,
linux-media@...r.kernel.org, X86 ML <x86@...nel.org>
Subject: Re: ioremap_uc() followed by set_memory_wc() - burrying MTRR
On Mon, Apr 13, 2015 at 10:49 AM, Luis R. Rodriguez <mcgrof@...e.com> wrote:
> c) ivtv: the driver does not have the PCI space mapped out separately, and
> in fact it actually does not do the math for the framebuffer, instead it lets
> the device's own CPU do that and assume where its at, see
> ivtvfb_get_framebuffer() and CX2341X_OSD_GET_FRAMEBUFFER, it has a get
> but not a setter. Its not clear if the firmware would make a split easy.
> We'd need ioremap_ucminus() here too and __arch_phys_wc_add().
>
IMO this should be conceptually easy to split. Once we get the
framebuffer address, just unmap it (or don't prematurely map it) and
then ioremap the thing.
> From the beginning it seems only framebuffer devices used MTRR/WC, lately it
> seems infiniband drivers also find good use for for it for PIO TX buffers to
> blast some sort of data, in the future I would not be surprised if other
> devices found use for it.
IMO the Infiniband maintainers should fix their code. Especially in
the server space, there aren't that many MTRRs to go around. I wrote
arch_phys_wc_add in the first place because my server *ran out of
MTRRs*.
Hey, IB people: can you fix your drivers to use arch_phys_wc_add
(which is permitted to be a no-op) along with ioremap_wc? Your users
will thank you.
> It may be true that the existing drivers that
> requires the above type of work are corner cases -- but I wouldn't hold my
> breath for that. The ivtv device is a good example of the worst type of
> situations and these days. So perhap __arch_phys_wc_add() and a
> ioremap_ucminus() might be something more than transient unless hardware folks
> get a good memo or already know how to just Do The Right Thing (TM).
I disagree. We should try to NACK any new code that can't function
without MTRRs.
(Plus, ARM is growing in popularity in the server space, and ARM quite
sensibly doesn't have MTRRs.)
--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists