All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 00/17] iommu/amd: SVA Support (part 3) - refactor support for GCR3 table
@ 2024-02-05 11:55 Vasant Hegde
  2024-02-05 11:55 ` [PATCH v7 01/17] iommu/amd: Pass struct iommu_dev_data to set_dte_entry() Vasant Hegde
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: Vasant Hegde @ 2024-02-05 11:55 UTC (permalink / raw)
  To: iommu, joro
  Cc: suravee.suthikulpanit, wei.huang2, jsnitsel, jgg, Vasant Hegde

This is part 3 of the 4-part series to introduce Share Virtual
Address (SVA) support, which focuses on refactoring GCR3 table.
This moves GCR3 related information from protection domain
structure to iommu_dev_data (per device) structure.

It contains the following enhancements:

* Patch 1 - 3:
  Cleanup and introduce helper function

* Patch 4 - 13:
  Introduce per device GCR3 table, invalidation based on per device and
  code refactoring. Also introduce iommu_group_mutex_assert.

* Patch 14 - 16:
  Remove unused variable, rearrange functions to make it easy to maintain

* Patch 17:
  Introduce per device domain ID.

This patch series is based on top of iommu/next branch (commit d2d00e15808).

This is also available at github :
  https://github.com/AMDESE/linux/tree/iommu_sva_part3_v7_v6.8_rc2

Thanks Jason for reviewing previous versions and providing valuable feedbacks.

Changes from v6 -> v7:
  - Added Reviewed-by tags
  - Rebased on top of iommu/next branch
  - iommu: Introduce iommu_group_mutex_assert()
    Removed 'extern' from iommu_group_mutex_assert() declaration
  - iommu/amd: Refactor helper function for setting / clearing GCR3
    Followed-success oriented flow
  - Minor update to patch 11/17 description

v6: https://lore.kernel.org/linux-iommu/20240125121135.8217-1-vasant.hegde@amd.com/T/#t

Changes from v5 -> v6:
  - Moved per-device-domain-ID patch to end
  - Added condition check for iommu_group_mutex_assert()
  - Moving per-device-domain-id allocation/free to setup_gcr3_table()/free_gcr3_table
  - Pass iommu to setup_gcr3_table instead of passing nid

v5: https://lore.kernel.org/linux-iommu/20240116165335.6043-1-vasant.hegde@amd.com/T/#t

Changes from v4 -> v5:
  - Added get_amd_iommu_from_dev_data()
  - pass gcr3_info instead of dev_data to setup/free_gcr3_table()
  - Added path to EXPORT iommu_group_mutex_assert
  - Moved dev_data->domid to gcr3_info->domid


v4: https://lore.kernel.org/linux-iommu/20231212085224.6985-1-vasant.hegde@amd.com/T/#t

Changes from v3 -> v4:
  - Added new patch to enable IOMMU GT feature early
  - Fixed dirty tracking path to use get_amd_iommu_from_dev()
  - Fixed duplicate flush issue in do_attach() path
  - Removed gcr3_info->giov variable. Instead we use domain page table mode to decide
    DTE[GIOV] bit.
  - Free gcr3_table before calling set_dte_entry (otherwise there is a possibility
    of its setting up gcr3 table with glx 0)
  - Adjusted gfp_t flag for GCR3 table allocation (GPF_ATOMIC -> GFP_KERNEL)
  - Moved below patches from invalidation improvement series to this series
    * Remove unused flush_pasid() related functions
      (Originally it was part of Invalidation improvement series, I had to push it to
       this series as set_gcr3() was still using __amd_iommu_flush_tlb()).
    * Added patch to Rearrange device flush code

v3 : https://lore.kernel.org/linux-iommu/20231013151652.6008-1-vasant.hegde@amd.com/T/#t

Changes from v2 -> v3:
  - Dropped "iommu/amd: Use struct protection_domain in helper functions" as flush related
    functions are already fixed and set_gcr3 related functions is reworked in this series.
  - Removed moving to_pdomain() function from this series. It will be introduced
    in SVA series where it will be used.
  - Added per device domain ID and per device invalidation functions
  - Added functions to flush TLB for the given device
  - Added Review-by tags

v2 : https://lore.kernel.org/linux-iommu/20230816174031.634453-1-vasant.hegde@amd.com/T/#t

Changes from v1 - v2:
  - Dropped iommu_v2 module related support as newly introduced Part2
    removed iommu_v2 module.
  - Moved Patch 'Use struct protection_domain in helper functions' from Part1 to
    Part3
  - Updated get_amd_iommu_from_dev() to retrieve iommu from device structure
  - Removed 'PD_MODE_PT'

v1 : https://lore.kernel.org/linux-iommu/20230808100232.5977-1-vasant.hegde@amd.com/T/#t

Thank you,
Vasant / Suravee

Suravee Suthikulpanit (8):
  iommu/amd: Introduce get_amd_iommu_from_dev()
  iommu/amd: Introduce struct protection_domain.pd_mode
  iommu/amd: Introduce per-device GCR3 table
  iommu/amd: Refactor helper function for setting / clearing GCR3
  iommu/amd: Refactor attaching / detaching device functions
  iommu/amd: Refactor protection_domain helper functions
  iommu/amd: Refactor GCR3 table helper functions
  iommu/amd: Remove unused GCR3 table parameters from struct protection_domain

Vasant Hegde (9):
  iommu/amd: Pass struct iommu_dev_data to set_dte_entry()
  iommu/amd: Enable Guest Translation before registering devices
  iommu/amd: Use protection_domain.flags to check page table mode
  iommu/amd: Add support for device based TLB invalidation
  iommu/amd: Rearrange GCR3 table setup code
  iommu: Introduce iommu_group_mutex_assert()
  iommu/amd: Remove unused flush pasid functions
  iommu/amd: Rearrange device flush code
  iommu/amd: Introduce per-device domain ID to fix potential TLB
    aliasing issue

 drivers/iommu/amd/amd_iommu.h       |  29 +-
 drivers/iommu/amd/amd_iommu_types.h |  26 +-
 drivers/iommu/amd/init.c            |   6 +-
 drivers/iommu/amd/io_pgtable_v2.c   |  21 +-
 drivers/iommu/amd/iommu.c           | 627 +++++++++++++---------------
 drivers/iommu/iommu.c               |  19 +
 include/linux/iommu.h               |  24 ++
 7 files changed, 376 insertions(+), 376 deletions(-)

-- 
2.31.1


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

end of thread, other threads:[~2024-02-09 10:44 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-05 11:55 [PATCH v7 00/17] iommu/amd: SVA Support (part 3) - refactor support for GCR3 table Vasant Hegde
2024-02-05 11:55 ` [PATCH v7 01/17] iommu/amd: Pass struct iommu_dev_data to set_dte_entry() Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 02/17] iommu/amd: Enable Guest Translation before registering devices Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 03/17] iommu/amd: Introduce get_amd_iommu_from_dev() Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 04/17] iommu/amd: Introduce struct protection_domain.pd_mode Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 05/17] iommu/amd: Introduce per-device GCR3 table Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 06/17] iommu/amd: Use protection_domain.flags to check page table mode Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 07/17] iommu/amd: Add support for device based TLB invalidation Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 08/17] iommu/amd: Rearrange GCR3 table setup code Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 09/17] iommu: Introduce iommu_group_mutex_assert() Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 10/17] iommu/amd: Refactor helper function for setting / clearing GCR3 Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 11/17] iommu/amd: Refactor attaching / detaching device functions Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 12/17] iommu/amd: Refactor protection_domain helper functions Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 13/17] iommu/amd: Refactor GCR3 table " Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 14/17] iommu/amd: Remove unused flush pasid functions Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 15/17] iommu/amd: Rearrange device flush code Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 16/17] iommu/amd: Remove unused GCR3 table parameters from struct protection_domain Vasant Hegde
2024-02-05 11:56 ` [PATCH v7 17/17] iommu/amd: Introduce per-device domain ID to fix potential TLB aliasing issue Vasant Hegde
2024-02-09 10:44 ` [PATCH v7 00/17] iommu/amd: SVA Support (part 3) - refactor support for GCR3 table Joerg Roedel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.