Re: [PATCH] shmem missing cache flush

Matthew Wilcox (willy@debian.org)
Mon, 28 Oct 2002 16:52:57 +0000


On Mon, Oct 28, 2002 at 05:08:17PM +0000, Alan Cox wrote:
> Suppose those addresses are already in the userspace icache from a
> different exec ?

Documentation/cachetlb.txt:

void flush_icache_range(unsigned long start, unsigned long end)
When the kernel stores into addresses that it will execute
out of (eg when loading modules), this function is called.

If the icache does not snoop stores then this routine will need
to flush it.

void flush_icache_user_range(struct vm_area_struct *vma,
struct page *page, unsigned long addr, int len)
This is called when the kernel stores into addresses that are
part of the address space of a user process (which may be some
other process than the current process). The addr argument
gives the virtual address in that process's address space,
page is the page which is being modified, and len indicates
how many bytes have been modified. The modified region must
not cross a page boundary. Currently this is only called from
kernel/ptrace.c.

so either they're using the wrong function or these calls aren't needed
for some other reason (eg, the update_mmu_cache() thing davem suggested
earlier).

-- 
Revolutions do not require corporate support.
-
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/