[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How CPU(x86) resolve kernel address
Sanket Rathi wrote:
> I read all about the memory management in linux. all thing are clear to me
> like there is 3GB space for user procee and 1GB for kernel and thats why
> kernel address always greater then 0xC0000000. But one thing is not clear
> that is for kernel address there is no page table,
Yes there is. Look for swapper_pg_dir. It maps physical address
N to virtual address PAGE_OFFSET+N.
> actually there is no
> need because this is one to one mapping to physical memory but who resolve
> kernel address to actual physical address how CPU(X86) perform this task
> because when we do DMA we have to give actual physical address by
> virt_to_phys() so what is the mechanism by which CPU translate kernel
> address into physical address ( Somewhere i heard that CPU ignore some of
> the upper bits of address if so then how much bits and why).
I don't think so. Kernel and user addresses all pass through
the virtual mapping mechanism. virt_to_phys() just subtracts
PAGE_OFFSET from the kernel virtual address to arrive at the
physical address
Cheers,
-- Joe
Using open-source software: free.
Pissing Bill Gates off: priceless.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/