diff mbox series

[v2,2/2] s390x/pci: only limit DMA aperture if vfio DMA limit reported

Message ID 20231110175108.465851-3-mjrosato@linux.ibm.com
State New
Headers show
Series s390x/pci: small set of fixes | expand

Commit Message

Matthew Rosato Nov. 10, 2023, 5:51 p.m. UTC
If the host kernel lacks vfio DMA limit reporting, do not attempt
to shrink the guest DMA aperture.

Fixes: df202e3ff3 ("s390x/pci: shrink DMA aperture to be bound by vfio DMA limit")
Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
---
 hw/s390x/s390-pci-vfio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Tokarev Nov. 13, 2023, 9:24 p.m. UTC | #1
10.11.2023 20:51, Matthew Rosato wrote:
> If the host kernel lacks vfio DMA limit reporting, do not attempt
> to shrink the guest DMA aperture.
> 
> Fixes: df202e3ff3 ("s390x/pci: shrink DMA aperture to be bound by vfio DMA limit")
> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>

Is this stable-8.1 material?

Thanks,

/mjt

> ---
>   hw/s390x/s390-pci-vfio.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/s390x/s390-pci-vfio.c b/hw/s390x/s390-pci-vfio.c
> index e28573b593..7dbbc76823 100644
> --- a/hw/s390x/s390-pci-vfio.c
> +++ b/hw/s390x/s390-pci-vfio.c
> @@ -136,7 +136,7 @@ static void s390_pci_read_base(S390PCIBusDevice *pbdev,
>        * to the guest based upon the vfio DMA limit.
>        */
>       vfio_size = pbdev->iommu->max_dma_limit << TARGET_PAGE_BITS;
> -    if (vfio_size < (cap->end_dma - cap->start_dma + 1)) {
> +    if (vfio_size > 0 && vfio_size < cap->end_dma - cap->start_dma + 1) {
>           pbdev->zpci_fn.edma = cap->start_dma + vfio_size - 1;
>       }
>   }
Matthew Rosato Nov. 13, 2023, 9:49 p.m. UTC | #2
On 11/13/23 4:24 PM, Michael Tokarev wrote:
> 10.11.2023 20:51, Matthew Rosato wrote:
>> If the host kernel lacks vfio DMA limit reporting, do not attempt
>> to shrink the guest DMA aperture.
>>
>> Fixes: df202e3ff3 ("s390x/pci: shrink DMA aperture to be bound by vfio DMA limit")
>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
> 
> Is this stable-8.1 material?
> 
> Thanks,
> 
> /mjt
> 

Yes, I believe it is (sorry, should have added CC stable)

If you have a host kernel that doesn't report the vfio DMA limit the resulting PCI device will be rendered unusable in the s390x guest due this bug.

Thanks,
Matt
diff mbox series

Patch

diff --git a/hw/s390x/s390-pci-vfio.c b/hw/s390x/s390-pci-vfio.c
index e28573b593..7dbbc76823 100644
--- a/hw/s390x/s390-pci-vfio.c
+++ b/hw/s390x/s390-pci-vfio.c
@@ -136,7 +136,7 @@  static void s390_pci_read_base(S390PCIBusDevice *pbdev,
      * to the guest based upon the vfio DMA limit.
      */
     vfio_size = pbdev->iommu->max_dma_limit << TARGET_PAGE_BITS;
-    if (vfio_size < (cap->end_dma - cap->start_dma + 1)) {
+    if (vfio_size > 0 && vfio_size < cap->end_dma - cap->start_dma + 1) {
         pbdev->zpci_fn.edma = cap->start_dma + vfio_size - 1;
     }
 }