[PATCH 0/7] iommu/s390: support additional table regions

Matthew Rosato posted 7 patches 2 weeks, 3 days ago
arch/s390/include/asm/pci.h     |   2 +
arch/s390/include/asm/pci_dma.h |   3 +
arch/s390/pci/pci.c             |  17 +-
drivers/iommu/s390-iommu.c      | 289 +++++++++++++++++++++++++++++---
4 files changed, 285 insertions(+), 26 deletions(-)
[PATCH 0/7] iommu/s390: support additional table regions
Posted by Matthew Rosato 2 weeks, 3 days ago
The series extends the maximum table size allowed by s390-iommu by
increasing the number of table regions supported.  It also adds logic to
construct the table use the minimum number of regions based upon aperture
calculation.

Matthew Rosato (7):
  iommu/s390: add initial fields to track table size
  s390/pci: set appropriate IOTA region type
  iommu/s390: add basic routines for region 1st and 2nd tables
  iommu/s390: support cleanup of additional table regions
  iommu/s390: support iova_to_phys for additional table regions
  iommu/s390: support map/unmap for additional table regions
  iommu/s390: allow larger region tables

 arch/s390/include/asm/pci.h     |   2 +
 arch/s390/include/asm/pci_dma.h |   3 +
 arch/s390/pci/pci.c             |  17 +-
 drivers/iommu/s390-iommu.c      | 289 +++++++++++++++++++++++++++++---
 4 files changed, 285 insertions(+), 26 deletions(-)

-- 
2.47.0
Re: [PATCH 0/7] iommu/s390: support additional table regions
Posted by Matthew Rosato 2 weeks, 3 days ago
On 12/9/24 2:25 PM, Matthew Rosato wrote:
> The series extends the maximum table size allowed by s390-iommu by
> increasing the number of table regions supported.  It also adds logic to
> construct the table use the minimum number of regions based upon aperture
> calculation.
> 
> Matthew Rosato (7):
>   iommu/s390: add initial fields to track table size
>   s390/pci: set appropriate IOTA region type
>   iommu/s390: add basic routines for region 1st and 2nd tables
>   iommu/s390: support cleanup of additional table regions
>   iommu/s390: support iova_to_phys for additional table regions
>   iommu/s390: support map/unmap for additional table regions
>   iommu/s390: allow larger region tables
> 
>  arch/s390/include/asm/pci.h     |   2 +
>  arch/s390/include/asm/pci_dma.h |   3 +
>  arch/s390/pci/pci.c             |  17 +-
>  drivers/iommu/s390-iommu.c      | 289 +++++++++++++++++++++++++++++---
>  4 files changed, 285 insertions(+), 26 deletions(-)
> 

One note:  this series and 'iommu/s390: add support for IOMMU passthrough' have a minor merge conflict but are otherwise independent.  If anyone would care to test with both series simultaneously here is the conflict resolution of merging this series on top of 'iommu/s390: add support for IOMMU passthrough':

diff --cc arch/s390/pci/pci.c
index 758b23331754,9f7adf913729..291a3ee4d059
--- a/arch/s390/pci/pci.c
+++ b/arch/s390/pci/pci.c
@@@ -130,10 -146,7 +145,10 @@@ int zpci_register_ioat(struct zpci_dev 
                fib.pal = limit + (1 << 12);
        else
                fib.pal = limit;
 -      fib.iota = iota | zpci_get_iota_region_flag(zdev);
 +      if (iota == 0)
 +              fib.iota = iota;
 +      else
-               fib.iota = iota | ZPCI_IOTA_RTTO_FLAG;
++              fib.iota = iota | zpci_get_iota_region_flag(zdev);
        fib.gd = zdev->gisa;
        cc = zpci_mod_fc(req, &fib, status);
        if (cc)