[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aCYsNSFQJZzHVOFI@yilunxu-OptiPlex-7050>
Date: Fri, 16 May 2025 02:02:29 +0800
From: Xu Yilun <yilun.xu@...ux.intel.com>
To: Zhi Wang <zhiw@...dia.com>
Cc: Jason Gunthorpe <jgg@...dia.com>, Alexey Kardashevskiy <aik@....com>,
kvm@...r.kernel.org, dri-devel@...ts.freedesktop.org,
linux-media@...r.kernel.org, linaro-mm-sig@...ts.linaro.org,
sumit.semwal@...aro.org, christian.koenig@....com,
pbonzini@...hat.com, seanjc@...gle.com, alex.williamson@...hat.com,
vivek.kasireddy@...el.com, dan.j.williams@...el.com,
yilun.xu@...el.com, linux-coco@...ts.linux.dev,
linux-kernel@...r.kernel.org, lukas@...ner.de, yan.y.zhao@...el.com,
daniel.vetter@...ll.ch, leon@...nel.org, baolu.lu@...ux.intel.com,
zhenzhong.duan@...el.com, tao1.su@...el.com
Subject: Re: [RFC PATCH 00/12] Private MMIO support for private assigned dev
> IMHO, I think it might be helpful that you can picture out what are the
> minimum requirements (function/life cycle) to the current IOMMUFD TSM
> bind architecture:
>
> 1.host tsm_bind (preparation) is in IOMMUFD, triggered by QEMU handling
> the TVM-HOST call.
> 2. TDI acceptance is handled in guest_request() to accept the TDI after
> the validation in the TVM)
I'll try my best to brainstorm and make a flow in ASCII.
(*) means new feature
Guest Guest TSM QEMU VFIO IOMMUFD host TSM KVM
----- --------- ---- ---- ------- -------- ---
1. *Connect(IDE)
2. Init vdev
3. *create dmabuf
4. *export dmabuf
5. create memslot
6. *import dmabuf
7. setup shared DMA
8. create hwpt
9. attach hwpt
10. kvm run
11.enum shared dev
12.*Connect(Bind)
13. *GHCI Bind
14. *Bind
15 CC viommu alloc
16. vdevice allloc
16. *attach vdev
17. *setup CC viommu
18 *tsm_bind
19. *bind
20.*Attest
21. *GHCI get CC info
22. *get CC info
23. *vdev guest req
24. *guest req
25.*Accept
26. *GHCI accept MMIO/DMA
27. *accept MMIO/DMA
28. *vdev guest req
29. *guest req
30. *map private MMIO
31. *GHCI start tdi
32. *start tdi
33. *vdev guest req
34. *guest req
35.Workload...
36.*disconnect(Unbind)
37. *GHCI unbind
38. *Unbind
39. *detach vdev
40. *tsm_unbind
41. *TDX stop tdi
42. *TDX disable mmio cb
43. *cb dmabuf revoke
44. *unmap private MMIO
45. *TDX disable dma cb
46. *cb disable CC viommu
47. *TDX tdi free
48. *enable mmio
49. *cb dmabuf recover
50.workable shared dev
TSM unbind is a little verbos & specific to TDX Connect, but SEV TSM could
ignore these callback. Just implement an "unbind" tsm ops.
Thanks,
Yilun
>
> and which part/where need to be modified in the current architecture to
> reach there. Try to fold vendor-specific knowledge as much as possible,
> but still keep them modular in the TSM driver and let's see how it looks
> like. Maybe some example TSM driver code to demonstrate together with
> VFIO dma-buf patch.
>
> If some where is extremely hacky in the TSM driver, let's see how they
> can be lift to the upper level or the upper call passes more parameters
> to them.
>
Powered by blists - more mailing lists