On 24/01/20 19:41, Ben Gardon wrote: > On Fri, Jan 24, 2020 at 12:58 AM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: >> >> On 23/01/20 19:04, Ben Gardon wrote: >>> KVM creates internal memslots covering the region between 3G and 4G in >>> the guest physical address space, when the first vCPU is created. >>> Mapping this region before creation of the first vCPU causes vCPU >>> creation to fail. Prohibit tests from creating such a memslot and fail >>> with a helpful warning when they try to. >>> >>> Signed-off-by: Ben Gardon <bgardon@xxxxxxxxxx> >>> --- >> >> The internal memslots are much higher than this (0xfffbc000 and >> 0xfee00000). I'm changing the patch to block 0xfe0000000 and above, >> otherwise it breaks vmx_dirty_log_test. > > Perhaps we're working in different units, but I believe paddrs > 0xfffbc000 and 0xfee00000 are between 3GiB and 4GiB. > "Proof by Python": I invoke the "not a native speaker" card. Rephrasing: there is a large part at the beginning of the area between 3GiB and 4GiB that isn't used by internal memslot (but is used by vmx_dirty_log_test). Though I have no excuse for the extra zero, the range to block is 0xfe000000 to 0x100000000. Paolo >>>> B=1 >>>> KB=1024*B >>>> MB=1024*KB >>>> GB=1024*MB >>>> hex(3*GB) > '0xc0000000' >>>> hex(4*GB) > '0x100000000' >>>> 3*GB == 3<<30 > True >>>> 0xfffbc000 > 3*GB > True >>>> 0xfffbc000 < 4*GB > True >>>> 0xfee00000 > 3*GB > True >>>> 0xfee00000 < 4*GB > True > > Am I missing something? > > I don't think blocking 0xfe0000000 and above is useful, as there's > nothing mapped in that region and AFAIK it's perfectly valid to create > memslots there. > > >> >> Paolo >> >