Well I am not a Linux expert so anybody correct if I am wrong:
I think it is true.
1) kernel has direct mapping for first 896 MB of RAM.
I didn't do a deep code search but might be true :)
2) kernel sets up the page table during the initialization phase in function pagetable_init()
Did you think also about TLB.
3) whenever kernel virtual address is given, it always goes through MMU and page tables, always.
I think the reason why Linux does this mapping is that it can't access memory which hasn't been directly mapped into its address space.
4) but there may be a requirement where kernel needs to get corresponding virtual address from physical address (where physical address are known in advance), that is why direct mapping of first 896 MB is done.
Direct mapping is also done because, when kernel wants a page, it does not need to waste time in allocating ptes and making an entry.
please someone elaborate on fourth point, if there is something missing.
I'm not sure whether I understand you well but memory is assigned to process per-pages so once the page belongs to process then kernel will not use it for its purposes probably, but it doesn't not mean that kernel can't access it.
5)If corresponding physical page to kernel virtual address is already allocated to the user process, then kernel virtual address become unusable !!
I think dynamic mapping is done for high memory area and the first 896MB are always setup at beginning.
6) is there any dynamic mapping done for kernel page tables ? on first 896 MB of RAM ? or they are always setup in the beginning ?