All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Suman Anna <s-anna@ti.com>, Paul Walmsley <paul@pwsan.com>
Cc: Russell King <linux@arm.linux.org.uk>,
	Tony Lindgren <tony@atomide.com>,
	richardcochran@gmail.com, nsekhar@ti.com,
	linux-kernel@vger.kernel.org, Bjorn Helgaas <bhelgaas@google.com>,
	linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 3/3] pci: dra7xx: use pdata callbacks to perform reset
Date: Fri, 12 Feb 2016 12:25:49 +0530	[thread overview]
Message-ID: <56BD81F5.8090404@ti.com> (raw)
In-Reply-To: <56BCF256.8010903@ti.com>

Hi Suman,

On Friday 12 February 2016 02:13 AM, Suman Anna wrote:
> On 02/09/2016 11:38 PM, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Wednesday 10 February 2016 07:12 AM, Suman Anna wrote:
>>> Hi Paul,
>>>
>>> On 02/09/2016 01:36 PM, Paul Walmsley wrote:
>>>> Hi Suman 
>>>>
>>>> On Tue, 9 Feb 2016, Suman Anna wrote:
>>>>
>>>>> On 02/09/2016 02:49 AM, Paul Walmsley wrote:
>>>>>> On Mon, 8 Feb 2016, Suman Anna wrote:
>>>>>>> On 02/07/2016 08:48 PM, Paul Walmsley wrote:
>>>>>>>> On Tue, 2 Feb 2016, Kishon Vijay Abraham I wrote:
>>>>>>>>
>>>>>>>>> Paul, what do you think is the best way forward to perform reset?
>>>>>>>>
>>>>>>>> Many of the IP blocks with PRM hardreset lines are processor IP blocks. 
>>>>>>>> Those often need special reset handling to ensure that WFI/HLT-like 
>>>>>>>> instructions are executed after reset.  This special handling ensures that 
>>>>>>>> the IP blocks' bus initiator interfaces indicate that they are in standby 
>>>>>>>> to the PRCM - thus allowing power management for the rest of the chip to 
>>>>>>>> work correctly.
>>>>>>>>
>>>>>>>> But that doesn't seem to be the case with PCIe - and maybe others - 
>>>>>>>> possibly some of the MMUs?  
>>>>>>>
>>>>>>> Yeah, the sequencing between clocks and resets would still be the same
>>>>>>> for MMUs, so, adding the custom flags for MMUs is fine.
>>>>>>
>>>>>> I'm curious as to whether HWMOD_CUSTOM_HARDRESET is needed for the MMUs.  
>>>>>> We've stated that the main point of the custom hardreset code is to handle 
>>>>>> processors that need to be placed into WFI/HLT, but it doesn't seem like 
>>>>>> there would be an equivalent for MMUs.  Thoughts?
>>>>>
>>>>> The current OMAP IOMMU code already leverages the pdata ops for
>>>>> performing the resets, so not adding the flags would also require
>>>>> additional changes in the driver.
>>>>>
>>>>> Also, the reset lines controlling the MMUs actually also manage the
>>>>> reset for all the other sub-modules other than the processor cores
>>>>> within the sub-systems. We have currently different issues (see [1] for
>>>>> eg. around the IPU sub-system entering RET in between), so from a PM
>>>>> point of view, we do prefer to place the MMUs also in reset when we are
>>>>> runtime suspended.
>>>>
>>>> Should we reassert hardreset in _idle() for IP blocks that don't have 
>>>> HWMOD_CUSTOM_HARDRESET set on them?  Would that allow us to use this 
>>>> mechanism for the uncore hardreset lines, or are there other quirks?
>>>>
>>>> Also - would that address the potential issue that you mentioned with the 
>>>> PCIe block, or is that a different issue?
>>>
>>> Yeah, I think that would address the PCIe block issue in terms of reset
>>> state balancing between pm_runtime_get_sync() and pm_runtime_put()
>>> calls. Right now, they are unbalanced. The PCIe block is using these
>>> only in probe and remove, so it should work for that IP.
>>
>> As I mentioned before this would result in undesired behavior during
>> suspend/resume cycle in PCIe. (This should be okay for the current mainline
>> code but would break once we add suspend/resume support for PCIe).
> 
> Yeah, I was wondering if some peripheral would want only the clock to be
> controlled during _idle() and not reset. Even then for the PCIe case
> that you are talking about, going through a pm_runtime_get_sync(),
> pm_runtime_put_sync()/pm_runtime_put() deasserts the resets everytime

