On Tue, Jul 28, 2009 at 7:59 AM, Seth Forshee <seth.fors...@gmail.com>wrote:
> > On Tue, Jul 28, 2009 at 07:34:14AM -0700, San Mehat wrote: > > I'll try your test code when I have a chance. > > Thanks. > > > > I'm in a difficult debugging sitation for this issue. I can't build > the > > > kernel for the device (I'm working on getting the source to allow me to > > > do this), and I don't have documentation for the processor. I also > > > don't know whether the msm_sdcc driver is using DMA or PIO for the > > > transfer, although in my tracing of the code paths it doesn't look like > > > it should matter because in either case the cache lines for the > > > userspace mapping should be cleaned and invalidated before the transfer > > > starts. Are there any peculiarities of Android kernel modifications or > > > of the MSM7k that could be causing this sort of behavior? > > > > > > Just an update on this, I've run your test program on a number of devices with a few different brands of sdcards and haven't had a single failure. Perhaps your unit is somehow faulty? Thanks, -san > > I can't think of anything specific in the Android kernel patches which > would > > cause the behavior you're seeing. > > > > For SD cards basically we DMA for any transfers >= 64 bytes and which are > 64 > > byte aligned. > > I'm having a hard time seeing where the problems would come from with > DMA. get_user_pages() should result in a clean/invalidate operation, so > RAM should be consistent by the time the DMA operation starts. If that > were failing then all consumers of get_user_pages() would have a > potential for problems. Maybe I'm barking up the wrong tree with my > cache aliasing suspicion, but then I don't know what else it could be. > > Thanks for the help. > > Seth > > > > -- ---------- San Mehat Staff Software Engineer Google Inc. o: 650-253-7422 c: 408-382-1249 s...@google.com --~--~---------~--~----~------------~-------~--~----~ unsubscribe: android-kernel+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-kernel -~----------~----~----~----~------~----~------~--~---