mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
powerpc/pseries: Macros and wrapper functions for H_HTM call
Define macros and wrapper functions to handle H_HTM (Hardware Trace Macro) hypervisor call. H_HTM is new HCALL added to export data from Hardware Trace Macro (HTM) function. Signed-off-by: Abhishek Dubey <adubey@linux.ibm.com> Co-developed-by: Madhavan Srinivasan <maddy@linux.ibm.com> Reviewed-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20250113164039.302017-1-adubey@linux.ibm.com
This commit is contained in:
parent
c96b1402cc
commit
708220ae50
|
|
@ -348,6 +348,7 @@
|
|||
#define H_SCM_FLUSH 0x44C
|
||||
#define H_GET_ENERGY_SCALE_INFO 0x450
|
||||
#define H_PKS_SIGNED_UPDATE 0x454
|
||||
#define H_HTM 0x458
|
||||
#define H_WATCHDOG 0x45C
|
||||
#define H_GUEST_GET_CAPABILITIES 0x460
|
||||
#define H_GUEST_SET_CAPABILITIES 0x464
|
||||
|
|
@ -498,6 +499,39 @@
|
|||
#define H_GUEST_CAP_POWER11 (1UL<<(63-3))
|
||||
#define H_GUEST_CAP_BITMAP2 (1UL<<(63-63))
|
||||
|
||||
/*
|
||||
* Defines for H_HTM - Macros for hardware trace macro (HTM) function.
|
||||
*/
|
||||
#define H_HTM_FLAGS_HARDWARE_TARGET (1ul << 63)
|
||||
#define H_HTM_FLAGS_LOGICAL_TARGET (1ul << 62)
|
||||
#define H_HTM_FLAGS_PROCID_TARGET (1ul << 61)
|
||||
#define H_HTM_FLAGS_NOWRAP (1ul << 60)
|
||||
|
||||
#define H_HTM_OP_SHIFT (63-15)
|
||||
#define H_HTM_OP(x) ((unsigned long)(x)<<H_HTM_OP_SHIFT)
|
||||
#define H_HTM_OP_CAPABILITIES 0x01
|
||||
#define H_HTM_OP_STATUS 0x02
|
||||
#define H_HTM_OP_SETUP 0x03
|
||||
#define H_HTM_OP_CONFIGURE 0x04
|
||||
#define H_HTM_OP_START 0x05
|
||||
#define H_HTM_OP_STOP 0x06
|
||||
#define H_HTM_OP_DECONFIGURE 0x07
|
||||
#define H_HTM_OP_DUMP_DETAILS 0x08
|
||||
#define H_HTM_OP_DUMP_DATA 0x09
|
||||
#define H_HTM_OP_DUMP_SYSMEM_CONF 0x0a
|
||||
#define H_HTM_OP_DUMP_SYSPROC_CONF 0x0b
|
||||
|
||||
#define H_HTM_TYPE_SHIFT (63-31)
|
||||
#define H_HTM_TYPE(x) ((unsigned long)(x)<<H_HTM_TYPE_SHIFT)
|
||||
#define H_HTM_TYPE_NEST 0x01
|
||||
#define H_HTM_TYPE_CORE 0x02
|
||||
#define H_HTM_TYPE_LLAT 0x03
|
||||
#define H_HTM_TYPE_GLOBAL 0xff
|
||||
|
||||
#define H_HTM_TARGET_NODE_INDEX(x) ((unsigned long)(x)<<(63-15))
|
||||
#define H_HTM_TARGET_NODAL_CHIP_INDEX(x) ((unsigned long)(x)<<(63-31))
|
||||
#define H_HTM_TARGET_CORE_INDEX_ON_CHIP(x) ((unsigned long)(x)<<(63-47))
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <linux/types.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,27 @@ static inline long register_dtl(unsigned long cpu, unsigned long vpa)
|
|||
return vpa_call(H_VPA_REG_DTL, cpu, vpa);
|
||||
}
|
||||
|
||||
static inline long htm_call(unsigned long flags, unsigned long target,
|
||||
unsigned long operation, unsigned long param1,
|
||||
unsigned long param2, unsigned long param3)
|
||||
{
|
||||
return plpar_hcall_norets(H_HTM, flags, target, operation,
|
||||
param1, param2, param3);
|
||||
}
|
||||
|
||||
static inline long htm_get_dump_hardware(unsigned long nodeindex,
|
||||
unsigned long nodalchipindex, unsigned long coreindexonchip,
|
||||
unsigned long type, unsigned long addr, unsigned long size,
|
||||
unsigned long offset)
|
||||
{
|
||||
return htm_call(H_HTM_FLAGS_HARDWARE_TARGET,
|
||||
H_HTM_TARGET_NODE_INDEX(nodeindex) |
|
||||
H_HTM_TARGET_NODAL_CHIP_INDEX(nodalchipindex) |
|
||||
H_HTM_TARGET_CORE_INDEX_ON_CHIP(coreindexonchip),
|
||||
H_HTM_OP(H_HTM_OP_DUMP_DATA) | H_HTM_TYPE(type),
|
||||
addr, size, offset);
|
||||
}
|
||||
|
||||
extern void vpa_init(int cpu);
|
||||
|
||||
static inline long plpar_pte_enter(unsigned long flags,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user