lkml.org 
[lkml]   [2000]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: flush_icache_range
Date
> 
> On Sat, Jul 22, 2000 at 06:07:08PM -0700, Kanoj Sarcar wrote:
>
> > Can anyone point out the logic of continued existance of flush_icache_range
> > after the introduction of flush_icache_page()? I admit that
> > flush_icache_range is still needed in the module loading code, but do we
> > need it anymore in the a.out loading code? That code should be incurring
> > page faults, which will do the flush_icache_page anyway. Seems like
> > double work to me to do flush_icache_range again after the loading has
> > been done.
>
> binfmt_elf.c:load_aout_interp() uses file->f_op->read to read the interpreter
> from disk, so actually need to use something else to flush the cache.
> Similar for two of three cases in binfmt_aout.c. For these the page
> fault won't sufficiently flush cashes.

Okay, got it. flush_icache_page() can flush the icache, then
flush_icache_range() can writeback-invalidate the dcache (for the a.out
section loading code), and things should work. AFAICS, this would be
the most optimal way to do things (ie, you don't have to writeback-invalidate
dcache, and invalidate icache in flush_icache_range(), you can optimize
out the icache flush relying on flush_icache_page to do the work).

>
> > This argument to delete the flush_icache_range calls from the a.out
> > loading code assumes that the f_op->read() code behaves sanely, ie does
> > not do unexpected things like touch the user address (thus allocating
> > the page, and doing the icache flush via the page fault handler much
> > earlier) before it starts reading the a.out sections in ...
>
> There is another MIPS specific problem with this routine. Originally
> introduced for kernel modules the various incarnations of flush_icache_range
> are not protected against access from userspace. Unable to handle kernel
> paging request ahead ...

Could you elaborate? Use mips as an example. Note: for the a.out code,
there will be one thread, and for the module loading, userspace access
to the vmalloced area is not possible.

Kanoj

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

\
 
 \ /
  Last update: 2005-03-22 13:57    [W:0.057 / U:0.244 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site