core: Fix comment typo

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Pass caller's per_cpu to page_map_get_foreign_page

Replace mapping_region and page_table_offset parameters with the
caller's per_cpu struct. All information can be obtained from it, and we
will need it for the upcoming changes.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
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>