From: Nicolin Chen <nicoleotsuka@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
krzk@kernel.org, jonathanh@nvidia.com,
Thierry Reding <thierry.reding@gmail.com>,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH v3 2/3] iommu/tegra-smmu: Rework .probe_device and .attach_dev
Date: Thu, 1 Oct 2020 19:54:35 -0700 [thread overview]
Message-ID: <20201002025434.GA9394@Asurada-Nvidia> (raw)
In-Reply-To: <1b621b9d-cdc3-c7aa-2fa2-d728ae2bbc5d@gmail.com>
On Fri, Oct 02, 2020 at 04:55:34AM +0300, Dmitry Osipenko wrote:
> 02.10.2020 04:07, Nicolin Chen пишет:
> > On Thu, Oct 01, 2020 at 11:33:38PM +0300, Dmitry Osipenko wrote:
> >>>>> If we can't come to an agreement on globalizing mc pointer, would
> >>>>> it be possible to pass tegra_mc_driver through tegra_smmu_probe()
> >>>>> so we can continue to use driver_find_device_by_fwnode() as v1?
> >>>>>
> >>>>> v1: https://lkml.org/lkml/2020/9/26/68
> >>>>
> >>>> tegra_smmu_probe() already takes a struct tegra_mc *. Did you mean
> >>>> tegra_smmu_probe_device()? I don't think we can do that because it isn't
> >>>
> >>> I was saying to have a global parent_driver pointer: similar to
> >>> my v1, yet rather than "extern" the tegra_mc_driver, we pass it
> >>> through egra_smmu_probe() and store it in a static global value
> >>> so as to call tegra_smmu_get_by_fwnode() in ->probe_device().
> >>>
> >>> Though I agree that creating a global device pointer (mc) might
> >>> be controversial, yet having a global parent_driver pointer may
> >>> not be against the rule, considering that it is common in iommu
> >>> drivers to call driver_find_device_by_fwnode in probe_device().
> >>
> >> You don't need the global pointer if you have SMMU OF node.
> >>
> >> You could also get driver pointer from mc->dev->driver.
> >>
> >> But I don't think you need to do this at all. The probe_device() could
> >> be invoked only for the tegra_smmu_ops and then seems you could use
> >> dev_iommu_priv_set() in tegra_smmu_of_xlate(), like sun50i-iommu driver
> >> does.
> >
> > Getting iommu device pointer using driver_find_device_by_fwnode()
> > is a common practice in ->probe_device() of other iommu drivers.
>
> Please give me a full list of the IOMMU drivers which use this method.
>
> > But this requires a device_driver pointer that tegra-smmu doesn't
> > have. So passing tegra_mc_driver through tegra_smmu_probe() will
> > address it.
> >
>
> If you're borrowing code and ideas from other drivers, then at least
> please borrow them from a modern good-looking drivers. And I already
> pointed out that following cargo cult is not always a good idea.
>
> ARM-SMMU isn't a modern driver and it has legacy code. You shouldn't
> copy it blindly. The sun50i-iommu driver was added half year ago, you
> may use it as a reference.
I took a closer look at sun50i-iommu driver. It's a good idea.
I think I can come up with a cleaner one. Will send v4.
Thanks for the advice.
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Nicolin Chen <nicoleotsuka@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>,
joro@8bytes.org, krzk@kernel.org, vdumpa@nvidia.com,
jonathanh@nvidia.com, linux-tegra@vger.kernel.org,
iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/3] iommu/tegra-smmu: Rework .probe_device and .attach_dev
Date: Thu, 1 Oct 2020 19:54:35 -0700 [thread overview]
Message-ID: <20201002025434.GA9394@Asurada-Nvidia> (raw)
In-Reply-To: <1b621b9d-cdc3-c7aa-2fa2-d728ae2bbc5d@gmail.com>
On Fri, Oct 02, 2020 at 04:55:34AM +0300, Dmitry Osipenko wrote:
> 02.10.2020 04:07, Nicolin Chen пишет:
> > On Thu, Oct 01, 2020 at 11:33:38PM +0300, Dmitry Osipenko wrote:
> >>>>> If we can't come to an agreement on globalizing mc pointer, would
> >>>>> it be possible to pass tegra_mc_driver through tegra_smmu_probe()
> >>>>> so we can continue to use driver_find_device_by_fwnode() as v1?
> >>>>>
> >>>>> v1: https://lkml.org/lkml/2020/9/26/68
> >>>>
> >>>> tegra_smmu_probe() already takes a struct tegra_mc *. Did you mean
> >>>> tegra_smmu_probe_device()? I don't think we can do that because it isn't
> >>>
> >>> I was saying to have a global parent_driver pointer: similar to
> >>> my v1, yet rather than "extern" the tegra_mc_driver, we pass it
> >>> through egra_smmu_probe() and store it in a static global value
> >>> so as to call tegra_smmu_get_by_fwnode() in ->probe_device().
> >>>
> >>> Though I agree that creating a global device pointer (mc) might
> >>> be controversial, yet having a global parent_driver pointer may
> >>> not be against the rule, considering that it is common in iommu
> >>> drivers to call driver_find_device_by_fwnode in probe_device().
> >>
> >> You don't need the global pointer if you have SMMU OF node.
> >>
> >> You could also get driver pointer from mc->dev->driver.
> >>
> >> But I don't think you need to do this at all. The probe_device() could
> >> be invoked only for the tegra_smmu_ops and then seems you could use
> >> dev_iommu_priv_set() in tegra_smmu_of_xlate(), like sun50i-iommu driver
> >> does.
> >
> > Getting iommu device pointer using driver_find_device_by_fwnode()
> > is a common practice in ->probe_device() of other iommu drivers.
>
> Please give me a full list of the IOMMU drivers which use this method.
>
> > But this requires a device_driver pointer that tegra-smmu doesn't
> > have. So passing tegra_mc_driver through tegra_smmu_probe() will
> > address it.
> >
>
> If you're borrowing code and ideas from other drivers, then at least
> please borrow them from a modern good-looking drivers. And I already
> pointed out that following cargo cult is not always a good idea.
>
> ARM-SMMU isn't a modern driver and it has legacy code. You shouldn't
> copy it blindly. The sun50i-iommu driver was added half year ago, you
> may use it as a reference.
I took a closer look at sun50i-iommu driver. It's a good idea.
I think I can come up with a cleaner one. Will send v4.
Thanks for the advice.
next prev parent reply other threads:[~2020-10-02 3:00 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-30 8:42 [PATCH v3 0/3] iommu/tegra-smmu: Add PCI support Nicolin Chen
2020-09-30 8:42 ` Nicolin Chen
2020-09-30 8:42 ` [PATCH v3 1/3] memory: tegra: Add devm_tegra_get_memory_controller() Nicolin Chen
2020-09-30 8:42 ` Nicolin Chen
2020-09-30 9:07 ` Krzysztof Kozlowski
2020-09-30 9:07 ` Krzysztof Kozlowski
2020-09-30 9:41 ` Nicolin Chen
2020-09-30 9:41 ` Nicolin Chen
2020-09-30 10:27 ` Krzysztof Kozlowski
2020-09-30 10:27 ` Krzysztof Kozlowski
2020-09-30 14:41 ` Dmitry Osipenko
2020-09-30 14:41 ` Dmitry Osipenko
2020-09-30 14:45 ` Krzysztof Kozlowski
2020-09-30 14:45 ` Krzysztof Kozlowski
2020-09-30 15:22 ` Dmitry Osipenko
2020-09-30 15:22 ` Dmitry Osipenko
2020-09-30 15:23 ` Thierry Reding
2020-09-30 15:23 ` Thierry Reding
2020-09-30 15:27 ` Dmitry Osipenko
2020-09-30 15:27 ` Dmitry Osipenko
2020-09-30 15:53 ` Dmitry Osipenko
2020-09-30 15:53 ` Dmitry Osipenko
2020-09-30 16:03 ` Thierry Reding
2020-09-30 16:03 ` Thierry Reding
2020-09-30 16:06 ` Dmitry Osipenko
2020-09-30 16:06 ` Dmitry Osipenko
2020-09-30 16:15 ` Thierry Reding
2020-09-30 16:15 ` Thierry Reding
2020-09-30 16:26 ` Dmitry Osipenko
2020-09-30 16:26 ` Dmitry Osipenko
2020-09-30 16:38 ` Thierry Reding
2020-09-30 16:38 ` Thierry Reding
2020-09-30 17:32 ` Dmitry Osipenko
2020-09-30 17:32 ` Dmitry Osipenko
2020-09-30 8:42 ` [PATCH v3 2/3] iommu/tegra-smmu: Rework .probe_device and .attach_dev Nicolin Chen
2020-09-30 8:42 ` Nicolin Chen
2020-09-30 9:21 ` Krzysztof Kozlowski
2020-09-30 9:21 ` Krzysztof Kozlowski
2020-09-30 9:40 ` Nicolin Chen
2020-09-30 9:40 ` Nicolin Chen
2020-09-30 10:19 ` Krzysztof Kozlowski
2020-09-30 10:19 ` Krzysztof Kozlowski
2020-09-30 14:41 ` Dmitry Osipenko
2020-09-30 14:41 ` Dmitry Osipenko
2020-09-30 15:09 ` Dmitry Osipenko
2020-09-30 15:09 ` Dmitry Osipenko
2020-09-30 20:51 ` Nicolin Chen
2020-09-30 20:51 ` Nicolin Chen
2020-09-30 15:31 ` Thierry Reding
2020-09-30 15:31 ` Thierry Reding
2020-09-30 15:36 ` Dmitry Osipenko
2020-09-30 15:36 ` Dmitry Osipenko
2020-09-30 16:06 ` Thierry Reding
2020-09-30 16:06 ` Thierry Reding
2020-09-30 16:25 ` Dmitry Osipenko
2020-09-30 16:25 ` Dmitry Osipenko
2020-09-30 16:47 ` Thierry Reding
2020-09-30 16:47 ` Thierry Reding
2020-10-01 2:11 ` Dmitry Osipenko
2020-10-01 2:11 ` Dmitry Osipenko
2020-10-01 7:58 ` Thierry Reding
2020-10-01 7:58 ` Thierry Reding
2020-10-01 19:04 ` Dmitry Osipenko
2020-10-01 19:04 ` Dmitry Osipenko
2020-10-05 9:16 ` Thierry Reding
2020-10-05 9:16 ` Thierry Reding
2020-10-05 9:38 ` Dmitry Osipenko
2020-10-05 9:38 ` Dmitry Osipenko
2020-10-05 10:27 ` Thierry Reding
2020-10-05 10:27 ` Thierry Reding
2020-09-30 16:10 ` Thierry Reding
2020-09-30 16:10 ` Thierry Reding
2020-09-30 16:29 ` Dmitry Osipenko
2020-09-30 16:29 ` Dmitry Osipenko
2020-10-01 7:59 ` Thierry Reding
2020-10-01 7:59 ` Thierry Reding
2020-09-30 20:36 ` Nicolin Chen
2020-09-30 20:36 ` Nicolin Chen
2020-09-30 21:24 ` Dmitry Osipenko
2020-09-30 21:24 ` Dmitry Osipenko
2020-09-30 21:32 ` Nicolin Chen
2020-09-30 21:32 ` Nicolin Chen
2020-09-30 21:56 ` Dmitry Osipenko
2020-09-30 21:56 ` Dmitry Osipenko
2020-10-01 1:26 ` Nicolin Chen
2020-10-01 1:26 ` Nicolin Chen
2020-10-01 2:06 ` Dmitry Osipenko
2020-10-01 2:06 ` Dmitry Osipenko
2020-10-01 2:48 ` Nicolin Chen
2020-10-01 2:48 ` Nicolin Chen
2020-10-01 4:04 ` Dmitry Osipenko
2020-10-01 4:04 ` Dmitry Osipenko
2020-10-01 10:23 ` Thierry Reding
2020-10-01 10:23 ` Thierry Reding
2020-10-01 11:04 ` Nicolin Chen
2020-10-01 11:04 ` Nicolin Chen
2020-10-01 20:33 ` Dmitry Osipenko
2020-10-01 20:33 ` Dmitry Osipenko
2020-10-02 1:07 ` Nicolin Chen
2020-10-02 1:07 ` Nicolin Chen
2020-10-02 1:55 ` Dmitry Osipenko
2020-10-02 1:55 ` Dmitry Osipenko
2020-10-02 2:54 ` Nicolin Chen [this message]
2020-10-02 2:54 ` Nicolin Chen
2020-10-05 7:24 ` Thierry Reding
2020-10-05 7:24 ` Thierry Reding
2020-10-05 7:13 ` Thierry Reding
2020-10-05 7:13 ` Thierry Reding
2020-10-05 8:14 ` Dmitry Osipenko
2020-10-05 8:14 ` Dmitry Osipenko
2020-10-05 9:31 ` Thierry Reding
2020-10-05 9:31 ` Thierry Reding
2020-10-01 9:54 ` Thierry Reding
2020-10-01 9:54 ` Thierry Reding
2020-10-01 9:51 ` Thierry Reding
2020-10-01 9:51 ` Thierry Reding
2020-10-01 10:33 ` Nicolin Chen
2020-10-01 10:33 ` Nicolin Chen
2020-10-01 10:42 ` Thierry Reding
2020-10-01 10:42 ` Thierry Reding
2020-10-01 9:47 ` Thierry Reding
2020-10-01 9:47 ` Thierry Reding
2020-10-01 10:46 ` Thierry Reding
2020-10-01 10:46 ` Thierry Reding
2020-10-02 1:29 ` Nicolin Chen
2020-10-02 1:29 ` Nicolin Chen
2020-09-30 8:42 ` [PATCH v3 3/3] iommu/tegra-smmu: Add PCI support Nicolin Chen
2020-09-30 8:42 ` Nicolin Chen
2020-09-30 14:53 ` Dmitry Osipenko
2020-09-30 14:53 ` Dmitry Osipenko
2020-09-30 20:03 ` Nicolin Chen
2020-09-30 20:03 ` Nicolin Chen
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=20201002025434.GA9394@Asurada-Nvidia \
--to=nicoleotsuka@gmail.com \
--cc=digetx@gmail.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jonathanh@nvidia.com \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=thierry.reding@gmail.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 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.