On Jul 13, 2005, at 1:10 PM, ming lei wrote: > Question: does the linux ever touch this section of > page table(virt address from PAGE_OFFSET to > PAGE_OFFSET+A) again? like remove or modify one of the > entry?
Not usually. We used to do it on 8xx for mapping uncached pages for coherent DMA. > Question: For every physical page, it should already > be mapped in #1, but vmalloc maps it again to a virt > address higher. Does it mean in kernel page table, we > may have two PTE entries pointing to the same physical > page, even their virt addresses are different? Yep. > Last question: > If this is true, is this platform implemention > specific? Does i386 implemention have same situation? Other architectures will do the same, yes. The level to which they do this will vary depending upon architectural features we have to hide/expose to other functions. One potential problem that arises is you have to be careful about the virtual address access path to these pages. All processors will behave errantly if you access the same physical page, but with different attributes, through the different VAs. How they behave will depend upon the attributes. If the PTEs have different cache modes or page sizes, it's usually a big problem. If they just share different write permissions, it's usually OK. These problems usually arise when device driver writers either don't understand the mapping issues or try something that may work on one architecture but not on another. -- Dan