On Thu, 2007-09-06 at 10:45 +0200, Markus Osterried (BA/EDD) wrote:
> I want to use rtdm_iomap_to_user() to map our device registers to user
> But this doesn't work, our application just crashes when I read from
> the mapped registers.
> When I insert the line
> vma->vm_page_prot = phys_mem_access_prot(filp,
> paddr>>PAGE_SHIFT, size, vma->vm_page_prot);
> in rtdm_mmap_buffer() just before calling xnarch_remap_io_page_range()
> it works fine.
> This is just like it is done in /drivers/char/mem.c and
> in /drivers/video/fbmem.c.
> But I think this is architecture and kernel version dependent and I
> don't know whether rtdm_mmap_buffer() is the right place.
> I use Xenomai 2.3.1 and Linux 2.6.18 with PowerPC CPU.
> What is the best solution?
The best and only solution is to mark the the I/O pages as guarded
+uncached as expected on powerpc as you did indirectly, but this is
likely to add a great amount of ugly code to the arch-dep wrappers, in
order to do that according to the 2.4 x 2.6 x powerpc x i386 [ x ia64 ]
matrix. This said, wrappers are usually the place where disgusting code
> Everyone else seen this problem?
Not sure that many people use rtdm to map some I/O space on powerpc yet,
but in any case, this can't work the way it is done right now. I'll
submit a fix along your suggested lines. Thanks for the report.
> Xenomai-core mailing list
Xenomai-core mailing list