lkml.org 
[lkml]   [2020]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: linux-next: build failure after merge of the drm tree
Hi Christoph,

Le mer. 30 sept. 2020 à 11:02, Christoph Hellwig <hch@lst.de> a écrit
:
> On Mon, Sep 28, 2020 at 03:31:28PM +0200, Paul Cercueil wrote:
>> It's allocated with dma_alloc_wc, but then it's only accessed as
>> non-coherent.
>>
>> Anyway, for the time being I guess you could revert 37054fc81443.
>> But I
>> have patches on top of it in drm-misc-next so it's going to be a
>> mess.
>>
>> If we have time I can come up with a custom dumb_create() fonction,
>> to make
>> sure that the GEM buffers are allocated with
>> dma_alloc_noncoherent(). Is
>> there a dma_mmap_noncoherent() too?
>
> Please use the lower-level dma_alloc_pages and then just insert the
> pages directly using remap_pfn_range. Although it might make sense
> to eventually create a wrapper around remap_pfn_range for all the
> vma sizing sanity checks.

One thing missing for remap_pfn_range(), I have no alternative for this:

vma->vm_page_prot = dma_pgprot(dev, vma->vm_page_prot,
DMA_ATTR_NON_CONSISTENT);

So I have to do:

vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
pgprot_val(vma->vm_page_prot) &= ~_CACHE_MASK;
pgprot_val(vma->vm_page_prot) |= _CACHE_CACHABLE_NONCOHERENT;

And that will only compile on MIPS, because these _CACHE_* macros are
only defined there.

I would need something like a pgprot_noncoherent(), I think.

-Paul


\
 
 \ /
  Last update: 2020-09-30 15:34    [W:0.094 / U:4.900 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site