On Fri, Dec 03, 2021 at 11:27:20AM +0100, Jan Beulich wrote: > Assuming that the accounting for IOMMU page tables will also take care > of the P2M needs was wrong: dom0_paging_pages() can determine a far > higher value, high enough for the system to run out of memory while > setting up Dom0. Hence in the case of shared page tables the larger of > the two values needs to be used (without shared page tables the sum of > both continues to be applicable). > > To not further complicate the logic, eliminate the up-to-2-iteration > loop in favor of doing a few calculations twice (before and after > calling dom0_paging_pages()). While this will lead to slightly too high > a value in "cpu_pages", it is deemed better to account a few too many > than a few too little. > > As a result the calculation is now deemed good enough to no longer > warrant the warning message, which therefore gets dropped. > > Also uniformly use paging_mode_enabled(), not is_hvm_domain(). > > While there also account for two further aspects in the PV case: With > "iommu=dom0-passthrough" no IOMMU page tables would get allocated, so > none need accounting for. And if shadow mode is to be enabled (including > only potentially, because of "pv-l1tf=dom0"), setting aside a suitable > amount for the P2M pool to get populated is also necessary (i.e. similar > to the non-shared-page-tables case of PVH). > > Signed-off-by: Jan Beulich <[email protected]>
Reviewed-by: Roger Pau Monné <[email protected]> Thanks, Roger.
