Messages in this thread | | | Subject | Re: [PATCH] ppc32/64: Map prefetchable PCI without guarded bit | From | Benjamin Herrenschmidt <> | Date | Sat, 26 Mar 2005 09:23:40 +1100 |
| |
On Thu, 2005-03-24 at 08:54 -0800, Jesse Barnes wrote: > On Wednesday, March 23, 2005 10:24 pm, Benjamin Herrenschmidt wrote: > > While experimenting with framebuffer access performances, we noticed a > > very significant improvement in write access to it when not setting > > the "guarded" bit on the MMU mappings. This bit basically says that > > reads and writes won't have side effects (it allows speculation). It > > appears that it also disables write combining. > > Doesn't pgprot_writecombine imply non-guarded, so can't you use it instead? > Either way, you'll probably want to fix fbmem.c as well and turn off > _PAGE_GUARDED?
I'm not sure we implement pgprot_writecombine. But anyway, that wouldn't help as X uses /dev/mem which doesn't use that, and sysfs new mmap interface doesn't have anything for setting writecombine.
The interface I propose could be made generic, that is the whole point. It's basically a mean for the arch to say "heh, somebody wants to map this bit of physical address space, what pgprot should I use" :) The decision of wether to do uncacheable or writecombine, all the page_in_ram() trickery in /dev/mem or fbmem can be moved to arch specific routines and cleanup the generic stuff.
> Maybe it's time for a more generic call to support this stuff, both for > in-kernel mappings and ones that we export to userspace.
Yah, in-kernel mappings aren't covered yet, as my interface supposes a "struct file" but then, I don't use the struct file argument in my ppc implementation (I exposed it for the sake of archs that may want it). We could just define that in-kernel mappings can call this with NULL for struct file.
Ben.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |