On 2/26/07, Tzahi Fadida <Tzahi.ML2@xxxxxxxxx> wrote:
From what i understand, this kernel mapping of addresses is a bit deceiving since all addresses generated from kmalloc, vmalloc, etc... are virtual. The difference is architecture dependant in that the MMU unit in the architecture knows to pass thru, instead of translation, addresses of certain ranges. In the case of x86 i believe this is the zone thing. I.e. if i understand correctly, if you have 512mb you can address physically (virtually direct :)) the dma and normal zones up to 512mb and then (i think), immediately after 512mb your translated virtual memory begins. However, there is an upper limit (for 32bits systems) and if you have 1gb of memory the normal zone ends at 896mb and the translated (not passed thru) region starts at 896mb. Is that correct?
No, IMHO. All the addresses generated by the CPU (irrespective of the amount of memory) are essentially virtual addresses, and thus need to pass through the MMU to actually determine the corresponding physical address. Now, in case of DMA or NORMAL Zone, the the virtual to physical address mapping is an "identity mapping", meaning that they differ by a simple offset (generally 0xC0000000). In case of HIGH memory zone, a mapping needs to be created. Thanks, Rajat -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