From: Robin Murphy <robin.murphy@arm.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: acpica-devel@lists.linux.dev,
"Alyssa Rosenzweig" <alyssa@rosenzweig.io>,
"Albert Ou" <aou@eecs.berkeley.edu>,
asahi@lists.linux.dev,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Dexuan Cui" <decui@microsoft.com>,
devicetree@vger.kernel.org,
"David Woodhouse" <dwmw2@infradead.org>,
"Frank Rowand" <frowand.list@gmail.com>,
"Hanjun Guo" <guohanjun@huawei.com>,
"Haiyang Zhang" <haiyangz@microsoft.com>,
iommu@lists.linux.dev,
"Jean-Philippe Brucker" <jean-philippe@linaro.org>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Joerg Roedel" <joro@8bytes.org>,
"K. Y. Srinivasan" <kys@microsoft.com>,
"Len Brown" <lenb@kernel.org>,
linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-hyperv@vger.kernel.org, linux-mips@vger.kernel.org,
linux-riscv@lists.infradead.org,
linux-snps-arc@lists.infradead.org, linux-tegra@vger.kernel.org,
"Russell King" <linux@armlinux.org.uk>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Hector Martin" <marcan@marcan.st>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
patches@lists.linux.dev,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Robert Moore" <robert.moore@intel.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Sudeep Holla" <sudeep.holla@arm.com>,
"Suravee Suthikulpanit" <suravee.suthikulpanit@amd.com>,
"Sven Peter" <sven@svenpeter.dev>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
"Krishna Reddy" <vdumpa@nvidia.com>,
"Vineet Gupta" <vgupta@kernel.org>,
virtualization@lists.linux.dev, "Wei Liu" <wei.liu@kernel.org>,
"Will Deacon" <will@kernel.org>,
"André Draszik" <andre.draszik@linaro.org>,
"Lu Baolu" <baolu.lu@linux.intel.com>,
"Christoph Hellwig" <hch@lst.de>,
"Jerry Snitselaar" <jsnitsel@redhat.com>,
"Moritz Fischer" <mdf@kernel.org>,
"Zhenhua Huang" <quic_zhenhuah@quicinc.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
"Rob Herring" <robh@kernel.org>
Subject: Re: [PATCH v2 00/17] Solve iommu probe races around iommu_fwspec
Date: Wed, 15 Nov 2023 20:23:54 +0000 [thread overview]
Message-ID: <6442d24b-6352-46e9-89e0-72d4a493f77c@arm.com> (raw)
In-Reply-To: <ZVTlYqnnHQUKG6T8@nvidia.com>
On 2023-11-15 3:36 pm, Jason Gunthorpe wrote:
> On Wed, Nov 15, 2023 at 03:22:09PM +0000, Robin Murphy wrote:
>> On 2023-11-15 2:05 pm, Jason Gunthorpe wrote:
>>> [Several people have tested this now, so it is something that should sit in
>>> linux-next for a while]
>>
>> What's the aim here? This is obviously far, far too much for a
>> stable fix,
>
> To fix the locking bug and ugly abuse of dev->iommu?
Fixing the locking can be achieved by fixing the locking, as I have now
demonstrated.
> I wouldn't say that, it is up to the people who care about this to
> decide. It seems alot of people are hitting it so maybe it should be
> backported in some situations. Regardless, we should not continue to
> have this locking bug in v6.8.
>
>> but then it's also not the refactoring we want for the future either, since
>> it's moving in the wrong direction of cementing the fundamental brokenness
>> further in place rather than getting any closer to removing it.
>
> I haven't seen patches or an outline on what you have in mind though?
>
> In my view I would like to get rid of of_xlate(), at a minimum. It is
> a micro-optimization I don't think we need. I see a pretty
> straightforward path to get there from here.
Micro-optimisation!? OK, I think I have to say it. Please stop trying to
rewrite code you don't understand.
> Do you also want to get rid of iommu_fwspec, or at least thin it out?
> That seems reasonable too, I think that becomes within reach once
> of_xlate is gone.
>
> What do you see as "cemeting"?
Most of this series constitutes a giant sweeping redesign of a whole
bunch of internal machinery to permit it to be used concurrently, where
that concurrency should still not exist in the first place because the
thing that allows it to happen also causes other problems like groups
being broken. Once the real problem is fixed there will be no need for
any of this, and at worst some of it will then actually get in the way.
I feel like I've explained it many times already, but what needs to
happen is for the firmware parsing and of_xlate stage to be initiated by
__iommu_probe_device() itself. The first step is my bus ops series (if
I'm ever allowed to get it landed...) which gets to the state of
expecting to start from a fwspec. Then it's a case of shuffling around
what's currently in the bus_type dma_configure methods such that point
is where the fwspec is created as well, and the driver-probe-time work
is almost removed except for still deferring if a device is waiting for
its IOMMU instance (since that instance turning up and registering will
retrigger the rest itself). And there at last, a trivial lifecycle and
access pattern for dev->iommu (with the overlapping bits of iommu_fwspec
finally able to be squashed as well), and finally an end to 8 long and
unfortunate years of calling things in the wrong order in ways they were
never supposed to be.
Thanks,
Robin.
next prev parent reply other threads:[~2023-11-15 20:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-15 14:05 [PATCH v2 00/17] Solve iommu probe races around iommu_fwspec Jason Gunthorpe
2023-11-15 14:05 ` [PATCH v2 01/17] iommu: Remove struct iommu_ops *iommu from arch_setup_dma_ops() Jason Gunthorpe
2023-11-15 14:05 ` [PATCH v2 02/17] iommmu/of: Do not return struct iommu_ops from of_iommu_configure() Jason Gunthorpe
2023-11-15 14:05 ` [PATCH v2 03/17] iommu/of: Use -ENODEV consistently in of_iommu_configure() Jason Gunthorpe
2023-11-15 14:42 ` Jerry Snitselaar
2023-11-15 14:05 ` [PATCH v2 04/17] acpi: Do not return struct iommu_ops from acpi_iommu_configure_id() Jason Gunthorpe
2023-11-15 14:45 ` Jerry Snitselaar
2023-11-15 14:05 ` [PATCH v2 05/17] iommu: Make iommu_fwspec->ids a distinct allocation Jason Gunthorpe
2023-11-15 14:05 ` [PATCH v2 06/17] iommu: Add iommu_fwspec_alloc/dealloc() Jason Gunthorpe
2023-11-19 8:10 ` Hector Martin
2023-11-19 9:19 ` Hector Martin
2023-11-19 14:13 ` Jason Gunthorpe
2023-11-21 6:47 ` Hector Martin
2023-11-21 16:00 ` Jason Gunthorpe
2023-11-23 9:08 ` Hector Martin
2023-11-15 14:05 ` [PATCH v2 07/17] iommu: Add iommu_probe_device_fwspec() Jason Gunthorpe
2023-11-15 14:05 ` [PATCH v2 08/17] iommu/of: Do not use dev->iommu within of_iommu_configure() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 09/17] iommu: Add iommu_fwspec_append_ids() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 10/17] acpi: Do not use dev->iommu within acpi_iommu_configure() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 11/17] iommu: Hold iommu_probe_device_lock while calling ops->of_xlate Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 12/17] iommu: Make iommu_ops_from_fwnode() static Jason Gunthorpe
2023-11-15 15:09 ` Jerry Snitselaar
2023-11-16 14:36 ` Moritz Fischer
2023-11-15 14:06 ` [PATCH v2 13/17] iommu: Remove dev_iommu_fwspec_set() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 14/17] iommu: Remove pointless iommu_fwspec_free() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 15/17] iommu: Add ops->of_xlate_fwspec() Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 16/17] iommu: Mark dev_iommu_get() with lockdep Jason Gunthorpe
2023-11-15 14:06 ` [PATCH v2 17/17] iommu: Mark dev_iommu_priv_set() with a lockdep Jason Gunthorpe
2023-11-15 14:54 ` [PATCH v2 00/17] Solve iommu probe races around iommu_fwspec Jerry Snitselaar
2023-11-15 15:22 ` Robin Murphy
2023-11-15 15:36 ` Jason Gunthorpe
2023-11-15 20:23 ` Robin Murphy [this message]
2023-11-16 4:17 ` Jason Gunthorpe
2023-11-21 16:06 ` Robin Murphy
2023-11-21 17:55 ` Jason Gunthorpe
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=6442d24b-6352-46e9-89e0-72d4a493f77c@arm.com \
--to=robin.murphy@arm.com \
--cc=acpica-devel@lists.linux.dev \
--cc=alyssa@rosenzweig.io \
--cc=andre.draszik@linaro.org \
--cc=aou@eecs.berkeley.edu \
--cc=asahi@lists.linux.dev \
--cc=baolu.lu@linux.intel.com \
--cc=catalin.marinas@arm.com \
--cc=decui@microsoft.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=frowand.list@gmail.com \
--cc=guohanjun@huawei.com \
--cc=haiyangz@microsoft.com \
--cc=hch@lst.de \
--cc=iommu@lists.linux.dev \
--cc=jean-philippe@linaro.org \
--cc=jgg@nvidia.com \
--cc=jonathanh@nvidia.com \
--cc=joro@8bytes.org \
--cc=jsnitsel@redhat.com \
--cc=kys@microsoft.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=linux-tegra@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lpieralisi@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=marcan@marcan.st \
--cc=mdf@kernel.org \
--cc=palmer@dabbelt.com \
--cc=patches@lists.linux.dev \
--cc=paul.walmsley@sifive.com \
--cc=quic_zhenhuah@quicinc.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=robert.moore@intel.com \
--cc=robh+dt@kernel.org \
--cc=robh@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=sven@svenpeter.dev \
--cc=thierry.reding@gmail.com \
--cc=tsbogend@alpha.franken.de \
--cc=vdumpa@nvidia.com \
--cc=vgupta@kernel.org \
--cc=virtualization@lists.linux.dev \
--cc=wei.liu@kernel.org \
--cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox