[v2,3/3] powerpc/fsl: Implement cpu_show_spectre_v1/v2 for NXP PowerPC Book3E

Message ID 1528721608-15443-4-git-send-email-diana.craciun@nxp.com
State Changes Requested
Headers show
Series
  • powerpc/fsl: Speculation barrier for NXP PowerPC Book3E
Related show

Commit Message

Diana Madalina Craciun June 11, 2018, 12:53 p.m.
Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
---
 arch/powerpc/Kconfig           |  2 +-
 arch/powerpc/kernel/security.c | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

Comments

Bharat Bhushan June 12, 2018, 2:59 a.m. | #1
Hi Diana,

> -----Original Message-----
> From: Diana Craciun [mailto:diana.craciun@nxp.com]
> Sent: Monday, June 11, 2018 6:23 PM
> To: linuxppc-dev@lists.ozlabs.org
> Cc: mpe@ellerman.id.au; oss@buserror.net; Leo Li <leoyang.li@nxp.com>;
> Bharat Bhushan <bharat.bhushan@nxp.com>; Diana Madalina Craciun
> <diana.craciun@nxp.com>
> Subject: [PATCH v2 3/3] powerpc/fsl: Implement cpu_show_spectre_v1/v2 for
> NXP PowerPC Book3E

Please add some description

> 
> Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
> ---
>  arch/powerpc/Kconfig           |  2 +-
>  arch/powerpc/kernel/security.c | 15 +++++++++++++++
>  2 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index
> 940c955..a781d60 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -170,7 +170,7 @@ config PPC
>  	select GENERIC_CLOCKEVENTS_BROADCAST	if SMP
>  	select GENERIC_CMOS_UPDATE
>  	select GENERIC_CPU_AUTOPROBE
> -	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64
> +	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64 ||
> PPC_FSL_BOOK3E
>  	select GENERIC_IRQ_SHOW
>  	select GENERIC_IRQ_SHOW_LEVEL
>  	select GENERIC_SMP_IDLE_THREAD
> diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
> index 797c975..aceaadc 100644
> --- a/arch/powerpc/kernel/security.c
> +++ b/arch/powerpc/kernel/security.c
> @@ -183,3 +183,18 @@ ssize_t cpu_show_spectre_v2(struct device *dev,
> struct device_attribute *attr, c  }  #endif /* CONFIG_PPC_BOOK3S_64 */
> 
> +#ifdef CONFIG_PPC_FSL_BOOK3E
> +ssize_t cpu_show_spectre_v1(struct device *dev, struct device_attribute
> +*attr, char *buf) {
> +	if (barrier_nospec_enabled)
> +		return sprintf(buf, "Mitigation: __user pointer sanitization\n");
> +
> +	return sprintf(buf, "Vulnerable\n");
> +}
> +
> +ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute
> +*attr, char *buf) {
> +	return sprintf(buf, "Vulnerable\n");
> +}
> +#endif /* CONFIG_PPC_FSL_BOOK3E */
> +
> --
> 2.5.5
Michal Suchánek June 12, 2018, 10:07 a.m. | #2
On Tue, 12 Jun 2018 02:59:11 +0000
Bharat Bhushan <bharat.bhushan@nxp.com> wrote:

> Hi Diana,
> 
> > -----Original Message-----
> > From: Diana Craciun [mailto:diana.craciun@nxp.com]
> > Sent: Monday, June 11, 2018 6:23 PM
> > To: linuxppc-dev@lists.ozlabs.org
> > Cc: mpe@ellerman.id.au; oss@buserror.net; Leo Li
> > <leoyang.li@nxp.com>; Bharat Bhushan <bharat.bhushan@nxp.com>;
> > Diana Madalina Craciun <diana.craciun@nxp.com>
> > Subject: [PATCH v2 3/3] powerpc/fsl: Implement
> > cpu_show_spectre_v1/v2 for NXP PowerPC Book3E  
> 
> Please add some description

To me the subject is self-explanatory. It implements a kernel interface
that was already described elsewhere.

What are you missing here?

Thanks

Michal

