Re: [PATCH 0/5] Share sva domains with all devices bound to a mm

From: Tina Zhang
Date: Thu Aug 10 2023 - 21:07:21 EST


Hi,

On 8/10/23 15:49, Tian, Kevin wrote:
From: Zhang, Tina <tina.zhang@xxxxxxxxx>
Sent: Thursday, August 10, 2023 9:32 AM

Hi,

On 8/9/23 17:41, Tian, Kevin wrote:
From: Zhang, Tina <tina.zhang@xxxxxxxxx>
Sent: Tuesday, August 8, 2023 3:50 PM

A sva domain's lifetime begins with binding a device to a mm and ends
by releasing all the bound devices from that sva domain. Technically,
there could be more than one sva domain identified by the mm PASID for
the use of bound devices issuing DMA transactions.

Could you elaborate it with some concrete examples which motivate
this change?
The motivation is to remove the superfluous IOTLB invalidation in
current VT-d driver.

Currently, in VT-d driver, due to lacking shared sva domain info, in
intel_flush_svm_range(), both iotlb and dev-tlb invalidation operations
are performed per-device. However, difference devices could be behind
one IOMMU (e.g., four devices are behind one IOMMU) and invoking iotlb
per-device gives us more iotlb invalidation than necessary (4 iotlb
invalidation instead of 1). This issue may give more performance impact
when in a virtual machine guest, as currently we have one virtual VT-d
for in front of those virtual devices.


This patch fixes this issue by attaching shared sva domain information
to mm, so that it can be utilized in the mm_notifier_ops callbacks.


that is one of the motivations. e.g. another one as Jason suggested
is to cleanup to decouple the common sva logic from enqcmd. Both
should be mentioned in next version cover letter.
Right.

Regards,
-Tina