right. But it'll deassert a line which is already deasserted. So it actually
doesn't do a reset again.
> _enable() is called. Right now, the code block has ignored the return
> value from the _hardreset_deassert(), but if you check it and bail out,
> then your get_sync() would start failing from the second invocation.

hmm.. yeah.
> 
> Can you elaborate more on what kind of issues you will see on
> suspend/resume cycle with PCIe? Do note that _idle() gets called through

At this point there are other issues w.r.t suspend/resume in PCI-dra7xx but as
such reset of the controller is not desired during suspend/resume cycle and
it'll result in the register contents being reset (haven't tested it though).

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/3] pci: dra7xx: use pdata callbacks to perform reset
Date: Fri, 12 Feb 2016 12:25:49 +0530	[thread overview]
Message-ID: <56BD81F5.8090404@ti.com> (raw)
In-Reply-To: <56BCF256.8010903@ti.com>

Hi Suman,

On Friday 12 February 2016 02:13 AM, Suman Anna wrote:
> On 02/09/2016 11:38 PM, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Wednesday 10 February 2016 07:12 AM, Suman Anna wrote:
>>> Hi Paul,
>>>
>>> On 02/09/2016 01:36 PM, Paul Walmsley wrote:
>>>> Hi Suman 
>>>>
>>>> On Tue, 9 Feb 2016, Suman Anna wrote:
>>>>
>>>>> On 02/09/2016 02:49 AM, Paul Walmsley wrote:
>>>>>> On Mon, 8 Feb 2016, Suman Anna wrote:
>>>>>>> On 02/07/2016 08:48 PM, Paul Walmsley wrote:
>>>>>>>> On Tue, 2 Feb 2016, Kishon Vijay Abraham I wrote:
>>>>>>>>
>>>>>>>>> Paul, what do you think is the best way forward to perform reset?
>>>>>>>>
>>>>>>>> Many of the IP blocks with PRM hardreset lines are processor IP blocks. 
>>>>>>>> Those often need special reset handling to ensure that WFI/HLT-like 
>>>>>>>> instructions are executed after reset.  This special handling ensures that 
>>>>>>>> the IP blocks' bus initiator interfaces indicate that they are in standby 
>>>>>>>> to the PRCM - thus allowing power management for the rest of the chip to 
>>>>>>>> work correctly.
>>>>>>>>
>>>>>>>> But that doesn't seem to be the case with PCIe - and maybe others - 
>>>>>>>> possibly some of the MMUs?  
>>>>>>>
>>>>>>> Yeah, the sequencing between clocks and resets would still be the same
>>>>>>> for MMUs, so, adding the custom flags for MMUs is fine.
>>>>>>
>>>>>> I'm curious as to whether HWMOD_CUSTOM_HARDRESET is needed for the MMUs.  
>>>>>> We've stated that the main point of the custom hardreset code is to handle 
>>>>>> processors that need to be placed into WFI/HLT, but it doesn't seem like 
>>>>>> there would be an equivalent for MMUs.  Thoughts?
>>>>>
>>>>> The current OMAP IOMMU code already leverages the pdata ops for
>>>>> performing the resets, so not adding the flags would also require
>>>>> additional changes in the driver.
>>>>>
>>>>> Also, the reset lines controlling the MMUs actually also manage the
>>>>> reset for all the other sub-modules other than the processor cores
>>>>> within the sub-systems. We have currently different issues (see [1] for
>>>>> eg. around the IPU sub-system entering RET in between), so from a PM
>>>>> point of view, we do prefer to place the MMUs also in reset when we are
>>>>> runtime suspended.
>>>>
>>>> Should we reassert hardreset in _idle() for IP blocks that don't have 
>>>> HWMOD_CUSTOM_HARDRESET set on them?  Would that allow us to use this 
>>>> mechanism for the uncore hardreset lines, or are there other quirks?
>>>>
>>>> Also - would that address the potential issue that you mentioned with the 
>>>> PCIe block, or is that a different issue?
>>>
>>> Yeah, I think that would address the PCIe block issue in terms of reset
>>> state balancing between pm_runtime_get_sync() and pm_runtime_put()
>>> calls. Right now, they are unbalanced. The PCIe block is using these
>>> only in probe and remove, so it should work for that IP.
>>
>> As I mentioned before this would result in undesired behavior during
>> suspend/resume cycle in PCIe. (This should be okay for the current mainline
>> code but would break once we add suspend/resume support for PCIe).
> 
> Yeah, I was wondering if some peripheral would want only the clock to be
> controlled during _idle() and not reset. Even then for the PCIe case
> that you are talking about, going through a pm_runtime_get_sync(),
> pm_runtime_put_sync()/pm_runtime_put() deasserts the resets everytime

