]> Zhao Yanbai Git Server - minix.git/commitdiff
libaudiodriver: allocate mem lower 16 MB and 64K aligned 52/752/2
authorArne Welzel <arne.welzel@gmail.com>
Wed, 14 Nov 2012 21:43:42 +0000 (22:43 +0100)
committerGerrit Code Review <gerrit@gerrit>
Tue, 20 Aug 2013 17:42:21 +0000 (19:42 +0200)
Righ now, the DMA controller will access some random memory below 16 MB,
as the physical address returned by alloc_contig() is simply truncated
when given to the DMA controller.

Yes, it's bad...

lib/libaudiodriver/audio_fw.c

index 5b9ea47e33b8ac24785368c962e31435f45a65d0..58ce03a4f4aedf35936f0d765ea99385d6b7b9b5 100644 (file)
@@ -929,7 +929,7 @@ static int init_buffers(sub_dev_t *sub_dev_ptr)
 
        /* allocate dma buffer space */
        size= sub_dev_ptr->DmaSize + 64 * 1024;
-       base= alloc_contig(size, AC_ALIGN4K, &ph);
+       base= alloc_contig(size, AC_ALIGN64K|AC_LOWER16M, &ph);
        if (!base) {
                printf("%s: failed to allocate dma buffer for a channel\n", 
                                drv.DriverName);