On Mon, Jun 14, 2021 at 10:04:06PM +0800, Tianyu Lan wrote: > The pages in the hv_page_buffer array here are in the kernel linear > mapping. The packet sent to host will contain an array which contains > transaction data. In the isolation VM, data in the these pages needs to be > copied to bounce buffer and so call dma_map_single() here to map these data > pages with bounce buffer. The vmbus has ring buffer where the send/receive > packets are copied to/from. The ring buffer has been remapped to the extra > space above shared gpa boundary/vTom during probing Netvsc driver and so > not call dma map function for vmbus ring > buffer. So why do we have all that PFN magic instead of using struct page or the usual kernel I/O buffers that contain a page pointer?