right. But it'll deassert a line which is already deasserted. So it actually
doesn't do a reset again.
> _enable() is called. Right now, the code block has ignored the return
> value from the _hardreset_deassert(), but if you check it and bail out,
> then your get_sync() would start failing from the second invocation.

hmm.. yeah.
> 
> Can you elaborate more on what kind of issues you will see on
> suspend/resume cycle with PCIe? Do note that _idle() gets called through

At this point there are other issues w.r.t suspend/resume in PCI-dra7xx but as
such reset of the controller is not desired during suspend/resume cycle and
it'll result in the register contents being reset (haven't tested it though).

Thanks
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Suman Anna <s-anna@ti.com>, Paul Walmsley <paul@pwsan.com>
Cc: Tony Lindgren <tony@atomide.com>,
	Bjorn Helgaas <bhelgaas@google.com>, <richardcochran@gmail.com>,
	Russell King <linux@arm.linux.org.uk>,
	<linux-omap@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <nsekhar@ti.com>
Subject: Re: [PATCH v3 3/3] pci: dra7xx: use pdata callbacks to perform reset
Date: Fri, 12 Feb 2016 12:25:49 +0530	[thread overview]
Message-ID: <56BD81F5.8090404@ti.com> (raw)
In-Reply-To: <56BCF256.8010903@ti.com>

Hi Suman,

On Friday 12 February 2016 02:13 AM, Suman Anna wrote:
> On 02/09/2016 11:38 PM, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On Wednesday 10 February 2016 07:12 AM, Suman Anna wrote:
>>> Hi Paul,
>>>
>>> On 02/09/2016 01:36 PM, Paul Walmsley wrote:
>>>> Hi Suman 
>>>>
>>>> On Tue, 9 Feb 2016, Suman Anna wrote:
>>>>
>>>>> On 02/09/2016 02:49 AM, Paul Walmsley wrote:
>>>>>> On Mon, 8 Feb 2016, Suman Anna wrote:
>>>>>>> On 02/07/2016 08:48 PM, Paul Walmsley wrote:
>>>>>>>> On Tue, 2 Feb 2016, Kishon Vijay Abraham I wrote:
>>>>>>>>
>>>>>>>>> Paul, what do you think is the best way forward to perform reset?
>>>>>>>>
>>>>>>>> Many of the IP blocks with PRM hardreset lines are processor IP blocks. 
>>>>>>>> Those often need special reset handling to ensure that WFI/HLT-like 
>>>>>>>> instructions are executed after reset.  This special handling ensures that 
>>>>>>>> the IP blocks' bus initiator interfaces indicate that they are in standby 
>>>>>>>> to the PRCM - thus allowing power management for the rest of the chip to 
>>>>>>>> work correctly.
>>>>>>>>
>>>>>>>> But that doesn't seem to be the case with PCIe - and maybe others - 
>>>>>>>> possibly some of the MMUs?  
>>>>>>>
>>>>>>> Yeah, the sequencing between clocks and resets would still be the same
>>>>>>> for MMUs, so, adding the custom flags for MMUs is fine.
>>>>>>
>>>>>> I'm curious as to whether HWMOD_CUSTOM_HARDRESET is needed for the MMUs.  
>>>>>> We've stated that the main point of the custom hardreset code is to handle 
>>>>>> processors that need to be placed into WFI/HLT, but it doesn't seem like 
>>>>>> there would be an equivalent for MMUs.  Thoughts?
>>>>>
>>>>> The current OMAP IOMMU code already leverages the pdata ops for
>>>>> performing the resets, so not adding the flags would also require
>>>>> additional changes in the driver.
>>>>>
>>>>> Also, the reset lines controlling the MMUs actually also manage the
>>>>> reset for all the other sub-modules other than the processor cores
>>>>> within the sub-systems. We have currently different issues (see [1] for
>>>>> eg. around the IPU sub-system entering RET in between), so from a PM
>>>>> point of view, we do prefer to place the MMUs also in reset when we are
>>>>> runtime suspended.
>>>>
>>>> Should we reassert hardreset in _idle() for IP blocks that don't have 
>>>> HWMOD_CUSTOM_HARDRESET set on them?  Would that allow us to use this 
>>>> mechanism for the uncore hardreset lines, or are there other quirks?
>>>>
>>>> Also - would that address the potential issue that you mentioned with the 
>>>> PCIe block, or is that a different issue?
>>>
>>> Yeah, I think that would address the PCIe block issue in terms of reset
>>> state balancing between pm_runtime_get_sync() and pm_runtime_put()
>>> calls. Right now, they are unbalanced. The PCIe block is using these
>>> only in probe and remove, so it should work for that IP.
>>
>> As I mentioned before this would result in undesired behavior during
>> suspend/resume cycle in PCIe. (This should be okay for the current mainline
>> code but would break once we add suspend/resume support for PCIe).
> 
> Yeah, I was wondering if some peripheral would want only the clock to be
> controlled during _idle() and not reset. Even then for the PCIe case
> that you are talking about, going through a pm_runtime_get_sync(),
> pm_runtime_put_sync()/pm_runtime_put() deasserts the resets everytime

