Re: [added to the 4.1 stable tree] powerpc/pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sasha Levin <Alexander.Levin@xxxxxxxxxxxxx> writes:

> From: Michael Neuling <mikey@xxxxxxxxxxx>
>
> This patch has been added to the 4.1 stable tree. If you have any
> objections, please let us know.

Hi Sasha,

I have done a back port of this series to 4.1, and there are a few
differences between my version and yours.

Do you mind dropping these for now and I'll send you my version?

That would be this patch and up to and including:
  powerpc/64s: Allow control of RFI flush via debugfs

cheers

> ===============
>
> [ Upstream commit 191eccb1580939fb0d47deb405b82a85b0379070 ]
>
> A new hypervisor call has been defined to communicate various
> characteristics of the CPU to guests. Add definitions for the hcall
> number, flags and a wrapper function.
>
> Signed-off-by: Michael Neuling <mikey@xxxxxxxxxxx>
> Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
> Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
> ---
>  arch/powerpc/include/asm/hvcall.h         | 17 +++++++++++++++++
>  arch/powerpc/include/asm/plpar_wrappers.h | 14 ++++++++++++++
>  2 files changed, 31 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h
> index 85bc8c0d257b..51adbde09845 100644
> --- a/arch/powerpc/include/asm/hvcall.h
> +++ b/arch/powerpc/include/asm/hvcall.h
> @@ -239,6 +239,7 @@
>  #define H_GET_HCA_INFO          0x1B8
>  #define H_GET_PERF_COUNT        0x1BC
>  #define H_MANAGE_TRACE          0x1C0
> +#define H_GET_CPU_CHARACTERISTICS 0x1C8
>  #define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
>  #define H_QUERY_INT_STATE       0x1E4
>  #define H_POLL_PENDING		0x1D8
> @@ -285,6 +286,17 @@
>  #define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE	3
>  #define H_SET_MODE_RESOURCE_LE			4
>  
> +/* H_GET_CPU_CHARACTERISTICS return values */
> +#define H_CPU_CHAR_SPEC_BAR_ORI31	(1ull << 63) // IBM bit 0
> +#define H_CPU_CHAR_BCCTRL_SERIALISED	(1ull << 62) // IBM bit 1
> +#define H_CPU_CHAR_L1D_FLUSH_ORI30	(1ull << 61) // IBM bit 2
> +#define H_CPU_CHAR_L1D_FLUSH_TRIG2	(1ull << 60) // IBM bit 3
> +#define H_CPU_CHAR_L1D_THREAD_PRIV	(1ull << 59) // IBM bit 4
> +
> +#define H_CPU_BEHAV_FAVOUR_SECURITY	(1ull << 63) // IBM bit 0
> +#define H_CPU_BEHAV_L1D_FLUSH_PR	(1ull << 62) // IBM bit 1
> +#define H_CPU_BEHAV_BNDS_CHK_SPEC_BAR	(1ull << 61) // IBM bit 2
> +
>  #ifndef __ASSEMBLY__
>  
>  /**
> @@ -423,6 +435,11 @@ extern long pseries_big_endian_exceptions(void);
>  
>  #endif /* CONFIG_PPC_PSERIES */
>  
> +struct h_cpu_char_result {
> +	u64 character;
> +	u64 behaviour;
> +};
> +
>  #endif /* __ASSEMBLY__ */
>  #endif /* __KERNEL__ */
>  #endif /* _ASM_POWERPC_HVCALL_H */
> diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
> index 67859edbf8fd..6e05cb397a5c 100644
> --- a/arch/powerpc/include/asm/plpar_wrappers.h
> +++ b/arch/powerpc/include/asm/plpar_wrappers.h
> @@ -323,4 +323,18 @@ static inline long plapr_set_watchpoint0(unsigned long dawr0, unsigned long dawr
>  	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_DAWR, dawr0, dawrx0);
>  }
>  
> +static inline long plpar_get_cpu_characteristics(struct h_cpu_char_result *p)
> +{
> +	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
> +	long rc;
> +
> +	rc = plpar_hcall(H_GET_CPU_CHARACTERISTICS, retbuf);
> +	if (rc == H_SUCCESS) {
> +		p->character = retbuf[0];
> +		p->behaviour = retbuf[1];
> +	}
> +
> +	return rc;
> +}
> +
>  #endif /* _ASM_POWERPC_PLPAR_WRAPPERS_H */
> -- 
> 2.14.1



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]