Patchwork powerpc: Add pgprot_writecombine

login
register
mail settings
Submitter Anton Blanchard
Date March 1, 2011, 6 a.m.
Message ID <20110301170047.601c83b7@kryten>
Download mbox | patch
Permalink /patch/84897/
State Accepted
Commit fe3cc0d99de6a9bf99b6c279a8afb5833888c1f7
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Anton Blanchard - March 1, 2011, 6 a.m.
A number of drivers are using pgprot_writecombine() to enable write
combining on userspace mappings. Implement it on powerpc.

Signed-off-by: Anton Blanchard <anton@samba.org>
---
Nishanth Aravamudan - March 14, 2011, 6:33 p.m.
On 01.03.2011 [17:00:47 +1100], Anton Blanchard wrote:
> 
> A number of drivers are using pgprot_writecombine() to enable write
> combining on userspace mappings. Implement it on powerpc.

Given this patch, should drivers/infiniband/hw/cxgb4/t4.h

be updated?:

static inline pgprot_t t4_pgprot_wc(pgprot_t prot)
{
#if defined(__i386__) || defined(__x86_64__)
        return pgprot_writecombine(prot);
#elif defined(CONFIG_PPC64)
        return __pgprot((pgprot_val(prot) | _PAGE_NO_CACHE) &
                        ~(pgprot_t)_PAGE_GUARDED);
#else
        return pgprot_noncached(prot);
#endif
}

Thanks,
Nish

> Signed-off-by: Anton Blanchard <anton@samba.org>
> ---
> 
> diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
> index 89f1587..88b0bd9 100644
> --- a/arch/powerpc/include/asm/pgtable.h
> +++ b/arch/powerpc/include/asm/pgtable.h
> @@ -170,6 +170,7 @@ extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addre
>  #define pgprot_cached_wthru(prot) (__pgprot((pgprot_val(prot) & ~_PAGE_CACHE_CTL) | \
>  				            _PAGE_COHERENT | _PAGE_WRITETHRU))
> 
> +#define pgprot_writecombine pgprot_noncached_wc
> 
>  struct file;
>  extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
Steve Wise - March 14, 2011, 6:35 p.m.
On 03/14/2011 01:33 PM, Nishanth Aravamudan wrote:
> On 01.03.2011 [17:00:47 +1100], Anton Blanchard wrote:
>> A number of drivers are using pgprot_writecombine() to enable write
>> combining on userspace mappings. Implement it on powerpc.
> Given this patch, should drivers/infiniband/hw/cxgb4/t4.h
>
> be updated?:
>

Yes.

> static inline pgprot_t t4_pgprot_wc(pgprot_t prot)
> {
> #if defined(__i386__) || defined(__x86_64__)
>          return pgprot_writecombine(prot);
> #elif defined(CONFIG_PPC64)
>          return __pgprot((pgprot_val(prot) | _PAGE_NO_CACHE)&
>                          ~(pgprot_t)_PAGE_GUARDED);
> #else
>          return pgprot_noncached(prot);
> #endif
> }
>
> Thanks,
> Nish
>
>> Signed-off-by: Anton Blanchard<anton@samba.org>
>> ---
>>
>> diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
>> index 89f1587..88b0bd9 100644
>> --- a/arch/powerpc/include/asm/pgtable.h
>> +++ b/arch/powerpc/include/asm/pgtable.h
>> @@ -170,6 +170,7 @@ extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addre
>>   #define pgprot_cached_wthru(prot) (__pgprot((pgprot_val(prot)&  ~_PAGE_CACHE_CTL) | \
>>   				            _PAGE_COHERENT | _PAGE_WRITETHRU))
>>
>> +#define pgprot_writecombine pgprot_noncached_wc
>>
>>   struct file;
>>   extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
>> _______________________________________________
>> Linuxppc-dev mailing list
>> Linuxppc-dev@lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/linuxppc-dev

Patch

diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
index 89f1587..88b0bd9 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -170,6 +170,7 @@  extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addre
 #define pgprot_cached_wthru(prot) (__pgprot((pgprot_val(prot) & ~_PAGE_CACHE_CTL) | \
 				            _PAGE_COHERENT | _PAGE_WRITETHRU))
 
+#define pgprot_writecombine pgprot_noncached_wc
 
 struct file;
 extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,