All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
To: Joseph Lo <josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH V2 1/6] ARM: tegra: add pending SGI checking API
Date: Thu, 06 Dec 2012 11:52:53 -0700	[thread overview]
Message-ID: <50C0E985.2020604@wwwdotorg.org> (raw)
In-Reply-To: <1354777471.13857.9.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>

On 12/06/2012 12:04 AM, Joseph Lo wrote:
> On Thu, 2012-12-06 at 06:09 +0800, Stephen Warren wrote:
>> On 12/05/2012 03:01 AM, Joseph Lo wrote:
>>> The "powered-down" CPU idle mode of Tegra cut off the vdd_cpu rail, it
>>> include the power of GIC. That caused the SGI (Software Generated
>>> Interrupt) been lost. Because the SGI can't wake up the CPU that in
>>> the "powered-down" CPU idle mode. We need to check if there is any
>>> pending SGI when go into "powered-down" CPU idle mode. This is important
>>> especially when applying the coupled cpuidle framework into "power-down"
>>> cpuidle dirver. Because the coupled cpuidle framework may have the
>>> chance that misses IPI_SINGLE_FUNC handling sometimes.
>>>
>>> For the PPI or SPI, something like the legacy peripheral interrupt. It
>>> still can be maintained by Tegra legacy interrupt controller. If there
>>> is any pending PPI or SPI when CPU in "powered-down" CPU idle mode. The
>>> CPU can be woken up immediately. So we don't need to take care the same
>>> situation for PPI or SPI.
>>
>> Is this feature something that can/should be added to the core GIC
>> driver, rather than something custom in the Tegra code?
>>
> This function is SoC specific code not a generic common code even I
> modify it to more generic for checking the pending irq (SGI, PPI and
> SPI). Different SoC had different design about it. For ex, some SoC only
> put CPU core to power saving mode not include GIC, or there is another
> irq controller can handle the case when CPU go into power saving mode.
> Differenc SoC had different usage here (some need to check all pending
> irq, some need to check SGI only and some even no need to consider
> this).

Hmmm. OK.

>> Part of the reason I ask is that I'd like to avoid any more:
>>
>> static void __iomem *distbase = IO_ADDRESS(TEGRA_ARM_INT_DIST_BASE);
>>
>> since that requires static page tables to be set up, whereas I'd like to
>> reduce, as much as possible, the set of pages Tegra maps statically.
> 
> I can move this into the function as a temp variable.

Well, the issue here is use of the IO_ADDRESS() macro at all; ioremap()
at run-time would be better, which I imagine is what the core GIC driver
does when intialized from DT. Still, I suppose there are many instance
of IO_ADDRESS() in the mach-tegra directory right now, so adding one
more won't hurt too much; we still need to do a big pass to get rid of
them sometime if possible.

WARNING: multiple messages have this Message-ID (diff)
From: swarren@wwwdotorg.org (Stephen Warren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V2 1/6] ARM: tegra: add pending SGI checking API
Date: Thu, 06 Dec 2012 11:52:53 -0700	[thread overview]
Message-ID: <50C0E985.2020604@wwwdotorg.org> (raw)
In-Reply-To: <1354777471.13857.9.camel@jlo-ubuntu-64.nvidia.com>

On 12/06/2012 12:04 AM, Joseph Lo wrote:
> On Thu, 2012-12-06 at 06:09 +0800, Stephen Warren wrote:
>> On 12/05/2012 03:01 AM, Joseph Lo wrote:
>>> The "powered-down" CPU idle mode of Tegra cut off the vdd_cpu rail, it
>>> include the power of GIC. That caused the SGI (Software Generated
>>> Interrupt) been lost. Because the SGI can't wake up the CPU that in
>>> the "powered-down" CPU idle mode. We need to check if there is any
>>> pending SGI when go into "powered-down" CPU idle mode. This is important
>>> especially when applying the coupled cpuidle framework into "power-down"
>>> cpuidle dirver. Because the coupled cpuidle framework may have the
>>> chance that misses IPI_SINGLE_FUNC handling sometimes.
>>>
>>> For the PPI or SPI, something like the legacy peripheral interrupt. It
>>> still can be maintained by Tegra legacy interrupt controller. If there
>>> is any pending PPI or SPI when CPU in "powered-down" CPU idle mode. The
>>> CPU can be woken up immediately. So we don't need to take care the same
>>> situation for PPI or SPI.
>>
>> Is this feature something that can/should be added to the core GIC
>> driver, rather than something custom in the Tegra code?
>>
> This function is SoC specific code not a generic common code even I
> modify it to more generic for checking the pending irq (SGI, PPI and
> SPI). Different SoC had different design about it. For ex, some SoC only
> put CPU core to power saving mode not include GIC, or there is another
> irq controller can handle the case when CPU go into power saving mode.
> Differenc SoC had different usage here (some need to check all pending
> irq, some need to check SGI only and some even no need to consider
> this).

Hmmm. OK.

>> Part of the reason I ask is that I'd like to avoid any more:
>>
>> static void __iomem *distbase = IO_ADDRESS(TEGRA_ARM_INT_DIST_BASE);
>>
>> since that requires static page tables to be set up, whereas I'd like to
>> reduce, as much as possible, the set of pages Tegra maps statically.
> 
> I can move this into the function as a temp variable.

