Module Name: src Committed By: maxv Date: Sat Dec 15 13:39:43 UTC 2018
Modified Files: src/lib/libnvmm: libnvmm.3 libnvmm.c nvmm.h src/sys/dev/nvmm: nvmm.c nvmm_internal.h nvmm_ioctl.h Log Message: Invert the mapping logic. Until now, the "owner" of the memory was the guest, and by calling nvmm_gpa_map(), the virtualizer was creating a view towards the guest memory. Qemu expects the contrary: it wants the owner to be the virtualizer, and nvmm_gpa_map should just create a view from the guest towards the virtualizer's address space. Under this scheme, it is legal to have two GPAs that point to the same HVA. Introduce nvmm_hva_map() and nvmm_hva_unmap(), that map/unamp the HVA into a dedicated UOBJ. Change nvmm_gpa_map() and nvmm_gpa_unmap() to just perform an enter into the desired UOBJ. With this change in place, all the mapping-related problems in Qemu+NVMM are fixed. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/lib/libnvmm/libnvmm.3 src/lib/libnvmm/libnvmm.c cvs rdiff -u -r1.2 -r1.3 src/lib/libnvmm/nvmm.h cvs rdiff -u -r1.3 -r1.4 src/sys/dev/nvmm/nvmm.c cvs rdiff -u -r1.1 -r1.2 src/sys/dev/nvmm/nvmm_internal.h \ src/sys/dev/nvmm/nvmm_ioctl.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.