Messages in this thread | | | Subject | Re: DRM lock ordering fix series | From | Peter Zijlstra <> | Date | Sat, 28 Mar 2009 01:58:42 +0100 |
| |
On Fri, 2009-03-27 at 13:10 -0700, Eric Anholt wrote: > On Fri, 2009-03-27 at 19:10 +0100, Andi Kleen wrote: > > On Fri, Mar 27, 2009 at 09:36:45AM -0700, Eric Anholt wrote: > > > > > You are aware that there is a fast path now (get_user_pages_fast) which > > > > > is significantly faster? (but has some limitations) > > > > > > > > In the code I have, get_user_pages_fast is just a wrapper that calls the > > > > get_user_pages in the way that I'm calling it from the DRM. > > > > > > Ah, I see: that's a weak stub, and there is a real implementation. I > > > didn't know we could do weak stubs. > > > > The main limitation is that it only works for your current process, > > not another one. For more details you can check the git changelog > > that added it (8174c430e445a93016ef18f717fe570214fa38bf) > > > > And yes it's only faster for architectures that support it, that's > > currently x86 and ppc. > > OK. I'm not too excited here -- 10% of 2% of the CPU time doesn't get > me to the 10% loss that the slow path added up to. Most of the cost is > in k{un,}map_atomic of the returned pages.
Also note that doing large gup() with gup_fast() will be undesirable due to it disabling IRQs. So iterating say several MB worth of pages will hurt like crazy. Currently all gup_fast() users do a single page lookup.
| |