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.
next prev parent 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).