[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v1 2/5] vpci: rework error path in vpci_process_pending()


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
  • Date: Sat, 31 May 2025 08:54:00 -0400
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1kR/ClfUZKKqigCC70/OsoHrcl2UsMV2lP7p0tn/BBM=; b=xvPkgbzWWh+QcoPrXV0Ez7ZIhrgM1koP6Oph7ZSpId5WgiMlCuqSsCFlzzrNAPrvaFaSm9S1F3w5nndgQRXz8qjtL+GIOmeue2mrI/ipMFeazJrniPt2zYEc8mg4MIYJKyqd4dOghvho3Yqq2GKa5clCVEKLFoUzZt6eUqi0M3KRIWSm7hD/K3Xv4W1yfKvnFx9BqGYOXRwqUt+V1dQlMnvruBroxwMcEYO4PnG80oXGEIF8foM0gpGq4fO9S40W/lEbZG5xUZhSwj50jWf6aFhLQonFHMT3lBVnxhueVPBv0HFMjvkevCriLKv5FU9N0p9NZgReB3o47zCCyxRL4g==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FUhzN+wz0ovtTrnBQ+5mfuY7chuuuCQ/muoDHMvqNDEpAA4CBuUkyjkvb+s+Oyl6hQEiro0TPeHNlI6n+aaQ+NiZJnlHQL52r745pCvq3fbi/w+dhnErzBmMpW+Twotrq2H20jMrH/42V1UYbJD4iWmirRDn8ZPK2EOT4V0gzqs2RBd20k8QO0Kxry3zCE7xwgE6KN91Ej3XrsThXPsC2W2A7bzJc/4d6eM4e6YNqMAKHee1YTCq44llRU/quMUkqIuAlEkUtA1elAfvaPeDkClmLLwzzTyErHgH0NjAeHvTf+5MIAkrs9545kyNuAoiE5KSFK7HIY937BC8z+L5NA==
  • Cc: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Sat, 31 May 2025 12:54:34 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

This will make further refactoring simpler.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
---
 xen/drivers/vpci/header.c | 42 +++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index e42c8efa2302..c1463d2ce076 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -214,27 +214,7 @@ bool vpci_process_pending(struct vcpu *v)
         }
 
         if ( rc )
-        {
-            spin_lock(&pdev->vpci->lock);
-            /* Disable memory decoding unconditionally on failure. */
-            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
-                            false);
-            spin_unlock(&pdev->vpci->lock);
-
-            /* Clean all the rangesets */
-            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
-                if ( !rangeset_is_empty(header->bars[i].mem) )
-                     rangeset_purge(header->bars[i].mem);
-
-            v->vpci.pdev = NULL;
-
-            read_unlock(&v->domain->pci_lock);
-
-            if ( !is_hardware_domain(v->domain) )
-                domain_crash(v->domain);
-
-            return false;
-        }
+            goto fail;
     }
     v->vpci.pdev = NULL;
 
@@ -245,6 +225,26 @@ bool vpci_process_pending(struct vcpu *v)
     read_unlock(&v->domain->pci_lock);
 
     return false;
+
+ fail:
+    spin_lock(&pdev->vpci->lock);
+    /* Disable memory decoding unconditionally on failure. */
+    modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY, false);
+    spin_unlock(&pdev->vpci->lock);
+
+    /* Clean all the rangesets */
+    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+        if ( !rangeset_is_empty(header->bars[i].mem) )
+             rangeset_purge(header->bars[i].mem);
+
+    v->vpci.pdev = NULL;
+
+    read_unlock(&v->domain->pci_lock);
+
+    if ( !is_hardware_domain(v->domain) )
+        domain_crash(v->domain);
+
+    return false;
 }
 
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
-- 
2.49.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.