mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-07 07:56:56 +00:00
For FuSa's case, we remove all dynamic memory allocation use in ACRN HV. Instead, we use static memory allocation or embedded data structure. For pagetable page, we prefer to use an index (hva for MMU, gpa for EPT) to get a page from a special page pool. The special page pool should be big enougn for each possible index. This is not a big problem when we don't support 64 bits MMIO. Without 64 bits MMIO support, we could use the index to search addrss not larger than DRAM_SIZE + 4G. However, if ACRN plan to support 64 bits MMIO in SOS, we could not use the static memory alocation any more. This is because there's a very huge hole between the top DRAM address and the bottom 64 bits MMIO address. We could not reserve such many pages for pagetable mapping as the CPU physical address bits may very large. This patch will use dynamic page allocation for pagetable mapping. We also need reserve a big enough page pool at first. For HV MMU, we don't use 4K granularity page table mapping, we need reserve PML4, PDPT and PD pages according the maximum physical address space (PPT va and pa are identical mapping); For each VM EPT, we reserve PML4, PDPT and PD pages according to the maximum physical address space too, (the EPT address sapce can't beyond the physical address space), and we reserve PT pages by real use cases of DRAM, low MMIO and high MMIO. Signed-off-by: Li Fei1 <fei1.li@intel.com> Tracked-On: #5788 |
||
---|---|---|
.. | ||
assign.c | ||
ept.c | ||
guest_memory.c | ||
hyperv.c | ||
instr_emul.c | ||
pm.c | ||
splitlock.c | ||
trusty.c | ||
ucode.c | ||
vcpu.c | ||
vcpuid.c | ||
ve820.c | ||
virq.c | ||
virtual_cr.c | ||
vlapic_priv.h | ||
vlapic.c | ||
vm_reset.c | ||
vm.c | ||
vmcall.c | ||
vmcs.c | ||
vmexit.c | ||
vmsr.c | ||
vmtrr.c | ||
vmx_asm.S | ||
vmx_io.c |