> 
> > 
> > Signed-off-by: Diana Craciun <diana.craciun@nxp.com>
> > ---
> >  arch/powerpc/Kconfig           |  2 +-
> >  arch/powerpc/kernel/security.c | 15 +++++++++++++++
> >  2 files changed, 16 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index
> > 940c955..a781d60 100644
> > --- a/arch/powerpc/Kconfig
> > +++ b/arch/powerpc/Kconfig
> > @@ -170,7 +170,7 @@ config PPC
> >  	select GENERIC_CLOCKEVENTS_BROADCAST	if SMP
> >  	select GENERIC_CMOS_UPDATE
> >  	select GENERIC_CPU_AUTOPROBE
> > -	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64
> > +	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64
> > || PPC_FSL_BOOK3E
> >  	select GENERIC_IRQ_SHOW
> >  	select GENERIC_IRQ_SHOW_LEVEL
> >  	select GENERIC_SMP_IDLE_THREAD
> > diff --git a/arch/powerpc/kernel/security.c
> > b/arch/powerpc/kernel/security.c index 797c975..aceaadc 100644
> > --- a/arch/powerpc/kernel/security.c
> > +++ b/arch/powerpc/kernel/security.c
> > @@ -183,3 +183,18 @@ ssize_t cpu_show_spectre_v2(struct device *dev,
> > struct device_attribute *attr, c  }  #endif /* CONFIG_PPC_BOOK3S_64
> > */
> > 
> > +#ifdef CONFIG_PPC_FSL_BOOK3E
> > +ssize_t cpu_show_spectre_v1(struct device *dev, struct
> > device_attribute +*attr, char *buf) {
> > +	if (barrier_nospec_enabled)
> > +		return sprintf(buf, "Mitigation: __user pointer
> > sanitization\n"); +
> > +	return sprintf(buf, "Vulnerable\n");
> > +}
> > +
> > +ssize_t cpu_show_spectre_v2(struct device *dev, struct
> > device_attribute +*attr, char *buf) {
> > +	return sprintf(buf, "Vulnerable\n");
> > +}
> > +#endif /* CONFIG_PPC_FSL_BOOK3E */
> > +
> > --
> > 2.5.5  
>
Michael Ellerman July 3, 2018, 7:26 a.m. | #3
Michal Suchánek <msuchanek@suse.de> writes:
> On Tue, 12 Jun 2018 02:59:11 +0000
> Bharat Bhushan <bharat.bhushan@nxp.com> wrote:
>
>> Hi Diana,
>> 
>> > -----Original Message-----
>> > From: Diana Craciun [mailto:diana.craciun@nxp.com]
>> > Sent: Monday, June 11, 2018 6:23 PM
>> > To: linuxppc-dev@lists.ozlabs.org
>> > Cc: mpe@ellerman.id.au; oss@buserror.net; Leo Li
>> > <leoyang.li@nxp.com>; Bharat Bhushan <bharat.bhushan@nxp.com>;
>> > Diana Madalina Craciun <diana.craciun@nxp.com>
>> > Subject: [PATCH v2 3/3] powerpc/fsl: Implement
>> > cpu_show_spectre_v1/v2 for NXP PowerPC Book3E  
>> 
>> Please add some description
>
> To me the subject is self-explanatory. It implements a kernel interface
> that was already described elsewhere.
>
> What are you missing here?

It should at least explain why it's reimplementing a function that
already exists for powerpc. ie. Why can't the existing version be used?

cheers
Diana Madalina Craciun July 5, 2018, 1:26 p.m. | #4
On 07/03/2018 10:26 AM, Michael Ellerman wrote:
> Michal Suchánek <msuchanek@suse.de> writes:
>> On Tue, 12 Jun 2018 02:59:11 +0000
>> Bharat Bhushan <bharat.bhushan@nxp.com> wrote:
>>
>>> Hi Diana,
>>>
>>>> -----Original Message-----
>>>> From: Diana Craciun [mailto:diana.craciun@nxp.com]
>>>> Sent: Monday, June 11, 2018 6:23 PM
>>>> To: linuxppc-dev@lists.ozlabs.org
>>>> Cc: mpe@ellerman.id.au; oss@buserror.net; Leo Li
>>>> <leoyang.li@nxp.com>; Bharat Bhushan <bharat.bhushan@nxp.com>;
>>>> Diana Madalina Craciun <diana.craciun@nxp.com>
>>>> Subject: [PATCH v2 3/3] powerpc/fsl: Implement
>>>> cpu_show_spectre_v1/v2 for NXP PowerPC Book3E  
>>> Please add some description
>> To me the subject is self-explanatory. It implements a kernel interface
>> that was already described elsewhere.
>>
>> What are you missing here?
> It should at least explain why it's reimplementing a function that
> already exists for powerpc. ie. Why can't the existing version be used?
>
> cheers
>
OK. I think I can use the cpu_show_spectre_v1 and for now I can use
cpu_show_spectre_v2 as well (the patches are under development for
mitigating Spectre v2). But I cannot use cpu_show_meltdown because it
uses references to variables that are specific to BOOK3S_64. But I do
not need a special implementation for cpu_show_meltdown because our
platform is not vulnerable to Meltdown. So, I will just ifdef the
cpu_show_meltdown and leave the default implementation.

Diana

Patch

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 940c955..a781d60 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -170,7 +170,7 @@  config PPC
 	select GENERIC_CLOCKEVENTS_BROADCAST	if SMP
 	select GENERIC_CMOS_UPDATE
 	select GENERIC_CPU_AUTOPROBE
-	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64
+	select GENERIC_CPU_VULNERABILITIES	if PPC_BOOK3S_64 || PPC_FSL_BOOK3E
 	select GENERIC_IRQ_SHOW
 	select GENERIC_IRQ_SHOW_LEVEL
 	select GENERIC_SMP_IDLE_THREAD
diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
index 797c975..aceaadc 100644
--- a/arch/powerpc/kernel/security.c
+++ b/arch/powerpc/kernel/security.c
@@ -183,3 +183,18 @@  ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute *attr, c
 }
 #endif /* CONFIG_PPC_BOOK3S_64 */
 
+#ifdef CONFIG_PPC_FSL_BOOK3E
+ssize_t cpu_show_spectre_v1(struct device *dev, struct device_attribute *attr, char *buf)
+{
+	if (barrier_nospec_enabled)
+		return sprintf(buf, "Mitigation: __user pointer sanitization\n");
+
+	return sprintf(buf, "Vulnerable\n");
+}
+
+ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute *attr, char *buf)
+{
+	return sprintf(buf, "Vulnerable\n");
+}
+#endif /* CONFIG_PPC_FSL_BOOK3E */
+