[PATCH] s390x/pci: restore missing Query PCI Function CLP data

Matthew Rosato posted 1 patch 3 years, 3 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1613681609-9349-1-git-send-email-mjrosato@linux.ibm.com
Maintainers: Cornelia Huck <cohuck@redhat.com>, Thomas Huth <thuth@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Halil Pasic <pasic@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Matthew Rosato <mjrosato@linux.ibm.com>, Christian Borntraeger <borntraeger@de.ibm.com>
hw/s390x/s390-pci-inst.c | 5 +++++
1 file changed, 5 insertions(+)
[PATCH] s390x/pci: restore missing Query PCI Function CLP data
Posted by Matthew Rosato 3 years, 3 months ago
Some CLP response data was accidentally dropped when fixing endianness
issues with the Query PCI Function CLP response.  All of these values are
sent as 0s to the guest for emulated devices, so the impact is only
observed on passthrough devices.

Fixes: a4e2fff1b104 ("s390x/pci: fix endianness issues")
Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
---
 hw/s390x/s390-pci-inst.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 654fac6..4b8326a 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -284,10 +284,15 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra)
         stq_p(&resquery->sdma, pbdev->zpci_fn.sdma);
         stq_p(&resquery->edma, pbdev->zpci_fn.edma);
         stw_p(&resquery->pchid, pbdev->zpci_fn.pchid);
+        stw_p(&resquery->vfn, pbdev->zpci_fn.vfn);
         resquery->flags = pbdev->zpci_fn.flags;
         resquery->pfgid = pbdev->zpci_fn.pfgid;
+        resquery->pft = pbdev->zpci_fn.pft;
+        resquery->fmbl = pbdev->zpci_fn.fmbl;
         stl_p(&resquery->fid, pbdev->zpci_fn.fid);
         stl_p(&resquery->uid, pbdev->zpci_fn.uid);
+        memcpy(resquery->pfip, pbdev->zpci_fn.pfip, CLP_PFIP_NR_SEGMENTS);
+        memcpy(resquery->util_str, pbdev->zpci_fn.util_str, CLP_UTIL_STR_LEN);
 
         for (i = 0; i < PCI_BAR_COUNT; i++) {
             uint32_t data = pci_get_long(pbdev->pdev->config +
-- 
1.8.3.1


Re: [PATCH] s390x/pci: restore missing Query PCI Function CLP data
Posted by Cornelia Huck 3 years, 3 months ago
On Thu, 18 Feb 2021 15:53:29 -0500
Matthew Rosato <mjrosato@linux.ibm.com> wrote:

> Some CLP response data was accidentally dropped when fixing endianness
> issues with the Query PCI Function CLP response.  All of these values are
> sent as 0s to the guest for emulated devices, so the impact is only
> observed on passthrough devices.
> 
> Fixes: a4e2fff1b104 ("s390x/pci: fix endianness issues")
> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
> ---
>  hw/s390x/s390-pci-inst.c | 5 +++++
>  1 file changed, 5 insertions(+)

Whoops.

Thanks, applied.