core: Reintroduce page_map_virt2phys

This was quick: We actually need this function to obtain guest->host
physical address translations during page_map_get_foreign_page.
Reintroduce it, but with adjusted interface:

First, the only page table offset we need is the one of the hypervisor
because this function will only be used for walking page tables that are
fully mapped into the hypervisor address space.

Second, to align its interface to the companion function page_map_create
and page_map_destroy, introduce a variable level parameter.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Properly translate guest physical addresses in page_map_get_foreign_page

We were incorrectly using a fixed page table offset for translating
physical addresses read from guest page tables to host physical
addresses. This approach totally neglected guest address space limits
and fragmentations. Fix it by asking the architecture to translate a
guest physical address. With VMX, we simply walk the EPT table of the
caller's CPU.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>