drm: add helper to clflush a virtual address range
A message that is not in the archive (sent off-list or not yet received): [email protected]
Hi Daniel,
I see you say you wanted the patch below for the stable tree, due to some later patch needing it, yet this patch was not "marked" for the stable tree, and I can't seem to figure out which "later patch" you are referring to here.
Any hints on what I should do for the 3.4-stable kernel tree with this?
thanks,
greg k-h
Quoted 71 lines · Linux Kernel Mailing List
Gitweb: http://git.kernel.org/linus/;a=commit;h=6d5cd9cb1e32e4f4e4468704430b26bcb0bfb129 Commit: 6d5cd9cb1e32e4f4e4468704430b26bcb0bfb129 Parent: dbf7bff074d5fdc87c61b1b41d8e809109cf0bf8 Author: Daniel Vetter <[email protected]> AuthorDate: Sun Mar 25 19:47:30 2012 +0200 Committer: Daniel Vetter <[email protected]> CommitDate: Tue Mar 27 13:19:45 2012 +0200drm: add helper to clflush a virtual address range
Useful when the page is already mapped to copy date in/out.
For -stable because the next patch (fixing phys obj pwrite) needs this little helper function.
Tested-by Chris Wilson <[email protected]>Reviewed-by Chris Wilson <[email protected]>Signed-off-by Daniel Vetter <[email protected]>--- drivers/gpu/drm/drm_cache.c | 23 +++++++++++++++++++++++ include/drm/drmP.h | 1 + 2 files changed, 24 insertions(+), 0 deletions(-)drivers/gpu/drm/drm_cache.c +23
-0@@ -98,3 +98,26 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages)#endif }EXPORT_SYMBOL (drm_clflush_pages); + +void +drm_clflush_virt_range (char *addr,unsigned long length) +{ +#if defined(CONFIG_X86 ) +if (cpu_has_clflush) { +char *end = addr + length; +mb (); +for (; addr < end; addr += boot_cpu_data.x86_clflush_size) +clflush (addr); +clflush (end -1 ); +mb (); +return ; + } + +if (on_each_cpu (drm_clflush_ipi_handler,NULL ,1 ) !=0 ) +printk (KERN_ERR "Timed out waiting for cache flush.\n" ); +#else +printk (KERN_ERR "Architecture has no drm_cache.c support\n" ); +WARN_ON_ONCE (1 ); +#endif +} +EXPORT_SYMBOL (drm_clflush_virt_range);include/drm/drmP.h +1
-1@@ -1332,6 +1332,7 @@ extern int drm_remove_magic(struct drm_master *master, drm_magic_t magic);/* Cache management (drm_cache.c) */ void drm_clflush_pages (struct page *pages[],unsigned long num_pages); +void drm_clflush_virt_range (char *addr,unsigned long length);/* Locking IOCTL support (drm_lock.h) */ extern int drm_lock(struct drm_device *dev, void *data, --To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Greg,
Quoted 6 lines · Greg KH
I see you say you wanted the patch below for the stable tree, due to some later patch needing it, yet this patch was not "marked" for the stable tree, and I can't seem to figure out which "later patch" you are referring to here.
Any hints on what I should do for the 3.4-stable kernel tree with this?
Oops, I've changed plans for that bug and sent a more minimal patch that simply covers over the problem rather well than fixes it 100% perfect. I've dropped the Cc: stable, bug forgot to adjust the commit message.
So this patch isn't for stable any more, sorry for wasting your time.
Yours, Daniel
Quoted 77 lines
thanks,
greg k-h
Quoted 71 lines · Linux Kernel Mailing List
Gitweb: http://git.kernel.org/linus/;a=commit;h=6d5cd9cb1e32e4f4e4468704430b26bcb0bfb129 Commit: 6d5cd9cb1e32e4f4e4468704430b26bcb0bfb129 Parent: dbf7bff074d5fdc87c61b1b41d8e809109cf0bf8 Author: Daniel Vetter <[email protected]> AuthorDate: Sun Mar 25 19:47:30 2012 +0200 Committer: Daniel Vetter <[email protected]> CommitDate: Tue Mar 27 13:19:45 2012 +0200drm: add helper to clflush a virtual address range
Useful when the page is already mapped to copy date in/out.
For -stable because the next patch (fixing phys obj pwrite) needs this little helper function.
Tested-by Chris Wilson <[email protected]>Reviewed-by Chris Wilson <[email protected]>Signed-off-by Daniel Vetter <[email protected]>--- drivers/gpu/drm/drm_cache.c | 23 +++++++++++++++++++++++ include/drm/drmP.h | 1 + 2 files changed, 24 insertions(+), 0 deletions(-)drivers/gpu/drm/drm_cache.c +23
-0@@ -98,3 +98,26 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages)#endif }EXPORT_SYMBOL (drm_clflush_pages); + +void +drm_clflush_virt_range (char *addr,unsigned long length) +{ +#if defined(CONFIG_X86 ) +if (cpu_has_clflush) { +char *end = addr + length; +mb (); +for (; addr < end; addr += boot_cpu_data.x86_clflush_size) +clflush (addr); +clflush (end -1 ); +mb (); +return ; + } + +if (on_each_cpu (drm_clflush_ipi_handler,NULL ,1 ) !=0 ) +printk (KERN_ERR "Timed out waiting for cache flush.\n" ); +#else +printk (KERN_ERR "Architecture has no drm_cache.c support\n" ); +WARN_ON_ONCE (1 ); +#endif +} +EXPORT_SYMBOL (drm_clflush_virt_range);include/drm/drmP.h +1
-1@@ -1332,6 +1332,7 @@ extern int drm_remove_magic(struct drm_master *master, drm_magic_t magic);/* Cache management (drm_cache.c) */ void drm_clflush_pages (struct page *pages[],unsigned long num_pages); +void drm_clflush_virt_range (char *addr,unsigned long length);/* Locking IOCTL support (drm_lock.h) */ extern int drm_lock(struct drm_device *dev, void *data, --To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 3 lines
Daniel Vetter Mail: [email protected] Mobile: +41 (0)79 365 57 48