devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Osipenko <digetx@gmail.com>
To: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
Cc: Rob Herring <robh+dt@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Peter Chen <Peter.Chen@nxp.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Felipe Balbi <balbi@kernel.org>,
	devicetree@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 13/16] usb: phy: tegra: Keep CPU interrupts enabled
Date: Thu, 2 Jan 2020 17:40:48 +0300	[thread overview]
Message-ID: <ad1a2b09-12b0-112e-1556-6faf6a01c330@gmail.com> (raw)
In-Reply-To: <20191230203648.GA24135@qmqm.qmqm.pl>

30.12.2019 23:36, Michał Mirosław пишет:
> On Sat, Dec 28, 2019 at 11:33:55PM +0300, Dmitry Osipenko wrote:
>> There is no good reason for disabling of CPU interrupts in order to
>> protect the utmip_pad_count modification.
> 
> Since there are sleeping functions called outside of the locked sections,
> this should be a mutex instead. OTOH if the spin_lock is to protect register
> write against IRQ handler, then the patch is wrong.
> 
> [...]
>> -	spin_unlock_irqrestore(&utmip_pad_lock, flags);
>> +	spin_unlock(&utmip_pad_lock);
>>  
>>  	clk_disable_unprepare(phy->pad_clk);

Hello Michał,

This spinlock isn't for protecting from the IRQ handler, it's used
solely to protect modification of the registers that are shared by all
USB controllers.

It's possible to use mutex instead of spinlock here, but it doesn't
bring any benefits because mutex is more useful when protected code
could block for a long time due to sleep or whatever, while spinlock is
much more efficient when protected code doesn't sleep and takes no more
than dozens microseconds to execute (which is the case here).

In this particular case of the Tegra USB PHY driver, the chance of
getting a block on taking the utmip_pad_lock is zero unless USB
controller drivers will start to use asynchronous probing. So this patch
does a very minor clean-up change and nothing more.

  reply	other threads:[~2020-01-02 14:40 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-28 20:33 [PATCH v3 00/16] NVIDIA Tegra USB2 drivers clean up Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 01/16] dt-binding: usb: ci-hdrc-usb2: Document NVIDIA Tegra support Dmitry Osipenko
2020-01-04  0:33   ` Rob Herring
2020-01-04  2:04     ` Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 02/16] usb: phy: tegra: Hook up init/shutdown callbacks Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 03/16] usb: phy: tegra: Perform general clean up of the code Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 04/16] usb: phy: tegra: Use relaxed versions of readl/writel Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 05/16] usb: phy: tegra: Use generic stub for a missing VBUS regulator Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 06/16] usb: ulpi: Add resource-managed variant of otg_ulpi_create() Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 07/16] usb: phy: tegra: Use devm_otg_ulpi_create() Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 08/16] usb: phy: tegra: Use u32 for hardware register variables Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 09/16] usb: phy: tegra: Assert reset on ULPI close instead of deasserting it Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 10/16] usb: phy: tegra: Use device-tree notion of reset-GPIO's active-state Dmitry Osipenko
2020-01-03  7:58   ` Michał Mirosław
2020-01-03 23:53     ` Dmitry Osipenko
2020-01-05  0:58       ` Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 11/16] usb: phy: tegra: Disable VBUS regulator on tegra_usb_phy_init failure Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 12/16] usb: phy: tegra: Move utmip_pad_count checking under lock Dmitry Osipenko
2019-12-28 20:33 ` [PATCH v3 13/16] usb: phy: tegra: Keep CPU interrupts enabled Dmitry Osipenko
2019-12-30 20:36   ` Michał Mirosław
2020-01-02 14:40     ` Dmitry Osipenko [this message]
2020-01-03  7:41       ` Michał Mirosław
2019-12-28 20:33 ` [PATCH v3 14/16] usb: chipidea: tegra: Stop managing PHY's power Dmitry Osipenko
2019-12-30  2:24   ` Peter Chen
2019-12-28 20:33 ` [PATCH v3 15/16] usb: chipidea: tegra: Add USB_TEGRA_PHY to driver's dependencies Dmitry Osipenko
2019-12-30  2:25   ` Peter Chen
2019-12-28 20:33 ` [PATCH v3 16/16] usb: host: ehci-tegra: Remove unused fields from tegra_ehci_hcd Dmitry Osipenko

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=ad1a2b09-12b0-112e-1556-6faf6a01c330@gmail.com \
    --to=digetx@gmail.com \
    --cc=Peter.Chen@nxp.com \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jonathanh@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=robh+dt@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 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).