qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/20] AMD vIOMMU: DMA remapping support for VFIO devices
@ 2025-05-02  2:15 Alejandro Jimenez
  2025-05-02  2:15 ` [PATCH v2 01/20] memory: Adjust event ranges to fit within notifier boundaries Alejandro Jimenez
                   ` (22 more replies)
  0 siblings, 23 replies; 54+ messages in thread
From: Alejandro Jimenez @ 2025-05-02  2:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: pbonzini, richard.henderson, eduardo, peterx, david, philmd, mst,
	marcel.apfelbaum, alex.williamson, vasant.hegde,
	suravee.suthikulpanit, santosh.shukla, sarunkod, Wei.Huang2,
	clement.mathieu--drif, ethan.milon, joao.m.martins,
	boris.ostrovsky, alejandro.j.jimenez

This series adds support for guests using the AMD vIOMMU to enable DMA
remapping for VFIO devices. In addition to the currently supported
passthrough (PT) mode, guest kernels are now able to to provide DMA
address translation and access permission checking to VFs attached to
paging domains, using the AMD v1 I/O page table format.

Please see v1[0] cover letter for additional details such as example
QEMU command line parameters used in testing.

Changes since v1[0]:
- Added documentation entry for '-device amd-iommu'
- Code movement with no functional changes to avoid use of forward
  declarations in later patches [Sairaj, mst]
- Moved addr_translation and dma-remap property to separate commits.
  The dma-remap feature is only available for users to enable after
  all required functionality is implemented [Sairaj]
- Explicit initialization of significant fields like addr_translation
  and notifier_flags [Sairaj]
- Fixed bug in decoding of invalidation size [Sairaj]
- Changed fetch_pte() to use an out parameter for pte, and be able to
  check for error conditions via negative return value [Clement]
- Removed UNMAP-only notifier optimization, leaving vhost support for
  later series [Sairaj]
- Fixed ordering between address space unmap and memory region activation
  on devtab invalidation [Sairaj]
- Fixed commit message with "V=1, TV=0" [Sairaj]
- Dropped patch removing the page_fault event. That area is better
  addressed in separate series.
- Independent testing by Sairaj (thank you!)

Thank you,
Alejandro

[0] https://lore.kernel.org/all/20250414020253.443831-1-alejandro.j.jimenez@oracle.com/

Alejandro Jimenez (20):
  memory: Adjust event ranges to fit within notifier boundaries
  amd_iommu: Document '-device amd-iommu' common options
  amd_iommu: Reorder device and page table helpers
  amd_iommu: Helper to decode size of page invalidation command
  amd_iommu: Add helper function to extract the DTE
  amd_iommu: Return an error when unable to read PTE from guest memory
  amd_iommu: Add helpers to walk AMD v1 Page Table format
  amd_iommu: Add a page walker to sync shadow page tables on
    invalidation
  amd_iommu: Add basic structure to support IOMMU notifier updates
  amd_iommu: Sync shadow page tables on page invalidation
  amd_iommu: Use iova_tree records to determine large page size on UNMAP
  amd_iommu: Unmap all address spaces under the AMD IOMMU on reset
  amd_iommu: Add replay callback
  amd_iommu: Invalidate address translations on INVALIDATE_IOMMU_ALL
  amd_iommu: Toggle memory regions based on address translation mode
  amd_iommu: Set all address spaces to default translation mode on reset
  amd_iommu: Add dma-remap property to AMD vIOMMU device
  amd_iommu: Toggle address translation mode on devtab entry
    invalidation
  amd_iommu: Do not assume passthrough translation when DTE[TV]=0
  amd_iommu: Refactor amdvi_page_walk() to use common code for page walk

 hw/i386/amd_iommu.c | 1005 ++++++++++++++++++++++++++++++++++++-------
 hw/i386/amd_iommu.h |   52 +++
 qemu-options.hx     |   23 +
 system/memory.c     |   10 +-
 4 files changed, 934 insertions(+), 156 deletions(-)


base-commit: 5134cf9b5d3aee4475fe7e1c1c11b093731073cf
-- 
2.43.5



