Hi, I am developing Qemu support for an accelerator, and I'm facing the following situation:
The accelerator has a MemoryListener, with a region_add function. Qemu calls region_add a certain number of times. At one point it wants to map pc.bios, but the HVA it wants pc.bios mapped at happens to be already occupied by a mapping done previously. Typically, a previous call to region_add created a mapping entry with [HVA=0x...A2F000 GPA=0xFFFC0000 SIZE=0x40000] and now Qemu calls region_add to create the pc.bios entry with [HVA=0x...A4F000 GPA=0x000E0000 SIZE=0x20000] As you can see the higher half of the previous HVA mapping collides. My question is the following: what is the expected behavior here? Is it to munmap the HVA that collides and remap it to GPA=0xE0000? Is it to duplicate the content pointed to by the colliding HVA into the new GPA? I have tested a few combinations, but I can't seem to find the right one, so I prefer to ask directly to clear the confusion. Sorry if this is a stupid question, but I didn't find a clear explanation of the expected behavior. Thanks