Back in April we had a discussion about problems with the memory area used for 
I/O operations being mapped with caching enabled.  Here's an extract from one 
of my posts about this issue:

>The way ioperm works on the ARM is that we open /dev/mem and mmap the 
>appropriate range to get access to the ISA ports, then use mprotect to turn 
>individual pages on and off to give at least some semblance of individual 
>access control.  This was actually inherited from the Alpha port.
>
>Now, the problem is that if you call mprotect(PROT_READ) this 
>ends up being translated to a protection value of PAGE_READONLY (via the 
>protection_map[] stuff).  And, surprise, PAGE_READONLY is actually
>PTE_TYPE_SMALL | PTE_YOUNG | PTE_CACHEABLE.  Oops.

Now, at the time this sparked the effort that led to separating the Linux 
pagetables from those actually used by the hardware.  But I'm starting to 
doubt that the original problem was actually fixed.  As far as I can tell, 
the protection value you give to mprotect() is always translated through 
protection_map[], and all the relevant values in that table seem to include 
PTE_CACHEABLE.

I haven't done a great deal more investigation than that, yet.  Does anybody 
else have any thoughts?  (What started me looking is that isapnp has stopped 
working again on my machine.)

p.



unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]
++        Please use [EMAIL PROTECTED] for           ++
++                        kernel-related discussions.                      ++

Reply via email to