right. But it'll deassert a line which is already deasserted. So it actually
doesn't do a reset again.
> _enable() is called. Right now, the code block has ignored the return
> value from the _hardreset_deassert(), but if you check it and bail out,
> then your get_sync() would start failing from the second invocation.

hmm.. yeah.
> 
> Can you elaborate more on what kind of issues you will see on
> suspend/resume cycle with PCIe? Do note that _idle() gets called through

At this point there are other issues w.r.t suspend/resume in PCI-dra7xx but as
such reset of the controller is not desired during suspend/resume cycle and
it'll result in the register contents being reset (haven't tested it though).

Thanks
Kishon

  reply	other threads:[~2016-02-12  6:55 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-14 14:11 [PATCH v3 0/3] dra7xx: get pcie working in mainline Kishon Vijay Abraham I
2016-01-14 14:11 ` Kishon Vijay Abraham I
2016-01-14 14:11 ` Kishon Vijay Abraham I
2016-01-14 14:11 ` [PATCH v3 1/3] ARM: DRA7: hwmod: Add reset data for PCIe Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-02-08  1:50   ` Paul Walmsley
2016-02-08  1:50     ` Paul Walmsley
2016-01-14 14:11 ` [PATCH v3 2/3] ARM: DRA7: add pdata-quirks to do reset of PCIe Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-01-15 19:19   ` Suman Anna
2016-01-15 19:19     ` Suman Anna
2016-01-15 19:19     ` Suman Anna
2016-01-15 19:22     ` Tony Lindgren
2016-01-15 19:22       ` Tony Lindgren
2016-01-15 19:41       ` Suman Anna
2016-01-15 19:41         ` Suman Anna
2016-01-15 19:41         ` Suman Anna
2016-01-18  9:12         ` Sekhar Nori
2016-01-18  9:12           ` Sekhar Nori
2016-01-18  9:12           ` Sekhar Nori
2016-01-27 17:23           ` Tony Lindgren
2016-01-27 17:23             ` Tony Lindgren
2016-01-14 14:11 ` [PATCH v3 3/3] pci: dra7xx: use pdata callbacks to perform reset Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-01-14 14:11   ` Kishon Vijay Abraham I
2016-01-27 17:31   ` Tony Lindgren
2016-01-27 17:31     ` Tony Lindgren
2016-01-27 18:16     ` Suman Anna
2016-01-27 18:16       ` Suman Anna
2016-01-27 18:16       ` Suman Anna
2016-01-27 18:56       ` Tony Lindgren
2016-01-27 18:56         ` Tony Lindgren
2016-01-27 23:16         ` Suman Anna
2016-01-27 23:16           ` Suman Anna
2016-01-27 23:16           ` Suman Anna
2016-01-28 18:31           ` Tony Lindgren
2016-01-28 18:31             ` Tony Lindgren
2016-01-28 21:15             ` Suman Anna
2016-01-28 21:15               ` Suman Anna
2016-01-28 21:15               ` Suman Anna
2016-02-02 10:40             ` Kishon Vijay Abraham I
2016-02-02 10:40               ` Kishon Vijay Abraham I
2016-02-02 10:40               ` Kishon Vijay Abraham I
2016-02-05  4:19               ` Kishon Vijay Abraham I
2016-02-05  4:19                 ` Kishon Vijay Abraham I
2016-02-05  4:19                 ` Kishon Vijay Abraham I
2016-02-08  2:48               ` Paul Walmsley
2016-02-08  2:48                 ` Paul Walmsley
2016-02-08 20:56                 ` Suman Anna
2016-02-08 20:56                   ` Suman Anna
2016-02-08 20:56                   ` Suman Anna
2016-02-09  8:49                   ` Paul Walmsley
2016-02-09  8:49                     ` Paul Walmsley
2016-02-09 17:40                     ` Suman Anna
2016-02-09 17:40                       ` Suman Anna
2016-02-09 17:40                       ` Suman Anna
2016-02-09 19:36                       ` Paul Walmsley
2016-02-09 19:36                         ` Paul Walmsley
2016-02-10  1:42                         ` Suman Anna
2016-02-10  1:42                           ` Suman Anna
2016-02-10  1:42                           ` Suman Anna
2016-02-10  5:38                           ` Kishon Vijay Abraham I
2016-02-10  5:38                             ` Kishon Vijay Abraham I
2016-02-10  5:38                             ` Kishon Vijay Abraham I
2016-02-11 19:27                             ` Paul Walmsley
2016-02-11 19:27                               ` Paul Walmsley
2016-02-11 22:04                               ` Suman Anna
2016-02-11 22:04                                 ` Suman Anna
2016-02-11 22:04                                 ` Suman Anna
2016-02-12  6:49                               ` Kishon Vijay Abraham I
2016-02-12  6:49                                 ` Kishon Vijay Abraham I
2016-02-12  6:49                                 ` Kishon Vijay Abraham I
2016-02-12 17:20                                 ` Suman Anna
2016-02-12 17:20                                   ` Suman Anna
2016-02-12 17:20                                   ` Suman Anna
2016-02-18 14:21                                   ` Sekhar Nori
2016-02-18 14:21                                     ` Sekhar Nori
2016-02-18 14:21                                     ` Sekhar Nori
2016-02-18 17:23                                     ` Paul Walmsley
2016-02-18 17:23                                       ` Paul Walmsley
2016-02-18 18:27                                       ` Suman Anna
2016-02-18 18:27                                         ` Suman Anna
2016-02-18 18:27                                         ` Suman Anna
2016-02-22  6:18                                     ` Kishon Vijay Abraham I
2016-02-22  6:18                                       ` Kishon Vijay Abraham I
2016-02-22  6:18                                       ` Kishon Vijay Abraham I
2016-02-22  6:31                                       ` Paul Walmsley
2016-02-22  6:31                                         ` Paul Walmsley
2016-02-22  9:55                                         ` Kishon Vijay Abraham I
2016-02-22  9:55                                           ` Kishon Vijay Abraham I
2016-02-22  9:55                                           ` Kishon Vijay Abraham I
2016-02-23 11:57                                           ` Kishon Vijay Abraham I
2016-02-23 11:57                                             ` Kishon Vijay Abraham I
2016-02-23 11:57                                             ` Kishon Vijay Abraham I
2016-02-23 18:28                                             ` Paul Walmsley
2016-02-23 18:28                                               ` Paul Walmsley
2016-02-24  6:21                                               ` Kishon Vijay Abraham I
2016-02-24  6:21                                                 ` Kishon Vijay Abraham I
2016-02-24  6:21                                                 ` Kishon Vijay Abraham I
2016-03-01  8:25                                                 ` Paul Walmsley
2016-03-01  8:25                                                   ` Paul Walmsley
2016-03-01 11:55                                                   ` Kishon Vijay Abraham I
2016-03-01 11:55                                                     ` Kishon Vijay Abraham I
2016-03-01 11:55                                                     ` Kishon Vijay Abraham I
2016-03-01 14:43                                                     ` Bjorn Helgaas
2016-03-01 14:43                                                       ` Bjorn Helgaas
2016-03-01 16:55                                                     ` Suman Anna
2016-03-01 16:55                                                       ` Suman Anna
2016-03-01 16:55                                                       ` Suman Anna
2016-02-11 20:43                             ` Suman Anna
2016-02-11 20:43                               ` Suman Anna
2016-02-11 20:43                               ` Suman Anna
2016-02-12  6:55                               ` Kishon Vijay Abraham I [this message]
2016-02-12  6:55                                 ` Kishon Vijay Abraham I
2016-02-12  6:55                                 ` Kishon Vijay Abraham I
2016-02-10  5:36                         ` Kishon Vijay Abraham I
2016-02-10  5:36                           ` Kishon Vijay Abraham I
2016-02-10  5:36                           ` Kishon Vijay Abraham I

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=56BD81F5.8090404@ti.com \
    --to=kishon@ti.com \
    --cc=bhelgaas@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=nsekhar@ti.com \
    --cc=paul@pwsan.com \
    --cc=richardcochran@gmail.com \
    --cc=s-anna@ti.com \
    --cc=tony@atomide.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.