mirror of https://gitee.com/openkylin/linux.git
sparc64: Add hypervisor interfaces for SPARC-T4 perf counter access.
Unlike for previous chips, access to the perf-counter control registers are all hyper-privileged. Therefore, access to them must go through a hypervisor interface. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6f859c0e96
commit
8c79bfa511
|
@ -2934,6 +2934,16 @@ extern unsigned long sun4v_reboot_data_set(unsigned long ra,
|
||||||
unsigned long len);
|
unsigned long len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define HV_FAST_VT_GET_PERFREG 0x184
|
||||||
|
#define HV_FAST_VT_SET_PERFREG 0x185
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
extern unsigned long sun4v_vt_get_perfreg(unsigned long reg_num,
|
||||||
|
unsigned long *reg_val);
|
||||||
|
extern unsigned long sun4v_vt_set_perfreg(unsigned long reg_num,
|
||||||
|
unsigned long reg_val);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Function numbers for HV_CORE_TRAP. */
|
/* Function numbers for HV_CORE_TRAP. */
|
||||||
#define HV_CORE_SET_VER 0x00
|
#define HV_CORE_SET_VER 0x00
|
||||||
#define HV_CORE_PUTCHAR 0x01
|
#define HV_CORE_PUTCHAR 0x01
|
||||||
|
@ -2964,6 +2974,7 @@ extern unsigned long sun4v_reboot_data_set(unsigned long ra,
|
||||||
#define HV_GRP_NIU 0x0204
|
#define HV_GRP_NIU 0x0204
|
||||||
#define HV_GRP_VF_CPU 0x0205
|
#define HV_GRP_VF_CPU 0x0205
|
||||||
#define HV_GRP_KT_CPU 0x0209
|
#define HV_GRP_KT_CPU 0x0209
|
||||||
|
#define HV_GRP_VT_CPU 0x020c
|
||||||
#define HV_GRP_DIAG 0x0300
|
#define HV_GRP_DIAG 0x0300
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
|
@ -45,6 +45,7 @@ static struct api_info api_table[] = {
|
||||||
{ .group = HV_GRP_NIU, },
|
{ .group = HV_GRP_NIU, },
|
||||||
{ .group = HV_GRP_VF_CPU, },
|
{ .group = HV_GRP_VF_CPU, },
|
||||||
{ .group = HV_GRP_KT_CPU, },
|
{ .group = HV_GRP_KT_CPU, },
|
||||||
|
{ .group = HV_GRP_VT_CPU, },
|
||||||
{ .group = HV_GRP_DIAG, .flags = FLAG_PRE_API },
|
{ .group = HV_GRP_DIAG, .flags = FLAG_PRE_API },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -805,3 +805,19 @@ ENTRY(sun4v_reboot_data_set)
|
||||||
retl
|
retl
|
||||||
nop
|
nop
|
||||||
ENDPROC(sun4v_reboot_data_set)
|
ENDPROC(sun4v_reboot_data_set)
|
||||||
|
|
||||||
|
ENTRY(sun4v_vt_get_perfreg)
|
||||||
|
mov %o1, %o4
|
||||||
|
mov HV_FAST_VT_GET_PERFREG, %o5
|
||||||
|
ta HV_FAST_TRAP
|
||||||
|
stx %o1, [%o4]
|
||||||
|
retl
|
||||||
|
nop
|
||||||
|
ENDPROC(sun4v_vt_get_perfreg)
|
||||||
|
|
||||||
|
ENTRY(sun4v_vt_set_perfreg)
|
||||||
|
mov HV_FAST_VT_SET_PERFREG, %o5
|
||||||
|
ta HV_FAST_TRAP
|
||||||
|
retl
|
||||||
|
nop
|
||||||
|
ENDPROC(sun4v_vt_set_perfreg)
|
||||||
|
|
Loading…
Reference in New Issue