From: Will Deacon <will@kernel.org>
To: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Cc: mark.rutland@arm.com, wangzhe59@huawei.com,
lorenzo.pieralisi@arm.com,
Catalin Marinas <catalin.marinas@arm.com>,
huawei.libin@huawei.com, guohanjun@huawei.com,
linux-arm-kernel@lists.infradead.org
Subject: Re: [Question] About handling PMU context loss in the deepest idle state where the core is powered down
Date: Thu, 9 Jan 2020 15:03:19 +0000 [thread overview]
Message-ID: <20200109150318.GF12236@willie-the-truck> (raw)
In-Reply-To: <d62d9ac1-3af9-b692-a84a-aab4582e5eb8@huawei.com>
[+Lorenzo]
On Thu, Jan 09, 2020 at 10:43:40AM +0800, Xiongfeng Wang wrote:
> Sorry to bother you. It's just that we have come across some problems
> about PMU recently.
No bother, and thanks for including the mailing list.
> We are working on deep power state on CPU cores. In the deepest idle state, the core will be
> powered down. In our implementation, the PMU and the core are in the same power domain,
> so the PMU will also be powered down. But I didn't find where we saved the PMU context
> in kernel before entering the deepest idle state.
>
> Before we enter the system sleep state, we update the kernel PMU counter and stop the PMU
> in 'cpu_pm_pmu_notify()'. But we didn't do that before we enter idle state.
> I only find some system registers saving in 'psci_cpu_suspend_enter()->cpu_susend()->cpu_do_suspend()'
I'm not sure what you mean by "system sleep state", but if you're putting
the CPU into a state where register contents is lost, then I think you need
those PM notifiers to run. My understanding was that CPUidle took care of
this. Why is that not sufficient for you?
> Do you have some suggestion about how we can handle this problem ?
> Should we save and restore the PMU context before and after the deepest idle state . I don't know
> if we can take care of the PMU counters and interrupts properly by saving and restoring
> the PMU registers.
> Or we should update the kernel counter and stop the PMU, like what we did in system sleep situation.
> Or we should let the firmware to handle the saving and restoring problem.
If the idle state is somehow autonomous (i.e. the kernel is not aware of
it), then I suppose firmware has to save/restore the register state that
is not otherwise preserved. However, I'd like to understand if this is
really what's happening and why CPUidle isn't just doing the right thing.
Thanks,
Will
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-01-09 15:03 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-09 2:43 [Question] About handling PMU context loss in the deepest idle state where the core is powered down Xiongfeng Wang
2020-01-09 15:03 ` Will Deacon [this message]
2020-01-09 16:46 ` Lorenzo Pieralisi
2020-01-10 3:28 ` Xiongfeng Wang
2020-01-10 3:45 ` Xiongfeng Wang
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=20200109150318.GF12236@willie-the-truck \
--to=will@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=guohanjun@huawei.com \
--cc=huawei.libin@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=wangxiongfeng2@huawei.com \
--cc=wangzhe59@huawei.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