RE: [PATCH V5 12/12] net: netvsc: Add Isolation VM support for netvsc driver
From: Haiyang Zhang <haiyangz@microsoft.com>
Date: 2021-09-14 15:49:54
Also in:
linux-arch, linux-iommu, linux-scsi, lkml, netdev, xen-devel
-----Original Message----- From: Tianyu Lan <redacted> Sent: Tuesday, September 14, 2021 9:39 AM To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang [off-list ref]; Stephen Hemminger [off-list ref]; wei.liu@kernel.org; Dexuan Cui [off-list ref]; tglx@linutronix.de; mingo@redhat.com; bp@alien8.de; x86@kernel.org; hpa@zytor.com; dave.hansen@linux.intel.com; luto@kernel.org; peterz@infradead.org; konrad.wilk@oracle.com; boris.ostrovsky@oracle.com; jgross@suse.com; sstabellini@kernel.org; joro@8bytes.org; will@kernel.org; davem@davemloft.net; kuba@kernel.org; jejb@linux.ibm.com; martin.petersen@oracle.com; gregkh@linuxfoundation.org; arnd@arndb.de; hch@lst.de; m.szyprowski@samsung.com; robin.murphy@arm.com; brijesh.singh@amd.com; Tianyu Lan [off-list ref]; thomas.lendacky@amd.com; pgonda@google.com; akpm@linux-foundation.org; kirill.shutemov@linux.intel.com; rppt@kernel.org; sfr@canb.auug.org.au; aneesh.kumar@linux.ibm.com; saravanand@fb.com; krish.sadhukhan@oracle.com; xen-devel@lists.xenproject.org; tj@kernel.org; rientjes@google.com; Michael Kelley [off-list ref] Cc: iommu@lists.linux-foundation.org; linux-arch@vger.kernel.org; linux- hyperv@vger.kernel.org; linux-kernel@vger.kernel.org; linux- scsi@vger.kernel.org; netdev@vger.kernel.org; vkuznets [off-list ref]; parri.andrea@gmail.com; dave.hansen@intel.com Subject: [PATCH V5 12/12] net: netvsc: Add Isolation VM support for netvsc driver From: Tianyu Lan <redacted> In Isolation VM, all shared memory with host needs to mark visible to host via hvcall. vmbus_establish_gpadl() has already done it for netvsc rx/tx ring buffer. The page buffer used by vmbus_sendpacket_ pagebuffer() stills need to be handled. Use DMA API to map/umap these memory during sending/receiving packet and Hyper-V swiotlb bounce buffer dma address will be returned. The swiotlb bounce buffer has been masked to be visible to host during boot up. Allocate rx/tx ring buffer via alloc_pages() in Isolation VM and map these pages via vmap(). After calling vmbus_establish_gpadl() which marks these pages visible to host, unmap these pages to release the virtual address mapped with physical address below shared_gpa_boundary and map them in the extra address space via vmap_pfn(). Signed-off-by: Tianyu Lan <redacted> --- Change since v4: * Allocate rx/tx ring buffer via alloc_pages() in Isolation VM * Map pages after calling vmbus_establish_gpadl(). * set dma_set_min_align_mask for netvsc driver. Change since v3: * Add comment to explain why not to use dma_map_sg() * Fix some error handle. ---
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> Thank you!