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

[RFC PATCH 09/10] [RFC only] xen: iommu: remove last pcidevs_lock() calls in iommu


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Wed, 31 Aug 2022 14:11:01 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=pKNemWZV2+FfurTu7vJyid03vkZnEYejDqPafwLthYA=; b=cPyGpxRKr5BUYR1PXasS2s/HiSxFSR9e9dM1UMDTP1o4OgZ75E0fXwPc68OIxhViChvYjK3MlcZuMgraR+x/sik/L5nuY4rCjUGL/IrFaY5UifPzrk0y38oVUeMlOyrnEcWA2LTWgHK6ITBj/hrrSLGUL+MA/uN2oniAAMStU3xhBOrreQ1SW6/ZjPDhkzj6ZEcrpSpngkP3/Y/AfsllRmSO9TG5Gy9GbBiF4xwVEa6ZAqQsGlDmN1VGt9gOnEfCBcAojPH1gbLuIceFw1eyNtxAD2Ho6IFTPZFlU0mewN+PJg924XA6miKPOuz0yHWx6plrOx3tMAh66z3IgaIcog==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KvArwocYUmWcgj1cBM8dAwNTv+HzTn8sMGFViPImWj5Q3F9llb6oaaTnAutlo5noBmcc2zKT8IJxaSOZUH7d1S7F772NoVqMbdqcYe64AndKM5cI0Z2Z2fMjIDMXWdIEXEw9mHivEY0hB72qpgZAwpqyf33C/aQy/Cf0OYNeYNOgd3X4NopGuzI6zP4Kn9oB8/WNZzFOUg73SIXqke0doOkDWtn1VXAY7iri2kxnSNb4AjYV6oY+KjySFIHhQwl01mQNCT+3yAVx7bLIO9cuw5SXREBsKXJfvaHtdbLB9ZFZGYY9F1Eu1R8vZdWiLOwkvJdiEJqYFpLkKisFTEBAmw==
  • Cc: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@xxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Wed, 31 Aug 2022 14:11:21 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHYvUOAlPa0wkGiakOWSGDBM2amAQ==
  • Thread-topic: [RFC PATCH 09/10] [RFC only] xen: iommu: remove last pcidevs_lock() calls in iommu

There are number of cases where pcidevs_lock() is used to protect
something that is not related to PCI devices per se.

Probably pcidev_lock in these places should be replaced with some
other lock.

This patch is not intended to be merged and is present only to discuss
this use of pcidevs_lock()

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
---
 xen/drivers/passthrough/vtd/intremap.c | 2 --
 xen/drivers/passthrough/vtd/iommu.c    | 5 -----
 xen/drivers/passthrough/x86/iommu.c    | 5 -----
 3 files changed, 12 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/intremap.c 
b/xen/drivers/passthrough/vtd/intremap.c
index 1512e4866b..44e3b72f91 100644
--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -893,8 +893,6 @@ int pi_update_irte(const struct pi_desc *pi_desc, const 
struct pirq *pirq,
 
     spin_unlock_irq(&desc->lock);
 
-    ASSERT(pcidevs_locked());
-
     return msi_msg_write_remap_rte(msi_desc, &msi_desc->msg);
 
  unlock_out:
diff --git a/xen/drivers/passthrough/vtd/iommu.c 
b/xen/drivers/passthrough/vtd/iommu.c
index 87868188b7..9d258d154d 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -127,8 +127,6 @@ static int context_set_domain_id(struct context_entry 
*context,
 {
     unsigned int i;
 
-    ASSERT(pcidevs_locked());
-
     if ( domid_mapping(iommu) )
     {
         unsigned int nr_dom = cap_ndoms(iommu->cap);
@@ -1882,7 +1880,6 @@ int domain_context_unmap_one(
     int iommu_domid, rc, ret;
     bool_t flush_dev_iotlb;
 
-    ASSERT(pcidevs_locked());
     spin_lock(&iommu->lock);
 
     maddr = bus_to_context_maddr(iommu, bus);
@@ -2601,7 +2598,6 @@ static void __hwdom_init setup_hwdom_rmrr(struct domain 
*d)
     u16 bdf;
     int ret, i;
 
-    pcidevs_lock();
     for_each_rmrr_device ( rmrr, bdf, i )
     {
         /*
@@ -2616,7 +2612,6 @@ static void __hwdom_init setup_hwdom_rmrr(struct domain 
*d)
             dprintk(XENLOG_ERR VTDPREFIX,
                      "IOMMU: mapping reserved region failed\n");
     }
-    pcidevs_unlock();
 }
 
 static struct iommu_state {
diff --git a/xen/drivers/passthrough/x86/iommu.c 
b/xen/drivers/passthrough/x86/iommu.c
index f671b0f2bb..4e94ad15df 100644
--- a/xen/drivers/passthrough/x86/iommu.c
+++ b/xen/drivers/passthrough/x86/iommu.c
@@ -207,7 +207,6 @@ int iommu_identity_mapping(struct domain *d, p2m_access_t 
p2ma,
     struct identity_map *map;
     struct domain_iommu *hd = dom_iommu(d);
 
-    ASSERT(pcidevs_locked());
     ASSERT(base < end);
 
     /*
@@ -479,8 +478,6 @@ domid_t iommu_alloc_domid(unsigned long *map)
     static unsigned int start;
     unsigned int idx = find_next_zero_bit(map, UINT16_MAX - DOMID_MASK, start);
 
-    ASSERT(pcidevs_locked());
-
     if ( idx >= UINT16_MAX - DOMID_MASK )
         idx = find_first_zero_bit(map, UINT16_MAX - DOMID_MASK);
     if ( idx >= UINT16_MAX - DOMID_MASK )
@@ -495,8 +492,6 @@ domid_t iommu_alloc_domid(unsigned long *map)
 
 void iommu_free_domid(domid_t domid, unsigned long *map)
 {
-    ASSERT(pcidevs_locked());
-
     if ( domid == DOMID_INVALID )
         return;
 
-- 
2.36.1



 


Rackspace

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