From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Robert Richter <rric@kernel.org>
Cc: Dejin Zheng <zhengdejin5@gmail.com>,
corbet@lwn.net, jarkko.nikula@linux.intel.com,
mika.westerberg@linux.intel.com, bhelgaas@google.com,
wsa@kernel.org, linux-doc@vger.kernel.org,
linux-i2c@vger.kernel.org, linux-pci@vger.kernel.org,
kw@linux.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 0/4] Introduce pcim_alloc_irq_vectors()
Date: Fri, 19 Feb 2021 15:51:59 +0200 [thread overview]
Message-ID: <YC/CfxHM2RMZLejc@smile.fi.intel.com> (raw)
In-Reply-To: <YC+euDIrR5apkAqp@rric.localdomain>
On Fri, Feb 19, 2021 at 12:19:20PM +0100, Robert Richter wrote:
> On 18.02.21 16:01:56, Andy Shevchenko wrote:
> > The problem this series solves is an imbalanced API.
>
> This (added) API is bloated and incomplete. It adds functions without
> benefit, the only is to have a single pcim alloc function in addition
> to the pairing of alloc/free functions. I agree, it is hard to detect
> which parts are released if pcim_enable_device() is used.
No, this API solves the above mentioned problem (what makes so special about
pci_free_irq_vectors() that it should be present?) Why do we have pcim_iomap*()
variations and not the rest?
The PCIm API is horrible in the sense of being used properly. Yes, I know how
it works and I was trying to help with that, the problem is that people didn't
and don't get how it works and stream of patches like the ones that add
pci_free_irq_vectors() are coming.
> Additional, you need to go through pcim_release() to add other
> pcim_*() functions for everything else that is released there.
> Otherwise that new API is still incomplete.
True. And here is the part that most annoying right now.
Btw, I never saw you fought against these small clean ups here and there, that
*add* explicit calls to freeing resources. Also I haven't noticed anybody
trying to correct documentation.
This series is a step to a right direction.
> But this adds another
> bunch of useless functions.
Wrong. This is quite useful to have balanced APIs. How many patches you have
seen related to the PCIm imbalanced APIs? I could tell from my experience, I
saw plenty and each time I'm trying to explain how it works people don't easily
get.
> > Christoph IIRC was clear that if we want to use PCI IRQ allocation API the
> > caller must know what's going on. Hiding this behind the scenes is not good.
> > And this series unhides that.
>
> IMO, this is more a documentation issue. pcim_enable_device() must be
> better documented and list all enable/alloc functions that are going
> to be released out of the box later.
>
> Even better, make sure everything is managed and thus all of a pci_dev
> is released, no matter how it was setup (this could even already be
> the case).
>
> In addition you could implement a static code checker.
It's open source, why should we do that and not what we are proposing here?
Propose your ideas and we will discuss the patches, right?
> > Also, you may go and clean up all pci_free_irq_vectors() when
> > pcim_enable_device() is called, but I guess you will get painful process and
> > rejection in a pile of cases.
>
> Why should something be rejected if it is not correctly freed?
Why it's not correctly freed? The function is idempotent.
> Even if pci_free_irq_vectors() is called, pcim_release() will not
> complain if it was already freed before. So using
> pci_free_irq_vectors() is ok even in conjunction with
> pcim_enable_device().
No, it's not okay from API namespace / semantics perspective.
> In the end, let's make sure everything is released in pci_dev if it is
> managed and document this.
Feel free to submit a patch!
--
With Best Regards,
Andy Shevchenko
prev parent reply other threads:[~2021-02-19 13:54 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-16 16:02 [PATCH v3 0/4] Introduce pcim_alloc_irq_vectors() Dejin Zheng
2021-02-16 16:02 ` [PATCH v3 1/4] PCI: " Dejin Zheng
2021-02-16 17:53 ` Krzysztof Wilczyński
2021-02-16 16:02 ` [PATCH v3 2/4] Documentation: devres: Add pcim_alloc_irq_vectors() Dejin Zheng
2021-02-16 17:10 ` Krzysztof Wilczyński
2021-02-17 10:50 ` Dejin Zheng
2021-02-17 13:44 ` Andy Shevchenko
2021-02-16 16:02 ` [PATCH v3 3/4] i2c: designware: Use the correct name of device-managed function Dejin Zheng
2021-02-16 17:46 ` Krzysztof Wilczyński
2021-02-17 11:40 ` Dejin Zheng
2021-02-17 13:47 ` Andy Shevchenko
2021-02-18 14:15 ` Dejin Zheng
2021-02-16 16:02 ` [PATCH v3 4/4] i2c: thunderx: " Dejin Zheng
2021-02-16 17:49 ` Krzysztof Wilczyński
2021-02-18 9:36 ` [PATCH v3 0/4] Introduce pcim_alloc_irq_vectors() Robert Richter
2021-02-18 14:01 ` Andy Shevchenko
2021-02-19 11:19 ` Robert Richter
2021-02-19 13:51 ` Andy Shevchenko [this message]
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=YC/CfxHM2RMZLejc@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=corbet@lwn.net \
--cc=jarkko.nikula@linux.intel.com \
--cc=kw@linux.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rric@kernel.org \
--cc=wsa@kernel.org \
--cc=zhengdejin5@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.