lkml.org 
[lkml]   [2003]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectProblem with remap_page_range

    We have a DSP shared memory which we should access (from PowerPC).
    The problem is when I do ioremap I can see the memory correctly from the
    driver (see below) but when I do remap_page_range to the user space
    application then data appears to be wrong, I can recognize some values
    there, but they are in the wrong places and other values around from
    everywhere else (see below).

    I tried mem_map_reserve - but still without luck.

    Could somebody please give me a clue on this.

    Thank you very much in advance for any help.

    Below: the dsp_area prints correct values from DSP RAM but remap_page_range does not work properly.

    dsp_ptr=ioremap_nocache( DSP_ADDR, WINDOW_SIZE);
    dsp_area=(ushort *)(((unsigned long)dsp_ptr + PAGE_SIZE -1) &
    PAGE_MASK);
    /* for (virt_addr=(unsigned long)dsp_area; virt_addr<(unsigned
    long)dsp_area+WINDOW_SIZE; */
    /* virt_addr+=PAGE_SIZE) { */
    /* /\* reserve all pages to make them remapable *\/ */
    /* mem_map_reserve(virt_to_page(virt_addr)); */
    /* } */

    printk("dsp_area[0]=%04x\n", dsp_area[0]); //prints correct values
    ...
    vma->vm_flags |= (VM_SHM | VM_LOCKED | VM_IO | VM_RESERVED);

    if (remap_page_range(vma->vm_start,
    DSP_ADDR,
    size,
    vma->vm_page_prot
    ))
    {
    printk("remap page range failed\n");
    return -ENXIO;
    }

    Here is the ouput:
    //correct from the driver
    dsp_area[0]=0000
    dsp_area[1]=bc00
    dsp_area[2]=eb17
    dsp_area[3]=2643
    dsp_area[4]=54cd
    dsp_area[5]=5405
    dsp_area[6]=91ba
    dsp_area[7]=49c2
    dsp_area[8]=1f61
    hpi_mmap: vma->vm_start=3006f000, vma->vm_end=30097000
    vma->vm_flags=864fb

    //wrong from the user space application
    kadr=0x3006f000
    kadr[0]=1c59
    kadr[1]=49c2
    kadr[2]=5405
    kadr[3]=bc00
    kadr[4]=49c2
    kadr[5]=54cd
    kadr[6]=bc00
    kadr[7]=54cd



    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:48    [W:0.026 / U:0.384 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site