Re: [RFC PATCH V3 10/11] HV/Netvsc: Add Isolation VM support for netvsc driver

From: Christoph Hellwig
Date: Mon Jun 14 2021 - 11:33:50 EST

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?