All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Piggin <npiggin@gmail.com>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH V2] powerpc: Fix oops due to wrong access of lppaca on non virtualized platform
Date: Mon, 2 Apr 2018 17:41:03 +1000	[thread overview]
Message-ID: <20180402174103.4d122fb3@roar.ozlabs.ibm.com> (raw)
In-Reply-To: <20180402073337.22568-1-aneesh.kumar@linux.ibm.com>

On Mon,  2 Apr 2018 13:03:37 +0530
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> wrote:

> Commit 8e0b634b1327 ("powerpc/64s: Do not allocate lppaca if we are not
> virtualized") removed allocation of lppaca on non virtualized platform. But with
> CONFIG_PPC_SPLPAR enabled, we do access lppaca non-virtualized platform in some
> code paths.
> 
> Fix this but adding runtime check for virtualized platform.
> 
> Fixes: 8e0b634b1327 ("powerpc/64s: Do not allocate lppaca if we are not virtualized")
> 
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>

Thanks, this looks good to me...

> ---
> Changes from V1:
> * update commit summary
> 
>  arch/powerpc/include/asm/lppaca.h   | 3 +++
>  arch/powerpc/include/asm/spinlock.h | 2 ++
>  arch/powerpc/kernel/time.c          | 3 +++
>  3 files changed, 8 insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/lppaca.h b/arch/powerpc/include/asm/lppaca.h
> index 65d589689f01..7c23ce8a5a4c 100644
> --- a/arch/powerpc/include/asm/lppaca.h
> +++ b/arch/powerpc/include/asm/lppaca.h
> @@ -34,6 +34,7 @@
>  #include <linux/threads.h>
>  #include <asm/types.h>
>  #include <asm/mmu.h>
> +#include <asm/firmware.h>
>  
>  /*
>   * The lppaca is the "virtual processor area" registered with the hypervisor,
> @@ -114,6 +115,8 @@ struct lppaca {
>  
>  static inline bool lppaca_shared_proc(struct lppaca *l)
>  {
> +	if (!firmware_has_feature(FW_FEATURE_SPLPAR))
> +		return false;
>  	return !!(l->__old_status & LPPACA_OLD_SHARED_PROC);
>  }
>  

We should eventually clean this up. There's no need to pass in an lppaca
here AFAIKS. Is it even per-CPU, does it change dynamically? We could set
it up in a FW_FEATURE parameter at boot, which would could make some of
these tests cheaper.

> diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h
> index b9ebc3085fb7..72dc4ddc2972 100644
> --- a/arch/powerpc/include/asm/spinlock.h
> +++ b/arch/powerpc/include/asm/spinlock.h
> @@ -56,6 +56,8 @@
>  #define vcpu_is_preempted vcpu_is_preempted
>  static inline bool vcpu_is_preempted(int cpu)
>  {
> +	if (!firmware_has_feature(FW_FEATURE_SPLPAR))
> +		return false;
>  	return !!(be32_to_cpu(lppaca_of(cpu).yield_count) & 1);
>  }
>  #endif
> diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
> index f7d96a68ecaa..360e71d455cc 100644
> --- a/arch/powerpc/kernel/time.c
> +++ b/arch/powerpc/kernel/time.c
> @@ -266,6 +266,9 @@ void accumulate_stolen_time(void)
>  
>  static inline u64 calculate_stolen_time(u64 stop_tb)
>  {
> +	if (!firmware_has_feature(FW_FEATURE_SPLPAR))
> +		return 0;
> +
>  	if (get_paca()->dtl_ridx != be64_to_cpu(get_lppaca()->dtl_idx))
>  		return scan_dispatch_log(stop_tb);
>  

  reply	other threads:[~2018-04-02  7:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-02  7:33 [PATCH V2] powerpc: Fix oops due to wrong access of lppaca on non virtualized platform Aneesh Kumar K.V
2018-04-02  7:41 ` Nicholas Piggin [this message]
2018-04-03 16:03 ` [V2] " Michael Ellerman

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=20180402174103.4d122fb3@roar.ozlabs.ibm.com \
    --to=npiggin@gmail.com \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.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.