From: Vasant Hegde via iommu <iommu@lists.linux-foundation.org>
To: <joro@8bytes.org>, <iommu@lists.linux.dev>
Cc: iommu@lists.linux-foundation.org, Vasant Hegde <vasant.hegde@amd.com>
Subject: [PATCH v3 RESEND 00/35] iommu/amd: Add multiple PCI segments support
Date: Wed, 6 Jul 2022 17:07:50 +0530 [thread overview]
Message-ID: <20220706113825.25582-1-vasant.hegde@amd.com> (raw)
Hi Joerg,
As discussed in other thread, I have updated "From:" tag and
resending patchset. No changes in the actual patch content.
This patchset is based on top on "iommu/x86/amd" branch.
Base commit : 0d10fe75911787 ("iommu/amd: Use try_cmpxchg64 in ....")
Newer AMD systems can support multiple PCI segments, where each segment
contains one or more IOMMU instances. However, an IOMMU instance can only
support a single PCI segment.
Current code assumes a system contains only one PCI segment (segment 0)
and creates global data structures such as device table, rlookup table,
etc.
This series introduces per-PCI-segment data structure, which contains
device table, alias table, etc. For each PCI segment, all IOMMUs
share the same data structure. The series also makes necessary code
adjustment and logging enhancements. Finally it removes global data
structures like device table, alias table, etc.
In case of system w/ single PCI segment (e.g. PCI segment ID is zero),
IOMMU driver allocates one PCI segment data structure, which will
be shared by all IOMMUs.
Patch 1 updates struct iommu_dev_data definition.
Patch 2 - 13 introduce new PCI segment structure and allocate per
data structures, and introduce the amd_iommu.pci_seg pointer to point
to the corresponded pci_segment structure. Also, we have introduced
a helper function rlookup_amd_iommu() to reverse-lookup each iommu
for a particular device.
Patch 14 - 27 adopt to per PCI segment data structure and removes
global data structure.
Patch 28 fixes flushing logic to flush upto last_bdf.
Patch 29 - 35 convert usages of 16-bit PCI device ID to include
16-bit segment ID.
v3 patchset: https://lore.kernel.org/linux-iommu/20220511072141.15485-1-vasant.hegde@amd.com/
Changes from v2 -> v3:
- Addressed Joerg's review comments
- Fixed typo in patch 1 subject
- Fixed few minor things in patch 2
- Merged patch 27 - 29 into one patch
- Added new macros to get seg and devid from sbdf
- Patch 32 : Extend devid to 32bit and added new macro.
v2 patchset : https://lore.kernel.org/linux-iommu/20220425113415.24087-1-vasant.hegde@amd.com/T/#t
Changes from v1 -> v2:
- Updated patch 1 to include dev_is_pci() check
v1 patchset : https://lore.kernel.org/linux-iommu/20220404100023.324645-1-vasant.hegde@amd.com/T/#t
Changes from RFC -> v1:
- Rebased patches on top of iommu/next tree.
- Update struct iommu_dev_data definition
- Updated few log message to print segment ID
- Fix smatch warnings
RFC patchset : https://lore.kernel.org/linux-iommu/20220311094854.31595-1-vasant.hegde@amd.com/T/#t
Regards,
Vasant
Suravee Suthikulpanit (20):
iommu/amd: Introduce per PCI segment device table
iommu/amd: Introduce per PCI segment rlookup table
iommu/amd: Introduce per PCI segment old_dev_tbl_cpy
iommu/amd: Introduce per PCI segment alias_table
iommu/amd: Convert to use rlookup_amd_iommu helper function
iommu/amd: Update irq_remapping_alloc to use IOMMU lookup helper function
iommu/amd: Introduce struct amd_ir_data.iommu
iommu/amd: Update amd_irte_ops functions
iommu/amd: Update alloc_irq_table and alloc_irq_index
iommu/amd: Update set_dte_entry and clear_dte_entry
iommu/amd: Update iommu_ignore_device
iommu/amd: Update dump_dte_entry
iommu/amd: Update set_dte_irq_entry
iommu/amd: Update (un)init_device_table_dma()
iommu/amd: Update set_dev_entry_bit() and get_dev_entry_bit()
iommu/amd: Remove global amd_iommu_[dev_table/alias_table/last_bdf]
iommu/amd: Introduce get_device_sbdf_id() helper function
iommu/amd: Include PCI segment ID when initialize IOMMU
iommu/amd: Specify PCI segment ID when getting pci device
iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands
Vasant Hegde (15):
iommu/amd: Update struct iommu_dev_data definition
iommu/amd: Introduce pci segment structure
iommu/amd: Introduce per PCI segment irq_lookup_table
iommu/amd: Introduce per PCI segment dev_data_list
iommu/amd: Introduce per PCI segment unity map list
iommu/amd: Introduce per PCI segment last_bdf
iommu/amd: Introduce per PCI segment device table size
iommu/amd: Introduce per PCI segment alias table size
iommu/amd: Introduce per PCI segment rlookup table size
iommu/amd: Convert to use per PCI segment irq_lookup_table
iommu/amd: Convert to use per PCI segment rlookup_table
iommu/amd: Flush upto last_bdf only
iommu/amd: Print PCI segment ID in error log messages
iommu/amd: Update device_state structure to include PCI seg ID
iommu/amd: Update amd_iommu_fault structure to include PCI seg ID
.../admin-guide/kernel-parameters.txt | 34 +-
drivers/iommu/amd/amd_iommu.h | 13 +-
drivers/iommu/amd/amd_iommu_types.h | 133 +++-
drivers/iommu/amd/init.c | 687 +++++++++++-------
drivers/iommu/amd/iommu.c | 563 ++++++++------
drivers/iommu/amd/iommu_v2.c | 67 +-
drivers/iommu/amd/quirks.c | 4 +-
7 files changed, 904 insertions(+), 597 deletions(-)
--
2.27.0
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Vasant Hegde <vasant.hegde@amd.com>
To: <joro@8bytes.org>, <iommu@lists.linux.dev>
Cc: <iommu@lists.linux-foundation.org>,
<suravee.suthikulpanit@amd.com>,
Vasant Hegde <vasant.hegde@amd.com>
Subject: [PATCH v3 RESEND 00/35] iommu/amd: Add multiple PCI segments support
Date: Wed, 6 Jul 2022 17:07:50 +0530 [thread overview]
Message-ID: <20220706113825.25582-1-vasant.hegde@amd.com> (raw)
Message-ID: <20220706113750.eXhMhen7eLk4ftM0AxmvK5wdERcp1aPfs-PfQnoph9E@z> (raw)
Hi Joerg,
As discussed in other thread, I have updated "From:" tag and
resending patchset. No changes in the actual patch content.
This patchset is based on top on "iommu/x86/amd" branch.
Base commit : 0d10fe75911787 ("iommu/amd: Use try_cmpxchg64 in ....")
Newer AMD systems can support multiple PCI segments, where each segment
contains one or more IOMMU instances. However, an IOMMU instance can only
support a single PCI segment.
Current code assumes a system contains only one PCI segment (segment 0)
and creates global data structures such as device table, rlookup table,
etc.
This series introduces per-PCI-segment data structure, which contains
device table, alias table, etc. For each PCI segment, all IOMMUs
share the same data structure. The series also makes necessary code
adjustment and logging enhancements. Finally it removes global data
structures like device table, alias table, etc.
In case of system w/ single PCI segment (e.g. PCI segment ID is zero),
IOMMU driver allocates one PCI segment data structure, which will
be shared by all IOMMUs.
Patch 1 updates struct iommu_dev_data definition.
Patch 2 - 13 introduce new PCI segment structure and allocate per
data structures, and introduce the amd_iommu.pci_seg pointer to point
to the corresponded pci_segment structure. Also, we have introduced
a helper function rlookup_amd_iommu() to reverse-lookup each iommu
for a particular device.
Patch 14 - 27 adopt to per PCI segment data structure and removes
global data structure.
Patch 28 fixes flushing logic to flush upto last_bdf.
Patch 29 - 35 convert usages of 16-bit PCI device ID to include
16-bit segment ID.
v3 patchset: https://lore.kernel.org/linux-iommu/20220511072141.15485-1-vasant.hegde@amd.com/
Changes from v2 -> v3:
- Addressed Joerg's review comments
- Fixed typo in patch 1 subject
- Fixed few minor things in patch 2
- Merged patch 27 - 29 into one patch
- Added new macros to get seg and devid from sbdf
- Patch 32 : Extend devid to 32bit and added new macro.
v2 patchset : https://lore.kernel.org/linux-iommu/20220425113415.24087-1-vasant.hegde@amd.com/T/#t
Changes from v1 -> v2:
- Updated patch 1 to include dev_is_pci() check
v1 patchset : https://lore.kernel.org/linux-iommu/20220404100023.324645-1-vasant.hegde@amd.com/T/#t
Changes from RFC -> v1:
- Rebased patches on top of iommu/next tree.
- Update struct iommu_dev_data definition
- Updated few log message to print segment ID
- Fix smatch warnings
RFC patchset : https://lore.kernel.org/linux-iommu/20220311094854.31595-1-vasant.hegde@amd.com/T/#t
Regards,
Vasant
Suravee Suthikulpanit (20):
iommu/amd: Introduce per PCI segment device table
iommu/amd: Introduce per PCI segment rlookup table
iommu/amd: Introduce per PCI segment old_dev_tbl_cpy
iommu/amd: Introduce per PCI segment alias_table
iommu/amd: Convert to use rlookup_amd_iommu helper function
iommu/amd: Update irq_remapping_alloc to use IOMMU lookup helper function
iommu/amd: Introduce struct amd_ir_data.iommu
iommu/amd: Update amd_irte_ops functions
iommu/amd: Update alloc_irq_table and alloc_irq_index
iommu/amd: Update set_dte_entry and clear_dte_entry
iommu/amd: Update iommu_ignore_device
iommu/amd: Update dump_dte_entry
iommu/amd: Update set_dte_irq_entry
iommu/amd: Update (un)init_device_table_dma()
iommu/amd: Update set_dev_entry_bit() and get_dev_entry_bit()
iommu/amd: Remove global amd_iommu_[dev_table/alias_table/last_bdf]
iommu/amd: Introduce get_device_sbdf_id() helper function
iommu/amd: Include PCI segment ID when initialize IOMMU
iommu/amd: Specify PCI segment ID when getting pci device
iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands
Vasant Hegde (15):
iommu/amd: Update struct iommu_dev_data definition
iommu/amd: Introduce pci segment structure
iommu/amd: Introduce per PCI segment irq_lookup_table
iommu/amd: Introduce per PCI segment dev_data_list
iommu/amd: Introduce per PCI segment unity map list
iommu/amd: Introduce per PCI segment last_bdf
iommu/amd: Introduce per PCI segment device table size
iommu/amd: Introduce per PCI segment alias table size
iommu/amd: Introduce per PCI segment rlookup table size
iommu/amd: Convert to use per PCI segment irq_lookup_table
iommu/amd: Convert to use per PCI segment rlookup_table
iommu/amd: Flush upto last_bdf only
iommu/amd: Print PCI segment ID in error log messages
iommu/amd: Update device_state structure to include PCI seg ID
iommu/amd: Update amd_iommu_fault structure to include PCI seg ID
.../admin-guide/kernel-parameters.txt | 34 +-
drivers/iommu/amd/amd_iommu.h | 13 +-
drivers/iommu/amd/amd_iommu_types.h | 133 +++-
drivers/iommu/amd/init.c | 687 +++++++++++-------
drivers/iommu/amd/iommu.c | 563 ++++++++------
drivers/iommu/amd/iommu_v2.c | 67 +-
drivers/iommu/amd/quirks.c | 4 +-
7 files changed, 904 insertions(+), 597 deletions(-)
--
2.27.0
next reply other threads:[~2022-07-06 11:42 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-06 11:37 Vasant Hegde via iommu [this message]
2022-07-06 11:37 ` [PATCH v3 RESEND 00/35] iommu/amd: Add multiple PCI segments support Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 01/35] iommu/amd: Update struct iommu_dev_data definition Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 02/35] iommu/amd: Introduce pci segment structure Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 03/35] iommu/amd: Introduce per PCI segment device table Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 04/35] iommu/amd: Introduce per PCI segment rlookup table Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 05/35] iommu/amd: Introduce per PCI segment irq_lookup_table Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 06/35] iommu/amd: Introduce per PCI segment dev_data_list Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 07/35] iommu/amd: Introduce per PCI segment old_dev_tbl_cpy Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 08/35] iommu/amd: Introduce per PCI segment alias_table Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:37 ` [PATCH v3 RESEND 09/35] iommu/amd: Introduce per PCI segment unity map list Vasant Hegde via iommu
2022-07-06 11:37 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 10/35] iommu/amd: Introduce per PCI segment last_bdf Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 11/35] iommu/amd: Introduce per PCI segment device table size Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 12/35] iommu/amd: Introduce per PCI segment alias " Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 13/35] iommu/amd: Introduce per PCI segment rlookup " Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 14/35] iommu/amd: Convert to use per PCI segment irq_lookup_table Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 15/35] iommu/amd: Convert to use rlookup_amd_iommu helper function Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 16/35] iommu/amd: Update irq_remapping_alloc to use IOMMU lookup " Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 17/35] iommu/amd: Introduce struct amd_ir_data.iommu Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 18/35] iommu/amd: Update amd_irte_ops functions Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 19/35] iommu/amd: Update alloc_irq_table and alloc_irq_index Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 20/35] iommu/amd: Convert to use per PCI segment rlookup_table Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 21/35] iommu/amd: Update set_dte_entry and clear_dte_entry Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 22/35] iommu/amd: Update iommu_ignore_device Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 23/35] iommu/amd: Update dump_dte_entry Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 24/35] iommu/amd: Update set_dte_irq_entry Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 25/35] iommu/amd: Update (un)init_device_table_dma() Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 26/35] iommu/amd: Update set_dev_entry_bit() and get_dev_entry_bit() Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 27/35] iommu/amd: Remove global amd_iommu_[dev_table/alias_table/last_bdf] Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 28/35] iommu/amd: Flush upto last_bdf only Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 29/35] iommu/amd: Introduce get_device_sbdf_id() helper function Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 30/35] iommu/amd: Include PCI segment ID when initialize IOMMU Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 31/35] iommu/amd: Specify PCI segment ID when getting pci device Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 32/35] iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 33/35] iommu/amd: Print PCI segment ID in error log messages Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 34/35] iommu/amd: Update device_state structure to include PCI seg ID Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-06 11:38 ` [PATCH v3 RESEND 35/35] iommu/amd: Update amd_iommu_fault " Vasant Hegde via iommu
2022-07-06 11:38 ` Vasant Hegde
2022-07-07 7:41 ` [PATCH v3 RESEND 00/35] iommu/amd: Add multiple PCI segments support Joerg Roedel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220706113825.25582-1-vasant.hegde@amd.com \
--to=iommu@lists.linux-foundation.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=vasant.hegde@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox