Find the answer to your Linux question:
Results 1 to 2 of 2
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    Issue with allocating dma memory pool on ppc 476


    I am fairly new to Linux device driver development and I am working on porting a device driver written for red hat Linux to work on Linux kernel (2.6.39) running on powerpc 476.

    The driver uses dma_pool_create to create a memory pool and then dma_pool_alloc to allocate memory from that pool for the purpose of dma data to end device over pci.

    By what I read in comment section of dma_pool_create the dma_pool_alloc should return a memory that is consistent and can be simultaneously be used by device and processor with needing any cache flush methods.

    However what I am observing is completely opposite of that, that is the end point receives all 0s in the dma if flush is not done before starting dma while if I add a flush_dcache_range() for the range of the frame before starting dma the device receives the data properly.

    Any idea what could be wrong here that is causing this behavior?

    Appreciate any kind of help.


  2. #2
    Linux Guru Rubberman's Avatar
    Join Date
    Apr 2009
    I can be found either 40 miles west of Chicago, in Chicago, or in a galaxy far, far away.
    This may be a processor-specific issue. Do you have the PPC assembly programming docs? How it behaves is quite different from x86 processor families.
    Sometimes, real fast is almost as good as real time.
    Just remember, Semper Gumbi - always be flexible!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts