Intel System Programming manual vol. 3 clearly documents that 4-level paging uses the first 48 bits of the virtual address to get the actual physical address.
When connecting to the Linux Kernel with GDB I found out that Kernel space addresses have higher bits (48-63) all set to some non zero values. Example:
(gdb) x/g 0xffffffff812eccc0
0xffffffff812eccc0 <get_page_from_freelist>:
How does this virtual address get translated to a physical address? Intel SDM Vol.3
clearly says that only the first 48-bits are used.
I found High memory wiki page describing a memory layout which is defined as
High memory is the part of physical memory in a computer which is not directly mapped by the page tables of its operating system kernel.
And this makes things even more unclear. How can a virtual address be translated without a page table for CPU running in Protected Mode?
Searching for "high memory" in Intel SDM Vol.3 did not give a lot of results.