[Skiboot] [PATCH 1/3] skiboot: Trace IMC Macro definitions

Madhavan Srinivasan maddy at linux.vnet.ibm.com
Thu Dec 6 04:52:47 AEDT 2018


On 04/10/18 11:39 AM, Anju T Sudhakar wrote:
> Add macros needed for Trace mode enablement of IMC(In-Memory
> Collection Counters). These macros are used to identify the
> trace node in the device-tree and to make appropriate scom calls
> to enable trace-mode in the hardware.

Looks fine to me.

Reviewed-by: Madhavan Srinivasan <maddy at linux.vnet.ibm.com>

> Signed-off-by: Anju T Sudhakar <anju at linux.vnet.ibm.com>
> ---
>   include/imc.h      | 30 ++++++++++++++++++++++++++++++
>   include/opal-api.h |  1 +
>   2 files changed, 31 insertions(+)
>
> diff --git a/include/imc.h b/include/imc.h
> index f3d906ee..1f9f57ed 100644
> --- a/include/imc.h
> +++ b/include/imc.h
> @@ -112,6 +112,7 @@ struct imc_chip_cb
>   #define IMC_COUNTER_CHIP		0x10
>   #define IMC_COUNTER_CORE		0x4
>   #define IMC_COUNTER_THREAD		0x1
> +#define IMC_COUNTER_TRACE		0x2
>
>   /*
>    * Nest IMC operations
> @@ -128,6 +129,35 @@ struct imc_chip_cb
>   #define CORE_IMC_HTM_MODE_ENABLE	0xE800000000000000ull
>   #define CORE_IMC_HTM_MODE_DISABLE	0xE000000000000000ull
>
> +/*
> + * Trace IMC SCOMs for IMC trace-mode.
> + *
> + * TRACE_IMC_SCOM layout
> + *
> + *  0          4         8         12        16        20        24        28
> + * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - |
> + *   [ ] [      CPMC_LOAD [2:33]
> + *    |
> + *    *SAMPSEL
> + *
> + *  32        36        40        44        48        52        56        60
> + * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - |
> + *     ] [               ] [             ]   [   ] [     RESERVED [51:63]        ]
> + *     		|		 |	       |
> + *     		*CPMC1SEL	 *CPMC2SEL     *BUFFERSIZE
> + */
> +#define TRACE_IMC_ADDR            0x20010AA9ull
> +#define TRACE_IMC_SAMPLESEL(x)	((uint64_t)x << 62)
> +#define TRACE_IMC_CPMC_LOAD(x)	((0xffffffff - (uint64_t)x) << 30)
> +#define TRACE_IMC_CPMC1SEL(x)	((uint64_t)x << 23)
> +#define TRACE_IMC_CPMC2SEL(x)	((uint64_t)x << 16)
> +#define TRACE_IMC_BUFFERSIZE(x)	((uint64_t)x << 13)
> +#define TRACE_IMC_SCOM(a, b, c, d, e)	(TRACE_IMC_SAMPLESEL(a)	|\
> +					TRACE_IMC_CPMC_LOAD(b)	|\
> +					TRACE_IMC_CPMC1SEL(c)	|\
> +					TRACE_IMC_CPMC2SEL(d)	|\
> +					TRACE_IMC_BUFFERSIZE(e))
> +
>   void imc_init(void);
>   void imc_catalog_preload(void);
>
> diff --git a/include/opal-api.h b/include/opal-api.h
> index 5f397c8e..909a7fa8 100644
> --- a/include/opal-api.h
> +++ b/include/opal-api.h
> @@ -1301,6 +1301,7 @@ enum {
>   enum {
>   	OPAL_IMC_COUNTERS_NEST = 1,
>   	OPAL_IMC_COUNTERS_CORE = 2,
> +	OPAL_IMC_COUNTERS_TRACE = 3,
>   };
>
>



More information about the Skiboot mailing list