On 14/05/2019 13:49, Cornelia Huck wrote:
On Fri, 10 May 2019 16:38:51 +0200
Pierre Morel <pmo...@linux.ibm.com> wrote:

We use a S390PCIGroup structure to hold the information
related to zPCI Function group.

This allows us to be ready to support multiple groups and to retrieve
the group information from the host.

What if there is no host to retrieve information from?

There is a default group for emulate devices.
I will enhance the comment.

Thanks



Signed-off-by: Pierre Morel <pmo...@linux.ibm.com>
---
  hw/s390x/s390-pci-bus.c  | 42 ++++++++++++++++++++++++++++++++++++++++++
  hw/s390x/s390-pci-bus.h  | 11 ++++++++++-
  hw/s390x/s390-pci-inst.c | 22 +++++++++++++---------
  3 files changed, 65 insertions(+), 10 deletions(-)

diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index be28962..8147847 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -284,21 +284,25 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t 
ra)
          stq_p(&resquery->edma, ZPCI_EDMA_ADDR);
          stl_p(&resquery->fid, pbdev->fid);
          stw_p(&resquery->pchid, 0);
-        stw_p(&resquery->ug, 1);
+        stw_p(&resquery->ug, ZPCI_DEFAULT_FN_GRP);
          stl_p(&resquery->uid, pbdev->uid);
          stw_p(&resquery->hdr.rsp, CLP_RC_OK);
          break;
      }
      case CLP_QUERY_PCI_FNGRP: {
          ClpRspQueryPciGrp *resgrp = (ClpRspQueryPciGrp *)resh;
-        resgrp->fr = 1;
-        stq_p(&resgrp->dasm, 0);
-        stq_p(&resgrp->msia, ZPCI_MSI_ADDR);
-        stw_p(&resgrp->mui, DEFAULT_MUI);
-        stw_p(&resgrp->i, 128);
-        stw_p(&resgrp->maxstbl, 128);
-        resgrp->version = 0;
+ ClpReqQueryPciGrp *reqgrp = (ClpReqQueryPciGrp *)reqh;
+        S390PCIGroup *grp;
+
+        grp = s390_grp_find(reqgrp->g);
+        if (!grp) {
+            /* We do not allow access to unknown groups */
+            /* The group must have been obtained with a vfio device */

What about non-vfio devices? How does this whole feature work for
emulated devices?

Emulated devices get a default group with predefined values.
The predefined values we used before this series.
I will modify the patch comment to explain the emulated devices case.
Thanks for the comments.

Regards,
Pierre


--
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany


Reply via email to