<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Yep, just that now its the ptraceing process which is faulting in the page,<br>instead of the (ptraced) process itself.
<br><br>So Anton, can you move the _tlbie() call up to<br><br> &&
!test_bit(PG_arch_1, &page->flags)) {<br> <----------
HERE<br> if
(vma->vm_mm == current->active_mm)<br> __flush_dcache_icache((void
*) address);<br> else<br> flush_dcache_icache_page(page);<br> set_bit(PG_arch_1,
&page->flags);<br><br>So that it covers both cases instead of just (vma->vm_mm == current->active_mm) ?<br><br>Its safe to do it because the address space ID is ignored by tlbie accordingly<br>to the manual page:
<br><br>The ASID value in the entry is ignored for the purpose of<br>matching an invalidate address, thus multiple entries can be invalidated<br>if they have the same effective address and different ASID values.</blockquote>
<div><br>
<br>
Well, unfortunately, that doesn't work :(. If i'm right, the
__flush_dcache_icache((void *) address) should avoid that the cache
says faulting address again.<br>
The flush_dcache_icache_page(page) should flush the cache, where
stands, page not mapped. but the flush_dcache_icache_page(page) oopses
on my system. but instead of this call, the call
__flush_dcache_icache(page_address(page)) works. for me, that also
makes more sence. and also, the flush_dcache_icache_page(page) calls
the flush_dcache_icache_phys, which turns off the data virtual address
mapping. i found that a bit strange. any comments? <br>
</div></div><br>