From: Lu Baolu <baolu.lu@linux.intel.com>
To: iommu@lists.linux-foundation.org, iommu@lists.linux.dev
Cc: Kevin Tian <kevin.tian@intel.com>,
Ashok Raj <ashok.raj@intel.com>,
linux-kernel@vger.kernel.org,
Jacob jun Pan <jacob.jun.pan@intel.com>
Subject: [PATCH v3 00/11] iommu/vt-d: Optimize the use of locks
Date: Wed, 29 Jun 2022 15:47:14 +0800 [thread overview]
Message-ID: <20220629074725.2331441-1-baolu.lu@linux.intel.com> (raw)
Hi folks,
This series tries to optimize the uses of two locks in the Intel IOMMU
driver:
- The intel_iommu::lock is used to protect the IOMMU resources shared by
devices. They include the IOMMU root and context tables, the pasid
tables and the domain IDs.
- The global device_domain_lock is used to protect the global and the
per-domain device tracking lists.
The optimization includes:
- Remove the unnecessary global device tracking list;
- Remove unnecessary locking;
- Reduce the scope of the lock as much as possible, that is, use the
lock only where necessary;
- The global lock is transformed into a local lock to improve the
efficiency.
This series is also available on github:
https://github.com/LuBaolu/intel-iommu/commits/intel-iommu-lock-optimization-v3
Your comments and suggestions are very appreciated.
Best regards,
baolu
Change log:
v3:
- Split reduction of lock ranges from changing irqsave.
https://lore.kernel.org/linux-iommu/BN9PR11MB52760A3D7C6BF1AF9C9D34658CAA9@BN9PR11MB5276.namprd11.prod.outlook.com/
- Fully initialize the dev_info before adding it to the list.
https://lore.kernel.org/linux-iommu/BN9PR11MB52764D7CD86448C5E4EB46668CAA9@BN9PR11MB5276.namprd11.prod.outlook.com/
- Various code and comments refinement.
v2:
- https://lore.kernel.org/linux-iommu/20220614025137.1632762-1-baolu.lu@linux.intel.com/
- Split the lock-free page walk issue into a new patch:
https://lore.kernel.org/linux-iommu/20220609070811.902868-1-baolu.lu@linux.intel.com/
- Drop the conversion from spinlock to mutex and make this series
cleanup purpose only.
- Address several comments received during v1 review.
v1:
- https://lore.kernel.org/linux-iommu/20220527063019.3112905-1-baolu.lu@linux.intel.com/
- Initial post.
Lu Baolu (11):
iommu/vt-d: debugfs: Remove device_domain_lock usage
iommu/vt-d: Remove clearing translation data in disable_dmar_iommu()
iommu/vt-d: Use pci_get_domain_bus_and_slot() in pgtable_walk()
iommu/vt-d: Unnecessary spinlock for root table alloc and free
iommu/vt-d: Replace spin_lock_irqsave() with spin_lock()
iommu/vt-d: Acquiring lock in domain ID allocation helpers
iommu/vt-d: Acquiring lock in pasid manipulation helpers
iommu/vt-d: Check device list of domain in domain free path
iommu/vt-d: Fold __dmar_remove_one_dev_info() into its caller
iommu/vt-d: Use device_domain_lock accurately
iommu/vt-d: Convert global spinlock into per domain lock
drivers/iommu/intel/iommu.h | 3 +-
drivers/iommu/intel/pasid.h | 1 +
drivers/iommu/intel/debugfs.c | 49 ++++---
drivers/iommu/intel/iommu.c | 248 ++++++++++------------------------
drivers/iommu/intel/pasid.c | 103 +++++++-------
drivers/iommu/intel/svm.c | 5 +-
6 files changed, 164 insertions(+), 245 deletions(-)
--
2.25.1
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Lu Baolu <baolu.lu@linux.intel.com>
To: iommu@lists.linux-foundation.org, iommu@lists.linux.dev
Cc: Kevin Tian <kevin.tian@intel.com>,
Ashok Raj <ashok.raj@intel.com>, Liu Yi L <yi.l.liu@intel.com>,
Jacob jun Pan <jacob.jun.pan@intel.com>,
linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com>
Subject: [PATCH v3 00/11] iommu/vt-d: Optimize the use of locks
Date: Wed, 29 Jun 2022 15:47:14 +0800 [thread overview]
Message-ID: <20220629074725.2331441-1-baolu.lu@linux.intel.com> (raw)
Message-ID: <20220629074714.2JkQ8VLWSsF8ZpUoI8XE3U0QA_-xt5uaFpnW5Xe0xI0@z> (raw)
Hi folks,
This series tries to optimize the uses of two locks in the Intel IOMMU
driver:
- The intel_iommu::lock is used to protect the IOMMU resources shared by
devices. They include the IOMMU root and context tables, the pasid
tables and the domain IDs.
- The global device_domain_lock is used to protect the global and the
per-domain device tracking lists.
The optimization includes:
- Remove the unnecessary global device tracking list;
- Remove unnecessary locking;
- Reduce the scope of the lock as much as possible, that is, use the
lock only where necessary;
- The global lock is transformed into a local lock to improve the
efficiency.
This series is also available on github:
https://github.com/LuBaolu/intel-iommu/commits/intel-iommu-lock-optimization-v3
Your comments and suggestions are very appreciated.
Best regards,
baolu
Change log:
v3:
- Split reduction of lock ranges from changing irqsave.
https://lore.kernel.org/linux-iommu/BN9PR11MB52760A3D7C6BF1AF9C9D34658CAA9@BN9PR11MB5276.namprd11.prod.outlook.com/
- Fully initialize the dev_info before adding it to the list.
https://lore.kernel.org/linux-iommu/BN9PR11MB52764D7CD86448C5E4EB46668CAA9@BN9PR11MB5276.namprd11.prod.outlook.com/
- Various code and comments refinement.
v2:
- https://lore.kernel.org/linux-iommu/20220614025137.1632762-1-baolu.lu@linux.intel.com/
- Split the lock-free page walk issue into a new patch:
https://lore.kernel.org/linux-iommu/20220609070811.902868-1-baolu.lu@linux.intel.com/
- Drop the conversion from spinlock to mutex and make this series
cleanup purpose only.
- Address several comments received during v1 review.
v1:
- https://lore.kernel.org/linux-iommu/20220527063019.3112905-1-baolu.lu@linux.intel.com/
- Initial post.
Lu Baolu (11):
iommu/vt-d: debugfs: Remove device_domain_lock usage
iommu/vt-d: Remove clearing translation data in disable_dmar_iommu()
iommu/vt-d: Use pci_get_domain_bus_and_slot() in pgtable_walk()
iommu/vt-d: Unnecessary spinlock for root table alloc and free
iommu/vt-d: Replace spin_lock_irqsave() with spin_lock()
iommu/vt-d: Acquiring lock in domain ID allocation helpers
iommu/vt-d: Acquiring lock in pasid manipulation helpers
iommu/vt-d: Check device list of domain in domain free path
iommu/vt-d: Fold __dmar_remove_one_dev_info() into its caller
iommu/vt-d: Use device_domain_lock accurately
iommu/vt-d: Convert global spinlock into per domain lock
drivers/iommu/intel/iommu.h | 3 +-
drivers/iommu/intel/pasid.h | 1 +
drivers/iommu/intel/debugfs.c | 49 ++++---
drivers/iommu/intel/iommu.c | 248 ++++++++++------------------------
drivers/iommu/intel/pasid.c | 103 +++++++-------
drivers/iommu/intel/svm.c | 5 +-
6 files changed, 164 insertions(+), 245 deletions(-)
--
2.25.1
next reply other threads:[~2022-06-29 7:51 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-29 7:47 Lu Baolu [this message]
2022-06-29 7:47 ` [PATCH v3 00/11] iommu/vt-d: Optimize the use of locks Lu Baolu
2022-06-29 7:47 ` [PATCH v3 01/11] iommu/vt-d: debugfs: Remove device_domain_lock usage Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 7:55 ` Tian, Kevin
2022-07-01 7:55 ` Tian, Kevin
2022-06-29 7:47 ` [PATCH v3 02/11] iommu/vt-d: Remove clearing translation data in disable_dmar_iommu() Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 7:58 ` Tian, Kevin
2022-07-01 7:58 ` Tian, Kevin
2022-07-03 4:34 ` Baolu Lu
2022-07-03 4:34 ` Baolu Lu
2022-07-07 1:02 ` Tian, Kevin
2022-06-29 7:47 ` [PATCH v3 03/11] iommu/vt-d: Use pci_get_domain_bus_and_slot() in pgtable_walk() Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-06-29 7:47 ` [PATCH v3 04/11] iommu/vt-d: Unnecessary spinlock for root table alloc and free Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-06-29 7:47 ` [PATCH v3 05/11] iommu/vt-d: Replace spin_lock_irqsave() with spin_lock() Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-06-29 7:47 ` [PATCH v3 06/11] iommu/vt-d: Acquiring lock in domain ID allocation helpers Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 8:06 ` Tian, Kevin
2022-07-01 8:06 ` Tian, Kevin
2022-06-29 7:47 ` [PATCH v3 07/11] iommu/vt-d: Acquiring lock in pasid manipulation helpers Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-06-29 7:47 ` [PATCH v3 08/11] iommu/vt-d: Check device list of domain in domain free path Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-06-29 7:47 ` [PATCH v3 09/11] iommu/vt-d: Fold __dmar_remove_one_dev_info() into its caller Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 8:08 ` Tian, Kevin
2022-07-01 8:08 ` Tian, Kevin
2022-06-29 7:47 ` [PATCH v3 10/11] iommu/vt-d: Use device_domain_lock accurately Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 8:15 ` Tian, Kevin
2022-07-01 8:15 ` Tian, Kevin
2022-07-01 9:12 ` Baolu Lu
2022-07-01 9:12 ` Baolu Lu
2022-07-03 4:35 ` Baolu Lu
2022-07-03 4:35 ` Baolu Lu
2022-06-29 7:47 ` [PATCH v3 11/11] iommu/vt-d: Convert global spinlock into per domain lock Lu Baolu
2022-06-29 7:47 ` Lu Baolu
2022-07-01 8:18 ` Tian, Kevin
2022-07-01 8:18 ` Tian, Kevin
2022-07-01 7:53 ` [PATCH v3 00/11] iommu/vt-d: Optimize the use of locks Tian, Kevin
2022-07-01 7:53 ` Tian, Kevin
2022-07-01 8:12 ` Baolu Lu
2022-07-01 8:12 ` Baolu Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220629074725.2331441-1-baolu.lu@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=iommu@lists.linux-foundation.org \
--cc=iommu@lists.linux.dev \
--cc=jacob.jun.pan@intel.com \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.