What exactly do you mean by "stock socket nodes"? Either you use the
Fremantle ones, or the Harmattan ones, you shouldn't mix them. For
Fremantle, use SN_API=0, for Harmattan, use SN_API=2.
> [117991.250488] memory_sync_page: no page for 4471c000
> [117991.250518] proc_memory_sync: InValid address parameters 4471b000
> 2000
> [118007.838531] kb_lock (GPIO 113) is now closed
> [118008.197753] kb_lock (GPIO 113) is now open
> [118008.726257] memory_sync_page: no page for 4471c000
> [118008.726257] proc_memory_sync: InValid address parameters 4471b000
> 2000
> [118008.740600] memory_sync_page: no page for 4471c000
> [118008.740631] proc_memory_sync: InValid address parameters 4471b000
> 2000
>
> The messages appear randomly, with visible glitches on the video
> output. The video played was H264. bridgedriver is the one from
> harmattan kernel 2.6.32-20112910 backported to Maemo5 kernel-power
> (2.6.28 with lots of upstream backports). The above messages never
> appear when using stock gstreamer dsp/openmax codecs (I could give the
> versions if needed).
>
> Is there anything else I could provide to help investigation?
I'm not sure. What kernel config did you use?
Cheers.
--
Felipe Contreras
Don't enable CONFIG_BRIDGE_CACHE_LINE_CHECK, support for that is relatively new.
> dmm_buffer(begin/end) have an additional log at function entry:
>
> pr_debug(NULL, "%s %p %d %p %p %d %d data %p",__func__,b,len,b-
>>reserve,b->map,b->need_copy,b->dir,b->data,);
>
>
> So, the ioctl that results in these errors is INVALIDATE_MEM. The
> issue is very hard to recreate and it seems it is related to memory
> pressure and/or CPU load.
>
> It might be as well a problem in bridgedriver itself, as the actual
> reason for those errors seems to be follow_page failing for page
> 0x46dc1000, but next time it does not fail for the same page. And it
> is known that using follow_page in bridgedriver is a hack :). Could it
> be that the page in question is swapped? Or there is still DMA going
> on? I am lost.
>
> This is just a small part of the log, I can provide the full one if
> needed. The error messages appeared only 3-4 times while capturing
> (about 15 seconds). And the page for which follow_page fails is
> different every time.
>
> Is it a good idea to backport bridgedriver DMA API support? Having in
> mind that used kernel is 2.6.28 based. I saw some notes while reading
> through mailing lists that it could bring problems.
>
> BTW I saw those error messages in other threads in this mailing list
> too, produced with much newer kernels, so it is either bridgedriver
> itself or gst-dsp.
I don't know what kernel you are using, but smells a lot like this issue:
From 8b566269cb267dccd7a8ff211f1f502c8262e0b9 Mon Sep 17 00:00:00 2001
From: Felipe Contreras <felipe.c...@gmail.com>
Date: Sun, 25 Jul 2010 20:02:46 +0300
Subject: [PATCH] tidspbridge: proc: fix wrong flushes
When the area to flush spans multiple vma's, we might not want to flush
the last one completely, therefore the total length to flush should not
be used, but instead, the remaining one.
Flushing more than specified can cause memory corruption on user-space.
Signed-off-by: Felipe Contreras <felipe.c...@gmail.com>
---
drivers/dsp/bridge/rmgr/proc.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/dsp/bridge/rmgr/proc.c b/drivers/dsp/bridge/rmgr/proc.c
index 7631ff7..d1bbfa3 100644
--- a/drivers/dsp/bridge/rmgr/proc.c
+++ b/drivers/dsp/bridge/rmgr/proc.c
@@ -750,6 +750,7 @@ static int memory_sync_vma(unsigned long start, u32 len,
break;
start = vma->vm_end;
+ len -= size;
}
if (!vma)
--
1.7.9
Cheers.
--
Felipe Contreras