~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/Documentation/parisc/mm

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 
  2 The current state of Linux/PA-RISC mm is BROKEN.
  3 
  4 Someone needs to sit down and thoroughly rewrite all the cache flushing
  5 macro definitions.  Here are some of the problems, followed by what I
  6 think needs to be done about them.
  7 
  8 (1) We're using fdce / fice everywhere.  This has to stop (except in
  9 the routines which flush the entire cache).  The right instructions to
 10 be using are fdc/fic.
 11 
 12 (2) fdc/fic will throw exceptions if the address they reference isn't
 13 mapped.  Therefore we need to check the page is mapped before flushing
 14 (we're guaranteed not to have the page dirty if we don't have a software
 15 mapping for it any longer, right?)
 16 
 17 (3) the flush macros are right now tunnelled down to one routine to flush
 18 the data cache and one routine to flush the insn cache.  this is wrong.
 19 we should take hints from how we're called and optimise our routines
 20 accordingly.
 21 
 22 (4) fdc/fic actually take space register arguments.  fic takes an 3-bit sr
 23 argument and fdc takes a 2-bit sr argument.  right now, there's a lot of
 24 pissing about with %sr1 and all the macros use %sr1.  This is crazy.  We
 25 normally _know_ what's being referred to, and it's the current task.  So
 26 if we want to flush that, just use %sr3.  If it happens to be kernel,
 27 use %sr0 for fdc and %sr4 for fic.
 28 
 29 (5) we need to write flush_kernel_dcache_range and use it on kernel
 30 addresses.  all the macros are defined to work on the _current task's_
 31 virtual address space.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.