drm/vmwgfx: Introduce VMware mks-guest-stats
VMware mks-guest-stats mechanism allows the collection of performance stats from
guest userland GL contexts, as well as from vmwgfx kernelspace, via a set of sw-
defined performance counters. The userspace performance counters are (de)registerd
with vmware-vmx-stats hypervisor via new iocts. The vmwgfx kernelspace counters
are controlled at build-time via a new config DRM_VMWGFX_MKSSTATS.
* Add vmw_mksstat_{add|remove|reset}_ioctl controlling the tracking of
mks-guest-stats in guest winsys contexts
* Add DRM_VMWGFX_MKSSTATS config to drivers/gpu/drm/vmwgfx/Kconfig controlling
the instrumentation of vmwgfx for kernelspace mks-guest-stats counters
* Instrument vmwgfx vmw_execbuf_ioctl to collect mks-guest-stats according to
DRM_VMWGFX_MKSSTATS
Signed-off-by: Martin Krastev <krastevm@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
Signed-off-by: Zack Rusin <zackr@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210609172307.131929-3-zackr@vmware.com
This commit is contained in:
committed by
Zack Rusin
parent
d92223ead9
commit
7a7a933edd
@@ -72,6 +72,9 @@ extern "C" {
|
||||
#define DRM_VMW_GB_SURFACE_CREATE_EXT 27
|
||||
#define DRM_VMW_GB_SURFACE_REF_EXT 28
|
||||
#define DRM_VMW_MSG 29
|
||||
#define DRM_VMW_MKSSTAT_RESET 30
|
||||
#define DRM_VMW_MKSSTAT_ADD 31
|
||||
#define DRM_VMW_MKSSTAT_REMOVE 32
|
||||
|
||||
/*************************************************************************/
|
||||
/**
|
||||
@@ -1236,6 +1239,44 @@ struct drm_vmw_msg_arg {
|
||||
__u32 receive_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_vmw_mksstat_add_arg
|
||||
*
|
||||
* @stat: Pointer to user-space stat-counters array, page-aligned.
|
||||
* @info: Pointer to user-space counter-infos array, page-aligned.
|
||||
* @strs: Pointer to user-space stat strings, page-aligned.
|
||||
* @stat_len: Length in bytes of stat-counters array.
|
||||
* @info_len: Length in bytes of counter-infos array.
|
||||
* @strs_len: Length in bytes of the stat strings, terminators included.
|
||||
* @description: Pointer to instance descriptor string; will be truncated
|
||||
* to MKS_GUEST_STAT_INSTANCE_DESC_LENGTH chars.
|
||||
* @id: Output identifier of the produced record; -1 if error.
|
||||
*
|
||||
* Argument to the DRM_VMW_MKSSTAT_ADD ioctl.
|
||||
*/
|
||||
struct drm_vmw_mksstat_add_arg {
|
||||
__u64 stat;
|
||||
__u64 info;
|
||||
__u64 strs;
|
||||
__u64 stat_len;
|
||||
__u64 info_len;
|
||||
__u64 strs_len;
|
||||
__u64 description;
|
||||
__u64 id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_vmw_mksstat_remove_arg
|
||||
*
|
||||
* @id: Identifier of the record being disposed, originally obtained through
|
||||
* DRM_VMW_MKSSTAT_ADD ioctl.
|
||||
*
|
||||
* Argument to the DRM_VMW_MKSSTAT_REMOVE ioctl.
|
||||
*/
|
||||
struct drm_vmw_mksstat_remove_arg {
|
||||
__u64 id;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user