Module Name: src Committed By: maxv Date: Thu Dec 27 07:22:31 UTC 2018
Modified Files: src/lib/libnvmm: libnvmm.3 libnvmm.c libnvmm_x86.c nvmm.h src/tests/lib/libnvmm: h_mem_assist.c h_mem_assist_asm.S Log Message: Several improvements and fixes: * Change the Assist API. Rather than passing callbacks in each call, the callbacks are now registered beforehand. Then change the I/O Assist to fetch MMIO data via the Mem callback. This allows a guest to perform an I/O string operation on a memory that is itself an MMIO. * Introduce two new functions internal to libnvmm, read_guest_memory and write_guest_memory. They can handle mapped memory, MMIO memory and cross-page transactions. * Allow nvmm_gva_to_gpa and nvmm_gpa_to_hva to take non-page-aligned addresses. This simplifies a lot of things. * Support the MOVS instruction, and add a test for it. This instruction is special, in that it takes two implicit memory operands. In particular, it means that the two buffers can both be in MMIO memory, and we handle this case. * Fix gross copy-pasto in nvmm_hva_unmap. Also fix a few things here and there. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libnvmm/libnvmm.3 src/lib/libnvmm/libnvmm.c \ src/lib/libnvmm/libnvmm_x86.c cvs rdiff -u -r1.3 -r1.4 src/lib/libnvmm/nvmm.h cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libnvmm/h_mem_assist.c \ src/tests/lib/libnvmm/h_mem_assist_asm.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.