^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2025-06-23 22:09 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-02  2:15 [PATCH v2 00/20] AMD vIOMMU: DMA remapping support for VFIO devices Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 01/20] memory: Adjust event ranges to fit within notifier boundaries Alejandro Jimenez
2025-05-11 18:31   ` Michael S. Tsirkin
2025-05-12  8:02   ` David Hildenbrand
2025-05-12 17:29     ` Peter Xu
2025-06-12  6:54   ` Vasant Hegde
2025-06-12 21:49     ` Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 02/20] amd_iommu: Document '-device amd-iommu' common options Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 03/20] amd_iommu: Reorder device and page table helpers Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 04/20] amd_iommu: Helper to decode size of page invalidation command Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 05/20] amd_iommu: Add helper function to extract the DTE Alejandro Jimenez
2025-05-12  6:45   ` Sairaj Kodilkar
2025-05-14 20:23     ` Alejandro Jimenez
2025-05-20 10:18   ` Ethan MILON
2025-05-21 14:49     ` Alejandro Jimenez
2025-06-12  8:31       ` Ethan MILON
2025-05-02  2:15 ` [PATCH v2 06/20] amd_iommu: Return an error when unable to read PTE from guest memory Alejandro Jimenez
2025-06-12 10:37   ` Vasant Hegde
2025-06-13 17:44     ` Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 07/20] amd_iommu: Add helpers to walk AMD v1 Page Table format Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 08/20] amd_iommu: Add a page walker to sync shadow page tables on invalidation Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 09/20] amd_iommu: Add basic structure to support IOMMU notifier updates Alejandro Jimenez
2025-05-12  6:52   ` Sairaj Kodilkar
2025-06-23 10:53   ` Sairaj Kodilkar
2025-05-02  2:15 ` [PATCH v2 10/20] amd_iommu: Sync shadow page tables on page invalidation Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 11/20] amd_iommu: Use iova_tree records to determine large page size on UNMAP Alejandro Jimenez
2025-06-11  8:29   ` Sairaj Kodilkar
2025-06-13 21:50     ` Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 12/20] amd_iommu: Unmap all address spaces under the AMD IOMMU on reset Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 13/20] amd_iommu: Add replay callback Alejandro Jimenez
2025-05-02  2:15 ` [PATCH v2 14/20] amd_iommu: Invalidate address translations on INVALIDATE_IOMMU_ALL Alejandro Jimenez
2025-05-02  2:16 ` [PATCH v2 15/20] amd_iommu: Toggle memory regions based on address translation mode Alejandro Jimenez
2025-05-12  6:52   ` Sairaj Kodilkar
2025-05-02  2:16 ` [PATCH v2 16/20] amd_iommu: Set all address spaces to default translation mode on reset Alejandro Jimenez
2025-05-29  6:16   ` Sairaj Kodilkar
2025-05-30 21:30     ` Alejandro Jimenez
2025-06-13  8:46       ` Sairaj Kodilkar
2025-06-23 22:08         ` Alejandro Jimenez
2025-05-02  2:16 ` [PATCH v2 17/20] amd_iommu: Add dma-remap property to AMD vIOMMU device Alejandro Jimenez
2025-05-02  2:16 ` [PATCH v2 18/20] amd_iommu: Toggle address translation mode on devtab entry invalidation Alejandro Jimenez
2025-06-12  8:27   ` Ethan MILON
2025-06-12 11:23     ` Sairaj Kodilkar
2025-05-02  2:16 ` [PATCH v2 19/20] amd_iommu: Do not assume passthrough translation when DTE[TV]=0 Alejandro Jimenez
2025-05-12  7:00   ` Sairaj Kodilkar
2025-05-14 21:49     ` Alejandro Jimenez
2025-05-16  8:14       ` Sairaj Kodilkar
2025-05-02  2:16 ` [PATCH v2 20/20] amd_iommu: Refactor amdvi_page_walk() to use common code for page walk Alejandro Jimenez
2025-05-11 18:34 ` [PATCH v2 00/20] AMD vIOMMU: DMA remapping support for VFIO devices Michael S. Tsirkin
2025-05-16  8:07 ` Sairaj Kodilkar
2025-05-21  2:35   ` Alejandro Jimenez
2025-05-21  6:21     ` Sairaj Kodilkar
2025-05-30 11:41 ` Michael S. Tsirkin
2025-05-30 14:39   ` Alejandro Jimenez
2025-06-02  4:49     ` Sairaj Kodilkar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).