At Fri, 26 Sep 2008 12:25:17 +0100, Pawel MOLL wrote: > > > > IIRC, a similar buffer handling (via vmalloc) is used in video > > > drivers. I suppose they don't work as well, right? > > Well, our FB driver is aware of the problem. I can't say much about > other ones... FB driver has some generic API for that, defined in asm/fb.h. > > > DRM driver uses __vmalloc() with PAGE_KERNEL_NOCACHE, but it's only > > > for PPC32 non-coherent. > > Hm. PPC with non-coherent cache? > > /* > * Only on coherent architectures, we can mmap the status and the control records > * for effcient data transfer. On others, we have to use HWSYNC ioctl... > */ > #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_ALPHA) > ^^^^^^^^^^ > /* > * mmap status record > */ > static struct page * snd_pcm_mmap_status_nopage(struct vm_area_struct *area, > unsigned long address, int *type) Yeah, it's a known problem, and I already have patches. But, it's still under discussion how to solve it better. I'm going to post the theme to linux-arch, which James Bottomley and others suggested in the previous discussions. > > x86 does it also, via its PAGE_AGP definition. > > > > There are not that many platforms that define PAGE_KERNEL_NOCACHE though, > > so this gets a bit messy.. > > Oh, bloody hell, I haven't realised that! > > > Yeah, that's not sexy, but maybe the only working case right now > > > (better with arch-specific ifdefs). > > The question is what ifdefs to use ;-) Because the cached/uncached > decision must be consistent between snd_pcm_default_mmap() and buffer > allocation... Right. Both must have matching ifdefs. The vmalloc buffer handling can be in sound/core common part, so that it won't be scattered in different sub directories. Or, let's define a common generic API (oh let me dream on) > What a mess! ;-) Indeed ;) Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel