[BACK]Return to MEMC CVS log [TXT][DIR] Up to [Development] / linux-2.4-xfs / Documentation / arm

File: [Development] / linux-2.4-xfs / Documentation / arm / MEMC (download)

Revision 1.1, Wed Dec 31 00:54:49 2003 UTC (13 years, 9 months ago) by cattelan
Branch: MAIN
CVS Tags: HEAD

Initial Import 2.4.24pre2

MEMC enhancements for Linux 2.3
-------------------------------

The current interface:

  There is a cache of the MEMC settings held in tsk->tss.memcmap, which is
  kept up to date by the following functions (from the page tables):

  update_memc_all()				hits:	2
	Updates all MEMC caches on all processes.  Update the real MEMC
	to reflect the `current' tasks page tables.

  update_memc_tsk(tsk)				hits:	0
	Update the MEMC cache for the specified task.  If tsk is the
	`current' task, then update the real MEMC as well.

  update_memc_mm(mm)				hits:	16
	Update the MEMC cache for any task which has a mm_struct
	corresponding to `mm'.  If the `current' tasks mm_struct
	includes this, then update the real MEMC as well.

  update_memc_addr(mm, addr, pte)		hits:	8
	Update the MEMC cache entry defined by the physical address
	in pte for any task which has a mm_struct corresponding to `mm'.
	If the `current' tasks mm_struct includes this, then update the
	real MEMC as well.

The proposed interface:

  Couple the MEMC cache into the mm_struct so that we only have to
  keep one copy per mm_struct.  This also allows us to reduce the
  number of loops through all existing tasks on each MEMC change.

  memc_clear(mm, physaddr)			hits:	6
	Clear the MEMC mapping associated with the physical address
	`physaddr'.  If the `current' tasks mm_struct is `mm', then
	update the real MEMC as well.	(should equate to a possible
	two writes and zero reads).

  memc_update_addr(mm, pte, logaddr)		hits:	10
	Change the MEMC mapping for the physical address specified
	in `pte' to point to the logical address `logaddr', with the
	protection specified in `pte'.  If the `current' tasks mm_struct
	is `mm', then update the real MEMC as well.  (should again equate
	to a possible two writes and zero reads).

  memc_update_mm(mm)				hits:	7
	Rebuild the MEMC mappings for the specified `mm' in the same way
	that update_memc_mm used to.  If the `current' tasks mm_struct
	is `mm', update the real MEMC as well.

  memc_update_all()				hits:	2
	Rebuild the MEMC mappings for all mm_structs, including the real
	MEMC.

The hit numbers are approximate usage of each function in the 2.2.7
memory management (mm) code, and there are other uses outside this area.