Hi, I'm trying to implement non-coherent DMA for PPC desktop systems (like the AmigaOne with G3/G4 CPU). For this I want to use the code in arch/ppc/kernel/dma-mapping.c. The DMA memory allocation function implemented in this file allocates pages with alloc_pages() and maps them to its own linear address space, but without unmapping the allocated pages from the kernel linear addressing. Due to this the pages are mapped twice, which results in a conflict between the different WIMG settings of the pages.
Is there an API that can be used to unmap the allocated pages from the kernel linear addressing? I thought about using kunmap() and flush_all_zero_pkmaps(), but I'm not sure if this is the right approach and HIGHMEM doesn't work on the AmigaOne too (the highmem base is occupied by the PCI/ISA I/O space!). Wouldn't it be possible to just clear the valid (V) bit of the PTE and do a TLB cache flush? Any suggestions? Thanks! Regards, Gerhard -- "Feel free" mit GMX FreeMail! Monat für Monat 10 FreeSMS inklusive! http://www.gmx.net -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]