Re: [RFC PATCH V3 08/11] swiotlb: Add bounce buffer remap address setting function
From: Tianyu Lan
Date: Mon Jun 07 2021 - 10:57:40 EST
On 6/7/2021 2:43 PM, Christoph Hellwig wrote:
On Sun, May 30, 2021 at 11:06:25AM -0400, Tianyu Lan wrote:
From: Tianyu Lan <Tianyu.Lan@xxxxxxxxxxxxx>
For Hyper-V isolation VM with AMD SEV SNP, the bounce buffer(shared memory)
needs to be accessed via extra address space(e.g address above bit39).
Hyper-V code may remap extra address space outside of swiotlb. swiotlb_
bounce() needs to use remap virtual address to copy data from/to bounce
buffer. Add new interface swiotlb_set_bounce_remap() to do that.
Why can't you use the bus_dma_region ranges to remap to your preferred
address?
Thanks for your suggestion.
These addresses in extra address space works as system memory mirror.
The shared memory with host in Isolation VM needs to be accessed via
extra address space which is above shared gpa boundary. During
initializing swiotlb bounce buffer pool, only address bellow shared gpa
boundary can be accepted by swiotlb API because it is treated as system
memory and managed by memory management. This is why Hyper-V swiotlb
bounce buffer pool needs to be allocated in Hyper-V code and map
associated physical address in extra address space. The patch target is
to add the new interface to set start virtual address of bounce buffer
pool and let swiotlb boucne buffer copy function to use right virtual
address for extra address space.
bus_dma_region is to translate cpu physical address to dma address.
It can't modify the virtual address of bounce buffer pool and let
swiotlb code to copy data with right address. If some thing missed,
please correct me.
Thanks.