Deos any one have any comments on by-passing the get_user_pages function for the buffers that meets the following condition ? If not, this code will be merged into dspbridge tree. if ((vma->vm_flags & VM_IO) | ((vma->vm_flags & VM_RESERVED) && + (~pgprot_val(vma->vm_page_prot) & L_PTE_CACHEABLE) && + (~pgprot_val(vma->vm_page_prot) & L_PTE_BUFFERABLE))) Basically, the logic to get the pages would be as follows instead of calling get_user_pages. static u32 user_va2pa(struct mm_struct *mm, u32 address) { pgd_t *pgd; pmd_t *pmd; pte_t *ptep, pte; pgd = pgd_offset(mm, address); if (!(pgd_none(*pgd) || pgd_bad(*pgd))) { pmd = pmd_offset(pgd, address); if (!(pmd_none(*pmd) || pmd_bad(*pmd))) { ptep = pte_offset_map(pmd, address); if (ptep) { pte = *ptep; if (pte_present(pte)) return pte & PAGE_MASK; } } } return 0; } Thank you, Best regards, Hari > -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap- > owner@xxxxxxxxxxxxxxx] On Behalf Of Kanigeri, Hari > Sent: Thursday, June 11, 2009 12:24 PM > To: Bagadia, Sripal; Hiroshi DOYU; Ramirez Luna, Omar > Cc: felipe.contreras@xxxxxxxxx; ameya.palande@xxxxxxxxx; Menon, Nishanth; > linux-omap@xxxxxxxxxxxxxxx > Subject: RE: [RFC][PATCH] DSPBRIDGE: Video Playback Cache Optimization > > Sripal, > > > Currently, display driver maps the video buffers to userspace with > > VM_RESERVED flag and pgprot_writecombine(). We are considering changing > > pgprot_writecombine() to pgprot_noncached() to eliminate the need of all > > cache maintenance overheads for video buffers. > > > -- Is this change in the current LO kernel ? > > I agree there is an overhead of flushing the cache by calling > get_user_pages function. But there is some additional stuff that this > function does and I am afraid that by-passing this function call for a > Buffer that has VM_RESERVED flag and the BUFFERABLBE flags might create > issues. > > The only reason get_user_pages is not used for the buffer that has VM_IO > flag set is get_user_pages fails if this flag is set for the buffer. I am > not sure if it is safe to by-pass the get_user_pages function call for > buffer that has VM_RESERVED flag set though. > > Thank you, > Best regards, > Hari > > > -----Original Message----- > > From: Bagadia, Sripal > > Sent: Thursday, June 11, 2009 11:24 AM > > To: Hiroshi DOYU; Ramirez Luna, Omar > > Cc: felipe.contreras@xxxxxxxxx; ameya.palande@xxxxxxxxx; Menon, > Nishanth; > > Kanigeri, Hari; linux-omap@xxxxxxxxxxxxxxx > > Subject: RE: [RFC][PATCH] DSPBRIDGE: Video Playback Cache Optimization > > > > > Would it be possible to tell the case/path, where > > L_PTE_CACHEABLE/L_PTE_BUFFERABLE is set with VM_IO/VM_RESERVED ? > > > > Currently, display driver maps the video buffers to userspace with > > VM_RESERVED flag and pgprot_writecombine(). We are considering changing > > pgprot_writecombine() to pgprot_noncached() to eliminate the need of all > > cache maintenance overheads for video buffers. > > > > Regarding Felipe's comment: > > > L_PTE_BUFFERABLE is obsolete, isn't it? L_PTE_MT_BUFFERABLE should be > > used instead. > > > > I was working on 2.6.27.10, and agree that this needs to be updated for > > newer kernels. > > > > > > Regards, > > Sripal > > > > -----Original Message----- > > From: Hiroshi DOYU [mailto:Hiroshi.DOYU@xxxxxxxxx] > > Sent: Thursday, June 11, 2009 2:16 AM > > To: Ramirez Luna, Omar > > Cc: felipe.contreras@xxxxxxxxx; ameya.palande@xxxxxxxxx; Menon, > Nishanth; > > Bagadia, Sripal; Kanigeri, Hari; linux-omap@xxxxxxxxxxxxxxx > > Subject: Re: [RFC][PATCH] DSPBRIDGE: Video Playback Cache Optimization > > > > From: Hiroshi DOYU <Hiroshi.DOYU@xxxxxxxxx> > > Subject: Re: [RFC][PATCH] DSPBRIDGE: Video Playback Cache Optimization > > Date: Wed, 10 Jun 2009 10:25:39 +0300 (EEST) > > > > > From: "ext Ramirez Luna, Omar" <omar.ramirez@xxxxxx> > > > Subject: RE: [RFC][PATCH] DSPBRIDGE: Video Playback Cache Optimization > > > Date: Wed, 10 Jun 2009 01:18:29 +0200 > > > > > > > Hi, > > > > > > > > [sending as plain text to l-o] > > > > > > > > Could you please comment on this patch. > > > > > > > > From: Sripal Bagadia <bagadia@xxxxxx> > > > > Date: Tue, 9 Jun 2009 16:05:09 -0500 > > > > Subject: [PATCH] DSPBRIDGE: Video Playback Cache Optimization > > > > > > > > Avoid get_user_pages cache flush overheads for uncached & reserved > > > > buffers (e.g. display & camera buffers). > > > > > > Would it be possible to tell the case/path, where no > > > L_PTE_CACHEABLE/L_PTE_BUFFERABLE is set with VM_IO/VM_RESERVED ? > > > > To be correct, > > "where L_PTE_CACHEABLE/L_PTE_BUFFERABLE is set with VM_IO/VM_RESERVED" > > > > > > > > > > Signed-off-by: Sripal Bagadia <bagadia@xxxxxx> > > > > --- > > > > drivers/dsp/bridge/wmd/tiomap3430.c | 4 +++- > > > > 1 files changed, 3 insertions(+), 1 deletions(-) > > > > > > > > diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c > > > > b/drivers/dsp/bridge/wmd/tiomap3430.c > > > > index 7a9603d..a2f32e8 100644 > > > > --- a/drivers/dsp/bridge/wmd/tiomap3430.c > > > > +++ b/drivers/dsp/bridge/wmd/tiomap3430.c > > > > @@ -1461,7 +1461,9 @@ static DSP_STATUS WMD_BRD_MemMap(struct > > > > WMD_DEV_CONTEXT *hDevContext, > > > > goto func_cont; > > > > } > > > > > > > > - if (vma->vm_flags & VM_IO) { > > > > + if ((vma->vm_flags & VM_IO) | ((vma->vm_flags & VM_RESERVED) > > > > +&& > > > > + (~pgprot_val(vma->vm_page_prot) & L_PTE_CACHEABLE) > > > > +&& > > > > + (~pgprot_val(vma->vm_page_prot) & > > > > +L_PTE_BUFFERABLE))) { > > > > numUsrPgs = ulNumBytes / PG_SIZE_4K; > > > > mpuAddr = ulMpuAddr; > > > > DBG_Trace(DBG_LEVEL4, > > "WMD_BRD_MemMap:numOfActualTabEntries=%d," > > > > -- > > > > 1.6.2.4 > > > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html