On 7/23/2026 8:09 PM, Konstantin Shkolnyy wrote:
Make it more clear what the bit means, and the new function will be called
from yet another place in the future.

Reviewed-by: Christian Borntraeger <[email protected]>
Reviewed-by: Matthew Rosato <[email protected]>
Signed-off-by: Konstantin Shkolnyy <[email protected]>
---
  hw/s390x/s390-pci-inst.c        | 7 ++++++-
  include/hw/s390x/s390-pci-bus.h | 1 +
  2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 37ca70dcf1..00a847f493 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -1021,6 +1021,11 @@ int pci_dereg_irqs(S390PCIBusDevice *pbdev)
      return 0;
  }
+bool s390_pci_is_translation_enabled(uint64_t g_iota)
+{
+    return ((g_iota >> 11) & 0x1) != 0; /* "T" bit */
+}
+
  static int reg_ioat(CPUS390XState *env, S390PCIBusDevice *pbdev, ZpciFib fib,
                      uintptr_t ra)
  {
@@ -1029,7 +1034,7 @@ static int reg_ioat(CPUS390XState *env, S390PCIBusDevice 
*pbdev, ZpciFib fib,
      uint64_t pal = ldq_be_p(&fib.pal);
      uint64_t g_iota = ldq_be_p(&fib.iota);
      uint8_t dt = (g_iota >> 2) & 0x7;
-    uint8_t t = (g_iota >> 11) & 0x1;
+    bool t = s390_pci_is_translation_enabled(g_iota);
pba &= ~0xfff;
      pal |= 0xfff;
diff --git a/include/hw/s390x/s390-pci-bus.h b/include/hw/s390x/s390-pci-bus.h
index 9228523ce8..eb15cb8b2d 100644
--- a/include/hw/s390x/s390-pci-bus.h
+++ b/include/hw/s390x/s390-pci-bus.h
@@ -390,6 +390,7 @@ int pci_chsc_sei_nt2_get_event(void *res);
  int pci_chsc_sei_nt2_have_event(void);
  void s390_pci_sclp_configure(SCCB *sccb);
  void s390_pci_sclp_deconfigure(SCCB *sccb);
+bool s390_pci_is_translation_enabled(uint64_t g_iota);
  void s390_pci_iommu_enable(S390PCIIOMMU *iommu);
  void s390_pci_iommu_direct_map_enable(S390PCIIOMMU *iommu);
  void s390_pci_iommu_disable(S390PCIIOMMU *iommu);

Reviewed-by: Farhan Ali<[email protected]>



Reply via email to