<div dir="ltr">Hello, <div><br></div><div>I wonder about handling MMIO in bitvisor. <br></div><div>I've read the bitvisor paper "BitVisor: A thin hypervisor for enforcing I/O Device Security". </div><div>In the paper, "MMIOs can be intercepted by using shadow paging". </div><div>I think that if you try to intercept MMIOs, you have to use shadow paging, not hardware assisted paging (e.g. NPT, EPT). </div><div>Is is right?</div><div><br></div><div>Actually I thought that bitvisor can handle MMIO with NPT. Because Nested Paging Fault(NPF) can intercept MMIO.</div><div>So I read codes from VM exiting handle to accesing MMIO page, like svm_exit_code() --> do_npf() --> svm_paging_npf() --> svm_np_pagefault() --> mmio_access_page(). </div><div>I expect that mmio_access_page() calls a registered MMIO handler but mmio_access_page just processes CPU emulation. </div><div>The reason intercepts MMIO access is to process something (e.g. checking, logging or monitoring) before CPU emulation. </div><div>Is it right?</div><div><br></div><div>BTW, If you don't mind, could you explain how to capture the events to start DMA transfer in bitvisor briefly? </div><div><br></div><div>Thanks, </div><div><br></div><div>Seongwook Jin</div><div><br></div></div>