On Thursday, August 26, 2010 14:19:41 Steve Longerbeam wrote:
> The ARM MPU can do something similar. MPU regions can overlap, and a
> simple priority scheme is used to decide which region's permissions
> apply to a memory access that overlaps (higher numbered regions have
> higher priority). So on ARM we can "lock" a PTE/region, by defining
> region 0 to cover the entire address space, and give kernel read/write
> access, user no access. And region 0 is never overwritten or disabled.
> So if an access is made to an address not described by any other region,
> region 0 permissions are applied to the access (and a protection fault
> is generated if the access was made in user mode).
> 
> Note that, with region 0 locked, that only leaves 7 PTEs/regions that
> can be swapped in and out for user processes. So with the ARM MPU, we
> can't create a region for every mmap(), we would run out of available
> entries. So we have to use a trade-off, only create an MPU region for
> XIP file mappings (text). All other mappings (non-XIP file mappings and
> anonymous mappings) allocate from a common user memory pool (which is
> another patch I plan to submit).

i dont understand why running out of entries is a problem.  we run out of 
entries too as you cant cover 512MiB of SDRAM with 16 entries.  we simply take 
an exception when this occurs and in the exception handler, we use a basic 
round-robin replacement scheme to install a valid PTE (assuming of course the 
user has a valid mapping for the excepting address).  then we return to the 
user process and it continues on.

why wont this scheme work for you too ?
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to