Well, the issue here is use of the IO_ADDRESS() macro at all; ioremap()
at run-time would be better, which I imagine is what the core GIC driver
does when intialized from DT. Still, I suppose there are many instance
of IO_ADDRESS() in the mach-tegra directory right now, so adding one
more won't hurt too much; we still need to do a big pass to get rid of
them sometime if possible.

  parent reply	other threads:[~2012-12-06 18:52 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-05 10:01 [PATCH V2 0/6] ARM: tegra20: cpuidle: add power-down state Joseph Lo
2012-12-05 10:01 ` Joseph Lo
     [not found] ` <1354701715-24150-1-git-send-email-josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 10:01   ` [PATCH V2 1/6] ARM: tegra: add pending SGI checking API Joseph Lo
2012-12-05 10:01     ` Joseph Lo
     [not found]     ` <1354701715-24150-2-git-send-email-josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 22:09       ` Stephen Warren
2012-12-05 22:09         ` Stephen Warren
     [not found]         ` <50BFC605.3000402-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-06  7:04           ` Joseph Lo
2012-12-06  7:04             ` Joseph Lo
     [not found]             ` <1354777471.13857.9.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2012-12-06 18:52               ` Stephen Warren [this message]
2012-12-06 18:52                 ` Stephen Warren
2012-12-05 10:01   ` [PATCH V2 2/6] ARM: tegra20: cpuidle: add powered-down state for secondary CPU Joseph Lo
2012-12-05 10:01     ` Joseph Lo
     [not found]     ` <1354701715-24150-3-git-send-email-josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 10:50       ` Lorenzo Pieralisi
2012-12-05 10:50         ` Lorenzo Pieralisi
     [not found]         ` <20121205105010.GA12999-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2012-12-06  8:25           ` Joseph Lo
2012-12-06  8:25             ` Joseph Lo
     [not found]             ` <1354782322.13857.78.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2012-12-06 18:56               ` Stephen Warren
2012-12-06 18:56                 ` Stephen Warren
2013-01-11  7:20           ` Joseph Lo
2013-01-11  7:20             ` Joseph Lo
     [not found]             ` <1357888829.2034.39.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2013-01-11 12:24               ` Lorenzo Pieralisi
2013-01-11 12:24                 ` Lorenzo Pieralisi
     [not found]                 ` <20130111122417.GE30538-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-15  3:00                   ` Joseph Lo
2013-01-15  3:00                     ` Joseph Lo
     [not found]                     ` <1358218844.8513.30.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2013-01-15 11:34                       ` Lorenzo Pieralisi
2013-01-15 11:34                         ` Lorenzo Pieralisi
     [not found]                         ` <20130115113427.GC26424-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-01-16  3:17                           ` Joseph Lo
2013-01-16  3:17                             ` Joseph Lo
2013-01-12 17:33             ` Nicolas Pitre
2013-01-12 17:33               ` Nicolas Pitre
2012-12-05 22:18       ` Stephen Warren
2012-12-05 22:18         ` Stephen Warren
     [not found]         ` <50BFC826.1020705-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-06  7:22           ` Joseph Lo
2012-12-06  7:22             ` Joseph Lo
     [not found]             ` <1354778576.13857.19.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2012-12-06 18:59               ` Stephen Warren
2012-12-06 18:59                 ` Stephen Warren
2012-12-05 10:01   ` [PATCH V2 3/6] ARM: tegra20: clocks: add CPU low-power function into tegra_cpu_car_ops Joseph Lo
2012-12-05 10:01     ` Joseph Lo
2012-12-05 10:01   ` [PATCH V2 4/6] ARM: tegra20: flowctrl: add support for cpu_suspend_enter/exit Joseph Lo
2012-12-05 10:01     ` Joseph Lo
2012-12-05 10:01   ` [PATCH V2 5/6] ARM: tegra20: cpuidle: add powered-down state for CPU0 Joseph Lo
2012-12-05 10:01     ` Joseph Lo
2012-12-05 10:01   ` [PATCH V2 6/6] ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode Joseph Lo
2012-12-05 10:01     ` Joseph Lo
2012-12-05 10:01   ` Joseph Lo
2012-12-05 10:01     ` Joseph Lo
     [not found]     ` <1354701715-24150-8-git-send-email-josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 10:10       ` Joseph Lo
2012-12-05 10:10         ` Joseph Lo
     [not found]         ` <1354702227.25317.0.camel-yx3yKKdKkHfc7b1ADBJPm0n48jw8i0AO@public.gmane.org>
2012-12-06 11:03           ` Grant Likely
2012-12-06 11:03             ` Grant Likely
2012-12-05 10:01   ` Joseph Lo
2012-12-05 10:01     ` Joseph Lo
     [not found]     ` <1354701715-24150-9-git-send-email-josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 10:11       ` Joseph Lo
2012-12-05 10:11         ` Joseph Lo

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=50C0E985.2020604@wwwdotorg.org \
    --to=swarren-3lzwwm7+weoh9zmkesr00q@public.gmane.org \
    --cc=josephl-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.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 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.