[Skiboot] [RFC PATCH 1/7] skiboot: Nest IMA macro definitions

Hemant Kumar hemant at linux.vnet.ibm.com
Thu Nov 3 12:47:36 AEDT 2016



On 11/02/2016 11:43 AM, Madhavan Srinivasan wrote:
>
>
> On Tuesday 25 October 2016 06:15 PM, Hemant Kumar wrote:
>> Add the macros needed for Nest IMA (In Memory Accumulation)
>> instrumentation support by creating a new file in include/ called
>> "ima.h". These macros are needed to discover the catalog subpartition,
>> enable and disable the nest IMA instrumentation.
>>
>> Signed-off-by: Hemant Kumar <hemant at linux.vnet.ibm.com>
>> ---
>>   include/ima.h | 89 
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 89 insertions(+)
>>   create mode 100644 include/ima.h
>>
>> diff --git a/include/ima.h b/include/ima.h
>> new file mode 100644
>> index 0000000..3bde4f3
>> --- /dev/null
>> +++ b/include/ima.h
>> @@ -0,0 +1,89 @@
>> +/* Copyright 2016 IBM Corp.
>> + *
>> + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + *
>> + *    http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> + * implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +/*
>> + * IMA (In Memory Accumulation) Instrumentation :
>> + * Power9 has IMA instrumentation support with which several metrics of
>> + * the platform can be monitored. These metrics are backed by the IMA
>> + * Performance Monitoring Units and their counters. They are named 
>> as IMA
>> + * counters, as the counter data from these counters are fed directly
>> + * into a pre-defined memory location.
>> + *
>> + * Depending on their location and monitoring engines, they are 
>> classified
>> + * into three domains :
>> + * Nest IMA, core IMA and thread IMA.
>> + *
>> + * Nest counters are per-chip counters and can help in providing 
>> utilisation
>> + * metrics like memory bandwidth, Xlink/Alink bandwidth etc.
>> + *
>> + * A microcode in OCC programs the nest counters and moves counter 
>> values to
>> + * per chip HOMER region in a fixed offset for each unit. Engine has a
>> + * control block structure for communication with Hyperviosr(Host OS).
>> + */
>> +
>> +#ifndef __IMA_H
>> +#define __IMA_H
>> +
>> +/*
>> + * Control Block structure offset in HOMER IMA Region
>> + */
>> +#define CB_STRUCT_OFFSET    0x39FC00
>> +#define CB_STRUCT_CMD        0x39FC08
>> +#define CB_STRUCT_SPEED        0x39FC10
>> +#define SLW_IMA_PAUSE        0x2
>> +#define SLW_IMA_RESUME        0x1
>> +#define SLW_IMA_NOP        0
>> +
>> +/*
>> + * Control Block Structure:
>> + *
>> + * Name          Producer        Consumer        Values  Desc
>> + * IMARunStatus   IMA Code       Hypervisor      0 Initializing
>> + *                               (Host OS)       1 Running
>> + *                                               2       Paused
>> + *
>> + * IMACommand     Hypervisor     IMA Code        0       NOP
>> + *                                               1       Resume
>> + *                                               2       Pause
>> + *                                               3       Clear and 
>> Restart
>> + *
>> + * IMACollection Hypervisor      IMA Code        0       128us
>> + * Speed                     1       256us
>> + *                                               2       1ms
>> + *                                               3       4ms
>> + *                                               4       16ms
>> + *                                               5       64ms
>> + *                                               6       256ms
>> + *                                               7       1000ms
>> + */
>> +struct ima_chip_cb
>> +{
>> +        u64 ima_chip_run_status;
>> +        u64 ima_chip_command;
>> +        u64 ima_chip_collection_speed;
>> +};
>> +
>
> There is a recent change in control block structure in
> case of power9. A new run_mode filed added. Here is the
> updated structure.
>
> {
>     u64 ima_chip_run_status;
>     u64 ima_chip_run_mode;
>     u64 ima_chip_command;
>     u64 ima_chip_collection_speed;
> }
>
> ima_chip_run_mode;  --->   0 -- Normal Mode
>                            1 -- Debug Mode
>
>

Thanks for the info!
Will add an additional field in the control block for run_mode.

> Rest if the patch looks fine.
>

Thanks for reviewing the patchset.

[SNIP]

--
Thanks,
Hemant Kumar



More information about the Skiboot mailing list