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.

Reply via email to