On Fri, 7 Jan 2022 at 18:18, Marc Zyngier <maz@xxxxxxxxxx> wrote: > This is a chicken and egg problem: you need the IPA size to compute > the memory map, and you need the memory map to compute the IPA > size. Fun, isn't it? > > At the moment, virt_set_memmap() doesn't know about the IPA space, > generates a highest_gpa that may not work, and we end-up failing > because the resulting VM type is out of bound. > > My solution to that is to feed the *maximum* IPA size to > virt_set_memmap(), compute the memory map there, and then use > highest_gpa to compute the actual IPA size that is used to create the > VM. By knowing the IPA limit in virt_set_memmap(), I'm able to keep it > in check and avoid generating an unusable memory map. Is there any reason not to just always create the VM with the maximum supported IPA size, rather than trying to create it with the smallest IPA size that will work? (ie skip the last step of computing the IPA size to create the VM with) -- PMM