From: Nathan Fontenot <nfont@linux.vnet.ibm.com>
To: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v2 2/3] powerpc/pseries: Update dynamic cache nodes for suspend/resume operation
Date: Tue, 28 Jan 2014 13:41:36 -0600 [thread overview]
Message-ID: <52E807F0.8070508@linux.vnet.ibm.com> (raw)
In-Reply-To: <1390420717-23907-3-git-send-email-tyreld@linux.vnet.ibm.com>
On 01/22/2014 01:58 PM, Tyrel Datwyler wrote:
> From: Haren Myneni <hbabu@us.ibm.com>
>
> From: Haren Myneni <hbabu@us.ibm.com>
>
> pHyp can change cache nodes for suspend/resume operation. The current code
> updates the device tree after all non boot CPUs are enabled. Hence, we do not
> modify the cache list based on the latest cache nodes. Also we do not remove
> cache entries for the primary CPU.
>
> This patch removes the cache list for the boot CPU, updates the device tree
> before enabling nonboot CPUs and adds cache list for the boot cpu.
>
> Signed-off-by: Haren Myneni <hbabu@us.ibm.com>
> Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
> ---
> arch/powerpc/include/asm/rtas.h | 4 ++++
> arch/powerpc/kernel/rtas.c | 17 +++++++++++++++++
> arch/powerpc/kernel/time.c | 6 ++++++
> 3 files changed, 27 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 9bd52c6..da9d733 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -283,6 +283,10 @@ extern void pSeries_log_error(char *buf, unsigned int err_type, int fatal);
>
> #ifdef CONFIG_PPC_PSERIES
> extern int pseries_devicetree_update(s32 scope);
> +extern void post_mobility_fixup(void);
> +extern void update_dynamic_configuration(void);
> +#else /* !CONFIG_PPC_PSERIES */
> +void update_dynamic_configuration(void) { }
> #endif
>
> #ifdef CONFIG_PPC_RTAS_DAEMON
> diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
> index 4cf674d..8249eb2 100644
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -43,6 +43,7 @@
> #include <asm/time.h>
> #include <asm/mmu.h>
> #include <asm/topology.h>
> +#include "cacheinfo.h"
>
> struct rtas_t rtas = {
> .lock = __ARCH_SPIN_LOCK_UNLOCKED
> @@ -972,6 +973,22 @@ out:
> free_cpumask_var(offline_mask);
> return atomic_read(&data.error);
> }
> +
> +/*
> + * The device tree cache nodes can be modified during suspend/ resume.
> + * So delete all cache entries and recreate them again after the device tree
> + * update.
> + * We already deleted cache entries for notboot CPUs before suspend. So delete
> + * entries for the primary CPU, recreate entries after the device tree update.
> + * We can create entries for nonboot CPU when enable them later.
> + */
> +
> +void update_dynamic_configuration(void)
> +{
> + cacheinfo_cpu_offline(smp_processor_id());
> + post_mobility_fixup();
> + cacheinfo_cpu_online(smp_processor_id());
> +}
> #else /* CONFIG_PPC_PSERIES */
> int rtas_ibm_suspend_me(struct rtas_args *args)
> {
> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
> index b3b1441..5f1ca28 100644
> --- a/arch/powerpc/kernel/time.c
> +++ b/arch/powerpc/kernel/time.c
> @@ -69,6 +69,7 @@
> #include <asm/vdso_datapage.h>
> #include <asm/firmware.h>
> #include <asm/cputime.h>
> +#include <asm/rtas.h>
>
> /* powerpc clocksource/clockevent code */
>
> @@ -592,6 +593,11 @@ void arch_suspend_enable_irqs(void)
> generic_suspend_enable_irqs();
> if (ppc_md.suspend_enable_irqs)
> ppc_md.suspend_enable_irqs();
> + /*
> + * Update configuration which can be modified based on devicetree
> + * changes during resume.
> + */
> + update_dynamic_configuration();
Instead of creating this new routine update_dynamic_reconfiguration() for
pseries systems only, shouldn't we be defining ppc_md.suspend_enable_irqs
for pseries. I think this could be done in platforms/pseries/suspend.c
-Nathan
> }
> #endif
>
next prev parent reply other threads:[~2014-01-28 19:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-22 19:58 [PATCH v2 0/3] powerpc/pseries: fix issues in suspend/resume code Tyrel Datwyler
2014-01-22 19:58 ` [PATCH v2 1/3] powerpc/pseries: Device tree should only be updated once after suspend/migrate Tyrel Datwyler
2014-01-28 19:44 ` Nathan Fontenot
2014-01-22 19:58 ` [PATCH v2 2/3] powerpc/pseries: Update dynamic cache nodes for suspend/resume operation Tyrel Datwyler
2014-01-28 19:41 ` Nathan Fontenot [this message]
2014-01-22 19:58 ` [PATCH v2 3/3] powerpc/pseries: Report in kernel device tree update to drmgr Tyrel Datwyler
2014-01-28 19:45 ` Nathan Fontenot
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=52E807F0.8070508@linux.vnet.ibm.com \
--to=nfont@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=tyreld@linux.vnet.ibm.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).