devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: niliqiang <ni_liqiang@126.com>, jean-philippe@linaro.org
Cc: Jonathan.Cameron@huawei.com, baolu.lu@linux.intel.com,
	devicetree@vger.kernel.org, eric.auger@redhat.com,
	guohanjun@huawei.com, iommu@lists.linux-foundation.org,
	jacob.jun.pan@linux.intel.com, joro@8bytes.org,
	kevin.tian@intel.com, lenb@kernel.org,
	linux-accelerators@lists.ozlabs.org, linux-acpi@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, lorenzo.pieralisi@arm.com,
	rjw@rjwysocki.net, robh+dt@kernel.org,
	shameerali.kolothum.thodi@huawei.com, sudeep.holla@arm.com,
	vivek.gautam@arm.com, wangzhou1@hisilicon.com, will@kernel.org,
	zhangfei.gao@linaro.org, zhukeqian1@huawei.com,
	ni.liqiang@zte.com.cn, li.zhichao@zte.com.cn
Subject: Re: [PATCH v14 07/10] iommu/arm-smmu-v3: Maintain a SID->device structure
Date: Fri, 2 Aug 2024 13:01:44 +0100	[thread overview]
Message-ID: <f43e0424-c58a-4895-a2e7-2ec403ea3519@arm.com> (raw)
In-Reply-To: <20240801152922.5605-1-ni_liqiang@126.com>

On 01/08/2024 4:29 pm, niliqiang wrote:
>> +static int arm_smmu_insert_master(struct arm_smmu_device *smmu,
>> +				  struct arm_smmu_master *master)
>> +{
>> +	int i;
>> +	int ret = 0;
>> +	struct arm_smmu_stream *new_stream, *cur_stream;
>> +	struct rb_node **new_node, *parent_node = NULL;
>> +	struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(master->dev);
>> +
>> +	master->streams = kcalloc(fwspec->num_ids, sizeof(*master->streams),
>> +				  GFP_KERNEL);
>> +	if (!master->streams)
>> +		return -ENOMEM;
>> +	master->num_streams = fwspec->num_ids;
>> +
>> +	mutex_lock(&smmu->streams_mutex);
>> +	for (i = 0; i < fwspec->num_ids; i++) {
> 
> Hi all experts,
> 
> Recently, I have been debugging the smmuv3 code in the Linux kernel,
> and I have some questions regarding the `mutex_lock(&smmu->streams_mutex)`
> statement in the `arm_smmu_insert_master` function.
> I would like to understand why streams_mutex is being locked here.

Because the "streams" rbtree is being modified, so it would be pretty 
bad if another thread tried to walk or modify it concurrently. I'd hope 
that was obvious from the code everywhere "streams" and "streams_mutex" 
are referenced.

> Is it to handle different types of PF under a single EP, each with its own device ID?

It is expected that a single SMMU instance is highly likely to have more 
than one device behind it, and therefore more than one StreamID to keep 
track of.

Thanks,
Robin.

  reply	other threads:[~2024-08-02 12:01 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-01 15:47 [PATCH v14 00/10] iommu: I/O page faults for SMMUv3 Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 01/10] iommu: Fix comment for struct iommu_fwspec Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 02/10] iommu/arm-smmu-v3: Use device properties for pasid-num-bits Jean-Philippe Brucker
2021-04-02  0:35   ` Hanjun Guo
2021-04-01 15:47 ` [PATCH v14 03/10] iommu: Separate IOMMU_DEV_FEAT_IOPF from IOMMU_DEV_FEAT_SVA Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 04/10] iommu/vt-d: Support IOMMU_DEV_FEAT_IOPF Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 05/10] uacce: Enable IOMMU_DEV_FEAT_IOPF Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 06/10] iommu: Add a page fault handler Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 07/10] iommu/arm-smmu-v3: Maintain a SID->device structure Jean-Philippe Brucker
2021-04-01 17:07   ` Will Deacon
2024-08-01 15:29   ` niliqiang
2024-08-02 12:01     ` Robin Murphy [this message]
2024-08-06 15:31   ` niliqiang
2021-04-01 15:47 ` [PATCH v14 08/10] dt-bindings: document stall property for IOMMU masters Jean-Philippe Brucker
2021-04-01 15:47 ` [PATCH v14 09/10] ACPI/IORT: Enable stall support for platform devices Jean-Philippe Brucker
2021-04-02  0:45   ` Hanjun Guo
2021-04-06 15:29   ` Lorenzo Pieralisi
2021-04-01 15:47 ` [PATCH v14 10/10] iommu/arm-smmu-v3: Add " Jean-Philippe Brucker
2021-04-01 17:11   ` Will Deacon
2021-04-02  1:34     ` Zhangfei Gao
2021-04-02  1:45     ` Zhou Wang
2021-04-01 17:15 ` [PATCH v14 00/10] iommu: I/O page faults for SMMUv3 Will Deacon
2021-04-06  8:01   ` Jean-Philippe Brucker
2021-04-07  8:55 ` Joerg Roedel

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=f43e0424-c58a-4895-a2e7-2ec403ea3519@arm.com \
    --to=robin.murphy@arm.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=eric.auger@redhat.com \
    --cc=guohanjun@huawei.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=jean-philippe@linaro.org \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=lenb@kernel.org \
    --cc=li.zhichao@zte.com.cn \
    --cc=linux-accelerators@lists.ozlabs.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=ni.liqiang@zte.com.cn \
    --cc=ni_liqiang@126.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=sudeep.holla@arm.com \
    --cc=vivek.gautam@arm.com \
    --cc=wangzhou1@hisilicon.com \
    --cc=will@kernel.org \
    --cc=zhangfei.gao@linaro.org \
    --cc=zhukeqian1@huawei.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).